/* =====================================================================================
   ACWIS Console: product shell styles.
   Visual language (brief §1): accent #1877F2, IBM Plex Sans + IBM Plex Mono, dark top bar, left
   navigation rail, five-bin sequential blue choropleth with an orange selection outline.
   Shortage-line colour code (used on every supply view): deep red = no physician; red = below the
   1:3,500 line; amber = within reach of the line (1:2,500 to 1:3,500); light green = adequately served;
   green = best served. The same five colours are used in legends, tables and status chips.
   Inherits site CSS variables (styles.css). Everything here is scoped under .acw.
   ===================================================================================== */
.acw{--acw-navy:#0a1f3a; --acw-bar:#0b2545; --acw-rail:#f4f7fb; --acw-line:#dbe4ef; --acw-ink:#0a2540; --acw-ink2:#33475b; --acw-muted:#6b7c8f;
     --acw-accent:#1877F2; --acw-accent-deep:#1559c0; --acw-select:#ff8a00;
     --ln-none:#7f1d1d; --ln-below:#d7301f; --ln-near:#f59e0b; --ln-ok:#8fd19e; --ln-good:#1a7a3c;
     --blue1:#eff6ff; --blue2:#bfdbfe; --blue3:#60a5fa; --blue4:#2563eb; --blue5:#1e3a8a;
     --font:"IBM Plex Sans",system-ui,-apple-system,Segoe UI,Helvetica,Arial,sans-serif; --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
     font-family:var(--font); color:var(--acw-ink); border:1px solid var(--acw-line); border-radius:14px; overflow:hidden; background:#fff; margin-top:22px;}
.acw *{box-sizing:border-box}
/* ---- top bar ---- */
.acw .bar{display:flex; align-items:center; gap:14px; background:var(--acw-bar); color:#e6eefb; padding:10px 16px; min-height:56px;}
.acw .bar .prod{display:flex; align-items:center; gap:10px; font-weight:600; letter-spacing:-.01em;}
.acw .bar .prod .mark{width:26px;height:26px;border-radius:7px;background:var(--acw-accent);display:grid;place-items:center;}
.acw .bar .prod .ver{font-family:var(--mono); font-size:.72rem; color:#8fbcff; font-weight:500; margin-left:4px;}
.acw .bar .meta{display:flex; gap:16px; flex-wrap:wrap; font-size:.78rem; color:#aec4e0; margin-left:8px;}
.acw .bar .meta b{color:#fff; font-weight:600;}
.acw .bar .sp{flex:1}
.acw .bar .bbtn{background:transparent; color:#e6eefb; border:1px solid rgba(255,255,255,.28); border-radius:8px; padding:6px 11px; font:inherit; font-size:.8rem; cursor:pointer; white-space:nowrap; text-decoration:none; flex:0 0 auto;}
.acw .bar .prod{white-space:nowrap;}
.acw .bar .bbtn:hover{background:rgba(255,255,255,.08);} .acw .bar .bbtn.pri{background:var(--acw-accent); border-color:var(--acw-accent);}
.acw .bar .dot{width:8px;height:8px;border-radius:50%;background:#34d399;display:inline-block;margin-right:6px;}
/* ---- body: rail + workspace ---- */
.acw .body{display:grid; grid-template-columns:232px 1fr; min-height:680px;}
.acw .rail{background:var(--acw-rail); border-right:1px solid var(--acw-line); padding:14px 10px; display:flex; flex-direction:column; gap:3px;}
.acw .rail .rt{font-size:.68rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--acw-muted); padding:6px 10px 8px;}
.acw .rail a{display:flex; align-items:center; gap:10px; padding:9px 10px; border-radius:9px; color:var(--acw-ink2); font-weight:500; font-size:.92rem; text-decoration:none; line-height:1.2;}
.acw .rail a:hover{background:#fff; color:var(--acw-ink);}
.acw .rail a.active{background:var(--acw-navy); color:#fff;}
.acw .rail a svg{width:17px;height:17px;flex:0 0 17px; stroke:currentColor; fill:none; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round;}
.acw .rail .rf{margin-top:auto; padding:10px; font-size:.74rem; color:var(--acw-muted); line-height:1.45;}
.acw .rail .rf .sc{font-family:var(--mono); font-size:.68rem; color:var(--acw-ink2); word-break:normal; overflow-wrap:normal; display:block; margin-top:6px;}
.acw .ws{padding:22px 26px 28px; min-width:0;}
.acw h2{font-family:var(--font); font-size:1.38rem; font-weight:600; letter-spacing:-.015em; margin:0 0 4px; color:var(--acw-ink); display:flex; align-items:center; gap:10px; flex-wrap:wrap;}
.acw .sub{color:var(--acw-ink2); font-size:.95rem; max-width:76ch; margin:0 0 16px; line-height:1.55;}
.acw p{margin:0 0 .8rem}
/* ---- labels (brief §2) ---- */
.acw .lb{display:inline-flex; align-items:center; gap:5px; font-family:var(--mono); font-size:.66rem; font-weight:600; letter-spacing:.04em; text-transform:uppercase; padding:3px 8px; border-radius:6px; border:1px solid; vertical-align:middle; white-space:nowrap;}
.acw .lb.obs{color:#166534; border-color:#86efac; background:#f0fdf4;} .acw .lb.mod{color:#92400e; border-color:#fcd34d; background:#fffbeb;}
.acw .lb.cau{color:#1e40af; border-color:#93c5fd; background:#eff6ff;} .acw .lb.sim{color:#991b1b; border-color:#fca5a5; background:#fef2f2;} .acw .lb.inp{color:#5b21b6; border-color:#c4b5fd; background:#f5f3ff;}
/* ---- KPI tiles ---- */
.acw .kpis{display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin:14px 0 18px;}
.acw .kpi{background:#fff; border:1px solid var(--acw-line); border-radius:12px; padding:14px 15px 12px; position:relative;}
.acw .kpi .v{font-family:var(--mono); font-weight:600; font-size:1.55rem; line-height:1; color:var(--acw-ink); letter-spacing:-.02em;}
.acw .kpi .v.ac{color:var(--acw-accent-deep);} .acw .kpi .v.gr{color:#8fa3bf;} .acw .kpi .v.good{color:var(--ln-good);} .acw .kpi .v.bad{color:var(--ln-below);}
.acw .kpi .l{font-size:.8rem; color:var(--acw-ink2); margin-top:7px; line-height:1.35;}
.acw .kpi .lb{position:static; display:inline-flex; margin-bottom:9px;}
/* ---- controls ---- */
.acw .ctl{display:grid; grid-template-columns:1fr 1fr; gap:14px 22px; margin:10px 0 6px;}
.acw .ctl.three{grid-template-columns:1fr 1fr 1fr;} .acw .ctl.four{grid-template-columns:repeat(4,1fr);}
.acw .f{display:flex; flex-direction:column; gap:5px;} .acw .f.full{grid-column:1/-1;}
.acw label{font-size:.84rem; font-weight:600; color:var(--acw-ink);} .acw label small{font-weight:400; color:var(--acw-muted); margin-left:4px;}
.acw select,.acw input[type=number],.acw input[type=text]{font:inherit; font-size:.92rem; padding:8px 10px; border:1px solid #c3d2e4; border-radius:8px; background:#fff; color:var(--acw-ink);}
.acw input[type=range]{width:100%; accent-color:var(--acw-accent);}
.acw .val{font-family:var(--mono); font-weight:600; color:var(--acw-accent-deep); font-size:.84rem;}
.acw .help{font-size:.76rem; color:var(--acw-muted); line-height:1.4;}
.acw .seg{display:inline-flex; flex-wrap:wrap; border:1px solid #c3d2e4; border-radius:8px; overflow:hidden;}
.acw .seg button{font:inherit; font-size:.8rem; font-weight:500; padding:6px 11px; border:0; background:#fff; color:var(--acw-ink2); cursor:pointer; white-space:nowrap; width:auto; height:auto; min-width:0; flex:0 0 auto;}
.acw .seg button + button{border-left:1px solid #dbe5f1;}
.acw .seg button:hover{background:#eef4fb;}
.acw .seg button[aria-pressed=true]{background:var(--acw-navy); color:#fff;}
.acw .row{display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin:12px 0;}
.acw .btn{display:inline-flex; align-items:center; gap:8px; font:inherit; font-size:.86rem; font-weight:600; padding:8px 14px; border-radius:9px; border:1px solid #c3d2e4; background:#fff; color:var(--acw-ink); cursor:pointer; text-decoration:none;}
.acw .btn:hover{border-color:var(--acw-navy); text-decoration:none;} .acw .btn.pri{background:var(--acw-accent); border-color:var(--acw-accent); color:#fff;} .acw .btn.pri:hover{background:var(--acw-accent-deep);}
/* ---- panels, tables, charts ---- */
.acw .panel{border:1px solid var(--acw-line); border-radius:12px; padding:14px 16px; margin-top:12px; background:#fff;}
.acw .panel h3{font-size:.95rem; font-weight:600; margin:0 0 8px; display:flex; align-items:center; gap:8px; flex-wrap:wrap;}
.acw .panel.warn{border-color:#fcd34d; background:#fffbeb;} .acw .panel.stop{border-color:#fca5a5; background:#fef2f2;} .acw .panel.soft{background:var(--acw-rail);}
.acw .grid2{display:grid; grid-template-columns:1fr 1fr; gap:14px;} .acw .grid3{display:grid; grid-template-columns:repeat(3,1fr); gap:12px;}
.acw .tbl{width:100%; border-collapse:collapse; font-size:.84rem;}
.acw .tbl th,.acw .tbl td{text-align:left; padding:7px 8px; border-bottom:1px solid var(--acw-line); vertical-align:top;}
.acw .tbl th{font-family:var(--mono); font-size:.66rem; letter-spacing:.05em; text-transform:uppercase; color:var(--acw-muted); font-weight:600; background:var(--acw-rail); position:sticky; top:0; z-index:1;}
.acw .tbl td.num,.acw .tbl th.num{text-align:right; font-variant-numeric:tabular-nums; font-family:var(--mono); font-size:.8rem;}
.acw .tbl tr.hl td{background:#eff6ff;} .acw .tbl tr.sel td{outline:2px solid var(--acw-select); outline-offset:-2px;}
.acw .tscroll{max-height:400px; overflow:auto; border:1px solid var(--acw-line); border-radius:10px; margin-top:10px;}
.acw .cchart{position:relative; height:290px; margin-top:10px;} .acw .cchart.tall{height:350px;} .acw .cchart.short{height:230px;}
.acw .note{font-size:.78rem; color:var(--acw-muted); line-height:1.45; margin-top:8px;}
.acw .mono{font-family:var(--mono);}
.acw .st{display:inline-block; width:10px; height:10px; border-radius:3px; margin-right:6px; vertical-align:-1px;}
.acw .st.none{background:var(--ln-none)} .acw .st.below{background:var(--ln-below)} .acw .st.near{background:var(--ln-near)} .acw .st.ok{background:var(--ln-ok)} .acw .st.good{background:var(--ln-good)}
.acw .chipst{display:inline-flex; align-items:center; gap:6px; font-size:.76rem; font-weight:600; padding:3px 8px; border-radius:999px; background:var(--acw-rail); color:var(--acw-ink2);}
/* ---- map ---- */
.acw .mapwrap{display:grid; grid-template-columns:1fr 300px; gap:14px; margin-top:12px;}
.acw .cmap{position:relative; border:1px solid var(--acw-line); border-radius:12px; overflow:hidden; background:#f6f9fe;}
.acw .cmap svg{width:100%; height:auto; display:block;}
.acw .cmap svg path.county{cursor:pointer;} .acw .cmap svg path.county:focus{outline:none;}
.acw .cmap .tip{position:absolute; pointer-events:none; background:var(--acw-navy); color:#fff; font-size:.78rem; padding:7px 10px; border-radius:8px; opacity:0; transition:opacity .12s; max-width:270px; line-height:1.35; z-index:5;}
.acw .cmap .legend{display:flex; gap:12px; flex-wrap:wrap; padding:9px 12px; font-size:.74rem; color:var(--acw-ink2); border-top:1px solid var(--acw-line); background:#fff; align-items:center;}
.acw .cmap .legend i{display:inline-block; width:12px; height:12px; border-radius:3px; margin-right:5px; vertical-align:-2px; border:1px solid rgba(0,0,0,.08);}
.acw .cmap .loading{padding:40px; text-align:center; color:var(--acw-muted);}
.acw .detail{border:1px solid var(--acw-line); border-radius:12px; padding:14px; background:#fff; font-size:.86rem;}
.acw .detail h4{margin:0 0 6px; font-size:1rem; font-weight:600;} .acw .detail .kv{display:grid; grid-template-columns:auto 1fr; gap:4px 10px; font-size:.82rem;}
.acw .detail .kv b{font-family:var(--mono); font-weight:600; font-size:.8rem; text-align:right;} .acw .detail .empty{color:var(--acw-muted); padding:18px 0;}
/* ---- report ---- */
.acw .report{background:#fff; border:1px solid var(--acw-line); border-radius:12px; padding:24px 28px; margin-top:12px; line-height:1.6; font-size:.93rem;}
.acw .report h3{font-size:1.2rem; margin:0 0 4px;} .acw .report h4{font-size:.92rem; margin:16px 0 6px; color:var(--acw-ink);}
.acw .report .meta{font-family:var(--mono); font-size:.72rem; color:var(--acw-muted); margin-bottom:10px;}
.acw .report ul{margin:0 0 8px 18px; padding:0;} .acw .report li{margin:2px 0;}
.acw .log{font-family:var(--mono); font-size:.74rem; background:var(--acw-rail); border:1px solid var(--acw-line); border-radius:10px; padding:10px 12px; max-height:220px; overflow:auto; color:var(--acw-ink2); white-space:pre-wrap;}
.acw .quick{display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:12px;}
.acw .quick a{display:block; border:1px solid var(--acw-line); border-radius:11px; padding:12px 14px; background:var(--acw-rail); color:var(--acw-ink); text-decoration:none;}
.acw .quick a:hover{border-color:var(--acw-accent); background:#fff;} .acw .quick a b{display:block; font-size:.92rem; margin-bottom:3px;} .acw .quick a span{font-size:.8rem; color:var(--acw-ink2);}
.acw .barrow{display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:10px;} .acw .meter{height:9px; border-radius:6px; background:#e8eef7; overflow:hidden;} .acw .meter i{display:block; height:100%; background:var(--acw-accent);}
.acw .audit{display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:10px;}
.acw .audit .a{border:1px solid var(--acw-line); border-radius:10px; padding:10px 12px; background:#fff;} .acw .audit .a .v{font-family:var(--mono); font-weight:600; font-size:1.1rem;} .acw .audit .a .l{font-size:.76rem; color:var(--acw-ink2);}
.acw .toast{position:fixed; left:50%; bottom:22px; transform:translateX(-50%); background:var(--acw-navy); color:#fff; padding:10px 14px; border-radius:10px; font-size:.84rem; opacity:0; transition:opacity .2s; pointer-events:none; z-index:50;}
.acw .toast.on{opacity:1;}
/* ---- responsive ---- */
@media (max-width:1080px){ .acw .mapwrap{grid-template-columns:1fr;} .acw .kpis{grid-template-columns:1fr 1fr;} }
@media (max-width:960px){
  .acw .body{grid-template-columns:1fr;} .acw .rail{flex-direction:row; flex-wrap:wrap; gap:6px; border-right:0; border-bottom:1px solid var(--acw-line); padding:10px;}
  .acw .rail .rt,.acw .rail .rf{display:none;} .acw .rail a{padding:7px 10px; font-size:.82rem;} .acw .ws{padding:16px 14px 22px;}
  .acw .ctl,.acw .ctl.three,.acw .ctl.four,.acw .grid2,.acw .grid3,.acw .quick,.acw .audit,.acw .barrow{grid-template-columns:1fr;}
  .acw .bar .meta{display:none;}
  .acw .bar{gap:8px; padding:8px 10px; min-height:50px; overflow-x:auto;}
  .acw .bar .prod .ver, .acw .bar #netstate .nt, .acw .bar a.bbtn[href="index.html"]{display:none;}
  .acw .bar #netstate{display:inline-flex; margin-left:auto; margin-right:2px;} .acw .bar .sp{display:none;}
  .acw .bar .bbtn{padding:6px 9px; font-size:.76rem;}
}
@media (max-width:420px){ .acw .kpis{grid-template-columns:1fr;} }
@media print{ header.nav, footer, .pagenav, .acw .rail, .acw .bar, .acw .row, .sec.first > .reveal:first-child{display:none!important;} .acw{border:0;} .acw .ws{padding:0;} .acw .report{border:0; padding:0;} }

/* ---- full-window mode (console.html): the console is the whole tab ---- */
.acw.full{position:fixed; inset:0; margin:0; border:0; border-radius:0; display:flex; flex-direction:column; height:100vh; height:100dvh;}
.acw.full .bar{flex:0 0 auto;}
.acw.full .body{flex:1 1 auto; min-height:0; grid-template-rows:1fr;}
.acw.full .rail{overflow:auto; min-height:0;}
.acw.full .ws{overflow:auto; min-height:0; height:100%; -webkit-overflow-scrolling:touch;}
@media (max-width:960px){ .acw.full .body{grid-template-columns:1fr; grid-template-rows:auto 1fr;} .acw.full .rail{overflow-x:auto; flex-wrap:nowrap; white-space:nowrap;} .acw.full .rail a{flex:0 0 auto;} }
