@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500;600;700&display=swap";:root{color:#172033;font-synthesis:none;--ink:#172033;--muted:#667085;--line:#e2e8f0;--blue:#4f46e5;--blue-dark:#4338ca;--blue-soft:#eef2ff;--teal:#0f766e;--surface:#fff;--shadow:0 14px 40px #1c2a4c12;background:#f3f6fb;font-family:DM Sans,Inter,ui-sans-serif,system-ui,sans-serif;line-height:1.5}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:radial-gradient(at 50% -10%,#e7ecff 0,#f3f6fb 42rem);min-height:100vh}h1,h2,p{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline-offset:2px;outline:3px solid #818cf8}.app{max-width:1540px;min-height:100vh;color:var(--ink);margin:auto;padding:30px clamp(18px,4vw,64px) 34px}header{border-bottom:1px solid #dbe2ee;align-items:center;gap:16px;padding:2px 2px 24px;display:flex}.brand-mark{color:#fff;letter-spacing:-.08em;background:linear-gradient(145deg,#6366f1,#4338ca);border-radius:16px;flex:0 0 50px;place-items:center;width:50px;height:50px;font:500 14px DM Mono,monospace;display:grid;box-shadow:0 8px 18px #4f46e53d}h1{color:#151d31;letter-spacing:-.04em;font-size:clamp(19px,2vw,23px);font-weight:700}h2{color:#18233a;letter-spacing:-.035em;margin-top:3px;font-size:19px;font-weight:700}.brand-mark+div p{color:var(--muted);margin-top:3px;font-size:13px}.eyebrow{color:#5b5bd6;letter-spacing:.12em;text-transform:uppercase;font:500 10px DM Mono,monospace}.ghost{border:1px solid var(--line);background:var(--surface);color:#475467;border-radius:10px;align-items:center;gap:8px;margin-left:auto;padding:9px 13px;font-size:12px;font-weight:600;transition:all .18s;display:flex}.ghost:hover{color:var(--blue-dark);background:#f8f9ff;border-color:#c7d2fe}.shape-row{justify-content:space-between;align-items:end;gap:24px;padding:28px 2px 20px;display:flex}.shape-row .helper{margin-top:5px}.helper,.limit-note{color:var(--muted);font-size:11px}.shape-select{color:#475467;flex-direction:column;gap:6px;min-width:min(420px,100%);font-size:11px;font-weight:600;display:flex}.shape-select select{background:var(--surface);min-height:44px;color:var(--ink);border:1px solid #d9e0ec;border-radius:10px;padding:10px 13px;font-size:13px;box-shadow:0 2px 4px #17203308}.shape-select select:focus-visible{outline-offset:2px;outline:3px solid #a5b4fc}.shape-notice{color:#3730a3;background:#f1f3ff;border:1px solid #c7d2fe;border-radius:11px;margin:-6px 0 16px;padding:11px 14px;font-size:12px}.workspace{grid-template-columns:minmax(0,1fr) minmax(350px,390px);align-items:stretch;gap:18px;display:grid}.canvas-panel,.side-panel,.validation,.export-card{background:var(--surface);box-shadow:var(--shadow);border:1px solid #e2e8f0;border-radius:18px}.canvas-panel{min-width:0;padding:22px 24px 18px}.panel-head,.settings-top,.hole-head{justify-content:space-between;align-items:start;gap:12px;display:flex}.download,.add-btn{background:var(--blue);color:#fff;border:0;border-radius:11px;justify-content:center;align-items:center;gap:8px;font-size:12px;font-weight:700;transition:transform .15s,background .15s,box-shadow .15s;display:inline-flex}.download{min-height:42px;padding:10px 15px;box-shadow:0 5px 12px #4f46e52b}.download:hover:not(:disabled),.add-btn:hover{background:var(--blue-dark);transform:translateY(-1px);box-shadow:0 7px 15px #4f46e538}.download:disabled{opacity:.48;cursor:not-allowed;box-shadow:none}.hint{color:#667085;align-items:center;gap:7px;margin:14px 0 0;font-size:11px;display:flex}.hint svg{color:#7379dd}.drawing{touch-action:none;background:#fbfcff;border:1px solid #edf0f6;border-radius:14px;width:100%;height:min(590px,52vw);min-height:360px;display:block;overflow:visible}.material{fill:#c7d2fe;stroke:#5158a8;stroke-width:2.5px}.axis{stroke:#75809a;stroke-width:1px;stroke-dasharray:3 4}.axis-label{fill:#566078;paint-order:stroke;stroke:#fbfcff;stroke-width:3px;stroke-linejoin:round;font:11px DM Mono,monospace}.hole{fill:#fff;stroke:#38436b;stroke-width:2px}.hole.selected{fill:#eef2ff;stroke:#4f46e5;stroke-width:3px}.hole.invalid{fill:#fb7185;stroke:#be123c}.hole-label{fill:#28324e;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round;font:600 11px DM Sans,sans-serif}.dimension line{stroke:#727c91;stroke-width:1px}.dimension text{fill:#4b5568;text-anchor:middle;font:11px DM Mono,monospace}.hit-target{fill:#0000;stroke:none;cursor:grab}.guides line{stroke:#667085;stroke-width:1px;stroke-dasharray:5 4}.guides text{fill:#334155;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round;font:11px DM Mono,monospace}.selection-ring{fill:none;stroke:#6366f1;stroke-width:1.5px;stroke-dasharray:3 2}.canvas-legend{color:#667085;border-top:1px solid #edf0f5;flex-wrap:wrap;gap:16px;padding-top:13px;font-size:10px;display:flex}.canvas-legend span{align-items:center;gap:7px;display:flex}.canvas-legend i{border-radius:4px;width:11px;height:11px;display:inline-block}.legend-material{background:#c7d2fe;border:1px solid #818cf8}.legend-hole{background:#fff;border:1px solid #667085}.legend-clearance{border:1px dashed #818cf8}.side-panel{flex-direction:column;min-height:0;padding:20px;display:flex}.unit-toggle{background:#f7f8fc;border:1px solid #e1e6ef;border-radius:9px;display:flex;overflow:hidden}.unit-toggle button{color:#667085;background:0 0;border:0;min-width:38px;padding:6px 9px;font:500 11px DM Mono,monospace}.unit-toggle button.active{color:#fff;background:#4f46e5;border-radius:7px;box-shadow:0 2px 5px #4f46e54d}.fields{grid-template-columns:1fr 1fr;gap:13px 11px;margin-top:20px;display:grid}.field,.hole-fields label{color:#475467;font-size:10px;font-weight:600}.input-wrap,.mini-input{background:#fbfcfe;border:1px solid #dfe4ed;border-radius:9px;align-items:center;margin-top:5px;transition:border-color .15s,box-shadow .15s;display:flex}.input-wrap:focus-within,.mini-input:focus-within{border-color:#818cf8;box-shadow:0 0 0 3px #4f46e514}.input-wrap input,.input-wrap select,.mini-input input{color:#18233a;background:0 0;border:0;outline:none;width:100%;min-width:0;padding:9px;font-size:12px}.input-wrap em,.mini-input em{color:#8a93a5;padding-right:9px;font:10px DM Mono,monospace}.field small{color:#7b8495;margin-top:4px;font-size:9px;display:block}.calculated,.note{color:#475467;background:#f6f7ff;border:1px solid #e3e7ff;border-radius:10px;margin-top:14px;padding:10px 12px;font-size:10px}.calculated strong{float:right;color:#4338ca;font:500 11px DM Mono,monospace}.note{line-height:1.5}.limit-note{margin-top:12px;font-size:9px;display:block}.divider{background:#edf0f5;flex:none;height:1px;margin:19px 0}.hole-head h2{align-items:center;gap:7px;font-size:17px;display:flex}.count{color:#4f46e5;background:#eef2ff;border-radius:8px;padding:3px 7px;font:500 10px DM Mono,monospace}.add-btn{min-height:34px;padding:7px 10px;font-size:10px;box-shadow:0 3px 8px #4f46e526}.side-panel>.helper{margin:7px 0 11px;font-size:10px}.hole-list{scrollbar-color:#cbd5e1 transparent;scrollbar-width:thin;max-height:380px;padding:1px 3px 0 0;overflow-y:auto}.empty{color:#657087;text-align:center;background:#fafbff;border:1px dashed #d4daea;border-radius:12px;padding:22px 16px}.empty svg{color:#818cf8}.empty p{color:#344054;margin-top:7px;font-size:12px;font-weight:700}.empty small{color:#7b8495;margin-top:4px;font-size:10px;display:block}.hole-row{background:#fff;border:1px solid #e4e8f0;border-radius:12px;margin-bottom:8px;padding:11px;transition:border-color .15s,background .15s,box-shadow .15s}.hole-row:hover{border-color:#c7d2fe}.hole-row.selected{background:#f8f8ff;border-color:#818cf8;box-shadow:0 0 0 2px #4f46e511}.hole-row-title{color:#344054;justify-content:space-between;margin-bottom:9px;font-size:11px;font-weight:700;display:flex}.hole-row-title button{color:#667085;background:0 0;border:0;border-radius:7px;justify-content:center;align-items:center;min-width:26px;min-height:26px;padding:4px;display:inline-flex}.hole-row-title button:hover:not(:disabled){color:#4338ca;background:#eef2ff}.hole-actions{align-items:center;gap:3px;display:flex}.hole-row-title .hole-history{padding:4px}.ghost:disabled,.hole-history:disabled{opacity:.35;cursor:not-allowed}.hole-fields{grid-template-columns:1.2fr 1fr 1fr;gap:7px;display:grid}.hole-fields label{font-size:9px}.mini-input{border-radius:7px;margin-top:4px}.mini-input input{padding:7px 6px;font-size:10px}.mini-input em{padding-right:5px;font-size:9px}.mini-input input[aria-invalid=true]{color:#be123c}.field-warning{color:#9f1239;background:#fff1f2;border:1px solid #fecdd3;border-radius:8px;margin-top:7px;padding:7px 9px;font-size:10px;font-weight:600;line-height:1.45;display:block}.bottom-grid{grid-template-columns:minmax(260px,.9fr) minmax(0,1.45fr);gap:18px;margin-top:18px;display:grid}.validation,.export-card{padding:19px 21px}.validation{background:#fffaf0;border-color:#fde2b5;box-shadow:0 8px 24px #845c1010}.validation-title{color:#92400e;align-items:center;gap:9px;font-size:12px;display:flex}.validation-title svg{color:#d97706;flex:none}.validation-title span{color:#8b6b45;margin-left:auto;font-size:10px}.validation ul{color:#92400e;margin:11px 0 0 27px;padding:0;font-size:10px}.validation.good{background:#effaf6;border-color:#b9e8d8}.validation.good .validation-title{color:#116149}.validation.good .validation-title svg{color:#0f9f75}.validation.good .validation-title span{color:#4b796a}.export-card{background:linear-gradient(120deg,#f3f3ff,#edf5ff);border-color:#d9dcff;justify-content:space-between;align-items:center;gap:20px;display:flex}.export-card h2{color:#222450}.export-card p{color:#667085;margin-top:5px;font-size:11px}.export-card .eyebrow{color:#5b5bd6}.export-card .download{flex:none}footer{color:#7b8495;align-items:center;gap:8px;margin-top:19px;font-size:10px;display:flex}footer svg{color:#8b92a5;flex:none}.drawing defs+clipPath+path{pointer-events:none}@media (width<=1050px){.workspace{grid-template-columns:minmax(0,1fr) minmax(320px,360px);gap:14px}.canvas-panel{padding:19px}.side-panel{padding:17px}.drawing{min-height:330px}.bottom-grid{gap:14px}}@media (width<=850px){.workspace{grid-template-columns:1fr}.side-panel{min-height:0}.hole-list{max-height:360px}.bottom-grid{grid-template-columns:1fr}.shape-row{align-items:start}}@media (width<=560px){.app{padding:17px 13px 24px}header{gap:11px;padding-bottom:17px}.brand-mark{border-radius:13px;flex-basis:40px;width:40px;height:40px}h1{font-size:17px}.brand-mark+div p{max-width:42ch;font-size:10px;line-height:1.45}.reset{padding:8px;font-size:0}.reset svg{margin:0}.shape-row{padding:22px 2px 15px;display:block}.shape-select{min-width:100%;margin-top:14px}.shape-select select{width:100%}.canvas-panel{border-radius:15px;padding:14px}.panel-head{display:block}.panel-head .download{width:100%;margin-top:13px}.drawing{height:76vw;min-height:275px;max-height:430px}.canvas-legend{gap:9px 13px}.side-panel{border-radius:15px;padding:15px}.fields{gap:11px 9px}.hole-fields{grid-template-columns:1.15fr 1fr 1fr;gap:5px}.export-card{display:block}.export-card .download{width:100%;margin-top:14px}.validation,.export-card{padding:16px}.validation-title{flex-wrap:wrap;align-items:start}.validation-title span{width:100%;margin-left:28px}footer{align-items:start;line-height:1.45}}.app{max-width:1480px;padding-top:18px;padding-bottom:22px}header{gap:12px;padding-bottom:14px}.brand-mark{border-radius:13px;flex-basis:42px;width:42px;height:42px}h1{font-size:clamp(18px,1.8vw,22px)}.brand-mark+div p{font-size:11px}.help-link{white-space:nowrap;min-height:36px;padding:8px 11px}.order-strip{grid-template-columns:minmax(280px,1.2fr) minmax(140px,.65fr) minmax(250px,.9fr);gap:10px;margin:14px 0;display:grid}.summary-metric,.order-status{background:#fff;border:1px solid #dfe5ef;border-radius:13px;min-width:0;padding:12px 15px;box-shadow:0 6px 20px #1c2a4c0b}.summary-metric{flex-direction:column;justify-content:center;display:flex}.summary-metric strong{color:#25324b;font-size:12px;font-weight:700}.summary-volume{color:#3730a3;align-items:baseline;gap:10px;margin:2px 0 0;display:flex}.summary-volume b{letter-spacing:-.06em;white-space:nowrap;font:700 clamp(19px,2.2vw,27px) DM Mono,monospace}.summary-volume small{letter-spacing:0;font-size:.52em}.summary-volume i{color:#98a2b3;font-size:14px;font-style:normal}.count-metric .summary-count{color:#3730a3;margin:1px 0 -2px;font:700 29px/1.15 DM Mono,monospace}.buyer-note{color:#667085;margin-top:3px;font-size:10px;line-height:1.35}.order-status{background:#fffaf0;border-color:#f1d39b;justify-content:space-between;align-items:center;gap:10px;display:flex}.order-status.good{background:#effaf6;border-color:#b9e8d8}.order-status>div{gap:2px;min-width:0;display:grid}.order-status strong{color:#92400e;font-size:12px}.order-status.good strong{color:#116149}.order-status span{color:#667085;font-size:10px;line-height:1.35}.order-status .download{flex:none;min-height:36px;padding:8px 10px;font-size:11px}.workspace{grid-template-columns:minmax(0,1fr) minmax(330px,370px);gap:14px}.canvas-panel{padding:15px 17px 13px}.panel-head{align-items:center}.panel-head h2{margin:0;font-size:17px}.preview-reset{min-height:31px;margin:0 0 0 auto;padding:6px 9px;font-size:10px}.hint{margin-top:7px}.drawing{height:min(500px,43vw);min-height:315px}.canvas-legend{padding-top:9px}.side-panel{border-radius:15px;padding:15px}.designer-type-select{min-width:0;margin-bottom:12px}.designer-type-select select{min-height:37px;padding:8px 10px;font-size:12px}.settings-top h2{margin-top:0;font-size:15px}.fields{gap:9px;margin-top:12px}.input-wrap input,.input-wrap select{padding:7px}.calculated,.note{margin-top:9px;padding:8px 10px}.divider{margin:12px 0}.hole-head{align-items:center}.hole-head h2{margin:0;font-size:15px}.hole-head .helper{margin-top:3px;font-size:9px}.hole-list{max-height:330px}.empty{padding:15px 12px}.hole-row{margin-bottom:6px;padding:9px}.shape-notice{margin:0 0 10px;padding:8px 11px}.bottom-grid,main>footer{display:none}.help-page{max-width:1200px;margin:0 auto}.help-top{justify-content:space-between;align-items:center;gap:12px;margin:14px 0;display:flex}.help-top h1{font-size:22px}.help-top p{color:var(--muted);font-size:12px}.walkthrough{grid-template-columns:minmax(210px,.33fr) minmax(0,1fr);align-items:stretch;gap:14px;display:grid}.walkthrough-steps,.walkthrough-main{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:15px}.walkthrough-sidebar{flex-direction:column;gap:10px;min-width:0;display:flex}.walkthrough-steps{gap:5px;padding:8px;display:grid}.walkthrough-instruction{color:#1f2c63;background:#f7f9ff;border:2px solid #27366f;border-radius:14px 14px 14px 5px;padding:13px 14px;font:700 12px/1.55 Trebuchet MS,DM Sans,sans-serif;box-shadow:3px 4px #27366f}.walkthrough-step{color:#475467;text-align:left;background:0 0;border:1px solid #0000;border-radius:10px;width:100%;padding:10px;font-size:11px;font-weight:600}.walkthrough-step[aria-current=step]{color:#3730a3;background:#f3f4ff;border-color:#c7d2fe}.walkthrough-main{grid-column:2;overflow:hidden}.walkthrough-copy{padding:14px 17px 9px;animation:.28s both step-in}.walkthrough-copy h2{margin:0 0 3px;font-size:16px}.walkthrough-copy p{color:#667085;font-size:11px}.walkthrough-controls{justify-content:space-between;gap:10px;padding:0 17px 10px;display:flex}.walkthrough-controls button{border:1px solid var(--line);color:#344054;background:#fff;border-radius:9px;align-items:center;gap:6px;padding:7px 10px;font-size:10px;font-weight:600;display:inline-flex}.walkthrough-tools{padding:0 12px 12px;animation:.35s both stage-in}.walkthrough-tools .drawing{height:min(380px,36vw);min-height:250px}.walkthrough-tools .canvas-panel{box-shadow:none;padding:10px}.walkthrough-tools .side-panel{box-shadow:none}.walkthrough-tools .workspace{grid-template-columns:minmax(0,1fr) minmax(290px,.72fr);gap:9px}.walkthrough-tools .order-strip{margin:0 0 9px}.walkthrough-tools .summary-metric,.walkthrough-tools .order-status{box-shadow:none;padding:8px 10px}.walkthrough-tools .summary-volume b{font-size:17px}.walkthrough-tools .summary-count{font-size:20px}.walkthrough-tools .buyer-note{font-size:8px}.walkthrough-tools .summary-metric strong,.walkthrough-tools .order-status strong{font-size:10px}.walkthrough-tools .order-status span{font-size:8px}.walkthrough-tools .order-status .download{min-height:30px;font-size:9px}.walkthrough-tools .designer-type-select{margin-bottom:8px}.walkthrough-tools .side-panel{padding:10px}.walkthrough-tools .fields{gap:7px;margin-top:9px}.walkthrough-tools .hole-list{max-height:190px}.walkthrough-tools .canvas-legend{font-size:8px}.walkthrough-progress{color:#4338ca;background:#eef2ff;border-radius:8px;padding:6px 9px;font:600 10px DM Mono,monospace}.walkthrough-focus,.step-focus-0 .designer-type-select,.step-focus-1 .settings,.step-focus-2 .canvas-panel,.step-focus-3 .hole-manager,.step-focus-4 .order-strip>*{animation:1.8s ease-in-out infinite focus-ring}.preview-actions{align-items:center;gap:7px;display:flex}.preview-toggle{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:9px;padding:2px;display:inline-flex}.preview-toggle button{color:#475569;background:0 0;border:0;border-radius:7px;min-width:37px;padding:5px 9px;font-size:10px;font-weight:700}.preview-toggle button[aria-pressed=true]{color:#fff;background:#1e293b;box-shadow:0 1px 3px #0f172a40}.drawing-3d{touch-action:auto}.solid-face{fill:#64748b;stroke:#475569;stroke-width:1.3px}.solid-top{fill:url(#solid-top);stroke:#4338ca;stroke-width:2px;stroke-linejoin:round}.solid-hole{fill:#172554;stroke:#fff;stroke-width:1.5px}.solid-hole-label{fill:#1e293b;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round;font:700 12px DM Sans,sans-serif}.solid-caption{fill:#64748b;font:11px DM Sans,sans-serif}.preview-edit-shell{min-width:0;position:relative}.preview-edit-shield{z-index:4;color:#263575;text-align:center;cursor:not-allowed;background:#eef2ffdf;border:1px solid #c7d2fe;border-radius:15px;flex-direction:column;justify-content:center;align-items:center;gap:7px;padding:18px;font-size:12px;font-weight:700;display:flex;position:absolute;inset:0}.preview-edit-shield svg{color:#4338ca}.preview-edit-shield small{font-size:10px;font-weight:500}@keyframes step-in{0%{opacity:.2;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@keyframes stage-in{0%{opacity:.55}to{opacity:1}}@keyframes focus-ring{0%,to{outline-offset:1px;outline:3px solid #4338ca;box-shadow:0 0 #4338ca00}50%{outline-offset:3px;outline:5px solid #312e81;box-shadow:0 0 0 6px #818cf866}}@media (prefers-reduced-motion:reduce){.walkthrough-focus,.step-focus-0 .designer-type-select,.step-focus-1 .settings,.step-focus-2 .canvas-panel,.step-focus-3 .hole-manager,.step-focus-4 .order-strip>*{animation-duration:.01ms;animation-iteration-count:1}}@media (width<=900px){.order-strip{grid-template-columns:minmax(0,1fr) minmax(110px,.55fr)}.order-status{grid-column:1/-1}.workspace{grid-template-columns:1fr}.drawing{height:min(520px,64vw)}.walkthrough{grid-template-columns:1fr}.walkthrough-sidebar,.walkthrough-main{grid-column:1}.walkthrough-steps{grid-template-columns:repeat(5,minmax(0,1fr))}.walkthrough-step{text-align:center;min-height:44px;padding:7px}.walkthrough-tools .workspace{grid-template-columns:1fr}.walkthrough-tools .drawing{height:55vw}}@media (width<=560px){.app{padding:12px 10px 18px}header{gap:9px;padding-bottom:10px}.brand-mark{border-radius:11px;flex-basis:36px;width:36px;height:36px;font-size:12px}h1{font-size:16px}.brand-mark+div p{max-width:33ch;font-size:9px}.help-link{padding:7px;font-size:0}.help-link svg{width:16px}.order-strip{grid-template-columns:minmax(0,1fr) 90px;gap:7px;margin:9px 0}.summary-metric{padding:9px}.summary-metric strong{font-size:10px}.summary-volume{gap:5px}.summary-volume b{font-size:clamp(15px,4.8vw,20px)}.summary-volume i{font-size:11px}.buyer-note{font-size:8px}.count-metric .summary-count{font-size:23px}.order-status{grid-column:1/-1;padding:8px 9px}.order-status span{font-size:9px}.order-status .download{min-height:32px;padding:7px 8px;font-size:10px}.canvas-panel{padding:10px}.drawing{height:66vw;min-height:245px}.side-panel{padding:11px}.hole-head{gap:6px}.hole-fields{gap:5px}.walkthrough-steps{grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;padding:5px}.walkthrough-step{padding:6px 3px;font-size:8px}.walkthrough-copy{padding:11px 12px 7px}.walkthrough-tools{padding:0 7px 7px}.walkthrough-tools .order-strip{grid-template-columns:minmax(0,1fr) 70px}.walkthrough-tools .summary-volume b{font-size:13px}.walkthrough-tools .order-status .download{font-size:8px}.walkthrough-tools .drawing{height:66vw;min-height:235px}}
