:root{--accent: #ffc301;--accent-soft: #fff3cc;--accent-ink: #000000;--accent-strong: #aa8201;--brand-black: #000000;--brand-grey: #575757;--bg: #ffffff;--bg-2: #f4f4f4;--bg-3: #eaeaea;--text: #000000;--text-2: #575757;--text-3: #727272;--border: #d8d8d8;--border-2: #b0b0b0;--green: #197a4b;--amber: #a86a08;--red: #b3261e;--radius: 9px;--shadow: 0 1px 2px rgba(16, 20, 26, .06), 0 6px 20px rgba(16, 20, 26, .07);--font: "Questrial", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Poppins", "Questrial", ui-sans-serif, system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--text);background:var(--bg-2);-webkit-font-smoothing:antialiased}button{font-family:inherit;color:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:13px;color:var(--text)}.app{display:flex;flex-direction:column;height:100%;background:var(--bg-2)}.topbar{display:flex;align-items:center;gap:14px;padding:0 18px;height:62px;background:var(--bg);border-bottom:3px solid var(--accent);flex:none}.brand{display:flex;align-items:center;gap:12px;font-family:var(--font-display);font-weight:600;font-size:15px;letter-spacing:-.01em}.brand .co{color:var(--text-3);font-weight:500;font-size:12px}.brand .logo{height:44px;width:auto;display:block}.brand .divider{width:1px;height:26px;background:var(--border-2)}.brand .product{font-size:14px;color:var(--text)}.topbar .spacer{flex:1}.badge{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:3px 8px;border-radius:999px;background:var(--bg-3);color:var(--text-2)}.badge.internal{background:var(--brand-black);color:var(--accent)}.layout{display:grid;grid-template-columns:340px minmax(0,1fr) 320px;gap:0;flex:1;min-height:0}.panel{background:var(--bg);border-right:1px solid var(--border);overflow-y:auto;min-height:0}.rail{background:var(--bg);border-left:1px solid var(--border);border-right:none;overflow-y:auto;min-height:0;display:flex;flex-direction:column}.stage{position:relative;min-height:0;background:#cfe0ef}.stage canvas{display:block}.stage-tools{position:absolute;top:12px;left:12px;display:flex;gap:6px;flex-wrap:wrap;z-index:5}.stage-tools.right{left:auto;right:12px}.chip{border:1px solid rgba(20,24,30,.1);background:#ffffffeb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:var(--text);font-size:12px;font-weight:600;padding:6px 11px;border-radius:7px;box-shadow:0 1px 3px #0000001f}.chip:hover{background:#fff}.chip[aria-pressed=true]{background:var(--text);color:#fff;border-color:var(--text)}.section{border-bottom:1px solid var(--border);padding:16px 18px}.section:last-child{border-bottom:none}.section-head{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:none;padding:0;margin:0 0 2px;text-align:left}.section-title{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3)}.section-hint{font-size:12px;color:var(--text-2);margin:2px 0 12px}.section-body{margin-top:12px;display:flex;flex-direction:column;gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.field-label{font-size:12.5px;font-weight:600;color:var(--text)}.field-value{font-size:12.5px;color:var(--text-2);font-variant-numeric:tabular-nums}.field-note{font-size:11.5px;color:var(--text-3)}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:22px;background:transparent;margin:0}input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:3px;background:var(--bg-3)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;margin-top:-6px;border-radius:50%;background:#fff;border:2px solid var(--accent-strong);box-shadow:0 1px 3px #0003}input[type=range]:focus-visible::-webkit-slider-thumb{outline:2px solid var(--accent-strong);outline-offset:2px}.seg{display:flex;background:var(--bg-3);border-radius:8px;padding:3px;gap:3px}.seg button{flex:1;border:none;background:transparent;border-radius:6px;padding:7px 6px;font-size:12.5px;font-weight:600;color:var(--text-2)}.seg button[aria-pressed=true]{background:var(--bg);color:var(--text);box-shadow:var(--shadow)}.seg button:disabled{opacity:.35;cursor:not-allowed}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.card{border:1.5px solid var(--border);background:var(--bg);border-radius:var(--radius);padding:10px;text-align:left;display:flex;flex-direction:column;gap:2px}.card:hover{border-color:var(--border-2)}.card[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.card .n{font-size:12.5px;font-weight:650}.card .d{font-size:11px;color:var(--text-3);line-height:1.3}.card .p{font-size:11.5px;color:var(--text-2);font-variant-numeric:tabular-nums}.swatches{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}.swatch{position:relative;aspect-ratio:1;border-radius:6px;border:1.5px solid rgba(0,0,0,.16);padding:0}.swatch[aria-pressed=true]{box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--accent)}.swatch .up{position:absolute;right:-2px;top:-3px;font-size:9px;font-weight:800;color:var(--accent-ink);background:var(--accent);border-radius:999px;padding:0 3px;line-height:13px}.list{display:flex;flex-direction:column;gap:6px}.row{display:flex;align-items:center;gap:10px;border:1.5px solid var(--border);border-radius:var(--radius);padding:9px 11px;background:var(--bg);text-align:left;width:100%}.row:hover{border-color:var(--border-2)}.row[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.row .grow{flex:1;min-width:0}.row .n{font-size:12.5px;font-weight:600;display:block}.row .d{font-size:11px;color:var(--text-3);display:block;line-height:1.35}.row .p{font-size:12px;color:var(--text-2);font-variant-numeric:tabular-nums;white-space:nowrap}.stepper{display:flex;align-items:center;gap:2px}.stepper button{width:24px;height:24px;border-radius:6px;border:1px solid var(--border);background:var(--bg);font-weight:700;color:var(--text-2);line-height:1;padding:0}.stepper span{min-width:24px;text-align:center;font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums}select,input[type=text],input[type=email],input[type=tel],input[type=number],textarea{width:100%;padding:8px 10px;border:1px solid var(--border-2);border-radius:7px;background:var(--bg);outline:none}select:focus,input:focus,textarea:focus{border-color:var(--accent-strong);box-shadow:0 0 0 3px var(--accent-soft)}.supplier-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.supplier-card{border:1.5px solid var(--border);background:var(--bg);border-radius:var(--radius);padding:12px 10px;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}.supplier-card:hover{border-color:var(--border-2)}.supplier-card[aria-checked=true]{border-color:var(--accent);background:var(--accent-soft)}.logo-tile{position:relative;width:100%;height:52px;display:grid;place-items:center;border-radius:7px;background:var(--brand);overflow:hidden}.logo-tile img{max-width:86%;max-height:80%;object-fit:contain;display:block}.logo-mark{color:#fff;font-weight:800;font-size:19px;letter-spacing:.08em}.logo-check{position:absolute;right:5px;top:3px;color:#fff;font-size:13px;font-weight:800;text-shadow:0 1px 3px rgba(0,0,0,.5)}.supplier-name{font-size:12.5px;font-weight:650;line-height:1.25}.supplier-blurb{font-size:10.5px;color:var(--text-3);line-height:1.35}.supplier-warn{font-size:10.5px;color:var(--amber);font-weight:600;line-height:1.3}.mass-update{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 16px;background:var(--bg-2);border-bottom:1px solid var(--border);font-size:12.5px}.mass-update input[type=number]{width:84px}.mass-update .spacer{flex:1}.supplier-tabs{display:flex;gap:6px;padding:12px 16px 0;flex-wrap:wrap}.supplier-tabs button{border:1.5px solid var(--border);background:var(--bg);border-radius:999px;padding:6px 14px;font-size:12.5px;font-weight:650;display:flex;align-items:center;gap:7px}.supplier-tabs button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.supplier-tabs .dot{width:10px;height:10px;border-radius:3px;display:inline-block}td.edited{position:relative}td.edited:after{content:"";position:absolute;left:3px;top:50%;transform:translateY(-50%);width:4px;height:4px;border-radius:50%;background:var(--accent)}.cat-row td{background:var(--bg-2);font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}.price-head{padding:18px 18px 14px;border-bottom:1px solid var(--border)}.price-label{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3)}.price-total{font-family:var(--font-display);font-size:32px;font-weight:700;letter-spacing:-.02em;margin-top:2px;font-variant-numeric:tabular-nums}.price-sub{font-size:12px;color:var(--text-2);margin-top:3px}.lines{padding:6px 18px 16px;flex:1}.line{display:flex;gap:10px;padding:7px 0;border-bottom:1px dashed var(--border);font-size:12.5px}.line:last-child{border-bottom:none}.line .grow{flex:1;min-width:0}.line .l{font-weight:550;display:block}.line .d{font-size:11px;color:var(--text-3);display:block;line-height:1.35}.line .v{font-variant-numeric:tabular-nums;white-space:nowrap}.line.tot{font-weight:700;border-top:1.5px solid var(--border-2);border-bottom:none;padding-top:10px;margin-top:4px}.totals{padding:12px 18px;border-top:1px solid var(--border);background:var(--bg-2)}.totals .line{border-bottom:none;padding:4px 0}.cta{padding:14px 18px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px}.btn{border:1px solid var(--border-2);background:var(--bg);color:var(--text);border-radius:8px;padding:10px 14px;font-size:13px;font-weight:650;width:100%}.btn:hover{background:var(--bg-2)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:700}.btn.primary:hover{filter:brightness(1.06)}.btn.sm{padding:6px 10px;font-size:12px;width:auto}.btn.ghost{border-color:transparent;background:transparent;color:var(--text-2)}.btn.ghost:hover{background:var(--bg-2)}.metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--border);border-top:1px solid var(--border)}.metric{background:var(--bg);padding:10px 18px}.metric .k{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);font-weight:700}.metric .v{font-size:14px;font-weight:650;font-variant-numeric:tabular-nums;margin-top:1px}.margin-good{color:var(--green)}.margin-ok{color:var(--amber)}.margin-bad{color:var(--red)}.issues{padding:10px 18px;background:#fff8ec;border-bottom:1px solid var(--border)}.issue{font-size:12px;display:flex;gap:7px;padding:3px 0;color:var(--amber)}.issue.error{color:var(--red)}.scrim{position:fixed;inset:0;background:#0e111573;display:grid;place-items:center;padding:20px;z-index:50}.dialog{background:var(--bg);border-radius:14px;box-shadow:0 24px 70px #0000004d;width:min(560px,100%);max-height:90vh;overflow-y:auto}.dialog h2{margin:0;font-size:17px;font-family:var(--font-display);font-weight:600}.dialog .body{padding:20px;display:flex;flex-direction:column;gap:14px}.dialog .foot{padding:14px 20px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end}.dialog .foot .btn{width:auto}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.admin{padding:22px;max-width:1100px;margin:0 auto;width:100%}.admin h1{font-size:20px;margin:0 0 4px;font-family:var(--font-display);font-weight:600}.admin .sub{color:var(--text-2);font-size:13px;margin-bottom:18px}.sheet{background:var(--bg);border:1px solid var(--border);border-radius:12px;margin-bottom:18px;overflow:hidden}.sheet>h3{margin:0;padding:12px 16px;font-size:13px;border-bottom:1px solid var(--border);background:var(--bg-2)}table.grid{width:100%;border-collapse:collapse;font-size:12.5px}table.grid th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);padding:8px 14px;border-bottom:1px solid var(--border)}table.grid td{padding:6px 14px;border-bottom:1px solid var(--bg-3)}table.grid tr:last-child td{border-bottom:none}table.grid input{width:110px;padding:5px 8px}table.grid .num{text-align:right;font-variant-numeric:tabular-nums}.mode-pill{display:flex;background:#ffffffeb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid rgba(20,24,30,.1);border-radius:8px;padding:2px;box-shadow:0 1px 3px #0000001f;margin-right:6px}.mode-pill button{border:none;background:transparent;font-size:12px;font-weight:650;padding:5px 11px;border-radius:6px;color:var(--text-2)}.mode-pill button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}.pop-wrap{position:relative}.popover{position:absolute;top:calc(100% + 6px);right:0;z-index:20;min-width:210px;background:var(--bg);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);padding:10px 12px;display:flex;flex-direction:column;gap:8px}.check{display:flex;align-items:center;gap:8px;font-size:12.5px;cursor:pointer}.check input{accent-color:var(--accent)}.ht-status{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text-2)}.ht-status .dot{width:8px;height:8px;border-radius:50%;background:var(--text-3)}.ht-status .dot.on{background:var(--green)}.ht-status .dot.starting{background:var(--amber)}.stage-hint{position:absolute;bottom:12px;left:50%;transform:translate(-50%);background:#111418b8;color:#fff;font-size:12px;padding:5px 12px;border-radius:999px;pointer-events:none;z-index:5}.plan{position:absolute;inset:0;z-index:4;background:#f4f4f4;overflow:hidden}.plan canvas{display:block}.plan-tools{position:absolute;top:52px;left:12px;z-index:6}.plan-palette{margin-top:6px;background:var(--bg);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);padding:6px;display:grid;grid-template-columns:1fr 1fr;gap:4px;width:300px;max-height:60vh;overflow-y:auto}.plan-palette-item{display:flex;align-items:center;gap:7px;text-align:left;border:1px solid var(--border);background:var(--bg-2);border-radius:7px;padding:6px 8px}.plan-palette-item:hover{border-color:var(--accent)}.plan-palette-item .ic{font-size:16px}.plan-palette-item .n{display:block;font-size:11.5px;font-weight:650}.plan-palette-item .d{display:block;font-size:10.5px;color:var(--text-3)}.plan-status{position:absolute;left:12px;right:12px;bottom:10px;display:flex;gap:14px;align-items:center;font-size:12px;color:var(--text-2);pointer-events:none;flex-wrap:wrap}.plan-status .good{color:var(--green);font-weight:650}.plan-status .bad,.plan-selected .bad{color:var(--red);font-weight:650}.plan-status .hint{margin-left:auto;color:var(--text-3)}.plan-selected{position:absolute;top:52px;right:12px;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:12px;box-shadow:var(--shadow)}.plan-menu{position:absolute;z-index:10;background:var(--bg);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);padding:4px 0;min-width:170px;display:flex;flex-direction:column}.plan-menu button{border:none;background:none;text-align:left;font-size:12.5px;padding:6px 14px}.plan-menu button:hover{background:var(--bg-2)}.plan-menu button:disabled{opacity:.4}.plan-menu .danger{color:var(--red)}.plan-menu .cap{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);padding:4px 14px 2px}.plan-menu hr{border:none;border-top:1px solid var(--border);margin:4px 0}.plan-edit{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:12;background:var(--bg);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);padding:14px 16px;width:260px;display:flex;flex-direction:column;gap:10px}.plan-edit .t{font-weight:700;font-size:13px}.plan-edit label{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--text-2);font-weight:600}.plan-edit input[type=text],.plan-edit input:not([type]),.plan-edit input[type=number]{padding:6px 8px;border:1px solid var(--border-2);border-radius:6px}.plan-edit .row2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.plan-edit .row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.plan-edit .row3 input{width:100%}.plan-edit .color-row{display:flex;gap:8px;align-items:center}.plan-edit .color-row input{width:40px;height:30px;padding:0;border:1px solid var(--border-2);border-radius:6px}.plan-edit .preview{flex:1;height:30px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.plan-edit .actions{display:flex;gap:6px;justify-content:flex-end}.swatch.printed{background-size:cover!important;background-position:center!important}.app.embed .topbar{display:none}@media(max-width:1080px){.layout{grid-template-columns:300px minmax(0,1fr)}.rail{grid-column:1 / -1;border-left:none;border-top:1px solid var(--border);flex-direction:row;flex-wrap:wrap;overflow:visible}.rail .price-head{flex:1 1 220px;border-bottom:none}.rail .lines{display:none}.rail .cta{flex:1 1 240px;border-top:none;flex-direction:row;align-items:center}}.mobile-bar{display:none}@media(max-width:760px){.topbar{height:56px;padding:0 12px;gap:8px}.brand .logo{height:36px}.brand .divider,.brand .product,.topbar .badge:not(.internal){display:none}.layout{display:flex;flex-direction:column;overflow-y:auto}.stage{height:46vh;min-height:300px;order:-1;flex:none}.layout>*{flex-shrink:0;min-height:auto}.panel{border-right:none;border-bottom:1px solid var(--border);overflow:visible}.rail{position:static;flex-direction:column;flex-wrap:nowrap;overflow:visible;border-top:1px solid var(--border)}.rail .price-head{flex:none;border-bottom:1px solid var(--border)}.rail .lines{display:block}.rail .cta{flex-direction:column;align-items:stretch}.swatches{grid-template-columns:repeat(6,1fr)}.cards{grid-template-columns:1fr}.mobile-bar{display:flex;align-items:center;gap:12px;position:sticky;bottom:0;z-index:20;flex:none;background:var(--bg);border-top:3px solid var(--accent);box-shadow:0 -4px 18px #0000001f;padding:10px 14px calc(10px + env(safe-area-inset-bottom))}.mobile-bar .grow{flex:1;min-width:0}.mobile-bar .t{font-family:var(--font-display);font-weight:700;font-size:22px;line-height:1.1}.mobile-bar .s{font-size:12px;color:var(--text-2)}.mobile-bar .s button{border:none;background:none;padding:0;text-decoration:underline;font-size:12px;color:var(--text)}.mobile-bar .btn{width:auto;white-space:nowrap}.stage-tools{right:12px;row-gap:6px}.stage-tools.right{inset:auto 12px 10px;justify-content:flex-end}.stage-hint,.stage-hint.frame-note{bottom:52px}input,select,textarea{font-size:16px}}.add-part{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:18px;padding:14px 16px}.add-part-form{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;align-content:start}.add-part-form label{display:flex;flex-direction:column;gap:4px;font-size:11.5px;font-weight:600;color:var(--text-2)}.add-part-form label.wide{grid-column:1 / -1}.add-part-form input,.add-part-form select{padding:7px 9px;border:1px solid var(--border-2);border-radius:6px;background:var(--bg)}.add-part-side{display:flex;flex-direction:column;gap:8px}.json-preview{margin:0;background:#10151c;color:#cfe2f7;font-size:11px;line-height:1.5;padding:10px 12px;border-radius:8px;max-height:260px;overflow:auto}@media(max-width:760px){.add-part{grid-template-columns:1fr}}.stage-hint.frame-note{bottom:46px;background:#111418d1}.plan-edit{width:300px}
