:root{--bg:#f4f5f1;--paper:#fff;--ink:#1f3540;--muted:#6b7c81;--teal:#087d76;--soft:#e7f2ec;--line:#d9e2df;--orange:#ae633d;color-scheme:light}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:14px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}main{max-width:1760px;margin:auto;padding:0 22px}h1,h2,p{margin:0}h1{font-size:1.7rem;letter-spacing:-.04em;line-height:1.2}h2{font-size:1rem;letter-spacing:-.025em}button,input,select{font:inherit;color:inherit;border:1px solid var(--line);border-radius:7px}button{background:var(--paper);padding:7px 10px;min-height:34px;cursor:pointer;font-weight:650;touch-action:manipulation}button:hover{background:#f0f8f3;border-color:#7cb7a9}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--teal);color:white;border-color:var(--teal)}button.active{background:var(--soft);color:var(--teal);border-color:#8ebcac}a{color:var(--teal);text-underline-offset:3px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #d28b54;outline-offset:3px}input,select{padding:7px;background:#fff;min-width:0;width:100%}input[type=checkbox]{width:auto;accent-color:var(--teal)}input[type=range]{padding:0;border:0;accent-color:var(--teal);cursor:pointer;background:transparent;min-height:25px}output{font-variant-numeric:tabular-nums}header{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:24px 0}.brand{display:flex;align-items:center;gap:14px}.brand-icon{display:grid;place-items:center;width:51px;height:51px;flex-shrink:0;border-radius:15px;color:#e8efe4;background:#2b6157;font-size:2.1rem}.brand p{color:var(--muted);font-size:.83rem;margin-top:4px}nav{display:flex;gap:18px;align-items:center;font-size:.75rem}nav a{text-decoration:none;font-weight:700}.quiet{font-size:.75rem;background:var(--soft);color:var(--teal)}.project-bar{display:flex;gap:18px;align-items:center;background:#294751;color:#eaf2ed;border-radius:12px;padding:14px 16px;margin-bottom:20px}.project-bar>label{display:flex;gap:12px;align-items:center;flex:1;max-width:590px;font-weight:700;font-size:.75rem}.project-bar input{background:#3b5d63;color:white;border-color:#698187;font-size:.85rem}.project-actions{display:flex;gap:7px;margin-left:auto}.project-actions button{font-size:.73rem}.project-bar>span{font-size:.69rem;color:#c1d9d4}.workspace{display:grid;grid-template-columns:270px minmax(0,1fr) minmax(315px,.85fr);align-items:start;gap:16px}.panel{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden;min-width:0}.panel-heading{display:flex;gap:8px;align-items:center;padding:15px 14px;border-bottom:1px solid var(--line)}.step{background:var(--soft);color:var(--teal);border-radius:6px;font-size:.7rem;font-weight:800;display:grid;place-items:center;width:24px;height:24px;flex-shrink:0}.controls{padding:0 16px 16px}.controls .panel-heading{margin:0 -16px 14px}.field{display:block;margin:11px 0;font-size:.73rem;position:relative;font-weight:650}.field input,.field select{display:block;margin-top:5px;font-size:.77rem}.field>output{float:right;color:var(--teal)}.field>span{position:absolute;right:10px;bottom:8px;color:var(--muted);font-size:.73rem;font-weight:400}.measurement-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}.measurement-fields input{padding-right:33px}.hint{font-size:.69rem;color:var(--muted);line-height:1.55;margin:8px 0}.upload-button{display:block;width:100%;text-align:center;padding:17px 10px;background:#f6faf5;border:1px dashed #80aa9c;color:#315b52;font-size:.76rem}.upload-button small{display:block;font-size:.63rem;color:var(--muted);font-weight:400;margin-top:5px}.controls.dragover .upload-button{background:#dcefe4;border-color:var(--teal)}.check-row{display:flex;align-items:start;gap:6px;font-size:.72rem;margin:11px 0}.check-row label{display:flex;align-items:center;gap:5px}hr{border:0;border-top:1px solid var(--line);margin:16px 0}.subtle{padding:5px 8px;min-height:28px;font-size:.66rem;color:var(--muted)}.cleanup-details{font-size:.71rem;margin-top:13px}.cleanup-details summary,.mesh-details summary{cursor:pointer;color:var(--muted);padding:5px 0}.history-actions{display:flex;gap:4px;margin-left:auto}.history-actions button{font-size:1.1rem;min-height:27px;padding:2px 8px}.tools{display:flex;gap:5px;flex-wrap:wrap;padding:10px;border-bottom:1px solid var(--line)}.tools button{font-size:.74rem;padding:5px 7px;min-height:30px}.brush-row{display:flex;gap:12px;padding:8px 12px;align-items:center;justify-content:space-between;font-size:.65rem;border-bottom:1px solid var(--line);color:var(--muted)}.brush-row label{display:flex;align-items:center;gap:5px}.brush-row input[type=range]{width:90px}.brush-row output{min-width:35px}.canvas-wrap,.result-wrap{position:relative;background:#fafcf9}.canvas-wrap{aspect-ratio:1}.canvas-wrap canvas{width:100%;height:100%;display:block;touch-action:none;cursor:crosshair}.canvas-wrap canvas[data-tool=pan]{cursor:grab}.canvas-footer{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:10px 12px;font-size:.64rem;color:var(--muted);border-top:1px solid var(--line);flex-wrap:wrap}.canvas-footer>span{flex:1;min-width:160px}.zoom-actions{display:flex;align-items:center;gap:5px}.zoom-actions button{min-height:25px;padding:3px 7px;font-size:.67rem}.zoom-actions output{min-width:34px;text-align:center}#empty-guide{pointer-events:none;position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--muted);font-size:.86rem;text-align:center;background:#fafcf980}#empty-guide small{display:block;font-size:.7rem;margin-top:6px}.preview-tabs{display:flex;gap:6px;align-items:center;border-bottom:1px solid var(--line);padding:10px 12px}.preview-tabs button{font-size:.73rem;min-height:29px;padding:5px 9px}.preview-tabs [aria-selected=true]{color:var(--teal);background:var(--soft);border-color:#bbd7c8}#reset-3d{margin-left:auto}.result-wrap{aspect-ratio:1}.result-wrap canvas{display:block;width:100%;height:100%}#three-canvas{touch-action:none;cursor:grab}.busy{position:absolute;top:12px;left:50%;transform:translateX(-50%);white-space:nowrap;padding:7px 13px;background:#254a4de8;color:#fff;font-size:.7rem;border-radius:20px;box-shadow:0 3px 10px #274a4d20}.result-placeholder{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);font-size:.76rem}.result-options{padding:9px 13px;border-bottom:1px solid var(--line);font-size:.67rem;color:var(--muted);display:flex;flex-wrap:wrap;gap:7px}.result-options label{display:flex;gap:4px;align-items:center}.result-status{padding:12px 13px;font-size:.75rem;background:#eff4ed;color:#3a6550;margin:13px;border-radius:7px;overflow-wrap:anywhere}.result-status.issue{background:#fcf0e5;color:#9d5b35}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:0 14px 14px}.metrics span{display:block;color:var(--muted);font-size:.64rem}.metrics strong{font-size:.78rem}.export-stl{display:block;width:calc(100% - 26px);margin:0 13px 10px;padding:12px 8px;font-size:.76rem}.secondary-exports{display:flex;gap:6px;flex-wrap:wrap;padding:0 13px 10px;align-items:center}.secondary-exports button{font-size:.7rem;min-height:29px;padding:4px 9px}.secondary-exports label{font-size:.64rem;color:var(--muted)}.mesh-details{margin:0 13px 12px;font-size:.66rem;color:var(--muted)}.below{display:grid;grid-template-columns:1.3fr 1fr;gap:30px;padding:30px 0}.eyebrow{text-transform:uppercase;font-size:.65rem;font-weight:800;letter-spacing:.1em;color:var(--teal);margin-bottom:6px}.below h2{font-size:1.15rem}.examples{display:flex;gap:7px;flex-wrap:wrap;margin-top:14px}.examples button{font-size:.72rem}.explanation{padding:16px 18px;background:#eaf1e6;border-left:3px solid #96b994;font-size:.76rem;color:var(--muted);border-radius:0 8px 8px 0}.explanation strong{color:var(--ink)}.explanation p{margin:6px 0 10px}footer{text-align:center;font-size:.69rem;color:var(--muted);padding-bottom:25px}dialog{max-width:700px;width:calc(100% - 30px);max-height:85vh;border:1px solid var(--line);border-radius:13px;padding:26px;color:var(--ink);box-shadow:0 20px 60px #19393140}dialog::backdrop{background:#233e4766}.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:15px}.dialog-head h2{font-size:1.2rem}.dialog-head button{font-size:1.4rem;min-height:29px;padding:3px 9px}dialog ol{padding-left:23px}dialog li,dialog p{font-size:.82rem;line-height:1.6;margin:12px 0}dialog .hint{font-size:.71rem}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:20;width:max-content;max-width:calc(100% - 25px);background:#284a51;color:white;border-radius:8px;padding:12px 17px;font-size:.77rem;box-shadow:0 5px 18px #233e4720}[hidden]{display:none!important}@media(max-width:1250px){.workspace{grid-template-columns:240px minmax(0,1fr)}.result{grid-column:2}.result-wrap{aspect-ratio:1.4}.controls{grid-row:1/3}.brush-row{flex-wrap:wrap}.project-bar{flex-wrap:wrap}.project-actions{margin-left:auto}}@media(max-width:760px){main{padding:0 12px}header{padding:17px 0;align-items:start;gap:9px}.brand{gap:9px}.brand-icon{width:36px;height:42px;border-radius:10px;font-size:1.7rem}.brand h1{font-size:1.35rem}.brand p{font-size:.67rem;max-width:220px}nav{flex-direction:column;align-items:end;gap:7px;font-size:.65rem;flex-shrink:0}nav button{font-size:.65rem;min-height:29px;padding:5px 7px}.project-bar{padding:12px;gap:9px;margin-bottom:14px}.project-bar>label{flex-basis:100%;gap:8px}.project-bar input{font-size:.75rem}.project-bar>span{font-size:.64rem}.project-actions{flex-wrap:wrap;gap:5px}.project-actions button{font-size:.64rem;padding:5px 8px;min-height:29px}.workspace{display:flex;flex-direction:column;gap:14px}.workspace>.panel{width:100%}.controls{order:1}.editor{order:0}.result{order:2}.controls .panel-heading{margin-bottom:12px}.controls .image-controls{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.controls .image-controls .check-row{grid-column:1/-1}.tools{gap:5px}.tools button{padding:5px 7px;font-size:.67rem}.tools button span{display:none}.panel-heading{padding:12px}.panel-heading h2{font-size:.88rem}.brush-row{padding:8px 10px;gap:8px}.brush-row input[type=range]{width:80px}.canvas-footer{padding:8px 10px}.canvas-wrap{aspect-ratio:1}.result-wrap{aspect-ratio:1.1}.below{grid-template-columns:1fr;gap:18px;padding-top:23px}.below h2{font-size:1.05rem}.examples button{font-size:.66rem}.export-stl{font-size:.73rem}}@media(max-width:350px){.brand-icon{display:none}.brand h1{font-size:1.25rem}.project-actions{margin-left:0}.brush-row{font-size:.6rem}.brush-row input[type=range]{width:75px}.controls .image-controls{grid-template-columns:1fr}.controls .image-controls .check-row{grid-column:auto}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.project-actions button{color:var(--ink)}.mobile-navigation{display:none}@media(max-width:760px){.controls{order:0}.editor{order:1}.mobile-navigation{display:flex;gap:5px;margin:0 0 13px;flex-wrap:wrap}.mobile-navigation button{font-size:.65rem;padding:5px 8px;min-height:28px}}

.text-panel{padding:12px;background:#f5f9f5;border-bottom:1px solid var(--line)}.text-panel-heading{display:flex;gap:12px;align-items:center;justify-content:space-between}.text-panel h3{font-size:.8rem;margin:0}.text-panel-heading label{font-size:.65rem;color:var(--muted);width:55%;max-width:270px}.text-panel-heading select{display:block;font-size:.71rem;padding:5px 7px}.field small{font-size:.64rem;font-weight:400;color:var(--muted);float:right}.field textarea{display:block;width:100%;max-width:100%;min-height:62px;resize:vertical;margin-top:5px;padding:8px;border:1px solid var(--line);border-radius:7px;font:inherit;font-size:.85rem;color:var(--ink);background:white}.field textarea:focus-visible{outline:3px solid #d28b54;outline-offset:3px}.text-fields{display:grid;grid-template-columns:1.3fr 1fr;gap:12px}.text-options{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:center}.text-fields .field,.text-options .field{margin:4px 0}.text-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.text-actions button{font-size:.73rem}.text-actions .primary{flex:1}.canvas-wrap canvas[data-tool=text]{cursor:move}.font-credits{font-size:.76rem}.font-credits summary{cursor:pointer}.tools button[data-tool=text] span{display:inline}@media(max-width:760px){.text-panel{padding:10px}.text-panel-heading label{width:52%}.text-panel-heading h3{font-size:.75rem}.text-fields{grid-template-columns:1fr;gap:2px}.text-options{grid-template-columns:1fr;gap:0}.text-options .check-row{margin:7px 0}.field small{float:none;display:block}.text-actions button{font-size:.67rem;padding:6px 8px}}

.mode-switch{display:flex;gap:5px}.mode-switch button{flex:1;font-size:.75rem}.auto-button{width:100%;margin-top:8px;font-size:.76rem}.controls [hidden]{display:none!important}.expert-controls{min-width:0}#auto-status{padding:8px 9px;background:#f0f6f1;border-radius:7px}#auto-status.issue{background:#fff0e4;color:#865329}#basic-summary{border-top:1px solid var(--line);padding-top:12px}@media(min-width:761px) and (max-width:1200px){.controls .expert-controls{grid-column:1/-1}.controls .mode-switch{grid-column:1/-1}.controls #mode-hint,.controls #auto-status,.controls #basic-summary{grid-column:1/-1}}

.below{display:block}.below .explanation{max-width:850px}

.image-actions{display:flex;align-items:center;gap:8px;justify-content:space-between;flex-wrap:wrap}.image-actions .hint{flex:1;min-width:80px;overflow-wrap:anywhere}.text-panel [hidden]{display:none!important}#text-preview{display:block;width:100%;height:100px;margin-top:10px;background:#fff;border:1px solid var(--line);border-radius:7px}.font-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px;margin-top:10px}.font-tiles button{display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:4px;border:1px solid var(--line);border-radius:7px;background:#fff;cursor:pointer;font:inherit;font-size:11px;color:inherit;text-align:left;min-width:0}.font-tiles button[aria-checked="true"]{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal)}.font-tiles canvas{display:block;width:100%;height:38px}.font-tiles span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 2px}#text-connectivity-status.issue{color:#865329}#text-connectivity-status.ready{color:var(--teal)}
