/* ========= Base / tema ========= */
:root{
  --bg: #0b1320;
  --surface: #121a2a;
  --text: #e8eefc;
  --muted: #94a3b8;
  --primary: #2563eb;
  --ok: #22c55e;
  --warn: #f59e0b;
  --err: #ef4444;
  --sep: rgba(255,255,255,0.08);
}

/* System-preferanse (fallback når data-theme ikke er satt) */
@media (prefers-color-scheme: light){
  :root{
    --bg:#f6f7fb; --surface:#ffffff; --text:#0b1320; --muted:#6b7280;
    --sep: rgba(0,0,0,0.08);
  }
}

/* Tving tema via data-theme */
:root[data-theme="dark"]{
  --bg: #0b1320;
  --surface: #121a2a;
  --text: #e8eefc;
  --muted: #94a3b8;
  --primary: #2563eb;
  --ok: #22c55e;
  --warn: #f59e0b;
  --err: #ef4444;
  --sep: rgba(255,255,255,0.08);
}
:root[data-theme="light"]{
  --bg:#f6f7fb; --surface:#ffffff; --text:#0b1320; --muted:#6b7280;
  --primary:#2563eb;
  --ok:#16a34a; --warn:#d97706; --err:#dc2626;
  --sep: rgba(0,0,0,0.08);
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0; font:16px/1.4 system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  background:var(--bg); color:var(--text);
}

/* ========= Appbar ========= */
.appbar{
  position:sticky; top:0; z-index:1000;
  height:56px; display:flex; align-items:center; gap:12px;
  padding:0 12px; background:var(--surface);
  border-bottom:1px solid var(--sep);
}
.icon-btn{
  border:0; background:transparent; color:var(--text);
  width:40px; height:40px; border-radius:8px; font-size:20px;
}
.icon-btn:active{background:var(--sep)}
.appbar-title{font-weight:700}
.appbar-right{margin-left:auto; display:flex; align-items:center; gap:10px}

/* Badges / dots */
.badge{font-size:.95rem; opacity:.9}
.dot{display:inline-block; width:.75rem; height:.75rem; border-radius:50%}
.dot-ok{background:var(--ok)} .dot-warn{background:var(--warn)}
.dot-err{background:var(--err)} .dot-unknown{background:#6b7280}
.dot-on{background:var(--ok)} .dot-off{background:#9ca3af}

/* ========= Drawer + scrim ========= */
#scrim{
  position:fixed; inset:0; background:rgba(0,0,0,.55);
  opacity:0; pointer-events:none; transition:opacity .18s ease;
  z-index:999;
}
#scrim.show{opacity:1; pointer-events:auto}

.drawer{
  position:fixed; top:0; left:0; height:100vh;
  width:80vw; max-width:320px;
  background:var(--surface); color:var(--text);
  box-shadow: 0 10px 30px rgba(0,0,0,.45);
  border-right:1px solid var(--sep);
  transform:translateX(-100%); transition:transform .22s ease;
  z-index:1001; display:flex; flex-direction:column;
}
.drawer.show{transform:translateX(0)}
.drawer-header{
  display:flex; align-items:center; justify-content:space-between;
  gap:8px; padding:12px 14px; border-bottom:1px solid var(--sep);
  font-weight:700;
}
.drawer-content{padding:12px 10px; overflow:auto}
.drawer-section{margin:10px 8px 6px; font-weight:700; opacity:.9}
.drawer-list{list-style:none; margin:6px 0 14px; padding:0}
.drawer-link{
  display:flex; align-items:center; gap:10px;
  padding:10px 12px; border-radius:10px; color:inherit; text-decoration:none;
}
.drawer-link:hover{background:var(--sep)}
.drawer-link .emoji{width:22px; text-align:center}

/* Cards / rows */
.card{
  margin:12px 8px; padding:12px; border-radius:12px;
  background:var(--surface); border:1px solid var(--sep);
}
.row{display:flex; align-items:center; gap:10px; flex-wrap:wrap}

/* ========= Layout main ========= */
main{padding:18px}
section[hidden]{display:none !important}

/* ========= Form / inputs ========= */
.field{display:block; margin:14px 0 10px}
.field > span{display:block; margin-bottom:6px; color:var(--text); font-weight:700}
.input, select, .input-like{
  width:100%; border:1px solid var(--sep); border-radius:10px;
  background:transparent; color:var(--text); padding:10px 12px;
}
.checkbox-col{display:flex; flex-direction:column}
.checkbox-row{display:flex; flex-direction:row; gap:10px; align-items:center}
.muted{color:var(--muted)} .muted-strong{color:var(--text); opacity:.9}

.btn{
  display:inline-flex; align-items:center; gap:8px;
  border:0; border-radius:12px; padding:12px 16px;
  background:var(--primary); color:white; font-weight:700;
}
.btn-ghost{background:transparent; border:1px solid var(--sep); color:var(--text)}
.btn:active{transform:translateY(1px)}
.btn[disabled]{opacity:.5; pointer-events:none}

/* ========= Work-top (progress/status) ========= */
.work-top{
  border:1px solid var(--sep); border-radius:14px; background:var(--surface);
  padding:12px; margin-bottom:14px;
}
.work-prog{position:relative; height:10px; border-radius:999px; background:#1f2937; overflow:hidden}
.work-prog .me{position:absolute; left:0; top:0; bottom:0; width:0%; background:#22c55e}
.work-prog .other{position:absolute; left:0; top:0; bottom:0; width:0%; background:#a78bfa; opacity:.85}
.work-caption{display:flex; justify-content:space-between; font-size:.9rem; color:var(--muted); margin-top:6px}

/* ========= Work card ========= */
.work-card .label-muted{color:var(--muted); font-size:.9rem}
.addr-now{font-size:1.3rem; font-weight:800; margin-top:4px}
.addr-next{font-size:1.05rem; font-weight:600; opacity:.9; margin-top:2px}
.btn-grid{
  display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:14px;
}
.work-meta{margin-top:10px; color:var(--muted)}

/* Små skjermer */
@media (max-width:420px){
  main{padding:14px}
}
/* --- Admin tabell --- */
.adm-wrap {
  max-height: 70vh;          /* rulleområde */
  overflow: auto;
  border-radius: 14px;
}

#adm_table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;       /* stabil bredde */
  font-size: 15px;
}

/* Frosset header */
#adm_table thead {
  position: sticky;
  top: 0;
  z-index: 5;
  background: var(--surface);
  box-shadow: 0 2px 4px rgba(0,0,0,.06);
}

#adm_table th,
#adm_table td {
  padding: 10px;
  border-bottom: 1px solid var(--sep);
  vertical-align: middle;
}

/* Kolonne-bredder via colgroup */
#adm_table col.c-addr   { width: 1fr; }     /* fleks – får resten */
#adm_table col.c-flag   { width: 64px; }    /* Snø / Grus */
#adm_table col.c-pins   { width: 78px; }    /* to siffer */
#adm_table col.c-coord  { width: 210px; }   /* ett felt */
#adm_table col.c-move   { width: 86px; }    /* opp/ned */
#adm_table col.c-del    { width: 72px; }    /* slett */

/* Innhold */
.adm-input { width: 100%; }
.adm-pins  { width: 56px; text-align: center; }
.adm-coord { width: 100%; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }

.adm-move {
  display: flex; gap: 6px; justify-content: center;
}
.adm-move .btn-ghost { width: 36px; height: 36px; padding: 0; }

/* Små skjermer */
@media (max-width: 420px) {
  #adm_table th { font-size: 12px; }
  .adm-coord { font-size: 13px; }
}
/* Safe area-variabler */
:root{
  --safe-top: env(safe-area-inset-top, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
}

/* Appbar på toppen må få ekstra padding i standalone */
.standalone .appbar{
  position: sticky;        /* eller fixed om du bruker det */
  top: 0;
  padding-top: calc(12px + var(--safe-top));        /* ← skyv under klokka / island */
  min-height: calc(56px + var(--safe-top));         /* behold høyden pen */
  z-index: 50;
}

/* Innhold: litt ekstra luft nederst for home-indikator */
.standalone main{
  padding-bottom: calc(16px + var(--safe-bottom));
}

/* Side-meny (drawer) og scrim – også under notchen */
.standalone #drawer{
  padding-top: var(--safe-top);
  padding-bottom: var(--safe-bottom);
}
.standalone #scrim{ top: 0; }

/* (valgfritt) småjuster badges/ikoner i appbaren hvis de sitter høyt */
.standalone .appbar-right{ margin-top: calc(var(--safe-top) * 0.2); }

/* --- iOS safe area for PWA (notch/statusbar) --- */
:root{
  --safe-top: env(safe-area-inset-top, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
}

/* fallback for eldre WebKit */
@supports (padding-top: constant(safe-area-inset-top)) {
  :root{
    --safe-top: constant(safe-area-inset-top);
    --safe-bottom: constant(safe-area-inset-bottom);
  }
}

/* Når appen er standalone, gi appbaren ekstra topp-padding */
.standalone .appbar{
  padding-top: calc(10px + var(--safe-top));
}

/* Litt ekstra luft under innholdet for hjemgest og bunnlinje */
.standalone main{
  padding-bottom: calc(16px + var(--safe-bottom));
}

/* Knappetekst: aldri bryt ord, aldri klipp */
#work button,
button#act_start,
button#act_done,
button#act_skip,
button#act_next,
button#act_nav,
button#act_block {
  white-space: nowrap;     /* én linje */
  overflow: visible;       /* ikke skjul/klipp */
  text-overflow: clip;     /* ingen … */
  min-width: 0;            /* tillat fleksing i grid/flex */
  width: auto;             /* la knappen bli bred nok for teksten */
  box-sizing: border-box;
}

/* Hvis knappene ligger i et 2-kol griddelayout, sørg for litt fleks på små mobiler */
@media (max-width: 380px) {
  #work .actions button {
    padding: 12px 12px;            /* litt mindre luft for å få plass */
    font-size: 15px;               /* knepp ned fonten minimalt */
  }
}

/* Under-arbeid statusbar */
#uaWrap{margin:8px 0 12px}
#uaBar{display:flex;height:10px;border-radius:6px;overflow:hidden;border:1px solid #e5e7eb}
#uaMine{background:#16a34a}
#uaOthers{background:#7c3aed}
#uaRest{background:#e5e7eb}
#uaCounts{font-size:12px;margin-top:6px;opacity:.8}