/* Spectacles tokens from ../style.css; font families and import from ../gold.html.
   Border mapping: previously opaque -> .50; previously translucent -> .25. */
:root{--bg-deepest:#2D262C;--bg-panel:#3A3138;--bg-card:#483C46;--bg-input:#40363E;--text-primary:#F4CBC6;--text-secondary:#D6B4BC;--text-muted:#B38D97;--accent:#96C5B0;--accent-bright:#ADF1D2;--border:rgba(179,141,151,.25);--border-strong:rgba(179,141,151,.5);--accent-border:rgba(150,197,176,.25);--accent-border-strong:rgba(150,197,176,.5);--accent-dim:rgba(150,197,176,.08);--font-serif:'Newsreader',serif;--font-sans:'Karla',sans-serif;--font-mono:'DotGothic16',monospace;--composer-height:155px}
*{box-sizing:border-box}body{margin:0;background:var(--bg-deepest);color:var(--text-primary);font-family:var(--font-sans);font-weight:300;height:100dvh;overflow:hidden}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button,input,textarea,select{font:inherit}button{cursor:pointer;color:inherit;border-radius:0}button:focus-visible,a:focus-visible,[tabindex]:focus-visible,textarea:focus-visible,select:focus-visible{outline:1px solid var(--accent-bright);outline-offset:4px}button:disabled{opacity:.35;cursor:default}button{transition:color .15s,background-color .15s,border-color .15s}button:hover{color:var(--accent-bright)}button svg,span[data-icon] svg{display:block;width:20px;height:20px;stroke-width:1.5}button{background:transparent;border:0}h1,h2,p{margin:0}h1,h2{font-family:var(--font-serif);font-style:italic;font-weight:300}em{font-family:var(--font-serif);font-weight:300}a{color:inherit}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0} .icon-button{padding:0;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--text-muted)}
.nav{height:64px;border-bottom:1px solid var(--border-strong);display:flex;align-items:center;padding:0 24px;gap:24px;background:var(--bg-deepest)}.nav-logo{font-family:var(--font-serif);font-size:39px;font-style:italic;letter-spacing:1px;text-decoration:none;font-weight:400}.nav-world{font:italic 20px var(--font-serif);padding-left:24px;border-left:1px solid var(--border-strong)}.settings{margin-left:auto;width:30px;height:30px}.settings svg{width:26px;height:26px}.mobile-nav{display:none}.workspace{display:grid;grid-template-columns:250px minmax(0,1fr) clamp(410px,31vw,520px);height:calc(100dvh - 64px)}
.user-panel{background:var(--bg-panel);border-right:1px solid var(--border-strong);padding:24px 18px 16px;display:flex;flex-direction:column;overflow:auto;min-width:0}.user-profile{display:flex;align-items:center;gap:14px;margin-bottom:26px}.user-avatar{width:68px;height:68px;border-radius:50%;background:var(--bg-card);border:1px solid var(--border);font:italic 39px var(--font-serif);display:grid;place-items:center;color:var(--accent);flex-shrink:0}.user-profile h1{font-size:28px}.user-profile p{font-size:15px;margin-top:5px;letter-spacing:.3px}.user-tabs{display:flex;flex-direction:column;gap:9px}.user-tabs button{border:1px solid var(--border);min-height:51px;display:flex;align-items:center;padding:10px;gap:12px;text-align:left;font-size:15px;line-height:1.4}.user-tabs button[aria-selected=true]{border-color:var(--accent-border-strong);color:var(--accent-bright);background:rgba(150,197,176,.035)}.user-tabs svg{width:21px;height:21px}.count{margin-left:auto;color:var(--accent);font-size:14px}.tab-content{margin-top:28px;border-top:1px solid var(--border-strong)}.tab-content h2{font-size:25px;padding:16px 0 12px;border-bottom:1px solid var(--border)}.scene-row{width:100%;display:flex;align-items:center;gap:7px;text-align:left;padding:17px 0;font-size:15px;line-height:1.5;border-bottom:1px solid var(--border)}.scene-row>span:first-child{flex:1}.scene-row small{display:block;color:var(--text-muted);font-size:12px;line-height:1.6;margin-top:3px}.scene-row em{font-size:21px}.scene-row svg{width:14px;height:14px}.text-link{display:flex;align-items:center;gap:10px;color:var(--accent-bright);font-size:14px;padding:14px 0}.offscreen{display:flex;align-items:center;gap:10px;border-top:1px solid var(--border-strong);margin-top:14px;padding-top:24px}.offscreen label{font:italic 20px var(--font-serif);flex:1}.offscreen button{display:flex;align-items:center;gap:6px;padding:0;color:var(--accent);font-size:13px}.switch-track{width:33px;height:18px;border-radius:20px;background:var(--accent);padding:3px;display:block}.switch-track:after{content:'';display:block;width:12px;height:12px;border-radius:50%;background:var(--bg-deepest);margin-left:15px;transform:translateX(-3px)}[aria-checked=false] .switch-track{background:var(--text-muted)}[aria-checked=false] .switch-track:after{margin-left:0;transform:none}.aside-note{font-size:12px;line-height:1.6;color:var(--text-muted);margin-top:20px}.preview-note{text-align:left;padding:30px 0 0;margin-top:auto;font:12px var(--font-mono);color:var(--text-muted)}
.map-panel{position:relative;overflow:hidden;min-width:0;background-color:var(--bg-deepest);isolation:isolate}.map-panel:before{content:'';position:absolute;inset:0;z-index:-1;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28'%3E%3Ccircle cx='14' cy='14' r='1' fill='%23B38D97'/%3E%3C/svg%3E");opacity:.5;pointer-events:none}.map-heading{position:absolute;left:32px;top:28px;pointer-events:none;z-index:1}.map-heading h2{font-size:38px}.map-heading p{font-size:15px;letter-spacing:1px;margin-top:5px}.map-viewport{position:absolute;inset:135px 26px 88px;touch-action:none}.map-stage{position:absolute;inset:0;transform-origin:50% 50%;touch-action:none}.hotspot{position:absolute;display:grid;grid-template-columns:100px 1fr;width:246px;height:102px;border:1px solid var(--border-strong);padding:0;text-align:left;touch-action:none;user-select:none;cursor:grab;background:transparent}.hotspot:active{cursor:grabbing}.hotspot[aria-pressed=true]{border-color:var(--accent-border-strong)}.hotspot.dragging{z-index:5}.hotspot-picture{position:relative;width:100px;height:100px;display:grid;place-items:center;pointer-events:none}.hotspot-picture svg{width:66px;height:66px;color:white;stroke-width:1.3;filter:drop-shadow(0 1px 2px #0006)}.hotspot-info{display:flex;flex-direction:column;justify-content:center;gap:8px;padding:12px 11px;background:transparent;pointer-events:none}.hotspot-title,.hotspot-agent{font-family:var(--font-sans);font-size:12px;letter-spacing:2px;font-weight:400;text-transform:uppercase;line-height:1.35}.hotspot-agent{font-size:11px;color:var(--text-secondary);font-weight:300}.hotspot-notifications{display:flex;align-items:center;gap:7px;color:var(--accent-bright);font-size:12px}.hotspot-notifications svg{width:17px;height:17px}.drag-handle{position:absolute;top:3px;right:3px;opacity:0;color:var(--accent)}.drag-handle svg{width:12px;height:12px}.hotspot:hover .drag-handle,.hotspot:focus-visible .drag-handle{opacity:1}.map-controls{position:absolute;bottom:27px;left:50%;transform:translateX(-50%);display:flex;gap:8px}.map-controls button,.reopen-chat{display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--border-strong);background:var(--bg-deepest);color:var(--text-secondary)}.map-controls svg{width:19px;height:19px}.reopen-chat{position:absolute;right:16px;top:16px}.workspace.chat-collapsed{grid-template-columns:250px minmax(0,1fr)}.workspace.chat-collapsed .chat-panel{display:none}
.art{background-image:url('assets/college-atlas.png');background-size:400% 200%;background-repeat:no-repeat}.tile-0{background-position:0 0}.tile-1{background-position:33.333333% 0}.tile-2{background-position:66.666667% 0}.tile-3{background-position:100% 0}.tile-4{background-position:0 100%}.tile-5{background-position:33.333333% 100%}.tile-6{background-position:66.666667% 100%}.tile-7{background-position:100% 100%}
/* Amapella chat: ported dimensions / hierarchy from map.html, not chat bubbles. */
.chat-panel{background:var(--bg-panel);border-left:1px solid var(--border-strong);display:flex;flex-direction:column;overflow:hidden;min-width:0;min-height:0}.chat-header{height:100px;min-height:100px;max-height:100px;padding:7px 46px 7px 18px;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:center;border-bottom:1px solid var(--border)}.chat-header-banner{position:absolute;inset:0;opacity:.09;pointer-events:none;background-size:400% 800%;background-position:0 5%}.chat-header-top{display:flex;gap:12px;align-items:center;height:85px;min-height:85px;position:relative}.chat-header-avatar{width:75px;height:75px;border-radius:50%;border:1px solid rgba(173,241,210,.25);flex-shrink:0;padding:0;overflow:hidden}.chat-header-info{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;min-height:85px}.chat-header-name{font-family:var(--font-serif);font-style:italic;font-size:24px;line-height:1.08;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-header-mood{display:flex;align-items:center;gap:6px;margin-top:3px}.chat-header-mood svg{width:18px;height:18px;color:var(--text-muted)}.chat-header-mood-label{font-family:var(--font-mono);font-size:12px;text-transform:uppercase;letter-spacing:2px;color:#fff}.chat-agent-setting-links{display:flex;align-items:center;gap:8px;margin-top:5px}.chat-agent-setting-links .icon-button{width:18px;height:18px}.chat-agent-setting-links svg{width:18px;height:18px;stroke-width:1.5}.failsafe{opacity:.5}.chat-collapse-btn{position:absolute;top:8px;right:8px;width:24px;height:24px;display:grid;place-items:center;color:var(--text-muted);z-index:2;padding:0}.chat-collapse-btn svg{width:14px;height:14px}.latest-scene{display:flex;align-items:center;gap:10px;padding:13px 20px;border-bottom:1px solid var(--border);color:var(--accent-bright);font:12px var(--font-mono);text-align:left}.latest-scene span:last-child{font-family:var(--font-serif);font-size:18px;font-style:italic;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.chat-body{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0;position:relative}.chat-log-frame{flex:1;min-height:0;position:relative}.chat-log{height:100%;overflow-y:scroll;overflow-x:hidden;padding:16px 20px 16px 25px;overscroll-behavior:contain;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:rgba(179,141,151,.5) transparent}.chat-log::-webkit-scrollbar{width:8px}.chat-log::-webkit-scrollbar-thumb{background:rgba(179,141,151,.5);border-radius:8px}.log-entry{position:relative;padding-left:14px;border-left:2px solid var(--accent-border-strong);margin-bottom:16px;padding-bottom:14px;border-bottom:1px solid var(--border);min-width:0}.log-entry.user{border-left-color:rgba(255,255,255,.5)}.log-entry-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:3px;gap:8px}.log-entry-name{font-size:12px;font-weight:400;text-transform:uppercase;letter-spacing:2px;color:var(--accent)}.log-entry.user .log-entry-name{color:var(--text-primary)}.log-entry-time{font-size:12px;color:var(--text-muted);letter-spacing:.5px;white-space:nowrap}.log-entry-body{font-size:20px;line-height:1.7;color:var(--text-secondary);font-family:var(--font-sans);font-weight:250;letter-spacing:0;overflow-wrap:anywhere}.log-entry-body p+p{margin-top:22px}.log-entry-body .dialogue{color:var(--accent)}.log-voice-controls{display:inline-flex;gap:4px;margin-top:6px;flex-wrap:wrap}.voice-btn{background:var(--accent-dim);border:1px solid var(--accent-border);color:var(--accent);font-size:12px;padding:2px 6px;cursor:pointer;font-family:var(--font-sans);height:22px;min-width:24px;display:inline-flex;align-items:center;justify-content:center}.voice-btn:hover{background:rgba(150,197,176,.13)}.voice-btn svg{width:12px;height:12px}.message-translate-btn{font-family:var(--font-mono);letter-spacing:.08em}.message-hidden{border-bottom:0;padding-bottom:0}.message-hidden>:not(.message-restore-btn){display:none!important}.message-restore-btn{display:none}.message-hidden>.message-restore-btn{display:inline-flex;opacity:.7}.message-translation{margin-top:8px;padding:10px 12px;background:var(--bg-deepest);color:var(--text-secondary);font:250 16px/1.7 var(--font-sans)}.message-translation-label{display:block;margin-bottom:3px;font:12px var(--font-mono);letter-spacing:2px;color:var(--accent)}.chat-scroll-jump{position:absolute;z-index:2;right:14px;width:23px;height:23px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--accent-border);background:rgba(72,60,70,.78);color:var(--accent);opacity:.62;padding:0}.chat-scroll-jump:hover{opacity:1}.chat-scroll-jump svg{width:14px;height:14px}.chat-scroll-jump-top{top:6px}.chat-scroll-jump-bottom{bottom:6px}.chat-scroll-jump.is-muted{opacity:.25}.gift-card{display:flex;align-items:center;gap:14px;margin:6px 0 0;padding:12px 0;text-align:left;border-top:1px solid var(--border);width:100%;font-size:15px}.gift-card .art{width:65px;height:65px;flex-shrink:0}.gift-card small{display:block;color:var(--text-muted);font-size:12px;margin-top:7px}.gift-card svg{width:20px;height:20px;color:var(--accent)}
.composer{position:relative;height:var(--composer-height);min-height:115px;max-height:55%;flex-shrink:0;padding:16px 18px 12px;display:flex;flex-direction:column;border-top:1px solid var(--border)}.composer-resize{position:absolute;top:-6px;left:0;right:0;height:13px;cursor:ns-resize;touch-action:none;display:grid;place-items:center}.composer-resize span{width:34px;height:2px;background:rgba(179,141,151,.5)}.composer textarea{resize:none;flex:1;width:100%;min-height:25px;border:0;background:transparent;color:var(--text-primary);font:300 17px/1.6 var(--font-sans);padding:5px 0;outline-offset:0}.composer textarea::placeholder{color:var(--text-muted)}.composer-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:6px;margin-top:8px}.composer-hint{margin-right:auto;font-size:11px;color:var(--text-muted)}.chat-input-icon-btn{background:none;border:1px solid var(--border);color:var(--text-muted);width:31px;height:31px;display:flex;align-items:center;justify-content:center;padding:0;flex-shrink:0}.chat-input-icon-btn svg{width:16px;height:16px}.chat-input-icon-btn.send-btn{color:var(--accent-bright);border-color:rgba(173,241,210,.25);background:rgba(173,241,210,.055)}.attachment-preview{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--accent);max-height:50px;overflow:hidden}.attachment-preview img{width:36px;height:36px;object-fit:cover}.attachment-preview button{margin-left:auto}.message-image{max-height:200px;max-width:100%;display:block;margin-top:8px}.gallery-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}.gallery-grid .art{aspect-ratio:1;border:1px solid var(--border)}
dialog{background:var(--bg-panel);color:var(--text-primary);border:1px solid var(--border-strong);padding:24px;width:min(540px,calc(100vw - 32px));max-height:85dvh;overflow:auto}dialog::backdrop{background:rgba(20,16,20,.7)}dialog>header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}dialog h2{font-size:30px}dialog p{font-size:17px;line-height:1.7;margin:14px 0}dialog .dialog-note{font-size:13px;color:var(--text-muted)}dialog .art{aspect-ratio:1;width:100%;max-width:380px;margin:auto}.dialog-action{border:1px solid var(--accent-border-strong);padding:9px 16px;color:var(--accent-bright);margin-top:12px;font-size:14px}.field{display:flex;flex-direction:column;gap:8px;margin:16px 0;font-size:14px}.field select,.field input{background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border);padding:9px;font:15px var(--font-sans)}.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:20;max-width:calc(100vw - 32px);background:var(--bg-deepest);border:1px solid var(--accent-border);color:var(--accent-bright);font-size:14px;line-height:1.5;padding:10px 16px;opacity:0;pointer-events:none}.toast.visible{opacity:1}
@media(min-width:1800px){.workspace{grid-template-columns:278px minmax(0,1fr) 540px}.hotspot{width:262px;height:110px;grid-template-columns:108px 1fr}.hotspot-picture{width:108px;height:108px}.workspace.chat-collapsed{grid-template-columns:278px minmax(0,1fr)}}
@media(max-width:1250px){.workspace{grid-template-columns:220px minmax(0,1fr) 390px}.user-panel{padding:20px 14px}.hotspot{width:204px;height:86px;grid-template-columns:84px 1fr}.hotspot-picture{width:84px;height:84px}.hotspot-picture svg{width:60px;height:60px}.hotspot-info{padding:8px;gap:5px}.hotspot-title{font-size:11px;letter-spacing:1.5px}.hotspot-agent{font-size:10px;letter-spacing:1.5px}.map-viewport{left:15px;right:15px}.composer-hint{display:none}.offscreen{flex-wrap:wrap}.workspace.chat-collapsed{grid-template-columns:220px minmax(0,1fr)}}
@media(max-width:1100px){.workspace{grid-template-columns:minmax(0,1fr) 410px}.user-panel{display:none}.mobile-nav{display:flex;gap:8px;margin-left:auto}.mobile-nav button{color:var(--text-muted);padding:5px}.mobile-nav button[aria-pressed=true]{color:var(--accent-bright)}.settings{margin-left:4px}body[data-view=user] .user-panel{display:flex;position:absolute;top:64px;bottom:0;left:0;width:270px;z-index:10;border-right:1px solid var(--border-strong)}.workspace.chat-collapsed{grid-template-columns:1fr}}
@media(max-width:760px){.nav{height:58px;padding:0 14px;gap:12px}.nav-logo{font-size:30px}.nav-world{display:none}.workspace{height:calc(100dvh - 58px);display:block}.map-panel,.chat-panel{height:100%;width:100%}.chat-panel{display:none;border-left:0}body[data-view=chat] .map-panel{display:none}body[data-view=chat] .chat-panel{display:flex}body[data-view=user] .user-panel{top:58px;width:100%}.map-heading{left:23px;top:25px}.map-heading h2{font-size:33px}.map-viewport{inset:115px 14px 75px}.hotspot{width:172px;height:74px;grid-template-columns:72px 1fr}.hotspot-picture{width:72px;height:72px}.hotspot-picture svg{width:50px;height:50px}.hotspot-info{padding:6px;gap:4px}.hotspot-title{font-size:10px;letter-spacing:1px}.hotspot-agent{font-size:9px;letter-spacing:1px}.hotspot-notifications svg{width:13px;height:13px}.map-controls{bottom:20px}.chat-log{padding-left:20px}.log-entry-body{font-size:20px}.composer{max-height:48%}.composer-hint{display:block;font-size:10px}.chat-header{padding-left:20px}.workspace.chat-collapsed .chat-panel{display:none}.user-profile{margin-top:3px}.tab-content{margin-top:25px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
/* Latest requested composer: Amapella's two narrow tool columns around the input. */
.user-panel{scrollbar-width:thin;scrollbar-color:rgba(179,141,151,.5) transparent}
.log-entry-body{font-size:21px}
.log-entry-time{letter-spacing:1px}
.message-copy-btn svg,.message-hide-btn svg{stroke-width:1.7}
.hotspot-title{font-size:13px}
.hotspot-agent{font-size:12px}
.composer{padding:8px 20px 10px;border-top:0;height:var(--composer-height)}
.composer-resize{top:-4px;height:8px;padding:0 20px}
.composer-resize span{width:40px;height:2px;background:var(--text-muted);opacity:.25;border-radius:1px}
.composer-resize:hover span{opacity:.5}
.chat-input-area{display:flex;align-items:stretch;gap:6px;flex:1;min-height:0;padding-top:4px}
.chat-input-tools{display:flex;flex-direction:column;gap:6px;flex:0 0 31px;align-self:stretch;justify-content:flex-start}
.chat-submit-stack{display:flex;flex-direction:column;gap:4px;flex:0 0 31px;align-self:stretch;justify-content:flex-start}
.chat-submit-stack .chat-speech-btn{margin-top:auto}
.composer .chat-textarea{flex:1;min-width:0;min-height:36px;max-height:none;width:100%;border:1px solid var(--border);color:#fff;font:250 21px/1.7 var(--font-sans);padding:6px 14px;outline:none;resize:none;background:var(--bg-input);letter-spacing:0}
.composer .chat-textarea::placeholder{color:var(--text-muted);font-family:var(--font-serif);font-style:italic}
.composer .chat-textarea:focus{border-color:var(--accent-border)}
.initials-avatar{display:grid;place-items:center;background:var(--bg-card);font:italic 30px var(--font-serif);color:var(--accent)}
/* Exact Amapella day notification layout / marquee; a render-time label only. */
.day-divider{width:min(85%,360px);margin:22px auto 18px;padding:4px 0;display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center;pointer-events:none;border:0;background:transparent}
.day-divider-strip{width:min(220px,68%);height:1px;border:0;background:linear-gradient(90deg,transparent,rgba(173,241,210,.25),rgba(150,197,176,.25),rgba(173,241,210,.25),transparent)}
.day-divider-strip-bottom{width:min(180px,56%);opacity:.72}
.day-divider-label{width:100%;overflow:hidden;mask-image:linear-gradient(90deg,transparent 0%,black 12%,black 88%,transparent 100%)}
.day-divider-label-track{display:inline-flex;white-space:nowrap;animation:day-divider-marquee 22s linear infinite;will-change:transform}
.day-divider-label-text{font-family:var(--font-sans);font-weight:400;font-size:12px;text-transform:uppercase;letter-spacing:.28em;color:var(--accent-bright);padding-right:60px}
@keyframes day-divider-marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.day-divider-label-track{animation:none;transform:none;display:block;white-space:normal}.day-divider-label-text{display:none;padding:0;font-size:11px}.day-divider-label-text:first-child{display:block}.day-divider-label{mask-image:none}}
@media(min-width:761px) and (max-width:900px){.hotspot{width:172px;height:74px;grid-template-columns:72px 1fr}.hotspot-picture{width:72px;height:72px}.hotspot-picture svg{width:50px;height:50px}.hotspot-info{padding:6px;gap:4px}.hotspot-title{font-size:10px;letter-spacing:1px}.hotspot-agent{font-size:9px;letter-spacing:1px}.hotspot-notifications svg{width:13px;height:13px}}
@media(max-width:760px){.hotspot-title{font-size:10px;letter-spacing:1px}.hotspot-agent{font-size:9px;letter-spacing:1px}.hotspot-info{gap:3px;padding:6px}}
@media(max-width:370px){.map-viewport{overflow-y:auto;scrollbar-width:thin}.map-stage{height:650px}.hotspot{width:246px;height:92px;grid-template-columns:90px 1fr}.hotspot-picture{width:90px;height:90px}.hotspot-title{font-size:12px;letter-spacing:2px}.hotspot-agent{font-size:11px;letter-spacing:2px}}
