:root,[data-theme=dark]{--bg-0: #0d0e10;--bg-1: #16181c;--bg-2: #1f2228;--bg-3: #2a2e36;--fg-0: #f5f3ee;--fg-1: #b6b3aa;--fg-2: #6e6c66;--accent: #d4a24a;--accent-soft: #d4a24a22;--accent-glow: #d4a24a55;--accent-strong: #e8b85e;--accent-text: #1a1408;--success: #5fbf7a;--warning: #e0a93a;--danger: #e06b5a;--shadow-card: 0 1px 0 rgba(255, 255, 255, .04) inset, 0 8px 24px rgba(0, 0, 0, .4);--bottom-nav-bg: rgba(13, 14, 16, .85);--bottom-nav-border: #2a2e36}[data-theme=light]{--bg-0: #f5f6f8;--bg-1: #ffffff;--bg-2: #f1f3f5;--bg-3: #e1e5ea;--fg-0: #1f2937;--fg-1: #4b5563;--fg-2: #9ca3af;--accent: #20b884;--accent-soft: #20b88418;--accent-glow: #20b88444;--accent-strong: #1ba276;--accent-text: #ffffff;--success: #20b884;--warning: #f0a020;--danger: #e74c3c;--shadow-card: 0 1px 2px rgba(20, 30, 50, .04), 0 4px 12px rgba(20, 30, 50, .06);--bottom-nav-bg: rgba(255, 255, 255, .94);--bottom-nav-border: #e1e5ea}:root{--r-sm: 10px;--r-md: 16px;--r-lg: 24px;--font-display: "Fraunces", Georgia, serif;--font-body: "Manrope", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace}[data-theme=light]{--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--font-display: "Inter", system-ui, sans-serif;--font-body: "Inter", system-ui, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--bg-0);color:var(--fg-0);font-family:var(--font-body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;min-height:100vh;min-height:100dvh;transition:background-color .2s,color .2s}body{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}[data-theme=dark] body{background:radial-gradient(ellipse 60% 40% at 50% 0%,rgba(212,162,74,.1),transparent 60%),var(--bg-0)}[data-theme=light] body{background:radial-gradient(ellipse 600px 300px at 50% 0%,rgba(32,184,132,.05),transparent),var(--bg-0)}h1,h2,h3{font-family:var(--font-display);font-weight:500;letter-spacing:-.02em}[data-theme=light] h1,[data-theme=light] h2,[data-theme=light] h3{font-weight:600;letter-spacing:-.01em}h1{font-size:28px;line-height:1.15}h2{font-size:22px;line-height:1.2}h3{font-size:17px;line-height:1.3;font-weight:600}.eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--fg-2)}.muted{color:var(--fg-1)}.tiny{font-size:13px}.app{max-width:600px;margin:0 auto;padding:16px 16px 100px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:8px 0 18px;gap:12px}.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-size:18px}.brand .mark{width:28px;height:28px;display:grid;place-items:center;border:1.5px solid var(--accent);border-radius:6px;color:var(--accent);font-style:italic;transform:rotate(-3deg)}[data-theme=light] .brand .mark{background:var(--accent);color:var(--accent-text);border-color:var(--accent);transform:none;font-style:normal;font-weight:700}.card{background:var(--bg-1);border:1px solid var(--bg-3);border-radius:var(--r-md);padding:18px;box-shadow:var(--shadow-card)}.card+.card{margin-top:12px}.card-accent{background:linear-gradient(180deg,var(--accent-soft),transparent);border-color:var(--accent);border-color:color-mix(in srgb,var(--accent) 30%,transparent)}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat{background:var(--bg-1);border:1px solid var(--bg-3);border-radius:var(--r-md);padding:16px}.stat .label{font-family:var(--font-mono);font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:var(--fg-2);margin-bottom:6px}.stat .value{font-family:var(--font-display);font-size:30px}.stat .value.accent{color:var(--accent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:14px 18px;font-weight:600;font-size:15px;border:none;border-radius:var(--r-sm);cursor:pointer;transition:transform .12s,background .12s,opacity .12s;text-decoration:none;font-family:inherit}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--accent-text);box-shadow:0 4px 16px var(--accent-glow)}.btn-primary:hover{background:var(--accent-strong)}.btn-ghost{background:var(--bg-2);color:var(--fg-0);border:1px solid var(--bg-3)}.btn-danger{background:transparent;color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 30%,transparent)}.btn-row{display:flex;gap:10px;margin-top:16px}.btn-row .btn{flex:1}.field{margin-bottom:14px}.field label{display:block;font-family:var(--font-mono);font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:var(--fg-2);margin-bottom:6px}.field input,.field select,.field textarea{width:100%;padding:13px 14px;background:var(--bg-2);border:1px solid var(--bg-3);border-radius:var(--r-sm);color:var(--fg-0);font-family:var(--font-body);font-size:15px;outline:none;transition:border-color .12s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:var(--bg-2);border:1px solid var(--bg-3);font-size:11px;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-1)}.chip-success{color:var(--success);border-color:color-mix(in srgb,var(--success) 30%,transparent)}.chip-accent{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 30%,transparent)}.chip-danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 30%,transparent)}.list{display:flex;flex-direction:column;gap:1px;background:var(--bg-3);border-radius:var(--r-md);overflow:hidden}.list-item{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:var(--bg-1)}.list-item .left{display:flex;flex-direction:column;gap:2px;flex:1}.list-item .title{font-size:15px}.list-item .subtitle{font-size:12px;color:var(--fg-2);font-family:var(--font-mono)}.list-item .right{font-family:var(--font-mono);font-size:14px;color:var(--accent)}.scanner-shell{position:relative;width:100%;aspect-ratio:1;max-height:70vh;border-radius:var(--r-lg);overflow:hidden;background:#000;border:1px solid var(--bg-3)}.scanner-shell video{width:100%;height:100%;object-fit:cover}.scanner-shell .frame{position:absolute;top:18%;right:18%;bottom:18%;left:18%;border:2px solid var(--accent);border-radius:var(--r-md);box-shadow:0 0 0 9999px #00000080;animation:pulse 2s infinite ease-in-out}@keyframes pulse{0%,to{box-shadow:0 0 0 9999px #00000080}50%{box-shadow:0 0 0 9999px #00000080,0 0 18px 6px var(--accent-glow)}}.scanner-shell .hint{position:absolute;left:0;right:0;bottom:12px;text-align:center;font-size:13px;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.8)}.scan-progress{display:flex;gap:10px;padding:14px;background:var(--bg-1);border:1px solid var(--bg-3);border-radius:var(--r-md);margin-bottom:14px}.scan-step{flex:1;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--r-sm);background:var(--bg-2);border:1px solid transparent}.scan-step.active{border-color:var(--accent);background:var(--accent-soft)}.scan-step.done{border-color:color-mix(in srgb,var(--success) 40%,transparent)}.scan-step .ico{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--bg-3);font-family:var(--font-mono);font-weight:700}.scan-step.active .ico{background:var(--accent);color:var(--accent-text)}.scan-step.done .ico{background:var(--success);color:#fff}.scan-step .step-name{font-size:11px;color:var(--fg-2);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.toast-wrap{position:fixed;left:0;right:0;top:16px;display:flex;flex-direction:column;align-items:center;gap:8px;z-index:200;pointer-events:none}.toast{pointer-events:auto;max-width:92%;padding:12px 18px;background:var(--bg-1);border:1px solid var(--bg-3);border-radius:var(--r-sm);font-size:14px;animation:toastIn .3s ease;box-shadow:var(--shadow-card)}.toast.success{border-color:color-mix(in srgb,var(--success) 40%,transparent)}.toast.error{border-color:color-mix(in srgb,var(--danger) 40%,transparent)}@keyframes toastIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.bottom-nav{position:fixed;left:0;right:0;bottom:0;background:var(--bottom-nav-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--bottom-nav-border);display:flex;padding:8px env(safe-area-inset-right) calc(8px + env(safe-area-inset-bottom)) env(safe-area-inset-left);z-index:50}.bottom-nav a{flex:1;text-align:center;text-decoration:none;color:var(--fg-2);font-size:11px;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;padding:10px 6px;border-radius:var(--r-sm);transition:color .12s}.bottom-nav a.active{color:var(--accent)}.bottom-nav a .icon{display:block;font-size:18px;margin-bottom:4px;font-family:var(--font-display)}.gift-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.gift-card{background:var(--bg-1);border:1px solid var(--bg-3);border-radius:var(--r-md);padding:14px;display:flex;flex-direction:column;gap:10px}.gift-card .title{font-size:14px;font-weight:600}.gift-card .cost{font-family:var(--font-display);font-size:22px;color:var(--accent)}.gift-card .img{width:100%;aspect-ratio:1.3;background:var(--bg-2);border-radius:var(--r-sm);display:grid;place-items:center;color:var(--fg-2);font-size:28px;overflow:hidden}.gift-card .img img{width:100%;height:100%;object-fit:cover}.gift-card.in-cart{border-color:var(--accent)}.gift-card .qty{display:flex;align-items:center;justify-content:space-between;gap:8px}.gift-card .qty button{background:var(--bg-2);border:1px solid var(--bg-3);color:var(--fg-0);width:32px;height:32px;border-radius:var(--r-sm);font-size:16px}.gift-card .qty span{font-family:var(--font-mono);font-size:14px}.cart-summary{position:sticky;bottom:80px;margin:16px 0}.cart-summary .card{background:var(--accent);color:var(--accent-text);border:none}.cart-summary .card label{color:color-mix(in srgb,var(--accent-text) 80%,transparent)}.cart-summary .card input,.cart-summary .card textarea{background:#00000026;color:var(--accent-text);border-color:#0003}.cart-summary .total{font-family:var(--font-display);font-size:24px;font-weight:600}.cart-summary .submit-btn{background:var(--accent-text);color:var(--accent)}.rule-card{background:var(--bg-1);border:1px solid var(--bg-3);border-radius:var(--r-md);padding:18px}.rule-card h1{font-size:22px;margin-bottom:12px}.rule-card h2{font-size:18px;margin:18px 0 8px;color:var(--accent)}.rule-card p{margin-bottom:8px;color:var(--fg-1)}.rule-card ul,.rule-card ol{margin:8px 0 12px 20px}.rule-card li{margin-bottom:4px;color:var(--fg-1)}.rule-card strong{color:var(--fg-0)}.splash{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg-0);display:grid;place-items:center;z-index:100}.splash.hidden{display:none}.splash .logo{font-family:var(--font-display);font-size:36px;color:var(--accent);font-style:italic;animation:fadeBreath 2s infinite ease-in-out}@keyframes fadeBreath{0%,to{opacity:.6}50%{opacity:1}}.skeleton{background:linear-gradient(90deg,var(--bg-2) 0%,var(--bg-3) 50%,var(--bg-2) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--r-sm)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.row{display:flex;align-items:center;gap:8px}.row.between{justify-content:space-between}.mt-md{margin-top:16px}.mt-lg{margin-top:24px}.mb-md{margin-bottom:16px}.center{text-align:center}.divider{height:1px;background:var(--bg-3);margin:18px 0}.hidden{display:none!important}.theme-toggle{display:inline-flex;background:var(--bg-2);border:1px solid var(--bg-3);border-radius:999px;padding:3px;gap:0}.theme-toggle button{background:transparent;border:none;color:var(--fg-2);font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;padding:8px 14px;border-radius:999px;cursor:pointer;transition:background .18s,color .18s;display:inline-flex;align-items:center;gap:6px}.theme-toggle button.active{background:var(--accent);color:var(--accent-text)}.theme-toggle .ico{font-size:13px}.spark-card{background:var(--bg-1);border:1px solid var(--bg-3);border-radius:var(--r-md);padding:16px;margin-top:12px}.spark-card svg{display:block;width:100%;height:auto}.spark-card .header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.spark-card .header h3{font-size:14px;font-weight:600}.spark-card .legend{font-size:11px;color:var(--fg-2);font-family:var(--font-mono)}.offline-bar{position:fixed;top:0;left:0;right:0;background:var(--danger);color:#fff;text-align:center;padding:6px 12px;font-size:12px;font-weight:500;z-index:300;animation:slideDown .3s}@keyframes slideDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.tabs-row{display:flex;gap:8px;margin-top:16px}.tab-pill{flex:1;background:var(--bg-2);border:1px solid var(--bg-3);color:var(--fg-1);padding:10px 12px;border-radius:var(--r-sm);font-size:13px;font-weight:500;cursor:pointer;text-align:center;font-family:inherit;transition:all .12s}.tab-pill.active{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.text-sm{font-size:12px}.text-lg{font-size:18px}.text-muted{color:var(--fg-1);opacity:.7}.text-mono{font-family:JetBrains Mono,ui-monospace,monospace}.text-success{color:#4ade80}.text-warning{color:#fbbf24}.text-danger{color:#f87171}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.list-item{display:flex;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid var(--border, rgba(255,255,255,.08))}.list-item:last-child{border-bottom:none}.field{margin-bottom:12px}.field label{display:block;font-size:13px;margin-bottom:4px;opacity:.8}.field select,.field input{width:100%}.card-accent{border-left:3px solid var(--accent, #94ad52)}.promo-shell{max-width:520px;margin:0 auto;padding:20px 16px 40px;font-family:Manrope,system-ui,sans-serif;color:var(--fg-0, #f4f4f4);background:var(--bg-0, #070d03);min-height:100vh}.promo-header{text-align:center;padding:24px 0}.promo-header h1{margin:0;font-size:28px;letter-spacing:-.5px}.promo-dates{opacity:.7;margin-top:6px;font-size:14px}.promo-card{background:var(--bg-1, #0d1607);border:1px solid var(--border, rgba(148, 173, 82, .2));border-radius:12px;padding:16px;margin:16px 0}.promo-card h3{margin:0 0 8px;font-size:18px}.promo-status{display:inline-block;padding:4px 10px;background:var(--accent, #94ad52);color:#070d03;border-radius:6px;font-weight:600;font-size:13px}.promo-meta{font-size:13px;opacity:.8;margin-top:4px}.promo-rules{margin:24px 0}.promo-rules h2{font-size:20px;margin-bottom:12px}.promo-rules ol{padding-left:20px;line-height:1.6}.promo-rule-block{margin:12px 0;padding:12px 0;border-bottom:1px solid var(--border)}.promo-rule-block:last-child{border-bottom:none}.promo-rule-block h3{font-size:15px;margin:0 0 4px}.promo-rule-block p{margin:0;opacity:.85;font-size:14px;line-height:1.5}.promo-cta{display:flex;flex-direction:column;gap:10px;margin:24px 0}.promo-btn{display:block;text-align:center;padding:14px 20px;border-radius:10px;text-decoration:none;font-weight:600;border:1px solid var(--border);color:var(--fg-0)}.promo-btn-primary{background:var(--accent, #94ad52);color:#070d03;border-color:var(--accent, #94ad52)}.promo-footer{text-align:center;opacity:.5;font-size:12px;margin-top:40px}.promo-loader,.promo-error{text-align:center;padding:60px 20px;color:var(--fg-1, #aaa)}.balance-hero{background:linear-gradient(180deg,var(--accent-soft) 0%,transparent 100%);border:1px solid var(--accent-soft);border-radius:16px;padding:24px 16px 20px;text-align:center}.balance-eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--fg-2);font-weight:600}.balance-amount{font-family:var(--font-display, "JetBrains Mono", monospace);font-size:56px;font-weight:600;color:var(--accent);line-height:1;margin:8px 0 4px}.balance-unit{font-size:13px;color:var(--fg-1);margin-bottom:2px}.balance-pending{display:inline-flex;align-items:center;gap:8px;margin-top:14px;padding:8px 14px;background:var(--bg-2);border:1px solid var(--bg-3);border-radius:999px;font-size:13px}.pending-amount{font-weight:600;color:var(--accent-strong)}.pending-label{color:var(--fg-1)}.balance-hero-skeleton{height:140px;border-radius:16px}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.dot-warning{background:#d4a24a;box-shadow:0 0 0 3px #d4a24a22}.dot-danger{background:#d44a4a;box-shadow:0 0 0 3px #d44a4a22}.dot-success{background:#7ad44a;box-shadow:0 0 0 3px #7ad44a22}.alert-warn,.alert-danger,.alert-info{padding:14px 16px;border-radius:12px;border-left-width:3px;border-left-style:solid}.alert-warn{background:#d4a24a14;border-left-color:#d4a24a}.alert-danger{background:#d44a4a14;border-left-color:#d44a4a}.alert-info{background:#4a9ad414;border-left-color:#4a9ad4}.alert-icon{font-size:22px;line-height:1;flex-shrink:0;margin-top:2px}.alert-body{flex:1}.alert-title{font-weight:600;font-size:14px;margin-bottom:4px;color:var(--fg-0)}.alert-sub{font-size:13px;color:var(--fg-1);line-height:1.4}.action-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.action-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:18px 12px;background:var(--bg-1);border:1px solid var(--bg-3);border-radius:14px;color:var(--fg-0);text-decoration:none;font-size:13px;min-height:92px;transition:transform .1s ease,border-color .15s ease}.action-tile:active{transform:scale(.97)}.action-tile.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.action-tile.primary .action-icon{color:var(--accent-text)}.action-icon{font-size:26px;line-height:1;color:var(--accent)}.action-label{text-align:center;font-weight:500;line-height:1.2}.flex-row{display:flex;align-items:flex-start;gap:12px}.text-xl{font-size:24px}.mt-xs{margin-top:4px}.mb-sm{margin-bottom:8px}
