:root{--indigo-600:#2b2c82;--indigo-500:#3a3ca8;--indigo-100:#e4e5f7;--azure-500:#009fe3;--azure-100:#dcf1fc;
--gold-500:#d9a441;--gold-100:#faf1d9;--navy-900:#0b0f24;--paper:#f6f8fb;--mist:#eef1f6;--steel-100:#e3e8ef;
--steel-200:#cdd5e0;--steel-300:#aab4c4;--steel-400:#7e8aa0;--steel-500:#576078;--ink:#0e1324;
--ok-500:#3f9d54;--ok-100:#e2f2e6;--alert-500:#d64530;--alert-100:#fbe6e2;--r:8px}
*{box-sizing:border-box}html,body{margin:0}
body{background:var(--paper);color:var(--ink);font-family:Manrope,system-ui,sans-serif;font-size:.9rem;line-height:1.5}
h1,h2,h3,h4{font-family:"Exo 2",Manrope,sans-serif;margin:0}
a{color:var(--indigo-600)}
header.bar{background:var(--navy-900);color:#eef2fb;padding:14px 22px;display:flex;gap:16px;align-items:center;flex-wrap:wrap}
header.bar img{width:30px;height:30px}
header.bar h1{font-size:1.1rem}
header.bar .crumb{color:#a7b0cc;font-size:.8rem}header.bar .crumb a{color:#c9cdf0;text-decoration:none}
header.bar .sp{flex:1}
main{padding:22px;max-width:1400px;margin:0 auto}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;margin-top:14px}
.tile{display:block;background:#fff;border:1px solid var(--steel-200);border-radius:var(--r);padding:18px 20px;text-decoration:none;color:inherit;
  box-shadow:0 1px 3px rgba(14,19,36,.08);transition:transform .12s,box-shadow .12s;position:relative}
.tile:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(14,19,36,.12)}
.tile.arch{opacity:.55;filter:grayscale(.6);cursor:not-allowed}
.tile h3{font-size:1.05rem;margin-bottom:6px}
.tile .st{display:inline-block;padding:2px 9px;border-radius:999px;font-size:.7rem;font-weight:700;margin-bottom:8px}
.st.draft{background:var(--azure-100);color:#00587c}.st.closed{background:var(--gold-100);color:#8a6414}
.st.sealed{background:var(--ok-100);color:#1f6b32}.st.archived{background:var(--steel-100);color:var(--steel-500)}
.tile p{margin:4px 0;color:var(--steel-500);font-size:.82rem}
.tile .nums{display:flex;gap:16px;margin-top:10px}.tile .nums b{font-family:"Exo 2";font-size:1.3rem;color:var(--indigo-600)}
.tile .nums span{display:block;font-size:.7rem;color:var(--steel-400)}
.note{color:var(--steel-500);font-size:.8rem;max-width:74ch}
.badge{display:inline-block;padding:1px 7px;border-radius:999px;font-size:.68rem;font-weight:600;white-space:nowrap}
.b-fit5{background:#d8f0de;color:#17592a}.b-fit4{background:var(--ok-100);color:#1f6b32}.b-fit3{background:var(--azure-100);color:#00587c}
.b-out{background:var(--steel-100);color:var(--steel-500)}.b-low{background:var(--alert-100);color:#9c2e1f}.b-med{background:var(--gold-100);color:#8a6414}
.btn{font:inherit;font-size:.85rem;padding:7px 13px;border-radius:6px;border:1px solid var(--steel-200);background:#fff;cursor:pointer;color:var(--ink)}
.btn:hover{border-color:var(--indigo-500);color:var(--indigo-600)}
.btn.primary{background:var(--indigo-600);border-color:var(--indigo-600);color:#fff}.btn.primary:hover{background:var(--indigo-500);color:#fff}
.btn.danger{border-color:var(--alert-500);color:var(--alert-500)}.btn.gold{background:var(--gold-500);border-color:var(--gold-500);color:#2a1e05;font-weight:700}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.stages{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:16px 0}
.stage{background:#fff;border:1px solid var(--steel-200);border-radius:var(--r);padding:12px 14px;border-top:4px solid var(--steel-200)}
.stage.done{border-top-color:var(--ok-500)}.stage.now{border-top-color:var(--gold-500)}.stage.lock{opacity:.6}
.stage h4{font-size:.85rem;margin-bottom:4px}.stage .k{font-size:.7rem;color:var(--steel-400);letter-spacing:.06em;text-transform:uppercase}
.stage p{font-size:.78rem;color:var(--steel-500);margin:4px 0 0}
.grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}
.card{background:#fff;border:1px solid var(--steel-200);border-radius:var(--r);padding:14px 16px;margin:0 0 16px}
.card h3{font-size:.95rem;margin-bottom:8px}
.kpi{display:flex;gap:22px;flex-wrap:wrap}.kpi div b{font-family:"Exo 2";font-size:1.5rem;color:var(--indigo-600)}.kpi div span{display:block;font-size:.72rem;color:var(--steel-400)}
table.t{width:100%;border-collapse:collapse;font-size:.8rem}table.t th{text-align:left;background:var(--mist);padding:6px 8px;font-weight:600}
table.t td{padding:6px 8px;border-top:1px solid var(--steel-100);vertical-align:top}
.geo svg{width:100%;height:auto;display:block}.geo path.st{stroke:#fff;stroke-width:1;fill:var(--mist)}.geo path.st.on{fill:#a9cdec}
.geo .lnk{stroke:var(--gold-500);stroke-width:1;opacity:.5}
details.grp{border:1px solid var(--steel-200);border-radius:var(--r);background:#fff;margin:0 0 8px;overflow:hidden}
details.grp>summary{cursor:pointer;padding:8px 12px;background:var(--mist);font-weight:600;font-size:.82rem;list-style:none;display:flex;gap:10px;align-items:baseline}
details.grp>summary::-webkit-details-marker{display:none}
.person{display:grid;grid-template-columns:1.2fr 2fr .6fr 1fr 1.4fr;gap:8px;padding:6px 12px;border-top:1px solid var(--steel-100);font-size:.78rem}
.person .m{color:var(--steel-400)}
.job{display:flex;gap:10px;align-items:center;padding:8px 10px;border-top:1px solid var(--steel-100);font-size:.8rem;flex-wrap:wrap}
.job .t{font-weight:600;min-width:150px}.job .s{padding:1px 8px;border-radius:999px;font-size:.68rem;font-weight:700}
.s.queued{background:var(--azure-100);color:#00587c}.s.running{background:var(--gold-100);color:#8a6414}.s.done{background:var(--ok-100);color:#1f6b32}.s.failed{background:var(--alert-100);color:#9c2e1f}
.spin{width:12px;height:12px;border:2px solid var(--gold-500);border-top-color:transparent;border-radius:50%;display:inline-block;animation:sp .8s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
.banner{background:var(--gold-100);border:1px solid #ecd39a;color:#6b4d0f;padding:10px 14px;border-radius:var(--r);font-size:.85rem;margin-bottom:14px}
.banner.ok{background:var(--ok-100);border-color:#bfe0c7;color:#1f6b32}.banner.warn{background:var(--alert-100);border-color:#f2c1b8;color:#9c2e1f}
.modal{position:fixed;inset:0;background:rgba(11,15,36,.55);display:flex;align-items:center;justify-content:center;z-index:50}
.modal .box{background:#fff;border-radius:10px;padding:22px 24px;max-width:520px;width:92%;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.modal .box h3{margin-bottom:8px}.modal .box p{color:var(--steel-500);font-size:.85rem}
.modal .row{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
[hidden]{display:none!important}
