:root{color-scheme:dark;--primary:#7367f0;--accent:#2dd4bf;font-family:system-ui,-apple-system,"Segoe UI",sans-serif}*{box-sizing:border-box}body{margin:0;min-height:100dvh;display:grid;place-items:center;padding:32px 18px;background:#080c19;color:#f4f3ff;overflow-x:hidden}.orb{position:fixed;width:500px;height:500px;border-radius:50%;filter:blur(110px);opacity:.25;pointer-events:none}.one{background:var(--primary);top:-230px;right:-160px}.two{background:var(--accent);bottom:-260px;left:-190px}.glass{z-index:1;width:100%;max-width:540px;padding:38px 28px;background:linear-gradient(145deg,#ffffff14,#ffffff06);border:1px solid #ffffff24;border-radius:32px;backdrop-filter:blur(24px);box-shadow:0 26px 100px #0006;overflow-wrap:anywhere}.eyebrow{color:var(--accent);font-size:13px;letter-spacing:.04em}.avatar{width:78px;height:78px;display:grid;place-items:center;border:1px solid #ffffff30;background:linear-gradient(135deg,var(--primary),#ffffff0c);border-radius:24px;font-size:30px;margin:20px 0}img.cover{display:block;width:100%;max-height:260px;object-fit:cover;border:1px solid #ffffff24;border-radius:24px;background:#ffffff0c;margin:20px 0 4px}h1{font-size:clamp(26px,6vw,38px);line-height:1.3;margin:12px 0}h2{font-size:20px}p{line-height:1.9;color:#c4c7d9;white-space:pre-line}.pill{display:inline-block;border-radius:99px;border:1px solid #ffffff25;padding:7px 13px;font-size:12px;color:#e0d9ff}.button{display:block;margin:14px 0;padding:17px;text-align:center;background:var(--primary);border:1px solid #ffffff25;border-radius:16px;color:white;text-decoration:none;font:inherit;font-weight:650;cursor:pointer;width:100%}.button.secondary{background:#ffffff09}.detail{display:flex;justify-content:space-between;gap:15px;padding:14px 0;border-bottom:1px solid #ffffff12}.detail span{color:#afb6cb}.notice{font-size:12px;padding:12px;border:1px solid #ffffff14;border-radius:12px}.spinner{width:32px;height:32px;border:3px solid #ffffff20;border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation:none}}a:focus-visible,button:focus-visible{outline:3px solid var(--accent);outline-offset:4px}
.stack{z-index:1;width:100%;max-width:540px;display:grid;gap:16px}
.tools{padding:22px 24px}
.tools .button{margin:10px 0}
.section{margin-top:28px}
.catalog{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.item{background:#ffffff0a;border:1px solid #ffffff1c;border-radius:20px;overflow:hidden;display:flex;flex-direction:column}
.item img{width:100%;aspect-ratio:1/1;object-fit:cover;cursor:zoom-in;background:#ffffff08}
.item-body{padding:10px 12px 12px}
.item h3{font-size:15px;margin:2px 0 4px}
.item p{font-size:13px;line-height:1.6;margin:4px 0 0}
.price{display:inline-block;color:var(--accent);font-weight:700;font-size:14px}
.lightbox{position:fixed;inset:0;z-index:50;background:#000d;display:grid;place-items:center;padding:16px}
.lightbox img{max-width:100%;max-height:100%;border-radius:16px}
.sheet{position:fixed;inset:0;z-index:40;background:#0009;display:flex;align-items:flex-end;justify-content:center;padding:12px}
.sheet-panel{max-width:540px;max-height:92dvh;overflow:auto;padding:26px 22px}
.sheet-panel.editor h3{margin-top:24px}
.field{width:100%;padding:13px 14px;border-radius:14px;border:1px solid #ffffff2a;background:#ffffff0d;color:#fff;font:inherit;margin:6px 0 4px}
textarea.field{min-height:84px;resize:vertical}
.form-row{display:block;margin:12px 0}
.form-row>span{font-size:13px;color:#afb6cb}
.thumb{display:block;width:96px;height:96px;object-fit:cover;border-radius:14px;margin:8px 0;border:1px solid #ffffff24}
.row{display:flex;gap:8px}
.button.small{padding:10px 12px;font-size:13px;margin:4px 0;width:auto}
.button.danger{color:#ff8a8a}
.cat-edit{border:1px solid #ffffff1c;border-radius:18px;padding:6px 14px 12px;margin:10px 0;background:#ffffff06}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:60;background:#1c2340;border:1px solid #ffffff2a;color:#fff;padding:12px 18px;border-radius:14px;max-width:90vw}
.toast.bad{background:#4a1d27}
[hidden]{display:none!important}
.sheet-panel{background:#12172c!important}
.langs{display:flex;gap:6px;justify-content:flex-end}
.lang{background:#ffffff10;border:1px solid #ffffff22;color:#cfd3e6;border-radius:10px;padding:6px 10px;font:inherit;font-size:12px;cursor:pointer}
.lang.active{background:var(--primary);color:#fff}
.shop-head{display:flex;gap:14px;align-items:center;margin-bottom:8px}
.shop-head .avatar{margin:0;flex:none;width:64px;height:64px;font-size:30px}
.shop-head h1{margin:0;font-size:clamp(22px,5vw,30px)}
.muted{color:#afb6cb}.small{font-size:12.5px}
.notice-box{padding:14px 16px;border-radius:16px;margin:14px 0;font-weight:650}
.notice-box.good{background:#16a34a2e;border:1px solid #22c55e66}
.notice-box.bad{background:#dc26262e;border:1px solid #ef444466}
.loyalty-card{margin:14px 0;padding:20px 18px;border-radius:24px;background:linear-gradient(135deg,var(--primary),#ffffff12);border:1px solid #ffffff2a}
.loyalty-card.free{background:linear-gradient(135deg,#16a34a,#22c55e55);border-color:#4ade80}
.loyalty-card .count{font-size:28px;font-weight:850}
.goal-text{margin:10px 0 0;color:#eef;font-weight:600}
.stamps{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.stamp{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;border:2px dashed #ffffff55;font-size:19px;background:#ffffff0a}
.stamp.on{border-style:solid;border-color:#fff;background:#ffffff26}
.stamp.gift{border-color:#4ade8088}
.stamp.gift.ready{background:#22c55e;border:2px solid #bbf7d0;box-shadow:0 0 0 4px #22c55e44}
.cust .stamps .stamp{width:26px;height:26px;font-size:13px}
.mini-stats{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:#cfd3e6}
.button.success{background:#16a34a}
.banners{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:6px}
.banners img{flex:none;width:78%;aspect-ratio:16/10;object-fit:cover;border-radius:18px;scroll-snap-align:center;border:1px solid #ffffff22}
.tabs{display:flex;gap:6px;margin:14px 0;background:#ffffff0a;padding:5px;border-radius:14px}
.tab{flex:1;white-space:nowrap;font-size:13px;padding:11px 4px;border:0;border-radius:10px;background:transparent;color:#cfd3e6;font:inherit;font-weight:650;cursor:pointer}
.tab.active{background:var(--primary);color:#fff}
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.stat{background:#ffffff0a;border:1px solid #ffffff18;border-radius:14px;padding:10px;text-align:center}
.stat strong{display:block;font-size:22px}.stat span{font-size:11.5px;color:#afb6cb}
.qr-wrap{text-align:center}
.qr{width:min(78vw,340px);height:auto;border-radius:16px;margin:8px auto;display:block}
:fullscreen .qr{width:min(80vh,90vw)}
.cust{padding:12px 14px;border:1px solid #ffffff1c;border-radius:16px;margin:8px 0;background:#ffffff06}
.cust.free{border-color:#4ade80;background:#22c55e14}
.cust-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.cust-meta{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:#afb6cb;margin-top:4px}
.cust-meta a{color:#cfd3e6}
.badge{font-size:11px;padding:3px 8px;border-radius:99px}
.badge.green{background:#22c55e33;color:#bbf7d0;border:1px solid #22c55e88}
.visit{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid #ffffff12}
.visit.voided span:first-child{text-decoration:line-through;opacity:.6}
.banner-edit{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.banner-thumb{position:relative}
.banner-thumb img{width:120px;height:76px;object-fit:cover;border-radius:12px;border:1px solid #ffffff24}
.banner-thumb .remove{position:absolute;top:4px;inset-inline-end:4px;border:0;border-radius:50%;width:24px;height:24px;background:#000a;color:#fff;cursor:pointer}
input[type=number].field{direction:ltr}
.pay-notice{margin:14px 0;padding:14px 16px;border-radius:16px;background:#f59e0b22;border:1px solid #f59e0b99;color:#fde7c0}
.pay-notice p{color:#fde7c0;margin:6px 0 0;white-space:pre-line}
.pay-notice.strong{background:#dc262633;border-color:#ef4444aa;color:#fecaca}
.pay-notice.strong p{color:#fee2e2}
/* ---------- Digital business card (vcard.mjs) ---------- */
body.vc-page{background:var(--vc-bg);color:var(--vc-text)}
body.vc-page .orb.one{background:var(--vc-accent);opacity:.32}
body.vc-page .orb.two{background:var(--vc-accent2);opacity:.22}
body.vc-page .tools{background:linear-gradient(160deg,color-mix(in srgb,var(--vc-card) 92%,transparent),color-mix(in srgb,var(--vc-card) 70%,transparent));border-color:var(--vc-line)}
body.vc-page .tools .button{background:var(--vc-accent);color:var(--vc-ink,#fff)}
body.vc-page .tools .button.secondary{background:transparent;color:var(--vc-text);border-color:var(--vc-line)}
body.vc-page .tools .eyebrow{color:var(--vc-muted)}
.vc{padding:0 0 24px!important;overflow:hidden;background:linear-gradient(180deg,color-mix(in srgb,var(--vc-card) 96%,transparent),color-mix(in srgb,var(--vc-card) 88%,transparent))!important;border-color:var(--vc-line)!important;color:var(--vc-text);box-shadow:0 30px 90px -20px color-mix(in srgb,var(--vc-accent) 35%,#000),0 0 0 1px var(--vc-line)!important}
.vc-hero{position:relative;height:190px;overflow:hidden;background:radial-gradient(120% 140% at 85% 0%,color-mix(in srgb,var(--vc-accent) 70%,transparent),transparent 60%),radial-gradient(90% 120% at 0% 100%,color-mix(in srgb,var(--vc-accent2) 55%,transparent),transparent 65%),var(--vc-card)}
.vc-cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vc-glow{position:absolute;inset:0;background:linear-gradient(180deg,transparent 35%,color-mix(in srgb,var(--vc-card) 92%,transparent)),linear-gradient(115deg,color-mix(in srgb,var(--vc-accent) 30%,transparent),transparent 55%)}
.vc-hero:not(:has(.vc-cover)) .vc-glow::after{content:"";position:absolute;inset:-40% -10% auto auto;width:120%;height:140%;border-radius:50%;border:2px solid color-mix(in srgb,var(--vc-accent) 55%,transparent);transform:rotate(-12deg);filter:blur(.5px);box-shadow:0 0 40px color-mix(in srgb,var(--vc-accent) 45%,transparent)}
.vc-brand{position:absolute;top:16px;inset-inline-end:18px;display:flex;align-items:center;gap:8px;padding:6px 12px 6px 6px;border-radius:99px;background:#0000004d;backdrop-filter:blur(10px);border:1px solid #ffffff22;color:#fff;font-size:13px;max-width:70%}
.vc-brand img{width:26px;height:26px;border-radius:50%;object-fit:cover;background:#fff}
.vc-brand b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:700}
.vc-avatar{position:relative;width:118px;height:118px;margin:-62px 22px 0;border-radius:50%;padding:4px;background:linear-gradient(140deg,var(--vc-accent),var(--vc-accent2));box-shadow:0 14px 34px -8px #000c;z-index:2}
.vc-avatar>img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block;border:3px solid var(--vc-card)}
.vc-initial{display:grid;place-items:center;width:100%;height:100%;border-radius:50%;background:var(--vc-card);font-size:46px;font-weight:800;color:var(--vc-accent);border:3px solid var(--vc-card)}
.vc-badge{position:absolute;bottom:2px;inset-inline-start:-4px;width:42px;height:42px;border-radius:50%;background:#fff;padding:3px;box-shadow:0 6px 16px #0008;border:3px solid var(--vc-card)}
.vc-badge img{width:100%;height:100%;object-fit:contain;border-radius:50%}
.vc-who{padding:12px 22px 0}
.vc-who h1{margin:4px 0 2px;font-size:clamp(25px,6.4vw,32px);line-height:1.25;letter-spacing:-.01em;color:var(--vc-text)}
.vc-role{margin:0;color:var(--vc-muted);font-size:15px;line-height:1.6}
.vc-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:18px 22px 4px}
.vc-actions:has(> :only-child){grid-template-columns:1fr}
.vc-btn{display:flex;align-items:center;justify-content:center;gap:7px;padding:14px 8px;border-radius:99px;font:inherit;font-weight:700;font-size:14px;white-space:nowrap;min-width:0;cursor:pointer;border:1px solid var(--vc-line);color:var(--vc-text);background:color-mix(in srgb,var(--vc-text) 6%,transparent);transition:transform .15s}
.vc-btn:active{transform:scale(.97)}
.vc-btn .vc-ico{width:19px;height:19px;display:inline-flex}
.vc-primary{background:linear-gradient(135deg,var(--vc-accent),var(--vc-accent2));color:var(--vc-ink,#fff);border-color:transparent;box-shadow:0 10px 26px -8px color-mix(in srgb,var(--vc-accent) 80%,transparent)}
.vc-ico svg,.vc-tile svg{width:100%;height:100%}
.vc-rows{margin:18px 22px 0;border-radius:20px;background:color-mix(in srgb,var(--vc-text) 4%,transparent);border:1px solid var(--vc-line);overflow:hidden}
.vc-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px 14px;color:var(--vc-text);text-decoration:none;border-bottom:1px solid var(--vc-line)}
.vc-row:last-child{border-bottom:0}
.vc-tile{width:38px;height:38px;padding:9px;border-radius:12px;background:color-mix(in srgb,var(--vc-accent) 18%,transparent);color:var(--vc-accent);display:inline-flex}
.vc-val{font-weight:600;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start}
.vc-row small{color:var(--vc-muted);font-size:12px}
.vc-chips{display:flex;flex-wrap:wrap;gap:8px;padding:16px 22px 0}
.vc-chip{display:inline-flex;align-items:center;gap:7px;padding:9px 14px 9px 10px;border-radius:99px;background:color-mix(in srgb,var(--vc-text) 6%,transparent);border:1px solid var(--vc-line);color:var(--vc-text);text-decoration:none;font-weight:600;font-size:14px}
.vc-chip .vc-ico{width:24px;height:24px;padding:4px;border-radius:50%;display:inline-flex;color:#fff}
.vc-instagram .vc-ico{background:radial-gradient(circle at 30% 110%,#fdf497 0 10%,#fd5949 45%,#d6249f 60%,#285aeb 95%)}
.vc-tiktok .vc-ico{background:#111;box-shadow:inset 0 0 0 1px #ffffff33}
.vc-facebook .vc-ico{background:#1877f2}.vc-linkedin .vc-ico{background:#0a66c2}.vc-x .vc-ico{background:#000;box-shadow:inset 0 0 0 1px #ffffff33}
.vc-youtube .vc-ico{background:#ff0000}.vc-snapchat .vc-ico{background:#fffc00;color:#111}.vc-telegram .vc-ico{background:#229ed9}
.vc-row .vc-tile:has(svg[fill=currentColor]){background:#25d36624;color:#25d366}
.vc-about{padding:16px 22px 0;margin:0;color:var(--vc-muted);line-height:1.9}
.vc-quote{margin:18px 22px 0;padding:18px 20px;border-radius:20px;border:1px solid var(--vc-line);background:linear-gradient(140deg,color-mix(in srgb,var(--vc-accent) 12%,transparent),transparent);font-size:16px;line-height:1.8;color:var(--vc-text);font-style:italic}
.vc .section{padding:0 22px}.vc .catalog{padding:0 22px}
/* Shape: centred */
.vc-center .vc-avatar{margin:-62px auto 0}
.vc-center .vc-who{text-align:center}
.vc-center .vc-chips{justify-content:center}
.vc-center .vc-badge{inset-inline-start:auto;inset-inline-end:-4px}
/* Shape: minimal (no cover, square photo) */
.vc-minimal{padding-top:22px!important}
.vc-minimal .vc-hero{display:none}
.vc-minimal .vc-avatar{margin:0 22px;border-radius:28px;width:104px;height:104px}
.vc-minimal .vc-avatar>img,.vc-minimal .vc-initial{border-radius:24px}
.vc-minimal .vc-btn{border-radius:16px}
.vc-minimal .vc-chip{border-radius:14px}
/* Light themes */
.vc-light body.vc-page .vc-brand,.vc-light .vc-brand{background:#ffffffcc;color:#111;border-color:#0000001a}
.vc-light .vc-glow{background:linear-gradient(180deg,transparent 40%,color-mix(in srgb,var(--vc-card) 85%,transparent))}
.vc-sheet .vc-sheet-ico{display:inline-flex;width:44px;height:44px;padding:10px;border-radius:14px;background:color-mix(in srgb,var(--vc-accent) 22%,transparent);color:var(--vc-accent)}
.vc-sheet .vc-muted{color:var(--vc-muted)}
.vc-sheet .vc-primary{border-radius:16px}
