/* Terminal sheet stays inside the rotated game coordinate system. */
.terminal-scrim:not([hidden]){position:fixed;inset:0;z-index:90;background:#102b264d;backdrop-filter:blur(2px)}
body .terminal-dialog[open],body.playing-landscape .terminal-dialog[open]{position:fixed;z-index:91;left:50%;top:50%;bottom:auto;right:auto;transform:translate(-50%,-50%);margin:0;width:min(420px,calc(var(--game-width,100vw) - 24px));max-width:calc(var(--game-width,100vw) - 24px);max-height:calc(var(--game-height,100dvh) - 24px);box-sizing:border-box;overflow:auto;padding:16px 18px;border:1px solid #d0ded3;border-radius:20px;background:#f8fbf6;color:#233e34;box-shadow:0 12px 48px #0a28283b}
.terminal-dialog .modal-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px}
.terminal-dialog .modal-title h2{font-size:17px;margin:0;line-height:1.4}
.terminal-dialog .terminal-close{width:36px;height:36px;min-height:36px;padding:7px;border-radius:50%;background:#edf2eb;border:0}
.terminal-dialog .terminal-device,.terminal-dialog.ancient-terminal .terminal-device{padding:0;background:transparent;border:0;box-shadow:none}
.terminal-dialog .terminal-screen,.terminal-dialog.ancient-terminal .terminal-screen{display:flex;align-items:center;justify-content:center;gap:10px;min-height:54px;padding:10px 12px;border:1px solid #dce6db;border-radius:12px;background:#edf4e9;color:#335e48;box-sizing:border-box}
.terminal-dialog .terminal-screen svg{width:22px;height:22px;flex-shrink:0}
.terminal-dialog .terminal-status{font-size:18px;line-height:1.4}
.terminal-dialog .terminal-lamps{display:flex;gap:3px;margin:9px 0;height:3px}
.terminal-dialog .terminal-lamps span{flex:1;background:#dce6da;border-radius:3px;box-shadow:none}
.terminal-dialog .terminal-lamps span.lit{background:#448263;box-shadow:none}
.terminal-dialog .terminal-start{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:44px;min-height:44px;border:0;border-radius:12px;background:#34694e;color:#fff;font-size:16px;box-shadow:none;transform:none}
.terminal-dialog .terminal-start svg{width:20px;height:20px}
.terminal-dialog button:disabled{background:#e3e9e0;color:#788775;opacity:1;cursor:default}
.terminal-dialog .terminal-detail{font-size:12px;line-height:1.5;min-height:0;margin:9px 0 0;color:#6b7969;text-align:center}
.terminal-dialog .revive-puzzle{display:grid;grid-template-columns:1fr auto;column-gap:12px;margin-top:14px;padding-top:12px;border-top:1px solid #dce5d8;font-size:12px;line-height:1.6}
.terminal-dialog .revive-puzzle h3{font-size:14px;line-height:1.5;margin:0}
.terminal-dialog .revive-supply{grid-column:1;margin:4px 0 0;color:#73806d;overflow-wrap:anywhere}
.terminal-dialog .puzzle-open{grid-column:2;grid-row:1/3;align-self:center;margin:0;padding:9px 12px;min-height:40px;border:1px solid #c6d6bd;border-radius:10px;background:#edf4e6;color:#426536;font-size:13px}
.terminal-dialog .revive-puzzle form{grid-column:1/-1;margin-top:8px}
.terminal-dialog [hidden]{display:none!important}
.terminal-dialog .revive-puzzle form button{width:100%;border:0;border-radius:10px;background:#34694e;color:white}
.terminal-dialog .revive-puzzle input{box-sizing:border-box;font-size:16px}
body.terminal-open #joystick,body.terminal-open #portrait-speed,body.terminal-open #portrait-stamina,body.terminal-open #portrait-exposure{visibility:hidden!important;pointer-events:none!important}
@media (orientation:portrait){body:not(.rotated-game) .terminal-dialog[open]{top:auto;bottom:calc(10px + env(safe-area-inset-bottom));transform:translateX(-50%);width:calc(100vw - 20px);max-width:420px;max-height:65dvh;padding:12px 16px 16px;border-radius:22px}body:not(.rotated-game) .terminal-dialog::before{content:'';display:block;width:32px;height:4px;margin:0 auto 10px;background:#cbd7c7;border-radius:4px}}
/* Dedicated revival terminal: blue technology panel; alarm UI remains separate. */
body .terminal-dialog.revive-terminal[open]{background:#111d2c;color:#eef6ff;border:1px solid #3b5872;padding:22px 24px;box-shadow:0 20px 60px #07132166}
.revive-terminal .modal-title{position:absolute;right:16px;top:16px;margin:0}
.revive-terminal .modal-title h2{display:none}
.revive-terminal .terminal-close{background:#213143;color:#d3e5f3}
.revive-terminal .revive-hero{text-align:center}
.revive-terminal .revive-eyebrow{display:block;text-align:left;font-size:10px;letter-spacing:2px;color:#78adcc;margin:4px 32px 22px 0}
.revive-terminal .revive-card-symbol{width:104px;margin:0 auto 14px;transform:rotate(-8deg);filter:drop-shadow(0 0 14px #ef526b26)}
.revive-terminal .revive-hero h3{font-size:26px;margin:0 0 8px}
.revive-terminal .revive-hero p{font-size:12px;color:#91a6bc;margin:0 0 22px}
.revive-terminal .revive-puzzle{display:block;border-top:1px solid #2f4052;margin:0;padding-top:16px;color:#e9f4ff}
.revive-terminal .revive-puzzle>h3{display:none}
.revive-terminal .revive-supply{color:#91a6bc;margin:0 0 18px;font-size:12px}
.revive-terminal .puzzle-open,.revive-terminal .revive-puzzle form button{width:100%;min-height:48px;background:#89dcf3;color:#102d42;border:0;font-size:15px;font-weight:700;border-radius:11px;cursor:pointer}
.revive-terminal .puzzle-open:disabled{background:#26394c;color:#8499ad}
.revive-terminal .puzzle-question{font-size:22px;font-weight:700;line-height:1.65;overflow-wrap:anywhere;margin:12px 0 16px}
.revive-terminal .puzzle-hint{display:block;color:#91a6bc;font-size:12px;line-height:1.7;margin:0 0 18px}
.revive-terminal .revive-puzzle label{display:block;color:#91a6bc;font-size:12px}
.revive-terminal .revive-puzzle input{display:block;width:100%;height:48px;margin:8px 0 12px;padding:10px 14px;background:#0b1723;color:#eef6ff;border:1px solid #37546b;border-radius:10px;outline-offset:3px}
.revive-terminal .revive-puzzle form{margin:0}
body:not(.rotated-game) .terminal-dialog.revive-terminal::before{background:#385165}
@media (orientation:portrait){body:not(.rotated-game) .terminal-dialog.revive-terminal[open]{max-height:calc(100dvh - 24px);padding:22px 24px}}
.terminal-dialog .puzzle-feedback{margin:12px 0 0;font-size:13px;line-height:1.6;color:#a63332;min-height:0}
.terminal-dialog .puzzle-feedback:empty{display:none}
.revive-terminal .puzzle-feedback{color:#ffb2a6}
.revive-terminal .revive-puzzle form button:disabled{background:#30465a;color:#b6c7d7;cursor:wait}

/* Keep the world and escape controls usable during revival puzzles. */
dialog.terminal-dialog.nonblocking-terminal{inset:auto 12px 12px auto!important;margin:0!important;transform:none!important;width:min(420px,calc(100vw - 24px))!important;max-height:48dvh!important;overflow:auto;padding:14px 18px!important;border-radius:18px!important;backdrop-filter:none!important}
dialog.nonblocking-terminal .revive-hero{padding:0!important;text-align:left!important}
dialog.nonblocking-terminal .revive-card-symbol,dialog.nonblocking-terminal .revive-eyebrow{display:none!important}
dialog.nonblocking-terminal .revive-hero h3{font-size:22px!important;margin:0 0 4px!important}
dialog.nonblocking-terminal .revive-hero p{font-size:12px!important;margin:0!important}
dialog.nonblocking-terminal .revive-puzzle{margin-top:10px!important;padding-top:10px!important}
dialog.nonblocking-terminal .revive-supply{font-size:11px!important;margin:4px 0!important}
dialog.nonblocking-terminal .puzzle-question{font-size:21px!important;margin:12px 0!important}
dialog.nonblocking-terminal .puzzle-hint{font-size:11px!important}
dialog.nonblocking-terminal input{height:38px!important;margin-top:4px!important}
dialog.nonblocking-terminal form>button{padding:10px!important;margin-top:8px!important}
@media(orientation:landscape){dialog.terminal-dialog.nonblocking-terminal{width:45vw!important;max-height:calc(100dvh - 96px)!important}}
@media(orientation:portrait){dialog.terminal-dialog.nonblocking-terminal{top:90px!important;bottom:auto!important;max-height:calc(50dvh - 40px)!important}}

body .terminal-dialog.revive-terminal[open]{background:linear-gradient(160deg,#fff9fa,#f7e7ed);color:#623248;border-color:#d8a5b5;box-shadow:0 18px 55px #54243640}
.revive-terminal .revive-puzzle{color:#623248;border-color:#e6c5d0}
.revive-terminal .revive-hero p,.revive-terminal .revive-eyebrow,.revive-terminal .revive-supply,.revive-terminal .puzzle-hint,.revive-terminal .revive-puzzle label{color:#86566a}
.revive-terminal .terminal-close{background:#efdae4;color:#723b54}
.revive-terminal .puzzle-open,.revive-terminal .revive-puzzle form button{background:#a54a71;color:#fff5f9}
.revive-terminal .puzzle-open:disabled{background:#ead5df;color:#987485}
.revive-terminal .revive-puzzle input{background:#fffafd;color:#623248;border-color:#d2a9b9}
body:not(.rotated-game) .terminal-dialog.revive-terminal::before{background:#dab1c2}
