:root{
  --bg:#f2f4f7; --card:#fff; --ink:#0f1318; --muted:#586474; --line:#d5dbe3; --line2:#e6eaef;
  --accent:#1259d6; --accent-ink:#fff; --accent-soft:#e7f0ff;
  --good:#12703f; --good-bg:#e8f6ee; --warn:#9a4a00; --warn-bg:#fff3e2; --bad:#b3261e; --bad-bg:#fdecea;
  --ff:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--r:14px; --tap:3.25rem; --scale:1; --shadow:0 1px 2px rgba(15,19,24,.06),0 4px 14px rgba(15,19,24,.06);
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0c1117; --card:#151b23; --ink:#eef1f5; --muted:#9aa6b6; --line:#2b3441; --line2:#222a35;
  --accent:#5b9bff; --accent-ink:#06101f; --accent-soft:#12233f;
  --good:#4ade80; --good-bg:#0f2a1d; --warn:#fbbf24; --warn-bg:#2b2111; --bad:#ff8a80; --bad-bg:#2e1715;
  --shadow:none;}}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{font-size:calc(16px * var(--scale));-webkit-text-size-adjust:100%}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--ink);padding-bottom:7rem;
  font:1rem/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
.wrap{max-width:46rem;margin:0 auto;padding:0 1rem}
.hide{display:none!important}
.i{width:1.35rem;height:1.35rem;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* ---------- app bar ---------- */
#hdr{position:sticky;top:0;z-index:30;background:var(--card);border-bottom:1px solid var(--line);
  padding-top:env(safe-area-inset-top)}
.bar{display:flex;align-items:center;gap:.25rem;min-height:3.5rem}
.bar .ttl{flex:1;min-width:0;padding:0 .25rem}
.bar .ttl b{display:block;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.01em}
.bar .ttl small{display:flex;align-items:center;gap:.4rem;font-size:.75rem;color:var(--muted);margin-top:1px}
.ib{width:var(--tap);height:var(--tap);border:0;background:transparent;color:var(--ink);border-radius:50%;
  display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.ib:active{background:var(--bg)}
.dot{width:.5rem;height:.5rem;border-radius:50%;background:var(--muted);display:inline-block}
.dot.saved{background:var(--good)} .dot.saving{background:var(--warn)} .dot.error{background:var(--bad)}
.tabs{display:flex;gap:.25rem;padding:0 0 .5rem}
.tab{flex:1;display:flex;align-items:center;justify-content:center;gap:.45rem;border:0;background:var(--bg);
  color:var(--muted);font:600 .875rem/1 var(--ff);padding:.7rem .4rem;border-radius:10px;cursor:pointer;min-height:2.6rem}
.tab .n{display:inline-flex;align-items:center;justify-content:center;min-width:1.35rem;height:1.35rem;border-radius:999px;
  background:var(--line);color:var(--ink);font-size:.75rem;padding:0 .35rem}
.tab[aria-current="step"]{background:var(--accent);color:var(--accent-ink)}
.tab[aria-current="step"] .n{background:rgba(255,255,255,.25);color:inherit}
.tab .n.bad{background:var(--bad);color:#fff}
.tab .n.ok{background:var(--good);color:#fff}

/* ---------- cards & text ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1rem;margin:.9rem 0;box-shadow:var(--shadow)}
h1{font-size:1.5rem;margin:0 0 .3rem;letter-spacing:-.02em}
h2{font-size:1.15rem;margin:0 0 .25rem;letter-spacing:-.01em}
h3{font-size:.75rem;margin:1.2rem 0 .5rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);display:flex;align-items:center;gap:.4rem}
.sub{color:var(--muted);font-size:.875rem;margin:0 0 .8rem}
.grp{margin:1.2rem 0 .4rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700}
.mono{font-family:ui-monospace,Menlo,Consolas,monospace}
.muted{color:var(--muted)}

/* ---------- form controls ---------- */
.field{margin:.95rem 0 0;border-radius:10px;scroll-margin-top:9rem}
.field>label,label{display:block;font-weight:650;font-size:.9rem;margin:.9rem 0 .35rem}
.field>label{margin-top:0}
label .opt{font-weight:500;font-size:.75rem;color:var(--muted);margin-left:.3rem}
label .req{color:var(--bad)}
label .hint,.hint{display:block;font-weight:400;font-size:.78rem;color:var(--muted);margin-top:.15rem}
input[type=text],input[type=number],input[type=date],input[type=search],select,textarea{width:100%;min-height:var(--tap);
  padding:.7rem .85rem;font:inherit;font-size:1.06rem;color:var(--ink);background:var(--bg);
  border:1.5px solid var(--line);border-radius:12px;appearance:none;-webkit-appearance:none}
select{background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 1.15rem) 55%,calc(100% - .8rem) 55%;background-size:.35rem .35rem;background-repeat:no-repeat;padding-right:2.4rem}
input[type=number]{-moz-appearance:textfield;appearance:textfield}
input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
textarea{min-height:5.5rem;resize:vertical}
input:focus,select:focus,textarea:focus{outline:3px solid var(--accent-soft);border-color:var(--accent);background:var(--card)}
.field.invalid>label{color:var(--bad)}
.field.invalid input,.field.invalid select,.field.invalid textarea,.field.invalid .seg button{border-color:var(--bad)}
.field.invalid::after{content:"Needed";display:block;color:var(--bad);font-size:.75rem;font-weight:600;margin-top:.25rem}
.field.flash{animation:flash 1.6s ease-out}
@keyframes flash{0%,40%{box-shadow:0 0 0 6px var(--accent-soft),0 0 0 8px var(--accent)}100%{box-shadow:0 0 0 0 transparent}}
.inwrap{position:relative;display:flex;align-items:center}
.inwrap input{padding-right:3.6rem}
.inwrap .unit{position:absolute;right:.9rem;color:var(--muted);font-weight:600;font-size:.9rem;pointer-events:none}
.fwarn{font-size:.8rem;color:var(--warn);font-weight:600;margin-top:.3rem}
.fwarn:empty{display:none}
.quick{display:flex;gap:.4rem;margin-top:.45rem;flex-wrap:wrap}
.quick button{min-width:2.8rem;height:2.6rem;border:1.5px solid var(--line);background:var(--card);color:var(--ink);
  border-radius:10px;font:650 1rem var(--ff);cursor:pointer}
.quick button[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.seg{display:flex;flex-wrap:wrap;gap:.5rem}
.seg button{flex:1 1 auto;min-height:var(--tap);border:1.5px solid var(--line);background:var(--card);color:var(--ink);
  border-radius:12px;font:600 1rem/1.2 var(--ff);padding:.5rem .9rem;cursor:pointer}
.seg button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.seg.yn button{flex:1}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:0 1rem}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:0 .75rem}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border:1.5px solid var(--line);
  background:var(--card);color:var(--ink);font:650 1rem/1.1 var(--ff);padding:.8rem 1.1rem;min-height:var(--tap);
  border-radius:12px;cursor:pointer;text-align:center}
.btn:active{filter:brightness(.95)}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.btn.ghost{background:transparent}
.btn.sm{min-height:2.6rem;font-size:.875rem;padding:.55rem .85rem;border-radius:10px}
.btn.danger{color:var(--bad);border-color:var(--bad);background:transparent}
.btn.solid-danger{background:var(--bad);border-color:var(--bad);color:#fff}
.btn.big{width:100%;min-height:3.75rem;font-size:1.1rem;border-radius:14px}
.btn:disabled{opacity:.55;cursor:default}
.btnrow{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:1rem}
.btnrow .btn{flex:1 1 auto}
.foot{position:fixed;left:0;right:0;bottom:0;background:var(--card);border-top:1px solid var(--line);
  padding:.65rem 1rem calc(.65rem + env(safe-area-inset-bottom));z-index:30}
.foot .inner{max-width:46rem;margin:0 auto;display:flex;gap:.6rem}
.foot .btn{flex:1}
.foot .btn.grow{flex:2}

/* ---------- notes, pills ---------- */
.note{border-radius:12px;padding:.75rem .9rem;font-size:.9rem;margin:.8rem 0;line-height:1.45;border:1px solid var(--line)}
.note.warn{background:var(--warn-bg);border-color:var(--warn)}
.note.bad{background:var(--bad-bg);border-color:var(--bad)}
.note.good{background:var(--good-bg);border-color:var(--good)}
.note b{display:block;margin-bottom:.2rem} .note ul{margin:.4rem 0 0;padding-left:1.15rem}
.pill{display:inline-flex;align-items:center;font-size:.7rem;font-weight:700;padding:.2rem .55rem;border-radius:999px;
  background:var(--bg);border:1px solid var(--line);color:var(--muted);white-space:nowrap}
.pill.good{color:var(--good);border-color:var(--good);background:var(--good-bg)}
.pill.warn{color:var(--warn);border-color:var(--warn);background:var(--warn-bg)}
.pill.bad{color:var(--bad);border-color:var(--bad);background:var(--bad-bg)}
.pill.blue{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}
.kv{display:flex;justify-content:space-between;gap:.75rem;padding:.55rem 0;border-bottom:1px solid var(--line2);font-size:.95rem}
.kv span:first-child{color:var(--muted)} .kv span:last-child{font-weight:650;text-align:right}

/* ---------- home ---------- */
.hero{padding:1.2rem 0 .4rem}
.hero p{color:var(--muted);margin:0 0 1rem;font-size:.95rem}
.rc{background:var(--card);border:1px solid var(--line);border-radius:var(--r);margin:.6rem 0;box-shadow:var(--shadow);overflow:hidden}
.rc.cont{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),var(--shadow)}
.rcmain{display:block;width:100%;text-align:left;border:0;background:transparent;color:inherit;font:inherit;padding:.95rem 1rem;cursor:pointer;min-height:var(--tap)}
.rcmain .t{display:flex;justify-content:space-between;align-items:center;gap:.5rem}
.rcmain b{font-size:1.05rem}
.rcmain .a{color:var(--muted);font-size:.85rem;margin-top:.15rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rcmain .m{color:var(--muted);font-size:.8rem;margin-top:.3rem}
.rcact{padding:0 1rem .9rem}
.empty{text-align:center;padding:2rem 1rem;color:var(--muted)}
.empty b{display:block;color:var(--ink);font-size:1.05rem;margin-bottom:.3rem}

/* ---------- work: entries ---------- */
.sumbar{display:flex;gap:.5rem;flex-wrap:wrap;margin:.9rem 0 0}
.sumbar .pill{font-size:.78rem;padding:.3rem .7rem}
.ent{background:var(--card);border:1px solid var(--line);border-radius:var(--r);margin:.7rem 0;box-shadow:var(--shadow);scroll-margin-top:9rem}
.ent.open{border-color:var(--accent)}
.eh{display:flex;align-items:center;gap:.7rem;width:100%;text-align:left;border:0;background:transparent;color:inherit;
  font:inherit;padding:.85rem .9rem;cursor:pointer;min-height:3.6rem}
.eh .num{flex:none;width:1.9rem;height:1.9rem;border-radius:50%;background:var(--accent-soft);color:var(--accent);
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem}
.eh .ehi{flex:1;min-width:0}
.eh .ehi b{display:block;font-size:1rem;line-height:1.25}
.eh .ehi .m{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;font-size:.8rem;color:var(--muted);margin-top:.2rem}
.eh>.i{color:var(--muted);transition:transform .15s}
.ent.open .eh>.i{transform:rotate(180deg)}
.eb{padding:0 .95rem 1rem;border-top:1px solid var(--line2)}
.eb>.field:first-child{margin-top:1rem}
.eact{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:1.2rem;padding-top:1rem;border-top:1px solid var(--line2)}
.eact .btn{flex:1 1 9rem}
.gps{border:1.5px solid var(--line);border-radius:12px;background:var(--bg)}
.gl{display:flex;align-items:center;gap:.75rem;padding:.75rem .85rem;border-radius:12px}
.gl+.gl{border-top:1px solid var(--line)}
.gl .gi{flex:1;min-width:0}
.gl .gi b{display:block;font-size:.9rem}
.gl .val{display:block;font-size:.8rem;color:var(--muted);font-family:ui-monospace,Menlo,monospace;word-break:break-all}
.gl .val.ok{color:var(--good)}
.gl .weak{display:block;font-size:.78rem;color:var(--warn);font-weight:600;margin-top:.2rem}
.phbtns{display:flex;gap:.6rem;flex-wrap:wrap}
.phbtns .btn{flex:1 1 9rem}
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(7.5rem,1fr));gap:.55rem;margin-top:.7rem}
.ph{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--bg);position:relative}
.ph .pi{display:block;width:100%;border:0;padding:0;background:none;cursor:pointer}
.ph img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
.ph .nf{aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;font-size:.65rem;color:var(--muted);padding:.4rem;text-align:center;word-break:break-all}
.ph .del{position:absolute;top:.25rem;right:.25rem;background:rgba(0,0,0,.65);color:#fff;border:0;border-radius:8px;width:2rem;height:2rem;
  display:flex;align-items:center;justify-content:center;cursor:pointer}
.ph .del .i{width:1rem;height:1rem}
.ph input{font-size:.8rem;min-height:2.3rem;padding:.4rem .5rem;border-radius:0;border:0;border-top:1px solid var(--line);background:var(--card)}

/* ---------- picker ---------- */
.pickhd{position:sticky;top:var(--hh,3.6rem);z-index:20;background:var(--bg);padding:.6rem 0 .5rem}
.sbox{position:relative}
.sbox .i{position:absolute;left:.9rem;top:50%;transform:translateY(-50%);color:var(--muted)}
.sbox input{padding-left:2.7rem;background:var(--card)}
.pick{display:flex;align-items:center;gap:.6rem;width:100%;text-align:left;padding:.8rem .95rem;border:1px solid var(--line);
  background:var(--card);border-radius:12px;margin-bottom:.5rem;cursor:pointer;color:var(--ink);font:inherit;min-height:var(--tap)}
.pick:active{background:var(--accent-soft)}
.pick .pt{flex:1;min-width:0}
.pick b{display:block;font-size:1rem;font-weight:600;line-height:1.25}
.pick .ps{display:block;font-size:.8rem;color:var(--muted);margin-top:.1rem}
.pick .tags{display:flex;gap:.3rem;flex-wrap:wrap;margin-top:.35rem}
.gh{display:flex;align-items:center;justify-content:space-between;width:100%;border:0;background:var(--card);color:var(--ink);
  border:1px solid var(--line);border-radius:12px;padding:.85rem .95rem;margin:.45rem 0;font:650 1rem var(--ff);cursor:pointer;min-height:var(--tap)}
.gh .c{color:var(--muted);font-weight:500;font-size:.85rem;margin-left:.5rem}
.gh>.i{transition:transform .15s;color:var(--muted)}
.gh[aria-expanded=true]>.i{transform:rotate(180deg)}
.gitems{padding:.1rem 0 .3rem .6rem;border-left:3px solid var(--accent-soft);margin-left:.4rem}
.chipset{display:flex;gap:.45rem;flex-wrap:wrap;margin-bottom:.4rem}
.chip{border:1.5px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:.55rem .9rem;font:600 .9rem var(--ff);cursor:pointer;min-height:2.6rem}
.chip:active{background:var(--accent-soft)}

/* ---------- review ---------- */
.fixlist{list-style:none;margin:.5rem 0 0;padding:0}
.fixlist li+li{margin-top:.4rem}
.fixlist button{display:flex;align-items:center;justify-content:space-between;gap:.6rem;width:100%;text-align:left;border:1px solid var(--bad);
  background:var(--card);color:var(--ink);border-radius:10px;padding:.7rem .85rem;font:inherit;font-size:.9rem;cursor:pointer;min-height:2.9rem}
.fixlist .go{color:var(--bad);font-weight:700;font-size:.8rem;white-space:nowrap}
.ready{display:flex;align-items:center;gap:.8rem}
.ready .big{flex:none;width:3rem;height:3rem;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--good);color:#fff}
.ready .big .i{width:1.7rem;height:1.7rem;stroke-width:2.5}
table{width:100%;border-collapse:collapse;font-size:.85rem;margin-top:.5rem}
th,td{text-align:left;padding:.5rem .5rem;border-bottom:1px solid var(--line2);vertical-align:top}
th{font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
tr.lk{cursor:pointer}
.drop{border:2px dashed var(--line);border-radius:12px;padding:1.1rem;text-align:center;color:var(--muted);font-size:.9rem;cursor:pointer}

/* ---------- overlay: toast, modal, sheet, lightbox ---------- */
#toast{position:fixed;left:50%;bottom:calc(5.6rem + env(safe-area-inset-bottom));transform:translate(-50%,1rem);opacity:0;pointer-events:none;
  background:#1c232d;color:#fff;border-radius:12px;padding:.8rem 1rem;display:flex;align-items:center;gap:1rem;font-size:.92rem;
  max-width:calc(100% - 2rem);z-index:60;transition:.2s;box-shadow:0 6px 24px rgba(0,0,0,.3)}
#toast.on{opacity:1;transform:translate(-50%,0);pointer-events:auto}
#toast button{border:0;background:transparent;color:#8ab8ff;font:700 .95rem var(--ff);padding:.3rem .2rem;cursor:pointer}
#overlay{position:fixed;inset:0;z-index:50;display:none}
#overlay.on{display:block}
.scrim{position:absolute;inset:0;background:rgba(8,12,18,.55)}
.modal{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(26rem,calc(100% - 2rem));
  background:var(--card);border-radius:18px;padding:1.2rem;box-shadow:0 12px 40px rgba(0,0,0,.35);max-height:85vh;overflow:auto}
.modal h2{font-size:1.2rem;margin-bottom:.5rem}
.mbody{color:var(--muted);font-size:.95rem}
.mbody ul{margin:.5rem 0 0;padding-left:1.15rem;color:var(--ink)}
.mbtns{display:flex;gap:.6rem;margin-top:1.1rem}
.mbtns .btn{flex:1}
.sheet{position:absolute;left:0;right:0;bottom:0;background:var(--card);border-radius:20px 20px 0 0;padding:.5rem 1rem calc(1rem + env(safe-area-inset-bottom));
  max-width:46rem;margin:0 auto;box-shadow:0 -8px 30px rgba(0,0,0,.3);max-height:85vh;overflow:auto;animation:up .2s ease-out}
@keyframes up{from{transform:translateY(30%);opacity:.5}to{transform:none;opacity:1}}
.grab{width:2.5rem;height:.3rem;border-radius:99px;background:var(--line);margin:.3rem auto .6rem}
.sheet .mi{display:flex;align-items:center;gap:.8rem;width:100%;text-align:left;border:0;background:transparent;color:var(--ink);font:600 1rem var(--ff);
  padding:.85rem .4rem;border-radius:10px;cursor:pointer;min-height:var(--tap)}
.sheet .mi:active{background:var(--bg)}
.sheet .mi.bad{color:var(--bad)}
.sheet .mi small{display:block;font-weight:400;color:var(--muted);font-size:.8rem}
.sheet hr{border:0;border-top:1px solid var(--line2);margin:.3rem 0}
.sheet .lbl{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;margin:.6rem .4rem .4rem}
.lb{position:absolute;inset:0;background:#000;display:flex;flex-direction:column}
.lb img{flex:1;min-height:0;width:100%;object-fit:contain}
.lb .lbb{display:flex;gap:.6rem;padding:.8rem 1rem calc(.8rem + env(safe-area-inset-bottom));background:#0b0f14}
.lb .lbb .btn{flex:1}
.lb .cap{color:#dbe2ea;text-align:center;padding:.5rem 1rem;font-size:.9rem;background:#0b0f14}

@media(min-width:42rem){ .wrap{padding:0 1.5rem} }
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

button,input,select,textarea{font-family:var(--ff)}
.offline{background:var(--warn-bg);border:1px solid var(--warn);border-radius:12px;padding:.7rem .9rem;font-size:.9rem;margin:.8rem 0}
.offline b{display:block}
.card{overflow-x:auto}
