:root{--bg: #fdf7f9;--surface: #ffffff;--surface-tint: #faeef2;--border: #f0dbe4;--text: #241f18;--text-muted: #7c7364;--text-faint: #a89f8e;--primary: #c94577;--primary-hover: #a8375f;--primary-soft: #fbe6ee;--success: #1e8e5a;--danger: #c8433a;--radius: 14px;--radius-lg: 20px;--font-heading: "Manrope", ui-sans-serif, sans-serif;--font-body: "Inter", system-ui, -apple-system, sans-serif}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #1a1417;--surface: #241b20;--surface-tint: #2c1f26;--border: #3a2b32;--text: #f5eef1;--text-muted: #b09aa3;--text-faint: #6e5a62;--primary-soft: rgba(201, 69, 119, .22);--primary-hover: #ec6fa0;--success: #34c281;--danger: #ff6b60}:root:not([data-theme=light]) .error-banner{color:#ff9089}}:root[data-theme=dark]{--bg: #1a1417;--surface: #241b20;--surface-tint: #2c1f26;--border: #3a2b32;--text: #f5eef1;--text-muted: #b09aa3;--text-faint: #6e5a62;--primary-soft: rgba(201, 69, 119, .22);--primary-hover: #ec6fa0;--success: #34c281;--danger: #ff6b60}:root[data-theme=dark] .error-banner{color:#ff9089}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:15px;line-height:1.5}html[lang=km]{font-weight:700;zoom:1.08}html[lang=km]:not([data-theme=dark]){--text: #130d05;--text-muted: #3f3728;--text-faint: #5c5340}#root{max-width:480px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column}h1,h2,h3{font-family:var(--font-heading);font-weight:800;margin:0;letter-spacing:-.01em}.screen{flex:1;padding:20px 18px 90px}.top-bar{display:flex;justify-content:flex-end;align-items:center;gap:6px;padding:10px 18px 0}.top-bar .lang-group{display:flex;background:var(--surface-tint);border-radius:999px;padding:2px;gap:2px}.top-bar .lang-group button{width:auto;background:transparent;color:var(--text-muted);font-size:11px;font-weight:700;padding:5px 10px;border-radius:999px}.top-bar .lang-group button.active{background:var(--primary);color:#fff}.top-bar .theme-toggle{width:auto;background:var(--surface-tint);color:var(--text-muted);font-size:14px;padding:6px 10px;border-radius:999px}.center-screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center;color:var(--text-muted)}.hero-card{background:linear-gradient(135deg,var(--primary),#7a1f42);color:#fff;border-radius:var(--radius-lg);padding:24px 22px;margin-bottom:18px}.hero-card .shop-name{font-size:12.5px;font-weight:600;opacity:.8;text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.hero-card .member-name-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.hero-card .member-name{font-family:var(--font-heading);font-size:20px;font-weight:800}.hero-card .edit-profile-btn{width:auto;flex-shrink:0;background:#ffffff2e;color:#fff;padding:5px 10px;font-size:12px;border-radius:999px}.hero-card .member-meta{font-size:12px;opacity:.85}.hero-card .qr-wrap{background:#fff;border-radius:14px;padding:14px;margin-top:16px;display:flex;justify-content:center;position:relative;overflow:hidden}.hero-card .qr-watermark{position:absolute;top:14px;right:14px;bottom:14px;left:14px;width:calc(100% - 28px);height:calc(100% - 28px);object-fit:contain;opacity:.15;pointer-events:none}.hero-card .qr-wrap canvas{position:relative;z-index:1}.punch-row{display:flex;justify-content:space-between;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:10px}.punch-row .name{font-weight:600}.punch-row .count{font-family:var(--font-heading);font-weight:800;font-size:18px;color:var(--primary)}.reward-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;gap:10px}.reward-card .name{font-weight:700}.reward-card .desc{font-size:12.5px;color:var(--text-muted)}.reward-card .cost{font-size:12px;color:var(--text-faint);margin-top:2px}.slot-cabinet{position:relative;background:linear-gradient(160deg,#2a0f14,#140608);border-radius:var(--radius-lg);padding:4px;margin-bottom:18px;box-shadow:0 10px 30px #00000059;border:3px solid #a8742e;background-image:linear-gradient(160deg,#2a0f14,#140608),linear-gradient(135deg,#ffe9b0,#c9922f 35%,#ffe9b0 60%,#a8742e);background-origin:border-box;background-clip:padding-box,border-box}.slot-marquee{display:flex;justify-content:space-between;padding:6px 10px 0}.slot-marquee i{width:6px;height:6px;border-radius:50%;background:#ffd27a;box-shadow:0 0 6px 1px #ffd27a;animation:slot-marquee-blink 1.4s ease-in-out infinite}.slot-marquee i:nth-child(odd){animation-delay:.7s}@keyframes slot-marquee-blink{0%,to{opacity:1}50%{opacity:.15}}.slot-card{padding:16px 18px 20px}.slot-card .group-heading{color:#ffd27a;text-shadow:0 0 10px rgba(255,210,122,.5);margin-top:4px;text-align:center}.slot-reels{display:flex;gap:10px;justify-content:center;background:#0d0405;border-radius:var(--radius);padding:12px 10px;margin-bottom:14px;box-shadow:inset 0 3px 10px #0009,inset 0 0 0 1px #ffd27a26;position:relative}.slot-reels:after{content:"";position:absolute;left:10px;right:10px;top:50%;height:2px;background:#ff46468c;transform:translateY(-50%);pointer-events:none}.slot-reel{width:64px;height:64px;background:linear-gradient(160deg,#fffaf0,#fff0d6);border-radius:8px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px #00000026 inset,0 0 0 2px #7a5420;transition:transform .15s ease}.slot-reel svg{width:36px;height:36px}.slot-reel-spinning{animation:slot-reel-blur .08s linear infinite}.slot-reel-stopped{animation:slot-reel-land .35s ease;box-shadow:0 0 10px 1px #ffd27a,0 2px #00000026 inset,0 0 0 2px #ffd27a}@keyframes slot-reel-blur{0%,to{transform:translateY(0)}50%{transform:translateY(2px)}}@keyframes slot-reel-land{0%{transform:scale(1.15)}to{transform:scale(1)}}.slot-spin-btn{background:radial-gradient(circle at 35% 30%,#ff8a7a,#d6342a 70%);color:#fff8ec;text-shadow:0 1px 2px rgba(0,0,0,.35);box-shadow:0 3px #8a1812,0 6px 14px #00000059,inset 0 0 0 2px #ffffff40;letter-spacing:.03em;text-transform:uppercase}.slot-spin-btn:hover{background:radial-gradient(circle at 35% 30%,#ff9c8e,#e13d31 70%)}.slot-spin-btn:disabled{box-shadow:0 3px #8a181266}.slot-result{text-align:center;color:#f1e6f5;font-size:13.5px;margin-top:12px}.slot-result-win{color:#ffd27a;font-weight:700;text-shadow:0 0 8px rgba(255,210,122,.5)}.slot-info-btn{position:absolute;right:10px;bottom:10px;width:26px;height:26px;border-radius:50%;background:#ffd27a2e;color:#ffd27a;border:1px solid rgba(255,210,122,.5);display:flex;align-items:center;justify-content:center;padding:0}.slot-info-btn:hover{background:#ffd27a4d}.slot-legend-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.slot-legend-panel{background:var(--surface);border-radius:var(--radius-lg);padding:18px 18px 8px;max-width:340px;width:100%;max-height:80vh;overflow-y:auto}.slot-legend-panel h3{margin:0 0 10px;font-family:var(--font-heading)}.slot-legend-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--border);font-size:13.5px}.slot-legend-row:first-of-type{border-top:none}.slot-legend-icons{display:flex;gap:3px;flex-shrink:0}.slot-legend-icon-box{width:28px;height:28px;background:linear-gradient(160deg,#fffaf0,#fff0d6);border-radius:6px;box-shadow:0 0 0 2px #7a5420;display:flex;align-items:center;justify-content:center}.slot-legend-icon-box svg{width:19px;height:19px}.slot-win-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:20px;z-index:60;animation:slot-win-flash .5s ease-out}@keyframes slot-win-flash{0%{background:#ffd27ad9}to{background:#0009}}.slot-win-card{background:linear-gradient(160deg,#2a0f14,#140608);border:3px solid #a8742e;background-image:linear-gradient(160deg,#2a0f14,#140608),linear-gradient(135deg,#ffe9b0,#c9922f 35%,#ffe9b0 60%,#a8742e);background-origin:border-box;background-clip:padding-box,border-box;border-radius:var(--radius-lg);padding:26px 22px 20px;max-width:300px;width:100%;text-align:center;animation:slot-win-pop .4s cubic-bezier(.34,1.56,.64,1)}@keyframes slot-win-pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}.slot-win-icons{display:flex;justify-content:center;gap:8px;margin-bottom:14px}.slot-win-icon{width:52px;height:52px;background:linear-gradient(160deg,#fffaf0,#fff0d6);border-radius:50%;box-shadow:0 0 0 3px #ffd27a,0 0 16px 3px #ffd27a8c;display:flex;align-items:center;justify-content:center}.slot-win-icon svg{width:32px;height:32px}.slot-win-title{font-family:var(--font-heading);font-size:19px;font-weight:800;color:#ffd27a;text-shadow:0 0 10px rgba(255,210,122,.5);margin-bottom:6px}.slot-win-desc{color:#f1e6f5;font-size:14px}.slot-claim-btn{margin-top:18px;background:linear-gradient(135deg,#ffd27a,#ff9c4d);color:#2a1033;text-transform:uppercase;letter-spacing:.04em;box-shadow:0 3px #a8742e}.slot-claim-btn:hover{background:linear-gradient(135deg,#ffdb98,#ffad6b)}.activity-row{display:flex;justify-content:space-between;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px;margin-bottom:8px;font-size:14.5px}.activity-meta{font-size:12px;color:var(--text-faint);margin-top:2px}button{font:inherit;background:var(--primary);color:#fff;border:none;border-radius:var(--radius);padding:12px 18px;font-weight:700;cursor:pointer;width:100%}button:hover{background:var(--primary-hover)}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:var(--surface-tint);color:var(--text);border:1px solid var(--border)}button.small{width:auto;padding:8px 14px;font-size:13px}button.preset{width:auto;background:var(--primary-soft);color:var(--primary-hover);padding:10px 14px;font-size:13.5px}input,select,textarea{font:inherit;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:11px 14px;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary)}select option,select optgroup{background:var(--surface);color:var(--text)}.field{margin-bottom:12px}.field label{display:block;font-size:12px;font-weight:700;color:var(--text-muted);margin-bottom:6px}.tab-bar{position:sticky;bottom:0;display:flex;background:var(--surface);border-top:1px solid var(--border);max-width:480px;width:100%}.tab-bar button{flex:1;background:none;color:var(--text-faint);border-radius:0;padding:12px 0 calc(12px + env(safe-area-inset-bottom));font-weight:600;font-size:12.5px;display:flex;flex-direction:column;align-items:center;gap:3px}.tab-bar button.active{color:var(--primary)}.error-banner{background:#c8433a14;border:1px solid rgba(200,67,58,.25);color:#a5352d;border-radius:var(--radius);padding:10px 14px;font-size:13px;margin-bottom:14px}.success-banner{background:#1e8e5a1a;border:1px solid rgba(30,142,90,.3);color:var(--success);border-radius:var(--radius);padding:10px 14px;font-size:13px;margin-bottom:14px}.hint{color:var(--text-muted);font-size:13px;margin:6px 0 16px}.group-heading{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);margin:18px 0 8px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.stat-tile .value{font-family:var(--font-heading);font-size:22px;font-weight:800}.stat-tile .label{font-size:13px;color:var(--text-muted);font-weight:600}.stat-tile .delta{font-size:12px;font-weight:700;margin-top:4px}.stat-tile .delta.up{color:var(--success)}.stat-tile .delta.down{color:var(--danger)}.chart-legend{display:flex;gap:16px;font-size:12px;color:var(--text-muted);margin-bottom:8px}.chart-legend .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.admin-compact .group-heading{font-size:10px}.admin-compact .stat-tile .value{font-size:15px}.admin-compact .stat-tile .label{font-size:9px}.admin-compact .activity-row{font-size:11px;padding:8px 12px}.admin-compact .activity-meta{font-size:9px}.admin-compact .activity-row .amount{font-size:12px}.admin-compact .hint{font-size:10px}.admin-compact .stat-tile .delta,.admin-compact .chart-legend{font-size:9px}
