:root{--brand: #4f46e5;--brand-strong: #4338ca;--brand-2: #7c3aed;--brand-ink: #ffffff;--brand-wash: color-mix(in srgb, var(--brand) 10%, #fff);--brand-grad: linear-gradient(135deg, #6366f1 0%, var(--brand) 46%, var(--brand-2) 100%);--bg: #eef1f7;--surface: #ffffff;--surface-2: #f4f6fb;--ink: #0f172a;--ink-soft: #64748b;--ink-faint: #94a3b8;--line: #e4e8f0;--line-strong: #d3dae6;--ok: #16a34a;--warn: #d97706;--bad: #dc2626;--radius: 16px;--radius-sm: 10px;--radius-xs: 7px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow: 0 1px 3px rgba(15, 23, 42, .05), 0 10px 24px -12px rgba(15, 23, 42, .18);--shadow-lg: 0 2px 6px rgba(15, 23, 42, .06), 0 20px 40px -16px rgba(15, 23, 42, .28);--ring: 0 0 0 3px color-mix(in srgb, var(--brand) 22%, transparent);--font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--maxw: 760px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html,body{margin:0;padding:0}body{font-family:var(--font);color:var(--ink);background:radial-gradient(1200px 600px at 100% -10%,color-mix(in srgb,var(--brand) 7%,transparent),transparent 60%),radial-gradient(900px 500px at -10% 0%,color-mix(in srgb,var(--brand-2) 6%,transparent),transparent 55%),var(--bg);background-attachment:fixed;line-height:1.5;letter-spacing:.005em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:color-mix(in srgb,var(--brand) 22%,transparent)}h1,h2,h3{line-height:1.2;margin:0 0 .4em;letter-spacing:-.018em;font-weight:700}h2{font-size:1.15rem}h3{font-size:1rem}p{margin:0 0 .5rem}a{color:var(--brand);text-decoration:none;font-weight:500}a:hover{text-decoration:underline}small,.muted{color:var(--ink-soft)}.hidden{display:none!important}code{font-family:ui-monospace,SF Mono,Cascadia Mono,Menlo,monospace;font-size:.92em;background:var(--surface-2);border:1px solid var(--line);padding:.08em .4em;border-radius:var(--radius-xs)}button,.btn{font:inherit;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);padding:.6rem 1.05rem;border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);transition:transform .12s ease,box-shadow .15s ease,background .15s ease,border-color .15s ease,filter .15s ease}button:hover,.btn:hover{border-color:var(--line-strong);background:var(--surface-2)}button:active,.btn:active{transform:translateY(1px)}button:focus-visible,.btn:focus-visible,a:focus-visible{outline:none;box-shadow:var(--ring)}.btn--primary{background:var(--brand-grad);border-color:var(--brand-strong);color:var(--brand-ink);box-shadow:0 1px 2px #0f172a1f,0 8px 20px -8px color-mix(in srgb,var(--brand) 70%,transparent)}.btn--primary:hover{filter:brightness(1.05) saturate(1.05);transform:translateY(-1px);background:var(--brand-grad)}.btn--primary:active{transform:translateY(0);filter:brightness(.98)}.btn--ghost{background:transparent;border-color:transparent;box-shadow:none;color:var(--ink-soft)}.btn--ghost:hover{background:var(--surface-2);color:var(--ink);border-color:transparent}.btn--danger{background:var(--bad);border-color:var(--bad);color:#fff}.btn--danger:hover{background:color-mix(in srgb,var(--bad) 88%,#000)}.btn--block{width:100%}.btn--lg{padding:.8rem 1.15rem;font-size:1.02rem}button:disabled,.btn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:var(--shadow-sm);filter:none}label{display:block;font-size:.82rem;font-weight:600;color:var(--ink-soft);margin:.7rem 0 .3rem}input,select,textarea{font:inherit;width:100%;padding:.66rem .8rem;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease}input::placeholder,textarea::placeholder{color:var(--ink-faint)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:var(--ring)}input[readonly]{background:var(--surface-2);color:var(--ink-soft)}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--brand)}.app-shell{max-width:var(--maxw);margin:0 auto;padding:1.25rem 1rem 4rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem 1.35rem;margin-bottom:1.1rem}.card>h2:first-child,.card>h3:first-child{margin-top:0}.row{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}.row--end{justify-content:flex-end}.stack>*+*{margin-top:.7rem}.grid-2{display:grid;gap:.8rem;grid-template-columns:1fr 1fr}@media (max-width: 520px){.grid-2{grid-template-columns:1fr}}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:.75rem;max-width:var(--maxw);margin:0 auto;padding:.85rem 1rem;background:color-mix(in srgb,var(--surface) 82%,transparent);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}.topbar .logo-dot{width:24px;height:24px;border-radius:7px}.topbar h1{font-size:1.05rem;margin:0;letter-spacing:-.01em}.tabbar{display:flex;gap:.15rem;overflow-x:auto;max-width:var(--maxw);margin:0 auto;padding:.65rem 1rem 0;scrollbar-width:none}.tabbar::-webkit-scrollbar{display:none}.tabbar button{border:none;background:transparent;box-shadow:none;border-bottom:2px solid transparent;border-radius:0;padding:.55rem .85rem;color:var(--ink-soft);font-weight:600;white-space:nowrap}.tabbar button:hover{background:transparent;color:var(--ink)}.tabbar button[aria-selected=true]{color:var(--brand);border-bottom-color:var(--brand)}table{width:100%;border-collapse:collapse;font-size:.92rem}th,td{text-align:left;padding:.6rem .55rem;border-bottom:1px solid var(--line)}th{color:var(--ink-soft);font-weight:600;font-size:.76rem;text-transform:uppercase;letter-spacing:.04em}tbody tr{transition:background .12s ease}tbody tr:hover{background:var(--surface-2)}tbody tr:last-child td{border-bottom:none}.pill{display:inline-flex;align-items:center;padding:.15rem .6rem;border-radius:999px;font-size:.76rem;font-weight:600;background:var(--brand-wash);color:var(--brand-strong);border:1px solid color-mix(in srgb,var(--brand) 20%,transparent)}.logo-dot{width:36px;height:36px;border-radius:10px;background:var(--brand-grad);box-shadow:inset 0 1px #ffffff59,0 4px 12px -4px color-mix(in srgb,var(--brand) 60%,transparent)}.toast{position:fixed;left:50%;bottom:1.5rem;transform:translate(-50%);background:var(--ink);color:#fff;padding:.7rem 1.1rem;border-radius:12px;box-shadow:var(--shadow-lg);z-index:50;font-size:.92rem;font-weight:500;animation:toast-in .18s ease}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.auth{min-height:100dvh;display:grid;grid-template-columns:1.05fr 1fr;overflow-x:hidden}.auth__brand{position:relative;overflow:hidden;isolation:isolate;min-width:0;color:#fff;background:var(--brand-grad);display:flex;flex-direction:column;justify-content:space-between;gap:2rem;padding:clamp(1.75rem,3.5vw,3.25rem)}.auth__brand:before,.auth__brand:after{content:"";position:absolute;z-index:-1;border-radius:50%;filter:blur(10px)}.auth__brand:before{width:60%;padding-bottom:60%;right:-14%;top:-12%;background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.38),transparent 62%)}.auth__brand:after{width:70%;padding-bottom:70%;left:-20%;bottom:-28%;background:radial-gradient(circle at 50% 50%,rgba(124,58,237,.55),transparent 60%)}.auth__logo{display:inline-flex;align-items:center;gap:.6rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;font-size:.78rem;opacity:.95}.auth__logo .logo-dot{width:30px;height:30px;border-radius:9px;background:#ffffff2e;box-shadow:inset 0 0 0 1px #ffffff59}.auth__hero{max-width:15ch}.auth__headline{font-size:clamp(2.1rem,4.4vw,3.25rem);font-weight:800;line-height:1.05;letter-spacing:-.03em;margin:0 0 .7rem}.auth__sub{font-size:1.02rem;line-height:1.5;color:#ffffffd1;margin:0;max-width:34ch}.auth__note{font-size:.8rem;color:#ffffffb3;margin:0}.auth__form{display:flex;align-items:center;justify-content:center;min-width:0;background:var(--surface);padding:clamp(1.75rem,4vw,3.25rem) 1.5rem}.auth__form-inner{width:100%;max-width:380px}.auth__form-inner h1{font-size:1.55rem;letter-spacing:-.02em;margin:0 0 .35rem}.auth__lead{color:var(--ink-soft);margin:0 0 1.4rem;font-size:.95rem}.auth__foot{margin:1.15rem 0 0;font-size:.85rem;color:var(--ink-soft)}.auth__hint{margin:1.15rem 0 0;font-size:.8rem;color:var(--ink-faint);line-height:1.45}@media (max-width: 860px){.auth{grid-template-columns:1fr}.auth__brand{min-height:40vh;justify-content:flex-end;gap:1.25rem}.auth__form{padding:1.75rem 1.25rem 2.5rem}.auth__form-inner{max-width:440px}}@media (max-width: 380px){.auth__brand{min-height:34vh}}.landing{max-width:460px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;gap:2rem;padding:1.75rem;text-align:center}.landing__brand{display:flex;flex-direction:column;align-items:center;gap:.5rem}.landing__brand .logo-dot{width:52px;height:52px;border-radius:14px;margin-bottom:.25rem}.landing__brand h1{font-size:1.95rem;margin:0;letter-spacing:-.025em}.landing__choices{display:grid;gap:.9rem}.choice-card{position:relative;display:flex;flex-direction:column;gap:.35rem;align-items:flex-start;text-align:left;text-decoration:none;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.2rem 1.3rem;box-shadow:var(--shadow);transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.choice-card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--brand) 45%,var(--line));box-shadow:var(--shadow-lg);text-decoration:none}.choice-card__icon{font-size:1.7rem;line-height:1}.choice-card__title{font-weight:700;font-size:1.12rem;letter-spacing:-.01em}.choice-card__desc{color:var(--ink-soft);font-size:.9rem}.landing__foot{font-size:.78rem;color:var(--ink-faint)}.scan-result{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:2.25rem 1rem;border-radius:var(--radius);text-align:center;color:#fff;box-shadow:var(--shadow);animation:pop-in .2s cubic-bezier(.2,.9,.3,1.2)}@keyframes pop-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}.scan-result__icon{font-size:4.25rem;line-height:1;filter:drop-shadow(0 2px 6px rgba(0,0,0,.2))}.scan-result__title{font-size:1.6rem;font-weight:800;letter-spacing:-.02em}.scan-result--ok{background:linear-gradient(160deg,#22c55e,var(--ok))}.scan-result--override{background:linear-gradient(160deg,#34d399,#2f7d5a)}.scan-result--duplicate,.scan-result--gate{background:linear-gradient(160deg,#f59e0b,var(--warn))}.scan-result--invalid{background:linear-gradient(160deg,#ef4444,var(--bad))}#reader{width:100%;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line)}.qr-ticket{break-inside:avoid;text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.95rem;box-shadow:var(--shadow-sm)}.qr-ticket canvas,.qr-ticket img{width:100%;max-width:220px;height:auto}.tickets-grid{display:grid;gap:.9rem;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}@media print{body{background:#fff}.topbar,.tabbar,.no-print{display:none!important}.card{box-shadow:none;border-color:#d0d0d0}.qr-ticket{page-break-inside:avoid;box-shadow:none}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}.choice-card:hover,.btn--primary:hover,button:active{transform:none}}
