:root{color:#18332e;font-synthesis:none;text-rendering:optimizelegibility;--ink:#18332e;--muted:#5b6c64;--border:#dce2d9;--white:#fff;--forest:#193f36;--mint:#a7c6a8;--clay:#c27b59;background:#f5f5f0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:450}*{box-sizing:border-box}body{min-width:300px;margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.52}button:focus-visible,input:focus-visible,canvas:focus-visible{outline-offset:3px;outline:3px solid #cd865d}button:active:not(:disabled){transform:translateY(1px)}h1,h2,p{margin:0}.app-header{color:#f7f8f4;background:#132a26;border-bottom:1px solid #304b42;min-height:65px}.top-inner{justify-content:space-between;align-items:center;gap:15px;max-width:1432px;min-height:65px;margin:auto;padding:0 34px;display:flex}.brand,.top-actions,.brand img,.local-state,.project-actions,.preview-heading>div,.preview-status>span:first-child{align-items:center;display:flex}.brand{letter-spacing:-.7px;white-space:nowrap;gap:12px;font-size:20px;font-weight:650}.brand img{border:1px solid #416058;border-radius:9px;width:34px;height:34px}.brand strong{color:#a7c6a8}.brand-divider{background:#496158;width:1px;height:19px;margin-left:5px}.brand-note{letter-spacing:0;color:#b4c3bb;font-size:12px;font-weight:500}.top-actions{gap:20px}.local-state{color:#d8e6db;white-space:nowrap;gap:8px;font-size:12px}.local-state i,.preview-status i,.stage-tag>span,.eyebrow>span:first-child{background:#91bb99;border-radius:100%;flex:none;width:7px;height:7px;display:inline-block}.local-state i{box-shadow:0 0 0 3px #91bb9925}.subtle,.primary,.secondary,.icon-button,.text-button{white-space:nowrap;border:1px solid #0000;border-radius:9px;justify-content:center;align-items:center;gap:8px;font-weight:650;display:inline-flex}.subtle{color:#f1f7ef;background:#244039;border-color:#456157;min-height:36px;padding:0 12px;font-size:13px}.subtle:hover{background:#32574b}.workspace{max-width:1432px;margin:auto;padding:34px 34px 18px}.intro{justify-content:space-between;align-items:end;gap:20px;margin-bottom:25px;display:flex}.eyebrow{letter-spacing:1.65px;color:#527368;align-items:center;gap:9px;font-size:10px;font-weight:800;display:flex}.eyebrow>span:first-child{background:#9d6b4f;width:6px;height:6px}.eyebrow-sep{color:#acb6ac}.intro h1{letter-spacing:-.075em;margin:10px 0 9px;font-size:clamp(34px,4vw,59px);font-weight:720;line-height:1.02}.intro p{color:var(--muted);font-size:15px}.project-actions{gap:10px;padding-bottom:3px}.primary,.secondary{min-height:43px;padding:0 14px;font-size:13px}.primary{background:var(--forest);color:#fff;border-color:var(--forest);box-shadow:0 2px 3px #18332e18}.primary:hover:not(:disabled){background:#28584b}.secondary{color:#24433a;background:#fff;border-color:#cdd8ce}.secondary:hover:not(:disabled){background:#eef5ee;border-color:#a8bdac}.editor{grid-template-columns:minmax(265px,326px) minmax(0,1fr);grid-template-areas:"settings preview";align-items:start;gap:18px;display:grid}.preview-card,.settings{border:1px solid var(--border);background:#fff;border-radius:15px;min-width:0;box-shadow:0 4px 12px #182a2010}.preview-card{grid-area:preview;overflow:hidden}.settings{grid-area:settings;padding:18px 17px 16px}.settings-head{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.panel-kicker{color:#668276;letter-spacing:1.6px;margin-bottom:5px;font-size:9px;font-weight:800}.settings h2,.preview-heading h2{letter-spacing:-.4px;font-size:17px;line-height:1.2}.icon-button{color:#365d50;background:#f8faf7;border-color:#d9e1d9;width:34px;height:34px;padding:0}.icon-button:hover{background:#e8f0e8}.presets,.parameter-group{border:0;min-width:0;margin:0;padding:0}.presets legend,.parameter-group legend{letter-spacing:-.12px;color:#305047;margin-bottom:7px;padding:0;font-size:12px;font-weight:750}.preset-row{background:#f1f5ee;border:1px solid #e1e9e0;border-radius:9px;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:4px;display:grid}.preset-row button{color:#4c665d;background:0 0;border:1px solid #0000;border-radius:6px;min-height:30px;padding:0 3px;font-size:11px;font-weight:650}.preset-row button:hover{background:#e5efe5}.preset-row button[aria-pressed=true]{color:#224638;background:#fff;border-color:#d5e1d7;box-shadow:0 1px 2px #284a3020}.parameter-group{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;width:100%;margin-top:14px;display:grid}.parameter-group legend{border-top:1px solid #e8ece6;width:100%;padding-top:12px}.field{min-width:0}.field label{color:#53675d;min-height:21px;margin-bottom:5px;font-size:10px;font-weight:660;line-height:1.1;display:block}.field small{color:#66766e;margin-top:5px;font-size:9px;line-height:1.28;display:block}.number-wrap{background:#fafbf8;border:1px solid #d8e1d8;border-radius:7px;align-items:center;min-height:36px;padding:0 6px 0 0;display:flex;overflow:hidden}.number-wrap:focus-within{border-color:#719e86;box-shadow:0 0 0 2px #90b19e38}.number-wrap input{color:#173b2f;font-variant-numeric:tabular-nums;background:0 0;border:none;width:100%;min-width:0;padding:7px;font-size:13px;font-weight:650;outline:none!important}.number-wrap input::-webkit-inner-spin-button{appearance:none}.number-wrap input[type=number]{appearance:textfield}.number-wrap span{color:#647a6e;flex:none;font-size:9px}.preview-heading{justify-content:space-between;align-items:center;height:52px;padding:12px 15px;display:flex}.preview-heading>div{gap:8px}.preview-heading svg{color:#54766a}.swatches button{background:var(--swatch);border:2px solid #fff;border-radius:100%;width:24px;height:24px;padding:0;box-shadow:0 0 0 1px #d9ded7}.swatches button[aria-pressed=true]{box-shadow:0 0 0 2px #315d50}.viewport{isolation:isolate;background:radial-gradient(at 47% 35%,#31564f 0,#223d37 49%,#142c28 100%);height:clamp(390px,49vh,600px);position:relative;overflow:hidden}.canvas-host,.canvas-host canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.canvas-host canvas{cursor:grab;touch-action:none}.canvas-host canvas:active{cursor:grabbing}.viewport-top,.camera-bar,.stage-progress,.stage-help,.stage-message{z-index:1;position:absolute}.viewport-top{pointer-events:none;justify-content:space-between;display:flex;top:13px;left:13px;right:13px}.stage-tag,.stage-unit{color:#e1ede4;letter-spacing:.7px;background:#142b27b8;border:1px solid #54756a;border-radius:6px;align-items:center;gap:6px;padding:6px 9px;font-size:10px;display:inline-flex}.stage-tag>span{background:#a6c3ac;width:5px;height:5px}.stage-unit{letter-spacing:0;font-weight:650}.camera-bar{background:#162e2bea;border:1px solid #69877c99;border-radius:9px;align-items:center;gap:2px;padding:4px;display:flex;bottom:33px;left:50%;transform:translate(-50%);box-shadow:0 4px 12px #05141166}.camera-bar button{color:#f0f7ef;white-space:nowrap;background:0 0;border:0;border-radius:5px;min-height:33px;padding:7px 9px;font-size:11px;font-weight:620}.camera-bar button:hover:not(:disabled){background:#395a50}.camera-divider{background:#4b6c61;width:1px;height:17px}.stage-help{text-align:center;color:#b7cfc3;pointer-events:none;font-size:10px;bottom:9px;left:6px;right:6px}.stage-progress{color:#edf6ed;white-space:nowrap;background:#182f2be8;border-radius:7px;padding:6px 9px;font-size:11px;top:13px;left:50%;transform:translate(-50%)}.stage-message{text-align:center;color:#eef7ef;align-content:center;justify-items:center;gap:8px;display:grid;inset:23% 15%}.stage-message span{color:#cadbd0;max-width:42ch;font-size:13px}.metrics{border-bottom:1px solid #e8ece6;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:13px 15px;display:grid}.metrics>div{border-left:1px solid #e5eae4;min-width:0;padding:0 12px}.metrics>div:first-child{border-left:0;padding-left:0}.metrics span{color:#667b70;margin-bottom:4px;font-size:10px;font-weight:600;display:block}.metrics strong{letter-spacing:-.35px;font-variant-numeric:tabular-nums;font-size:15px}.preview-status{color:#67776e;justify-content:space-between;align-items:center;gap:8px;padding:10px 15px;font-size:11px;display:flex}.preview-status>span:first-child{gap:6px;font-weight:690}.preview-status i{background:#7e8e85;width:6px;height:6px}.preview-status .status-ok{color:#346d51}.preview-status .status-ok i{background:#529b68}.alert{color:#7c351e;background:#fff1e7;border:1px solid #ecc7b1;border-radius:8px;margin:3px 12px 12px;padding:9px 11px;font-size:12px}.workspace-footer{color:#617268;justify-content:space-between;align-items:center;gap:8px;margin-top:13px;font-size:12px;display:flex}.workspace-footer strong{color:#34554a}.footer-dot{padding:0 6px}.text-button{color:#376b57;text-underline-offset:3px;white-space:normal;background:0 0;border:none;padding:4px 0;font-size:12px;text-decoration:underline}.workspace-footer>div{gap:12px;display:flex}.dialog{border:1px solid var(--border);width:min(460px,100vw - 26px);color:var(--ink);background:#fff;border-radius:15px;padding:18px;box-shadow:0 22px 60px #12221c50}.dialog::backdrop{background:#142b2873}.dialog-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.dialog h2{letter-spacing:-.8px;font-size:24px}.dialog p{color:var(--muted);font-size:13px;line-height:1.5}.dialog .alert{color:#7c351e;margin:10px 0 0}.save-form,.project-body{gap:10px;display:grid}.save-form label{font-size:13px;font-weight:650}.save-form input{min-width:0;color:var(--ink);border:1px solid #bdcec0;border-radius:8px;padding:9px 10px}.save-form button,.project-body>button{justify-self:start}.project-list{gap:5px;max-height:280px;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.project-list button{text-align:left;color:#284b40;background:#f6faf5;border:1px solid #dae6db;border-radius:8px;align-items:center;gap:10px;width:100%;padding:8px 9px;display:flex}.project-list button:hover{background:#eaf4e9}.project-list button>span:nth-child(2){overflow-wrap:anywhere;min-width:0}.project-list small{color:#677c70;margin-top:3px;display:block}.project-arrow{margin-left:auto}.empty{background:#f5f7f2;border-radius:8px;padding:12px}.toast{z-index:3;color:#fff;background:#1c4437;border-radius:9px;max-width:calc(100vw - 36px);padding:11px 14px;font-size:13px;position:fixed;bottom:18px;right:18px;box-shadow:0 6px 20px #18332e33}@media (max-width:960px){.top-inner,.workspace{padding-left:19px;padding-right:19px}.editor{grid-template-columns:minmax(248px,292px) minmax(0,1fr);gap:12px}.metrics strong{font-size:13px}.project-actions{gap:6px}.intro h1{font-size:43px}.viewport{height:440px}}@media (max-width:700px){.top-inner{min-height:57px;padding:0 12px}.app-header{min-height:57px}.brand{gap:7px;font-size:18px}.brand img{width:29px;height:29px}.brand-note,.brand-divider{display:none}.top-actions{gap:8px}.local-state{gap:5px;font-size:10px}.local-state i{width:5px;height:5px}.subtle{min-height:33px;padding:0 7px;font-size:11px}.subtle svg{width:15px}.workspace{padding:22px 12px 14px}.intro{flex-direction:column;align-items:start;gap:11px;margin-bottom:12px}.intro h1{margin-top:7px;margin-bottom:6px;font-size:clamp(31px,8.7vw,49px)}.intro p{font-size:13px}.project-actions{gap:7px;width:100%;padding:0}.project-actions>button{flex:1;min-height:40px;font-size:12px}.editor{grid-template-columns:minmax(0,1fr);grid-template-areas:"preview""settings";gap:11px}.viewport{height:clamp(295px,47vh,430px)}.preview-heading{height:45px;padding:9px 12px}.preview-heading h2{font-size:15px}.metrics{gap:5px;padding:10px}.metrics>div{padding:0 6px}.metrics strong{font-size:12px}.metrics span{font-size:9px}.preview-status{padding:8px 10px;font-size:10px}.preview-status>span:last-child{text-align:right}.settings{padding:13px}.field label{min-height:18px;font-size:11px}.field small{font-size:10px}.number-wrap input{font-size:16px}.number-wrap{min-height:39px}.workspace-footer{flex-direction:column;align-items:start;font-size:11px}.stage-help{font-size:9px}.stage-progress{top:43px}.settings-head{margin-bottom:12px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.catalog h1{letter-spacing:-.065em;margin:12px 0 24px;font-size:clamp(32px,5vw,57px)}.catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:900px;display:grid}.catalog-grid button{text-align:left;border:1px solid var(--border);color:var(--ink);background:#fff;border-radius:14px;justify-items:start;gap:13px;padding:24px;display:grid}.catalog-grid button:hover{background:#edf4ec;border-color:#94ae9f}.catalog-grid strong{letter-spacing:-.035em;font-size:23px}.catalog-grid span{color:var(--muted);font-size:14px}.keychain-options{grid-template-columns:1fr 1fr;gap:10px;display:grid}.keychain-options label{color:#36584b;gap:5px;min-width:0;font-size:12px;font-weight:650;display:grid}.keychain-options label:first-child,.keychain-options label:nth-child(2){grid-column:1/-1}.keychain-options input,.keychain-options select{width:100%;min-width:0;font:inherit;color:var(--ink);background:#fafbf8;border:1px solid #d8e1d8;border-radius:7px;padding:8px;font-size:14px}@media (max-width:700px){.catalog-grid{grid-template-columns:1fr}.keychain-options input,.keychain-options select{font-size:16px}.top-actions{gap:5px}.top-actions .local-state{display:none}}.bounds-toggle{pointer-events:auto}.bounds-toggle[aria-pressed=true]{color:#142b27;background:#d1e6cf}@media (max-width:700px){.top-inner{flex-wrap:wrap;padding-block:8px}.top-actions{flex-wrap:wrap}.top-actions .local-state{display:flex}}
