:root{--bg:#f4f6fb;--card:#fff;--card2:#f0f3f9;--tx:#0f172a;--mut:#64748b;--line:#e5e9f2;--ac:#2563eb;--ac2:#1d4ed8;--acs:#dbe6ff;
--ok:#16a34a;--oks:#dcfce7;--wn:#d97706;--wns:#fef3c7;--bd:#dc2626;--bds:#fee2e2;--sh:0 1px 2px rgba(15,23,42,.05),0 4px 16px rgba(15,23,42,.06);--r:18px;
--font:Inter,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
@media (prefers-color-scheme:dark){:root{--bg:#0b1020;--card:#141a2e;--card2:#1b2238;--tx:#e8ecf5;--mut:#8b95ad;--line:#242c45;--ac:#5b8cff;--ac2:#7aa2ff;--acs:#1e2a4f;
--ok:#4ade80;--oks:#123322;--wn:#fbbf24;--wns:#3a2c0b;--bd:#f87171;--bds:#3d1515;--sh:0 1px 2px rgba(0,0,0,.3),0 6px 20px rgba(0,0,0,.25)}}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--tx);font-family:var(--font);font-size:16px;line-height:1.4}
body{padding-bottom:calc(84px + env(safe-area-inset-bottom));overscroll-behavior-y:contain}
button{font:inherit;color:inherit;cursor:pointer}
svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;padding:calc(10px + env(safe-area-inset-top)) 16px 10px;
background:color-mix(in srgb,var(--bg) 85%,transparent);backdrop-filter:saturate(1.8) blur(14px);-webkit-backdrop-filter:saturate(1.8) blur(14px);border-bottom:1px solid transparent;transition:border-color .2s}
.top.scrolled{border-color:var(--line)}
.carpick{flex:1;min-width:0;display:flex;align-items:center;gap:10px;background:none;border:0;padding:4px 0;text-align:left}
.carav{width:40px;height:40px;border-radius:12px;background:var(--acs);display:grid;place-items:center;font-size:20px;flex:none}
.carinfo{min-width:0;display:flex;flex-direction:column}
.carname{font-weight:700;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.carsub{font-size:.78rem;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chev{width:18px;height:18px;color:var(--mut);flex:none}
.hodo{font-weight:700;font-variant-numeric:tabular-nums;background:var(--card);padding:6px 10px;border-radius:999px;box-shadow:var(--sh);font-size:.9rem;white-space:nowrap}
.hodo small{color:var(--mut);font-weight:600;margin-left:3px}

main{max-width:560px;margin:0 auto;padding:6px 16px 16px}
.view{display:none}.view.on{display:block;animation:fadeUp .28s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
h2{font-size:1.5rem;margin:8px 2px 14px;letter-spacing:-.02em}
.sec{font-size:.8rem;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.06em;margin:22px 4px 10px}
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);padding:16px;margin-bottom:12px}
.muted{color:var(--mut)}.small{font-size:.82rem}

.hero{background:linear-gradient(135deg,var(--ac),#7c3aed);color:#fff;border-radius:22px;padding:20px;box-shadow:0 10px 30px color-mix(in srgb,var(--ac) 35%,transparent);position:relative;overflow:hidden}
.hero:after{content:"";position:absolute;right:-40px;top:-40px;width:160px;height:160px;border-radius:50%;background:rgba(255,255,255,.1)}
.hero .lbl{font-size:.82rem;opacity:.85}.hero .odo{font-size:2.5rem;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin:2px 0}
.hero .odo small{font-size:1rem;font-weight:600;opacity:.8;margin-left:4px}
.hero .meta{font-size:.8rem;opacity:.8}
.hero .btn{margin-top:14px;background:#fff;color:var(--ac2);width:100%}
@media (prefers-color-scheme:dark){.hero .btn{color:#3b5bdb}}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}
.stat{background:var(--card);border-radius:16px;padding:12px;box-shadow:var(--sh);text-align:center}
.stat b{display:block;font-size:1.35rem}.stat span{font-size:.75rem;color:var(--mut)}
.stat.bd b{color:var(--bd)}.stat.wn b{color:var(--wn)}.stat.ok b{color:var(--ok)}
.costcard{display:flex;justify-content:space-between;align-items:center}
.costcard b{font-size:1.25rem}

.it{display:flex;gap:12px;align-items:flex-start;background:var(--card);border-radius:var(--r);box-shadow:var(--sh);padding:14px;margin-bottom:10px;animation:fadeUp .3s ease both}
.ico{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;font-size:22px;flex:none;background:var(--card2)}
.it .body{flex:1;min-width:0}
.it .row1{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.it .nm{font-weight:650;font-size:.98rem;line-height:1.3}
.pill{font-size:.72rem;font-weight:700;padding:4px 10px;border-radius:999px;white-space:nowrap;flex:none}
.pill.ok{background:var(--oks);color:var(--ok)}.pill.dekat{background:var(--wns);color:var(--wn)}.pill.lewat{background:var(--bds);color:var(--bd)}
.bar{height:6px;border-radius:99px;background:var(--card2);margin:10px 0 8px;overflow:hidden}
.bar i{display:block;height:100%;border-radius:99px;transition:width .6s cubic-bezier(.2,.8,.2,1)}
.bar i.ok{background:var(--ok)}.bar i.dekat{background:var(--wn)}.bar i.lewat{background:var(--bd)}
.it .info{display:flex;justify-content:space-between;gap:8px;font-size:.8rem;color:var(--mut)}
.it .info b{color:var(--tx);font-weight:600}
.est{font-size:.7rem;color:var(--wn);font-weight:600}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:0 18px;border-radius:14px;border:0;background:var(--ac);color:#fff;font-weight:700;font-size:1rem;transition:transform .12s,opacity .2s}
.btn:active{transform:scale(.97)}.btn.ghost{background:var(--card2);color:var(--tx)}.btn.danger{background:var(--bds);color:var(--bd)}.btn.block{width:100%}
.btns{display:flex;gap:10px;margin-top:16px}.btns>*{flex:1}

.lg{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);padding:14px 16px;margin-bottom:10px;animation:fadeUp .3s ease both}
.lg .h{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.lg .d{font-weight:700}.lg .c{font-weight:800;color:var(--ac)}
.lg .w{font-size:.82rem;color:var(--mut);margin-top:2px}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.tag{font-size:.75rem;background:var(--card2);padding:4px 9px;border-radius:999px}
.lg .n{font-size:.82rem;margin-top:8px;color:var(--mut)}
.lg .acts{display:flex;gap:8px;margin-top:12px}.lg .acts .btn{min-height:40px;font-size:.88rem;flex:1}

.empty{text-align:center;padding:40px 20px;color:var(--mut)}
.empty .e{font-size:52px;margin-bottom:8px}.empty b{display:block;color:var(--tx);font-size:1.1rem;margin-bottom:4px}
.empty .btn{margin-top:16px}

.sch{display:flex;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.sch:last-child{border:0}
.sch .ico{width:38px;height:38px;font-size:18px;border-radius:12px}
.sch .b{flex:1;min-width:0}.sch .nm{font-weight:600;font-size:.92rem}.sch .nt{font-size:.75rem;color:var(--mut);margin-top:2px}
.sch .iv{text-align:right;font-size:.85rem;font-weight:700;white-space:nowrap}.sch .iv small{display:block;font-weight:500;color:var(--mut);font-size:.72rem}
.badge{display:inline-block;font-size:.68rem;font-weight:700;padding:2px 7px;border-radius:6px;margin-top:4px}
.badge.r{background:var(--oks);color:var(--ok)}.badge.a{background:var(--wns);color:var(--wn)}

.lst a,.lst .li{display:flex;gap:12px;align-items:center;padding:13px 0;border-bottom:1px solid var(--line);color:var(--tx);text-decoration:none}
.lst>*:last-child{border:0}.lst svg{color:var(--ac);flex:none}
.lst .t{flex:1;font-size:.9rem}
.carrow{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);background:none;border-left:0;border-right:0;border-top:0;width:100%;text-align:left}
.carrow:last-child{border-bottom:0}.carrow .ck{margin-left:auto;color:var(--ac);font-weight:800}

/* forms */
label.f{display:block;margin:0 0 14px}
label.f span{display:block;font-size:.8rem;font-weight:600;color:var(--mut);margin:0 0 6px 2px}
.inp{width:100%;min-height:52px;padding:12px 14px;border-radius:14px;border:1.5px solid var(--line);background:var(--card2);color:var(--tx);font:inherit;font-size:1rem;outline:none;transition:border-color .15s,background .15s;-webkit-appearance:none;appearance:none}
.inp:focus{border-color:var(--ac);background:var(--card)}
textarea.inp{min-height:80px;resize:vertical}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.chip{display:inline-flex;align-items:center;gap:6px;min-height:42px;padding:8px 14px;border-radius:999px;border:1.5px solid var(--line);background:var(--card2);font-size:.88rem;font-weight:600;transition:all .15s;user-select:none}
.chip.on{background:var(--acs);border-color:var(--ac);color:var(--ac)}
.chip.on:before{content:"✓";font-weight:800}

/* sheet */
.scrim{position:fixed;inset:0;background:rgba(5,10,25,.45);opacity:0;pointer-events:none;transition:opacity .25s;z-index:40}
.scrim.on{opacity:1;pointer-events:auto}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:50;max-height:92vh;overflow-y:auto;background:var(--card);border-radius:24px 24px 0 0;padding:8px 18px calc(20px + env(safe-area-inset-bottom));
transform:translateY(105%);transition:transform .32s cubic-bezier(.2,.8,.2,1);box-shadow:0 -10px 40px rgba(0,0,0,.2);max-width:560px;margin:0 auto}
.sheet.on{transform:none}
.grab{width:40px;height:5px;border-radius:9px;background:var(--line);margin:4px auto 12px}
.sheet h3{margin:0 0 16px;font-size:1.25rem;letter-spacing:-.01em}

.fab{position:fixed;right:18px;bottom:calc(86px + env(safe-area-inset-bottom));z-index:30;width:60px;height:60px;border-radius:20px;border:0;background:var(--ac);color:#fff;display:grid;place-items:center;
box-shadow:0 10px 24px color-mix(in srgb,var(--ac) 45%,transparent);transition:transform .2s,opacity .2s}
.fab svg{width:28px;height:28px;stroke-width:2.4}.fab:active{transform:scale(.92)}.fab.hide{opacity:0;transform:scale(.6);pointer-events:none}

.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom))}
.tabbar button{flex:1;background:none;border:0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;min-height:56px;color:var(--mut);font-size:.7rem;font-weight:600;transition:color .2s}
.tabbar button svg{transition:transform .2s}
.tabbar button.on{color:var(--ac)}.tabbar button.on svg{transform:translateY(-1px) scale(1.08)}
.tabbar button.on:before{content:"";position:absolute}

.toast{position:fixed;left:50%;bottom:calc(160px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:var(--tx);color:var(--bg);padding:12px 18px;border-radius:14px;font-weight:600;font-size:.9rem;opacity:0;transition:all .25s;z-index:60;pointer-events:none;white-space:nowrap}
.toast.on{opacity:1;transform:translate(-50%,0)}
.tip{background:var(--acs);color:var(--tx);border-radius:16px;padding:14px;font-size:.88rem;margin:12px 0;display:flex;gap:10px}
.chip{text-align:left;border-radius:16px}
.lg .acts{justify-content:flex-end}.lg .acts .btn{flex:none;min-height:38px;padding:0 16px;font-size:.85rem}
.lg .acts .btn.ghost{background:transparent;color:var(--ac)}.lg .acts .btn.danger{background:transparent}
.lg .acts{margin-top:8px;border-top:1px solid var(--line);padding-top:6px}
