:root{--font: ui-sans-serif, -apple-system, "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--radius: 14px;--radius-sm: 9px;--radius-lg: 20px;--shadow: 0 1px 2px rgb(15 23 42 / .06), 0 8px 24px -12px rgb(15 23 42 / .18);--shadow-lg: 0 20px 50px -20px rgb(15 23 42 / .35);--brand: #2563eb;--brand-strong: #1d4ed8;--brand-soft: #dbeafe;--on-brand: #ffffff;--bg: #f4f6fa;--surface: #ffffff;--surface-2: #f8fafc;--surface-3: #eef2f7;--text: #0f172a;--text-2: #475569;--text-3: #94a3b8;--line: #e2e8f0;--line-strong: #cbd5e1;--ok: #15803d;--ok-soft: #dcfce7;--warn: #b45309;--warn-soft: #fef3c7;--danger: #b91c1c;--danger-soft: #fee2e2;--info: #0369a1;--info-soft: #e0f2fe;--focus: 0 0 0 3px color-mix(in srgb, var(--brand) 35%, transparent);color-scheme:light}@media(prefers-color-scheme:dark){:root[data-theme=auto]{color-scheme:dark;--bg: #0b1220;--surface: #111a2e;--surface-2: #16213a;--surface-3: #1c2947;--text: #e5e9f2;--text-2: #a5b0c6;--text-3: #6b7a99;--line: #243149;--line-strong: #324364;--brand-soft: #1e3a8a;--ok: #4ade80;--ok-soft: #14532d;--warn: #fbbf24;--warn-soft: #78350f;--danger: #f87171;--danger-soft: #7f1d1d;--info: #38bdf8;--info-soft: #0c4a6e;--shadow: 0 1px 2px rgb(0 0 0 / .4), 0 8px 24px -12px rgb(0 0 0 / .6);--shadow-lg: 0 20px 50px -20px rgb(0 0 0 / .7)}}:root[data-theme=dark]{color-scheme:dark;--bg: #0b1220;--surface: #111a2e;--surface-2: #16213a;--surface-3: #1c2947;--text: #e5e9f2;--text-2: #a5b0c6;--text-3: #6b7a99;--line: #243149;--line-strong: #324364;--brand-soft: #1e3a8a;--ok: #4ade80;--ok-soft: #14532d;--warn: #fbbf24;--warn-soft: #78350f;--danger: #f87171;--danger-soft: #7f1d1d;--info: #38bdf8;--info-soft: #0c4a6e;--shadow: 0 1px 2px rgb(0 0 0 / .4), 0 8px 24px -12px rgb(0 0 0 / .6);--shadow-lg: 0 20px 50px -20px rgb(0 0 0 / .7)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font);font-size:15px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}body.embed{background:transparent}h1,h2,h3,h4{margin:0;line-height:1.2;letter-spacing:-.01em}h1{font-size:1.6rem;font-weight:800}h2{font-size:1.2rem;font-weight:700}h3{font-size:1rem;font-weight:700}p{margin:0}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}code,.mono{font-family:var(--mono);font-size:.92em}button,input,select,textarea{font:inherit;color:inherit}img,svg{max-width:100%;display:block}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--radius-sm)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.container{width:100%;max-width:1180px;margin:0 auto;padding:0 16px}.narrow{max-width:560px}.stack{display:flex;flex-direction:column;gap:16px}.stack-sm{display:flex;flex-direction:column;gap:8px}.stack-lg{display:flex;flex-direction:column;gap:28px}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-auto{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}@media(max-width:900px){.grid-4,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.grow{flex:1 1 auto}.shrink0{flex-shrink:0}.ml-auto{margin-left:auto}.center{text-align:center}.right{text-align:right}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.small{font-size:.875rem}.tiny{font-size:.78rem}.bold{font-weight:700}.nowrap{white-space:nowrap}.mt-1{margin-top:4px}.mt-2{margin-top:8px}.mt-3{margin-top:16px}.mt-4{margin-top:24px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:16px}@media(max-width:640px){.hide-mobile{display:none!important}}.only-mobile{display:none}@media(max-width:640px){.only-mobile{display:initial}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-body{padding:20px}.card-header{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.card-footer{padding:14px 20px;border-top:1px solid var(--line);background:var(--surface-2);border-radius:0 0 var(--radius) var(--radius)}@media(max-width:640px){.card-body{padding:16px}.card-header{padding:14px 16px}}.panel{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 16px}.divider{height:1px;background:var(--line);border:0;margin:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 16px;height:40px;border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--surface);color:var(--text);font-weight:600;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s,transform .05s;text-decoration:none!important;-webkit-user-select:none;user-select:none}.btn:hover{background:var(--surface-2)}.btn:active{transform:translateY(1px)}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.btn-primary:hover{background:var(--brand-strong);border-color:var(--brand-strong)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover{filter:brightness(.95)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--surface-3)}.btn-soft{background:var(--brand-soft);border-color:transparent;color:var(--brand)}:root[data-theme=dark] .btn-soft,:root[data-theme=auto] .btn-soft{color:var(--text)}.btn-sm{height:32px;padding:0 12px;font-size:.875rem;border-radius:8px}.btn-lg{height:48px;padding:0 22px;font-size:1.02rem;border-radius:12px}.btn-block{width:100%}.btn-icon{width:40px;padding:0}.btn-icon.btn-sm{width:32px}.btn .spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.field{display:flex;flex-direction:column;gap:6px}.label{font-size:.875rem;font-weight:600;color:var(--text-2)}.hint{font-size:.8rem;color:var(--text-3)}.error-text{font-size:.85rem;color:var(--danger)}.input,.select,.textarea{width:100%;height:42px;padding:0 12px;border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--surface);color:var(--text);transition:border-color .12s}.textarea{height:auto;min-height:96px;padding:10px 12px;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand);box-shadow:var(--focus);outline:none}.input[aria-invalid=true]{border-color:var(--danger)}.input-lg{height:52px;font-size:1.15rem}.input-mono{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase}.input-group{display:flex}.input-group .input{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.input-group .btn{border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin-left:-1px;height:42px}.check{display:flex;align-items:flex-start;gap:10px;cursor:pointer}.check input{width:18px;height:18px;margin-top:2px;accent-color:var(--brand)}.switch{position:relative;width:44px;height:26px;border-radius:13px;background:var(--line-strong);border:0;cursor:pointer;transition:background .15s;flex-shrink:0}.switch:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 3px #0000004d}.switch[aria-checked=true]{background:var(--brand)}.switch[aria-checked=true]:after{left:21px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:8px 14px;border-radius:999px;border:1px solid var(--line-strong);background:var(--surface);font-weight:600;cursor:pointer}.chip[aria-pressed=true]{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.segment{display:inline-flex;background:var(--surface-3);border-radius:10px;padding:3px;gap:2px}.segment button{border:0;background:transparent;padding:6px 12px;border-radius:8px;font-weight:600;color:var(--text-2);cursor:pointer}.segment button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;font-size:.78rem;font-weight:700;background:var(--surface-3);color:var(--text-2);white-space:nowrap;text-transform:capitalize}.badge-ok{background:var(--ok-soft);color:var(--ok)}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-info{background:var(--info-soft);color:var(--info)}.badge-brand{background:var(--brand-soft);color:var(--brand)}:root[data-theme=dark] .badge-brand,:root[data-theme=auto] .badge-brand{color:var(--text)}.alert{display:flex;gap:12px;padding:12px 16px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface-2);align-items:flex-start}.alert-ok{background:var(--ok-soft);border-color:transparent;color:var(--ok)}.alert-warn{background:var(--warn-soft);border-color:transparent;color:var(--warn)}.alert-danger{background:var(--danger-soft);border-color:transparent;color:var(--danger)}.alert-info{background:var(--info-soft);border-color:transparent;color:var(--info)}.alert .alert-body{color:var(--text)}.alert-ok .alert-body,.alert-warn .alert-body,.alert-danger .alert-body,.alert-info .alert-body{color:inherit}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--radius)}table.table{width:100%;border-collapse:collapse;font-size:.92rem}.table th{text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);padding:10px 14px;border-bottom:1px solid var(--line);background:var(--surface-2);white-space:nowrap}.table td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tbody tr.clickable{cursor:pointer}.table tbody tr.clickable:hover{background:var(--surface-2)}.table .num{text-align:right;font-variant-numeric:tabular-nums}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}.stat .stat-label{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-weight:700}.stat .stat-value{font-size:1.6rem;font-weight:800;margin-top:4px;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.stat .stat-sub{font-size:.82rem;color:var(--text-2);margin-top:2px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0206178c;display:flex;align-items:flex-end;justify-content:center;padding:0;z-index:50;animation:fade .15s}@media(min-width:640px){.modal-backdrop{align-items:center;padding:24px}}.modal{background:var(--surface);border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:520px;max-height:92vh;overflow:auto;box-shadow:var(--shadow-lg);animation:up .18s ease-out}@media(min-width:640px){.modal{border-radius:var(--radius-lg)}}.modal-lg{max-width:820px}.modal-header{padding:18px 22px 0;display:flex;justify-content:space-between;align-items:center;gap:12px}.modal-body{padding:18px 22px}.modal-footer{padding:0 22px 20px;display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}@keyframes fade{0%{opacity:0}}@keyframes up{0%{transform:translateY(12px);opacity:0}}.toasts{position:fixed;left:50%;bottom:20px;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:60;width:min(420px,calc(100vw - 32px))}.toast{background:var(--text);color:var(--bg);padding:12px 16px;border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);display:flex;gap:10px;align-items:center;animation:up .18s;font-weight:500}.toast-danger{background:var(--danger);color:#fff}.toast-ok{background:var(--ok);color:#fff}.menu{position:absolute;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);min-width:200px;padding:6px;z-index:40}.menu button,.menu a{display:flex;width:100%;align-items:center;gap:10px;padding:9px 12px;border:0;background:none;border-radius:7px;text-align:left;cursor:pointer;color:var(--text);text-decoration:none!important}.menu button:hover,.menu a:hover{background:var(--surface-2)}.menu .menu-danger{color:var(--danger)}.empty{text-align:center;padding:48px 20px;color:var(--text-2)}.empty svg{margin:0 auto 12px;color:var(--text-3)}.skeleton{background:linear-gradient(90deg,var(--surface-3),var(--surface-2),var(--surface-3));background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:8px;min-height:16px}@keyframes shimmer{to{background-position:-200% 0}}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto}.tabs a,.tabs button{padding:10px 14px;border:0;background:none;font-weight:600;color:var(--text-2);border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;white-space:nowrap;text-decoration:none!important}.tabs a.active,.tabs button[aria-selected=true]{color:var(--brand);border-color:var(--brand)}.kv{display:grid;grid-template-columns:minmax(120px,160px) 1fr;gap:6px 16px;font-size:.92rem}.kv dt{color:var(--text-2)}.kv dd{margin:0;word-break:break-word}@media(max-width:480px){.kv{grid-template-columns:1fr;gap:2px}.kv dd{margin-bottom:8px}}.shell{display:grid;grid-template-columns:250px 1fr;min-height:100dvh}.sidebar{background:var(--surface);border-right:1px solid var(--line);padding:18px 14px;display:flex;flex-direction:column;gap:6px;position:sticky;top:0;height:100dvh;overflow-y:auto}.sidebar .brand{display:flex;align-items:center;gap:10px;padding:6px 10px 18px;font-weight:800;letter-spacing:-.01em}.brand-mark{width:32px;height:32px;border-radius:9px;background:var(--brand);color:var(--on-brand);display:grid;place-items:center;flex-shrink:0}.nav-section{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);font-weight:700;padding:14px 10px 4px}.nav-link{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;color:var(--text-2);font-weight:600;text-decoration:none!important}.nav-link:hover{background:var(--surface-2);color:var(--text)}.nav-link.active{background:var(--brand-soft);color:var(--brand)}:root[data-theme=dark] .nav-link.active,:root[data-theme=auto] .nav-link.active{color:var(--text)}.nav-link svg{flex-shrink:0}.main{min-width:0;display:flex;flex-direction:column}.topbar{height:60px;display:flex;align-items:center;gap:12px;padding:0 20px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--surface) 85%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:sticky;top:0;z-index:30}.page{padding:24px 20px 90px;width:100%;max-width:1240px;margin:0 auto}@media(max-width:640px){.page{padding:16px 14px 100px}}.page-title{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:20px}.page-title p{margin-top:4px}.tabbar{display:none}@media(max-width:900px){.shell{grid-template-columns:1fr}.sidebar{display:none}.tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));z-index:30}.tabbar a{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:.68rem;font-weight:600;color:var(--text-2);text-decoration:none!important;padding:4px 0;border-radius:8px}.tabbar a.active{color:var(--brand)}.drawer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:55;background:#0206178c}.drawer .sidebar{display:flex;width:280px;max-width:85vw;height:100dvh;box-shadow:var(--shadow-lg);animation:slide .18s ease-out}@keyframes slide{0%{transform:translate(-20px);opacity:0}}}.public-header{height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 20px;border-bottom:1px solid var(--line);background:var(--surface);flex-wrap:nowrap}.public-header .row{flex-wrap:nowrap}.public-main{padding:32px 16px 64px}.public-footer{padding:24px 16px;text-align:center;color:var(--text-3);font-size:.82rem;border-top:1px solid var(--line)}.hero{padding:56px 0 32px;text-align:center}.hero h1{font-size:clamp(2rem,5vw,3.2rem);letter-spacing:-.03em}.hero p{font-size:1.1rem;color:var(--text-2);max-width:620px;margin:14px auto 0}.giftcard{position:relative;aspect-ratio:1.586;border-radius:16px;padding:18px 20px;color:#fff;display:flex;flex-direction:column;justify-content:space-between;box-shadow:var(--shadow);overflow:hidden;background:linear-gradient(135deg,var(--gc-from, #1e293b),var(--gc-to, #334155));color:var(--gc-text, #fff)}.giftcard:before{content:"";position:absolute;inset:-40% -20% auto auto;width:70%;aspect-ratio:1;border-radius:50%;background:#ffffff1a}.giftcard:after{content:"";position:absolute;left:-20%;bottom:-60%;width:60%;aspect-ratio:1;border-radius:50%;background:#ffffff14}.giftcard>*{position:relative}.giftcard .gc-brand{font-weight:700;font-size:.9rem;opacity:.9;display:flex;align-items:center;gap:8px}.giftcard .gc-amount{font-size:clamp(1.6rem,6cqw,2.4rem);font-weight:800;letter-spacing:-.03em}.giftcard .gc-code{font-family:var(--mono);letter-spacing:.1em;font-size:.9rem;opacity:.95}.giftcard .gc-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;opacity:.8}.giftcard-sm{padding:12px 14px;border-radius:12px}.giftcard-sm .gc-amount{font-size:1.3rem}.giftcard-sm .gc-code{font-size:.7rem}.qr{background:#fff;padding:8px;border-radius:10px;display:inline-block;line-height:0}.qr svg{width:100%;height:auto}.scanner{position:relative;border-radius:var(--radius);overflow:hidden;background:#000;aspect-ratio:4/3;max-height:60vh}.scanner video{width:100%;height:100%;object-fit:cover}.scanner .reticle{position:absolute;top:15%;right:20%;bottom:15%;left:20%;border:2px solid rgb(255 255 255 / .8);border-radius:16px;box-shadow:0 0 0 999px #00000059}.scanner .reticle:after{content:"";position:absolute;left:8px;right:8px;top:50%;height:2px;background:var(--brand);animation:scanline 2s ease-in-out infinite}@keyframes scanline{0%,to{transform:translateY(-60px)}50%{transform:translateY(60px)}}.result-big{font-size:1.5rem;font-weight:800}@media print{body{background:#fff}.no-print{display:none!important}.sheet{display:grid;grid-template-columns:repeat(2,1fr);gap:8mm}.sheet .print-card{break-inside:avoid;page-break-inside:avoid}.giftcard{box-shadow:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}}.sheet{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.print-card{border:1px dashed var(--line-strong);border-radius:12px;padding:10px;display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;background:#fff;color:#111}
