:root{color-scheme:light dark;--ink: #15181b;--ink-2: #414b52;--paper: #f1f3f1;--surface: #fbfbfa;--hair: #c6ccc6;--accent: #8a5b00;--warn: #9c6100;--warn-wash: #f6e6c8;--risk: #a63a2c;--risk-wash: #f3deda;--ok: #2c7050;--ok-wash: #ddebe2}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Segoe UI,system-ui,sans-serif}.page{max-width:960px;margin:0 auto;padding:40px 24px 80px}.eyebrow{font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);margin:0 0 6px}h1{font-size:28px;margin:0 0 32px}.layout{display:grid;grid-template-columns:320px 1fr;gap:32px}@media (max-width: 720px){.layout{grid-template-columns:1fr}}.form{display:flex;flex-direction:column;gap:16px;background:var(--surface);border:1px solid var(--hair);padding:20px}.field{display:flex;flex-direction:column;gap:6px;font-size:14px}.field input{font:inherit;padding:8px 10px;border:1px solid var(--hair);background:var(--paper);color:var(--ink)}.field--readonly .mono{font-family:IBM Plex Mono,monospace;font-size:12.5px;color:var(--ink-2);margin:0}.result{display:flex;flex-direction:column;gap:20px}.schematic{width:100%;height:auto;background:var(--surface);border:1px solid var(--hair)}.schematic__sheet{fill:#d9c68a;stroke:var(--ink-2);stroke-width:1}.schematic__edge{stroke:var(--accent);stroke-width:2;stroke-dasharray:4 3}.spec{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--hair);border:1px solid var(--hair);margin:0}.spec div{background:var(--surface);padding:10px 14px}.spec dt{font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin:0 0 4px}.spec dd{margin:0;font-family:IBM Plex Mono,monospace;font-size:15px}.error{color:var(--risk)}.hint{font-size:12.5px;color:var(--ink-2)}.violations{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.violation{font-size:13px;padding:8px 10px;border-left:3px solid var(--warn);background:var(--warn-wash)}.violation--block{border-left-color:var(--risk);background:var(--risk-wash)}.submit{font:inherit;padding:10px 16px;border:1px solid var(--accent);background:var(--accent);color:#fbfbfa;cursor:pointer}.submit:disabled{opacity:.5;cursor:not-allowed}.build-id{font-size:13px;color:var(--ok);margin:0}.lead{background:var(--surface);border:1px solid var(--hair);padding:16px}.lead__title{margin:0 0 10px;font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}.lead__form{display:flex;flex-wrap:wrap;gap:8px}.lead__form input{font:inherit;padding:8px 10px;border:1px solid var(--hair);background:var(--paper);flex:1 1 140px}.lead__form button{font:inherit;padding:8px 14px;border:1px solid var(--accent);background:var(--accent);color:#fbfbfa;cursor:pointer}.spec__caption{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);margin:0 0 6px}.schematic__note{font-size:9px;fill:var(--ink-2);font-family:IBM Plex Mono,monospace}.field select{font:inherit;padding:8px 10px;border:1px solid var(--hair);background:var(--paper);color:var(--ink)}.loads{margin-top:18px;padding-top:14px;border-top:1px solid var(--hair, #e3e1dc)}.loads .hint{margin-top:8px;display:block}.schematic-box{display:flex;flex-direction:column;gap:8px}.schematic-modes{display:flex;gap:6px}.schematic-modes button{padding:4px 10px;font:inherit;font-size:12px;color:var(--ink-3, #6b6660);background:transparent;border:1px solid var(--hair, #e3e1dc);border-radius:999px;cursor:pointer}.schematic-modes button.is-active{color:var(--bg, #fff);background:var(--ink-1, #23201d);border-color:var(--ink-1, #23201d)}.notes{margin:14px 0 0;padding:0 0 0 18px;font-size:13px;line-height:1.55;color:var(--ink-2, #45403a)}.notes li+li{margin-top:6px}.lead__lede{margin:4px 0 12px;font-size:13px;line-height:1.55;color:var(--ink-3, #6b6660)}.kit{margin-top:20px}.kit__table{width:100%;border-collapse:collapse;font-size:13.5px}.kit__table th,.kit__table td{text-align:left;padding:8px 10px 8px 0;border-bottom:1px solid var(--hair, #e3e1dc);vertical-align:top}.kit__table thead th{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3, #6b6660);font-weight:500}.kit__section th{padding-top:14px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-deep, #8a4a24);border-bottom:none}.kit__num{text-align:right;padding-right:0;white-space:nowrap;font-variant-numeric:tabular-nums}.kit__spec,.kit__note{display:block;font-size:12px;color:var(--ink-3, #6b6660)}.kit__note{font-style:italic;margin-top:2px}.planner-block{margin:0 0 26px}.planner{display:flex;flex-direction:column;gap:10px}.planner__tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}.planner__hint{font-size:12.5px;color:var(--ink-3, #6b6660)}.planner__buttons{display:flex;gap:6px}.planner__buttons button,.planner__panel-head button{padding:5px 11px;font:inherit;font-size:12.5px;color:var(--ink-1, #23201d);background:var(--bg, #fff);border:1px solid var(--hair, #e3e1dc);border-radius:999px;cursor:pointer}.planner__buttons button:hover,.planner__panel-head button:hover{border-color:var(--ink-3, #9b958c)}.planner__canvas{width:100%;height:auto;max-height:62vh;background:var(--surface, #f6f4f0);border:1px solid var(--hair, #e3e1dc);border-radius:8px;color:var(--ink-3, #9b958c);touch-action:none}.planner__vertex{fill:var(--bg, #fff);stroke:var(--ink-1, #23201d);stroke-width:2;vector-effect:non-scaling-stroke}.planner__dim,.planner__label{fill:var(--ink-2, #45403a);font-family:IBM Plex Mono,ui-monospace,monospace;paint-order:stroke;stroke:var(--surface, #f6f4f0);stroke-width:3;vector-effect:non-scaling-stroke}.planner__meta{display:flex;flex-wrap:wrap;gap:18px;font-size:13px;color:var(--ink-3, #6b6660)}.planner__summary{margin:8px 0 0;font-size:13.5px;color:var(--ink-2, #45403a)}.planner__panel{padding:12px 14px;background:var(--surface, #f6f4f0);border:1px solid var(--hair, #e3e1dc);border-radius:8px}.planner__panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.planner__fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}.planner__fields label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-3, #6b6660)}.planner__fields input,.planner__fields select{padding:6px 8px;font:inherit;font-size:13.5px;color:var(--ink-1, #23201d);background:var(--bg, #fff);border:1px solid var(--hair, #e3e1dc);border-radius:5px}.sheet-wrap{position:relative;margin-top:22px}.sheet{width:100%;height:auto;display:block;border:1px solid var(--hair, #e3e1dc);border-radius:4px;color:#1b1a18;font-family:IBM Plex Mono,ui-monospace,monospace}.sheet__paper{fill:#fdfdfb}.sheet__frame{fill:none;stroke:#1b1a18;stroke-width:.5}.sheet__rule{stroke:#1b1a18;stroke-width:.25}.sheet__outline{fill:none;stroke:#1b1a18;stroke-width:.7}.sheet__thin{stroke:#1b1a18;stroke-width:.15;opacity:.55}.sheet__hatch-arc{fill:none;stroke:#1b1a18;stroke-width:2.2;opacity:.07}.sheet__concrete{fill:#1b1a18;opacity:.18;stroke:#1b1a18;stroke-width:.2}.sheet__ground{stroke:#1b1a18;stroke-width:.4}.sheet__axis{stroke:#1b1a18;stroke-width:.25;stroke-dasharray:6 1.5 1 1.5;opacity:.75}.sheet__caption{font-size:3.4px;font-weight:600;fill:#1b1a18}.sheet__th{font-size:2.5px;fill:#55504a;letter-spacing:.02px}.sheet__td{font-size:3px;fill:#1b1a18}.sheet__req{font-size:2.9px}.sheet__note{font-size:2.6px;fill:#55504a}.sheet__thead{fill:#1b1a18;fill-opacity:.06;stroke:#1b1a18;stroke-width:.25}.sheet__cell{fill:none;stroke:#1b1a18;stroke-width:.25}.sheet__stamp-code{font-size:4px;font-weight:600;fill:#1b1a18}.sheet__stamp-title{font-size:4.6px;font-weight:600;fill:#1b1a18}.sheet__ext{stroke:#1b1a18;stroke-width:.2}.sheet__dimline{stroke:#1b1a18;stroke-width:.25}.sheet__dimtext{font-size:3px;fill:#1b1a18}.sheet__masked{color:#8a4a24}.sheet__lock{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;margin-top:10px;padding:14px 16px;background:var(--surface, #f6f4f0);border:1px solid var(--hair, #e3e1dc);border-radius:8px}.sheet__lock b{font-size:14px}.sheet__lock p{margin:4px 0 0;font-size:13px;color:var(--ink-3, #6b6660);max-width:62ch}.sheet__lock button{padding:9px 18px;font:inherit;font-size:13.5px;font-weight:600;color:#fff;background:var(--accent-deep, #8a4a24);border:none;border-radius:6px;cursor:pointer}.viewer3d{display:flex;flex-direction:column;gap:8px}.viewer3d__canvas{width:100%;min-height:260px;overflow:hidden;border-radius:10px;border:1px solid var(--hair, #e3e1dc);background:linear-gradient(180deg,#eef1f4,#dfe3e6)}.viewer3d__canvas canvas{display:block}.viewer3d__bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}.viewer3d__modes{display:flex;gap:6px}.viewer3d__modes button{padding:5px 11px;font:inherit;font-size:12.5px;color:var(--ink-2, #45403a);background:var(--bg, #fff);border:1px solid var(--hair, #e3e1dc);border-radius:999px;cursor:pointer}.viewer3d__modes button.is-active{color:var(--bg, #fff);background:var(--ink-1, #23201d);border-color:var(--ink-1, #23201d)}.viewer3d__hint{font-size:12px;color:var(--ink-3, #6b6660);margin-left:auto}.types{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-bottom:22px}.type{display:flex;flex-direction:column;gap:6px;padding:10px;text-align:left;font:inherit;color:var(--ink-1, #23201d);background:var(--bg, #fff);border:2px solid var(--hair, #e3e1dc);border-radius:12px;cursor:pointer}.type:hover{border-color:var(--ink-3, #9b958c)}.type.is-active{border-color:var(--accent-deep, #8a4a24)}.type img,.type__blank{width:100%;aspect-ratio:3 / 2;object-fit:cover;border-radius:8px;background:#e6e9ec}.type b{font-size:14.5px}.type span{font-size:12.5px;color:var(--ink-3, #6b6660)}
