:root{color-scheme:light;--navy:#142838;--teal:#006b62;--line:#c9d7df;--ink:#172d3b;--muted:#496371}*{box-sizing:border-box}body{margin:0;background:#eef3f5;color:var(--ink);font:15px/1.5 system-ui,sans-serif}header{background:var(--navy);color:white;padding:28px max(20px,calc((100vw - 1160px)/2))}header small{color:#91dfd0;letter-spacing:.12em;text-transform:uppercase}h1,h2,h3,p{margin:0 0 10px}h1{font-size:clamp(26px,4vw,40px);line-height:1.15}h2{font-size:21px}h3{font-size:16px}main{max-width:1200px;margin:auto;padding:20px}.panel{background:white;border:1px solid var(--line);border-radius:12px;padding:18px;margin-bottom:16px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:12px}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}button{padding:8px 13px;border:1px solid var(--teal);border-radius:6px;color:var(--teal);background:white;font:inherit;font-weight:650;cursor:pointer}button.primary{background:var(--teal);color:white}button:disabled{opacity:.5;cursor:default}label{display:grid;gap:4px;font-size:13px;font-weight:650}input,select{min-width:0;width:100%;padding:8px;border:1px solid #8fa5b2;border-radius:5px;color:inherit;background:white;font:inherit}input[type=file]{max-width:330px}.muted{color:var(--muted)}.note{background:#fff3d9;padding:10px;border-left:4px solid #b87700}.scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;margin:8px 0 16px}th,td{padding:8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{background:#e9f2f5}td input,td select{min-width:112px}.drawing{display:block;width:100%;max-height:290px;margin:8px 0;background:#f1f7fa;border-radius:8px}.error{color:#a52819;font-weight:650}.badge{color:#005e55;font-weight:700}.print-only{display:none}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #008c82;outline-offset:2px}@media print{body{background:white;font-size:10pt}header{background:white;color:black;padding:0}header small{color:black}main{padding:0}.editor,.actions,#status{display:none!important}.print-only{display:block}.panel{padding:5px;border:0}.scroll{overflow:visible}thead{display:table-header-group}tr,svg{break-inside:avoid}th,td{padding:4px}.drawing{max-height:145px}}

[hidden]{display:none!important}
:root{--navy:#142837;--surface:#f4f7f9;--super:#087268;--meso:#255dae;--infra:#a14e22;--line:#dce5eb}
body{background:var(--surface)}
.shell{min-height:100vh;display:grid;grid-template-columns:240px minmax(0,1fr)}
.sidebar{background:var(--navy);color:#fff;padding:26px 16px;position:sticky;top:0;height:100vh;overflow:auto}
.brand{display:flex;gap:12px;align-items:center;margin:0 6px 24px}
.brand-mark{width:41px;height:41px;background:#1b4c4b;border-radius:10px;display:grid;place-items:center;color:#a8f0e0}
.brand strong{display:block;font-size:20px;line-height:1.2}
.brand small,.nav-label,.sidebar-foot{color:#adc2d1;font-size:12px}
.nav-label{margin:22px 9px 8px;text-transform:uppercase;letter-spacing:.11em}
.sidebar nav{display:grid;gap:4px}
.nav-btn{display:flex;align-items:center;gap:10px;width:100%;border:1px solid transparent;border-radius:8px;background:transparent;color:#e3edf2;text-align:left;font-size:14px}
.nav-btn:hover{background:#213d50}.nav-btn[aria-current="page"]{background:#284658;border-color:#426475;color:white}
.nav-btn .dot{width:9px;height:9px;border-radius:50%;background:#a2bac8;flex:none}
.sidebar .super .dot{background:#60d5bc}.sidebar .meso .dot{background:#82b6ff}.sidebar .infra .dot{background:#ffa976}
.sidebar-foot{margin:26px 9px 0}
.workspace{min-width:0}.topbar{padding:18px clamp(16px,3vw,38px);background:#fff;color:var(--ink);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.topbar small{display:block;color:#4e6979;font-weight:650}.topbar strong{font-size:17px;overflow-wrap:anywhere}
main{max-width:1440px;padding:clamp(16px,3vw,38px)}
.kicker{font-size:12px;text-transform:uppercase;letter-spacing:.12em;font-weight:750;color:#526d7c;margin-bottom:7px}
.hero{margin-bottom:20px}.hero h1{margin-bottom:6px}.hero p{margin:0}
.metrics,.modules{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin-bottom:16px}
.metric,.module-card{border:1px solid var(--line);border-radius:10px;padding:15px;background:#fff;min-width:0}
.metric strong{font-size:23px;display:block}.metric span{color:var(--muted);font-size:13px}
.module-card{--accent:var(--teal);border-top:4px solid var(--accent);display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.module-card h3,.module-card p{margin:0}.module-card p{color:var(--muted);font-size:14px}.module-card button{margin-top:auto;color:var(--accent);border-color:var(--accent)}
.super{--accent:var(--super)}.meso{--accent:var(--meso)}.infra{--accent:var(--infra)}
.module-kicker{color:var(--accent);font-size:12px;text-transform:uppercase;letter-spacing:.09em;font-weight:750}
.module-head{border-left:4px solid var(--accent);padding-left:13px;margin-bottom:17px}
.module-head h2{margin:3px 0 4px}.module-head p{margin:0;color:var(--muted)}
.legend{display:flex;gap:8px 20px;flex-wrap:wrap;color:var(--muted);font-size:13px}
.legend span{display:inline-flex;align-items:center;gap:7px}.legend i{width:13px;height:9px;border-radius:2px;background:var(--accent)}
#status{margin-bottom:13px}#status:empty{display:none}
.dashboard-bridge{min-height:145px;max-height:260px}
#result-empty{border:1px dashed #a3b6c2;background:#f9fbfc}
@media(max-width:860px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;padding:13px 15px}.brand{margin:0 0 10px}.sidebar nav{display:flex;flex-wrap:wrap}.nav-btn{width:auto;padding:6px 8px}.nav-label,.sidebar-foot{display:none}}
@media(max-width:590px){.metrics{gap:6px}.metric{padding:8px}.metric strong{font-size:17px}.metric span{font-size:11px}.modules{grid-template-columns:1fr}.topbar{padding:12px 16px}}
@media print{.shell{display:block}.sidebar,.topbar,#overview,#result-empty{display:none!important}main{max-width:none;padding:0}.workspace{display:block}}

.piece-workbench{border-top:1px solid var(--line);margin-top:22px;padding-top:16px}
.piece-workbench .grid{align-items:end}
.piece-card{border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px;margin-top:12px;padding:12px}
.piece-card h4{margin:0}.piece-card header{background:none;color:inherit;padding:0;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.piece-card .remove-piece{color:#8b3026;border-color:#a7655e;font-size:13px;padding:4px 8px}
.piece-summary{margin-top:12px}.piece-summary p{margin:4px 0}.piece-workbench select{width:100%}

.catalog-entry .source-link{color:var(--teal);font-weight:650}
.catalog-entry h3{margin:3px 0}.catalog-entry p{margin:5px 0}
#catalog-screen .grid{align-items:end}
.catalog-pill{font-size:12px;color:var(--muted);font-weight:700}
@media(min-width:861px){
 .admin-bar .sidebar{top:var(--wp-admin--admin-bar--height,32px);height:calc(100vh - var(--wp-admin--admin-bar--height,32px))}
}
#node-editor textarea{width:100%;font:inherit;padding:8px;border:1px solid #8fa5b2;border-radius:5px}
#node-editor label,#connections > label{margin:10px 0}
#node-editor select[multiple]{min-height:10rem}
@media print{#welcome,#connections{display:none!important}}
.sidebar [data-view="platform-status"]{margin-top:10px}
#project h3,#superstructure h3{margin-top:16px}
@media print{#platform-status{display:none!important}}
.bridge-viewer h3{margin:14px 0 5px}
#bridge-modes button[aria-pressed="true"]{color:#fff;background:var(--teal)}
.bridge-controls{display:flex;flex-wrap:wrap;gap:14px;margin-top:12px}
.bridge-controls label{width:min(220px,100%)}
.bridge-controls input[type="range"]{accent-color:var(--teal);padding:0}
.bridge-viewer .drawing{max-height:390px}
.bridge-drawing text{fill:#273e4d;font:14px system-ui,sans-serif}
.bridge-drawing .axis-label{fill:#255dae;font-size:12px}
.bridge-drawing .span-label{fill:#11554e;font-size:13px;font-weight:700}
.bridge-drawing .cut-label{fill:#924a28;font-weight:700}
.node-workbench{--accent:#633b85;margin:18px 0}
.node-workbench label{margin:8px 0}
.node-workbench .graph-check{display:flex;align-items:center;gap:8px}
.graph-check input{width:auto}
.graph-legend{display:flex;gap:6px 16px;flex-wrap:wrap;color:#526d7c;font-size:13px}
#node-graph svg{cursor:crosshair;max-height:370px}
.graph-hit{cursor:pointer}
.graph-label{fill:#633b85!important;font-weight:700;paint-order:stroke;stroke:#fff;stroke-width:2px}
