:root{--ink: #121212;--paper: #f4f0e7;--orange: #f35b35;--orange-ink: #b8340f;--moss: #65705b;--moss-deep: #4f5847;--grey: #74736f;--white: #ffffff;--bg: var(--paper);--surface: var(--white);--surface-2: #efe9dd;--text: var(--ink);--text-muted: #55534e;--line: #d9d2c4;--accent: var(--orange);--accent-text: var(--orange-ink);--focus: #0b60d6;--font-sans: "Space Grotesk", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--font-serif: "Source Serif 4", "Source Serif Pro", Georgia, "Times New Roman", serif;--step: 1;--radius: 14px;--radius-lg: 22px;--tap: 44px;--shadow: 0 1px 2px rgba(18, 18, 18, .06), 0 8px 24px rgba(18, 18, 18, .06);--maxw: 720px}html[data-text-size=large]{--step: 1.12}html[data-text-size=x-large]{--step: 1.26}html.high-contrast{--bg: var(--white);--surface: var(--white);--surface-2: #ffffff;--text: #000000;--text-muted: #1c1c1c;--line: #000000;--accent-text: #a02c0a;--shadow: none}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:calc(1rem * var(--step));line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}#app{min-height:100dvh;display:grid;grid-template-rows:auto 1fr auto}.dial,.nav-item,.dial *{user-select:none;-webkit-user-select:none}img,svg{max-width:100%;height:auto}a{color:var(--accent-text)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:6px}.skip{position:absolute;left:-9999px;top:0;background:var(--ink);color:var(--white);padding:12px 16px;z-index:100}.skip:focus{left:8px;top:8px}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.app-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:max(12px,env(safe-area-inset-top)) 16px 12px;padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right));border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 86%,transparent);position:sticky;top:0;z-index:20;backdrop-filter:saturate(1.1) blur(6px)}.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--text)}.brand .logo-mark{width:34px;height:34px;display:block}.brand-text{display:flex;flex-direction:column;line-height:1}.brand-text b{font-size:calc(1.05rem * var(--step));letter-spacing:-.01em}.brand-text small{font-size:.62rem;letter-spacing:.18em;color:var(--moss-deep);margin-top:3px}.install-button{min-height:var(--tap);padding:0 16px;border:0;border-radius:999px;background:var(--orange);color:var(--white);font-weight:600;font-family:inherit;cursor:pointer}#main{width:100%;max-width:var(--maxw);margin:0 auto;padding:20px max(16px,env(safe-area-inset-left)) 120px max(16px,env(safe-area-inset-right))}.view{outline:none}.eyebrow{font-size:.7rem;letter-spacing:.16em;color:var(--moss-deep);margin:0 0 8px;font-weight:600}.intro .display{font-size:clamp(2rem,8vw,3.1rem);line-height:1.02;letter-spacing:-.02em;margin:0 0 12px;font-weight:700}.intro .display em{color:var(--accent-text);font-style:normal}.lede{color:var(--text-muted);max-width:34ch;margin:0 0 8px}.offline-note{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;margin:12px 0;font-size:.9rem}.controls{margin:18px 0 8px}.field-label{display:block;font-size:.8rem;font-weight:600;margin:12px 0 6px;letter-spacing:.01em}.field-help{font-size:.8rem;color:var(--text-muted);margin:6px 0 0}.field-input,.field-select{width:100%;min-height:var(--tap);padding:10px 14px;border:1.5px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--text);font-family:inherit;font-size:calc(1rem * var(--step))}.field-select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--grey) 50%),linear-gradient(135deg,var(--grey) 50%,transparent 50%);background-position:right 18px center,right 12px center;background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:34px}.location-row{display:flex;gap:8px}.location-row .field-input{flex:1}.icon-button{min-width:var(--tap);min-height:var(--tap);border:1.5px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--moss-deep);font-size:1.2rem;cursor:pointer}.icon-button:hover{border-color:var(--moss)}.control-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:380px){.control-grid{grid-template-columns:1fr}}.theme-details{margin-top:12px}.theme-details>summary{cursor:pointer;font-weight:600;font-size:.85rem;padding:8px 0;min-height:var(--tap);display:flex;align-items:center}.tags{border:0;margin:0;padding:6px 0 0;display:flex;flex-wrap:wrap;gap:8px}.tag-chip{position:relative}.tag-chip input{position:absolute;opacity:0}.tag-chip span{display:inline-block;padding:8px 12px;border:1.5px solid var(--line);border-radius:999px;font-size:.82rem;cursor:pointer;min-height:36px;line-height:1.4}.tag-chip input:checked+span{background:var(--moss);color:var(--white);border-color:var(--moss)}.tag-chip input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px}.dial-wrap{display:grid;justify-items:center;gap:14px;margin:26px 0 10px}.dial{position:relative;width:min(74vw,300px);height:min(74vw,300px);border-radius:50%;border:3px solid var(--ink);background:radial-gradient(circle at 50% 50%,var(--surface) 0 38%,transparent 39%),conic-gradient(from 0deg,var(--surface-2),var(--surface) 25%,var(--surface-2) 50%,var(--surface) 75%,var(--surface-2));cursor:pointer;display:grid;place-items:center;box-shadow:var(--shadow),inset 0 0 0 12px var(--surface);touch-action:manipulation}.dial-pointer{position:absolute;top:-2px;left:50%;transform:translate(-50%);width:0;height:0;border-left:12px solid transparent;border-right:12px solid transparent;border-top:20px solid var(--orange);filter:drop-shadow(0 1px 0 rgba(0,0,0,.15));z-index:3}.dial-ring{position:absolute;inset:6px;border-radius:50%}.dial-ring i{position:absolute;top:50%;left:50%;font-size:.6rem;letter-spacing:.12em;color:var(--moss-deep);font-style:normal;font-weight:600;transform:rotate(calc(360deg / var(--n) * var(--i))) translateY(calc(min(37vw,150px)*-1 + 22px)) rotate(calc(-360deg / var(--n) * var(--i)));transform-origin:0 0}.dial-centre{text-align:center;z-index:2}.dial-centre b{display:block;font-size:1.5rem;letter-spacing:.04em}.dial-centre small{display:block;font-size:.6rem;letter-spacing:.16em;color:var(--moss-deep);margin-top:4px}.dial.spinning{animation:dial-spin .6s cubic-bezier(.22,.61,.36,1)}@keyframes dial-spin{0%{transform:rotate(-32deg)}to{transform:rotate(0)}}.spin-button,.primary{min-height:var(--tap);padding:12px 26px;border:0;border-radius:999px;background:var(--orange);color:var(--white);font-family:inherit;font-weight:700;font-size:calc(1.02rem * var(--step));cursor:pointer;box-shadow:var(--shadow)}.spin-button:hover,.primary:hover{background:var(--orange-ink)}.hint{font-size:.78rem;color:var(--text-muted);margin:0}#prompt-slot:empty{display:none}.prompt-card{background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius-lg);padding:20px;margin:22px 0;box-shadow:var(--shadow);outline:none}.card-top{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.mode-label{font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--white);background:var(--moss);padding:4px 10px;border-radius:999px}.meta{font-size:.78rem;color:var(--text-muted)}.prompt-title{font-family:var(--font-serif);font-size:calc(1.55rem * var(--step));line-height:1.12;margin:12px 0 10px;letter-spacing:-.01em}.assignment{font-family:var(--font-serif);font-size:calc(1.15rem * var(--step));line-height:1.5;margin:0 0 14px}.role{font-size:.72rem;letter-spacing:.08em;color:var(--text-muted);margin:0 0 12px}.role span{font-weight:600}.role b{color:var(--moss-deep)}.disclosure{border-top:1px solid var(--line)}.disclosure>summary{cursor:pointer;padding:12px 0;font-weight:600;font-size:.9rem;list-style:none;display:flex;align-items:center;justify-content:space-between;min-height:var(--tap)}.disclosure>summary::-webkit-details-marker{display:none}.disclosure>summary:after{content:"+";font-size:1.2rem;color:var(--moss-deep)}.disclosure[open]>summary:after{content:"–"}.disclosure>p{margin:0 0 14px;font-family:var(--font-serif);color:var(--text-muted)}.ethics{font-size:.85rem;color:var(--moss-deep);background:var(--surface-2);border-left:3px solid var(--moss);padding:10px 12px;border-radius:8px;margin:12px 0}.card-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.card-actions button{min-height:var(--tap);padding:0 16px;border-radius:999px;font-family:inherit;font-weight:600;cursor:pointer;font-size:.9rem}.btn-save{background:var(--moss);color:var(--white);border:0}.btn-save.is-saved{background:var(--moss-deep)}.btn-secondary{background:var(--ink);color:var(--white);border:0}.btn-ghost{background:transparent;color:var(--text);border:1.5px solid var(--line)}.btn-danger{background:transparent;color:var(--orange-ink);border:1.5px solid var(--orange-ink);min-height:var(--tap);padding:0 16px;border-radius:999px;font-family:inherit;font-weight:600;cursor:pointer}.btn-link{background:none;border:0;color:var(--accent-text);cursor:pointer;font-weight:600;padding:8px 4px;min-height:var(--tap);font-family:inherit}.btn-link.danger{color:var(--orange-ink)}.landing{margin-top:30px}.feature-grid{display:grid;gap:14px;grid-template-columns:repeat(3,1fr)}@media(max-width:560px){.feature-grid{grid-template-columns:1fr}}.feature-grid article{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.feat-num{font-family:var(--font-serif);color:var(--accent-text);font-size:1.1rem;font-weight:700}.feature-grid h3{margin:8px 0 6px;font-size:1rem}.feature-grid p{margin:0;font-size:.88rem;color:var(--text-muted)}.site-footer{margin-top:28px;padding-top:20px;border-top:1px solid var(--line)}.site-footer p{margin:6px 0;font-size:.85rem;color:var(--text-muted)}.site-footer .privacy-note{max-width:52ch}.site-footer .attribution{color:var(--moss-deep)}.page>h1{font-size:clamp(1.6rem,6vw,2.2rem);margin:4px 0 14px;letter-spacing:-.01em}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.muted{color:var(--text-muted)}.empty-state{text-align:center;padding:40px 16px;display:grid;justify-items:center;gap:16px}.empty-mark{width:64px;height:64px;opacity:.9}.empty-mark .logo-mark{width:64px;height:64px}.empty-state p{font-family:var(--font-serif);font-size:1.15rem;max-width:28ch;margin:0}.story-card{background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius-lg);padding:18px;margin:16px 0;box-shadow:var(--shadow)}.story-meta{display:flex;align-items:center;justify-content:space-between}.place-tag{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--moss-deep);font-weight:700}.story-card-actions{display:flex;gap:4px}.btn-icon{min-width:var(--tap);min-height:var(--tap);border:0;background:transparent;font-size:1.1rem;cursor:pointer;border-radius:10px;color:var(--text)}.btn-icon.danger{color:var(--orange-ink)}.story-title{font-size:1.3rem;margin:8px 0 4px}.story-question{font-family:var(--font-serif);color:var(--text-muted);margin:0 0 14px}.next-stage{font-size:.9rem;margin:12px 0}.story-path{margin:10px 0 6px}.path-track{height:8px;border-radius:999px;background:var(--surface-2);overflow:hidden;border:1px solid var(--line)}.path-fill{height:100%;background:var(--moss)}.path-stages{list-style:none;display:flex;gap:6px;padding:12px 0 0;margin:0;overflow-x:auto}.path-stages li{flex:0 0 auto;display:grid;justify-items:center;gap:4px;width:74px;text-align:center}.path-stages .dot{width:26px;height:26px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;font-size:.72rem;font-weight:700;background:var(--surface)}.path-stages li.done .dot{background:var(--moss);color:var(--white);border-color:var(--moss)}.path-stages li.current .dot{border-color:var(--orange);color:var(--orange-ink)}.path-stages .stage-name{font-size:.62rem;color:var(--text-muted);line-height:1.15}.story-export{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.story-export button{min-height:var(--tap);padding:0 14px;border-radius:999px;border:1.5px solid var(--line);background:var(--surface);font-family:inherit;font-weight:600;font-size:.85rem;cursor:pointer}.saved-prompts{list-style:none;padding:0;margin:8px 0 0}.saved-prompt{display:flex;gap:8px;align-items:flex-start;border-top:1px solid var(--line);padding:6px 0}.saved-prompt.dragging{opacity:.5}.drag-handle{cursor:grab;color:var(--grey);padding:12px 2px;min-height:var(--tap);display:flex;align-items:center}.saved-prompt details{flex:1}.saved-prompt summary{cursor:pointer;padding:12px 0;min-height:var(--tap);display:flex;align-items:center;gap:8px;justify-content:space-between}.sp-title{font-weight:600}.status-pill{font-size:.68rem;padding:3px 8px;border-radius:999px;border:1.5px solid var(--line);white-space:nowrap}.status-pill[data-status=Complete]{background:var(--moss);color:var(--white);border-color:var(--moss)}.status-pill[data-status=Photographed]{border-color:var(--moss);color:var(--moss-deep)}.status-pill[data-status="Needs another attempt"]{border-color:var(--orange-ink);color:var(--orange-ink)}.status-select{margin-bottom:8px}.note{margin-bottom:8px;resize:vertical}.saved-list,.assignment-list{display:grid;gap:12px;padding:0}.saved-item{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.saved-item h2{font-family:var(--font-serif);font-size:1.15rem;margin:8px 0}.saved-item p{font-family:var(--font-serif);color:var(--text-muted);margin:0 0 8px}.saved-item small{color:var(--moss-deep)}.settings-group{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 18px;margin:16px 0}.settings-group h2{font-size:1.05rem;margin:4px 0 8px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--line);min-height:var(--tap)}.settings-group .setting-row:first-of-type{border-top:0}.setting-row.inline{border:0}.setting-text{display:flex;flex-direction:column}.setting-label{font-weight:600}.setting-text small{color:var(--text-muted);font-size:.82rem}.setting-row select{max-width:55%}.switch{width:52px;height:30px;appearance:none;-webkit-appearance:none;background:var(--line);border-radius:999px;position:relative;cursor:pointer;flex:0 0 auto}.switch:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--white);transition:transform .15s;box-shadow:0 1px 2px #0000004d}.switch:checked{background:var(--moss)}.switch:checked:after{transform:translate(22px)}.button-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.button-row button,.file-button{min-height:var(--tap);padding:0 16px;border-radius:999px;font-family:inherit;font-weight:600;cursor:pointer;font-size:.9rem;display:inline-flex;align-items:center}.file-button{border:1.5px solid var(--line);background:var(--surface)}.ethics-list{margin:0;padding-left:18px}.ethics-list li{margin:6px 0;color:var(--text-muted)}.about a{font-weight:600}.workshop-form{display:grid;gap:4px}.stacked{display:grid}.workshop-output{margin-top:18px}.assignment-list{list-style:none}.assignment-list li{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.assignment-list p{font-family:var(--font-serif);margin:6px 0 0}.app-nav{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-around;background:var(--surface);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:30}.nav-item{flex:1;min-height:var(--tap);padding:8px 4px calc(8px + env(safe-area-inset-bottom,0px));background:none;border:0;color:var(--text-muted);font-family:inherit;font-size:.68rem;cursor:pointer;display:grid;justify-items:center;gap:3px}.nav-glyph{font-size:1.2rem;line-height:1}.nav-item.active{color:var(--accent-text);font-weight:700}.nav-item.active .nav-glyph{color:var(--accent-text)}.update-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--ink);color:var(--white);padding:10px 16px}.update-banner button{min-height:36px;padding:0 14px;border-radius:999px;border:0;background:var(--orange);color:var(--white);font-family:inherit;font-weight:600}.toast{position:fixed;left:50%;bottom:calc(78px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:var(--ink);color:var(--white);padding:12px 18px;border-radius:999px;display:flex;align-items:center;gap:12px;box-shadow:var(--shadow);opacity:0;transition:opacity .25s,transform .25s;z-index:40;max-width:calc(100vw - 32px)}.toast.show{opacity:1;transform:translate(-50%)}.toast .btn-link{color:#ffd7cb;min-height:auto;padding:0}.modal{border:0;border-radius:var(--radius-lg);padding:0;max-width:90vw}.modal::backdrop{background:#12121280}@media(min-width:900px){#app{grid-template-columns:240px 1fr;grid-template-rows:auto 1fr}.app-header{grid-column:1 / -1}.app-nav{position:sticky;top:0;align-self:start;height:calc(100dvh - 64px);flex-direction:column;justify-content:flex-start;gap:4px;border-top:0;border-right:1px solid var(--line);padding:16px 8px}.nav-item{flex:0 0 auto;flex-direction:row;justify-content:flex-start;gap:12px;padding:12px 16px;border-radius:var(--radius);font-size:.95rem}.nav-item.active{background:var(--surface-2)}#main{grid-column:2;padding-bottom:40px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}html[data-motion=on] .dial.spinning{animation:prompt-fade .2s ease}html[data-motion=on] *{scroll-behavior:auto}@keyframes prompt-fade{0%{opacity:.4}to{opacity:1}}@media(prefers-color-scheme:dark){:root:not(.high-contrast){--bg: #17150f;--surface: #201d16;--surface-2: #2a271e;--text: #f4f0e7;--text-muted: #cfc7b5;--line: #3a362b;--accent-text: #ff8a6a;--focus: #7cb3ff}:root:not(.high-contrast) .mode-label{color:#17150f}}
