:root { --term-green:#33ff66; --term-dim:#1f8f3f; --bg:#000; --token-green:#22C55E; }
* { box-sizing: border-box; }
html,body { margin:0; height:100%; background:var(--bg); overscroll-behavior:none; }
#crt { position:fixed; inset:0; overflow:hidden; font-family:"SF Mono",ui-monospace,Menlo,monospace; }
#screen { position:absolute; inset:0; padding:env(safe-area-inset-top,16px) 16px 16px; color:var(--term-green);
  font-size:15px; line-height:1.7; overflow-y:auto; -webkit-overflow-scrolling:touch; }
#screen .line { white-space:pre-wrap; }
#scanlines { position:absolute; inset:0; pointer-events:none; z-index:50;
  background:repeating-linear-gradient(0deg, transparent 0 2px, rgba(0,0,0,.22) 3px); }
#fx-root { position:absolute; inset:0; pointer-events:none; z-index:80; }
#fx-root > * { pointer-events:auto; }
.choices { margin-top:14px; display:flex; flex-direction:column; gap:10px; }
.choice { text-align:left; background:transparent; border:1px solid var(--term-dim); color:var(--term-green);
  padding:11px 13px; border-radius:6px; font:inherit; }
.choice:active { background:rgba(51,255,102,.12); }
.input-row input { width:100%; background:#020; border:1px solid var(--term-dim); color:var(--term-green);
  padding:10px; border-radius:6px; font:inherit; }
/* --- effect skins --- */
.fx-blood { position:absolute; inset:0; }
.fx-blood .drip { position:absolute; top:0; width:6px; height:0; background:linear-gradient(#7a0000,#c00);
  border-radius:0 0 6px 6px; animation:drip 2.4s ease-in forwards; }
@keyframes drip { to { height:70%; } }
.fx-bsod { position:absolute; inset:0; background:#001; color:#cfe; padding:24px; font-size:13px; }
.fx-shutdown,.fx-update { position:absolute; inset:0; background:#000; color:#fff; display:flex;
  align-items:center; justify-content:center; flex-direction:column; }
.fx-hacked { position:absolute; inset:0; background:#000; color:#0f0; padding:20px; }
.fx-binary .col { position:absolute; top:-10%; color:#0f0; opacity:.5; animation:fall 1.6s linear infinite; }
@keyframes fall { to { transform:translateY(120vh); } }
.fx-permission { position:absolute; inset:0; background:rgba(0,0,0,.55); display:flex; align-items:center; justify-content:center; }
.ios-alert { width:74%; background:#1c1c1e; color:#fff; border-radius:14px; overflow:hidden; text-align:center; font-family:-apple-system,sans-serif; }
.ios-alert h4 { margin:16px 14px 6px; font-size:15px; } .ios-alert p { margin:0 14px 12px; font-size:13px; color:#aaa; }
.ios-alert .row { display:flex; border-top:1px solid #333; } .ios-alert button { flex:1; padding:11px; background:none; border:none; color:#0a84ff; font-size:16px; }
.ios-banner { margin:8px; background:#2c2c2e; color:#fff; border-radius:14px; padding:10px 12px; font-family:-apple-system,sans-serif; animation:slidein .35s ease; }
@keyframes slidein { from { transform:translateY(-120%); } }
.apple { width:42px; height:42px; background:#fff; -webkit-mask:url("../apple.svg") center/contain no-repeat; mask:url("../apple.svg") center/contain no-repeat; }
.spinner { width:34px; height:34px; border:3px solid #333; border-top-color:#fff; border-radius:50%; animation:spin 1s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }
/* fake incoming call (fx-call) — full-screen iOS call UI */
.fx-call { position:absolute; inset:0; background:#000; color:#fff; display:flex; align-items:center;
  justify-content:center; font-family:-apple-system,sans-serif; }
.fx-call .call-ui { text-align:center; width:100%; }
.fx-call .call-from { font-size:32px; font-weight:300; letter-spacing:.5px; }
.fx-call .call-sub { margin-top:8px; font-size:15px; color:#bbb; }
.fx-call .call-actions { margin-top:48px; display:flex; justify-content:space-around; padding:0 40px; }
.fx-call .call-btn { width:62px; height:62px; border-radius:50%; display:flex; align-items:center;
  justify-content:center; font-size:26px; color:#fff; }
.fx-call .call-btn.accept { background:#34c759; animation:callpulse 1s ease-in-out infinite; }
.fx-call .call-btn.decline { background:#ff3b30; }
@keyframes callpulse { 50% { transform:scale(1.12); } }
/* screenshot flash + "saved" banner (fx-flash / fx-shot) */
.fx-flash { position:absolute; inset:0; background:#fff; animation:flashout .14s ease-out forwards; }
@keyframes flashout { from { opacity:1; } to { opacity:0; } }
.fx-shot { position:absolute; left:10px; bottom:24px; width:140px; background:#1c1c1e; color:#fff;
  border-radius:10px; overflow:hidden; font-family:-apple-system,sans-serif; box-shadow:0 4px 16px rgba(0,0,0,.6);
  animation:slidein .35s ease; }
.fx-shot .shot-thumb { height:78px; background:repeating-linear-gradient(45deg,#222 0 6px,#2a2a2a 6px 12px); border:2px solid #fff; }
.fx-shot .shot-cap { padding:7px 9px; font-size:11px; } .fx-shot .shot-cap b { display:block; }
.fx-shot .shot-cap span { color:#ff5b5b; }
/* shattered glass (fx-crack) */
.fx-crack { position:absolute; inset:0; }
.fx-crack .crack-svg { width:100%; height:100%; }
.fx-crack polyline { fill:none; stroke:rgba(255,255,255,.85); stroke-width:.5; vector-effect:non-scaling-stroke; }
.fx-crack .crack-impact { fill:rgba(255,255,255,.9); }
/* token continue UI (later task) — wallet icon matches the app (account_balance_wallet, #22C55E) */
.continue-wallet { color:var(--token-green); vertical-align:-4px; }
