:root{--bg: #0f1412;--panel: #171e1b;--panel-edge: #2a3531;--ink: #e8ece9;--muted: #9aa89f;--accent: #d4784a;--accent-deep: #a85328;--ok: #7cb089;--danger: #e07474;--radius: 10px;font-family:DM Sans,system-ui,sans-serif;color:var(--ink);background:var(--bg);line-height:1.45;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:radial-gradient(1200px 700px at 80% 10%,#24332c 0%,transparent 55%),radial-gradient(900px 500px at 10% 90%,#2a2118 0%,transparent 50%),var(--bg)}.app{height:100%;min-height:100vh}@keyframes fade-in-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.app.hero{display:flex;align-items:center;justify-content:center;padding:1.5rem}.hero-drop{width:100%;max-width:560px;text-align:center;animation:fade-in-up .4s ease-out}.hero-drop .brand-mark{font-size:3.2rem}.hero-drop .brand-sub{margin-bottom:1.75rem}.app.has-track{display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1.25rem;border-bottom:1px solid var(--panel-edge);background:color-mix(in srgb,var(--panel) 92%,transparent);animation:fade-in .3s ease-out}.link-btn{border:none;background:none;color:var(--muted);font:inherit;font-size:.82rem;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.link-btn:hover{color:var(--ink)}.body-row{flex:1;display:grid;grid-template-columns:1fr minmax(300px,360px);min-height:0}.panel{display:flex;flex-direction:column;gap:1rem;padding:1.25rem 1.1rem 1.5rem;background:color-mix(in srgb,var(--panel) 92%,transparent);border-left:1px solid var(--panel-edge);overflow-y:auto;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:fade-in .35s ease-out}.generate-btn{border:none;border-radius:10px;padding:.95rem;font:inherit;font-size:1.05rem;font-weight:700;cursor:pointer;background:linear-gradient(180deg,var(--accent),var(--accent-deep));color:#1a100c}.generate-btn:disabled{opacity:.45;cursor:not-allowed}.generate-btn.pending{opacity:0;transform:scale(.9);pointer-events:none}@keyframes button-pop-in{0%{opacity:0;transform:scale(.85)}70%{opacity:1;transform:scale(1.04)}to{opacity:1;transform:scale(1)}}.generate-btn.pop-in{animation:button-pop-in .4s cubic-bezier(.2,.8,.3,1.2)}.free-note{margin:0;font-size:.78rem;color:var(--ok)}.free-badge{display:inline-block;margin:0 0 .65rem;padding:.28rem .65rem;border-radius:6px;background:color-mix(in srgb,var(--ok) 22%,#121816);color:#b6e0c0;font-size:.75rem;font-weight:600;letter-spacing:.02em}.checkout{display:flex;flex-direction:column;gap:.75rem}.checkout-preview{margin:-.25rem -.15rem .15rem;border-radius:12px;overflow:hidden;background:#121816;aspect-ratio:16 / 10}.checkout-preview img{display:block;width:100%;height:100%;object-fit:cover}.checkout-title{margin:0;font-family:"Instrument Serif",Georgia,serif;font-size:1.65rem;font-weight:400;line-height:1.15}.field-label{display:flex;flex-direction:column;align-items:stretch;gap:.35rem;margin-top:0;font-size:.82rem;color:var(--ink)}.field-input{width:100%;border:1px solid var(--panel-edge);border-radius:8px;padding:.65rem .75rem;font:inherit;font-size:.92rem;color:var(--ink);background:#121816}.field-input:focus{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:1px;border-color:var(--accent)}.field-input::placeholder{color:color-mix(in srgb,var(--muted) 75%,transparent)}.field-hint{font-size:.72rem;color:var(--muted);line-height:1.3}.checkout-back{align-self:flex-start;padding:0}.check-label.big{font-size:.95rem}details.advanced{border:1px solid var(--panel-edge);border-radius:var(--radius);background:#121816}details.advanced summary{padding:.65rem .85rem;cursor:pointer;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}details.advanced .controls{padding:0 .75rem .85rem}details.advanced>button.secondary{display:block;width:calc(100% - 1.5rem);margin:0 .75rem .85rem}.brand-mark{margin:0;font-family:"Instrument Serif",Georgia,serif;font-size:2.35rem;font-weight:400;letter-spacing:-.02em;line-height:1}.brand-mark.small{font-size:1.4rem}.brand-sub{margin:.45rem 0 0;color:var(--muted);font-size:.9rem}.dropzone{border:1.5px dashed color-mix(in srgb,var(--muted) 55%,transparent);border-radius:var(--radius);padding:1.1rem;text-align:center;background:color-mix(in srgb,var(--panel) 70%,#0a0e0c);transition:border-color .15s,background .15s}.dropzone.big{padding:3rem 1.5rem;border-radius:calc(var(--radius) * 2)}.dropzone.big p{font-size:1.1rem;margin-bottom:1.25rem}.dropzone.over{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--panel))}.dropzone p{margin:0 0 .7rem;color:var(--muted);font-size:.92rem}.file-btn{display:inline-block;cursor:pointer;padding:.45rem .9rem;border-radius:999px;background:var(--accent);color:#1a100c;font-weight:600;font-size:.85rem}.file-btn:hover{background:color-mix(in srgb,var(--accent) 85%,white)}.controls{display:flex;flex-direction:column;gap:.75rem}fieldset{margin:0;border:1px solid var(--panel-edge);border-radius:var(--radius);padding:.65rem .75rem .85rem;background:#121816}legend{padding:0 .35rem;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}.hint{margin:.55rem 0 0;font-size:.72rem;line-height:1.35;color:var(--muted)}.hint.tight{margin:.15rem 0 .65rem}label{display:grid;grid-template-columns:1fr auto;gap:.25rem .5rem;align-items:center;margin-top:.55rem;font-size:.82rem;color:var(--ink)}label input[type=range]{grid-column:1 / -1;width:100%;accent-color:var(--accent)}label span{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.78rem}.choice-row{display:grid;grid-template-columns:repeat(3,1fr);gap:.4rem}button.choice{border:1px solid var(--panel-edge);background:#1a2220;color:var(--ink);border-radius:8px;padding:.55rem .3rem;font:inherit;font-size:.82rem;font-weight:500;cursor:pointer;transition:border-color .12s,background .12s,color .12s}button.choice:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 55%,var(--panel-edge))}button.choice.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,#1a2220);color:#f3d8c6}.swatch-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(3.6rem,1fr));gap:.4rem}button.swatch{display:flex;flex-direction:column;align-items:center;gap:.4rem;border:1px solid var(--panel-edge);background:#1a2220;color:var(--ink);border-radius:8px;padding:.5rem .25rem .45rem;font:inherit;cursor:pointer;transition:border-color .12s,background .12s}button.swatch:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 55%,var(--panel-edge))}button.swatch.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,#1a2220)}.swatch-chip{width:1.55rem;height:1.55rem;border-radius:999px;background:var(--swatch);box-shadow:inset 0 0 0 1px color-mix(in srgb,#000 22%,transparent),0 0 0 1px color-mix(in srgb,#fff 8%,transparent)}.swatch-chip.glow{box-shadow:inset 0 0 0 1px color-mix(in srgb,#000 18%,transparent),0 0 10px color-mix(in srgb,var(--swatch) 70%,transparent)}.swatch-label{font-size:.68rem;color:var(--muted);line-height:1.1}button.swatch.active .swatch-label{color:#f3d8c6}button.swatch.sold-out{opacity:.55;cursor:not-allowed;position:relative}button.swatch.sold-out:hover:not(:disabled),button.swatch.sold-out:disabled{border-color:var(--panel-edge);background:#1a2220}button.swatch.sold-out .swatch-chip{filter:grayscale(.55);box-shadow:none}.sold-out-tag{font-size:.58rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--danger);line-height:1}.shape-row{display:grid;grid-template-columns:repeat(3,1fr);gap:.4rem}button.shape{border:1px solid var(--panel-edge);background:#1a2220;color:var(--ink);border-radius:8px;padding:.45rem .3rem;font:inherit;font-size:.8rem;cursor:pointer}button.shape.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,#1a2220);color:#f3d8c6}.color-label{grid-template-columns:1fr auto}.check-label{display:flex;align-items:center;gap:.55rem;margin-top:.45rem;font-size:.82rem;cursor:pointer}.check-label input{width:1rem;height:1rem;accent-color:var(--accent);cursor:pointer}.color-label input[type=color]{width:2rem;height:1.6rem;border:none;background:transparent;padding:0;cursor:pointer}button.secondary{border:1px solid var(--panel-edge);border-radius:9px;padding:.7rem .9rem;font:inherit;font-weight:600;cursor:pointer;background:#24302b;color:var(--ink)}button.secondary:disabled{opacity:.45;cursor:not-allowed}.status{margin:0;font-size:.8rem;color:var(--ok)}.error{margin:0;font-size:.8rem;color:var(--danger)}.stage{position:relative;min-width:0;min-height:320px}.viewer{position:absolute;top:0;right:0;bottom:0;left:0}.viewer canvas{display:block;width:100%!important;height:100%!important}@media (max-width: 860px){.body-row{grid-template-columns:1fr;grid-template-rows:minmax(42vh,1fr) auto}.panel{border-left:none;border-top:1px solid var(--panel-edge);max-height:48vh}}.sheet-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:flex-end;justify-content:center}.sheet-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;border:none;padding:0;margin:0;background:color-mix(in srgb,#050807 62%,transparent);cursor:pointer;animation:fade-in .2s ease-out}.sheet-panel{position:relative;z-index:1;width:100%;max-width:440px;max-height:min(92vh,820px);overflow-y:auto;padding:.55rem 1.1rem 1.35rem;border-radius:18px 18px 0 0;background:color-mix(in srgb,var(--panel) 96%,#0a0e0c);border:1px solid var(--panel-edge);border-bottom:none;box-shadow:0 -12px 40px color-mix(in srgb,#000 45%,transparent);animation:sheet-up .32s cubic-bezier(.2,.85,.25,1)}.sheet-handle{width:2.4rem;height:.28rem;margin:.15rem auto .85rem;border-radius:999px;background:color-mix(in srgb,var(--muted) 45%,transparent)}@keyframes sheet-up{0%{opacity:.4;transform:translateY(100%)}to{opacity:1;transform:none}}@media (min-width: 861px){.sheet-root{align-items:center;padding:1.5rem}.sheet-panel{border-radius:16px;border-bottom:1px solid var(--panel-edge);max-height:min(88vh,760px);animation:fade-in-up .28s ease-out}.sheet-handle{display:none}}
