:root{--ink:#14110f;--ink-2:#2a2522;--paper:#f4efe8;--paper-2:#eae3d8;--paper-3:#dcd3c5;--rule:#14110f1f;--muted:#6b645c;--accent:#c84b23;--accent-soft:#e8c9b8;--serif:"Fraunces", serif;--sans:"DM Sans", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, monospace}*{box-sizing:border-box}html{background:#0a0908;min-height:100vh;margin:0;padding:0}body{min-height:100dvh;font-family:var(--sans);color:var(--ink);background:#0a0908;justify-content:center;align-items:center;margin:0;padding:0;display:flex}#root{display:contents}.btn{font-family:var(--sans);cursor:pointer;letter-spacing:.01em;border:none;border-radius:999px;padding:14px 22px;font-size:14px;font-weight:500;transition:transform .12s,background .2s,color .2s}.btn:active{transform:scale(.97)}.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover{background:var(--accent)}.btn-accent{background:var(--accent);color:var(--paper)}.btn-accent:hover{background:#b13d18}.btn-accent:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{color:var(--ink);background:0 0;padding:14px 8px}.btn-ghost:hover{color:var(--accent)}.btn-icon{background:var(--paper-2);width:44px;height:44px;color:var(--ink);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:18px;transition:background .2s;display:inline-flex}.btn-icon:hover{background:var(--paper-3)}.footer{border-top:1px solid var(--rule);background:var(--paper);flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 20px 18px;display:flex}.step-eyebrow{font-family:var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--accent);font-size:10px;font-weight:500}.step-title{font-family:var(--serif);letter-spacing:-.02em;margin:0;font-size:38px;font-weight:400;line-height:1}.step-title em{font-style:italic}.step-sub{color:var(--muted);max-width:320px;margin:0;font-size:14px;line-height:1.45}.swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;flex-shrink:0;width:24px;height:24px;transition:transform .12s,border-color .2s;box-shadow:inset 0 0 0 1px #ffffff26}.swatch:hover{transform:scale(1.1)}.swatch.active{border-color:var(--paper);transform:scale(1.1)}.appStage{background:var(--paper);width:100vw;height:100dvh;color:var(--ink);flex-direction:column;display:flex;overflow:hidden}@media (orientation:landscape){.appStage{width:56.25dvh;margin-inline:auto;box-shadow:0 0 80px #00000080}}.bodyArea{flex-direction:column;flex:1;display:flex;position:relative;overflow:hidden}.topbar{border-bottom:1px solid var(--rule);font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 20px;font-size:11px;display:flex}.brand{font-family:var(--serif);letter-spacing:-.01em;text-transform:none;color:var(--ink);font-size:18px;font-weight:500}.brand em{color:var(--accent);font-style:italic;font-weight:400}.topbarLeft{align-items:center;gap:12px;min-width:0;display:flex}.brandLogo{width:auto;height:22px;display:block}.backBtn{border:1px solid var(--rule);width:32px;height:32px;color:var(--ink);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:18px;line-height:1;display:inline-flex}.backBtn:hover{background:var(--paper-2)}.stepLabel{white-space:nowrap}.progress{align-items:center;gap:6px;display:flex}.dot{background:var(--rule);border-radius:2px;width:22px;height:3px;transition:background .3s,width .3s}.dot.done{background:var(--ink)}.dot.active{background:var(--accent);width:36px}.stepCapture{text-align:center;flex-direction:column;flex:1;align-items:center;gap:20px;padding:28px 24px 20px;display:flex;overflow:hidden}.viewfinder{background:var(--ink);border-radius:8px;flex:1;width:100%;position:relative;overflow:hidden}.vfVideo{object-fit:cover;object-position:center top;width:100%;height:100%;position:absolute;inset:0;transform:scaleX(-1)}.vfFallback{background:var(--ink-2);color:var(--muted);font-family:var(--mono);letter-spacing:.1em;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:12px;display:flex;position:absolute;inset:0}.vfFrame{pointer-events:none;z-index:2;border:1.5px dashed #f4efe8b3;border-radius:6px;position:absolute;inset:24px}.vfCorners{pointer-events:none;z-index:2;position:absolute;inset:0}.vfCorner{border:2px solid var(--accent);width:22px;height:22px;position:absolute}.vfCorner.tl{border-bottom:none;border-right:none;top:16px;left:16px}.vfCorner.tr{border-bottom:none;border-left:none;top:16px;right:16px}.vfCorner.bl{border-top:none;border-right:none;bottom:16px;left:16px}.vfCorner.br{border-top:none;border-left:none;bottom:16px;right:16px}.vfHint{color:var(--paper);font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;z-index:3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;background:#14110fb3;border-radius:999px;padding:8px 14px;font-size:11px;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.vfCountdown{font-family:var(--serif);color:var(--paper);z-index:3;text-shadow:0 8px 40px #00000080;pointer-events:none;justify-content:center;align-items:center;font-size:200px;font-weight:300;display:flex;position:absolute;inset:0}.vfFlash{z-index:4;background:#fff;animation:.35s ease-out forwards flash;position:absolute;inset:0}@keyframes flash{0%{opacity:1}to{opacity:0}}.shutterRow{justify-content:center;align-items:center;gap:28px;width:100%;display:flex}.shutterWrap{flex-direction:column;align-items:center;gap:6px;display:flex}.shutter{background:var(--paper);border:4px solid var(--ink);cursor:pointer;border-radius:50%;width:72px;height:72px;padding:0;transition:transform .12s,background .2s;position:relative}.shutter:after{content:"";background:var(--accent);border-radius:50%;transition:transform .12s;position:absolute;inset:6px}.shutter:hover:after{transform:scale(1.05)}.shutter:active{transform:scale(.94)}.shutter:disabled{opacity:.5;cursor:not-allowed}.shutter:disabled:after{background:var(--muted)}.shutterLabel{font-family:var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);font-size:10px}.stepChoose{flex-direction:column;flex:1;display:flex;overflow:hidden}.chooseBody{flex:1;min-height:0;display:flex;overflow:hidden}.chooseMain{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.filterBar{scrollbar-width:none;gap:8px;padding:0 24px 8px;display:flex;overflow-x:auto}.filterBar::-webkit-scrollbar{display:none}.catalogEmpty{text-align:center;color:var(--muted);padding:48px 24px;font-size:14px}.slotSidebar{border-left:1px solid var(--rule);background:var(--paper-2);scrollbar-width:none;flex-direction:column;flex:none;gap:10px;width:66px;padding:16px 11px;display:flex;overflow-y:auto}.slotSidebar::-webkit-scrollbar{display:none}.slotBtn{border:1px solid var(--rule);background:var(--paper);width:44px;height:44px;color:var(--muted);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;transition:background .15s,color .15s,border-color .15s;display:flex;position:relative}.slotBtn.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.slotDot{background:var(--accent);border:2px solid var(--paper-2);border-radius:50%;width:12px;height:12px;position:absolute;top:-3px;right:-3px}.itemCheck{display:none}.chooseBottomBar{border-top:1px solid var(--rule);background:var(--paper);flex-direction:column;flex:none;gap:10px;padding:12px 20px 16px;display:flex}.bbSelected{align-items:baseline;gap:10px;min-height:22px;display:flex}.bbLabel{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:10px}.bbName{font-family:var(--serif);color:var(--ink);font-size:18px}.bbEmpty{color:var(--muted);font-size:14px}.bbVariants{align-items:center;gap:12px;min-width:0;display:flex}.variantRail{scrollbar-width:none;flex:1;gap:8px;min-width:0;padding:2px 0;display:flex;overflow-x:auto}.variantRail::-webkit-scrollbar{display:none}.variantSwatch{cursor:pointer;background-position:50%;background-size:cover;border:2px solid #0000;border-radius:50%;flex:none;width:30px;height:30px;transition:transform .12s,border-color .2s;box-shadow:inset 0 0 0 1px #0000001f}.variantSwatch.active{border-color:var(--ink);transform:scale(1.08)}.variantName{color:var(--muted);white-space:nowrap;flex:none;font-size:13px}.bbGenerate{width:100%}.toast{background:var(--ink);color:var(--paper);z-index:50;text-align:center;border-radius:999px;max-width:80%;padding:12px 20px;font-size:14px;font-weight:500;position:absolute;bottom:96px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #00000059}.chooseHead{flex-direction:column;gap:14px;padding:22px 24px 14px;display:flex}.chooseTitleRow{justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.chooseTitle{font-family:var(--serif);letter-spacing:-.01em;margin:0;font-size:28px;font-weight:400;line-height:1}.chooseTitle em{color:var(--accent);font-style:italic}.filterChips{gap:8px;padding-bottom:4px;display:flex;overflow-x:auto}.filterChips::-webkit-scrollbar{display:none}.chip{font-family:var(--sans);border:1px solid var(--rule);color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;flex-shrink:0;padding:8px 14px;font-size:12px;font-weight:500;transition:all .15s}.chip.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.catalog{flex:1;grid-template-columns:1fr 1fr;grid-auto-rows:max-content;align-content:start;gap:12px;padding:4px 24px 16px;display:grid;overflow-y:auto}.catalog::-webkit-scrollbar{width:4px}.catalog::-webkit-scrollbar-thumb{background:var(--paper-3);border-radius:4px}.itemCard{cursor:pointer;background:var(--paper-2);border:2px solid #0000;border-radius:6px;flex-direction:column;transition:transform .15s,box-shadow .2s;display:flex;position:relative;overflow:hidden}.itemCard:hover{transform:translateY(-2px);box-shadow:0 8px 16px #00000014}.itemCard.selected{border-color:var(--accent)}.itemCard.selected:after{content:"✓";background:var(--accent);width:26px;height:26px;color:var(--paper);z-index:2;border-radius:50%;justify-content:center;align-items:center;font-size:14px;font-weight:600;display:flex;position:absolute;top:8px;right:8px}.itemImg{aspect-ratio:4/5;background-position:50%;background-size:cover;background-color:var(--paper-3);flex-shrink:0;width:100%}.itemInfo{flex-direction:column;gap:2px;padding:10px 12px 12px;display:flex}.itemName{font-family:var(--serif);margin:0;font-size:16px;font-weight:500;line-height:1.1}.itemMeta{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:4px;font-size:10px}.itemPrice{color:var(--ink);margin-top:4px;font-size:13px;font-weight:500}.itemColors{gap:4px;margin-top:6px;display:flex}.swatchMini{border:1px solid #0000001a;border-radius:50%;width:12px;height:12px}.selectionBar{background:var(--ink);color:var(--paper);flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;padding:14px 20px;display:flex}.selInfo{min-width:0}.selLabel{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;opacity:.65;margin-bottom:4px;font-size:10px}.selName{font-family:var(--serif);white-space:nowrap;text-overflow:ellipsis;font-size:18px;line-height:1;overflow:hidden}.selName span{opacity:.7}.selPreview{background-position:50%;background-size:cover;border:1px solid #ffffff40;border-radius:8px;flex:none;width:52px;height:52px}.swatchRow{flex:auto;gap:8px;min-width:0;padding:3px 0;display:flex;overflow-x:auto}.stepPreview{flex-direction:column;flex:1;display:flex;overflow:hidden}.previewStage{background:var(--ink);flex:1;position:relative;overflow:hidden}.previewImg{background-position:top;background-size:cover;transition:opacity .6s;position:absolute;inset:0}.previewImg.before{z-index:1}.previewImg.after{z-index:2}.genOverlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:5;color:var(--paper);background:#14110fbf;flex-direction:column;justify-content:center;align-items:center;gap:24px;display:flex;position:absolute;inset:0}.genSpinner{border:2px solid #f4efe833;border-top-color:var(--accent);border-radius:50%;width:56px;height:56px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.genLabel{font-family:var(--mono);letter-spacing:.22em;text-transform:uppercase;opacity:.8;font-size:11px}.genProgress{background:#f4efe826;border-radius:2px;width:220px;height:2px;overflow:hidden}.genProgressBar{background:var(--accent);height:100%;transition:width .2s linear}.genRemaining{font-size:11px;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;opacity:.5}.genError{text-align:center;padding:0 24px}.genError p{font-family:var(--mono);color:var(--accent-soft);opacity:.9;margin:0 0 16px;font-size:12px}.previewInfo{z-index:4;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--paper);background:#14110fb3;border-radius:6px;padding:12px 16px;position:absolute;top:16px;left:16px}.piLabel{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;opacity:.7;font-size:10px}.piName{font-family:var(--serif);margin-top:2px;font-size:18px}.previewToggle{z-index:4;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#14110fb3;border-radius:999px;padding:4px;display:flex;position:absolute;bottom:16px;right:16px}.ptBtn{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:#f4efe899;cursor:pointer;background:0 0;border:none;border-radius:999px;padding:8px 14px;font-size:10px;transition:all .15s}.ptBtn.active{background:var(--paper);color:var(--ink)}.previewColorRow{z-index:4;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#14110fb3;border-radius:999px;align-items:center;gap:10px;padding:10px 16px;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.pcrLabel{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:#f4efe8b3;margin-right:4px;font-size:10px}.stepDone{text-align:center;flex-direction:column;flex:1;align-items:center;gap:20px;padding:28px 24px;display:flex;overflow:hidden}.doneThumb{background-position:top;background-size:cover;border-radius:8px;flex:1;width:76%;position:relative;box-shadow:0 16px 40px #0000002e}.doneThumb:after{content:"";border-radius:8px;position:absolute;inset:0;box-shadow:inset 0 0 0 1px #ffffff1a}.qrRow{background:var(--paper-2);box-sizing:border-box;border-radius:8px;align-items:center;gap:16px;width:86%;padding:14px 18px;display:flex}.qrText{text-align:left;flex:1;min-width:0}.qtLabel{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--accent);font-size:10px;font-weight:500}.qtLine{font-family:var(--serif);margin-top:4px;font-size:18px;line-height:1.1}.qtSub{color:var(--muted);margin-top:4px;font-size:12px}.doneThumbWrap{flex:1;justify-content:center;align-items:center;width:100%;min-height:0;display:flex}.doneImg{object-fit:contain;border-radius:8px;max-width:82%;max-height:100%;box-shadow:0 16px 40px #0000002e}.donePlaceholder{aspect-ratio:3/4;background:var(--paper-2);border-radius:8px;width:60%}.doneRecap{flex-direction:column;gap:2px;margin-top:6px;display:flex}.recapRow{align-items:baseline;gap:8px;font-size:13px;display:flex}.recapSlot{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);min-width:72px;font-size:10px}.recapName{color:var(--ink)}.recapVariant{color:var(--muted)}.qtLink{color:var(--accent);word-break:break-all;max-height:2.6em;margin-top:8px;font-size:11px;text-decoration:none;display:block;overflow:hidden}.doneCtas{gap:12px;width:86%;display:flex}.doneCtas .btn{flex:1}.infoBtn{width:34px;height:34px;color:var(--paper);font-family:var(--serif);cursor:pointer;z-index:5;background:#14110f99;border:none;border-radius:50%;font-size:18px;font-style:italic;position:absolute;top:14px;right:14px}.itemsPopup{background:var(--ink);color:var(--paper);z-index:6;border-radius:10px;max-width:80%;padding:12px 14px;position:absolute;top:56px;right:14px;box-shadow:0 12px 30px #0006}.itemsPopupTitle{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;opacity:.7;margin-bottom:8px;font-size:10px}.itemsPopupRow{flex-direction:column;gap:1px;padding:4px 0;font-size:14px;display:flex}.ipSlot{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;opacity:.6;font-size:9px}.ipName{font-family:var(--serif)}.ipVariant{opacity:.7}.qrBox{background:var(--paper);box-sizing:border-box;border-radius:6px;flex-shrink:0;width:144px;height:144px;padding:8px}.qrBox img{width:100%;height:100%;image-rendering:pixelated;display:block}.enrollmentScreen{text-align:center;max-width:360px;color:var(--paper);flex-direction:column;align-items:center;gap:18px;display:flex}.enrollmentScreen .step-eyebrow,.enrollmentScreen .step-title{color:var(--paper)}.enrollmentScreen .step-title em{color:var(--accent-soft);font-style:italic}.enrollmentScreen .step-sub{color:var(--paper-3);max-width:320px}.enrollmentQr .qrBox{width:200px;height:200px}.enrollmentCode{font-family:var(--mono);letter-spacing:.12em;color:var(--accent-soft);background:#f4efe80f;border:1px solid #f4efe829;border-radius:8px;gap:.5em;padding:10px 20px;font-size:30px;font-weight:500;display:inline-flex}.enrollmentCountdown{font-family:var(--mono);letter-spacing:.08em;color:var(--muted);font-size:12px}.enrollmentHint{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:11px}
