/* Hallmark · pre-emit critique: P4 H4 E4 S5 R5 V4. Existing PlasticOff identity. */
@font-face{font-family:Inter;src:url('./assets/fonts/inter-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Inter;src:url('./assets/fonts/inter-600.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Oswald;src:url('./assets/fonts/oswald-500.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:Oswald;src:url('./assets/fonts/oswald-600.woff2') format('woff2');font-weight:600;font-display:swap}
:root{color-scheme:light;--paper:#f7f1e5;--starch:#fff8e8;--lab:#fbfdf7;--ink:#12313a;--muted:#4e6670;--field:#2f6f46;--maize:#eebf4f;--water:#6bb9cf;--line:#d9cfbd;--night:#09242b;--stage:#17313b;--stage-text:#e9eee8;--stage-muted:#bacaca;--danger:#9f3528;--success:#245b37;--focus:#a04d1b;--shadow:0 16px 40px rgba(9,36,43,.2);--pulse:rgba(238,191,79,.25);--sans:Inter,ui-sans-serif,system-ui,sans-serif;--display:Oswald,Inter,ui-sans-serif,sans-serif;--radius:14px}
*{box-sizing:border-box}html,body{margin:0;min-width:320px;overflow-x:clip;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}body{min-height:100dvh}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}button:disabled{cursor:wait;opacity:.55}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--focus);outline-offset:4px}button:active{transform:translateY(1px)}a{color:var(--field);text-underline-offset:4px}button[hidden],[hidden]{display:none!important}h1,h2,h3{font-family:var(--display);font-weight:500;font-style:normal;line-height:1.13;letter-spacing:-.02em;text-wrap:balance;overflow-wrap:anywhere}p{line-height:1.65;margin:0 0 1em}::selection{background:var(--maize);color:var(--night)}input,textarea{accent-color:var(--field);caret-color:var(--field)}svg{display:block}svg.icon{width:22px;height:22px;flex:none}a,button{touch-action:manipulation}.skip-link{position:absolute;left:16px;top:-80px;padding:16px;background:var(--lab);z-index:50}.skip-link:focus{top:12px}.app-shell{min-height:100dvh;display:grid;grid-template-rows:auto minmax(460px,1fr) auto auto;max-width:2400px;margin:auto}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:17px 32px;border-bottom:1px solid var(--line)}.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;font:500 32px/1 var(--display);color:var(--ink);flex-shrink:0}.brand img{width:46px;height:46px;object-fit:contain;border-radius:8px}.brand-off{color:var(--field)}.exhibit-name{font-size:14px;color:var(--muted)}.screen-tools{display:flex;gap:8px;align-items:center}.icon-button,.quiet-button,.button{border:0;display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:48px;border-radius:8px;background:transparent;text-decoration:none;white-space:nowrap;transition:background .16s,color .16s}.icon-button{width:48px;flex-shrink:0}.quiet-button{padding:0 12px;font-size:14px}.button{padding:0 20px;font-size:14px;font-weight:600;background:var(--starch)}.button-primary{background:var(--field);color:var(--lab)}.quiet-button:hover,.icon-button:hover{background:var(--starch)}.button-primary:hover{background:var(--ink)}.quiet-button[aria-pressed=true]{background:var(--ink);color:var(--lab)}.experience{display:grid;grid-template-columns:minmax(0,1fr) clamp(300px,30vw,430px);min-height:0}.viewer{background:var(--stage);position:relative;overflow:clip;min-height:480px;isolation:isolate}.viewer canvas{display:block;width:100%;height:100%;position:absolute;inset:0;touch-action:none;cursor:grab}.viewer canvas:active{cursor:grabbing}.bag-poster{height:70%;width:60%;object-fit:contain;position:absolute;left:20%;top:10%}.hotspots{position:absolute;inset:0;pointer-events:none}.hotspot{position:absolute;display:flex;align-items:center;gap:10px;transform:translate(-50%,-50%);padding:0;border:0;background:transparent;min-width:48px;min-height:48px;pointer-events:auto;color:var(--stage-text);white-space:nowrap}.hotspot:active{transform:translate(-50%,-50%)}.hotspot-dot{width:34px;height:34px;display:grid;place-items:center;flex-shrink:0;background:var(--maize);color:var(--night);font-size:14px;font-weight:600;border:3px solid var(--stage);border-radius:50%;box-shadow:0 0 0 1px var(--maize);position:relative}.hotspot-dot:after{content:'';position:absolute;inset:-8px;border:1px solid var(--maize);border-radius:50%;animation:beacon 3.5s ease-out infinite;animation-delay:var(--delay,0s);opacity:0}.hotspot-label{font-size:12px;background:var(--stage);padding:5px 8px;border-radius:5px;line-height:1.3}.hotspot[data-side=left]{flex-direction:row-reverse}.hotspot:hover .hotspot-dot,.hotspot[aria-pressed=true] .hotspot-dot{background:var(--lab);box-shadow:0 0 0 3px var(--maize)}.hotspot[aria-pressed=true] .hotspot-label{background:var(--maize);color:var(--night)}.hotspot[aria-pressed=true] .hotspot-dot:after{animation:none}.hotspot:focus-visible{outline-color:var(--maize)}@keyframes beacon{0%{transform:scale(.7);opacity:.6}60%,100%{transform:scale(1.35);opacity:0}}.loading-state{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:10px;background:var(--stage);color:var(--stage-text);z-index:3}.loading-state p{margin:0}.loading-dot{height:9px;width:9px;border-radius:50%;background:var(--maize);animation:beacon 2s infinite}.viewer-error{position:absolute;left:20px;right:20px;bottom:80px;color:var(--stage-text);background:var(--stage);padding:18px;border:1px solid var(--stage-muted);border-radius:var(--radius);z-index:4;max-width:450px}.sample-caption{position:absolute;left:26px;top:22px;display:flex;align-items:center;gap:9px;color:var(--stage-muted);font-size:12px;pointer-events:none}.sample-line{width:20px;height:1px;background:var(--maize)}.gesture-hint{position:absolute;bottom:22px;left:20px;right:20px;display:flex;justify-content:center;align-items:center;gap:10px;color:var(--stage-muted);font-size:12px;pointer-events:none}.story{display:flex;align-items:center;padding:40px 34px;min-width:0;background:var(--paper)}.story-intro h1{font-size:clamp(38px,4vw,58px);margin:0 0 22px}.story-intro>p{font-size:16px;color:var(--muted)}.story-intro .button{margin:7px 0 25px}.source-note{font-size:12px!important;line-height:1.65}.story-detail{width:100%}.point-heading{display:flex;align-items:center;gap:10px;color:var(--field);font-size:14px;margin-bottom:19px}.point-heading .icon-button{margin-left:auto}.point-number{font-size:13px;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--field);color:var(--lab);font-weight:600}.story-detail h2{font-size:clamp(32px,3.3vw,46px);margin:0 0 17px}.point-summary{font-weight:600;font-size:15px;line-height:1.5}.story-detail>p:not(.point-summary){font-size:14px;color:var(--muted);line-height:1.7}.point-notes{margin:20px 0 24px;padding:17px 0 0 19px;border-top:1px solid var(--line);font-size:12px;line-height:1.65;color:var(--muted)}.point-notes li{padding-left:4px;margin:0 0 10px}.point-notes li::marker{color:var(--field)}.story-actions{display:flex;justify-content:space-between;gap:6px;flex-wrap:wrap}.story-actions .quiet-button{padding:0 5px}.story-actions .button{padding:0 12px}.interaction-bar{padding:17px 30px 18px;border-top:1px solid var(--line)}.bag-tools{display:flex;align-items:center;justify-content:center;gap:25px}.rotate-buttons{display:flex}.opening-control{display:grid;gap:8px;min-width:190px;width:270px;font-size:12px}.opening-control>span{display:flex;justify-content:space-between}.opening-control output{font-variant-numeric:tabular-nums;color:var(--muted)}input[type=range]{width:100%;min-height:24px;cursor:pointer;margin:0}.point-list{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:14px}.point-tab{border:1px solid transparent;min-height:48px;display:flex;align-items:center;gap:9px;padding:0 16px;background:transparent;border-radius:8px;font-size:13px;white-space:nowrap;color:var(--muted)}.point-tab span{font-size:11px;color:var(--field);font-weight:600}.point-tab:hover{background:var(--starch)}.point-tab[aria-pressed=true]{background:var(--ink);color:var(--lab)}.point-tab[aria-pressed=true] span{color:var(--maize)}.bottom-bar{border-top:1px solid var(--line);padding:12px 32px;display:flex;align-items:center;gap:20px;justify-content:space-between;font-size:11px;color:var(--muted)}.offline-status{display:flex;align-items:center;gap:6px}.offline-status:before{content:'';width:6px;height:6px;border-radius:50%;background:var(--muted)}.offline-status[data-ready=true]:before{background:var(--field)}.operator-link{color:var(--muted)}.tour-controls{padding:10px 32px 16px;display:flex;align-items:center;gap:20px;font-size:13px}.tour-track{height:3px;flex:1;background:var(--line);overflow:clip}.tour-track span{display:block;height:100%;background:var(--field);width:0}.toast{position:fixed;left:50%;bottom:25px;transform:translateX(-50%);max-width:calc(100% - 40px);padding:14px 20px;background:var(--ink);color:var(--lab);border-radius:10px;box-shadow:var(--shadow);z-index:30;font-size:14px}.content-error{padding:60px 30px;max-width:650px;margin:auto}.is-tv .interaction-bar,.is-tv .gesture-hint,.is-tv .operator-link,.is-tv #close-point{display:none}.is-tv .app-shell{grid-template-rows:auto minmax(500px,1fr) auto auto}.is-tv .experience{grid-template-columns:minmax(0,1fr) 40%}.is-tv .story{padding:45px clamp(30px,4vw,100px)}.is-tv .story-detail h2{font-size:clamp(42px,4vw,82px)}.is-tv .point-summary{font-size:clamp(19px,1.8vw,32px)}.is-tv .story-detail>p:not(.point-summary){font-size:clamp(17px,1.45vw,26px)}.is-tv .point-notes{font-size:clamp(15px,1.1vw,22px)}.is-tv .story-actions{display:none}.is-tv .point-heading{font-size:20px}.is-tv .hotspot-label{font-size:16px}.is-tv .sample-caption{font-size:15px}.is-tv .project-credit{font-size:13px}
@media(min-width:1450px){.viewer{min-height:600px}.story{padding:48px}.story-detail>p:not(.point-summary){font-size:16px}.point-notes{font-size:14px}.point-summary{font-size:17px}.point-tab{font-size:15px}.topbar{padding:20px 40px}}
@media(max-width:1000px){.topbar{padding:14px 22px}.exhibit-name{display:none}.experience{grid-template-columns:minmax(0,1fr) 310px}.story{padding:25px}.story-detail h2{font-size:34px}.viewer{min-height:470px}.point-tab{padding:0 10px}.interaction-bar{padding-inline:20px}.bottom-bar{padding-inline:22px}}
@media(max-width:760px){.app-shell{grid-template-rows:auto auto auto auto}.topbar{padding:12px 18px;gap:10px}.brand{font-size:28px}.brand img{height:38px;width:38px}.screen-tools{gap:0}.screen-tools .quiet-button{font-size:12px;padding:0 8px}.experience,.is-tv .experience{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto}.viewer{height:54dvh;min-height:390px}.story{padding:27px 26px;align-items:start}.story-intro h1{font-size:40px;margin-bottom:14px}.story-intro .source-note{display:none}.story-intro .button{margin-bottom:0}.story-detail h2{font-size:36px;max-width:600px}.point-heading{margin-bottom:10px}.point-notes{font-size:13px;margin-top:16px}.story-detail>p:not(.point-summary){font-size:15px}.interaction-bar{padding:15px 16px}.bag-tools{gap:12px;justify-content:space-between}.bag-tools>#reset-view{font-size:0;min-width:48px;padding:0}.opening-control{min-width:120px;width:min(40vw,280px)}.point-list{gap:3px;flex-wrap:wrap}.point-tab{padding:0 9px;font-size:12px;gap:5px}.bottom-bar{padding:14px 20px;gap:12px;flex-wrap:wrap}.project-credit{display:none}.hotspot-label{font-size:11px}.sample-caption{left:18px;top:17px;font-size:11px}.gesture-hint{font-size:11px}.is-tv .story{padding:28px}.is-tv .viewer{height:50dvh;min-height:360px}.is-tv .story-detail h2{font-size:40px}.is-tv .app-shell{grid-template-rows:auto auto auto auto}.is-tv .point-summary{font-size:18px}.is-tv .story-detail>p:not(.point-summary){font-size:16px}.is-tv .point-notes{font-size:14px}.tour-controls{padding:10px 20px 15px;gap:12px}}
@media(max-width:380px){.brand{gap:6px;font-size:25px}.brand img{height:32px;width:32px}.topbar{padding-inline:12px}.screen-tools .icon-button{width:40px}.screen-tools .quiet-button .icon{display:none}.story{padding:25px 20px}.story-actions .button{font-size:12px}.point-tab{font-size:11px;padding:0 7px}.rotate-buttons .icon-button{width:40px}.gesture-hint{font-size:10px}.hotspot-label{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.hotspot{width:48px;justify-content:center}.hotspot-label{position:absolute;left:calc(100% + 2px)}.hotspot[data-side=left] .hotspot-label{left:auto;right:calc(100% + 2px)}
.gesture-hint{left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:calc(100% - 30px);padding:7px 11px;border-radius:5px;background:var(--stage)}.sample-caption{background:var(--stage);padding:6px 8px;max-width:calc(100% - 36px)}
@media(pointer:coarse){input[type=range]{min-height:44px}}
@media(min-width:761px) and (max-width:900px) and (orientation:portrait){.experience,.is-tv .experience{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto}.viewer{height:42dvh;min-height:380px}.story{padding:25px 32px}.story-intro h1{font-size:40px;max-width:600px}.story-detail h2{font-size:36px}.story-detail>p:not(.point-summary){font-size:15px}.point-notes{font-size:13px}.point-heading{margin-bottom:10px}.story-actions{justify-content:space-between}.is-tv .viewer{height:45dvh;min-height:380px}}
/* Preparation screen is separate from the visitor experience. */
.editor-shell{max-width:1080px;margin:0 auto;padding:30px 30px 60px}.editor-top{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:36px}.editor-shell h1{font-size:48px;margin:0 0 12px}.editor-shell h2{font-size:30px;margin:0}.editor-lead{max-width:700px;color:var(--muted)}.editor-actions{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}.editor-actions .button{background:var(--ink);color:var(--lab)}.editor-actions .button-primary{background:var(--field)}.editor-form{display:grid;gap:24px}.editor-general,.point-editor{padding:25px;background:var(--lab);border-radius:var(--radius)}.point-editor header{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:22px}.field{display:grid;gap:8px;font-size:14px;margin-bottom:19px}.field small,.editor-help{color:var(--muted);font-size:12px;line-height:1.6}.field input:not([type=checkbox]),.field textarea,.field select{width:100%;padding:12px;border:1px solid var(--line);border-radius:6px;background:var(--lab);color:var(--ink);min-height:48px}.field textarea{resize:vertical;min-height:100px;line-height:1.6}.editor-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px}.enabled-check{display:flex;gap:8px;align-items:center;min-height:48px;font-size:14px}.enabled-check input{width:20px;height:20px}.editor-feedback{padding:14px 18px;border-radius:8px;margin-bottom:20px;background:var(--starch);color:var(--ink);line-height:1.5}.editor-feedback[data-error=true]{color:var(--danger)}.file-button{position:relative}.file-button input{position:absolute;width:1px;height:1px;opacity:0}.file-button:focus-within{outline:3px solid var(--focus);outline-offset:4px}.editor-footer{display:flex;gap:14px;flex-wrap:wrap;margin-top:25px}.text-button{border:0;padding:12px 0;background:transparent;color:var(--field);text-decoration:underline;text-underline-offset:4px;min-height:48px;font-size:14px}.editor-navigation{display:flex;gap:20px;font-size:14px;flex-wrap:wrap}@media(max-width:650px){.editor-shell{padding:24px 18px 45px}.editor-top{align-items:start;flex-direction:column;gap:15px}.editor-shell h1{font-size:40px}.editor-grid{grid-template-columns:minmax(0,1fr);gap:0}.editor-general,.point-editor{padding:20px}.editor-actions .button{padding:0 13px;font-size:12px}}

.hotspot-dot .icon{width:21px;height:21px}.point-number .icon{width:21px;height:21px}.point-tab>span{display:flex;align-items:center}.point-tab>span .icon{width:19px;height:19px}
