@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&display=swap');
:root{--paper:#eee9dd;--ink:#322a24;--wine:#500d23;--line:#bfb2a0}*{box-sizing:border-box}body,html{margin:0;height:100%;font:14px 'DM Sans',Arial,sans-serif;color:var(--ink);background:var(--paper)}body{overflow:hidden}button,input{font:inherit}button{cursor:pointer;color:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #b9768c;outline-offset:4px}header{height:52px;display:flex;align-items:center;justify-content:space-between;padding:0 3%;border-bottom:1px solid var(--line)}.return{display:flex;gap:12px;align-items:center;font-size:20px}.return span{font-size:10px}.archive-label{text-transform:uppercase;font-size:8px;letter-spacing:1.4px;color:#80705e}#pause{background:none;border:1px solid var(--line);padding:7px 10px;font-size:12px}#pause span{font-size:9px;margin-left:5px}main{height:calc(100dvh - 52px);display:grid;grid-template-rows:70px minmax(0,1fr) 64px}.title-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 3%;border-bottom:1px solid var(--line)}.eyebrow{font-size:8px;letter-spacing:1.5px;text-transform:uppercase;color:#8a7965}h1{font-size:30px;letter-spacing:-1px;font-weight:500;margin:5px 0 0;line-height:1}.title-bar p{font-size:10px;color:#84735e;text-align:right}.stage{position:relative;overflow:hidden;background:#d2c2a6}.scene{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);aspect-ratio:1.5;width:100%;isolation:isolate}.room{width:100%;height:100%;display:block}.brigitte{position:absolute;left:var(--x);top:var(--y);width:22%;height:33%;padding:0;background:none;border:0;transform:translate(-50%,-92%);z-index:5;transition:left var(--walk-duration,0ms) linear,top var(--walk-duration,0ms) linear;outline-offset:-20px!important}.sprite{display:block;width:100%;height:100%;background-image:url('../assets/brigitte-sprites-focused.png');background-repeat:no-repeat;background-size:300% 200%;background-position:var(--frame-x) var(--frame-y);transform:scaleX(var(--facing,1));filter:drop-shadow(0 5px 4px #37251433)}.character-label{position:absolute;left:50%;top:100%;transform:translateX(-50%);white-space:nowrap;text-align:left;padding:8px 11px;background:#f8f3e7e8;border:1px solid #a9967b;font-size:11px;box-shadow:0 5px 15px #34271922;opacity:0;transition:opacity .2s;pointer-events:none}.character-label b{margin-left:20px;font-weight:400}.character-label small{display:block;font-size:8px;color:#82715b;margin-top:4px}.brigitte:hover .character-label,.brigitte:focus-visible .character-label{opacity:1}.brigitte:hover .sprite{filter:drop-shadow(0 0 6px #e6d5ae88) drop-shadow(0 5px 4px #37251433)}.prop{position:absolute;width:24px;height:24px;border:1px solid #a28a6c;background:#f6eededb;border-radius:50%;font-size:18px;line-height:1;z-index:3;transform:translate(-50%,-50%);opacity:.65}.prop:hover,.prop:focus-visible{opacity:1;background:var(--wine);color:var(--paper)}.prop span{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:#f8f3e7;padding:6px 8px;color:var(--ink);white-space:nowrap;font-size:9px;opacity:0;pointer-events:none}.prop:hover span,.prop:focus-visible span{opacity:1}.prop-files{left:20%;top:49%}.prop-computer{left:76%;top:46%}.prop-water{left:86%;top:68%}footer{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 3%;border-top:1px solid #a6957b;background:#e9e0d0;position:relative;z-index:10}footer>span:first-child{font-size:9px;color:#806c53}footer i{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--wine);margin-right:8px}#talk{padding:12px 18px;border:0;background:var(--wine);color:var(--paper);font-size:11px}#talk b{font-size:16px;margin-left:30px;font-weight:400}.fine{font-size:8px;color:#8c7962}.conversation{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);width:min(880px,calc(100% - 40px));max-height:calc(100% - 30px);z-index:20;display:grid;grid-template-columns:115px 1fr;background:#f5f0e6;border:1px solid #9c8569;box-shadow:0 15px 65px #21140766;padding:20px;gap:22px;animation:open .15s steps(2)}.portrait{width:110px;height:145px;background-image:url('../assets/brigitte-sprites-focused.png');background-size:660% 440%;background-position:3% 4%;background-repeat:no-repeat;border:1px solid #c7b89f;background-color:#e0d2ba;align-self:start}.conversation-content{min-width:0;min-height:0;display:flex;flex-direction:column}.conversation-heading{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #d1c4b0;padding-bottom:10px;font-size:15px}.conversation-heading small{font-size:9px;color:#8b775e;margin-left:10px}.conversation-heading button,#observation button{background:none;border:0;font-size:22px;padding:0 5px}.messages{max-height:140px;overflow-y:auto;overscroll-behavior:contain;margin:12px 0;font-size:12px;line-height:1.65;scrollbar-width:thin}.message{margin:0 0 10px}.user-message{color:var(--wine);border-left:2px solid var(--wine);padding-left:10px}.topics{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}.topics button{background:none;border:1px solid #c2b299;padding:6px 10px;font-size:9px}.topics button.active{background:var(--wine);color:var(--paper);border-color:var(--wine)}form{display:flex;border:1px solid #bcaa8e;background:#ede6d9}input{min-width:0;flex:1;border:0;background:transparent;padding:11px;font-size:11px;color:var(--ink)}input:disabled{color:#8f806c;cursor:not-allowed}form button{width:40px;border:0;background:var(--wine);color:white;font-size:20px}form button:disabled{background:#cbbda8;color:#f7f2e7;cursor:not-allowed}.chat-status{font-size:8px;color:#8b7a64;line-height:1.5;margin-top:8px}#observation{position:absolute;left:50%;top:15px;transform:translateX(-50%);max-width:360px;width:calc(100% - 35px);padding:15px 18px;background:#f5f0e6;border:1px solid #a18c70;box-shadow:0 6px 35px #21140733;z-index:15}#observation p{font-size:12px;line-height:1.6;margin:0 20px 0 0}#observation button{position:absolute;right:5px;top:5px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}body.talking .prop{opacity:.25;pointer-events:none}@keyframes open{from{opacity:0;translate:0 5px}to{opacity:1;translate:0 0}}@media(max-width:700px){header{height:46px;padding:0 4%}.archive-label{font-size:7px;max-width:100px;text-align:center;line-height:1.6}.return span{font-size:9px}main{height:calc(100dvh - 46px);grid-template-rows:75px minmax(0,1fr) 74px}.title-bar{padding:8px 4%;gap:15px}h1{font-size:26px}.eyebrow{font-size:7px}.title-bar p{max-width:110px;font-size:8px;line-height:1.6}.scene{width:145%}.brigitte{width:25%;height:37.5%}.prop{width:23px;height:23px}footer{padding:0 4%;gap:12px}footer>span:first-child{font-size:8px;max-width:130px;line-height:1.6}.fine{display:none}#talk{font-size:10px;padding:11px}#talk b{margin-left:10px}.conversation{bottom:12px;width:calc(100% - 24px);padding:15px;grid-template-columns:1fr;gap:0}.portrait{display:none}.messages{max-height:120px;font-size:11px}.conversation-heading{font-size:14px}.chat-status{font-size:7px}.character-label{font-size:9px}.character-label small{font-size:7px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

.sprite{background-size:300% var(--sheet-height,209%);transform:translateX(var(--sprite-offset,0%)) scaleX(var(--facing,1))}.portrait{background-size:660% 440%;background-position:18% 4%}

.prop-files{left:17%;top:60%}.prop-computer{left:88%;top:32%}.prop-water{left:92%;top:55%}

.scene{transform:translate(var(--camera-x,-50%),-50%);transition:transform var(--camera-duration,0ms) linear}

.brigitte.seated .sprite{background-image:url('../assets/brigitte-seated-focused.png');background-size:contain;background-position:center;background-repeat:no-repeat;transform:none;transform-origin:50% 92%}.portrait{background-image:url('../assets/brigitte-seated-focused.png');background-size:300%;background-position:42% 0%}
@media(max-width:700px){.conversation{top:12px;bottom:auto}}

/* Perspective is shared across desktop and mobile; only the camera changes. */
.brigitte{width:var(--size,40.14%);height:calc(var(--size,40.14%) * 1.5);transition:left var(--walk-duration,0ms) linear,top var(--walk-duration,0ms) linear,width var(--walk-duration,0ms) linear,height var(--walk-duration,0ms) linear}
.brigitte::before{content:"";position:absolute;left:28%;bottom:6%;width:44%;height:3.5%;background:#2c1b0e66;border-radius:50%;filter:blur(3px);pointer-events:none;z-index:-1}
.brigitte.seated .sprite{transform:none;transform-origin:50% 92%}

/* One renderer owns position, scale and camera; mirroring preserves the foot anchor. */
.brigitte,.scene{transition:none}
.sprite{transform:scaleX(var(--facing,1)) translateX(var(--sprite-offset,0%))}
.computer-figure{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:4;object-fit:contain}
.brigitte.at-computer .sprite,.brigitte.at-computer::before{visibility:hidden}

.computer-figure{transform-origin:0 0;transform:translate(40%,11.5%) scale(.58)}
/* Transparent sprite margins must not catch clicks intended for room objects. */
.brigitte{pointer-events:none}
.brigitte::after{content:"";position:absolute;left:30%;top:3%;width:45%;height:94%;pointer-events:auto}
.prop{z-index:8}
.message{white-space:pre-line}.message-sources{display:block;border-top:1px solid #d1c4b0;margin-top:10px;padding-top:8px;font-size:10px;color:#7b6049}.message-sources a{text-decoration:underline;text-underline-offset:3px}.message-sources a:hover{color:var(--wine)}
form .brigitte-mic,form .brigitte-mute,form .brigitte-replay{width:33px;flex:0 0 33px;background:none;color:#725f4b;border:0;padding:7px;display:grid;place-items:center}form .brigitte-mic:hover,form .brigitte-mute:hover,form .brigitte-replay:hover{background:#e1d4c0;color:var(--wine)}form .brigitte-mic[aria-pressed=true]{background:var(--wine);color:#fff}form .brigitte-mute[aria-pressed=true]{color:#a3937f}form svg{display:block;width:18px;height:18px}form .brigitte-mic:disabled{background:none;color:#b5a791;cursor:default}#send{flex-shrink:0}.voice-status{font-size:9px;color:#6c5843;line-height:1.6;margin-top:5px;min-height:0}.voice-status:empty{display:none}.speech-notice{font-size:7px;color:#8b7a64;margin-top:4px}.speaking-wave{display:inline-flex;gap:3px;height:14px;margin-left:12px;align-items:center}.speaking-wave i{width:2px;height:5px;background:var(--wine);animation:speak-wave .55s steps(2) infinite alternate}.speaking-wave i:nth-child(2){animation-delay:-.15s}.speaking-wave i:nth-child(3){animation-delay:-.3s}.speaking-wave i:nth-child(4){animation-delay:-.4s}.speaking .portrait{box-shadow:0 0 0 2px #a2766e;animation:speak-portrait .8s steps(2) infinite alternate}@keyframes speak-wave{to{height:13px}}@keyframes speak-portrait{to{box-shadow:0 0 0 4px #a2766e44}}
@media(max-width:700px){form .brigitte-mic,form .brigitte-mute,form .brigitte-replay{width:29px;flex-basis:29px;padding:6px}#send{width:33px}input{padding:10px 7px;font-size:10px}.message-sources{font-size:9px}.conversation{max-height:calc(100% - 24px)}.messages{flex:1 1 auto;min-height:45px}.speech-notice{font-size:7px}}
/* Station changes affect opacity only. Each pose retains its own registered scale. */
.brigitte,.computer-figure{transition:none}
.brigitte.is-changing::after{pointer-events:none}
.scene{transition:transform 400ms ease-in-out}
@media(prefers-reduced-motion:reduce){.scene{transition:none}}

/* During conversation Brigitte raises her gaze toward the visitor. */
.brigitte.chat-facing .sprite{background-image:url('../assets/brigitte-chat-facing.png')}
.portrait{background-image:url('../assets/brigitte-chat-facing.png');background-size:300%;background-position:42% 0%}
