/* Night archive motion layer: slow, tactile, and quiet. */
:root{--pointer-x:50vw;--pointer-y:38vh;--parallax-x:0px;--parallax-y:0px;--ease-archive:cubic-bezier(.16,1,.3,1)}
.ambient{background-position:calc(50% + var(--parallax-x)) calc(50% + var(--parallax-y)),center!important;animation:roomDrift 48s var(--ease-archive) infinite alternate}
.ambient:before{animation:projectorSweep 28s var(--ease-archive) infinite alternate!important;opacity:.7}
.grain{animation:grainFlicker 9s steps(2,end) infinite}
.dust{animation:dust 46s linear infinite!important}
.torch{width:460px;height:320px;opacity:.58;mix-blend-mode:screen;transition:none;filter:blur(17px)}
.main-stage{transform:translate3d(calc(var(--parallax-x) * .22),calc(var(--parallax-y) * .22),0);transition:transform 1.2s var(--ease-archive)}
.museum-rail{transform:translate3d(calc(var(--parallax-x) * -.12),calc(var(--parallax-y) * -.12),0);transition:transform 1.2s var(--ease-archive),background .6s ease}
.intro-rule{transform-origin:left;animation:ruleDevelop 1.1s var(--ease-archive) both .15s}
.intro .eyebrow{animation:develop 700ms var(--ease-archive) both .35s}
.intro h2{animation:develop 820ms var(--ease-archive) both .5s;filter:blur(5px)}
.intro-copy{animation:develop 760ms var(--ease-archive) both .78s;letter-spacing:.05em}
.new-session,.send-btn,.quiet-btn,.steam-link,.session-menu-btn{position:relative;overflow:hidden;transition:transform 220ms var(--ease-archive),border-color 220ms ease,background 220ms ease,box-shadow 220ms ease}
.new-session:hover,.send-btn:hover,.quiet-btn:hover,.steam-link:hover,.session-menu-btn:hover{transform:translate3d(var(--magnet-x,0px),var(--magnet-y,0px),0)}
.new-session:after,.send-btn:after,.quiet-btn:after,.steam-link:after{content:"";position:absolute;inset:-30% -70%;background:linear-gradient(105deg,transparent 42%,rgba(241,217,130,.45) 50%,transparent 58%);transform:translateX(-80%);transition:transform 850ms var(--ease-archive);pointer-events:none}
.new-session:hover:after,.send-btn:hover:after,.quiet-btn:hover:after,.steam-link:hover:after{transform:translateX(80%)}
.new-session.is-pressed,.send-btn.is-pressed{transform:translate3d(0,2px,0) scale(.985);box-shadow:inset 0 0 0 1px rgba(241,217,130,.5),0 2px 0 rgba(0,0,0,.4)}
.new-session.is-opening{animation:drawerOpen 760ms var(--ease-archive) both}
.composer-inner{position:relative;transition:border-color 320ms ease,box-shadow 320ms ease,transform 320ms var(--ease-archive)}
.composer:focus-within .composer-inner{border-color:rgba(241,217,130,.55);box-shadow:0 0 0 1px rgba(241,217,130,.13),0 -8px 34px rgba(0,0,0,.34)}
.composer:focus-within .composer-inner:before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,var(--yellow),transparent);animation:scanline 2.8s linear infinite;opacity:.55}
.status-led{animation:standby 3.8s ease-in-out infinite}
.status-led.sweeping{animation:ledSweep 900ms var(--ease-archive) both}
.assistant-block{animation:sedimentBlock 540ms var(--ease-archive) both}
.assistant-block .answer{animation:sediment 420ms var(--ease-archive) both}
.assistant-block .answer > *{animation:sedimentLine 360ms var(--ease-archive) both;animation-delay:calc(var(--line-index, 0) * 90ms)}
.assistant-block .status-line{animation:develop 400ms var(--ease-archive) both}
.session-row{animation:archiveCard 560ms var(--ease-archive) both;animation-delay:calc(var(--row-index, 0) * 65ms)}
.session-row .session{transition:transform 220ms var(--ease-archive),background 220ms ease,box-shadow 220ms ease,opacity 300ms ease}
.session-row:hover .session{transform:translateX(3px)}
@keyframes roomDrift{0%{background-position:calc(50% + var(--parallax-x)) calc(50% + var(--parallax-y)),center}100%{background-position:calc(50% + 7px + var(--parallax-x)) calc(50% - 5px + var(--parallax-y)),center}}
@keyframes projectorSweep{0%{transform:translate3d(-2%,1%,0);opacity:.35}100%{transform:translate3d(3%,-1%,0);opacity:.7}}
@keyframes grainFlicker{50%{opacity:.07}100%{opacity:.045}}
@keyframes ruleDevelop{from{transform:scaleX(0);opacity:0}to{transform:scaleX(1);opacity:1}}
@keyframes develop{from{opacity:0;filter:blur(6px);transform:translateY(11px);letter-spacing:.09em}to{opacity:1;filter:blur(0);transform:none;letter-spacing:normal}}
@keyframes drawerOpen{0%{transform:translateY(2px) scaleX(.985);filter:brightness(.85)}45%{transform:translateY(-1px) scaleX(1.01)}100%{transform:none;filter:none}}
@keyframes scanline{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
@keyframes standby{0%,100%{opacity:.55;box-shadow:0 0 5px rgba(157,164,122,.3)}50%{opacity:1;box-shadow:0 0 13px rgba(157,164,122,.75)}}
@keyframes ledSweep{0%{clip-path:inset(0 100% 0 0);opacity:1}100%{clip-path:inset(0 0 0 0);opacity:.7}}
@keyframes sedimentBlock{from{opacity:.78;filter:blur(3px);transform:translateY(5px)}to{opacity:1;filter:none;transform:none}}
@keyframes sediment{from{opacity:.72;filter:blur(2px)}to{opacity:1;filter:none}}
@keyframes sedimentLine{from{opacity:.82;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes archiveCard{from{opacity:0;transform:translate(-10px,14px) rotate(-1deg)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.ambient,.ambient:before,.grain,.dust,.intro-rule,.intro .eyebrow,.intro h2,.intro-copy,.new-session.is-opening,.assistant-block,.assistant-block .answer,.assistant-block .answer>*,.status-line,.session-row{animation:none!important}.main-stage,.museum-rail,.torch{transition:none!important}.composer:focus-within .composer-inner:before{display:none}}

/* Living archive room: environmental motion stays quiet until a retrieval begins. */
#dustCanvas{position:absolute;inset:0;width:100%;height:100%;opacity:.5;mix-blend-mode:screen}
.archive-room{position:absolute;inset:0;overflow:hidden;opacity:.72;transform:translate3d(calc(var(--parallax-x) * .3),calc(var(--parallax-y) * .3),0);transition:opacity 1.5s ease,filter 1.5s ease}
.room-wall{position:absolute;inset:15% 5% 0;background:linear-gradient(90deg,transparent,rgba(207,176,104,.08) 45%,transparent 68%);transform:perspective(800px) rotateX(58deg);transform-origin:bottom;opacity:.38}
.room-cabinet{position:absolute;bottom:13%;width:22vw;height:42vh;border:1px solid rgba(205,174,107,.09);background:repeating-linear-gradient(0deg,rgba(10,11,11,.36) 0 7px,rgba(205,174,107,.05) 8px 9px);box-shadow:inset 0 0 35px rgba(0,0,0,.7);display:grid;align-content:space-around;padding:10px;transition:filter 1.2s ease,opacity 1.2s ease}
.cabinet-left{left:7%;transform:perspective(900px) rotateY(12deg);}.cabinet-right{right:5%;transform:perspective(900px) rotateY(-12deg)}
.room-cabinet i{font:8px 'DM Mono';font-style:normal;color:rgba(232,222,199,.28);letter-spacing:.14em;border-bottom:1px solid rgba(232,222,199,.12);padding-bottom:5px}.room-desk{position:absolute;left:20%;right:18%;bottom:4%;height:9vh;background:linear-gradient(180deg,rgba(95,70,42,.3),rgba(16,13,11,.72));transform:perspective(700px) rotateX(55deg);transform-origin:bottom;box-shadow:0 -8px 28px rgba(0,0,0,.3)}
.projection{position:absolute;right:23%;top:19%;width:21vw;min-width:190px;height:13vh;border:1px solid rgba(224,199,128,.15);background:radial-gradient(ellipse,rgba(235,211,145,.11),transparent 68%);display:grid;place-items:center;color:rgba(235,211,145,.35);font:9px 'DM Mono';letter-spacing:.16em;opacity:.7;animation:projectionFlicker 24s steps(1,end) infinite}
.search-beam{position:absolute;top:0;bottom:0;left:50%;width:2px;background:linear-gradient(180deg,transparent,rgba(241,217,130,.65),transparent);box-shadow:0 0 30px 8px rgba(241,217,130,.13);opacity:0;transform:translateX(-50%) scaleY(.2);transform-origin:center;pointer-events:none}
.ambient-status{position:absolute;left:38px;bottom:26px;display:flex;gap:8px;align-items:center;color:rgba(232,222,199,.38);font:9px 'DM Mono';letter-spacing:.12em;transition:color .8s ease}.ambient-led{width:5px;height:5px;border-radius:50%;background:#8e956e;box-shadow:0 0 9px #8e956e}
.ambient.listening .archive-room{filter:saturate(.75);opacity:.48}.ambient.listening .ambient-status{color:rgba(232,222,199,.66)}.ambient.listening .ambient-led{background:var(--yellow);box-shadow:0 0 12px var(--yellow)}
.ambient.retrieving .search-beam{animation:searchSweep 2.4s cubic-bezier(.2,.8,.3,1) both}.ambient.retrieving .room-cabinet{filter:brightness(1.7)}.ambient.retrieving .ambient-status{color:var(--yellow)}
.ambient.presenting .archive-room{opacity:.3}.ambient.presenting .projection{opacity:1;color:rgba(241,217,130,.78);border-color:rgba(241,217,130,.38)}
.ambient.uncertain .projection{animation:uncertainFlicker 2.8s ease-in-out infinite;color:rgba(214,153,119,.55)}
@keyframes searchSweep{0%{opacity:0;transform:translateX(-50%) scaleY(.1)}18%{opacity:1}100%{opacity:0;transform:translateX(-50%) scaleY(1)}}@keyframes projectionFlicker{0%,95%,100%{opacity:.68}96%{opacity:.18}97%{opacity:.82}}@keyframes uncertainFlicker{0%,100%{opacity:.35}50%{opacity:.05}}
@media(max-width:800px){.room-cabinet{width:31vw;height:34vh}.projection{right:10%;width:37vw}.ambient-status{left:18px;bottom:18px}}
@media(prefers-reduced-motion:reduce){#dustCanvas,.archive-room,.projection,.search-beam{animation:none!important;transition:none!important}.search-beam{display:none}}
