/* WINS — tampilan mengikuti versi uji coba: sidebar navy, aksen amber, huruf Barlow Condensed + Inter Tight. */
:root{
  --navy:#162845; --navy-2:#0f1d33; --navy-3:#24406b; --amber:#fca311; --amber-2:#d98607; --amber-soft:#fdf0d8;
  --ground:#f2f4f7; --surface:#ffffff; --surface-2:#f8fafc; --line:#dfe4ea; --line-2:#c6cdd6;
  --ink:#1b2330; --ink-2:#5a6676; --ink-3:#8a95a3;
  --good:#12715a; --good-soft:#e0f2ec; --warn:#94650f; --warn-soft:#fdf2da; --bad:#a32e23; --bad-soft:#fae7e4;
  --info:#24406b; --info-soft:#e4ebf5;
  --side:#162845; --side-ink:#d7e0ee; --side-ink-2:#8fa2be; --radius:10px;
  /* nama lama, dipakai beberapa halaman */
  --bg:var(--ground); --panel:var(--surface); --muted:var(--ink-2); --brand:var(--navy); --brand-soft:var(--amber-soft);
  --ok:var(--good); --ok-bg:var(--good-soft); --warn-bg:var(--warn-soft); --bad-bg:var(--bad-soft); --info-bg:var(--info-soft);
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --ground:#12161c; --surface:#1a1f27; --surface-2:#202733; --line:#2c3543; --line-2:#3c4756;
  --ink:#e7ebf1; --ink-2:#a3aebd; --ink-3:#78849a; --amber-soft:#3a2c10;
  --good:#5fc2a4; --good-soft:#12302a; --warn:#e0b558; --warn-soft:#32280f; --bad:#e08072; --bad-soft:#331d1a;
  --info:#9fb7dc; --info-soft:#1c2940; --side:#0d1626; --side-ink:#ccd7e8; --side-ink-2:#7e8fa8;
}}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{background:var(--ground);color:var(--ink);font:15px/1.5 "Inter Tight",system-ui,-apple-system,"Segoe UI",sans-serif}
a{color:var(--navy-3)}
h1,h2,h3{font-family:"Barlow Condensed","Inter Tight",system-ui,sans-serif;letter-spacing:.01em}
h1{font-size:23px;margin:0 0 14px}h2{font-size:19px;margin:18px 0 10px}h3{font-size:16px;margin:14px 0 8px}
.card>h3:first-child{margin-top:0}
.muted{color:var(--ink-2)}.mini{font-size:12px;color:var(--ink-3)}
.pos{color:var(--good)}.neg{color:var(--bad)}
.spacer,.grow{flex:1}
.inline{display:inline}

/* ---- Kerangka ---- */
.shell{display:flex;min-height:100vh}
.sidebar{width:246px;flex:none;background:var(--side);color:var(--side-ink);display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh;overflow-y:auto;padding-bottom:env(safe-area-inset-bottom,0px)}
.sidebar .logo{padding:22px 18px 14px;text-decoration:none;display:block}
.sidebar .logo img{width:100%;max-width:172px;height:auto;display:block;filter:brightness(0) invert(1);margin-bottom:14px}
.sidebar .appname b{font-family:"Barlow Condensed",sans-serif;font-size:34px;font-weight:700;letter-spacing:.06em;color:#fff;display:block;line-height:.95}
.sidebar .appname span{display:block;font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--amber);margin-top:6px;line-height:1.4}
.navgroup{padding:10px 0 2px}
.navtitle{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.13em;color:var(--amber);opacity:.85;padding:10px 18px 4px}
.sidebar .navgroup a{display:flex;justify-content:space-between;gap:8px;padding:8px 14px;margin:1px 10px;border-radius:8px;
  color:var(--side-ink);text-decoration:none;font-size:14.5px;border-left:3px solid transparent}
.sidebar .navgroup a:hover{background:rgba(255,255,255,.07)}
.sidebar .navgroup a.active{background:rgba(255,255,255,.1);border-left-color:var(--amber);color:#fff;font-weight:600}
.sidebar .navgroup a .badge{background:var(--amber);color:#3a2a08;align-self:center}
.side-foot{margin-top:auto;padding:12px 16px;border-top:1px solid rgba(255,255,255,.1);font-size:12px;color:var(--side-ink-2)}
.mainwrap{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:env(safe-area-inset-top,0px);z-index:15;background:var(--surface);border-bottom:1px solid var(--line);
  padding:10px 20px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.topbar .title{font-family:"Barlow Condensed",sans-serif;font-size:21px;font-weight:600;margin:0}
.topbar .company{color:var(--ink-2);font-size:13px}
.topbar .who{font-size:13px}.topbar .who small{color:var(--ink-3)}
.navtoggle{display:none;background:none;border:0;color:var(--ink);font-size:20px;cursor:pointer}
.content{padding:18px 20px 70px;max-width:1280px;width:100%}
.content.solo{max-width:560px;margin:40px auto}
.content>h1.pagetitle{display:none}
.pagedesc{margin:-4px 0 14px;color:var(--ink-2);font-size:13.5px}

/* ---- Komponen ---- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:16px}
.card.narrow{max-width:520px;margin:30px auto}
.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));margin-bottom:16px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:13px 14px;border-top:3px solid var(--navy-3)}
.stat .lbl{color:var(--ink-2);font-size:11.5px;text-transform:uppercase;letter-spacing:.06em}
.stat .val{font-family:"Barlow Condensed",sans-serif;font-size:22px;font-weight:700;margin-top:5px;font-variant-numeric:tabular-nums}
.stat small{color:var(--ink-3);font-size:12px}
.stat:has(.val.neg),.stat.amber{border-top-color:var(--amber)}
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin-bottom:12px}
.toolbar label{display:flex;flex-direction:column;font-size:12px;color:var(--ink-2);gap:3px}
.toolbar input,.toolbar select{width:auto;min-width:130px}
.btn{display:inline-flex;align-items:center;gap:6px;font:600 14px/1 "Inter Tight",sans-serif;padding:9px 13px;border-radius:7px;
  border:1px solid var(--line-2);background:var(--surface);color:var(--ink);cursor:pointer;white-space:nowrap;text-decoration:none}
.btn:hover{border-color:var(--amber)}
.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff}
.btn.primary:hover{background:var(--navy-3)}
.btn.amber{background:var(--amber);border-color:var(--amber);color:#3a2a08}
.btn.danger{color:var(--bad);border-color:var(--bad)}
.btn.ghost{background:transparent}
.btn.sm{padding:5px 9px;font-size:12.5px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.actions{display:flex;gap:6px;flex-wrap:wrap}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin-bottom:16px}
table.t{width:100%;border-collapse:collapse;font-size:14px;background:var(--surface)}
.t th,.t td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
.t th{background:var(--surface-2);font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-2);white-space:nowrap;font-weight:600}
.t td.n,.t th.n{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.t td strong{white-space:nowrap}
.tablewrap .t tr:last-child td{border-bottom:0}
.t tr.sub td{font-weight:600;background:var(--surface-2)}
.t tr.total td{font-weight:700;border-top:2px solid var(--line-2);background:var(--surface-2)}
.t tr.head td{font-weight:700;padding-top:14px;color:var(--ink-2);text-transform:uppercase;font-size:11.5px;letter-spacing:.05em}
.t td.ind1{padding-left:26px}.t td.ind2{padding-left:44px}
.form{display:grid;gap:10px}
.form.cols{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:start}
.form label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-2)}
.form label.check{flex-direction:row;align-items:center;gap:8px;color:var(--ink)}
input,select,textarea{font:inherit;color:var(--ink);background:var(--surface-2);border:1px solid var(--line-2);border-radius:7px;padding:7px 9px;width:100%}
input[type=checkbox],input[type=radio]{width:auto}
textarea{min-height:64px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--amber-soft);border-color:var(--amber)}
.alert{background:var(--amber-soft);border:1px solid var(--line);border-left:3px solid var(--amber);border-radius:var(--radius);
  padding:10px 12px;font-size:13.5px;margin-bottom:16px;color:var(--ink)}
.alert.ok{background:var(--good-soft);border-left-color:var(--good)}
.alert.bad{background:var(--bad-soft);border-left-color:var(--bad)}
.alert.warn{background:var(--warn-soft);border-left-color:var(--amber)}
.alert.info{background:var(--surface);border-left-color:var(--navy-3)}
.badge{display:inline-block;padding:2px 8px;border-radius:99px;font-size:11.5px;font-weight:600;white-space:nowrap}
.badge.ok{background:var(--good-soft);color:var(--good)}.badge.warn{background:var(--warn-soft);color:var(--warn)}
.badge.bad{background:var(--bad-soft);color:var(--bad)}.badge.info{background:var(--info-soft);color:var(--info)}
.badge.mute{background:var(--surface-2);color:var(--ink-3);border:1px solid var(--line)}
.kv{display:grid;grid-template-columns:180px 1fr;gap:5px 14px;font-size:14px}
.kv div:nth-child(odd){color:var(--ink-2)}
.lines td input,.lines td select{min-width:110px}
.report-head{text-align:center;margin-bottom:14px}
.report-head h2{margin:0}
.pager{margin-top:10px;display:flex;gap:6px}
dialog{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink)}
dialog::backdrop{background:rgba(10,16,26,.55)}
details>summary{cursor:pointer;font-weight:600}

/* ---- Cetak ---- */
.print-only{display:none}
.doc{background:#fff;color:#1b2330;max-width:820px;margin:0 auto;padding:28px;border:1px solid var(--line)}
.doc h2{margin:0}
.sign{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:40px;text-align:center}
.sign div{padding-top:60px;border-bottom:1px solid #999}
@media print{
  .topbar,.sidebar,.noprint,.toolbar,.alert{display:none!important}
  .print-only{display:block}
  body{background:#fff;color:#000}
  .content{padding:0}
  .card,.doc,.tablewrap{border:0;padding:0}
}

/* ---- Layar kecil ---- */
@media (max-width:900px){
  .navtoggle{display:block}
  .sidebar{position:fixed;left:-260px;top:0;z-index:40;transition:left .2s;box-shadow:4px 0 24px rgba(0,0,0,.25)}
  body.navopen .sidebar{left:0}
  .topbar .company,.topbar .who small,.hide-sm{display:none!important}
  .topbar{padding:8px 12px;gap:8px}
  .topbar .title{font-size:19px}
  .content{padding:16px}
  .kv{grid-template-columns:1fr}
  html,body{max-width:100%;overflow-x:hidden}
  .form.cols{grid-template-columns:1fr}
  .grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
  dialog{width:calc(100vw - 24px);max-width:none;margin:auto}
  .driver-actions .btn{flex:1 1 100%;justify-content:center}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* ---- PWA: status sinyal & tombol pasang ---- */
.netstate{font-size:12px;padding:2px 9px;border-radius:99px;border:1px solid var(--line);white-space:nowrap}
.netstate.on{color:var(--good);background:var(--good-soft)}
.netstate.off{color:var(--bad);background:var(--bad-soft)}
.netstate.wait{color:var(--warn);background:var(--warn-soft)}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;background:var(--navy);color:#fff;
  padding:10px 16px;border-radius:99px;font-size:13.5px;z-index:60;box-shadow:0 8px 24px rgba(0,0,0,.22)}
.driver-card{border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px;background:var(--surface)}
.driver-card h3{margin:0 0 4px;font-size:16px}
.driver-card .rute{font-size:15px;font-weight:600}
.driver-card .meta{color:var(--ink-2);font-size:13px;margin-top:2px}
.driver-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
@media (display-mode:standalone){.topbar .company{display:none}}
