* { box-sizing:border-box; }
html,body { margin:0; width:100%; min-height:100%; background:#443a2d; }
body { color:#3f482f; font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif; overflow:hidden; }
button,input { font:inherit; }
button { cursor:pointer; }
[hidden] { display:none!important; }
.viewport { position:relative; width:100vw; height:100vh; height:100svh; overflow:hidden; }
.world { position:absolute; width:max(100vw,177.683316vh); aspect-ratio:1672/941; right:0; top:50%; transform:translateY(-50%); container-type:inline-size; }
.scene-camera { position:absolute; inset:0; transform-origin:36% 67%; transition:transform 850ms cubic-bezier(.2,.65,.2,1),filter 600ms; }
.room-svg { display:block; width:100%; height:100%; }
.person-male { transform-origin:605px 583px; animation:male-idle 4s ease-in-out infinite; }
.person-female { transform-origin:920px 593px; animation:female-idle 4.6s ease-in-out infinite; }
.assistant-inspect { transform-origin:911px 557px; animation:inspect-memory 3.4s ease-in-out infinite; }
.local-driver { transform-origin:0px 80px; animation:tool-torque 1.7s ease-in-out infinite; }
.driver-ribs { animation:tool-ribs 1.7s linear infinite; }
.terminal { position:absolute; left:62.2%; top:11%; width:31.3%; height:76.1%; padding:3cqw 3.2cqw 2cqw; display:flex; flex-direction:column; color:#303c30; transition:opacity 450ms,filter 450ms; }
.terminal .system-heading { margin:0 0 .8cqw; font-weight:600; line-height:1.25; }
.system-monogram { display:block; margin-bottom:.65cqw; color:#637459; font:700 .9cqw/1.2 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; letter-spacing:.18em; }
.system-heading-copy { display:block; color:#2f412f; font-size:1.9cqw; font-weight:600; letter-spacing:.02em; }
.service-promise { margin:0 0 2cqw; color:#85816b; font-size:.91cqw; line-height:1.65; letter-spacing:.025em; }
.field { margin-bottom:1.08cqw; }
.field label { display:flex; align-items:center; justify-content:space-between; margin-bottom:.4cqw; font-size:.81cqw; font-weight:500; line-height:1.4; color:#505b47; }
.field label small { font-size:.66cqw; color:#92977f; font-weight:400; }
.field input { display:block; width:100%; height:2.75cqw; min-width:0; border:1px solid #cdd0ba; border-radius:3px; padding:0 .85cqw; background:#fffdf5cc; color:#344530; outline:none; font-size:.88cqw; transition:border-color .18s,box-shadow .18s; }
.field input::placeholder { color:#a2a58f; font-weight:400; }
.field input:focus { border-color:#7d9370; box-shadow:0 0 0 3px #6f8c5620; background:#fffef7; }
.field input[aria-invalid=true] { border-color:#b57755; }
.password-field { position:relative; }
.password-field input { padding-right:2.9cqw; }
#password-toggle { position:absolute; right:1px; top:1px; bottom:1px; width:2.65cqw; display:grid; place-items:center; padding:0; border:0; background:transparent; color:#90977c; }
#password-toggle svg { width:1.15cqw; height:1.15cqw; fill:none; stroke:currentColor; stroke-width:1.5; }
#caps-hint { position:absolute; font-size:.65cqw; background:#fcf2da; color:#a26932; z-index:2; }
.captcha-row { display:flex; gap:.6cqw; }
.captcha-row input { flex:1 1 0; }
#captcha-refresh { flex:0 0 6.1cqw; padding:0; border:1px solid #c9ceb6; border-radius:3px; color:#596d48; background:repeating-linear-gradient(25deg,transparent 0 15px,#b4b99025 15px 16px),#eeefdc; }
#captcha-value { font:bold italic 1.35cqw/1 monospace; letter-spacing:.14em; }
#login-button { width:100%; height:2.85cqw; margin-top:.4cqw; padding:0 1cqw; display:flex; justify-content:center; align-items:center; gap:.8cqw; border:1px solid #435d3a; border-radius:3px; background:#4d6741; color:#fffdf1; box-shadow:0 2px 0 #354b2d; font-size:.92cqw; font-weight:600; transition:background .18s; }
#login-button:hover { background:#405c35; }
#login-button:active { transform:translateY(1px); box-shadow:0 1px 0 #354b2d; }
#login-button:disabled { opacity:.7; cursor:wait; }
#feedback { margin:.5cqw 0 0; min-height:1.05cqw; font-size:.7cqw; line-height:1.5; color:#a55d3f; }
#feedback.success { color:#607c45; }
.terminal-note { margin:auto 0 0; padding-top:1cqw; border-top:1px solid #cbd0b980; text-align:center; color:#9a9c86; font-size:.65cqw; line-height:1.5; letter-spacing:.04em; }
.computer-entry { position:absolute; left:27.8%; top:61.1%; width:17.4%; height:11.3%; transition:opacity 200ms; }
#computer-hotspot { position:absolute; inset:0; width:100%; height:100%; padding:0; border:0; background:transparent; transform:perspective(400px) rotateX(5deg); }
.corner { position:absolute; width:16px; height:16px; border-color:#ffe7a0; border-style:solid; opacity:0; transition:opacity .2s; filter:drop-shadow(0 0 5px #e5c37980); }
.c1 { left:0; top:0; border-width:2px 0 0 2px; }.c2 { right:0; top:0; border-width:2px 2px 0 0; }.c3 { left:0; bottom:0; border-width:0 0 2px 2px; }.c4 { right:0; bottom:0; border-width:0 2px 2px 0; }
#computer-hotspot:hover .corner,#computer-hotspot:focus-visible .corner,.computer-entry.is-inviting .corner { opacity:1; }
#computer-hotspot:hover { background:#d4e8a611; }
#computer-hotspot:focus-visible { outline:0; }
.help-bubble { position:absolute; z-index:4; left:45.2%; top:26.5%; margin:0; padding:.85cqw 1.05cqw; border:2px solid #686747; box-shadow:4px 4px 0 #514c3250; background:#fff8de; color:#515537; font-size:.91cqw; line-height:1.55; opacity:0; visibility:hidden; transform:translateY(7px) scale(.97); transform-origin:15% 100%; transition:opacity .2s,transform .25s,visibility .2s; pointer-events:none; white-space:nowrap; }
.help-bubble::after { content:''; position:absolute; left:12%; bottom:-8px; width:12px; height:12px; background:#fff8de; transform:rotate(45deg); border-right:2px solid #686747; border-bottom:2px solid #686747; }
.help-bubble small { display:block; margin-top:3px; color:#969372; font-size:.63cqw; }
.computer-entry:hover + .help-bubble,.computer-entry:focus-within + .help-bubble,.computer-entry.is-inviting + .help-bubble { opacity:1; visibility:visible; transform:none; }
.game-mode .help-bubble { opacity:0; visibility:hidden; }
.scene-controls { position:absolute; bottom:2.3%; right:3%; display:flex; gap:7px; opacity:.7; }
.scene-controls button { width:28px; height:26px; padding:0; border:1px solid #e7d1a45c; border-radius:2px; color:#f5e4bb; background:#413e2d80; font-size:13px; }
.scene-controls:hover { opacity:1; }
.memory-game { position:absolute; z-index:10; left:13.7%; top:44%; width:47%; background:#eee4c9; border:2px solid #697a55; box-shadow:0 18px 60px #17221950,5px 5px 0 #42533a60; opacity:0; transform:translateY(14px) scale(.96); transition:transform .4s,opacity .4s; }
.memory-game.is-visible { opacity:1; transform:none; }
.task-top { display:flex; justify-content:space-between; align-items:center; padding:.9cqw 1.2cqw; background:#f6edda; }
.task-top > div { display:flex; align-items:center; gap:.8cqw; }
#task-counter { font: .62cqw monospace; color:#a0895b; }
.task-top h2 { margin:0; font-size:1cqw; font-weight:600; }
#task-close { width:1.6cqw; height:1.6cqw; border:0; background:transparent; color:#6e7255; padding:0; font-size:1.4cqw; line-height:1; }
.board-stage { position:relative; aspect-ratio:308/141; overflow:hidden; background:#344b37; }
.board-closeup { position:absolute; inset:0; width:100%; height:100%; image-rendering:pixelated; }
.memory-slot { position:absolute; left:39%; top:35%; width:23%; height:16%; padding:0; border:2px dashed #e5d67d; background:#f0e3a822; color:#f4efc5; opacity:.35; font-size:.63cqw; transform:rotate(-.5deg); transition:opacity .2s,box-shadow .2s; }
.memory-slot:disabled { cursor:default; }.memory-slot:not(:disabled) { opacity:1; box-shadow:0 0 0 4px #e5d67d33; }.memory-slot.is-filled { opacity:0; }
.ram-card { position:absolute; left:12%; top:77%; width:23%; height:15%; padding:0; border:2px solid #9cb66b; border-radius:0; background:#517545; box-shadow:2px 4px 0 #1f3322; transform:rotate(-7deg); transition:left .65s cubic-bezier(.2,.7,.2,1),top .65s cubic-bezier(.2,.7,.2,1),transform .65s,box-shadow .2s; }
.ram-card:hover,.ram-card.selected { outline:2px solid #fff0a5; outline-offset:3px; }.ram-card.selected { transform:rotate(0); }.ram-card.installed { left:39%; top:35%; transform:rotate(-.5deg); box-shadow:0 2px 0 #263d28; outline:none; }
.ram-chips { position:absolute; inset:15% 7% 24%; display:flex; justify-content:space-between; gap:8%; }.ram-chips i { display:block; flex:1; border:1px solid #829777; background:#233c2d; }.gold-pins { position:absolute; bottom:0; left:8%; right:8%; height:14%; background:repeating-linear-gradient(90deg,#dbba5c 0 4px,#527047 4px 6px); }
.latch { position:absolute; top:35%; width:5%; height:16%; padding:0; border:1px solid #eddaaa; color:#fff3c8; background:#5e7250; font:bold 1.4cqw/1 monospace; }.latch-left { left:33%; }.latch-right { left:63%; }.latch.locked { color:#243a29; background:#ccd6a7; border-color:#bdc99d; }.latch:disabled { cursor:default; }
.task-bottom { display:flex; align-items:center; justify-content:space-between; gap:1cqw; padding:.85cqw 1.2cqw; background:#f6edda; }.task-bottom p { margin:0; font-size:.76cqw; color:#767350; }.task-bottom button { border:1px solid #8c7449; background:#e4b567; padding:.55cqw .9cqw; color:#504324; box-shadow:2px 2px 0 #b4945e; font-size:.72cqw; white-space:nowrap; }.task-bottom button:disabled { background:#ded9bf; color:#8b8a6a; border-color:#bbb998; box-shadow:none; cursor:default; }
.boot-check { position:absolute; inset:20% 19%; display:flex; flex-direction:column; align-items:center; justify-content:center; background:#354e3beF; border:1px solid #b5c492; box-shadow:5px 5px 0 #1d332766; color:#e8eed0; }.boot-symbol { font:3cqw/1 monospace; color:#c9dfa5; }.boot-check strong { margin-top:.8cqw; font-size:1.1cqw; font-weight:500; }
.game-mode .scene-camera { transform:scale(1.23) translate(3%,-4.5%); filter:brightness(.81); }.game-mode .terminal,.game-mode .computer-entry { opacity:0; pointer-events:none; }.game-mode .scene-controls { opacity:.4; }
.motion-paused .person,.motion-paused .person *,.page-hidden .person,.page-hidden .person *,.motion-paused .ambient-motion,.page-hidden .ambient-motion { animation-play-state:paused!important; }
.celebrate .person-female { animation:cheer .55s ease-in-out 3 alternate; }
.hanging-vines { pointer-events:none; }
.hanging-vine { transform-origin:0px 0px; animation:vine-sway 5.8s ease-in-out infinite; will-change:transform; }
.vine-left-top { animation-duration:4.8s; animation-delay:-2s; }.vine-left-shelf { animation-duration:5.5s; animation-delay:-1s; }
.foreground-plant { transform-origin:0px 0px; animation:plant-sway 6s ease-in-out infinite; }
@keyframes plant-sway { 0%,100% { transform:rotate(-3deg); } 50% { transform:rotate(3.5deg); } }
.vine-short { animation-name:vine-sway-secondary; animation-duration:4.7s; animation-delay:-1.6s; }
@keyframes vine-sway { 0%,100% { transform:rotate(-3deg); } 50% { transform:rotate(3deg); } }
@keyframes vine-sway-secondary { 0%,100% { transform:rotate(2.5deg); } 50% { transform:rotate(-3deg); } }
.drifting-leaf { opacity:0; pointer-events:none; animation:leaf-drift 12s linear infinite; }
.leaf-two { animation-delay:-5s; animation-duration:15s; }.leaf-three { animation-delay:-8s; animation-duration:18s; }.leaf-four { animation-delay:-3s; animation-duration:13s; }
@keyframes leaf-drift { 0% { opacity:0; transform:translate(0,0) rotate(-25deg); } 12% { opacity:.68; } 35% { transform:translate(75px,105px) rotate(50deg); } 60% { transform:translate(28px,215px) rotate(-35deg); opacity:.68; } 86% { opacity:.35; transform:translate(120px,305px) rotate(65deg); } 100% { opacity:0; transform:translate(155px,365px) rotate(100deg); } }
@keyframes male-idle { 0%,100% { transform:translateY(0) scaleY(1); } 50% { transform:translateY(-2px) scaleY(1.009); } }
@keyframes female-idle { 0%,100% { transform:translateY(0) rotate(-.2deg); } 50% { transform:translateY(-3px) rotate(.25deg); } }
@keyframes inspect-memory { 0%,100% { transform:rotate(-.4deg); } 50% { transform:translateY(-1.5px) rotate(.5deg); } }
@keyframes tool-torque { 0%,100% { transform:rotate(-1.1deg); } 50% { transform:rotate(1.6deg); } }
@keyframes tool-ribs { from { transform:translateX(0); } to { transform:translateX(7px); } }
@keyframes cheer { from { transform:translateY(0) rotate(-.5deg); } to { transform:translateY(-3px) rotate(.5deg); } }
button:focus-visible { outline:2px solid #ffdc91; outline-offset:3px; }
@media (max-width:800px) { body { overflow:auto; }.viewport { height:auto; min-height:100svh; overflow:visible; padding-bottom:510px; }.world { position:relative; width:100%; top:auto; left:auto; transform:none; }.terminal { left:50%; top:calc(100% + 18px); transform:translateX(-50%); width:min(340px,90vw); height:auto; padding:24px; background:#fff7df; box-shadow:0 10px 30px #211f1c55; }.terminal .system-heading { margin-bottom:10px; }.system-monogram { font-size:12px; margin-bottom:9px; }.system-heading-copy { font-size:26px; }.service-promise { font-size:13px; margin:0 0 20px; letter-spacing:.12em; }.field { margin-bottom:12px; }.field label { font-size:12px; margin-bottom:5px; }.field label small { font-size:9px; }.field input { height:44px; font-size:16px; padding:0 10px; }.field input::placeholder { font-size:12px; }#password-toggle { width:40px; }#password-toggle svg { width:19px; height:19px; }.captcha-row { gap:8px; }#captcha-refresh { flex-basis:92px; }#captcha-value { font-size:21px; }#login-button { height:38px; font-size:14px; gap:12px; margin-top:15px; }#feedback { font-size:11px; margin-top:8px; min-height:16px; }.terminal-note { font-size:10px; margin-top:20px; padding-top:14px; }.scene-controls { bottom:6px; right:9px; }.help-bubble { font-size:10px; min-width:145px; padding:7px; }.help-bubble small { font-size:9px; }.memory-game { width:92%; left:4%; top:30%; }.task-top h2 { font-size:11px; }#task-counter { font-size:8px; }#task-close { width:22px; height:22px; font-size:20px; }.task-bottom p { font-size:9px; }.task-bottom button { font-size:9px; padding:6px; }.task-top,.task-bottom { padding:7px; }.memory-slot { font-size:8px; }.latch { font-size:15px; }.boot-symbol { font-size:25px; }.boot-check strong { font-size:12px; }.game-mode .terminal { visibility:hidden; } }
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { animation:none!important; transition:none!important; }.game-mode .scene-camera { transform:none; }.drifting-leaf { display:none; } }

/* Production-only controls. The scene above matches the approved prototype. */
#captcha-refresh { height:2.75cqw; overflow:hidden; }
.captcha-image { display:block; width:100%; height:100%; object-fit:contain; }
.legacy-browser-warning { display:none; position:fixed; top:16px; left:50%; transform:translateX(-50%); width:calc(100% - 32px); max-width:760px; z-index:100; padding:14px 18px; background:#fff5d9; color:#744b20; border:1px solid #caaa65; font-size:14px; line-height:1.6; }
.legacy-browser-warning strong { display:block; }
#feedback { overflow-wrap:anywhere; }
@media (max-width:800px) { #captcha-refresh { height:44px; } }
/* Preserve a usable login and the existing IE confirmation on older engines. */
.login-basic body { overflow:auto; background:#edf0e3; color:#344530; }
.login-basic .scene-camera,.login-basic .computer-entry,.login-basic .help-bubble,.login-basic .scene-controls,.login-basic .memory-game { display:none!important; }
.login-basic .viewport { display:block; width:auto; height:auto; min-height:0; overflow:visible; padding:32px 16px; }
.login-basic .world { position:static; width:auto; max-width:440px; margin:0 auto; height:auto; transform:none; }
.login-basic .terminal { position:static; display:block; width:auto; height:auto; padding:28px; background:#fffaf0; transform:none; }
.login-basic .system-heading { margin:0 0 14px; }.login-basic .system-monogram { font-size:14px; margin-bottom:10px; }.login-basic .system-heading-copy { font-size:26px; }
.login-basic .service-promise { font-size:14px; margin:0 0 24px; }.login-basic .field { margin-bottom:16px; }.login-basic .field label { display:block; font-size:14px; margin-bottom:6px; }.login-basic .field label small { float:right; font-size:12px; }
.login-basic .field input { display:block; width:100%; height:42px; font-size:16px; padding:0 10px; }.login-basic .password-field input { padding-right:10px; }.login-basic #password-toggle { display:none; }
.login-basic .captcha-row { display:block; overflow:hidden; }.login-basic .captcha-row input { float:left; width:60%; }.login-basic #captcha-refresh { float:right; width:35%; height:42px; }
.login-basic #login-button { display:block; height:44px; margin-top:8px; font-size:16px; }.login-basic #login-button span + span { margin-left:12px; }
.login-basic #feedback { font-size:13px; margin-top:8px; min-height:20px; }.login-basic .terminal-note { font-size:12px; margin-top:20px; padding-top:14px; }
.login-basic .legacy-browser-warning { position:static; transform:none; width:auto; max-width:720px; margin:20px auto 0; padding:14px; }
