:root{--ink: #14212e;--ink-2: #4a5b6c;--ink-3: #7b8b9a;--indigo: #17456f;--indigo-2: #2b6ca3;--indigo-soft: #e7eef5;--madder: #a3342b;--madder-soft: #f7e8e6;--ochre: #b5822a;--ochre-soft: #faf0dc;--sage: #2e6f5e;--sage-soft: #e4f0eb;--paper: #f2f5f8;--card: #fff;--line: #dde4ea;--line-2: #eef2f6;--rail: #122b42;--r: 10px;--r-sm: 6px;--shadow: 0 1px 2px rgba(20, 33, 46, .06), 0 4px 14px rgba(20, 33, 46, .05)}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100%}html{scrollbar-gutter:stable}body{font-family:IBM Plex Sans,Segoe UI,system-ui,-apple-system,sans-serif;background:var(--paper);color:var(--ink);font-size:14px;line-height:1.5;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-family:"IBM Plex Serif",Georgia,serif;font-weight:600;letter-spacing:-.01em}button{font:inherit;cursor:pointer}a{color:var(--indigo-2)}:focus-visible{outline:2px solid var(--indigo-2);outline-offset:2px;border-radius:4px}.shell{display:flex;min-height:100vh}.rail{width:226px;flex:0 0 226px;background:var(--rail);color:#c8d6e2;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;scrollbar-width:none}.rail::-webkit-scrollbar{display:none}.brand{padding:20px;border-bottom:1px solid rgba(255,255,255,.09)}.brand .logo{position:relative;background:#fff;border-radius:var(--r-sm);padding:8px 10px;margin-bottom:14px}.brand .logo img{display:block;width:100%;height:auto}.brand h1{font-size:15px;color:#fff;line-height:1.3}.brand .home{display:block;text-decoration:none;color:inherit}.brand .home:hover h1{color:#cfe0ef}.brand p{margin:6px 0 0;font-size:11.5px;color:#8ea7bd;line-height:1.45}.loadbar{position:absolute;left:0;right:0;bottom:0;height:3px;overflow:hidden;background:var(--line-2);border-radius:0 0 var(--r-sm) var(--r-sm)}.loadbar i{position:absolute;top:0;bottom:0;width:40%;background:var(--indigo-2);animation:loadbar 1.15s ease-in-out infinite}@keyframes loadbar{0%{left:-40%}to{left:100%}}@media (prefers-reduced-motion: reduce){.loadbar i{animation-duration:2.4s}}.burger{display:none;width:40px;height:34px;flex:0 0 40px;background:none;border:1px solid rgba(255,255,255,.22);border-radius:var(--r-sm);padding:0;flex-direction:column;align-items:center;justify-content:center;gap:4px}.burger i{display:block;width:16px;height:2px;border-radius:2px;background:#dbe6f0}.burger[aria-expanded=true]{background:#ffffff1f}.nav{padding:10px;flex:1}.nav a{display:block;padding:9px 11px;border-radius:var(--r-sm);color:#b9cadb;text-decoration:none;font-size:13.5px;margin-bottom:1px}.nav a:hover{background:#ffffff12;color:#fff}.nav a.on{background:#fff;color:var(--rail);font-weight:600}.rail-foot{padding:14px 20px;border-top:1px solid rgba(255,255,255,.09);font-size:11.5px;color:#7e99b2}.rail-foot button{background:none;border:0;color:#9fb6c9;padding:0;font-size:11.5px;text-decoration:underline}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{background:var(--card);border-bottom:1px solid var(--line);padding:14px 26px;position:sticky;top:0;z-index:30}.topbar .in{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.topbar h2{font-size:18px}.topbar.with-tools{position:static}.topbar .aside{margin-left:auto;text-align:right;font-size:12.5px;color:var(--ink-2);line-height:1.6}.topbar .aside b{color:var(--ink)}.topbar .tools{margin-top:14px}.picker{position:relative}.pick{width:100%;height:34px;text-align:left;font-size:13px;padding:7px 26px 7px 9px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='none' stroke='%237b8b9a' stroke-width='1.6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4'/%3E%3C/svg%3E") no-repeat right 10px center;color:var(--ink);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.pick:hover{border-color:var(--indigo-2)}.pick.chosen{border-color:#cddced;background-color:var(--indigo-soft)}.picker .menu{position:absolute;z-index:40;top:calc(100% + 4px);left:0;min-width:100%;max-width:340px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow);padding:4px}.picker .find{width:100%;min-width:0;height:30px;margin-bottom:4px}.picker .rows{max-height:238px;overflow-y:auto}.picker .row{display:block;width:100%;text-align:left;border:0;background:none;padding:7px 9px;font-size:13px;border-radius:4px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.picker .row:hover{background:var(--indigo-soft)}.picker .row.on{background:var(--indigo);color:#fff}.picker .row.none{color:var(--ink-3);cursor:default}.tfilters .filters{margin-bottom:10px}.tfilters .filters select,.tfilters .filters .picker{width:180px}.tfilters .filters .fld.trade select,.tfilters .filters .fld.trade .picker{width:290px}.tfilters .filters .fld.chapter .picker,.filters .fld.chapter .picker{width:230px}.filters .fld.district .picker{width:200px}.tfilters .fld.search input{width:260px;padding-left:30px;background:var(--card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='none' stroke='%237b8b9a' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") no-repeat 10px center}.chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center;min-height:26px}.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:3px 11px;border:1px solid var(--line);border-radius:99px;background:var(--card);color:var(--ink-2);white-space:nowrap}.chip.public{background:var(--ochre-soft);border-color:#efdcb4;color:#8c6318}.chip.on{background:var(--indigo-soft);border-color:#cddced;color:var(--indigo)}.chip button{border:0;background:none;padding:0 0 0 2px;font-size:15px;line-height:1;color:inherit;opacity:.7}.chip button:hover{opacity:1}@media (max-width: 560px){.tfilters .fld,.tfilters .fld.search input,.tfilters .filters select,.tfilters .filters .picker,.tfilters .filters .fld.trade select,.tfilters .filters .fld.trade .picker{width:100%}.topbar .aside{flex:0 0 100%;margin-left:0;text-align:left}}.topbar .ctx{font-size:12.5px;color:var(--ink-3)}.content{padding:22px 26px 60px;max-width:1500px;width:100%}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}.panel-head{padding:14px 16px 0}.panel-head h3{font-size:14px}.panel-head p{margin:3px 0 0;font-size:12px;color:var(--ink-3)}.panel-body{padding:14px 16px 16px}.grid{display:grid;gap:14px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.stack{display:grid;gap:14px;align-content:start}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.sec{margin-bottom:22px}.sec-head{display:flex;align-items:baseline;gap:12px;margin-bottom:11px;flex-wrap:wrap}.sec-head h3{font-size:15.5px}.sec-head p{margin:0;font-size:12.5px;color:var(--ink-3)}.spacer{flex:1}.kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:13px 14px;box-shadow:var(--shadow)}button.kpi{display:block;width:100%;font:inherit;color:inherit;text-align:left}.kpi.click{cursor:pointer;transition:border-color .12s,box-shadow .12s,transform .12s}.kpi.click:hover,.kpi.click:focus-visible{border-color:var(--indigo-2);box-shadow:0 2px 12px #102a431a;transform:translateY(-1px)}.kpi.lead.click:hover,.kpi.lead.click:focus-visible{border-color:var(--card)}.kpi .lab{font-size:11.5px;color:var(--ink-3)}.kpi .val{font-size:27px;font-weight:600;line-height:1.15;margin-top:5px;letter-spacing:-.02em}.kpi .val small{font-size:14px;font-weight:500;color:var(--ink-3)}.kpi .foot{font-size:11.5px;color:var(--ink-2);margin-top:6px}.kpi.lead{background:linear-gradient(180deg,#153c60,#17456f);border-color:#153c60;color:#fff}.kpi.lead .lab,.kpi.lead .foot,.kpi.lead .val small{color:#a9c4dc}.kpi .track{height:4px;background:var(--line-2);border-radius:3px;margin-top:9px;overflow:hidden}.kpi.lead .track{background:#ffffff2e}.kpi .track i{display:block;height:100%;border-radius:3px;background:var(--indigo-2)}.kpi.lead .track i{background:#8ec5f0}.bar{height:7px;background:var(--line-2);border-radius:4px;overflow:hidden;min-width:60px;flex:1}.bar i{display:block;height:100%;border-radius:4px;background:var(--indigo-2)}.barwrap{display:flex;align-items:center;gap:8px}.pct{font-size:12px;color:var(--ink-2);min-width:42px;text-align:right}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;padding:2px 9px;border-radius:99px;border:1px solid transparent;white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge.plain:before{display:none}.b-done{background:var(--sage-soft);color:var(--sage);border-color:#c9e1d8}.b-go{background:var(--indigo-soft);color:var(--indigo);border-color:#cddced}.b-risk{background:var(--ochre-soft);color:#8c6318;border-color:#efdcb4}.b-late{background:var(--madder-soft);color:var(--madder);border-color:#eccbc7}.b-idle{background:#f0f3f6;color:var(--ink-3);border-color:var(--line)}.tblwrap{overflow-x:auto;border-radius:var(--r);scrollbar-gutter:stable}table.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:left;font-weight:600;font-size:11.5px;color:var(--ink-2);padding:9px 11px;border-bottom:1px solid var(--line);background:#f8fafb;white-space:nowrap}.tbl td{padding:9px 11px;border-bottom:1px solid var(--line-2)}.tbl tr.now>td{background:var(--indigo-soft)}.tbl tbody tr:hover{background:#f7fafc}.tbl .r{text-align:right}.tbl .muted{color:var(--ink-3)}.nm{font-weight:500}.sub{font-size:11.5px;color:var(--ink-3)}.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;margin-bottom:14px}.fld{display:flex;flex-direction:column}.fld span{font-size:10.5px;color:var(--ink-3);margin-bottom:3px}input,select{font:inherit;font-size:13px;border:1px solid var(--line);border-radius:var(--r-sm);padding:7px 9px;background:var(--card);color:var(--ink);height:34px;min-width:140px}.btn{border:1px solid var(--line);background:var(--card);color:var(--ink-2);border-radius:var(--r-sm);padding:7px 13px;height:34px;font-size:13px}.btn:hover{border-color:var(--indigo-2);color:var(--indigo)}.btn.p{background:var(--indigo);border-color:var(--indigo);color:#fff}.btn.p:hover{background:#0f3557}.btn:disabled{opacity:.5;cursor:default}.note{background:#f8fafb;border:1px solid var(--line);border-left:3px solid var(--indigo-2);border-radius:var(--r-sm);padding:11px 13px;font-size:12.5px;color:var(--ink-2);margin-bottom:16px}.note.warn{border-left-color:var(--ochre);background:#fdfaf3}.empty{text-align:center;padding:34px 20px;color:var(--ink-2)}.empty h3{font-family:IBM Plex Sans,sans-serif;font-size:14px;margin-bottom:6px}.err{color:var(--madder);font-size:13px;margin-top:10px}.login{max-width:390px;margin:9vh auto;padding:28px}.pw{position:relative;display:block}.pw input{width:100%;padding-right:40px}.pw .peek{position:absolute;top:1px;right:1px;bottom:1px;width:36px;display:flex;align-items:center;justify-content:center;border:0;background:none;color:var(--ink-3);border-radius:0 var(--r-sm) var(--r-sm) 0}.pw .peek:hover{color:var(--indigo-2)}.pw .peek:active{color:var(--indigo)}.login-mark{position:relative;max-width:280px;margin:0 auto 20px}.login-logo{display:block;width:100%;height:auto;margin:0}.login h2{font-size:19px;margin-bottom:4px}.login p{margin:0 0 20px;font-size:13px;color:var(--ink-3)}.login label{display:block;margin-bottom:13px}.login label span{display:block;font-size:12px;color:var(--ink-3);margin-bottom:4px}.login input{width:100%}.btn.sm{height:28px;padding:3px 10px;font-size:12px}.btn.danger{color:var(--madder);border-color:#eccbc7}.btn.danger:hover{background:var(--madder-soft);color:var(--madder);border-color:var(--madder)}.note.ok{border-left-color:var(--sage);background:#f3f9f6;color:var(--sage)}.tbl th.act,.tbl td.act{position:sticky;right:0;background:var(--card);text-align:right;white-space:nowrap;box-shadow:-6px 0 8px -6px #14212e1f}.tbl th.act{background:#f8fafb}.tbl tbody tr:hover td.act{background:#f7fafc}.tbl tr.click{cursor:pointer}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#14212e6b;display:flex;align-items:flex-start;justify-content:center;padding:5vh 16px;overflow:auto;z-index:60}.modal{width:100%;max-width:600px}.modal.wide{max-width:760px}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 20px 12px;border-bottom:1px solid var(--line-2)}.modal-head h3{font-size:16px}.modal-head .x{background:none;border:0;font-size:22px;line-height:1;color:var(--ink-3);padding:0 4px}.modal-head .x:hover{color:var(--ink)}.modal-body{padding:16px 20px}.modal-foot{display:flex;align-items:center;gap:8px;padding:12px 20px 16px;border-top:1px solid var(--line-2)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid .fld.wide,.form-grid .form-sec{grid-column:1 / -1}.form-grid input,.form-grid select,.form-grid textarea{width:100%;min-width:0}.form-sec{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);margin-top:6px;padding-top:10px;border-top:1px solid var(--line-2)}.form-sec:first-child{margin-top:0;padding-top:0;border-top:0}textarea{font:inherit;font-size:13px;border:1px solid var(--line);border-radius:var(--r-sm);padding:7px 9px;background:var(--card);color:var(--ink);resize:vertical;min-height:60px}input:disabled,select:disabled{background:#f3f5f7;color:var(--ink-3)}.fld .hint{font-style:normal;font-size:11px;color:var(--ink-3);margin-top:3px}.rail-foot button+button{margin-left:10px}@media (max-width: 560px){.form-grid{grid-template-columns:minmax(0,1fr)}}.linechart svg{width:100%;height:auto;display:block;overflow:visible}.linechart .legend{display:flex;flex-wrap:wrap;justify-content:center;gap:18px;font-size:12.5px;font-weight:500;margin-bottom:2px}.linechart .legend span{display:inline-flex;align-items:center;gap:6px}.linechart .legend i{width:12px;height:12px;border-radius:50%;flex:0 0 12px}.linechart .legend i.dash{width:16px;height:0;border-top:2px dashed var(--ink-2);border-radius:0;flex:0 0 16px}.linechart .tick{font-size:11px;fill:var(--ink-3)}.linechart .tick.l{fill:var(--ink-2)}.linechart .mark{font-size:11px;fill:var(--ink-3)}.linechart .mark.done{fill:var(--sage);font-weight:600}.linechart .mark.next,.linechart .tick.x.on{fill:var(--ink);font-weight:600}.linechart .axis-title{font-size:11.5px;font-weight:600}.linechart .foot{margin:6px 0 0;text-align:center}.quarters{display:flex;flex-wrap:wrap;gap:1px;background:var(--line-2);border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;margin-top:14px}.quarters .head,.quarters .q{background:var(--card);padding:9px 13px;flex:1 1 130px;min-width:0}.quarters .head{flex:0 0 150px;font-size:12.5px;font-weight:600;color:var(--ink-2);display:flex;flex-direction:column;justify-content:center;background:#f8fafb}.quarters .head span{font-weight:400;font-size:11px;color:var(--ink-3)}.quarters .q .when{font-size:11.5px;color:var(--ink-3)}.quarters .q b{display:block;font-size:17px;margin:2px 0 1px;color:var(--ink-2)}.quarters .q.done b{color:var(--sage)}.quarters .q.next b{color:var(--indigo)}.linechart .plot{position:relative;touch-action:pan-y}.linechart .tip{position:absolute;transform:translate(10px);background:#122b42f2;color:#fff;border-radius:var(--r-sm);padding:8px 10px;font-size:12px;line-height:1.5;pointer-events:none;white-space:nowrap;box-shadow:0 6px 18px #14212e40;z-index:5}.linechart .tip.right{transform:translate(calc(-100% - 10px))}.linechart .tip .when{font-weight:600;margin-bottom:4px}.linechart .tip .row{display:flex;align-items:center;gap:8px}.linechart .tip .row i{width:9px;height:9px;border-radius:50%;flex:0 0 9px}.linechart .tip .row .lab{flex:1;color:#c8d6e2}.linechart .tip .row b{font-variant-numeric:tabular-nums}.linechart .tip .row.share{margin-top:4px;padding-top:4px;border-top:1px solid rgba(255,255,255,.18)}.linechart .tip .row.share .lab{padding-left:17px}.hbar{display:flex;flex-direction:column;gap:9px}.hbar .row .top{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;margin-bottom:3px}.hbar .row .top .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 1200px){.kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.g3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 860px){.shell{flex-direction:column}.rail{width:100%;flex:none;height:auto;position:static}.brand{display:flex;flex-wrap:wrap;align-items:center;gap:11px;padding:10px 14px}.brand .home{flex:1;min-width:0;display:flex;align-items:center;gap:11px}.brand .logo{width:116px;flex:0 0 116px;margin:0;padding:5px 7px}.brand h1{font-size:14px}.brand p{flex:0 0 100%;order:3;margin:4px 0 0}.burger{display:flex;order:2}.nav,.rail-foot{display:none}.rail.open .nav{display:block;padding:8px 10px;border-top:1px solid rgba(255,255,255,.09)}.rail.open .rail-foot{display:block}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.g2,.g3{grid-template-columns:minmax(0,1fr)}.content,.topbar{padding-left:14px;padding-right:14px}}.tbl td.go{width:1%;padding-left:22px;text-align:right;white-space:nowrap}.dlist{margin-top:14px;height:116px;overflow-y:auto;scrollbar-gutter:stable;display:flex;flex-direction:column;gap:2px}.dlist .drow{display:flex;align-items:center;gap:8px;width:100%;padding:4px 6px;border:0;border-radius:6px;background:none;font:inherit;font-size:12.5px;color:inherit;text-align:left;cursor:pointer}.dlist .drow:hover,.dlist .drow:focus-visible{background:var(--line-2)}.dlist .drow i{width:10px;height:10px;border-radius:2px;flex:0 0 10px}.dlist .drow span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pick{cursor:pointer}svg circle.pick:hover{opacity:.82}.legend-row.pick{border-radius:6px;padding:3px 6px}.legend-row.pick:hover,.legend-row.pick:focus-visible{background:var(--line-2)}.tbl .typed{position:relative;padding-right:9px;border-bottom:1px dashed var(--ochre);cursor:help}.tbl .typed:after{content:"";position:absolute;top:0;right:0;width:5px;height:5px;border-radius:50%;background:var(--ochre)}.grid.top{align-items:start}.places{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.place{display:flex;flex-direction:column;gap:4px;padding:12px 10px;text-align:left;border:1px solid var(--line);border-radius:10px;background:var(--card);cursor:pointer;transition:border-color .12s,box-shadow .12s,transform .12s}.place:hover,.place:focus-visible{border-color:var(--indigo-2);box-shadow:0 2px 10px #102a4317;transform:translateY(-1px)}.place .lab{font-size:12px;color:var(--ink-2)}.place b{font-size:24px;font-weight:650;letter-spacing:-.01em}.crumbs{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2);min-width:0}.crumbs .crumb{background:none;border:0;padding:0;color:var(--indigo-2);cursor:pointer;text-decoration:underline;font:inherit}.crumbs .here{color:var(--ink-1);font-weight:600}.btn.tiny{padding:3px 9px;font-size:12px}@media (max-width: 560px){.places{grid-template-columns:minmax(0,1fr)}}
