:root{--serif:"Newsreader", "Iowan Old Style", Georgia, serif;--sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--grain-img:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.95' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeComponentTransfer%3E%3CfeFuncR type='linear' slope='2.8' intercept='-.9'/%3E%3CfeFuncG type='linear' slope='2.8' intercept='-.9'/%3E%3CfeFuncB type='linear' slope='2.8' intercept='-.9'/%3E%3CfeFuncA type='table' tableValues='1 1'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--paper:#e7e7dd;--paper-raised:#f2f2ea;--paper-recessed:#dadace;--hairline:#c9c9b9;--ink:#2b1f15;--ink-2:#5a4a3b;--ink-3:#8a7c6a;--ink-fill:#2b1f15;--ink-hover:#3d2e20;--brass:#8a6a45;--brass-bright:#b0916c;--brass-deep:#6f5236;--brass-wash:#ede1c9;--velvet:#4b3b2e;--velvet-deep:#382c22;--stage:#201710;--stage-ink:#f0f0e7;--positive:#5a6638;--positive-wash:#e4e7d5;--error:#a6402b;--error-wash:#f0e0d8;--scrim:#20171080;--shadow-overlay:0 16px 40px #2b1f1526;--shadow-sheet:0 -16px 48px #2b1f1530;--r-sm:8px;--r-md:14px;--r-lg:20px;--r-plate:10px;--r-btn:999px;--r-dock:24px;--hairline-w:1.5px;--tracking:.008em;--grain:.08;--text-eyebrow:10.5px;--text-meta:12px;--text-ui:13.5px;--text-body:15px;--text-lead:17px;--text-title:22px;--text-h1:26px;--text-brand:44px;--gutter:20px;--col:500px;--dock-h:64px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--kb-offset:0px;--ease-enter:cubic-bezier(.2, 0, 0, 1);--ease-exit:cubic-bezier(.4, 0, 1, 1);--dur-1:.14s;--dur-2:.26s;--dur-3:.6s}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{background:var(--paper);overscroll-behavior-y:none;-webkit-text-size-adjust:100%}body:before{content:"";z-index:1;pointer-events:none;opacity:var(--grain,0);background-image:var(--grain-img);mix-blend-mode:soft-light;position:fixed;inset:0}body:after{content:"";z-index:-1;pointer-events:none;background:linear-gradient(color-mix(in srgb, var(--paper) 35%, transparent), color-mix(in srgb, var(--paper) 35%, transparent)), url(/background.webp) center / cover no-repeat;filter:blur(2px);position:fixed;inset:-12px}body{color:var(--ink);font-family:var(--sans);letter-spacing:var(--tracking,0);font-size:var(--text-body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;background:0 0;line-height:1.55}img{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}input,select,textarea{font-family:var(--sans);color:var(--ink);font-size:16px}::selection{background:color-mix(in srgb, var(--brass) 22%, transparent)}:focus-visible{outline:2px solid var(--brass-bright);outline-offset:2px;border-radius:2px}:focus:not(:focus-visible){outline:none}h1,h2,h3{font-family:var(--serif);font-optical-sizing:auto;letter-spacing:.005em;font-weight:440;line-height:1.2}h1{font-size:var(--text-h1)}.pressable{transition:transform var(--dur-1) var(--ease-exit), opacity var(--dur-1) var(--ease-exit)}.pressable:active{transform:translateY(1px)}.eyebrow{font-family:var(--sans);font-size:var(--text-eyebrow);letter-spacing:.14em;text-transform:uppercase;color:var(--brass-deep);font-weight:600}.eyebrow--rule{align-items:center;gap:10px;display:flex}.eyebrow--rule:after{content:"";background:var(--hairline);flex:1;height:1px}.serif{font-family:var(--serif);font-optical-sizing:auto}.tnum{font-variant-numeric:tabular-nums}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.page{width:100%;max-width:var(--col);padding:calc(24px + var(--safe-top)) var(--gutter) 16px;flex-direction:column;gap:20px;margin:0 auto;display:flex}.page--center{min-height:100svh;padding-top:calc(40px + var(--safe-top));justify-content:center;padding-bottom:40px}.app-root{flex-direction:column;min-height:100dvh;display:flex}.app-scroll{padding-bottom:calc(var(--dock-h) + var(--safe-bottom) + 28px);flex:1;justify-content:center;display:flex}.scan-back{top:calc(12px + var(--safe-top));z-index:60;border-radius:var(--r-sm);border:var(--hairline-w) solid var(--hairline);background:var(--paper-raised);width:36px;height:36px;color:var(--ink);cursor:pointer;transition:border-color var(--dur-1) var(--ease-exit), transform var(--dur-1) var(--ease-exit);justify-content:center;align-items:center;display:flex;position:fixed;left:12px}.scan-back:active{transform:translateY(1px)}.boot-screen{justify-content:center;align-items:center;min-height:100svh;display:flex}.card{background:var(--paper-raised);border:var(--hairline-w) solid var(--hairline);border-radius:var(--r-md);padding:16px 18px}.card-value{font-size:var(--text-body);color:var(--ink);margin-top:6px;line-height:1.6}.card-value--lg{font-family:var(--serif);font-optical-sizing:auto;font-size:var(--text-title);margin-top:4px;font-weight:450;line-height:1.3}.rule{border:none;border-top:var(--hairline-w) solid var(--hairline)}.entry-section{padding:14px 0 2px}.entry-section+.entry-section{border-top:var(--hairline-w) solid var(--hairline);margin-top:12px}.btn{border-radius:var(--r-btn);min-height:52px;font-family:var(--sans);letter-spacing:0;text-transform:none;transition:transform var(--dur-1) var(--ease-exit), opacity var(--dur-1) var(--ease-exit), background var(--dur-1) var(--ease-exit);justify-content:center;align-items:center;gap:8px;padding:12px 24px;font-size:15px;font-weight:600;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:default}.btn:disabled:active{transform:none}.btn--primary{background:var(--ink-fill);color:var(--stage-ink);width:100%}.btn--secondary{border:var(--hairline-w) solid var(--hairline);color:var(--ink);background:0 0;width:100%}.btn--velvet{background:var(--velvet);color:var(--stage-ink);width:100%}.btn--quiet{border:var(--hairline-w) solid var(--hairline);background:var(--paper-raised);color:var(--ink)}.btn-text{color:var(--brass-deep);font-size:var(--text-ui);text-underline-offset:3px;align-items:center;gap:6px;padding:8px 0;font-weight:500;text-decoration:underline;display:inline-flex}.back-link{color:var(--ink-2);font-size:var(--text-ui);align-self:flex-start;align-items:center;gap:6px;padding:8px 8px 8px 0;font-weight:500;display:inline-flex}.shutter{background:var(--ink-fill);width:76px;height:76px;color:var(--stage-ink);transition:transform var(--dur-1) var(--ease-exit);border-radius:50%;justify-content:center;align-items:center;display:flex;position:relative}.shutter:after{content:"";border:1px solid var(--brass-bright);border-radius:50%;position:absolute;inset:4px}.shutter:active{transform:scale(.96)}.chip{background:var(--paper-recessed);border:var(--hairline-w) solid var(--hairline);border-radius:var(--r-btn);min-height:40px;font-size:var(--text-ui);color:var(--ink);transition:transform var(--dur-1) var(--ease-exit), background var(--dur-1) var(--ease-exit), border-color var(--dur-1) var(--ease-exit);align-items:center;padding:8px 14px;display:inline-flex}.chip:active{transform:translateY(1px)}.chip.is-selected{background:var(--brass-wash);border-color:var(--brass);font-weight:600}.chip-row{flex-wrap:wrap;gap:8px;display:flex}.tag{background:var(--paper-recessed);border:var(--hairline-w) solid var(--hairline);border-radius:var(--r-sm);font-size:var(--text-ui);padding:5px 12px;display:inline-block}.field{background:var(--paper-raised);border:var(--hairline-w) solid var(--hairline);border-radius:var(--r-md);width:100%;transition:border-color var(--dur-1) var(--ease-exit), box-shadow var(--dur-1) var(--ease-exit);padding:13px 14px}.field::placeholder{color:var(--ink-3)}.field:focus{border-color:var(--ink);box-shadow:0 2px 0 0 var(--brass-bright);outline:none}.form-error{color:var(--error);font-size:var(--text-ui);text-align:center}.form-notice{color:var(--positive);font-size:var(--text-ui);text-align:center}.plate{border-radius:var(--r-plate);width:100%;position:relative;overflow:hidden}.plate img{aspect-ratio:4/3;object-fit:cover;width:100%}.plate:after{content:"";border:1px solid color-mix(in srgb, var(--ink) 35%, transparent);pointer-events:none;border-radius:2px;position:absolute;inset:6px}.plate--natural img{aspect-ratio:auto}.wall-label{flex-direction:column;gap:2px;display:flex}.wall-label-title{font-family:var(--serif);font-optical-sizing:auto;font-style:italic;font-size:var(--text-lead);font-weight:450;line-height:1.3}.wall-label-meta{font-size:var(--text-meta);color:var(--ink-2)}.plate.is-scanning img{filter:brightness(.85)grayscale(.5)}.plate .scan-line{background:var(--brass-bright);height:1px;box-shadow:0 0 12px 1px color-mix(in srgb, var(--brass-bright) 80%, transparent);animation:scan-sweep 2.2s var(--ease-enter) infinite;position:absolute;top:0;left:0;right:0}.plate.is-revealed img{animation:relight var(--dur-3) var(--ease-enter)}.stagger>*{animation:rise-in .32s var(--ease-enter) both}.stagger>:first-child{animation-delay:40ms}.stagger>:nth-child(2){animation-delay:85ms}.stagger>:nth-child(3){animation-delay:.13s}.stagger>:nth-child(4){animation-delay:.175s}.stagger>:nth-child(5){animation-delay:.22s}.stagger>:nth-child(6){animation-delay:.265s}.stagger>:nth-child(n+7){animation-delay:.31s}.library-note{font-size:var(--text-meta);color:var(--ink-2);align-items:center;gap:6px;display:flex}.library-note:before{content:"✓";color:var(--brass-deep);font-weight:700}.player-block{flex-direction:column;gap:8px;display:flex}.player{border-radius:var(--r-md);min-height:52px;color:var(--stage-ink);transition:box-shadow var(--dur-2) var(--ease-enter);align-items:center;gap:10px;padding:8px 12px;display:flex}.player--narrate{background:var(--ink-fill)}.player--immersive{background:var(--velvet)}.player.is-playing{box-shadow:0 0 0 1px color-mix(in srgb, var(--brass-bright) 55%, transparent), 0 2px 18px color-mix(in srgb, var(--brass-bright) 25%, transparent)}.player-num{border:1px solid color-mix(in srgb, var(--stage-ink) 50%, transparent);width:24px;height:24px;font-family:var(--serif);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;display:flex}.player-btn{width:36px;height:36px;color:var(--stage-ink);border:1px solid color-mix(in srgb, var(--stage-ink) 40%, transparent);transition:transform var(--dur-1) var(--ease-exit), background var(--dur-1) var(--ease-exit);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin:-2px;display:flex}.player-btn:active{transform:scale(.92)}.player-btn--main{background:color-mix(in srgb, var(--stage-ink) 12%, transparent)}.player-btn.is-active{background:color-mix(in srgb, var(--stage-ink) 18%, transparent);border-color:color-mix(in srgb, var(--stage-ink) 65%, transparent)}.player-time{font-variant-numeric:tabular-nums;text-align:right;min-width:32px;color:color-mix(in srgb, var(--stage-ink) 90%, transparent);flex-shrink:0;font-size:11px}.player-scrub{cursor:pointer;touch-action:none;flex:1;align-items:center;height:32px;display:flex;position:relative}.player-scrub-track{background:color-mix(in srgb, var(--stage-ink) 25%, transparent);border-radius:2px;width:100%;height:3px;position:relative}.player-scrub-fill{background:var(--brass-bright);border-radius:2px;position:absolute;top:0;bottom:0;left:0}.player-scrub-knob{background:var(--stage-ink);width:12px;height:12px;transition:transform var(--dur-1) var(--ease-exit);border-radius:50%;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 1px 3px #00000059}.player-scrub:active .player-scrub-knob{transform:translate(-50%,-50%)scale(1.3)}.player-pending{border-radius:var(--r-md);min-height:52px;font-size:var(--text-ui);color:var(--stage-ink);text-align:left;align-items:center;gap:10px;width:100%;padding:8px 14px;font-weight:500;display:flex}.player-pending--narrate{background:var(--ink-fill)}.player-pending--immersive{background:var(--velvet)}.player-pending.is-idle{opacity:.92}.player-pending.is-loading{opacity:.8;position:relative;overflow:hidden}.player-pending.is-loading:after{content:"";background:linear-gradient(100deg, transparent 30%, color-mix(in srgb, var(--stage-ink) 14%, transparent) 50%, transparent 70%);background-size:200% 100%;animation:1.6s linear infinite shimmer;position:absolute;inset:0}.player-pending.is-error{background:var(--error-wash);color:var(--error);border:1px solid var(--error)}.player-pending:disabled{opacity:.55;cursor:default}.playbill{background:var(--stage);color:var(--stage-ink);border-radius:var(--r-md);animation:rise-in .32s var(--ease-enter) both;flex-direction:column;gap:10px;padding:18px;display:flex}.eyebrow--cadmium,.playbill .eyebrow--cadmium{color:var(--brass-bright)}.playbill-title{font-family:var(--serif);font-optical-sizing:auto;font-style:italic;font-size:var(--text-title);font-weight:400;line-height:1.25}.playbill-setup{font-size:var(--text-ui);color:color-mix(in srgb, var(--stage-ink) 80%, transparent);line-height:1.6}.playbill-pov{font-family:var(--serif);font-style:italic;font-size:var(--text-ui);color:color-mix(in srgb, var(--stage-ink) 75%, transparent)}.playbill-cast{border-top:1px solid color-mix(in srgb, var(--stage-ink) 18%, transparent);flex-direction:column;gap:10px;padding-top:12px;display:flex}.playbill-cast-item{align-items:flex-start;gap:9px;display:flex}.playbill-cast-dot{border-radius:50%;flex-shrink:0;width:9px;height:9px;margin-top:5px}.playbill-cast-name{letter-spacing:.08em;text-transform:uppercase;filter:brightness(1.5);font-size:11px;font-weight:700}.playbill-cast-role{font-size:var(--text-meta);color:color-mix(in srgb, var(--stage-ink) 65%, transparent);line-height:1.45}.playbill .btn--velvet{margin-top:6px}.dialogue{flex-direction:column;gap:12px;display:flex}.dialogue-line{opacity:.72;transition:opacity .25s var(--ease-enter)}.dialogue-line.is-active{opacity:1}.dialogue-speaker{letter-spacing:.08em;text-transform:uppercase;margin-bottom:2px;font-size:11px;font-weight:700}.dialogue-text{font-size:var(--text-body);line-height:1.75}.dialogue-word{opacity:.62;transition:opacity .12s linear,color .12s linear}.dialogue-word.is-spoken{opacity:1;color:var(--brass-deep);font-weight:600}.stage-zone{transition:background var(--dur-3) var(--ease-enter), color var(--dur-3) var(--ease-enter)}.stage-zone.is-dark{background:var(--stage);color:var(--stage-ink);border-radius:var(--r-md);padding:18px}.stage-zone.is-dark .dialogue-word{opacity:.38}.stage-zone.is-dark .dialogue-word.is-spoken{opacity:1;color:var(--brass-bright);text-shadow:0 0 8px color-mix(in srgb, var(--brass-bright) 45%, transparent)}.stage-zone.is-dark .dialogue-speaker{filter:brightness(1.5)}.toast{top:calc(14px + var(--safe-top));z-index:100;background:var(--paper-raised);border:var(--hairline-w) solid var(--hairline);border-left:3px solid var(--m,var(--brass));border-radius:var(--r-md);width:max-content;max-width:calc(100vw - 32px);box-shadow:var(--shadow-overlay);animation:slip-in .22s var(--ease-enter) both;text-align:left;align-items:center;gap:12px;padding:10px 16px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast.is-leaving{animation:slip-out .16s var(--ease-exit) both}.toast-eyebrow{font-size:var(--text-eyebrow);letter-spacing:.14em;text-transform:uppercase;color:var(--brass-deep);flex-shrink:0;font-weight:600}.toast-body{flex-direction:column;min-width:0;display:flex}.toast-name{font-family:var(--serif);font-optical-sizing:auto;font-size:var(--text-body);width:fit-content;font-weight:500;line-height:1.3;position:relative}.toast-name:after{content:"";background:var(--brass-bright);transform-origin:0;width:100%;height:1px;animation:draw-in .32s var(--ease-enter) .12s both;position:absolute;bottom:-1px;left:0}.toast-museum{color:var(--ink-2);font-size:11px}.toast-level{border-radius:var(--r-sm);background:var(--brass-wash);border:1px solid color-mix(in srgb, var(--m,var(--brass)) 45%, transparent);color:color-mix(in srgb, var(--m,var(--brass)) 72%, var(--ink));letter-spacing:.04em;flex-shrink:0;padding:3px 10px;font-size:11px;font-weight:600}.toast-cta{letter-spacing:.06em;text-transform:uppercase;color:var(--brass-deep);text-underline-offset:3px;flex-shrink:0;font-size:11px;font-weight:600;text-decoration:underline}.dock{bottom:calc(10px + var(--safe-bottom));z-index:50;min-height:var(--dock-h);background:color-mix(in srgb, var(--paper) 85%, transparent);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:var(--hairline-w) solid var(--hairline);border-radius:var(--r-dock);box-shadow:var(--shadow-overlay);justify-content:space-around;align-items:stretch;padding-bottom:0;display:flex;position:fixed;left:12px;right:12px}.dock-btn{color:var(--ink-3);transition:color var(--dur-1) var(--ease-exit), transform var(--dur-1) var(--ease-exit);flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:8px 20px 6px;display:flex;position:relative}.dock-btn:active{transform:translateY(1px)}.dock-btn.is-active{color:var(--brass)}.dock-label{letter-spacing:.1em;text-transform:uppercase;font-size:10.5px;font-weight:600}.dock-btn.is-active .dock-label{color:var(--brass-deep)}.dock-badge{background:var(--brass-bright);border:1.5px solid var(--paper-raised);width:8px;height:8px;animation:pop-in .3s var(--ease-enter);border-radius:50%;position:absolute;top:7px;left:calc(50% + 9px)}.sheet-backdrop{z-index:200;background:var(--scrim);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fade-in var(--dur-2) var(--ease-enter);justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet-panel{width:100%;max-width:var(--col);max-height:calc(100dvh - 48px - var(--safe-top));overscroll-behavior:contain;background:var(--paper-raised);border-radius:var(--r-lg) var(--r-lg) 0 0;box-shadow:var(--shadow-sheet);padding-bottom:calc(24px + var(--safe-bottom));animation:sheet-up var(--dur-2) var(--ease-enter);position:relative;overflow-y:auto}.sheet-grabber{z-index:5;justify-content:center;width:100%;margin:0 auto;padding:10px 0 6px;display:flex;position:sticky;top:0}.sheet-grabber:after{content:"";background:var(--hairline);border-radius:2px;width:32px;height:3px}.sheet-close{z-index:10;background:color-mix(in srgb, var(--paper) 90%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:var(--hairline-w) solid var(--hairline);width:40px;height:40px;color:var(--ink);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:12px;right:12px}.sheet-body{flex-direction:column;gap:14px;padding:6px 20px 12px;display:flex}.spinner{border:2px solid var(--hairline);border-top-color:var(--brass-bright);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}.skeleton{background:var(--paper-recessed);border-radius:var(--r-sm);display:block;position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(100deg, transparent 30%, color-mix(in srgb, var(--paper-raised) 80%, transparent) 50%, transparent 70%);background-size:200% 100%;animation:1.6s linear infinite shimmer;position:absolute;inset:0}.offline-banner{top:calc(58px + var(--safe-top));z-index:120;background:var(--ink-fill);max-width:calc(100vw - 32px);color:var(--stage-ink);font-size:var(--text-meta);border-radius:var(--r-btn);box-shadow:var(--shadow-overlay);text-align:center;animation:slip-in .22s var(--ease-enter) both;padding:8px 16px;font-weight:500;position:fixed;left:50%;transform:translate(-50%)}.ellipsis:after{content:"…";vertical-align:bottom;animation:1.4s steps(4,end) infinite ellipsis-grow;display:inline-block;overflow:hidden}.quiz-progress{gap:5px;display:flex}.quiz-progress-dot{background:var(--paper-recessed);height:3px;transition:background var(--dur-2) var(--ease-enter);border-radius:2px;flex:1}.quiz-progress-dot.is-done{background:var(--m,var(--brass-bright))}.quiz-option{border:var(--hairline-w) solid var(--hairline);border-radius:var(--r-md);background:var(--paper-raised);width:100%;min-height:48px;font-size:var(--text-ui);text-align:left;transition:background var(--dur-1) var(--ease-exit), border-color var(--dur-1) var(--ease-exit), transform var(--dur-1) var(--ease-exit);justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;display:flex}.quiz-option:not(:disabled):active{transform:translateY(1px)}.quiz-option.is-correct{background:var(--positive-wash);border-color:var(--positive);color:var(--positive)}.quiz-option.is-wrong{background:var(--error-wash);border-color:var(--error);color:var(--error);animation:shake .3s var(--ease-exit)}.quiz-option .quiz-mark{animation:pop-in .2s var(--ease-enter);font-weight:700}.quiz-explanation{font-size:var(--text-ui);color:var(--ink-2);background:var(--paper);border-left:2px solid var(--brass-bright);border-radius:0 var(--r-sm) var(--r-sm) 0;animation:rise-in .26s var(--ease-enter);padding:10px 14px;line-height:1.55}.quiz-score-ring{border:2px solid var(--m,var(--brass));width:104px;height:104px;animation:pop-in .4s var(--ease-enter);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative}.quiz-score-ring.is-perfect:after{content:"";border:2px solid var(--brass-bright);animation:ring-bloom .65s var(--ease-enter) .25s both;border-radius:50%;position:absolute;inset:-2px}.quiz-score{font-family:var(--serif);color:var(--m,var(--brass));font-size:30px;font-weight:450}.quiz-score-label{font-size:var(--text-eyebrow);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);font-weight:600}.xp-chip{font-size:var(--text-ui);border-radius:var(--r-sm);background:var(--brass-wash);color:var(--brass-deep);animation:pop-in .4s var(--ease-enter) .12s both;padding:8px 16px;font-weight:600}.xp-chip--muted{background:var(--paper-recessed);color:var(--ink-2)}.legend-row{border-top:var(--hairline-w) solid var(--hairline);flex-wrap:wrap;justify-content:center;gap:16px;width:100%;padding-top:12px;display:flex}.legend-item{font-size:var(--text-meta);color:var(--ink-2);align-items:center;gap:6px;display:flex}.museum-row{background:var(--paper-raised);border:var(--hairline-w) solid var(--hairline);border-radius:var(--r-md);text-align:left;width:100%;transition:transform var(--dur-1) var(--ease-exit), border-color var(--dur-1) var(--ease-exit);align-items:center;gap:14px;padding:12px 14px;display:flex}.museum-row:active{transform:translateY(1px)}.museum-row.is-unlocked{border-color:color-mix(in srgb, var(--m,var(--brass)) 40%, var(--hairline))}.progress-track{background:var(--paper-recessed);border-radius:2px;width:100%;height:3px;overflow:hidden}.progress-fill{background:var(--m,var(--brass-bright));height:100%;transition:width var(--dur-3) var(--ease-enter);border-radius:2px}.quest-card{background:var(--paper-raised);border:var(--hairline-w) solid var(--hairline);border-radius:var(--r-md);text-align:center;flex-direction:column;align-items:center;gap:6px;padding:16px 12px;display:flex}.quest-card.is-unlocked{border-color:color-mix(in srgb, var(--m,var(--brass)) 40%, var(--hairline))}.medallion{background:var(--paper);border:var(--hairline-w) solid var(--hairline);font-family:var(--serif);letter-spacing:.02em;color:var(--m,var(--brass));border-radius:50%;justify-content:center;align-items:center;font-size:20px;font-weight:450;display:flex;position:absolute;inset:6px}.quest-card.is-locked .medallion{color:var(--ink-3);background:var(--paper-recessed)}.medallion-img{object-fit:cover;border-radius:50%;width:calc(100% - 12px);height:calc(100% - 12px);display:block;position:absolute;inset:6px}.quest-card.is-locked .medallion-img{filter:grayscale();opacity:.35}.level-badge{letter-spacing:.04em;border-radius:var(--r-sm);background:var(--brass-wash);border:1px solid color-mix(in srgb, var(--m,var(--brass)) 40%, transparent);color:color-mix(in srgb, var(--m,var(--brass)) 72%, var(--ink));padding:4px 10px;font-size:11px;font-weight:600}.level-badge.is-locked{background:var(--paper-recessed);border-color:var(--hairline);color:var(--ink-3)}.punch-row{gap:6px;margin-top:2px;display:flex}.punch{border:var(--hairline-w) solid var(--hairline);background:var(--paper-recessed);width:9px;height:9px;transition:background var(--dur-2) var(--ease-enter), border-color var(--dur-2) var(--ease-enter);border-radius:50%}.punch.is-filled{background:var(--m,var(--brass-bright));border-color:color-mix(in srgb, var(--m,var(--brass)) 60%, var(--ink))}.rank-badge{background:var(--paper-raised);border:var(--hairline-w) solid var(--hairline);border-radius:var(--r-md);flex-direction:column;flex-shrink:0;gap:5px;min-width:122px;padding:10px 14px;display:flex}.rank-xp{align-items:baseline;gap:4px;display:flex}.rank-xp-value{font-family:var(--serif);font-variant-numeric:tabular-nums;font-size:19px;font-weight:500}.rank-xp-unit{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);font-size:10px;font-weight:600}.rank-title{letter-spacing:.04em;color:var(--brass-deep);font-size:11px;font-weight:600}.rank-next{color:var(--ink-2);font-size:10.5px}.rank-track{background:var(--paper-recessed);border-radius:2px;height:4px;overflow:hidden}.rank-fill{background:var(--brass-bright);height:100%;transition:width var(--dur-3) var(--ease-enter);border-radius:2px}.label-row{text-align:left;width:100%;transition:opacity var(--dur-1) var(--ease-exit), transform var(--dur-1) var(--ease-exit);align-items:center;gap:14px;padding:12px 2px;display:flex}.label-row:active{transform:translateY(1px)}.label-row+.label-row{border-top:var(--hairline-w) solid var(--hairline)}.label-thumb{border-radius:var(--r-plate);object-fit:cover;border:var(--hairline-w) solid var(--hairline);flex-shrink:0;width:56px;height:56px}.label-thumb--empty{background:var(--paper-recessed);color:var(--ink-3);justify-content:center;align-items:center;display:flex}.label-title{font-family:var(--serif);font-optical-sizing:auto;font-style:italic;font-size:var(--text-body);text-overflow:ellipsis;white-space:nowrap;font-weight:450;line-height:1.3;overflow:hidden}.label-artist{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:11px;overflow:hidden}.media-badge{letter-spacing:.06em;text-transform:uppercase;color:var(--brass-deep);background:var(--brass-wash);border-radius:var(--r-sm);padding:3px 7px;font-size:10.5px;font-weight:600}.media-badge--velvet{color:var(--stage-ink);background:var(--velvet)}.stat-strip{border-top:var(--hairline-w) solid var(--hairline);border-bottom:var(--hairline-w) solid var(--hairline);width:100%;padding:10px 0;display:flex}.stat-cell{flex-direction:column;flex:1;align-items:center;gap:1px;display:flex}.stat-cell+.stat-cell{border-left:var(--hairline-w) solid var(--hairline)}.stat-value{font-family:var(--serif);font-variant-numeric:tabular-nums;font-size:19px;font-weight:500}.stat-label{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);font-size:10px;font-weight:600}.bubble-row{width:100%;display:flex}.bubble{border-radius:var(--r-md);max-width:78%;font-size:var(--text-body);white-space:pre-wrap;overflow-wrap:break-word;animation:rise-in .2s var(--ease-enter);padding:10px 15px;line-height:1.5}.bubble--user{background:var(--ink-fill);color:var(--stage-ink);border-bottom-right-radius:var(--r-sm)}.bubble--assistant{background:var(--paper-raised);border:var(--hairline-w) solid var(--hairline);border-bottom-left-radius:var(--r-sm);padding-right:42px;position:relative}.bubble-audio-controls{gap:4px;display:flex;position:absolute;top:6px;right:6px}.bubble-audio-btn{background:var(--paper);border:var(--hairline-w) solid var(--hairline);width:22px;height:22px;color:var(--ink-2);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.bubble-audio-btn:active{transform:scale(.92)}.bubble--system{background:var(--error-wash);color:var(--error);font-size:var(--text-ui);border-radius:var(--r-md);text-align:center;align-self:center;max-width:90%;padding:8px 14px}.art-card{text-align:left;background:var(--paper-raised);border:var(--hairline-w) solid var(--hairline);border-radius:var(--r-md);border-bottom-left-radius:var(--r-sm);cursor:pointer;width:min(80%,330px);animation:rise-in .2s var(--ease-enter);transition:transform .12s var(--ease-enter), border-color .16s var(--ease-enter);align-items:stretch;padding:0;display:flex;overflow:hidden}.art-card:active{transform:scale(.985)}.art-card-thumb{object-fit:cover;border-right:1px solid color-mix(in srgb, var(--brass) 45%, transparent);flex-shrink:0;align-self:stretch;width:96px}.art-card-body{flex-direction:column;flex:1;justify-content:center;gap:3px;min-width:0;padding:12px 14px;display:flex}.art-card-title{color:var(--ink);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:16px;font-weight:450;line-height:1.3;display:-webkit-box;overflow:hidden}.art-card-artist{font-size:var(--text-meta);color:var(--ink-2);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.art-card-cta{letter-spacing:.06em;text-transform:uppercase;color:var(--brass-deep);align-items:center;gap:4px;margin-top:5px;font-size:11px;font-weight:600;display:flex}.typing-dots{gap:4px;padding:4px 2px;display:inline-flex}.typing-dots span{background:var(--ink-3);border-radius:50%;width:6px;height:6px;animation:1.2s infinite typing-bounce}.typing-dots span:nth-child(2){animation-delay:.15s}.typing-dots span:nth-child(3){animation-delay:.3s}.guide-controls{bottom:calc(var(--dock-h) + var(--safe-bottom) + var(--kb-offset));width:100%;max-width:var(--col);z-index:40;padding:10px var(--gutter) 10px;background:color-mix(in srgb, var(--paper) 92%, transparent);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-top:var(--hairline-w) solid var(--hairline);flex-direction:column;gap:10px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.mic-btn{background:var(--ink-fill);width:44px;height:44px;color:var(--stage-ink);touch-action:none;-webkit-user-select:none;user-select:none;transition:transform var(--dur-2) var(--ease-enter), background var(--dur-2) var(--ease-enter);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.mic-btn:after{content:"";border:1px solid var(--brass-bright);border-radius:50%;position:absolute;inset:2px}.mic-btn.is-recording{background:var(--velvet);color:var(--stage-ink);transform:scale(1.06)}.mic-btn.is-recording .mic-ripple{border:2px solid var(--brass-bright);border-radius:50%;animation:1.6s ease-out infinite pulse-ring;position:absolute;inset:-2px}.mic-btn:disabled{opacity:.6;cursor:default}.rec-pill{background:var(--velvet);color:var(--stage-ink);font-variant-numeric:tabular-nums;border-radius:var(--r-btn);white-space:nowrap;padding:4px 12px;font-size:11px;font-weight:600;position:absolute;top:-26px;left:50%;transform:translate(-50%)}.chat-input-row{align-items:center;gap:8px;display:flex}.chat-input{border:var(--hairline-w) solid var(--hairline);border-radius:var(--r-md);background:var(--paper-raised);flex:1;min-width:0;padding:10px 14px}.chat-input:focus{border-color:var(--ink);box-shadow:0 2px 0 0 var(--brass-bright);outline:none}.chat-send{border-radius:var(--r-md);background:var(--ink-fill);width:44px;height:44px;color:var(--stage-ink);transition:transform var(--dur-1) var(--ease-exit);flex-shrink:0;justify-content:center;align-items:center;display:flex}.chat-send:active{transform:translateY(1px)}.chat-scan{border-radius:var(--r-md);background:var(--ink-fill);width:44px;height:44px;color:var(--stage-ink);transition:transform var(--dur-1) var(--ease-exit);flex-shrink:0;justify-content:center;align-items:center;display:flex}.chat-scan:active{transform:translateY(1px)}.suggestion-chip{border:var(--hairline-w) solid var(--hairline);background:var(--paper-raised);border-radius:var(--r-btn);font-size:var(--text-ui);color:var(--ink-2);transition:transform var(--dur-1) var(--ease-exit), border-color var(--dur-1) var(--ease-exit);padding:9px 16px}.suggestion-chip:active{border-color:var(--brass);transform:translateY(1px)}.suggestion-chip--scan{background:var(--ink-fill);border-color:var(--ink-fill);color:var(--stage-ink);align-items:center;gap:7px;font-weight:600;display:inline-flex}.brand{font-family:var(--serif);font-optical-sizing:auto;font-size:var(--text-brand);text-transform:lowercase;color:var(--ink);letter-spacing:-.005em;font-weight:400;line-height:1.05}.brand--sm{font-size:34px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slip-in{0%{opacity:0;transform:translate(-50%)translateY(-12px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes slip-out{to{opacity:0;transform:translate(-50%)translateY(-8px)}}@keyframes draw-in{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes sheet-up{0%{opacity:.6;transform:translateY(48px)}}@keyframes pop-in{0%{opacity:0;transform:scale(.5)}65%{opacity:1;transform:scale(1.06)}to{transform:scale(1)}}@keyframes pulse-ring{0%{opacity:.55;transform:scale(1)}to{opacity:0;transform:scale(1.9)}}@keyframes scan-sweep{0%{opacity:0;top:4%}8%{opacity:1}92%{opacity:1}to{opacity:0;top:96%}}@keyframes relight{0%{filter:brightness(.85)grayscale(.5)}to{filter:none}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}@keyframes ring-bloom{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(1.35)}}@keyframes typing-bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-4px)}}@keyframes ellipsis-grow{0%{width:0}to{width:1.2em}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.plate .scan-line{opacity:.7;animation:none;top:50%}.spinner{animation-duration:.8s!important;animation-iteration-count:infinite!important}}@media (hover:hover){.btn--primary:hover{background:var(--ink-hover)}.btn--secondary:hover{background:var(--paper-recessed)}.btn--velvet:hover{background:var(--velvet-deep)}.chip:hover{border-color:var(--brass)}.dock-btn:hover{color:var(--ink)}.museum-row:hover,.label-row:hover{background:var(--paper)}.quiz-option:not(:disabled):hover{border-color:var(--ink-3)}.suggestion-chip:hover{border-color:var(--brass);color:var(--ink)}.suggestion-chip--scan:hover{background:var(--ink-hover);color:var(--stage-ink);border-color:var(--ink-hover)}.scan-back:hover{border-color:var(--brass)}.art-card:hover{border-color:var(--brass);transform:translateY(-1px)}.btn-text:hover,.back-link:hover{color:var(--ink)}}
