*{box-sizing:border-box}body{margin:0;font:15px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:#f3f4f6;color:#111}
.preview{background:#fde047;padding:6px 12px;font-size:13px;text-align:center;font-weight:600}
.demo{background:#7c3aed;color:#fff;padding:8px 12px;font-size:13px;text-align:center}
header{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#111827;color:#fff;flex-wrap:wrap}header h1{margin:0;font-size:20px}.logo{height:36px;background:#fff;border-radius:6px;padding:2px}
header .muted{color:#cbd5e1}.ds{margin-left:auto;display:flex;gap:4px}.ds button{background:#374151;color:#fff;border:0;padding:8px 12px;border-radius:6px}.ds button.on{background:#22c55e;color:#000;font-weight:700}
nav{display:flex;gap:2px;background:#fff;border-bottom:1px solid #ddd;overflow-x:auto;position:sticky;top:0;z-index:5}nav button{border:0;background:none;padding:12px 14px;font-size:15px;white-space:nowrap;border-bottom:3px solid transparent}nav button.on{border-color:#2563eb;font-weight:700}
main{padding:12px;max-width:1300px;margin:0 auto}.card{background:#fff;border-radius:10px;padding:14px;margin-bottom:12px;box-shadow:0 1px 2px #0001}h2{margin:0 0 8px;font-size:18px}h3{font-size:15px;margin:14px 0 6px}
.muted{color:#6b7280;font-size:13px}.pill{background:#ef4444;color:#fff;border-radius:10px;padding:0 7px;font-size:12px}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;margin-bottom:12px}.tile{background:#fff;border-radius:10px;padding:10px;box-shadow:0 1px 2px #0001}.tile b{display:block;font-size:19px}.tile span{font-size:12px;color:#6b7280}
.branches{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:10px}
.br{background:#fff;border-radius:10px;padding:12px;border-left:8px solid #9ca3af;box-shadow:0 1px 2px #0001}.br.green{border-color:#16a34a}.br.amber{border-color:#f59e0b}.br.red{border-color:#dc2626}
.br h3{margin:0 0 6px;display:flex;justify-content:space-between;align-items:center}.dot{font-size:12px;padding:2px 8px;border-radius:10px;color:#fff}.dot.green{background:#16a34a}.dot.amber{background:#f59e0b;color:#000}.dot.red{background:#dc2626}
.kv{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:2px 10px;font-size:14px}.kv .h{grid-column:1/3;font-weight:700;margin-top:6px;font-size:12px;color:#374151;text-transform:uppercase}
.bar{height:8px;background:#e5e7eb;border-radius:4px;overflow:hidden;margin:4px 0}.bar i{display:block;height:100%;background:#2563eb}
table{border-collapse:collapse;width:100%;font-size:14px}td,th{padding:7px 6px;border-bottom:1px solid #eee;text-align:left;vertical-align:top}th{font-size:12px;color:#6b7280}td.r,th.r{text-align:right}
tr.sel{background:#dbeafe}.age{font-size:12px;padding:1px 6px;border-radius:8px;background:#fef3c7}.age.old{background:#fecaca}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:900px){.cols{grid-template-columns:1fr}}
.sticky{position:sticky;bottom:0;background:#111827;color:#fff;padding:10px;border-radius:10px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;z-index:4}
.sticky input{flex:1;min-width:180px;padding:9px;border-radius:6px;border:0;font-size:15px}.sticky .sum{font-size:14px}
button{font:inherit;padding:9px 14px;border-radius:6px;border:1px solid #d1d5db;background:#fff;cursor:pointer;min-height:40px}button.primary{background:#2563eb;color:#fff;border-color:#2563eb}button.warn{background:#f59e0b;border-color:#f59e0b}button:disabled{opacity:.5}
input,select,textarea{font:inherit;padding:8px;border:1px solid #d1d5db;border-radius:6px;width:100%}label{display:block;font-size:13px;color:#374151;margin:6px 0}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px}.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:4px 10px}@media(max-width:600px){.grid2{grid-template-columns:1fr}.grid4{grid-template-columns:1fr 1fr}}
.err{background:#fee2e2;color:#991b1b;padding:8px;border-radius:6px;margin-top:8px;white-space:pre-wrap}.ok{background:#dcfce7;color:#166534;padding:8px;border-radius:6px;margin-top:8px}
.warnbox{background:#fef3c7;padding:8px;border-radius:6px;margin:6px 0;font-size:13px}.sug{font-size:12px;color:#2563eb;cursor:pointer;text-decoration:underline}
.gate{position:fixed;inset:0;background:#0008;display:flex;align-items:center;justify-content:center;z-index:9}
input[type=checkbox]{width:22px;height:22px}
[hidden]{display:none!important}

.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.scroll table{min-width:520px}
@media(max-width:600px){nav{flex-wrap:wrap;position:static}nav button{padding:10px 9px;font-size:14px}}

/* Review r2 fix 7: phone (390px) must not scroll sideways. Grid children may shrink; long text wraps; check-tab tables fit. */
.cols>*{min-width:0}.grid2>*,.grid4>*,.tiles>*,.branches>*{min-width:0}
td,th,.tile span,.warnbox,label,.sticky .sum{overflow-wrap:break-word}.wrap{overflow-wrap:anywhere}.age,.dot{white-space:nowrap}
td.r,th.r{white-space:nowrap;overflow-wrap:normal}
code.wrap{display:block;font-size:12px;background:#f3f4f6;padding:4px;border-radius:4px;word-break:break-all}
.tile-wide{grid-column:span 2}
@media(max-width:600px){
 .scroll table.fit{min-width:0}table.fit td,table.fit th{padding:6px 4px}table.fit{font-size:13px}
 .sticky{padding:8px;gap:6px}.sticky input{min-width:0;flex-basis:100%;padding:7px}.sticky button{flex:1 1 auto;min-height:36px;padding:6px 8px;font-size:14px}
 .grid4{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.grid2{grid-template-columns:minmax(0,1fr)}
 .tile-wide{grid-column:1/-1}
 header .ds{margin-left:0}
}
