
    :root {
      color-scheme: light dark;
      --bg:#f3f0e8; --surface:#fffdf8; --surface-2:#e9e5dc; --ink:#17212b; --muted:#53606b;
      --line:#cbc6bb; --accent:#d65427; --accent-ink:#fffaf4; --deep:#17324a; --deep-2:#21445f;
      --good:#176b4a; --warn:#a84422; --shadow:0 18px 45px rgba(30,39,45,.10);
      --radius:14px;
    }
    @media (prefers-color-scheme: dark) {
      :root { --bg:#10171d; --surface:#182129; --surface-2:#202c35; --ink:#f3f1ea; --muted:#b5bec4;
        --line:#36434c; --accent:#ef7447; --accent-ink:#16100c; --deep:#0e293c; --deep-2:#173a51;
        --good:#76d4aa; --warn:#ff9b76; --shadow:0 20px 50px rgba(0,0,0,.28); }
    }
    *{box-sizing:border-box}
    body{margin:0;min-width:320px;background:var(--bg);color:var(--ink);font-family:"Public Sans",sans-serif;line-height:1.45}
    button,input,select,textarea{font:inherit}
    button{cursor:pointer}
    .page{max-width:1240px;margin:0 auto;padding:clamp(18px,3vw,38px)}
    .intro{display:flex;align-items:flex-end;justify-content:space-between;gap:26px;padding:clamp(12px,2vw,22px) 0 28px;border-bottom:1px solid var(--line)}
    .intro h1{font-size:clamp(32px,5vw,60px);line-height:.98;letter-spacing:-.045em;margin:0;max-width:760px;font-weight:800}
    .intro p{max-width:390px;margin:0;color:var(--muted);font-size:15px}
    .kicker{font-family:"IBM Plex Mono",monospace;color:var(--accent);font-size:12px;letter-spacing:.08em;text-transform:uppercase;margin-bottom:12px;font-weight:600}
    .workspace{display:grid;grid-template-columns:minmax(300px,390px) minmax(0,1fr);gap:24px;align-items:start;padding-top:24px}
    .panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
    .controls{padding:22px;position:sticky;top:16px}
    .section-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 16px}
    .section-title h2{font-size:18px;margin:0;letter-spacing:-.02em}
    .language-field{margin:-2px 0 12px}.language-field label{display:block;margin-bottom:6px}.language-field .input-wrap{background:var(--surface-2)}
    .unit-switch{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:-2px 0 18px;padding:4px;background:var(--surface-2);border-radius:10px}
    .unit-switch button{min-height:38px;border:0;border-radius:7px;background:transparent;color:var(--muted);font-size:12px;font-weight:800}
    .unit-switch button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:0 2px 8px rgba(30,39,45,.10)}
    .unit-switch button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
    .step{font-family:"IBM Plex Mono",monospace;color:var(--muted);font-size:11px}
    .field-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
    .field{display:flex;flex-direction:column;gap:7px;min-width:0}
    .field.full{grid-column:1/-1}
    label{font-size:12px;font-weight:700;color:var(--muted)}
    .input-wrap{display:flex;align-items:center;background:var(--surface-2);border:1px solid transparent;border-radius:9px;overflow:hidden;transition:border-color .2s,box-shadow .2s}
    .input-wrap:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
    input,select,textarea{width:100%;min-width:0;border:0;background:transparent;color:var(--ink);padding:11px 12px;outline:0}
    input[type=number]{font-family:"IBM Plex Mono",monospace;font-weight:600}
    textarea{resize:vertical;min-height:70px}
    input[type=range]{padding:10px 0;accent-color:var(--accent)}
    .range-wrap{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center}
    .range-value{font:600 13px "IBM Plex Mono",monospace;color:var(--accent);min-width:38px;text-align:right}
    .unit{padding-right:11px;font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--muted)}
    .divider{height:1px;background:var(--line);margin:22px 0}
    details{border-top:1px solid var(--line);margin-top:22px;padding-top:18px}
    summary{list-style:none;display:flex;align-items:center;justify-content:space-between;font-weight:700;font-size:14px;cursor:pointer}
    summary::-webkit-details-marker{display:none}
    summary::after{content:"+";font-family:"IBM Plex Mono";font-size:20px;color:var(--accent)}
    details[open] summary::after{content:"−"}
    .compact-details{margin-top:16px;padding-top:14px}
    .input-disclosure{margin-top:18px;padding-top:0;border-top:0}
    .input-disclosure>summary{min-height:48px;padding:0 14px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2);color:var(--ink)}
    .input-disclosure[open]>summary{border-color:var(--accent);border-radius:9px 9px 0 0}
    .input-disclosure>.field-grid{padding:16px 2px 2px}
    .result-disclosure{margin:0;padding:0;border:0}
    .result-disclosure>summary{min-height:56px;padding:0 18px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:var(--shadow);font-size:16px}
    .result-disclosure>summary:hover,.result-disclosure>summary:focus-visible{border-color:var(--accent);outline:none}
    .result-disclosure>summary::after{content:attr(data-view-label);font:700 11px "IBM Plex Mono",monospace}
    .result-disclosure[open]>summary{margin-bottom:10px;border-color:var(--accent)}
    .result-disclosure[open]>summary::after{content:attr(data-hide-label)}
    .result-disclosure>.panel{box-shadow:none}
    .disclosure-label{display:flex;align-items:baseline;gap:9px}
    .disclosure-label small{font:600 11px "IBM Plex Mono",monospace;color:var(--muted)}
    .nested-details{grid-column:1/-1;margin-top:4px;padding-top:14px}
    .nested-details summary{font-size:13px}
    .pricing{padding-top:17px}
    .gate-stack{display:grid;gap:10px;margin-top:12px}
    .gate-row{display:grid;grid-template-columns:1fr 118px;gap:10px;padding:10px;background:var(--surface-2);border-radius:10px}
    .gate-row[hidden],.polygon-fields[hidden],.gate-side[hidden],.gate-offset[hidden],.standard-run-fields[hidden]{display:none}
    .gate-row label{grid-column:1/-1;color:var(--ink)}
    .gate-row .input-wrap{background:var(--surface)}
    .gate-side,.gate-offset{grid-column:1/-1;display:grid;grid-template-columns:minmax(116px,auto) 1fr;align-items:center;gap:9px}
    .gate-side span,.gate-offset span{font-size:11px;font-weight:700;color:var(--muted)}
    .polygon-fields{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px;background:var(--surface-2);border-radius:10px}
    .polygon-fields .field-note,.polygon-fields .side-count-field,.polygon-fields .closure-field{grid-column:1/-1;margin:0 0 2px}
    .polygon-fields .input-wrap{background:var(--surface)}
    .polygon-side-grid{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:10px}
    .closure-row{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:44px;padding:7px 8px 7px 12px;background:var(--surface);border-radius:9px}
    .closure-copy strong{display:block;font-size:12px;color:var(--ink)}
    .closure-copy span{display:block;font-size:10px;color:var(--muted);margin-top:1px}
    .switch{position:relative;display:inline-flex;flex:0 0 auto;width:48px;height:28px}
    .switch input{appearance:none;-webkit-appearance:none;position:relative;opacity:1;width:48px;height:28px;padding:0;margin:0;border:0;border-radius:999px;background:var(--line);cursor:pointer;transition:background .2s}
    .switch input::after{content:"";position:absolute;width:20px;height:20px;left:4px;top:4px;border-radius:50%;background:var(--surface);box-shadow:0 2px 5px rgba(0,0,0,.2);transition:transform .2s}
    .switch input:checked{background:var(--accent)}
    .switch input:checked::after{transform:translateX(20px)}
    .switch input:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 25%,transparent);outline-offset:2px}
    .switch input:disabled{opacity:.5;cursor:not-allowed}
    .switch-track{display:none}
    .derived input{color:var(--muted)}
    .elevation{padding:clamp(20px,3vw,30px)}
    .elevation-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:14px}
    .elevation-head h2{margin:0;font-size:22px;letter-spacing:-.025em}
    .elevation-head p{margin:4px 0 0;color:var(--muted);font-size:12px}
    .elevation svg{display:block;width:100%;height:auto;min-height:190px;background:var(--surface-2);border-radius:11px}
    .legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;color:var(--muted);font-size:11px}
    .legend span::before{content:"";display:inline-block;width:12px;height:3px;margin:0 6px 3px 0;background:var(--accent)}
    .legend span:nth-child(2)::before{background:var(--deep-2)}
    .legend span:nth-child(3)::before{background:var(--good)}
    .hint{font-size:11px;color:var(--muted);margin:10px 0 0}
    .field-note{font-size:10px;color:var(--muted);line-height:1.35;margin-top:-2px}
    .results{display:grid;gap:18px}
    .error{display:none;background:color-mix(in srgb,var(--warn) 14%,var(--surface));border:1px solid var(--warn);color:var(--warn);padding:12px 14px;border-radius:10px;font-weight:700;font-size:13px}
    .error.show{display:block}
    .summary-card{background:var(--deep);color:#f5f7f5;border:0;border-radius:18px;padding:clamp(22px,4vw,36px);position:relative;overflow:hidden;box-shadow:var(--shadow)}
    .summary-card::after{content:"";position:absolute;width:240px;height:240px;right:-90px;bottom:-130px;border:38px solid rgba(255,255,255,.05);border-radius:50%}
    .summary-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;position:relative;z-index:1}
    .summary-head h2{font-size:clamp(24px,3.2vw,38px);letter-spacing:-.035em;margin:4px 0 8px;line-height:1.05}
    .summary-head p{margin:0;color:#c9d5dc;font-size:13px}
    .run-badge{background:var(--accent);color:var(--accent-ink);border-radius:999px;padding:8px 11px;font:600 11px "IBM Plex Mono",monospace;white-space:nowrap}
    .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:28px;background:rgba(255,255,255,.16);position:relative;z-index:1}
    .stat{background:var(--deep);padding:18px 18px 12px}
    .stat:first-child{padding-left:0}.stat:last-child{padding-right:0}
    .stat .value{font:600 clamp(26px,4vw,42px) "IBM Plex Mono",monospace;letter-spacing:-.06em}
    .stat .label{color:#b9c7cf;font-size:11px;margin-top:3px}
    .stat .value.small{font-size:clamp(20px,3vw,30px);letter-spacing:-.04em}
    .schematic-tools{display:flex;align-items:center;justify-content:flex-end;margin-top:18px;position:relative;z-index:2}
    .plan-zoom-btn{display:inline-flex;align-items:center;gap:7px;border:1px solid rgba(255,255,255,.28);border-radius:8px;background:rgba(255,255,255,.08);color:#f5f7f5;padding:8px 11px;font:700 11px "Public Sans",sans-serif}
    .plan-zoom-btn:hover,.plan-zoom-btn:focus-visible{background:rgba(255,255,255,.16);outline:none}
    .plan-zoom-btn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2}
    .schematic{margin-top:4px;position:relative;z-index:1;min-height:180px;border-top:1px solid rgba(255,255,255,.13);padding-top:10px;cursor:zoom-in}
    .schematic:focus-visible{outline:2px solid #ff9a74;outline-offset:4px;border-radius:4px}
    .schematic svg{display:block;width:100%;height:170px;overflow:visible}
    .plan-overlay{position:fixed;inset:0;z-index:30;display:grid;place-items:center;padding:clamp(4px,1vw,10px);background:rgba(7,14,20,.86)}
    .plan-overlay[hidden]{display:none}
    .plan-dialog{display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:min(1240px,100%);height:min(900px,98dvh);overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 28px 90px rgba(0,0,0,.48)}
    .plan-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid var(--line)}
    .plan-dialog-head h2{margin:0;font-size:17px;letter-spacing:-.02em}
    .plan-dialog-head p{margin:1px 0 0;color:var(--muted);font-size:10px}
    .icon-btn{width:36px;height:36px;border:0;border-radius:7px;background:var(--surface-2);color:var(--ink);font-size:22px;line-height:1}
    .icon-btn:hover,.icon-btn:focus-visible{background:color-mix(in srgb,var(--accent) 14%,var(--surface-2));outline:none}
    .plan-viewport{position:relative;min-height:0;overflow:hidden;background:var(--deep);touch-action:none;user-select:none;overscroll-behavior:contain;cursor:grab}
    .plan-viewport.is-dragging{cursor:grabbing}
    .plan-canvas{width:100%;height:100%;display:grid;place-items:center;transform-origin:50% 50%;will-change:transform}
    .plan-drawing.schematic{width:100%;min-height:0;margin:0;padding:6px 8px;border:0;cursor:inherit}
    .plan-drawing.schematic svg{height:auto;max-height:none;overflow:visible}
    .plan-controls{display:flex;align-items:center;justify-content:center;gap:7px;padding:7px 10px;border-top:1px solid var(--line)}
    .plan-controls button{min-width:40px;height:36px;border:1px solid var(--line);border-radius:7px;background:var(--surface-2);color:var(--ink);font-weight:800}
    .plan-controls button:hover,.plan-controls button:focus-visible{border-color:var(--accent);outline:none}
    .zoom-level{min-width:60px;text-align:center;font:600 12px "IBM Plex Mono",monospace;color:var(--muted)}
    .plan-help{margin-left:10px;color:var(--muted);font-size:11px}
    .schematic .fence-shadow{fill:none;stroke:rgba(219,230,234,.36);stroke-width:2;stroke-linecap:square;stroke-linejoin:round;transform:translateY(12px)}
    .schematic .fence-line{fill:none;stroke:#dbe6ea;stroke-width:8;stroke-linecap:square;stroke-linejoin:round}
    .schematic .gate-mask{stroke:var(--deep);stroke-width:15}
    .schematic .post-mark{fill:var(--accent);stroke:var(--deep);stroke-width:3;rx:2}
    .schematic .gate-leaf{fill:none;stroke:#dbe6ea;stroke-width:3;stroke-linecap:round}
    .schematic .gate-swing{fill:none;stroke:rgba(219,230,234,.48);stroke-width:1.5;stroke-dasharray:4 4}
    .schematic .plan-label{fill:#b9c7cf;font:600 10px "IBM Plex Mono",monospace;letter-spacing:.08em}
    .schematic .corner-label{fill:#ff9a74;font:600 10px "IBM Plex Mono",monospace}
    .materials{padding:clamp(20px,3vw,30px)}
    .materials-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}
    .materials-head h2{margin:0;font-size:22px;letter-spacing:-.025em}
    .materials-head p{margin:3px 0 0;color:var(--muted);font-size:12px}
    .count-chip{font:600 12px "IBM Plex Mono",monospace;background:var(--surface-2);padding:8px 10px;border-radius:7px;color:var(--muted);white-space:nowrap}
    .list{border-top:1px solid var(--line)}
    .row{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(95px,.8fr) auto;align-items:center;gap:14px;padding:14px 2px;border-bottom:1px solid var(--line)}
    .item-name{font-weight:700;font-size:14px}.item-note{font-size:11px;color:var(--muted);margin-top:2px}
    .qty{font:600 15px "IBM Plex Mono",monospace;text-align:right}.subqty{font-size:11px;color:var(--muted);text-align:right}
    .tag{font:600 10px "IBM Plex Mono",monospace;padding:5px 7px;border-radius:5px;background:color-mix(in srgb,var(--good) 12%,transparent);color:var(--good);text-transform:uppercase}
    .cost-card{padding:clamp(20px,3vw,30px);display:grid;grid-template-columns:1fr minmax(220px,290px);gap:30px;align-items:end}
    .cost-card h2{margin:0 0 8px;font-size:22px}.cost-card p{margin:0;color:var(--muted);font-size:13px;max-width:480px}
    .cost-lines{display:grid;gap:9px;margin-top:20px}
    .cost-line{display:flex;justify-content:space-between;gap:16px;font-size:13px;color:var(--muted)}
    .cost-line strong{color:var(--ink);font-family:"IBM Plex Mono",monospace}
    .total-box{background:var(--surface-2);border-radius:12px;padding:19px}
    .rate-action{display:block;margin-top:14px;width:100%;min-height:42px;padding:10px 12px;border:0;border-radius:8px;background:var(--accent);color:var(--accent-ink);font-weight:800;text-align:center;text-decoration:none}
    .rate-action:hover,.rate-action:focus-visible{background:color-mix(in srgb,var(--accent) 86%,#000);outline:2px solid color-mix(in srgb,var(--accent) 30%,transparent);outline-offset:2px}
    .quick-rate-editor{margin-top:14px}.quick-rate-grid{display:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.quick-rate-grid.is-open{display:grid}.quick-rate-grid .field{min-width:0}.quick-rate-grid label{font-size:10px}.quick-rate-grid input{background:var(--surface);min-height:40px}
    html[dir="rtl"] body{font-family:"Public Sans",Tahoma,sans-serif}
    html[dir="rtl"] .section-title,html[dir="rtl"] .summary-head,html[dir="rtl"] .materials-head,html[dir="rtl"] footer{direction:rtl}
    html[dir="rtl"] .qty,html[dir="rtl"] .subqty{text-align:left}
    html[dir="rtl"] .assumptions ul{padding-left:0;padding-right:18px}
    html[dir="rtl"] .schematic .plan-label,html[dir="rtl"] .schematic .corner-label{direction:ltr}
    .total-box span{font-size:11px;color:var(--muted);font-weight:700}.total-box strong{display:block;font:600 clamp(28px,4vw,38px) "IBM Plex Mono",monospace;margin-top:4px;letter-spacing:-.05em}
    .factory-quote{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;border-radius:14px;background:var(--accent);color:var(--accent-ink);text-decoration:none;box-shadow:var(--shadow);transition:background .2s,transform .2s}
    .factory-quote:hover,.factory-quote:focus-visible{background:color-mix(in srgb,var(--accent) 86%,#000);outline:3px solid color-mix(in srgb,var(--accent) 30%,transparent);outline-offset:3px;transform:translateY(-1px)}
    .factory-quote[aria-disabled="true"]{opacity:.48;pointer-events:none;box-shadow:none;transform:none}
    .factory-quote strong{display:block;font-size:18px;letter-spacing:-.02em}.factory-quote span{display:block;margin-top:3px;font-size:12px;opacity:.86}.factory-quote b{font:700 22px "IBM Plex Mono",monospace}
    .actions{display:grid;grid-template-columns:1fr;gap:10px}
    .btn{border:0;border-radius:9px;padding:13px 16px;font-weight:800;transition:background .2s,color .2s;min-height:48px}
    .btn.primary{background:var(--accent);color:var(--accent-ink)}
    .btn.primary:hover{background:color-mix(in srgb,var(--accent) 86%,#000)}
    .btn.secondary{background:var(--deep);color:#fff}
    .btn.secondary:hover{background:var(--deep-2)}
    .btn:disabled{cursor:not-allowed;opacity:.48}
    .copied{grid-column:1/-1;text-align:center;min-height:18px;color:var(--good);font-size:12px;font-weight:700}
    .export-overlay{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:18px;background:rgba(7,14,20,.72)}
    .export-overlay[hidden]{display:none}
    .export-dialog{width:min(560px,100%);max-height:min(720px,90vh);overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 28px 80px rgba(0,0,0,.34);padding:22px}
    .export-dialog h2{margin:0;font-size:22px;letter-spacing:-.025em}.export-dialog p{margin:8px 0 16px;color:var(--muted);font-size:13px}
    .export-dialog textarea{min-height:230px;background:var(--surface-2);border:1px solid var(--line);border-radius:9px;font:500 12px/1.55 "IBM Plex Mono",monospace}
    .export-choices{display:grid;grid-template-columns:1fr;gap:10px;margin:6px 0 4px}
    .export-dialog-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.export-dialog-actions .btn{flex:1 1 150px;text-align:center;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.export-dialog-actions [hidden]{display:none!important}
    .assumptions{padding:18px 22px;background:transparent;border:1px dashed var(--line);border-radius:12px;color:var(--muted);font-size:12px}
    .assumptions strong{color:var(--ink)}
    .assumptions ul{margin:8px 0 0;padding-left:18px}.assumptions li+li{margin-top:4px}
    footer{display:flex;justify-content:space-between;gap:18px;color:var(--muted);font-size:11px;padding:22px 2px 8px}
    @media(max-width:860px){
      .intro{display:block}.intro p{margin-top:16px}.workspace{grid-template-columns:1fr}.controls{position:static}.results{min-width:0}
    }
    @media(max-width:560px){
      .page{padding:14px}.intro{padding-top:10px}.intro h1{font-size:36px}.field-grid{gap:11px}
      .controls{padding:17px}.summary-head{display:block}.run-badge{display:inline-block;margin-top:15px}.stats{grid-template-columns:1fr 1fr}.stat:last-child{grid-column:1/-1;padding-left:0;border-top:1px solid rgba(255,255,255,.16)}
      .row{grid-template-columns:minmax(0,1fr) auto}.tag{display:none}.cost-card{grid-template-columns:1fr;gap:20px}.actions{grid-template-columns:1fr}.copied{grid-column:1}.gate-row{grid-template-columns:1fr}.gate-row label{grid-column:1}.elevation-head{display:block}.elevation-head .count-chip{display:inline-block;margin-top:10px}
      footer{display:block}footer span{display:block;margin-top:5px}.plan-overlay{padding:0}.plan-dialog{width:100vw;height:100dvh;border:0;border-radius:0}.plan-dialog-head{padding:8px 10px}.plan-dialog-head p{display:none}.plan-drawing.schematic{padding:2px}.plan-help{display:none}.plan-controls{padding:6px}.quick-rate-grid{grid-template-columns:1fr}
    }
    @media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
  