@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-thai-400-normal-C2DaJlKK.woff2)format("woff2"),url(/assets/sarabun-thai-400-normal-CH-UbWgg.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-vietnamese-400-normal-igdrzAGY.woff2)format("woff2"),url(/assets/sarabun-vietnamese-400-normal-DPfkSCMy.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-latin-ext-400-normal-BbP7GpLL.woff2)format("woff2"),url(/assets/sarabun-latin-ext-400-normal-BsmTn0SS.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-latin-400-normal-URPBxl-K.woff2)format("woff2"),url(/assets/sarabun-latin-400-normal-DmguIS-7.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/sarabun-thai-500-normal-BVssjame.woff2)format("woff2"),url(/assets/sarabun-thai-500-normal-C3iDLEzi.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/sarabun-vietnamese-500-normal-Dpe7Br9m.woff2)format("woff2"),url(/assets/sarabun-vietnamese-500-normal-CpRVvGRU.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/sarabun-latin-ext-500-normal-DE1LysqI.woff2)format("woff2"),url(/assets/sarabun-latin-ext-500-normal-Cot16Bd2.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/sarabun-latin-500-normal-BjUTcdxu.woff2)format("woff2"),url(/assets/sarabun-latin-500-normal-CJexTAnl.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-thai-600-normal-3dIAQ-_s.woff2)format("woff2"),url(/assets/sarabun-thai-600-normal-DWKeTe6a.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-vietnamese-600-normal-DkxrOlLB.woff2)format("woff2"),url(/assets/sarabun-vietnamese-600-normal-BMbOgAW-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-latin-ext-600-normal-BRxjKUQ6.woff2)format("woff2"),url(/assets/sarabun-latin-ext-600-normal-0tXu9x_i.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-latin-600-normal-DMD3TROr.woff2)format("woff2"),url(/assets/sarabun-latin-600-normal-9FonlkKx.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-thai-700-normal-CbuDipM3.woff2)format("woff2"),url(/assets/sarabun-thai-700-normal-CP2-p8e-.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-vietnamese-700-normal-DrMy3BMX.woff2)format("woff2"),url(/assets/sarabun-vietnamese-700-normal-lN6N8XBT.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-latin-ext-700-normal-CnQtP196.woff2)format("woff2"),url(/assets/sarabun-latin-ext-700-normal-ykw7DJpk.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-latin-700-normal-DQKyWxHq.woff2)format("woff2"),url(/assets/sarabun-latin-700-normal-DUuqj4Ju.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#fff;--paper-text:#1a1f2b;--paper-muted:#5b6475;--paper-border:#d9dde5;--paper-danger:#c62828}:root,:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0b1220;--bg-viewport:#0e1729;--glow:#3d8bff33;--glow-2:#ff8a3d1a;--surface:#111a2d;--surface-2:#172238;--surface-3:#20304d;--border:#24304d;--border-strong:#3a4d73;--text:#eef2fb;--text-muted:#93a0bd;--text-faint:#6b7a99;--accent:#3d8bff;--accent-contrast:#fff;--accent-soft:#3d8bff29;--accent-2:#22c3d6;--accent-2-contrast:#04262b;--accent-2-soft:#22c3d626;--accent-3:#ff8a3d;--accent-3-soft:#ff8a3d26;--brand:#ff8a3d;--brand-contrast:#2a1200;--cta-shadow:0 6px 18px #ff8a3d47;--success:#3fd08e;--warning:#ffd04a;--warning-soft:#ffd04a24;--danger:#ff5f70;--danger-soft:#ff5f7024;--grid-line:#93a0bd14;--grid-line-strong:#93a0bd29;--shadow:0 8px 28px #0006;--model-shadow:#00000080;--viewer-grid:#1a2640;--viewer-grid-major:#2a3a5c;--viewer-dim:#ff8a3d}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f3f6fb;--bg-viewport:#f9fbfe;--glow:#1f6fe51f;--glow-2:#e0661a14;--surface:#fff;--surface-2:#eef3fa;--surface-3:#dfe8f5;--border:#dbe3f0;--border-strong:#b5c4dc;--text:#0f1a2e;--text-muted:#4f5d78;--text-faint:#8592ab;--accent:#1f6fe5;--accent-contrast:#fff;--accent-soft:#1f6fe51a;--accent-2:#0b97aa;--accent-2-contrast:#fff;--accent-2-soft:#0b97aa1c;--accent-3:#d9600f;--accent-3-soft:#d9600f1c;--brand:#f07a26;--brand-contrast:#2a1200;--cta-shadow:0 6px 16px #f07a2640;--success:#17a565;--warning:#a87c00;--warning-soft:#c8960024;--danger:#d92f45;--danger-soft:#d92f451a;--grid-line:#0f1a2e0d;--grid-line-strong:#0f1a2e1a;--shadow:0 8px 24px #0f1a2e1a;--model-shadow:#0f1a2e38;--viewer-grid:#e3eaf5;--viewer-grid-major:#c9d5e8;--viewer-dim:#d9600f}:root{--font-ui:"Sarabun", system-ui, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, monospace;--fs-xs:13px;--fs-sm:14px;--fs-md:16px;--fs-lg:20px;--fs-xl:24px;--fs-2xl:32px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-pill:999px;--panel-width:320px;--rail-width:44px;--focus-ring:0 0 0 2px var(--bg), 0 0 0 4px var(--accent);--transition:.14s ease;--provider-google:#4285f4;--provider-google-bg:#fff}@font-face{font-family:Kanit Model;font-weight:600;font-display:swap;src:url(/assets/Kanit-SemiBold-5ZCNzNA2.ttf)format("truetype")}@font-face{font-family:Mitr Model;font-weight:600;font-display:swap;src:url(/assets/Mitr-SemiBold-5HyhxMUl.ttf)format("truetype")}@font-face{font-family:Prompt Model;font-weight:600;font-display:swap;src:url(/assets/Prompt-SemiBold-CU5cAoPO.ttf)format("truetype")}@font-face{font-family:Bai Jamjuree Model;font-weight:600;font-display:swap;src:url(/assets/BaiJamjuree-SemiBold-0y2zS6xn.ttf)format("truetype")}@font-face{font-family:Sarabun Model;font-weight:700;font-display:swap;src:url(/assets/Sarabun-Bold-BgATxLmo.ttf)format("truetype")}@font-face{font-family:Itim Model;font-weight:400;font-display:swap;src:url(/assets/Itim-Regular-NrYbsetC.ttf)format("truetype")}@font-face{font-family:Sriracha Model;font-weight:400;font-display:swap;src:url(/assets/Sriracha-Regular-BB3At-MM.ttf)format("truetype")}@font-face{font-family:Luckiest Guy Model;font-weight:400;font-display:swap;src:url(/assets/LuckiestGuy-Regular-B11ovD5s.ttf)format("truetype")}@font-face{font-family:Titan One Model;font-weight:400;font-display:swap;src:url(/assets/TitanOne-Regular-xv9-ylzg.ttf)format("truetype")}@font-face{font-family:Bungee Model;font-weight:400;font-display:swap;src:url(/assets/Bungee-Regular-BbhcPAtb.ttf)format("truetype")}@font-face{font-family:Chango Model;font-weight:400;font-display:swap;src:url(/assets/Chango-Regular-DZ1vzYqC.ttf)format("truetype")}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:var(--fs-md);-webkit-font-smoothing:antialiased;line-height:1.5}button,input,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}:focus-visible{box-shadow:var(--focus-ring);outline:none}code{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted)}.app{flex-direction:column;height:100%;display:flex}.topnav{align-items:center;gap:var(--space-4);height:52px;padding:0 var(--space-4);background:var(--surface);border-bottom:1px solid var(--border);flex:none;display:flex}.brand{font-weight:800;font-size:var(--fs-lg);letter-spacing:.01em;color:var(--brand)}.topnav a{white-space:nowrap;color:var(--text-muted);font-size:var(--fs-sm);border-bottom:2px solid #0000;flex:none;padding:4px 2px;text-decoration:none}.topnav a:hover{color:var(--text)}.topnav a[aria-current=page]{color:var(--text);border-color:var(--accent)}.topnav a.brand{font-size:var(--fs-lg);color:var(--brand);border:0;padding:0}.nav-theme{white-space:nowrap;flex:none;min-height:34px;margin-left:auto;padding:4px 10px}.nav-theme-icon,.nav-short{display:none}.topnav a.nav-cart{margin-left:auto}.topnav .nav-theme~a.nav-cart{margin-left:0}.app-page{height:auto;min-height:100%}.page{width:100%;max-width:1120px;padding:var(--space-5) var(--space-5) 80px;gap:var(--space-4);flex-direction:column;flex:1;margin:0 auto;display:flex}.page-narrow{max-width:460px}.page-head{gap:var(--space-2);flex-direction:column;display:flex}.page-head h1{font-size:var(--fs-2xl);margin:0;line-height:1.2}.page-head p{margin:0}a.page-back{color:var(--accent);font-size:var(--fs-sm);text-decoration:none}a.page-back:hover{text-decoration:underline}.page-loading{color:var(--text-muted);margin:auto}.muted{color:var(--text-muted)}a.btn{text-decoration:none}a.btn-secondary,a.btn-ghost{color:var(--text)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);gap:var(--space-3);flex-direction:column;min-width:0;display:flex}.home-hero{margin:var(--space-4) 0 var(--space-5);max-width:720px}.home-hero h1{font-size:var(--fs-2xl);margin:0 0 var(--space-2);line-height:1.2}.home-hero p{margin:0}.home-products{margin:var(--space-4) 0;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));padding:0;list-style:none;display:grid}.home-product h2{font-size:var(--fs-lg);margin:0}.home-product p{margin:0}.home-product-body{gap:var(--space-3);flex-direction:column;flex:1;display:flex}.home-product-body .btn{margin-top:auto}.home-product-title{align-items:center;gap:var(--space-2);justify-content:space-between;display:flex}.home-product-art{gap:var(--space-2);padding:var(--space-3);background:var(--bg-viewport);border-radius:var(--radius-md);justify-content:center;display:flex}.thumb{background:var(--bg-viewport);border:1px solid var(--border);border-radius:var(--radius-md);flex:1;place-items:center;min-width:0;max-width:160px;height:110px;padding:6px;display:grid}.sticker{width:100%;height:100%}.soon-badge{border-radius:var(--radius-sm);font-size:var(--fs-xs);background:var(--accent-3-soft);color:var(--accent-3);flex:none;padding:1px 8px;font-weight:700}.studio{counter-reset:step;grid-template-columns:var(--panel-width) minmax(0, 1fr) var(--panel-width);flex:1;grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"left view right""left bottom right";min-height:0;display:grid}.studio.left-collapsed{grid-template-columns:var(--rail-width) minmax(0, 1fr) var(--panel-width)}.studio.right-collapsed{grid-template-columns:var(--panel-width) minmax(0, 1fr) var(--rail-width)}.studio.left-collapsed.right-collapsed{grid-template-columns:var(--rail-width) minmax(0, 1fr) var(--rail-width)}.studio.panels-hidden{grid-template:"view"minmax(0,1fr)/minmax(0,1fr)}.studio.panels-hidden .panel{display:none}.panel{background:var(--surface);flex-direction:column;min-height:0;display:flex}.panel-left{border-right:1px solid var(--border);grid-area:left}.panel-right{border-left:1px solid var(--border);grid-area:right}.panel-bottom{border-top:1px solid var(--border);grid-area:bottom}.panel-bottom.is-collapsed .panel-head{cursor:pointer}.panel-bottom .panel-title:before{content:"🎛️ "}.panel-head{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);flex:none;display:flex}.panel-title{font-size:var(--fs-md);color:var(--text);margin:0;font-weight:700}.panel-body{padding:var(--space-4);gap:var(--space-5);flex-direction:column;display:flex;overflow-y:auto}.panel-bottom .panel-body{padding:var(--space-3) var(--space-4) var(--space-4);max-height:38vh}.panel-left.is-collapsed .panel-head,.panel-right.is-collapsed .panel-head{padding:var(--space-3) 0;border:0;flex-direction:column-reverse;justify-content:flex-end;height:100%}.panel-left.is-collapsed .panel-title,.panel-right.is-collapsed .panel-title{writing-mode:vertical-rl}.panel-bottom.is-collapsed .panel-head{border-bottom:0}.icon-btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);width:28px;height:28px;color:var(--text-muted);flex:none;place-items:center;font-size:16px;line-height:1;display:grid}.icon-btn:hover{color:var(--text);border-color:var(--border-strong)}.field{gap:var(--space-2);flex-direction:column;display:flex}.field-label{font-weight:600;font-size:var(--fs-md);justify-content:space-between;align-items:baseline;display:flex}.field-value{font-weight:400;font-size:var(--fs-sm);color:var(--text-muted)}.field-sub{font-size:var(--fs-sm);color:var(--text-muted);margin-top:var(--space-1)}.hint{font-size:var(--fs-xs);color:var(--text-faint)}.download{flex-direction:column;gap:4px;display:flex}.download .hint{padding:0 2px}.stack{gap:var(--space-2);flex-direction:column;display:flex}.row-wrap{gap:var(--space-2);flex-wrap:wrap;display:flex}.text-input{background:var(--surface-2);border:2px solid var(--border);border-radius:var(--radius-md);width:100%;transition:border-color var(--transition), box-shadow var(--transition);padding:14px 16px;font-size:24px;font-weight:700}.text-input::placeholder{color:var(--text-faint);font-weight:400}.text-input:focus{border-color:var(--accent-2);box-shadow:0 0 0 4px var(--accent-2-soft)}.field.step>.field-label{font-size:var(--fs-lg);justify-content:flex-start;align-items:center}.field.step>.field-label:before{counter-increment:step;content:counter(step);background:var(--brand);width:26px;height:26px;color:var(--brand-contrast);font-size:var(--fs-sm);border-radius:50%;flex:none;place-items:center;margin-right:10px;font-weight:700;display:grid}.field.step>.field-label .field-value{margin-left:auto}.presets{gap:var(--space-2);padding:2px 2px var(--space-2);scroll-snap-type:x proximity;display:flex;overflow-x:auto}.preset{scroll-snap-align:start;text-align:left;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md);min-width:96px;transition:transform var(--transition), border-color var(--transition), background var(--transition);flex-direction:column;flex:none;align-items:flex-start;gap:2px;padding:10px 12px;display:flex}.preset:hover{border-color:var(--accent-2);background:var(--accent-2-soft);transform:translateY(-2px)}.preset-emoji{font-size:22px;line-height:1.2}.preset-name{font-size:var(--fs-sm);font-weight:700}.preset-sample{font-size:var(--fs-xs);color:var(--text-faint)}.btn{justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius-md);min-height:40px;font-size:var(--fs-sm);transition:background var(--transition), border-color var(--transition), opacity var(--transition), transform var(--transition), filter var(--transition);border:1px solid #0000;padding:8px 16px;font-weight:600;display:inline-flex}.btn-block{width:100%}.btn-primary{background:var(--brand);color:var(--brand-contrast);box-shadow:var(--cta-shadow);min-height:48px;font-size:var(--fs-md);font-weight:700}.btn-primary:hover:not(:disabled){filter:brightness(1.1);transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-primary:disabled{box-shadow:none}.btn-secondary{background:var(--surface-2);border-color:var(--border)}.btn-secondary:hover:not(:disabled){border-color:var(--border-strong);background:var(--surface-3)}.btn-ghost{color:var(--text-muted);background:0 0}.btn-ghost:hover:not(:disabled){color:var(--text);background:var(--surface-2)}.btn:disabled{opacity:.4}.segmented{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md);gap:2px;padding:3px;display:inline-flex}.segmented button{color:var(--text-muted);font-size:var(--fs-sm);white-space:nowrap;background:0 0;border:0;border-radius:4px;flex:1;padding:5px 14px;font-weight:600}.segmented button.is-active{background:var(--accent-2);color:var(--accent-2-contrast)}.toggle{justify-content:space-between;align-items:center;gap:var(--space-3);cursor:pointer;display:flex}.toggle-text{flex-direction:column;font-weight:600;display:flex}.toggle-hint{font-size:var(--fs-xs);color:var(--text-faint);font-weight:400}.switch{border-radius:var(--radius-pill);border:1px solid var(--border-strong);background:var(--surface-3);width:40px;height:22px;transition:background var(--transition);flex:none;padding:0;position:relative}.switch-thumb{background:var(--text-muted);width:16px;height:16px;transition:transform var(--transition), background var(--transition);border-radius:50%;position:absolute;top:2px;left:2px}.switch.is-on{background:var(--accent-2);border-color:var(--accent-2)}.switch.is-on .switch-thumb{background:#fff;transform:translate(18px)}.swatches{gap:var(--space-3) var(--space-2);grid-template-columns:repeat(6,1fr);padding:4px 2px;display:grid}.swatch{aspect-ratio:1;background:var(--swatch);border:2px solid var(--border);border-radius:50%;padding:0;transition:transform .18s cubic-bezier(.3,1.6,.5,1);box-shadow:inset 0 -3px #0000002e}.swatch:hover{transform:scale(1.14)}.swatch.is-active{border-color:var(--surface);box-shadow:0 0 0 3px var(--accent-2), 0 4px 12px var(--accent-2-soft), inset 0 -3px 0 #0000002e;transform:scale(1.1)}.shape-grid{gap:var(--space-2);grid-template-columns:repeat(4,1fr);display:grid}.shape-cell{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md);transition:transform var(--transition), border-color var(--transition);color:var(--text-muted);font-size:var(--fs-xs);flex-direction:column;align-items:center;gap:2px;padding:10px 2px 8px;display:flex}.shape-cell svg{width:36px;height:24px;fill:var(--surface-3);stroke:var(--text-muted);stroke-width:1.4px}.shape-cell:hover{border-color:var(--border-strong);transform:translateY(-1px)}.shape-cell.is-active{border-color:var(--accent-2);background:var(--accent-2-soft);color:var(--text);font-weight:600}.shape-cell.is-active svg{stroke:var(--accent-2);fill:var(--accent-2-soft)}.chip-grid{flex-wrap:wrap;gap:6px;display:flex}.chip{border-radius:var(--radius-sm);font-size:var(--fs-sm);background:var(--surface-2);border:1px solid var(--border);color:var(--text-muted);padding:4px 12px}.chip.is-active{border-color:var(--accent-2);background:var(--accent-2-soft);color:var(--text)}.font-picker{gap:var(--space-3);flex-direction:column;max-height:300px;padding-right:2px;display:flex;overflow-y:auto}.font-group{flex-direction:column;gap:4px;display:flex}.font-group-title{font-size:var(--fs-xs);color:var(--text-faint);letter-spacing:.04em;font-weight:600}.font-item{justify-content:space-between;align-items:center;gap:var(--space-2);text-align:left;background:var(--surface-2);border-radius:var(--radius-sm);border:1px solid #0000;padding:6px 10px;display:flex}.font-item:hover{border-color:var(--border-strong)}.font-item.is-active{border-color:var(--accent-2);background:var(--accent-2-soft)}.font-sample{white-space:nowrap;text-overflow:ellipsis;font-size:20px;line-height:1.6;overflow:hidden}.font-name{font-size:var(--fs-xs);color:var(--text-muted);flex:none}.font-hidden-note{font-size:var(--fs-xs);color:var(--text-faint)}.notice{font-size:var(--fs-sm);border-radius:var(--radius-sm);border-left:3px solid var(--accent);background:var(--accent-soft);padding:8px 10px}.notice-warning{border-color:var(--warning);background:var(--warning-soft)}.notice-danger{border-color:var(--danger);background:var(--danger-soft)}.collapsible{border:1px solid var(--border);border-radius:var(--radius-md)}.collapsible-head{width:100%;font-weight:600;font-size:var(--fs-sm);background:0 0;border:0;justify-content:space-between;padding:8px 12px;display:flex}.collapsible-body{font-size:var(--fs-sm);color:var(--text-muted);padding:0 12px 10px}.steps{flex-direction:column;gap:4px;margin:0;padding-left:20px;display:flex}.dial-groups{gap:var(--space-4);flex-wrap:wrap;display:flex}.dial-group{padding:var(--space-2) var(--space-3) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);min-width:0;margin:0}.dial-group legend{font-size:var(--fs-sm);color:var(--text-muted);padding:0 6px;font-weight:600}.dial-group legend .toggle{gap:var(--space-2)}.dial-row{gap:var(--space-3);flex-wrap:wrap;align-items:flex-start;display:flex}.dial{flex-direction:column;gap:4px;width:112px;display:flex}.dial-head{justify-content:space-between;align-items:center;gap:4px;min-height:20px;display:flex}.dial-label{font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap}.dial-body{align-items:center;gap:6px;display:flex}.dial-knob{cursor:ns-resize;touch-action:none;border-radius:50%;flex:none;width:44px;height:44px}.dial-track{fill:none;stroke:var(--surface-3);stroke-width:5px;stroke-linecap:round}.dial-fill{fill:none;stroke:var(--accent-2);stroke-width:5px;stroke-linecap:round}.dial-thumb{fill:var(--text)}.dial-input{align-items:baseline;gap:2px;min-width:0;display:flex}.dial-input input{text-align:right;width:56px;font-family:var(--font-mono);font-size:var(--fs-sm);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px 4px}.dial-input input:focus{border-color:var(--accent)}.dial-unit{font-size:var(--fs-xs);color:var(--text-faint)}.badge{border-radius:var(--radius-pill);background:var(--accent-soft);color:var(--accent);white-space:nowrap;border:0;padding:0 6px;font-size:10px}.badge-btn{background:var(--surface-3);color:var(--text-muted)}.viewport{background:radial-gradient(55% 55% at 50% 42%, var(--glow), transparent 72%), radial-gradient(40% 40% at 85% 90%, var(--glow-2), transparent 70%), var(--bg-viewport);flex-direction:column;grid-area:view;min-width:0;min-height:0;display:flex}.viewport-top{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.project-title{font-size:var(--fs-lg);color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.viewport-actions{align-items:center;gap:var(--space-1);flex-wrap:wrap;display:flex}.view-tabs{padding:0 var(--space-4) var(--space-2);flex-wrap:wrap;gap:6px;display:flex}.view-tabs button{border-radius:var(--radius-sm);font-size:var(--fs-xs);border:1px solid var(--border);color:var(--text-muted);background:0 0;padding:3px 12px;font-weight:600}.view-tabs button.is-active{background:var(--accent-soft);border-color:var(--accent);color:var(--text)}.canvas{flex:1;place-items:center;min-height:240px;display:grid;position:relative;overflow:hidden}.canvas.is-empty .preview{visibility:hidden}.preview{transition:opacity var(--transition), filter var(--transition);animation:6s ease-in-out infinite float;position:absolute;inset:0}.preview canvas{touch-action:none;display:block}.viewer-labels{pointer-events:none;position:absolute;inset:0}.viewer-dim-label{color:var(--viewer-dim);font-family:var(--font-mono);font-size:var(--fs-xs);white-space:nowrap}.canvas-empty,.unsupported{z-index:1;position:relative}@keyframes float{50%{transform:translateY(-6px)rotate(-.6deg)}}@media (prefers-reduced-motion:reduce){.preview,.statusbar.is-building .status-dot{animation:none}.preset,.swatch,.btn,.shape-cell{transition:none}}.canvas.is-building .preview{opacity:.55}.canvas.is-stale .preview{filter:grayscale(.7);opacity:.6}.canvas-empty{color:var(--text-muted);font-size:var(--fs-lg);padding:var(--space-5);text-align:center}.statusbar{align-items:center;gap:var(--space-3);padding:6px var(--space-4);min-height:34px;font-size:var(--fs-xs);background:var(--surface);border-top:1px solid var(--border);color:var(--text-muted);flex-wrap:wrap;display:flex}.status-pill{color:var(--text);align-items:center;gap:6px;font-weight:600;display:inline-flex}.status-dot{background:var(--text-faint);border-radius:50%;width:8px;height:8px}.statusbar.is-ready .status-dot{background:var(--success)}.statusbar.is-building .status-dot{background:var(--accent);animation:.9s ease-in-out infinite pulse}.statusbar.is-error .status-dot{background:var(--danger)}.statusbar.is-error .status-pill{color:var(--danger)}.status-tag{border-radius:var(--radius-pill);padding:0 8px;font-weight:600}.status-tag-warn{background:var(--warning-soft);color:var(--warning)}.status-tag-info{background:var(--accent-soft);color:var(--accent)}.status-metrics{gap:var(--space-4);font-family:var(--font-mono);flex-wrap:wrap;margin-left:auto;display:flex}.status-metrics em{font-style:normal;font-family:var(--font-ui);color:var(--text-faint)}@keyframes pulse{50%{opacity:.3}}.toast{z-index:10;border-radius:var(--radius-md);background:var(--surface-3);border:1px solid var(--border-strong);box-shadow:var(--shadow);font-size:var(--fs-sm);padding:10px 16px;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.unsupported{max-width:560px;padding:var(--space-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);margin:10vh auto}.unsupported h1{margin:0 0 var(--space-3);font-size:var(--fs-xl)}.unsupported ul{margin:var(--space-3) 0 0;color:var(--text-muted);padding-left:20px}.cta-bar{display:none}@media (width<=1100px){:root{--panel-width:260px}}@media (width<=860px){.app{height:auto;min-height:100%}.studio,.studio.left-collapsed,.studio.right-collapsed,.studio.left-collapsed.right-collapsed{grid-template:"view""left""right""bottom"/minmax(0,1fr)}.viewport{z-index:5;height:auto;position:sticky;top:0}.canvas{flex:none;height:30vh;min-height:190px}.viewport-actions .btn,.view-tabs,.status-metrics{display:none}.viewport-top{padding:var(--space-2) var(--space-4) 0}.project-title{font-size:var(--fs-md)}.brand{white-space:nowrap}.studio.panels-hidden{grid-template-areas:"view"}.panel-bottom .panel-body{max-height:none}.panel-left,.panel-right{border:0;border-top:1px solid var(--border)}.panel-left.is-collapsed .panel-head,.panel-right.is-collapsed .panel-head{padding:var(--space-3) var(--space-4);flex-direction:row;justify-content:space-between;height:auto}.panel-left.is-collapsed .panel-title,.panel-right.is-collapsed .panel-title{writing-mode:horizontal-tb}.status-metrics{margin-left:0}.studio.has-cta{padding-bottom:84px}.cta-bar{z-index:9;gap:var(--space-3);padding:var(--space-3) var(--space-4) calc(var(--space-3) + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border);align-items:center;display:flex;position:fixed;bottom:0;left:0;right:0}.cta-bar .btn{flex:1}.toast{bottom:96px}.topnav{gap:var(--space-3)}}@media (width<=480px){.topnav{gap:var(--space-2);padding:0 var(--space-2);overflow-x:auto}.topnav a{font-size:var(--fs-xs)}.topnav a.brand{font-size:var(--fs-md)}.nav-theme{padding:4px 6px}.nav-theme-label,.nav-long{display:none}.nav-short,.nav-theme-icon{display:inline}.page{padding:var(--space-4) var(--space-4) 64px}}.page-medium{max-width:760px}.center{text-align:center}.stack-lg{gap:var(--space-4);flex-direction:column;min-width:0;display:flex}.form-field{flex-direction:column;gap:4px;min-width:0;display:flex}.form-field>label{font-size:var(--fs-sm);color:var(--text-muted);font-weight:600}.input{width:100%;min-height:42px;font-size:var(--fs-md);color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md);transition:border-color var(--transition), box-shadow var(--transition);padding:8px 12px}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.input[aria-invalid=true]{border-color:var(--danger)}.form-error{font-size:var(--fs-sm);color:var(--danger)}.checkbox{align-items:flex-start;gap:var(--space-2);font-size:var(--fs-sm);cursor:pointer;display:flex}.checkbox input{width:18px;height:18px;accent-color:var(--accent-2);flex:none;margin:2px 0 0}.checkbox a,.card a:not(.btn){color:var(--accent)}.link-btn{color:var(--accent);font-size:var(--fs-sm);text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.link-btn:hover{text-decoration:underline}.link-btn:disabled{opacity:.6;cursor:default}.align-end{align-self:flex-end}.auth-card{padding:var(--space-6) var(--space-5);gap:var(--space-4)}.auth-card h1{font-size:var(--fs-xl);margin:0}.auth-card p{margin:0}.provider-btn{gap:var(--space-3);border:1px solid var(--border);background:var(--surface-2);width:100%;min-height:46px;color:var(--text);font-size:var(--fs-md)}.provider-btn:hover:not(:disabled){border-color:var(--border-strong);background:var(--surface-3)}.provider-icon{border-radius:6px;place-items:center;width:24px;height:24px;font-size:14px;font-weight:800;display:grid}.provider-google .provider-icon{background:var(--provider-google-bg);color:var(--provider-google);border:1px solid var(--border)}.divider{align-items:center;gap:var(--space-3);color:var(--text-faint);font-size:var(--fs-xs);display:flex}.divider:before,.divider:after{content:"";background:var(--border);flex:1;height:1px}.privacy p,.privacy li,.privacy td{line-height:1.7}.privacy h2{font-size:var(--fs-lg);margin:0}.privacy p{margin:0}.privacy ul{gap:var(--space-2);flex-direction:column;margin:0;padding-left:1.2em;display:flex}.privacy-contact{gap:var(--space-1);flex-direction:column;margin:0;display:flex}.privacy-contact div{gap:0 var(--space-2);flex-wrap:wrap;display:flex}.privacy-contact dt{font-weight:600}.privacy-contact dt:after{content:":"}.privacy-contact dd{color:var(--text-muted);margin:0}.privacy-table-wrap{overflow-x:auto}.privacy-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.privacy-table th,.privacy-table td{text-align:left;vertical-align:top;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border)}.privacy-table th{color:var(--text-muted);font-weight:600}.privacy-table td:first-child{width:55%}.form-grid{gap:var(--space-3) var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.span-2{grid-column:1/-1}.form-actions{justify-content:flex-end;align-items:center;gap:var(--space-3);display:flex}.form-saved{font-size:var(--fs-sm);color:var(--success)}.card h2{font-size:var(--fs-lg);margin:0}@media (width<=560px){.form-grid{grid-template-columns:minmax(0,1fr)}}.grow{flex:1;min-width:0}.stack-sm{gap:var(--space-1);flex-direction:column;display:flex}.align-center{align-items:center}.thumb img{object-fit:contain;width:100%;height:100%;display:block}.thumb.is-dim{opacity:.4;filter:grayscale(.6)}.thumb-md{flex:none;width:84px;height:84px}.home-product.is-off .home-product-art{opacity:.6}.home-how ol{gap:var(--space-3);counter-reset:how;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin:0;padding:0;list-style:none;display:grid}.home-how li{gap:var(--space-1);counter-increment:how;flex-direction:column;display:flex}.home-how li strong:before{content:counter(how) ". ";color:var(--brand)}.product-layout{gap:var(--space-4);grid-template-columns:minmax(0,1fr) 340px;align-items:start;display:grid}.variant-grid{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(104px,1fr));display:grid}.variant-tile{align-items:center;gap:var(--space-1);padding:var(--space-2);background:var(--surface-2);border:2px solid var(--border);border-radius:var(--radius-md);color:var(--text);font:inherit;font-size:var(--fs-sm);cursor:pointer;transition:border-color var(--transition);flex-direction:column;display:flex}.variant-tile .thumb{background:0 0;border:0;width:100%;max-width:none;height:76px}.variant-tile:hover:not(:disabled){border-color:var(--border-strong)}.variant-tile.is-active{border-color:var(--accent-2);background:var(--accent-2-soft)}.variant-tile:focus-visible{box-shadow:var(--focus-ring);outline:none}.variant-tile:disabled{cursor:not-allowed;color:var(--text-faint)}.product-buy{top:var(--space-4);position:sticky}.nfc-editor{border-top:1px solid var(--border);padding-top:var(--space-3)}.nfc-editor .segmented{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.capacity{gap:var(--space-1);flex-direction:column;display:flex}.capacity-bar{border-radius:var(--radius-pill);background:var(--surface-3);height:6px;overflow:hidden}.capacity-bar span{background:var(--accent);height:100%;display:block}.qty{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);align-items:stretch;display:inline-flex;overflow:hidden}.qty button{width:32px;color:var(--text);font-size:var(--fs-md);background:0 0;border:0}.qty button:hover:not(:disabled){background:var(--surface-3)}.qty button:disabled{opacity:.35}.qty input{border:0;border-inline:1px solid var(--border);width:44px;color:var(--text);text-align:center;font-size:var(--fs-sm);background:0 0}.color-dot{border:1px solid var(--border-strong);vertical-align:middle;border-radius:50%;width:10px;height:10px;margin-right:6px;display:inline-block}.swatch.is-out{opacity:.3;cursor:not-allowed;background-image:linear-gradient(135deg, transparent 45%, var(--text-faint) 45% 55%, transparent 55%)}.swatch.is-out:hover{transform:none}@media (width<=860px){.product-layout{grid-template-columns:minmax(0,1fr)}.product-buy{position:static}}.cart-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.cart-item.has-problem{border-color:color-mix(in srgb, var(--danger) 45%, var(--border))}.cart-item-main{gap:var(--space-3);align-items:flex-start;display:flex}.cart-item-body{gap:var(--space-1);flex-direction:column;flex:1;min-width:0;display:flex}.cart-item-title{overflow-wrap:anywhere;font-weight:600}.cart-item-body .hint{overflow-wrap:anywhere}.cart-item-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.item-problem{font-size:var(--fs-sm);color:var(--danger)}.item-problem:before{content:"⚠ "}.nfc-inline{gap:var(--space-2);padding:var(--space-3);margin:var(--space-2) 0;background:var(--surface-2);border-radius:var(--radius-md);flex-direction:column;display:flex}.empty-state{text-align:center;padding:var(--space-6) var(--space-5);align-items:center}a.link{color:var(--accent);text-decoration:none}a.link:hover{text-decoration:underline}.cart-editing{justify-content:space-between;align-items:center;gap:var(--space-2);font-size:var(--fs-sm);border-radius:var(--radius-sm);border-left:3px solid var(--accent-2);background:var(--accent-2-soft);flex-wrap:wrap;padding:6px 10px;display:flex}.mini-items{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.mini-items li{align-items:center;gap:var(--space-2);font-size:var(--fs-sm);display:flex}.mini-items li span:first-child{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.kv{gap:var(--space-3);font-size:var(--fs-sm);flex-direction:column;margin:0;display:flex}.kv dt{color:var(--text-faint);font-size:var(--fs-xs)}.kv dd{overflow-wrap:anywhere;margin:2px 0 0}.summary-email{padding:var(--space-3);border:1px solid var(--accent);border-radius:var(--radius-md);background:var(--accent-soft);flex-direction:column;gap:2px;display:flex}.summary-email strong{font-size:var(--fs-lg);overflow-wrap:anywhere}.summary-email.is-invalid{border-color:var(--danger);background:var(--danger-soft)}.product-buy h3{margin:var(--space-2) 0 0;font-size:var(--fs-md)}.next-steps{font-size:var(--fs-sm);color:var(--text-muted);flex-direction:column;gap:4px;margin:0;padding-left:20px;display:flex}.reassure{padding:var(--space-3);border-radius:var(--radius-md);border-left:3px solid var(--success);background:color-mix(in srgb, var(--success) 10%, transparent);font-size:var(--fs-sm)}.reassure ul{margin:var(--space-1) 0 0;padding-left:18px}.radio-list{gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.radio-card{align-items:center;gap:var(--space-2);cursor:pointer;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md);font-size:var(--fs-sm);padding:10px 12px;display:flex}.radio-card input{accent-color:var(--accent-2);margin:0}.radio-card.is-active{border-color:var(--accent-2);background:var(--accent-2-soft)}.success-mark{background:color-mix(in srgb, var(--success) 18%, transparent);width:56px;height:56px;color:var(--success);border-radius:50%;place-items:center;font-size:28px;font-weight:700;display:grid}@media (width<=560px){.radio-list{grid-template-columns:minmax(0,1fr)}}.order-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}a.order-row{align-items:center;gap:var(--space-3);color:var(--text);flex-direction:row;text-decoration:none}a.order-row:hover{border-color:var(--border-strong);background:var(--surface-2)}.order-row.needs-action{border-color:var(--brand)}.order-row-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.order-row-title{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.order-row-action{color:var(--brand);font-weight:600}.order-row-total{text-align:right;flex-direction:column;flex:none;align-items:flex-end;display:flex}.order-badge{border-radius:var(--radius-sm);font-size:var(--fs-xs);white-space:nowrap;padding:1px 10px;font-weight:700;display:inline-block}.order-badge.is-quote_requested{background:var(--surface-3);color:var(--text-muted)}.order-badge.is-quoted,.order-badge.is-awaiting_payment{background:var(--accent-3-soft);color:var(--accent-3)}.order-badge.is-partially_paid,.order-badge.is-slip-pending{background:var(--warning-soft);color:var(--warning)}.order-badge.is-event{color:var(--text-muted);border:1px dashed var(--border-strong);background:0 0}.order-badge.is-paid{background:var(--accent-soft);color:var(--accent)}.order-badge.is-printing,.order-badge.is-shipped{background:var(--accent-2-soft);color:var(--accent-2)}.order-badge.is-completed,.order-badge.is-slip-accepted{background:color-mix(in srgb, var(--success) 16%, transparent);color:var(--success)}.order-badge.is-cancelled,.order-badge.is-slip-rejected{background:var(--danger-soft);color:var(--danger)}.timeline{border-left:2px solid var(--border);gap:var(--space-3);flex-direction:column;margin:0;padding:0 0 0 14px;list-style:none;display:flex}.timeline li{position:relative}.timeline li:before{content:"";background:var(--surface);border:2px solid var(--border-strong);border-radius:50%;width:10px;height:10px;position:absolute;top:7px;left:-20px}.timeline li:first-child:before{border-color:var(--brand);background:var(--brand)}.timeline-head{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.timeline-note{font-size:var(--fs-sm);color:var(--text-muted);margin-top:2px}.card-accent{border-color:var(--brand);box-shadow:inset 3px 0 0 var(--brand)}.quote-lines{gap:var(--space-1);font-size:var(--fs-sm);flex-direction:column;margin:0;display:flex}.quote-lines div{justify-content:space-between;gap:var(--space-3);display:flex}.quote-lines dd{white-space:nowrap;margin:0}.quote-total{border-top:1px solid var(--border);padding-top:var(--space-2);font-size:var(--fs-md);font-weight:700}.quote-actions{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.quote-actions .hint{flex-basis:100%}.dialog-backdrop{z-index:20;padding:var(--space-4);background:#00000080;place-items:center;display:grid;position:fixed;inset:0}.dialog{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);width:100%;max-width:420px;padding:var(--space-5);gap:var(--space-3);box-shadow:var(--shadow);flex-direction:column;display:flex}.dialog h2{font-size:var(--fs-lg);margin:0}.dialog p{margin:0}.dialog-actions{justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap;display:flex}.btn-danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 50%, var(--border))}.pay-amount{justify-content:space-between;align-items:baseline;gap:var(--space-3);display:flex}.pay-amount strong{font-size:var(--fs-xl)}.pay-grid{gap:var(--space-4);grid-template-columns:auto minmax(0,1fr);align-items:start;display:grid}.pay-qr{gap:var(--space-1);flex-direction:column;max-width:200px;margin:0;display:flex}.pay-qr-code{border-radius:var(--radius-sm);width:180px;height:180px}.pay-qr figcaption{font-size:var(--fs-sm);flex-direction:column;display:flex}.bank-line{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);font-size:var(--fs-sm);display:flex}.slip-box{gap:var(--space-2);border-top:1px solid var(--border);padding-top:var(--space-3);flex-direction:column;display:flex}.slip-box h3{font-size:var(--fs-md);margin:0}.slip-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.slip-list li{align-items:center;gap:var(--space-3);display:flex}.slip-thumb{border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border);width:48px;height:64px;color:var(--text-faint);flex:none;place-items:center;display:grid;overflow:hidden}.slip-thumb img{object-fit:cover;width:100%;height:100%}.payment-list{font-size:var(--fs-sm);margin:0;padding-left:18px}@media (width<=560px){.pay-grid{grid-template-columns:minmax(0,1fr)}}.admin-search{flex:1;min-width:180px;max-width:320px;min-height:36px}.admin-item{padding-bottom:var(--space-2);border-bottom:1px solid var(--border);flex-direction:column;gap:2px;display:flex}.admin-item:last-child{border-bottom:0}.admin-price-row{align-items:center;gap:var(--space-3);font-size:var(--fs-sm);display:flex}.input-sm{width:110px;min-height:34px;font-size:var(--fs-sm);padding:4px 8px}.admin-outcome{color:var(--accent);margin:0;font-weight:600}.admin-file{cursor:pointer;align-self:flex-start}code.nfc-url{font-family:var(--font-mono);font-size:var(--fs-sm);word-break:break-all;background:var(--surface-2);padding:2px var(--space-1);border-radius:var(--radius-sm)}select.input{appearance:auto}.admin-tabs{gap:var(--space-1);border-bottom:1px solid var(--border);flex-wrap:wrap;display:flex}.admin-tabs a{color:var(--text-muted);font-size:var(--fs-sm);border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 14px;font-weight:600;text-decoration:none}.admin-tabs a[aria-current=page]{color:var(--text);border-color:var(--brand)}.stock-list,.carrier-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.stock-row{gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--border);grid-template-columns:28px minmax(0,1fr) auto auto;align-items:center;display:grid}.stock-row:last-child{border-bottom:0}.stock-name code{font-size:var(--fs-xs);color:var(--text-faint)}.stock-list.is-retired .stock-name{color:var(--text-muted)}.swatch-static{cursor:default;width:26px;height:26px}.swatch-static:hover{transform:none}.variant-row{grid-template-columns:84px minmax(0,1fr) auto auto auto auto}.stock-list.is-retired .variant-row{grid-template-columns:84px minmax(0,1fr) auto}.variant-row .input-sm{width:80px}.variant-row .image-edit{order:2}.inline-field{align-items:center;gap:var(--space-2);font-size:var(--fs-sm);color:var(--text-muted);display:inline-flex}.carrier-list li{border-bottom:1px solid var(--border);font-size:var(--fs-sm);justify-content:space-between;align-items:center;padding:4px 0;display:flex}.form-grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.upload-btn{cursor:pointer;align-self:flex-start;position:relative}.upload-btn:focus-within{outline:2px solid var(--accent);outline-offset:2px}.upload-drop{border:1px dashed var(--border-strong);border-radius:var(--radius-md);padding:var(--space-4);text-align:center}.thumb.is-empty{color:var(--text-faint);font-size:var(--fs-xs);text-align:center}.image-edit{gap:var(--space-2);padding:var(--space-3);background:var(--surface-2);border-radius:var(--radius-md);flex-direction:column;grid-column:1/-1;display:flex}.image-compare{gap:var(--space-4);flex-wrap:wrap;align-items:flex-end;display:flex}.image-compare figure{gap:var(--space-1);flex-direction:column;align-items:center;margin:0;display:flex}.image-compare .thumb{flex:none;width:120px;height:120px}.cover-row{gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.cover-row .image-edit{flex-basis:100%}.meter{border-radius:var(--radius-sm);background:var(--surface-3);height:12px;display:flex;overflow:hidden}.meter-0{background:var(--accent-2)}.meter-1{background:var(--accent-3)}.meter-2{background:var(--accent)}.meter.is-warning{box-shadow:0 0 0 2px var(--warning)}.meter.is-danger{box-shadow:0 0 0 2px var(--danger)}.meter-legend{gap:var(--space-2) var(--space-4);font-size:var(--fs-sm);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.meter-legend li{align-items:center;gap:6px;display:flex}.meter-dot{border-radius:50%;width:10px;height:10px;display:inline-block}@media (width<=560px){.form-grid.cols-3{grid-template-columns:minmax(0,1fr)}.stock-row,.variant-row,.stock-list.is-retired .variant-row{grid-template-columns:28px minmax(0,1fr)}.variant-row,.stock-list.is-retired .variant-row{grid-template-columns:84px minmax(0,1fr)}.stock-row .hint{display:none}.stock-row .segmented,.stock-row .btn,.stock-row .inline-field{grid-column:1/-1}}.stock-row .upload-btn{align-self:center}textarea.input{resize:vertical;font-family:inherit}.toast.is-danger{border-color:var(--danger);color:var(--danger)}.receipt-tools{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.receipt{background:var(--paper);color:var(--paper-text);border:1px solid var(--paper-border);border-radius:var(--radius-md);flex-direction:column;gap:20px;width:100%;max-width:760px;margin:0 auto;padding:32px;font-size:14px;display:flex;position:relative}.receipt h1{color:var(--paper-text);margin:0;font-size:22px}.receipt-head{flex-wrap:wrap;justify-content:space-between;gap:16px;display:flex}.receipt-meta{grid-template-columns:auto auto;align-content:start;gap:2px 12px;margin:0;display:grid}.receipt-meta dt{color:var(--paper-muted)}.receipt-meta dd{font-family:var(--font-mono);margin:0}.receipt-parties{grid-template-columns:1fr 1fr;gap:16px;display:grid}.receipt-parties h2{color:var(--paper-muted);margin:0 0 4px;font-size:13px;font-weight:600}.receipt-parties p{margin:0;line-height:1.6}.receipt-table{border-collapse:collapse;width:100%}.receipt-table th,.receipt-table td{border-bottom:1px solid var(--paper-border);text-align:right;padding:8px 6px}.receipt-table th:first-child,.receipt-table td:first-child{text-align:left}.receipt-table th{color:var(--paper-muted);font-size:13px;font-weight:600}.receipt-table td{font-family:var(--font-mono);white-space:nowrap}.receipt-table td:first-child{white-space:normal;font-family:inherit}.receipt-table tfoot td{border-bottom:none}.receipt-table .receipt-total td{border-top:2px solid var(--paper-text);font-size:16px;font-weight:700}.receipt-note{color:var(--paper-muted);margin:0;font-size:13px}.receipt-sign{text-align:center;border-top:1px solid var(--paper-text);min-width:200px;color:var(--paper-muted);align-self:flex-end;margin-top:32px;padding-top:6px}.receipt-stamp{border:2px solid var(--paper-danger);color:var(--paper-danger);border-radius:6px;padding:4px 12px;font-weight:700;position:absolute;top:28px;right:32px;transform:rotate(-6deg)}@media (width<=560px){.receipt{padding:20px 16px}.receipt-parties{grid-template-columns:minmax(0,1fr)}.receipt-table th,.receipt-table td{padding:8px 4px;font-size:13px}.receipt-stamp{align-self:flex-start;position:static;transform:none}}@media print{.topnav,.receipt-tools,.toast{display:none!important}body,.app-page{background:var(--paper)!important}.page{padding:0}.receipt{border:none;max-width:none;padding:0}}.card-danger{border-color:color-mix(in srgb, var(--danger) 45%, var(--border))}
