:root{--bg:#f6f5f1;--panel:#fff;--fg:#1d1d1b;--muted:#676660;--line:#e1dfd7;--accent:#1f4e79;--accent-fg:#fff;--ok:#2d7a4b;--ok-bg:#e3f1e8;--warn:#9a6200;--warn-bg:#fbf0d6;--bad:#b3372e;--bad-bg:#f9e2df;--chip:#efeee8}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;font-variant-numeric:tabular-nums}
a{color:var(--accent)}
header.top{background:var(--accent);color:var(--accent-fg);padding:0 max(16px,env(safe-area-inset-left))}
header.top .bar{max-width:1200px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;min-height:52px}
header.top .brand{font-weight:600;margin-right:8px;white-space:nowrap}
header.top nav{display:flex;flex-wrap:wrap;gap:2px}
header.top nav a{color:var(--accent-fg);text-decoration:none;opacity:.85;padding:6px 10px;border-radius:6px;font-size:14px}
header.top nav a.on,header.top nav a:hover{opacity:1;background:rgba(255,255,255,.15)}
header.top .who{margin-left:auto;font-size:13px;opacity:.85;display:flex;gap:10px}
header.top .who a{color:var(--accent-fg)}
main{max-width:1200px;margin:0 auto;padding:18px max(16px,env(safe-area-inset-left)) 48px}
h1{font-size:22px;margin:0 0 4px}
h2{font-size:17px;margin:24px 0 8px}
.sub{color:var(--muted);margin:0 0 16px;font-size:14px}
.flash{background:var(--chip);border-left:4px solid var(--accent);padding:10px 14px;border-radius:6px;margin:0 0 16px}
.tabs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 16px}
.tabs a{padding:6px 12px;border-radius:999px;background:var(--panel);border:1px solid var(--line);text-decoration:none;color:var(--fg);font-size:14px}
.tabs a.on{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}
.tabs .badge{display:inline-block;min-width:18px;padding:0 5px;margin-left:6px;border-radius:9px;background:var(--bad);color:#fff;font-size:12px;text-align:center}
.tabs a.on .badge{background:#fff;color:var(--bad)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:0 0 18px}
.card .big{font-size:26px;font-weight:600}
.card .lab{color:var(--muted);font-size:13px}
.scroll{overflow-x:auto;background:var(--panel);border:1px solid var(--line);border-radius:10px}
table{border-collapse:collapse;width:100%;font-size:14px}
th{text-align:left;font-weight:600;color:var(--muted);font-size:12.5px;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--panel);position:sticky;top:0}
td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
tr:last-child td{border-bottom:0}
td.num,th.num{text-align:right;white-space:nowrap}
td .code{color:var(--muted);font-size:12.5px;display:block}
.pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12.5px;font-weight:600;white-space:nowrap}
.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.short{background:var(--bad-bg);color:var(--bad)}
.pill.hold{background:var(--warn-bg);color:var(--warn)}.pill.missing{background:var(--chip);color:var(--muted)}.pill.none{background:var(--chip);color:var(--muted)}
.tier{display:inline-block;width:20px;height:20px;border-radius:5px;text-align:center;font-size:12px;line-height:20px;font-weight:700;background:var(--chip)}
.bad{color:var(--bad);font-weight:600}.ok{color:var(--ok)}.muted{color:var(--muted)}
form.inline{display:inline}
label{display:block;font-size:13px;color:var(--muted);margin:10px 0 4px}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{font:inherit;padding:8px 10px;border:1px solid #c9c7be;border-radius:7px;background:#fff;color:var(--fg);width:100%;max-width:420px}
input.qty{width:110px;max-width:none;text-align:right}
button,.btn{font:inherit;padding:9px 16px;border-radius:8px;border:0;background:var(--accent);color:var(--accent-fg);cursor:pointer;text-decoration:none;display:inline-block}
button.secondary,.btn.secondary{background:var(--chip);color:var(--fg)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #9cc0e6;outline-offset:1px}
.row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}
.note{font-size:13px;color:var(--muted);margin:8px 0 0;max-width:80ch}
.entry .item{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:0 0 10px}
.entry .item h3{margin:0;font-size:15px}
.entry .grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:8px}
.entry .grid label{margin:0 0 3px}
.entry .grid input{width:100%;max-width:none;text-align:right}
.entry .prev{font-size:12.5px;color:var(--muted);margin-top:4px}
.sticky-save{position:sticky;bottom:0;background:var(--bg);padding:12px 0;border-top:1px solid var(--line);margin-top:12px}
.login{max-width:380px;margin:60px auto}
.cal input{width:64px;max-width:none;text-align:right;padding:6px}
@media (max-width:640px){header.top .bar{gap:0 10px;padding:6px 0}header.top .brand{font-size:14px}header.top nav{order:3;width:100%;flex-wrap:nowrap;overflow-x:auto;margin:0 -4px;padding-bottom:6px;scrollbar-width:none}header.top nav a{white-space:nowrap;font-size:13.5px;padding:5px 9px}header.top .who{margin-left:auto;font-size:12px}main{padding-top:14px}h1{font-size:19px}.entry .grid{gap:6px}.entry .grid label{font-size:11.5px}}
.entry .grid>div{display:flex;flex-direction:column;justify-content:flex-end}
.entry h2{margin:22px 0 10px}
.entry .list{padding:4px 14px}.entry .li{display:grid;grid-template-columns:minmax(0,1fr) 130px;gap:12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}.entry .li:last-child{border-bottom:0}.entry .li label{margin:0;color:var(--fg);font-size:14px}.entry .li .prev{display:block;margin-top:2px}.entry .li input{width:100%;max-width:none;text-align:right}
@media (max-width:640px){.entry .li{grid-template-columns:minmax(0,1fr) 105px;gap:8px}}
tr.sec td{background:var(--bg);font-size:13px;padding-top:10px}
.entry .grid.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.entry details.chk{margin-top:6px}.entry details.chk summary{font-size:13px;color:var(--muted);cursor:pointer}.entry details.chk .grid.g4>div{grid-column:span 1}
@media (max-width:640px){.entry .grid.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}
.onsgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px 16px}.onsgrid label{font-size:13px;color:var(--fg);margin:0 0 3px}.onsgrid input{width:100%;max-width:none;text-align:right}
details.xl{margin:0 0 14px}details.xl summary{cursor:pointer;font-size:14px}
