:root{--bg:#f2f5f7;--ink:#17202a;--muted:#6b7a86;--line:#d9e2e8;--nav:#173149;--panel:#fff;--ok:#15803d;--warn:#a16207;--bad:#b42318;--x:#2b7fff;--y:#f28c28;--lx:#00a3a3;--ly:#8b5cf6;--starter:#d64b4b;--pilehead:#3f4d5a;--tie:#7f878d;--pile:#7d8d99;--concrete:#cddae3}
*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,"Segoe UI",Tahoma,sans-serif}button,input,select{font:inherit}
header{background:var(--nav);color:#fff;padding:14px 16px;position:sticky;top:0;z-index:10;box-shadow:0 1px 8px rgba(0,0,0,.12)}header .inner{max-width:1400px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:12px}header b{font-size:18px}header small{display:block;opacity:.82;margin-top:2px;font-size:10px}.phase{border:1px solid rgba(255,255,255,.28);border-radius:999px;padding:5px 8px;font-size:9px;font-weight:800;white-space:nowrap}
.page{max-width:1400px;margin:auto;padding:8px}.notice{background:#eef6ff;border:1px solid #c7dcec;color:#174a7d;border-radius:11px;padding:9px 11px;font-size:11px;line-height:1.6;margin-bottom:8px}.notice.ok{background:#effaf2;border-color:#cde7d1;color:#166534}.notice.warn{background:#fff9e9;border-color:#edd9a2;color:#7a5200}
.shell{display:grid;grid-template-columns:320px minmax(0,1fr);gap:8px}.card{background:var(--panel);border:1px solid var(--line);border-radius:13px;overflow:hidden}.pad{padding:12px}.side h2{margin:0 0 4px;font-size:16px}.side .sub{font-size:10px;color:var(--muted);line-height:1.5}.group{margin:11px 0;padding:10px;border:1px solid #dce4ea;border-radius:10px;background:#fbfcfd}.group h3{margin:0 0 7px;font-size:11px}.fields2{display:grid;grid-template-columns:1fr 1fr;gap:7px}.fields2 label{font-size:9px;font-weight:800;color:var(--muted)}input,select{width:100%;min-height:38px;border:1px solid #cbd5df;border-radius:8px;padding:7px 8px;background:#fff;color:var(--ink);font-size:13px;margin-top:4px}button{border:1px solid #cbd5df;border-radius:8px;background:#f7f9fa;color:#263746;padding:8px 10px;font-size:10px;font-weight:800;cursor:pointer}button.primary{background:var(--nav);border-color:var(--nav);color:#fff}button.on{background:var(--nav);border-color:var(--nav);color:#fff}.row{display:flex;gap:6px;flex-wrap:wrap}.mini{font-size:9px;color:var(--muted);line-height:1.5}.derived{margin-top:7px;padding:7px 8px;border-radius:8px;background:#f3f7fa;font-size:9px;color:#50616f;line-height:1.5}
.tabs{display:flex;gap:5px;flex-wrap:wrap;padding:8px;border-bottom:1px solid var(--line);background:#f7f9fb}.tab{border:1px solid #ccd6de;background:#fff;border-radius:8px;padding:7px 9px;font-size:10px;font-weight:800;cursor:pointer}.tab.active{background:var(--nav);color:#fff;border-color:var(--nav)}.view{display:none}.view.active{display:block}.head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:11px 12px;border-bottom:1px solid var(--line)}.head h2{margin:0;font-size:15px}.head p{margin:3px 0 0;font-size:9px;color:var(--muted);line-height:1.45}.status{font-size:9px;font-weight:900;border-radius:999px;padding:5px 7px;background:#e9f5ed;color:var(--ok);white-space:nowrap}.status.review{background:#fff4d7;color:#8b5c00}.status.bad{background:#fde8e7;color:var(--bad)}
.drawingGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px}.drawingCard{border:1px solid #dfe6eb;border-radius:10px;overflow:hidden;background:#fff}.drawingCard h3{margin:0;padding:8px 9px;border-bottom:1px solid #e5eaee;font-size:11px;background:#fafcfd}.svgWrap{padding:6px;overflow:auto}svg{display:block;width:100%;height:auto;background:#fff}.legend{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:8px;border-top:1px solid #e5eaee;font-size:9px;color:#556672}.sw{width:18px;height:4px;border-radius:3px;display:inline-block;margin-right:5px;vertical-align:2px}.sw.x{background:var(--x)}.sw.y{background:var(--y)}.sw.lx{background:var(--lx)}.sw.ly{background:var(--ly)}.sw.st{background:var(--starter)}.sw.ph{background:var(--pilehead)}.sw.tie{background:var(--tie)}
.stage3d{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:8px;padding:8px}.viewer{position:relative;min-height:520px;border:1px solid #dfe6eb;border-radius:10px;background:#fff;overflow:hidden}canvas{display:block;width:100%;height:520px;touch-action:none;cursor:grab}canvas:active{cursor:grabbing}.badge3d{position:absolute;top:10px;left:10px;background:rgba(23,49,73,.9);color:#fff;border-radius:999px;padding:5px 8px;font-size:8px;font-weight:800}.toolbar{display:flex;gap:5px;flex-wrap:wrap}.legend3d{font-size:9px;color:var(--muted);line-height:1.65}.legend3d b{color:var(--ink)}.layerToggle{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:8px}.layerToggle button{font-size:9px;padding:7px}.info{margin-top:8px;border:1px solid #dfe6eb;border-radius:9px;background:#fafcfd;padding:8px;font-size:9px;line-height:1.55;color:#526471}
.tableWrap{padding:10px;overflow:auto}.tbl{width:100%;border-collapse:collapse;font-size:10px;min-width:700px}.tbl th,.tbl td{border:1px solid #dde5ea;padding:7px;text-align:left;vertical-align:top}.tbl th{background:#f5f8fa}.mark{font-weight:900}.metricGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;padding:10px}.metric{border:1px solid #dfe6eb;border-radius:10px;background:#fff;padding:10px}.metric small{display:block;color:var(--muted);font-size:8px}.metric b{font-size:16px}.calcGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px}.check{border:1px solid #dfe6eb;border-radius:10px;padding:11px;background:#fff}.check h3{margin:0 0 5px;font-size:11px}.check .result{font-size:16px;font-weight:900}.pass{color:var(--ok)}.warning{color:var(--warn)}.fail{color:var(--bad)}.na{color:#66727c}.check p{font-size:9px;line-height:1.55;color:var(--muted);margin:5px 0 0}.report{padding:12px}.reportBox{border:1px solid #dfe6eb;border-radius:10px;background:#fff;padding:12px;margin-bottom:8px}.reportBox h3{margin:0 0 7px;font-size:12px}.reportBox p,.reportBox li{font-size:10px;line-height:1.6;color:#50616f}.reportBox ul{margin:5px 0;padding-left:18px}
@media(max-width:980px){.shell{grid-template-columns:1fr}.drawingGrid{grid-template-columns:1fr}.stage3d{grid-template-columns:1fr}.viewer{min-height:410px}canvas{height:410px}.side{position:static}.metricGrid{grid-template-columns:1fr 1fr}.calcGrid{grid-template-columns:1fr}}
@media(max-width:600px){.page{padding:5px}.fields2{grid-template-columns:1fr 1fr}.legend{grid-template-columns:1fr 1fr}.metricGrid{grid-template-columns:1fr 1fr}.head{align-items:flex-start}.tbl{min-width:620px}}
@media print{header,.side,.tabs,.toolbar,.layerToggle,.badge3d,.notice{display:none!important}.shell{display:block}.view{display:block!important}.card{border:0}.drawingGrid{grid-template-columns:1fr 1fr}.viewer{min-height:420px}body{background:#fff}}
