:root{--bg:#03050c;--panel:#0d1220d1;--panel-border:#7dd3fc29;--text:#e6edf7;--text-dim:#8b98ad;--accent:#22d3ee;--gold:#fbbf24;--danger:#f87171;font-family:Segoe UI,PingFang SC,Microsoft YaHei,system-ui,sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--bg);height:100%;color:var(--text);overflow:hidden}.app{width:100%;height:100%;position:relative}.app canvas{touch-action:none;display:block}.topbar{pointer-events:none;z-index:10;background:linear-gradient(#03050ccc,#0000);justify-content:space-between;align-items:center;padding:18px 28px;display:flex;position:fixed;top:0;left:0;right:0}.topbar-actions{pointer-events:auto;align-items:center;gap:12px;display:flex}.brand{align-items:center;gap:12px;display:flex}.brand-moon{background:radial-gradient(circle at 35% 32%,#f5f3ee 0%,#c9c6bd 45%,#8d8b85 100%);border-radius:50%;width:26px;height:26px;box-shadow:0 0 18px #dce2f073}.brand-name{letter-spacing:4px;align-items:baseline;gap:10px;font-size:22px;font-weight:800;display:flex}.brand-name em{letter-spacing:2px;color:var(--text-dim);font-size:12px;font-style:normal;font-weight:500}.stats{color:var(--text-dim);background:var(--panel);border:1px solid var(--panel-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:999px;padding:8px 16px;font-size:13px}.stats b{color:var(--accent);font-size:15px}.language-picker select{appearance:none;border:1px solid var(--panel-border);background:var(--panel);color:var(--text);font:inherit;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:999px;outline:none;padding:8px 14px}.language-picker select:focus{border-color:#22d3ee80;box-shadow:0 0 0 3px #22d3ee24}.bottombar{color:var(--text-dim);pointer-events:none;z-index:10;background:linear-gradient(#0000,#03050cd9);flex-wrap:wrap;justify-content:center;align-items:center;gap:26px;padding:16px 28px 20px;font-size:13px;display:flex;position:fixed;bottom:0;left:0;right:0}.legend{gap:18px;display:flex}.legend-item{align-items:center;gap:6px;display:inline-flex}.swatch{border-radius:3px;width:12px;height:12px;display:inline-block}.swatch-free{border:1px solid var(--accent);background:#22d3ee8c}.swatch-sold{border:1px solid var(--gold);background:#fbbf248c}.swatch-grid{background:0 0;border:1px solid #7dd3fc66}.bottombar-links{align-items:center;gap:16px;display:flex}.text-btn{color:var(--text-dim);cursor:pointer;pointer-events:auto;background:0 0;border:none;padding:0;font-size:13px;transition:color .2s}.text-btn:hover{color:var(--text)}a.text-btn{text-decoration:none}.price-tiers{flex-wrap:wrap;justify-content:center;align-items:center;gap:16px;display:flex}.price-tier{color:var(--text-dim);white-space:nowrap;align-items:center;gap:6px;font-size:13px;display:inline-flex}.price-tier b{color:var(--text);margin-left:2px;font-weight:700}.tier-dot{border-radius:50%;width:9px;height:9px;display:inline-block;box-shadow:0 0 8px}.price-unit{color:var(--text-dim);font-size:12px}.tooltip-region{color:var(--text);letter-spacing:.5px;align-items:baseline;gap:6px;margin-bottom:4px;font-size:14px;font-weight:700;display:flex}.tooltip-region .region-mark{color:var(--gold)}.tooltip-region .region-en{color:var(--text-dim);letter-spacing:.3px;font-size:10px;font-weight:400}.tooltip-free{flex-direction:column;gap:2px;display:flex}.tooltip-tier{font-size:12px;font-weight:700}.tooltip-flag{color:#fda4af;background:#b2223440;border:1px solid #dc506466;border-radius:4px;margin-left:2px;padding:1px 6px;font-size:10px}.claim-tier{border:1px solid;border-radius:8px;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-bottom:14px;padding:8px 12px;display:flex}.claim-tier-name{letter-spacing:.5px;font-size:13px;font-weight:800}.claim-tier-desc{color:var(--text-dim);font-size:11px}.claim-tier-flag{color:var(--gold);margin-left:auto;font-size:12px;font-weight:600}.brandcard-history{color:var(--text-dim);text-align:justify;max-width:340px;margin:12px 0 4px;font-size:13px;line-height:1.75}.price b{color:var(--gold);margin-right:4px;font-size:16px}.reset-btn{pointer-events:auto;color:var(--text-dim);cursor:pointer;background:0 0;border:1px solid #8b98ad59;border-radius:8px;padding:5px 12px;font-size:12px;transition:all .2s}.reset-btn:hover{color:var(--danger);border-color:var(--danger)}.tooltip{z-index:20;pointer-events:none;background:var(--panel);border:1px solid var(--panel-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:10px;min-width:150px;padding:10px 14px;position:fixed;box-shadow:0 8px 30px #00000080}.tooltip-coord{color:var(--text-dim);letter-spacing:.5px;margin-bottom:4px;font-size:11px}.tooltip-brand{align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.tooltip-free{color:var(--accent);font-size:13px}.dot{border-radius:50%;width:10px;height:10px;display:inline-block}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:30;background:#02040a99;justify-content:center;align-items:center;animation:.18s fadeIn;display:flex;position:fixed;inset:0}.modal{border:1px solid var(--panel-border);background:linear-gradient(160deg,#10182b 0%,#0a0f1d 100%);border-radius:18px;width:min(580px,100vw - 32px);padding:28px;animation:.22s cubic-bezier(.34,1.56,.64,1) popIn;position:relative;box-shadow:0 20px 70px #000000a6,inset 0 0 0 1px #ffffff08}.modal-close{color:var(--text-dim);cursor:pointer;background:0 0;border:none;font-size:22px;line-height:1;transition:color .2s;position:absolute;top:14px;right:16px}.modal-close:hover{color:var(--text)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:scale(.92)translateY(12px)}to{opacity:1;transform:scale(1)translateY(0)}}.claim-title{margin-bottom:4px;font-size:20px;font-weight:700}.claim-coord{color:var(--text-dim);margin-bottom:20px;font-size:12px}.claim-body{gap:22px;display:flex}.claim-form{flex-direction:column;flex:1;gap:14px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--text-dim);letter-spacing:.5px;font-size:12px}.field input{color:var(--text);background:#ffffff0d;border:1px solid #7dd3fc2e;border-radius:9px;outline:none;padding:10px 12px;font-size:14px;transition:border-color .2s}.field input:focus{border-color:var(--accent)}.field input:disabled{opacity:.55}.field input::placeholder{color:#8b98ad80}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatch-btn{cursor:pointer;border:2px solid #0000;border-radius:8px;width:26px;height:26px;transition:transform .15s,border-color .15s}.swatch-btn:hover{transform:scale(1.12)}.swatch-btn.active{border-color:#fff;box-shadow:0 0 10px #fff6}.swatch-btn:disabled{opacity:.5;cursor:default}.file-input{color:var(--text);cursor:pointer;background:#ffffff0a;border:1px dashed #7dd3fc59;border-radius:9px;padding:10px 12px;font-size:13px;transition:border-color .2s,background .2s}.file-input:hover:not(:disabled){background:#ffffff12;border-color:#7dd3fc99}.file-input:disabled{opacity:.5;cursor:default}.file-input-sr{clip-path:inset(50%);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.file-row{align-items:center;gap:10px;display:flex}.file-btn{border:1px solid var(--panel-border);color:var(--text);font:inherit;cursor:pointer;background:#ffffff0a;border-radius:10px;padding:8px 12px}.file-name{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;overflow:hidden}.field-label .field-hint{color:var(--text-dim);margin-left:8px;font-size:11px;font-weight:400}.upload-hint{color:var(--accent);font-size:12px}.clear-logo{color:#f87171;cursor:pointer;background:0 0;border:1px solid #f8717180;border-radius:6px;align-self:flex-start;padding:5px 10px;font-size:11px;transition:background .15s}.clear-logo:hover:not(:disabled){background:#f871711f}.claim-preview{flex-direction:column;align-items:center;gap:8px;display:flex}.preview-canvas{border-radius:10px;width:220px;height:138px;display:block;overflow:hidden;box-shadow:0 6px 24px #00000080}.preview-label{color:var(--text-dim);letter-spacing:1px;font-size:11px}.claim-footer{border-top:1px solid #7dd3fc1f;justify-content:space-between;align-items:center;gap:16px;margin-top:22px;padding-top:18px;display:flex}.claim-price b{color:var(--gold);margin-right:8px;font-size:22px}.claim-price span{color:var(--text-dim);font-size:11px}.pay-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#0ea5b7,#0891b2);border:none;border-radius:11px;align-items:center;gap:8px;padding:13px 26px;font-size:15px;font-weight:700;transition:transform .15s,box-shadow .2s,filter .2s;display:inline-flex;box-shadow:0 6px 20px #0891b259}.pay-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 10px 28px #0891b280}.pay-btn:disabled{filter:grayscale(.7);opacity:.5;cursor:not-allowed}.pay-btn.paying{filter:none;opacity:1;cursor:wait}.pay-btn.success{background:linear-gradient(135deg,#059669,#10b981);animation:.5s successPulse;box-shadow:0 6px 20px #10b98166}@keyframes successPulse{0%{transform:scale(1)}40%{transform:scale(1.06)}to{transform:scale(1)}}.spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.checkmark{font-size:16px}.brandcard{text-align:center;width:min(360px,100vw - 32px)}.brandcard-chip{color:#fff;text-shadow:0 1px 4px #0006;border-radius:20px;justify-content:center;align-items:center;width:76px;height:76px;margin:6px auto 16px;font-size:26px;font-weight:900;display:flex;box-shadow:0 10px 30px #00000073}.brandcard-name{margin-bottom:6px;font-size:21px;font-weight:700}.brandcard-coord{color:var(--text-dim);margin-bottom:20px;font-size:12px}.brandcard-link{color:var(--accent);border:1px solid #22d3ee59;border-radius:999px;padding:10px 22px;font-size:14px;font-weight:600;text-decoration:none;transition:background .2s;display:inline-block}.brandcard-link:hover{background:#22d3ee1a}@media (width<=640px){.claim-body{flex-direction:column}.claim-preview{order:-1}.preview-canvas{width:180px;height:112px}.claim-footer{text-align:center;flex-direction:column;align-items:stretch}.bottombar{gap:12px;font-size:12px}.hint{display:none}}.error-overlay{z-index:100;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#03050ce6;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.error-box{text-align:center;background:linear-gradient(160deg,#1e102b 0%,#0c111f 100%);border:1px solid #f871714d;border-radius:16px;width:100%;max-width:460px;padding:26px;box-shadow:0 20px 60px #0009}.error-box h3{color:var(--danger);margin-bottom:12px;font-size:18px}.error-box p{color:var(--text-dim);word-break:break-word;margin-bottom:20px;font-size:14px;line-height:1.55}.error-box button{color:var(--text);cursor:pointer;background:#ffffff14;border:1px solid #fff3;border-radius:10px;padding:10px 24px;transition:background .2s}.error-box button:hover{background:#ffffff24}.admin-page{background:var(--bg);min-height:100vh;color:var(--text);padding:24px}.admin-topbar,.admin-toolbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;display:flex}.admin-topbar h1{margin-bottom:6px;font-size:26px}.admin-topbar p,.admin-empty,.review-meta,.review-note,.admin-toolbar,.admin-error{color:var(--text-dim)}.admin-auth{align-items:center;gap:8px;display:flex}.admin-auth input,.admin-toolbar input{border:1px solid var(--panel-border);min-width:260px;color:var(--text);background:#ffffff0a;border-radius:10px;padding:10px 12px}.admin-auth button,.approve-btn,.reject-btn{border:1px solid var(--panel-border);color:var(--text);background:#ffffff0d;border-radius:10px;padding:10px 14px}.admin-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.admin-column{border:1px solid var(--panel-border);background:#0d1220b3;border-radius:14px;min-height:60vh;padding:16px}.admin-column h2{margin-bottom:12px;font-size:18px}.review-card{background:#ffffff08;border:1px solid #7dd3fc29;border-radius:12px;margin-bottom:12px;padding:12px}.review-head,.review-actions,.review-meta{align-items:center;gap:10px;display:flex}.review-head{justify-content:space-between;margin-bottom:8px}.review-meta{flex-wrap:wrap;margin-bottom:10px;font-size:12px}.review-logo{object-fit:cover;border-radius:10px;width:100%;max-height:150px;margin-bottom:10px}.status{border-radius:999px;padding:4px 10px;font-size:12px}.status-pending{color:#fbbf24;background:#fbbf2424}.status-approved{color:#34d399;background:#34d39924}.status-rejected{color:#f87171;background:#f8717124}.approve-btn{color:#34d399}.reject-btn{color:#f87171}.admin-error{color:#f87171;margin-bottom:12px}
