@import url('https://fonts.googleapis.com/css2?family=Oswald:wght@400;500;600&family=Inter:wght@400;500;600&display=swap');
:root{color-scheme:dark;--bg:#0b0e0e;--card:#151a19;--line:#48534d;--text:#e6e4da;--muted:#a8aea6;--accent:#b6cfb5;--warm:#c9bb9b}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 68% -15%,#24322d 0,transparent 38%),var(--bg);color:var(--text);font-family:Inter,system-ui,sans-serif;min-height:100vh;font-size:16px}button,input,select{font:inherit}button{cursor:pointer}a{color:var(--accent)}.hidden{display:none!important}
.topbar{border-bottom:1px solid var(--line);background:#0b0e0eea;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px clamp(16px,4vw,60px)}.identity{display:flex;align-items:center;gap:14px;text-decoration:none;color:var(--text);font:500 18px Oswald,sans-serif;letter-spacing:.13em}.identity img{width:48px;height:48px;object-fit:contain;filter:grayscale(1)}.identity small{display:block;font:12px Inter,sans-serif;letter-spacing:.12em;color:var(--muted);margin-top:3px}.top-actions{display:flex;align-items:center;gap:14px;color:var(--muted);font-size:14px}.shell{max-width:1200px;margin:auto;padding:36px clamp(16px,4vw,50px) 80px}.kicker,.card-head,.tag{font:500 14px Oswald,sans-serif;letter-spacing:.17em;color:var(--accent)}h1,h2{font-family:Oswald,sans-serif;font-weight:500;letter-spacing:.035em}h1{font-size:clamp(34px,5vw,56px);margin:4px 0 12px}h2{font-size:28px;margin:10px 0}.auth-layout{display:grid;grid-template-columns:1fr minmax(300px,420px);gap:50px;align-items:center;min-height:65vh}.auth-title p:last-child{max-width:470px;color:var(--muted);line-height:1.65}.auth-card,.card{background:linear-gradient(145deg,#1b211f,#101413);border:1px solid var(--line);padding:24px;box-shadow:0 20px 50px #0004}.segmented,.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:24px;overflow-x:auto}.segmented button,.tabs button{border:0;background:transparent;color:var(--muted);padding:12px 16px;white-space:nowrap}.segmented button.selected,.tabs button.selected{color:var(--text);box-shadow:inset 0 -2px var(--accent)}.field{margin:0 0 18px}.field label,.lookup label{display:block;color:var(--muted);margin-bottom:8px;font-size:14px}input,select{background:#0c1110;border:1px solid #65736a;color:var(--text);padding:12px;min-height:46px;border-radius:2px;max-width:100%;width:100%}input:focus,select:focus,button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.primary,.secondary,.subtle{border:1px solid var(--accent);padding:11px 16px;background:var(--accent);color:#111b16;font-weight:600;min-height:46px}.secondary{background:transparent;color:var(--text);border-color:#7c8a80}.subtle{background:transparent;border-color:#526057;color:var(--muted);min-height:36px;padding:7px 10px}.primary:hover{background:#d7e3d1}.secondary:hover,.subtle:hover{border-color:var(--accent);color:var(--accent)}button:disabled{opacity:.5;cursor:not-allowed}.full{width:100%}.notice{padding:15px 18px;border:1px solid var(--accent);background:#24352b;margin-bottom:20px;line-height:1.5}.notice.error{border-color:#b78b7b;background:#34251f}.heading,.section-head{display:flex;align-items:end;justify-content:space-between;gap:15px;margin:0 0 24px}.heading .kicker{margin:0}.tag{border:1px solid var(--line);padding:9px 13px}.tabs{margin-bottom:26px}.two-col{display:grid;grid-template-columns:minmax(270px,.85fr) minmax(350px,1.15fr);gap:22px}.stack{display:grid;gap:22px;align-content:start}.card-head{display:flex;justify-content:space-between;gap:12px;padding-bottom:16px;border-bottom:1px solid var(--line)}.card-head span:last-child{color:var(--muted);font:12px Inter,sans-serif;letter-spacing:0;text-align:right}.profile-card p{color:var(--muted);line-height:1.5}.health{margin:24px 0}.health-label{display:flex;justify-content:space-between;margin-bottom:10px}.health-track{height:10px;background:#303a35}.health-track i{display:block;height:100%;width:0;background:var(--accent);transition:width .3s}.qr{width:min(100%,195px);background:white;padding:10px;margin:20px auto}.qr svg{display:block;width:100%;height:auto}.code-link{font-size:13px;overflow-wrap:anywhere;display:block;text-align:center}.lookup{margin-top:20px}.lookup-row,.inline-control{display:flex;gap:9px}.lookup-row input{flex:1;min-width:0}.target-panel{border-top:1px solid var(--line);margin-top:22px;padding-top:19px}.target-panel.empty{color:var(--muted)}.target-panel h3{font:500 23px Oswald,sans-serif;margin:0 0 8px}.target-panel p{color:var(--muted);line-height:1.5}.action-buttons{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.timer{font:500 38px Oswald,sans-serif;color:var(--accent);margin:14px 0}.small-note{font-size:14px;line-height:1.5;color:var(--muted);margin-top:12px;overflow-wrap:anywhere}.section-head{margin-top:16px}.section-head h2{margin:0}.item-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.item-card{padding:20px;border:1px solid var(--line);background:var(--card)}.item-card h3{margin:0 0 8px}.item-card p{color:var(--muted)}.admin-tools{display:grid;grid-template-columns:1fr 1fr;gap:18px}.admin-tools .card{min-width:0}.admin-tools .field{margin-top:18px}.inline-control{margin-top:18px}.inline-control select{flex:1;min-width:0}.list{display:grid;gap:9px;margin-bottom:32px}.row{border:1px solid var(--line);background:#151a19;padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:14px}.row strong{font-weight:600}.row small{display:block;color:var(--muted);margin-top:5px;line-height:1.4}.row-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.row-actions input{width:75px;min-height:40px}.row-actions button{min-height:40px}.row-actions input.note{width:180px}.label-qr{width:124px;margin:10px 0;padding:6px;background:white}.label-qr svg{display:block}.print-link{display:inline-block;margin-top:8px;font-size:13px;overflow-wrap:anywhere}.invite-code{padding:12px;background:#0b1010;border:1px solid var(--line);font-family:monospace;overflow-wrap:anywhere;color:var(--text)}
@media(max-width:760px){.topbar{padding:10px 16px}.identity{font-size:15px}.identity img{width:40px;height:40px}.identity small{font-size:10px}.top-actions #identity{display:none}.shell{padding-top:24px}.auth-layout,.two-col,.admin-tools{grid-template-columns:1fr}.auth-layout{gap:20px;min-height:0}.heading{align-items:start}.heading h1{font-size:36px}.card{padding:18px}.row{align-items:start;flex-direction:column}.row-actions{width:100%}.lookup-row{flex-wrap:wrap}.lookup-row button{width:100%}.inline-control{flex-wrap:wrap}.inline-control button{width:100%}}
.state-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:24px 0}.state-grid>div{border:1px solid var(--line);padding:13px;background:#0d1311}.state-grid span,.symptom-list>span{display:block;color:var(--muted);font-size:14px;margin-bottom:9px}.state-grid strong{display:block;font:500 22px Oswald,sans-serif;text-transform:capitalize;color:var(--text)}.symptom-list p{margin:4px 0 0;color:var(--text)}.unread{display:inline-block;margin-left:5px;min-width:21px;height:21px;border-radius:12px;background:var(--warm);color:#161a16;text-align:center;padding:2px 5px;font-size:13px}.message-row{display:block}.message-row.unseen{border-color:var(--accent)}.message-row p{white-space:pre-wrap;line-height:1.55;margin:12px 0}.message-meta{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:13px}.message-row button{margin-top:6px}textarea{display:block;width:100%;min-height:100px;resize:vertical;background:#0c1110;border:1px solid #65736a;color:var(--text);padding:12px;font:inherit}.player-row{display:block}.player-row .player-summary{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.state-editor{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:14px;margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}.state-editor .field{margin:0}.state-editor .wide{grid-column:1/-1}.symptom-options{display:flex;flex-wrap:wrap;gap:8px}.symptom-options label{display:inline-flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);font-size:14px;color:var(--text);cursor:pointer}.symptom-options input{width:16px;height:16px;min-height:16px;accent-color:var(--accent)}.player-row .save-line{margin-top:16px;display:flex;justify-content:flex-end}.observation{border:1px solid var(--line);padding:14px;margin-top:18px;background:#0d1411}.observation p{margin:8px 0}.observation small{color:var(--muted)}
@media(max-width:760px){.state-grid,.state-editor{grid-template-columns:1fr}.message-meta{display:block}.message-meta span{display:block;margin-top:5px}}
.account-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:10px}.danger{border-color:#a66666;color:#e8b0ad}.danger:hover{border-color:#eb9994;color:#ffcfcb}#password-form .field{margin:15px 0}#credential-output{margin-bottom:22px;border-color:var(--accent)}#credential-output .invite-code{margin:12px 0}#credential-output p{margin:0 0 8px}
.player-links{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.player-links .account-actions{margin-top:0}@media(max-width:760px){.player-links{align-items:flex-start;width:100%}.player-links .account-actions{justify-content:flex-start}}
.notification-controls{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.notification-controls button{flex:1 1 195px}
.scan-button{width:100%;margin-top:12px}.scanner-dialog{width:min(520px,calc(100% - 28px));padding:20px;border:1px solid var(--line);background:var(--card);color:var(--text);max-height:90dvh;overflow:auto}.scanner-dialog::backdrop{background:rgba(0,0,0,.8)}.scanner-dialog h2{margin:0 0 16px;font:500 26px Oswald,sans-serif}.scanner-dialog video{display:block;width:100%;max-height:55dvh;object-fit:contain;background:#050807;border:1px solid var(--line)}.scanner-dialog button{width:100%;margin-top:12px}.scanner-dialog .small-note{min-height:42px}
.scan-toolbar{margin:18px 0}.scan-toolbar .lookup-row{max-width:800px}.scan-toolbar .scan-button{max-width:360px}.tabs{overflow-x:auto}.tabs button{white-space:nowrap}.item-card label{display:block;margin-top:16px;color:var(--muted);font-size:14px}.item-card select{display:block;width:100%;margin:8px 0}.item-card>button{width:100%}.view>article{min-width:0}#pending-card{margin:18px 0}#player-view,#item-view{max-width:900px}#target-expires{color:var(--warm)}#abilities-text{color:var(--text)}

/* The altered terminal remains red after conversion; state text stays readable. */
body.warped-terminal{color-scheme:light;--bg:#cc2929;--card:#ed5555;--line:#111;--text:#000;--muted:#000;--accent:#000;--warm:#000;background:#cc2929;color:#000}
body.warped-terminal *{color:#000!important}
body.warped-terminal :is(.topbar,.card,.row,.notice,.observation,.target-panel,.scanner-dialog,input,select,textarea,button,.tabs button,.state-grid>div){background:#ed5555!important;border-color:#111!important}
body.warped-terminal :is(.tabs button.selected,.primary){background:#fa7777!important}
body.warped-terminal :is(.notice.error,.danger){border:2px solid #111!important}
.converted-actions{margin-top:20px;padding-top:14px;border-top:1px solid var(--line)}

/* Highest active symptom stage colors the personal card; early instability stays unchanged. */
.profile-card[data-condition-tone="amber"]{--text:#fff4c9;--muted:#f0db98;background:#665113!important;border-color:#b8912a}
.profile-card[data-condition-tone="red"]{--text:#fff0ef;--muted:#f4bbb7;background:#781f23!important;border-color:#d86565}
.profile-card[data-condition-tone="amber"] .state-grid>div,.profile-card[data-condition-tone="red"] .state-grid>div{background:rgba(0,0,0,.18)}
body.warped-terminal .profile-card[data-condition-tone="amber"]{background:#ad7e12!important}
body.warped-terminal .profile-card[data-condition-tone="red"]{background:#ed5555!important}
/* Compose visual effects on separate surfaces; never affect notice, QR or camera. */
body.affected-terminal{--terminal-swim:none;--terminal-shake:none;--terminal-flicker:none;--terminal-grayscale:0;--terminal-invert:0}
body.swimming-terminal{--terminal-swim:terminal-swim 5s ease-in-out infinite}
body.panic-terminal{--terminal-shake:terminal-panic .24s steps(2,end) infinite}
body.bloodloss-terminal{--terminal-grayscale:1;--terminal-invert:1;background:#eee!important}
body.flickering-terminal{--terminal-flicker:terminal-flicker 3.2s ease-in-out infinite}
body.affected-terminal .topbar,body.affected-terminal #workspace>.heading,body.affected-terminal #workspace>.tabs,body.affected-terminal #workspace>.scan-toolbar,body.affected-terminal #pending-card,body.affected-terminal #workspace .view>:not(.qr-card){
  filter:blur(var(--swim-blur,0px)) grayscale(var(--terminal-grayscale,0)) invert(var(--terminal-invert,0));
  animation:var(--terminal-swim,none),var(--terminal-shake,none),var(--terminal-flicker,none);transform-origin:center
}
/* Give inverted transparent surfaces a solid backdrop, including the red converted theme. */
body.bloodloss-terminal :is(.topbar,#workspace>.heading,#workspace>.tabs,#workspace>.scan-toolbar,#pending-card,#workspace .view>:not(.qr-card)){background:#141414!important;--text:#eee;--muted:#ddd;color:#eee!important}
body.bloodloss-terminal :is(.topbar,#workspace>.heading,#workspace>.tabs,#workspace>.scan-toolbar,#pending-card,#workspace .view>:not(.qr-card)) *{color:#eee!important}
/* Blood loss also makes protected surfaces monochrome, without moving or fading them. */
body.bloodloss-terminal :is(#notice,.qr-card,.scanner-dialog){filter:grayscale(1)}
@keyframes terminal-swim{0%,100%{translate:0 0}35%{translate:1.5px -1px}70%{translate:-1.5px 1px}}
@keyframes terminal-panic{0%,100%{transform:translate(0,0) rotate(0)}15%{transform:translate(-7px,4px) rotate(-.6deg)}30%{transform:translate(8px,-5px) rotate(.7deg)}45%{transform:translate(-6px,-3px) rotate(-.5deg)}60%{transform:translate(7px,5px) rotate(.6deg)}80%{transform:translate(-5px,3px) rotate(-.4deg)}}
/* Slow dimming, never a full blackout or a rapid strobe. */
@keyframes terminal-flicker{0%,100%{opacity:1}35%{opacity:.82}60%{opacity:.65}80%{opacity:.9}}
@media(prefers-reduced-motion:reduce){body.affected-terminal .topbar,body.affected-terminal #workspace *{animation:none!important}}

/* Loss of consciousness overrides every visual effect with a calm black screen. */
body.blackout-terminal{background:#000!important;overflow:hidden}
#blackout-screen{position:fixed;inset:0;z-index:10000;background:#000!important;color:#eee!important;overflow:auto;filter:none!important;animation:none!important}
.blackout-content{min-height:100%;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:24px 16px calc(24px + env(safe-area-inset-bottom))}
#blackout-screen .blackout-qr{width:min(72vw,260px,48dvh);padding:12px;background:#fff!important;flex-shrink:0}
#blackout-screen .blackout-qr svg{display:block;width:100%;height:auto}
#blackout-screen .blackout-state{width:min(100%,760px);padding:16px 20px;background:#161616!important;border:1px solid #777;color:#eee!important;line-height:1.6;text-align:center}
body.blackout-terminal #blackout-screen .blackout-state *{color:#eee!important}
#blackout-health{display:block;font-size:22px;text-transform:capitalize}
#blackout-details{display:block;font-size:14px;margin-top:6px;overflow-wrap:anywhere}
body.blackout-terminal :is(.topbar,#workspace,.scanner-dialog){visibility:hidden!important;pointer-events:none!important}
body.blackout-terminal #workspace *,body.blackout-terminal .topbar{animation:none!important}

.chat-composer{margin-bottom:20px}.chat-composer .field{margin:0 0 16px}.chat-composer textarea{min-height:95px}.message-row.outgoing{border-left:4px solid var(--accent)}.message-row [data-chat-reply]{margin-left:8px}

/* Outside every animated or filtered surface, readable even with nonsense speech. */
#mystery-signals{position:sticky;top:10px;z-index:20;margin:16px 0;padding:16px 20px;border:1px solid #b6cfb5;background:#111815!important;color:#f2f3e9!important;filter:none!important;animation:none!important;transform:none!important;translate:none!important;opacity:1!important;box-shadow:0 4px 18px rgba(0,0,0,.4)}
body #mystery-signals *{color:#f2f3e9!important}
#mystery-signals strong{font-size:13px;letter-spacing:.06em}
#mystery-signals p{margin:8px 0 0;line-height:1.6;overflow-wrap:anywhere}
#mystery-signals p:empty{display:none}
