/* ---------- Escaperom ----------
   Lærerdelen bruker Prøvevakt sine vanlige tokens og klasser fra styles.css;
   her ligger bare det lille ekstra byggeren og oversikten trenger.
   Elevdelen (.esc-room) har sitt eget uttrykk: et sikringsskap i lysegrå
   RAL 7035-lakk med mørke kodeskjermer, og egne tokens for lyst og mørkt tema. */

/* ----- lærer ----- */
.esc-meta-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,220px);gap:14px;}
.esc-two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;}
.esc-three{display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:12px;}
@media (max-width:640px){
  .esc-meta-row,.esc-two,.esc-three{grid-template-columns:minmax(0,1fr);gap:0;}
}
.esc-task-list{display:flex;flex-direction:column;gap:12px;margin-top:4px;}
.esc-task-card .field{margin-bottom:12px;}
.esc-task-card .field label{font-size:12.5px;}
.esc-img-preview{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap;}
.esc-img-preview img{max-width:260px;max-height:160px;border-radius:6px;border:1px solid var(--border);background:#fff;}
.esc-image-input{font-size:13px;max-width:100%;color:var(--text);}
.esc-room-row .esc-start-form{grid-column:1/-1;display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;padding:10px 0 4px;}
.esc-lamps-mini{display:inline-flex;gap:3px;vertical-align:middle;}
.esc-lamp-mini{width:10px;height:10px;border-radius:50%;background:var(--critical-soft);border:1px solid var(--critical);}
.esc-lamp-mini.on{background:var(--ok);border-color:var(--ok);}
.mono{font-family:var(--font-mono);}
.esc-board-link{display:block;margin-top:14px;text-align:center;text-decoration:none;box-sizing:border-box;}
.esc-fasit{margin-top:16px;}

/* ----- elev ----- */
.esc-room{
  --e-bg:#e6e7e2; --e-cab:#d2d4ce; --e-cab-2:#c4c7c0; --e-ink:#1d2220; --e-muted:#59605c; --e-line:#a9ada6;
  --e-hazard:#e9b200; --e-ok:#23884a; --e-bad:#c0392b;
  --e-scr-bg:#0f130e; --e-scr-fg:#ffb02e; --e-scr-dim:#7a5c24; --e-scr-ok:#6cf08a; --e-scr-bad:#ff5a4a;
  --e-key:#f4f5f1; --e-key-ink:#1d2220;
  --e-shadow:0 1px 0 rgba(255,255,255,.6) inset, 0 2px 6px rgba(0,0,0,.12);
  --e-display:"Barlow Condensed","Arial Narrow","Helvetica Neue",Arial,sans-serif;
  --e-screen:"Share Tech Mono",ui-monospace,Consolas,monospace;
  background:var(--e-bg); color:var(--e-ink); border-radius:12px;
  padding:clamp(14px,3vw,24px);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) .esc-room{
    --e-bg:#131614; --e-cab:#1e2220; --e-cab-2:#272c29; --e-ink:#e2e6e1; --e-muted:#98a09a; --e-line:#3a403c;
    --e-hazard:#e0aa10; --e-ok:#3fbf6c; --e-bad:#ef6b5b; --e-key:#2c322e; --e-key-ink:#e9ece8;
    --e-shadow:0 1px 0 rgba(255,255,255,.05) inset, 0 2px 8px rgba(0,0,0,.5);
  }
}
:root[data-theme="dark"] .esc-room{
  --e-bg:#131614; --e-cab:#1e2220; --e-cab-2:#272c29; --e-ink:#e2e6e1; --e-muted:#98a09a; --e-line:#3a403c;
  --e-hazard:#e0aa10; --e-ok:#3fbf6c; --e-bad:#ef6b5b; --e-key:#2c322e; --e-key-ink:#e9ece8;
  --e-shadow:0 1px 0 rgba(255,255,255,.05) inset, 0 2px 8px rgba(0,0,0,.5);
}
.esc-room *{box-sizing:border-box;}
.esc-wrap{max-width:1060px;margin:0 auto;display:grid;gap:18px;}
.esc-narrow{max-width:520px;}
.esc-h1,.esc-h2{font-family:var(--e-display);margin:0;text-wrap:balance;color:var(--e-ink);}
.esc-h1{font-size:clamp(1.8rem,5vw,2.7rem);font-weight:700;line-height:1;text-transform:uppercase;}
.esc-h2{font-size:1.6rem;font-weight:700;line-height:1.1;}
.esc-label{font-family:var(--e-display);font-weight:600;text-transform:uppercase;letter-spacing:.12em;font-size:.8rem;color:var(--e-muted);}
.esc-muted{color:var(--e-muted);font-size:.9rem;margin:0;}
.esc-text{margin:0;max-width:64ch;line-height:1.55;font-size:1.02rem;}
.esc-error{margin:0;color:var(--e-bad);font-weight:600;}
.esc-back{justify-self:start;}
.esc-foot{margin:0;text-align:center;}
.esc-link{background:none;border:none;padding:0;font:inherit;font-size:13px;color:var(--e-muted);text-decoration:underline;cursor:pointer;}

.esc-top{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:14px;}
.esc-top .esc-label{margin-bottom:6px;}
.esc-status{display:flex;gap:10px;flex-wrap:wrap;}
.esc-mini{background:var(--e-scr-bg);color:var(--e-scr-fg);font-family:var(--e-screen);border-radius:6px;padding:7px 13px;min-width:110px;box-shadow:0 0 0 3px var(--e-cab-2);display:grid;}
.esc-mini small{color:var(--e-scr-dim);font-size:.68rem;letter-spacing:.1em;}
.esc-mini span{font-size:1.45rem;line-height:1.1;font-variant-numeric:tabular-nums;}

.esc-cabinet{background:var(--e-cab);border:1px solid var(--e-line);border-radius:10px;padding:clamp(14px,3vw,26px);box-shadow:var(--e-shadow);display:grid;gap:20px;}
.esc-hazard{height:10px;border-radius:3px;background:repeating-linear-gradient(-45deg,var(--e-hazard) 0 12px,var(--e-ink) 12px 24px);}

.esc-btn{border:1px solid var(--e-line);background:var(--e-key);color:var(--e-key-ink);border-radius:6px;padding:10px 18px;font-family:var(--e-display);font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:1rem;box-shadow:var(--e-shadow);cursor:pointer;}
.esc-btn.primary{background:var(--e-hazard);color:#1d2220;border-color:transparent;}
.esc-btn.small{padding:6px 12px;font-size:.85rem;}
.esc-btn:disabled{opacity:.6;cursor:wait;}
.esc-btn:active,.esc-key:active{transform:translateY(1px);}
.esc-room button:focus-visible,.esc-room input:focus-visible{outline:3px solid var(--e-hazard);outline-offset:2px;}

.esc-login{display:grid;gap:14px;}
.esc-field{display:grid;gap:4px;}
.esc-room .esc-field input{font-family:var(--e-screen);font-size:1.3rem;letter-spacing:.06em;background:var(--e-scr-bg);color:var(--e-scr-fg);border:0;border-radius:6px;padding:10px 12px;box-shadow:0 0 0 3px var(--e-cab-2);width:100%;}
.esc-room .esc-field input::placeholder{color:var(--e-scr-dim);}
.esc-code-input{text-transform:uppercase;letter-spacing:.3em !important;}

.esc-intro{display:grid;gap:14px;max-width:66ch;}
.esc-story{margin:0;font-size:1.1rem;line-height:1.55;}
.esc-rules{display:grid;gap:6px;padding-left:1.2em;margin:0;color:var(--e-muted);}

.esc-rail{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;}
.esc-breaker{background:var(--e-cab-2);border:1px solid var(--e-line);border-radius:8px;padding:12px 10px 14px;display:grid;justify-items:center;gap:8px;text-align:center;box-shadow:var(--e-shadow);color:var(--e-ink);font:inherit;cursor:pointer;}
.esc-breaker:hover{border-color:var(--e-muted);}
.esc-k{font-family:var(--e-display);font-weight:700;font-size:1.1rem;}
.esc-t{font-size:.86rem;line-height:1.25;min-height:2.5em;}
.esc-subj{font-size:.68rem;color:var(--e-muted);text-transform:uppercase;letter-spacing:.08em;}
.esc-lampe{width:12px;height:12px;border-radius:50%;background:var(--e-bad);box-shadow:0 0 6px var(--e-bad);}
.on .esc-lampe{background:var(--e-ok);box-shadow:0 0 8px var(--e-ok);}
.esc-switch{width:38px;height:62px;border-radius:6px;background:var(--e-scr-bg);position:relative;display:block;}
.esc-switch::after{content:"";position:absolute;left:4px;right:4px;height:26px;bottom:4px;background:var(--e-key);border-radius:4px;transition:bottom .25s ease;}
.on .esc-switch::after,.on.esc-switch::after{bottom:32px;}
.esc-reward{font-family:var(--e-screen);font-size:.9rem;color:var(--e-muted);}
.on .esc-reward{color:var(--e-ink);}

.esc-main{display:grid;grid-template-columns:auto minmax(0,1fr);gap:20px;align-items:center;border-top:1px dashed var(--e-line);padding-top:20px;}
.esc-main .esc-big{width:70px;height:110px;}
.esc-main .esc-big::after{height:46px;}
.esc-main.on .esc-big::after{bottom:60px;}
.esc-slots{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
.esc-slot{width:44px;height:56px;border-radius:6px;background:var(--e-scr-bg);color:var(--e-scr-fg);font-family:var(--e-screen);display:grid;place-items:center;font-size:1.6rem;position:relative;}
.esc-slot small{position:absolute;top:2px;left:5px;font-size:.6rem;color:var(--e-scr-dim);}
.esc-win{display:grid;gap:12px;justify-items:start;}
.esc-win .esc-mini span{font-size:2rem;}

.esc-backbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;}
.esc-post{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:24px;align-items:start;}
@media (max-width:760px){ .esc-post{grid-template-columns:minmax(0,1fr);} }
.esc-task{display:grid;gap:14px;min-width:0;}
.esc-figure{background:#fff;border:1px solid var(--e-line);border-radius:6px;padding:10px;overflow-x:auto;}
.esc-figure img{display:block;max-width:100%;height:auto;margin:0 auto;}
.esc-hints{display:grid;gap:8px;}
.esc-hint{margin:0;border-left:3px solid var(--e-hazard);padding:4px 0 4px 12px;}

.esc-terminal{background:var(--e-cab-2);border:1px solid var(--e-line);border-radius:10px;padding:16px;display:grid;gap:14px;box-shadow:var(--e-shadow);position:sticky;top:12px;}
.esc-screen{background:var(--e-scr-bg);border-radius:6px;padding:14px 12px;min-height:120px;display:grid;gap:10px;align-content:center;justify-items:center;box-shadow:0 0 0 4px #1d2220 inset;font-family:var(--e-screen);color:var(--e-scr-fg);}
.esc-msg{font-size:.85rem;letter-spacing:.15em;color:var(--e-scr-dim);text-align:center;min-height:1.3em;}
.esc-msg.ok{color:var(--e-scr-ok);}
.esc-msg.bad{color:var(--e-scr-bad);}
.esc-digits{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;}
.esc-digit{width:32px;height:46px;display:grid;place-items:center;font-size:1.85rem;border-bottom:2px solid var(--e-scr-dim);text-shadow:0 0 8px rgba(255,176,46,.6);}
.esc-digit.cur{border-bottom-color:var(--e-scr-fg);animation:esc-blink 1s steps(2) infinite;}
.esc-screen.ok .esc-digit{color:var(--e-scr-ok);border-color:var(--e-scr-ok);text-shadow:0 0 8px rgba(108,240,138,.6);}
.esc-screen.bad .esc-digit{color:var(--e-scr-bad);}
.esc-screen.shake{animation:esc-shake .35s;}
@keyframes esc-blink{50%{border-bottom-color:transparent;}}
@keyframes esc-shake{25%{transform:translateX(-6px);}75%{transform:translateX(6px);}}
.esc-keypad{display:grid;gap:6px;}
.esc-keypad.num{grid-template-columns:repeat(3,1fr);}
.esc-keypad.abc{grid-template-columns:repeat(auto-fill,minmax(38px,1fr));}
.esc-key{background:var(--e-key);color:var(--e-key-ink);border:1px solid var(--e-line);border-radius:6px;min-height:46px;font-family:var(--e-screen);font-size:1.25rem;box-shadow:var(--e-shadow);cursor:pointer;}
.esc-keypad.abc .esc-key{min-height:42px;font-size:1.05rem;}
.esc-key.fn{font-family:var(--e-display);font-weight:600;font-size:.9rem;text-transform:uppercase;letter-spacing:.06em;}
.esc-key.go{background:var(--e-hazard);color:#1d2220;border-color:transparent;}
.esc-keyrow{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
.esc-tip{margin:0;font-size:.8rem;color:var(--e-muted);text-align:center;}

/* ----- tavle for smartboard: dekker hele skjermen og leses på avstand ----- */
.esc-board{position:fixed;inset:0;z-index:20;overflow:auto;border-radius:0;}
.esc-wrap.esc-board-wrap{max-width:none;gap:clamp(12px,2vh,24px);}
.esc-board .esc-h1{font-size:clamp(2rem,4.5vw,4.5rem);}
.esc-board .esc-mini{min-width:clamp(110px,11vw,190px);}
.esc-board .esc-mini span{font-size:clamp(1.45rem,3vw,3rem);}
.esc-board .esc-status{align-items:center;}
.esc-bd-list{display:grid;gap:clamp(8px,1.2vh,14px);}
.esc-bd-empty{margin:0;padding:4vh 0;text-align:center;font-size:clamp(1.3rem,2.6vw,2.4rem);color:var(--e-muted);}
.esc-bd-row{
  display:grid;align-items:center;gap:clamp(10px,1.6vw,28px);
  grid-template-columns:2.2ch minmax(0,1fr) minmax(0,1.5fr) 5ch 7ch;
  background:var(--e-cab-2);border:1px solid var(--e-line);border-radius:8px;box-shadow:var(--e-shadow);
  padding:clamp(8px,1.4vh,16px) clamp(12px,1.6vw,24px);
  font-size:clamp(1.2rem,2.4vw,2.5rem);
}
.esc-bd-rank{font-family:var(--e-display);font-weight:700;color:var(--e-muted);}
.esc-bd-name{font-family:var(--e-display);font-weight:600;line-height:1.1;overflow-wrap:anywhere;}
.esc-bd-lamps{display:flex;flex-wrap:wrap;gap:clamp(5px,.7vw,12px);}
.esc-bd-lamp{width:clamp(14px,2vw,34px);height:clamp(14px,2vw,34px);border-radius:50%;background:var(--e-scr-bg);border:2px solid var(--e-line);}
.esc-bd-lamp.on{background:var(--e-ok);border-color:transparent;box-shadow:0 0 12px var(--e-ok);}
.esc-bd-count,.esc-bd-time{font-family:var(--e-screen);font-variant-numeric:tabular-nums;text-align:right;}
.esc-bd-row.ute{border-color:var(--e-ok);}
.esc-bd-row.ute .esc-bd-count{color:var(--e-ok);}
.esc-bd-row.flash{animation:esc-flash 2.4s ease-out;}
@keyframes esc-flash{0%,30%{background:var(--e-hazard);color:#1d2220;}100%{background:var(--e-cab-2);}}
@media (max-width:640px){
  .esc-bd-row{grid-template-columns:2.2ch minmax(0,1fr) auto auto;}
  .esc-bd-lamps{grid-column:2/-1;grid-row:2;}
}

@media (prefers-reduced-motion: reduce){
  .esc-room *,.esc-room *::after{animation:none !important;transition:none !important;}
}
