:root{color-scheme:light;--n-0: #fcfdfc;--n-50: #f4f7f4;--n-100: #e9eee9;--n-200: #d8e0d9;--n-300: #bcc8bf;--n-400: #93a398;--n-500: #6d7f73;--n-600: #526358;--n-700: #3d4c43;--n-800: #2c3832;--n-900: #1f2925;--n-950: #141b17;--pine-300: #7fb8a3;--pine-400: #4e9a7f;--pine-500: #2c7a5f;--pine-600: #1f6350;--pine-700: #185040;--pine-800: #123d31;--accent: var(--pine-600);--accent-strong: var(--pine-700);--accent-pressed: var(--pine-800);--accent-soft: rgba(31, 99, 80, .1);--accent-softer: rgba(31, 99, 80, .06);--on-accent: #f6fbf8;--brass: #a87c2a;--brass-deep: #8a6420;--brass-soft: rgba(168, 124, 42, .14);--canvas: var(--n-50);--surface: var(--n-0);--surface-sunken: var(--n-100);--surface-raised: #ffffff;--surface-ink: var(--n-900);--ink: var(--n-950);--ink-secondary: var(--n-700);--ink-muted: var(--n-500);--ink-faint: var(--n-400);--ink-on-dark: var(--n-50);--ink-disabled: rgba(61, 76, 67, .45);--line-subtle: var(--n-100);--line: var(--n-200);--line-strong: var(--n-300);--line-active: var(--accent);--ok: #2f7d4f;--ok-bg: #e3f1e8;--ok-line: #b9dcc7;--warn: #8a5b00;--warn-bg: #f6ecd9;--warn-line: #e6d3ab;--danger: #bd3d36;--danger-bg: #f9e7e5;--danger-line: #eec5c2;--info: #2f6cb3;--info-bg: #e6eef8;--info-line: #c3d6ec;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-display: ui-rounded, "SF Pro Rounded", var(--font-sans);--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--text-xs: 12px;--text-sm: 14px;--text-base: 16px;--text-md: 18px;--text-lg: 21px;--text-xl: 25px;--text-2xl: 31px;--text-3xl: 39px;--leading-tight: 1.15;--leading-snug: 1.35;--leading-body: 1.5;--tracking-tight: -.015em;--tracking-wide: .04em;--tracking-caps: .08em;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--sp-16: 64px;--control-sm: 36px;--control-md: 44px;--control-lg: 52px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-full: 999px;--e1: 0 1px 2px rgba(20, 27, 23, .08);--e2: 0 2px 8px rgba(20, 27, 23, .1);--e3: 0 12px 32px -8px rgba(20, 27, 23, .18);--e4: 0 24px 64px -16px rgba(20, 27, 23, .28);--focus-ring: 0 0 0 2px var(--surface), 0 0 0 4px var(--accent);--z-sticky: 10;--z-nav: 20;--z-overlay: 50;--z-modal: 60;--z-toast: 70;--ease-standard: cubic-bezier(.2, 0, 0, 1);--ease-enter: cubic-bezier(.16, 1, .3, 1);--ease-exit: cubic-bezier(.4, 0, 1, 1);--t-fast: .14s;--t-base: .22s;--t-slow: .32s;--t-page: .42s}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--canvas);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-body);-webkit-font-smoothing:antialiased}h1,h2,h3,h4,p{margin:0}h1{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;line-height:var(--leading-tight);letter-spacing:var(--tracking-tight)}h2{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;line-height:var(--leading-tight);letter-spacing:var(--tracking-tight)}h3{font-size:var(--text-md);font-weight:600;line-height:var(--leading-snug)}a{color:var(--accent);text-underline-offset:3px}code{font-family:var(--font-mono);font-size:.9em}img,svg,video,canvas{max-width:100%;display:block}button{font:inherit;color:inherit}input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),select,textarea{width:100%;min-height:var(--control-md);padding:var(--sp-2) var(--sp-3);font:inherit;font-size:var(--text-base);color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-md);transition:border-color var(--t-fast) var(--ease-standard),box-shadow var(--t-fast) var(--ease-standard)}textarea{line-height:var(--leading-body);resize:vertical}input::placeholder,textarea::placeholder{color:var(--ink-faint)}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}input:disabled,select:disabled,textarea:disabled,button:disabled{cursor:not-allowed}label{display:block;font-size:var(--text-sm);font-weight:600;color:var(--ink-secondary);margin-bottom:var(--sp-1)}fieldset{border:0;padding:0;margin:0;min-width:0}legend{padding:0}:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--r-sm)}::selection{background:var(--accent-soft)}.skip-link{position:absolute;left:-9999px;z-index:var(--z-toast);padding:var(--sp-2) var(--sp-4);background:var(--surface-ink);color:var(--ink-on-dark);border-radius:var(--r-md)}.skip-link:focus-visible{left:var(--sp-3);top:var(--sp-3)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--control-md);padding:var(--sp-2) var(--sp-4);font-size:var(--text-base);font-weight:600;line-height:var(--leading-snug);border:1px solid transparent;border-radius:var(--r-md);background:none;cursor:pointer;text-decoration:none;transition:background-color var(--t-fast) var(--ease-standard),border-color var(--t-fast) var(--ease-standard),color var(--t-fast) var(--ease-standard),transform var(--t-fast) var(--ease-standard)}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.45}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);box-shadow:var(--e1)}.btn-primary:active:not(:disabled){background:var(--accent-pressed)}.btn-quiet{background:var(--surface);border-color:var(--line);color:var(--ink);box-shadow:var(--e1)}.btn-quiet:active:not(:disabled){background:var(--surface-sunken)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-ghost{color:var(--ink-secondary)}.btn-ghost:active:not(:disabled){background:var(--surface-sunken)}@media(hover:hover){.btn-primary:hover:not(:disabled){background:var(--accent-strong)}.btn-quiet:hover:not(:disabled){border-color:var(--line-strong);background:var(--n-50)}.btn-danger:hover:not(:disabled){filter:brightness(1.08)}.btn-ghost:hover:not(:disabled){background:var(--surface-sunken);color:var(--ink)}}.btn-sm{min-height:var(--control-sm);padding:var(--sp-1) var(--sp-3);font-size:var(--text-sm);border-radius:var(--r-sm)}.btn-lg{min-height:var(--control-lg);font-size:var(--text-md)}.btn-block{width:100%}.btn-icon{padding:0;width:var(--control-md);flex:none}.btn-icon.btn-sm{width:var(--control-sm)}.badge{display:inline-flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);font-size:var(--text-xs);font-weight:600;letter-spacing:var(--tracking-wide);border-radius:var(--r-full);border:1px solid var(--line);background:var(--surface-sunken);color:var(--ink-secondary)}.badge-ok{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok)}.badge-warn{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn)}.badge-danger{background:var(--danger-bg);border-color:var(--danger-line);color:var(--danger)}.badge-info{background:var(--info-bg);border-color:var(--info-line);color:var(--info)}.card{background:var(--surface);border:1px solid var(--line-subtle);border-radius:var(--r-lg);box-shadow:var(--e1);padding:var(--sp-5)}.card-title{font-size:var(--text-lg);font-family:var(--font-display);font-weight:700;letter-spacing:var(--tracking-tight)}.field{margin-bottom:var(--sp-4)}.field-hint{margin-top:var(--sp-1);font-size:var(--text-sm);color:var(--ink-muted)}.field-error{margin-top:var(--sp-1);font-size:var(--text-sm);color:var(--danger);font-weight:500}.note{display:flex;gap:var(--sp-2);align-items:flex-start;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);font-size:var(--text-sm);border:1px solid var(--line);background:var(--surface-sunken);color:var(--ink-secondary)}.note-danger{background:var(--danger-bg);border-color:var(--danger-line);color:var(--danger)}.note-ok{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok)}.note-warn{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn)}.note-info{background:var(--info-bg);border-color:var(--info-line);color:var(--info)}.error-state{display:grid;gap:var(--sp-3);justify-items:center;text-align:center;padding:var(--sp-6);color:var(--ink-secondary);font-size:var(--text-sm)}.empty-state{display:grid;gap:var(--sp-2);justify-items:center;text-align:center;padding:var(--sp-8) var(--sp-4);color:var(--ink-muted)}.empty-state .empty-title{font-weight:600;color:var(--ink-secondary)}.tabs{position:relative;min-width:0;max-width:100%;overflow:hidden}.tabs-track{display:flex;gap:var(--sp-2);overflow-x:auto;scrollbar-width:none;scroll-snap-type:x proximity;padding-bottom:2px}.tabs-track::-webkit-scrollbar{display:none}.tabs:after{content:"";position:absolute;top:0;right:0;bottom:0;width:var(--sp-8);pointer-events:none;background:linear-gradient(to right,transparent,var(--canvas));opacity:0;transition:opacity var(--t-fast) var(--ease-standard)}.tabs.tabs-overflowing:after{opacity:1}.tab{flex:none;scroll-snap-align:start;display:inline-flex;align-items:center;gap:var(--sp-1);min-height:var(--control-sm);padding:var(--sp-1) var(--sp-3);border:1px solid var(--line);border-radius:var(--r-full);background:var(--surface);color:var(--ink-secondary);font-size:var(--text-sm);font-weight:600;cursor:pointer;text-decoration:none;transition:background-color var(--t-fast) var(--ease-standard),color var(--t-fast) var(--ease-standard),border-color var(--t-fast) var(--ease-standard)}.tab[aria-current=page],.tab.active{background:var(--ink);border-color:var(--ink);color:var(--ink-on-dark)}.seg{display:inline-flex;padding:3px;gap:2px;background:var(--surface-sunken);border-radius:var(--r-md)}.seg button{border:0;background:none;min-height:30px;padding:var(--sp-1) var(--sp-3);border-radius:var(--r-sm);font-size:var(--text-sm);font-weight:600;color:var(--ink-muted);cursor:pointer}.seg button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--e1)}.table-wrap{overflow-x:auto;border:1px solid var(--line-subtle);border-radius:var(--r-lg);background:var(--surface)}table.table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.table th{text-align:left;font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--ink-muted);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line);background:var(--surface-sunken)}.table td{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line-subtle);font-variant-numeric:tabular-nums}.table tbody tr:last-child td{border-bottom:0}.table tr.clickable{cursor:pointer}@media(hover:hover){.table tr.clickable:hover{background:var(--n-50)}}@media(max-width:639px){.table-stack table.table,.table-stack thead,.table-stack tbody,.table-stack tr,.table-stack td{display:block}.table-stack thead{display:none}.table-stack tr{border-bottom:1px solid var(--line);padding:var(--sp-2) 0}.table-stack tr:last-child{border-bottom:0}.table-stack td{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-4);border:0;padding:var(--sp-1) var(--sp-4)}.table-stack td:before{content:attr(data-label);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--ink-muted);flex:none}.table-stack td:not([data-label]):before{content:none}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);background:#141b1773;display:flex;align-items:flex-end;justify-content:center;padding:var(--sp-4);padding-bottom:max(var(--sp-4),env(safe-area-inset-bottom))}@media(min-width:640px){.modal-overlay{align-items:center}}.modal{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--e4);width:100%;max-width:480px;max-height:min(85dvh,720px);display:flex;flex-direction:column}.modal-lg{max-width:720px}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--line-subtle)}.modal-body{padding:var(--sp-5);overflow-y:auto}.modal-actions{display:flex;gap:var(--sp-3);justify-content:flex-end;padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--line-subtle)}.modal-close{display:inline-flex;align-items:center;justify-content:center;width:var(--control-sm);height:var(--control-sm);flex:none;border:0;border-radius:var(--r-full);background:var(--surface-sunken);color:var(--ink-secondary);cursor:pointer}@media(hover:hover){.modal-close:hover{background:var(--line);color:var(--ink)}}.toast-region{position:fixed;z-index:var(--z-toast);bottom:max(var(--sp-4),env(safe-area-inset-bottom));left:50%;transform:translate(-50%);display:grid;gap:var(--sp-2);width:min(calc(100% - var(--sp-8)),420px)}.toast{display:flex;align-items:center;gap:var(--sp-3);background:var(--surface-ink);color:var(--ink-on-dark);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);box-shadow:var(--e3);font-size:var(--text-sm);font-weight:500}.toast-danger{background:var(--danger);color:#fff}.loading-block{display:inline-flex;align-items:center;gap:var(--sp-2);color:var(--ink-muted);font-size:var(--text-sm)}.spinner{width:18px;height:18px;flex:none;border-radius:var(--r-full);border:2.5px solid var(--line);border-top-color:var(--accent);animation:pc-spin .7s linear infinite}@keyframes pc-spin{to{transform:rotate(360deg)}}.skeleton{border-radius:var(--r-sm);background:var(--surface-sunken);animation:pc-skeleton 1.6s var(--ease-standard) infinite}.skeleton-text{height:14px;max-width:280px}.skeleton-row{height:56px}.skeleton-card{height:120px;border-radius:var(--r-lg)}@keyframes pc-skeleton{0%,to{opacity:1}50%{opacity:.55}}.coin{--coin-size: 44px;width:var(--coin-size);height:var(--coin-size);border-radius:var(--r-full);display:inline-flex;align-items:center;justify-content:center;font-size:calc(var(--coin-size) * .42);color:var(--ink-faint);background:var(--surface-sunken);box-shadow:inset 0 1.5px 3px #141b171f;transition:background-color var(--t-base) var(--ease-enter),color var(--t-base) var(--ease-enter),transform var(--t-base) var(--ease-enter)}.coin-earned{background:var(--accent);color:var(--on-accent);box-shadow:inset 0 -2px #141b172e,var(--e1)}.coin-milestone.coin-earned{background:var(--brass);color:#fff}.coin-pending{background:var(--accent-soft);color:var(--accent);animation:pc-coin-pulse 1.2s var(--ease-standard) infinite}@keyframes pc-coin-pulse{50%{transform:scale(1.08)}}.punch-row{display:flex;flex-wrap:wrap;gap:var(--sp-2);justify-content:center}.tear{border:0;height:0;margin:var(--sp-5) calc(var(--sp-2) * -1);border-top:2px dashed var(--line)}.code{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:.08em;font-weight:600;color:var(--ink)}.code-lg{font-size:var(--text-lg)}.pager{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);font-size:var(--text-sm);color:var(--ink-muted);font-variant-numeric:tabular-nums}.filter-bar{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}.filter-bar>*{flex:1 1 140px;min-width:0}.filter-bar>.btn{flex:0 0 auto}.kpi{display:grid;gap:var(--sp-1);padding:var(--sp-4) var(--sp-5);background:var(--surface);border:1px solid var(--line-subtle);border-radius:var(--r-lg);box-shadow:var(--e1)}.kpi-label{font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--ink-muted)}.kpi-value{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;line-height:var(--leading-tight);font-variant-numeric:tabular-nums}.kpi-detail{font-size:var(--text-sm);color:var(--ink-muted)}.offline-banner{position:sticky;top:0;z-index:var(--z-sticky);display:flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);background:var(--warn-bg);border-bottom:1px solid var(--warn-line);color:var(--warn);font-size:var(--text-sm);font-weight:600}.row{display:flex;align-items:center;gap:var(--sp-3)}.row-between{justify-content:space-between}.stack{display:grid;gap:var(--sp-4)}.stack-sm{display:grid;gap:var(--sp-2)}.term{min-height:100dvh;display:flex;flex-direction:column}.term-bar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-4);padding-top:max(var(--sp-2),env(safe-area-inset-top));background:var(--surface);border-bottom:1px solid var(--line-subtle)}.term-bar-store{display:flex;align-items:center;gap:var(--sp-2);min-width:0;font-weight:700;font-family:var(--font-display);letter-spacing:var(--tracking-tight)}.term-bar-store .store-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.term-bar-store img{width:24px;height:24px;border-radius:var(--r-full);object-fit:cover}.term-bar-nav{margin-left:auto;display:flex;align-items:center;gap:var(--sp-1);flex:none}.term-main{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:var(--sp-4);padding-bottom:max(var(--sp-6),env(safe-area-inset-bottom))}.login-page{min-height:100dvh;display:grid;place-items:center;padding:var(--sp-4)}.login-card{width:100%;max-width:400px;display:grid;gap:var(--sp-4)}.login-brand{display:grid;gap:var(--sp-1)}.login-brand-name{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;letter-spacing:var(--tracking-tight)}.login-brand-sub{font-size:var(--text-sm);color:var(--ink-muted)}.scan-layout{display:grid;gap:var(--sp-4);align-items:start}@media(min-width:900px){.scan-layout{grid-template-columns:minmax(360px,460px) 1fr;gap:var(--sp-8)}}.code-entry input{font-family:var(--font-mono);font-size:var(--text-lg);font-variant-numeric:tabular-nums;letter-spacing:.12em;text-align:center;min-height:var(--control-lg)}@media(min-width:480px){.code-entry input{font-size:var(--text-xl)}}.code-dots{display:flex;justify-content:center;gap:var(--sp-2);padding:var(--sp-3) 0 var(--sp-1)}.code-dots span{width:8px;height:8px;border-radius:var(--r-full);background:var(--surface-sunken);box-shadow:inset 0 1px 2px #141b1726;transition:background-color var(--t-fast) var(--ease-standard)}.code-dots span.filled{background:var(--accent);box-shadow:none}.scan-actions{display:grid;gap:var(--sp-3)}.scan-actions-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}.recent-list{display:grid;gap:var(--sp-2)}.recent-item{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);width:100%;text-align:left;padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--line-subtle);border-radius:var(--r-md);cursor:pointer;font:inherit}@media(hover:hover){.recent-item:hover{border-color:var(--line-strong)}}.recent-item .when{font-size:var(--text-xs);color:var(--ink-muted);flex:none}.pass-layout{display:grid;gap:var(--sp-4);align-items:start}@media(min-width:900px){.pass-layout{grid-template-columns:minmax(400px,500px) 1fr;gap:var(--sp-8)}}.pass-hero{text-align:center;display:grid;gap:var(--sp-2);justify-items:center}.pass-count{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:700;line-height:var(--leading-tight);font-variant-numeric:tabular-nums}.pass-count .of{font-size:var(--text-md);font-weight:500;color:var(--ink-muted);padding:0 var(--sp-2)}.pass-reward{font-size:var(--text-md);font-weight:600;color:var(--ink-secondary)}.pass-note,.pass-code{font-size:var(--text-sm);color:var(--ink-muted)}.pass-actions{display:grid;gap:var(--sp-3)}@media(max-width:899px){.pass-actions{position:sticky;bottom:0;z-index:var(--z-sticky);background:var(--canvas);padding:var(--sp-3) 0;padding-bottom:max(var(--sp-3),env(safe-area-inset-bottom));box-shadow:0 -8px 16px -12px #141b1740}}.pass-actions-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:var(--sp-3)}.pass-history{display:grid;gap:var(--sp-2)}.pass-history-item{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--line-subtle);font-size:var(--text-sm)}.pass-history-item:last-child{border-bottom:0}.pass-history-item .delta{font-variant-numeric:tabular-nums;font-weight:600}.pass-history-item .when{color:var(--ink-muted);font-size:var(--text-xs);flex:none}.camera-viewport{position:relative;border-radius:var(--r-lg);overflow:hidden;background:var(--n-900);height:min(62dvh,520px)}.camera-viewport video{width:100%;height:100%;object-fit:cover}.camera-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--ink-on-dark);text-align:center;padding:var(--sp-6)}.camera-frame{position:absolute;top:12%;right:12%;bottom:12%;left:12%;pointer-events:none;background:linear-gradient(var(--n-50),var(--n-50)) top left / 24px 2px,linear-gradient(var(--n-50),var(--n-50)) top left / 2px 24px,linear-gradient(var(--n-50),var(--n-50)) top right / 24px 2px,linear-gradient(var(--n-50),var(--n-50)) top right / 2px 24px,linear-gradient(var(--n-50),var(--n-50)) bottom left / 24px 2px,linear-gradient(var(--n-50),var(--n-50)) bottom left / 2px 24px,linear-gradient(var(--n-50),var(--n-50)) bottom right / 24px 2px,linear-gradient(var(--n-50),var(--n-50)) bottom right / 2px 24px;background-repeat:no-repeat;opacity:.85}.hidden{display:none}.qr-panel{display:grid;gap:var(--sp-4);justify-items:center;text-align:center}.qr-frame{background:var(--n-0);padding:var(--sp-4);border-radius:var(--r-lg);border:1px solid var(--line);box-shadow:var(--e2)}.cc-page{min-height:100dvh;display:grid;place-items:center;padding:var(--sp-4)}.cc-card{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--line-subtle);border-radius:var(--r-lg);box-shadow:var(--e3);overflow:hidden}.cc-header{padding:var(--sp-5);display:grid;gap:var(--sp-1);background:var(--surface-ink);color:var(--ink-on-dark)}.cc-header .cc-store{display:flex;align-items:center;gap:var(--sp-2);font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);letter-spacing:var(--tracking-tight)}.cc-header img{width:28px;height:28px;border-radius:var(--r-full);object-fit:cover}.cc-header .cc-reward{font-size:var(--text-sm);opacity:.85}.cc-body{padding:var(--sp-5);display:grid;gap:var(--sp-4);justify-items:center}.cc-progress-text{font-size:var(--text-sm);color:var(--ink-muted)}.wallet-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);width:100%;min-height:var(--control-lg);border-radius:var(--r-md);background:var(--n-950);color:var(--n-50);font-weight:600;text-decoration:none}.cc-fallback{display:grid;gap:var(--sp-3);justify-items:center;text-align:center}.cc-hint{font-size:var(--text-sm);color:var(--ink-muted);max-width:300px}.lost-page{display:grid;gap:var(--sp-4);justify-items:center;text-align:center;padding:var(--sp-16) var(--sp-4)}.manage{width:100%;max-width:1100px;margin:0 auto;padding:var(--sp-4) var(--sp-4) var(--sp-12);display:grid;gap:var(--sp-5);align-content:start}@media(min-width:640px){.manage{padding:var(--sp-6) var(--sp-6) var(--sp-16)}}.manage-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.manage-section{display:grid;gap:var(--sp-4)}.manage-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-5);align-items:start}@media(min-width:900px){.manage-grid{grid-template-columns:minmax(0,1fr) minmax(320px,400px)}.manage-grid>.manage-list-col{grid-column:1;grid-row:1}.manage-grid>.manage-form-col{grid-column:2;grid-row:1}}.manage-list-col{display:grid;gap:var(--sp-3);align-content:start;min-width:0}.manage-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-3)}.manage-item{display:grid;gap:var(--sp-1);min-width:0}.manage-item-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);min-width:0}.manage-item-name{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.manage-item-sub{font-size:var(--text-sm);color:var(--ink-muted);overflow-wrap:anywhere}.manage-item-controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2)}.manage-item-controls select{width:auto;flex:0 1 auto;min-width:0}.manage-edit{margin-top:var(--sp-3);padding-top:var(--sp-4);border-top:2px dashed var(--line)}.manage-edit h3{margin-bottom:var(--sp-4)}.manage-form{min-width:0}.manage-form-head{display:grid;gap:var(--sp-1);margin-bottom:var(--sp-5)}.manage-form-lead{font-size:var(--text-sm);color:var(--ink-muted)}.form-actions{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-6)}.form-actions .note{flex:1 1 100%}.manage-form-solo{max-width:560px}.tier-editor{margin-top:var(--sp-5);padding-top:var(--sp-4);border-top:2px dashed var(--line);display:grid;gap:var(--sp-2)}.tier-editor-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}.tier-row{display:grid;grid-template-columns:minmax(72px,96px) minmax(0,1fr) var(--control-md);gap:var(--sp-2);align-items:center}.color-field{display:flex;align-items:center;gap:var(--sp-2)}.color-field input[type=color]{width:var(--control-md);height:var(--control-md);flex:none;padding:var(--sp-1);border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface);cursor:pointer}.color-field input[type=color]:focus-visible{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}.color-field input[type=color]::-webkit-color-swatch-wrapper{padding:0}.color-field input[type=color]::-webkit-color-swatch{border:0;border-radius:var(--r-sm)}.color-field input[type=color]::-moz-color-swatch{border:0;border-radius:var(--r-sm)}.color-field .color-hex{flex:1;min-width:0;font-family:var(--font-mono)}.manage>*{min-width:0}.pd-app{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-nav);display:flex;flex-direction:column;background:var(--canvas);overflow:hidden}.pd-editor{display:flex;flex-direction:column;flex:1;min-height:0}.pd-topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-height:60px;padding:var(--sp-2) var(--sp-4);background:var(--surface);border-bottom:1px solid var(--line-subtle);flex:none}.pd-topbar-left,.pd-topbar-right{display:flex;align-items:center;gap:var(--sp-2);min-width:0}.pd-topbar-title{font-family:var(--font-display);font-weight:700;font-size:var(--text-base);letter-spacing:var(--tracking-tight);white-space:nowrap}.pd-topbar-divider{width:1px;height:24px;background:var(--line);flex:none}.pd-store-chip{display:flex;align-items:center;gap:var(--sp-2);min-width:0}.pd-store-chip-name{font-size:var(--text-sm);font-weight:600;color:var(--ink-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}.pd-avatar{width:28px;height:28px;flex:none;border-radius:var(--r-full);display:inline-flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);font-size:var(--text-xs);font-weight:700}.pd-btn-active{background:var(--surface-sunken);color:var(--ink)}.pd-btn-test-on{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn)}.pd-status-chip{display:inline-flex;align-items:center;padding:2px var(--sp-2);border-radius:var(--r-full);border:1px solid var(--line);background:var(--surface-sunken);color:var(--ink-secondary);font-size:var(--text-xs);font-weight:600;letter-spacing:var(--tracking-wide);white-space:nowrap}.pd-status-chip-unsaved{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn)}.pd-status-chip-published{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok)}.pd-status-chip-new{background:var(--info-bg);border-color:var(--info-line);color:var(--info)}.pd-history-btns{display:flex;gap:2px}.pd-topbar-menu{position:relative}.pd-menu{position:absolute;top:calc(100% + var(--sp-1));right:0;z-index:var(--z-overlay);min-width:230px;padding:var(--sp-1);background:var(--surface-raised);border:1px solid var(--line-subtle);border-radius:var(--r-md);box-shadow:var(--e3);display:grid}.pd-menu [role=menuitem]{display:flex;align-items:center;gap:var(--sp-2);width:100%;min-height:var(--control-sm);padding:var(--sp-2) var(--sp-3);border:0;border-radius:var(--r-sm);background:none;color:var(--ink);font-size:var(--text-sm);font-weight:500;text-align:left;cursor:pointer}.pd-menu [role=menuitem]:disabled{color:var(--ink-disabled);cursor:not-allowed}@media(hover:hover){.pd-menu [role=menuitem]:hover:not(:disabled){background:var(--surface-sunken)}}.pd-menu-danger{color:var(--danger)!important}.pd-menu-sep{height:1px;margin:var(--sp-1) var(--sp-2);background:var(--line-subtle)}@media(min-width:900px){.pd-menu-item-narrow{display:none!important}}@media(max-width:899px){.pd-wide{display:none!important}}.pd-page{flex:1;min-height:0;overflow-y:auto;width:100%;padding:var(--sp-8) var(--sp-5) var(--sp-12)}.pd-page>*{max-width:1080px;margin-left:auto;margin-right:auto}.pd-eyebrow{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--accent);margin-bottom:var(--sp-2)}.pd-h1{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);margin-bottom:var(--sp-2)}.pd-subtitle{font-size:var(--text-base);color:var(--ink-secondary);margin-bottom:var(--sp-6);max-width:560px}.pd-hint{font-size:var(--text-sm);color:var(--ink-muted);margin:var(--sp-2) 0}.pd-home-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:var(--sp-4)}.pd-pass-card{display:flex;flex-direction:column;padding:0;border:1px solid var(--line-subtle);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--e1);overflow:hidden;cursor:pointer;text-align:left;transition:box-shadow var(--t-fast) var(--ease-standard),transform var(--t-fast) var(--ease-standard)}.pd-pass-card:focus-visible{outline:none;box-shadow:var(--focus-ring)}@media(hover:hover){.pd-pass-card:hover{box-shadow:var(--e2);transform:translateY(-1px)}}.pd-pass-card-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-3);min-height:96px;padding:var(--sp-4);color:var(--surface-raised)}.pd-pass-card-logo-text{font-weight:700;letter-spacing:var(--tracking-wide);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pd-pass-card-balance{font-size:var(--text-sm);font-variant-numeric:tabular-nums;opacity:.85;flex:none}.pd-pass-card-body{padding:var(--sp-3) var(--sp-4) var(--sp-4);display:grid;gap:var(--sp-1)}.pd-pass-card-row1{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);font-weight:600}.pd-pass-card-row2{font-size:var(--text-sm);color:var(--ink-muted)}.pd-new-pass-tile{align-items:center;justify-content:center;gap:var(--sp-2);min-height:168px;border-style:dashed;border-color:var(--line-strong);background:none;box-shadow:none;color:var(--ink-secondary);font-weight:600}.pd-new-pass-icon{width:40px;height:40px;border-radius:var(--r-full);display:inline-flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent)}.pd-gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--sp-4)}.pd-template-card{display:flex;flex-direction:column;padding:0;border:1px solid var(--line-subtle);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--e1);overflow:hidden;cursor:pointer;text-align:left;transition:box-shadow var(--t-fast) var(--ease-standard),transform var(--t-fast) var(--ease-standard)}.pd-template-card:focus-visible{outline:none;box-shadow:var(--focus-ring)}.pd-template-card:disabled{opacity:.6;cursor:wait}@media(hover:hover){.pd-template-card:hover:not(:disabled){box-shadow:var(--e2);transform:translateY(-1px)}}.pd-template-preview{display:flex;flex-direction:column;justify-content:space-between;gap:var(--sp-3);min-height:150px;padding:var(--sp-4);color:var(--surface-raised)}.pd-template-preview-top{display:flex;align-items:center;gap:var(--sp-2)}.pd-template-chip{width:26px;height:26px;border-radius:var(--r-full);display:inline-flex;align-items:center;justify-content:center;background:var(--surface-raised);font-size:var(--text-xs);font-weight:700;flex:none}.pd-template-brand{font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-caps)}.pd-template-stat-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--tracking-caps);opacity:.75}.pd-template-stat{font-size:var(--text-md);font-weight:700;font-variant-numeric:tabular-nums}.pd-template-dots{display:flex;gap:var(--sp-1)}.pd-template-dots img{width:20px;height:20px;object-fit:contain}.pd-template-dots img.dim{opacity:.35}.pd-template-body{padding:var(--sp-3) var(--sp-4) var(--sp-4);display:grid;gap:2px}.pd-template-name{display:flex;align-items:center;gap:var(--sp-2);font-weight:600}.pd-template-desc{font-size:var(--text-sm);color:var(--ink-muted)}.pd-template-blank{align-items:center;justify-content:center;gap:var(--sp-2);min-height:150px;border-style:dashed;border-color:var(--line-strong);background:none;box-shadow:none;color:var(--ink-secondary);font-weight:600}.pd-template-blank-icon{width:44px;height:44px;border-radius:var(--r-full);display:inline-flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent)}.pd-editor-error{margin:var(--sp-3) var(--sp-4) 0}.pd-editor-body{display:flex;flex:1;min-height:0}.pd-left-panel{width:380px;flex:none;min-height:0;overflow-y:auto;padding:var(--sp-5);background:var(--surface);border-right:1px solid var(--line-subtle)}.pd-stage-wrap{position:relative;flex:1;min-width:0;min-height:0;overflow-y:auto;display:flex;flex-direction:column;align-items:center;gap:var(--sp-4);padding:var(--sp-6) var(--sp-4);background:var(--canvas);transition:background-color var(--t-base) var(--ease-standard)}.pd-stage-wrap.dark-backdrop{background:var(--n-900)}.pd-stage-wrap.dark-backdrop .pd-stage-watermark{color:var(--ink-on-dark);opacity:.5}.pd-screen-gate{display:grid;gap:var(--sp-3);max-width:480px;margin-top:var(--sp-4)}.pd-screen-gate-title{font-weight:700;font-size:var(--text-md)}.pd-screen-gate-actions{flex-wrap:wrap;margin-top:var(--sp-2)}.pd-name-row{margin-bottom:var(--sp-5)}.pd-name-row-top{display:flex;align-items:center;gap:var(--sp-2)}.pd-name-input{border:0;background:none;padding:0;min-height:var(--control-sm);font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;letter-spacing:var(--tracking-tight);color:var(--ink);border-radius:var(--r-sm);flex:1;min-width:0}.pd-name-input:focus-visible{outline:none;box-shadow:var(--focus-ring)}.pd-pill{flex:none;padding:2px var(--sp-2);border-radius:var(--r-full);background:var(--accent-soft);color:var(--accent);font-size:var(--text-xs);font-weight:600}.pd-name-row-subtitle{font-size:var(--text-sm);color:var(--ink-muted)}.pd-section{padding:var(--sp-4) 0;border-top:1px solid var(--line-subtle)}.pd-section-last{padding-bottom:var(--sp-8)}.pd-section-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);font-family:var(--font-display);font-size:var(--text-base);font-weight:700;letter-spacing:var(--tracking-tight);margin-bottom:var(--sp-3)}.pd-section-head>svg,.pd-section-head-title>svg{color:var(--accent);flex:none}.pd-section-head-title{display:inline-flex;align-items:center;gap:var(--sp-2)}.pd-section-hint{font-size:var(--text-sm);color:var(--ink-muted);margin:calc(-1 * var(--sp-2)) 0 var(--sp-3)}@keyframes pd-flash{0%{background:var(--accent-soft)}to{background:transparent}}.pd-section-flash{animation:pd-flash 1.2s var(--ease-standard);border-radius:var(--r-md)}.pd-subhead{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--ink-muted);margin:var(--sp-4) 0 var(--sp-2)}.pd-field-label{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm);font-weight:600;color:var(--ink-secondary)}.pd-label-spaced{display:block;margin-top:var(--sp-4);margin-bottom:var(--sp-1)}.pd-input{margin-bottom:var(--sp-2)}.pd-input-sm{min-height:var(--control-sm)!important;padding-top:var(--sp-1)!important;padding-bottom:var(--sp-1)!important}.pd-color-list{display:grid;gap:var(--sp-2)}.pd-color-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px solid var(--line-subtle);border-radius:var(--r-md);background:var(--surface)}.pd-color-row-label{font-size:var(--text-sm);font-weight:600}.pd-color-row-hex{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-muted)}.pd-color-swatch{position:relative;width:var(--control-md);height:var(--control-sm);border-radius:var(--r-sm);border:1px solid var(--line);box-shadow:inset 0 0 0 2px var(--surface-raised);cursor:pointer;flex:none;overflow:hidden;margin:0}.pd-color-swatch input[type=color]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.pd-color-swatch:focus-within{box-shadow:var(--focus-ring)}.pd-contrast-chip{display:inline-flex;align-items:center;gap:var(--sp-1);margin-top:var(--sp-2);padding:2px var(--sp-2);border-radius:var(--r-full);border:1px solid var(--line);background:var(--surface-sunken);color:var(--ink-secondary);font-size:var(--text-xs);font-weight:600;font-variant-numeric:tabular-nums}.pd-contrast-chip.good{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok)}.pd-contrast-chip.ok{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn)}.pd-contrast-chip.bad{background:var(--danger-bg);border-color:var(--danger-line);color:var(--danger)}.pd-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin:var(--sp-3) 0 0}.pd-toggle-label{font-size:var(--text-sm);font-weight:600;color:var(--ink-secondary)}.pd-toggle-track{position:relative;width:40px;height:24px;flex:none;border:0;border-radius:var(--r-full);background:var(--line-strong);cursor:pointer;padding:0;transition:background-color var(--t-fast) var(--ease-standard)}.pd-toggle-track:focus-visible{outline:none;box-shadow:var(--focus-ring)}.pd-toggle-track.on{background:var(--accent)}.pd-toggle-knob{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:var(--r-full);background:var(--surface-raised);box-shadow:var(--e1);transition:transform var(--t-fast) var(--ease-standard)}.pd-toggle-track.on .pd-toggle-knob{transform:translate(16px)}.pd-palette-grid{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.pd-palette-swatch{width:34px;height:34px;border-radius:var(--r-full);border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.pd-palette-swatch:focus-visible{outline:none;box-shadow:var(--focus-ring)}.pd-palette-dot{width:10px;height:10px;border-radius:var(--r-full)}.pd-palette-custom{position:relative;display:inline-flex}.pd-palette-delete{position:absolute;top:-4px;right:-4px;width:16px;height:16px;border-radius:var(--r-full);border:1px solid var(--line);background:var(--surface-raised);color:var(--ink-secondary);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.pd-palette-name-row{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2)}.pd-save-palette-btn{margin-top:var(--sp-2);border:0;background:none;padding:var(--sp-1) 0;color:var(--accent);font-size:var(--text-sm);font-weight:600;cursor:pointer;border-radius:var(--r-sm)}@media(hover:hover){.pd-save-palette-btn:hover{color:var(--accent-strong);text-decoration:underline;text-underline-offset:3px}}.pd-branding-row{display:flex;gap:var(--sp-3);align-items:flex-start}.pd-branding-slot{display:grid;gap:var(--sp-1);justify-items:center}.pd-branding-slot-flex{flex:1;min-width:0}.pd-branding-caption{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-muted)}.pd-drop-slot{position:relative;border:1.5px dashed var(--line-strong);border-radius:var(--r-md);background:var(--surface-sunken);display:flex;align-items:center;justify-content:center;overflow:hidden;transition:border-color var(--t-fast) var(--ease-standard)}.pd-drop-slot-square{width:72px;height:72px}.pd-drop-slot-flexible{width:100%;min-width:96px;height:72px}.pd-drop-slot.drag-over{border-color:var(--accent);background:var(--accent-softer)}.pd-drop-slot-image{width:100%;height:100%;object-fit:contain}.pd-drop-slot-placeholder{font-size:var(--text-xs);color:var(--ink-faint)}.pd-drop-slot-hit{position:absolute;top:0;right:0;bottom:0;left:0;cursor:pointer;margin:0}.pd-drop-slot-hit:focus-within{box-shadow:var(--focus-ring);border-radius:var(--r-md)}.pd-drop-slot-remove{position:absolute;top:2px;right:2px;width:18px;height:18px;border:0;border-radius:var(--r-full);background:var(--surface-ink);color:var(--ink-on-dark);font-size:var(--text-xs);line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.pd-drop-slot-error{position:absolute;bottom:2px;left:4px;right:4px;font-size:var(--text-xs);color:var(--danger);background:var(--surface-raised);border-radius:var(--r-sm);text-align:center}.pd-icon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:var(--sp-2)}.pd-icon-btn{height:44px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:var(--sp-1)}.pd-icon-btn.active{border-color:var(--accent);background:var(--accent-softer);box-shadow:0 0 0 1px var(--accent)}.pd-icon-img{width:28px;height:28px;object-fit:contain}.pd-icon-more{margin-top:var(--sp-2)}.pd-icon-more summary{font-size:var(--text-sm);font-weight:600;color:var(--accent);cursor:pointer;margin-bottom:var(--sp-2)}.pd-custom-artwork-row{display:flex;gap:var(--sp-3);align-items:center;margin-top:var(--sp-3)}.pd-custom-artwork-slot{flex:none}.pd-custom-artwork-slot label{display:flex;align-items:center;justify-content:center;width:72px;height:44px;border:1.5px dashed var(--line-strong);border-radius:var(--r-md);background:var(--surface-sunken);font-size:var(--text-xs);color:var(--ink-muted);cursor:pointer;margin:0}.pd-custom-artwork-slot label:focus-within{box-shadow:var(--focus-ring)}.pd-arrangement-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2)}.pd-mode-grid{grid-template-columns:repeat(2,1fr)}.pd-arrangement-btn{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:var(--control-md);padding:var(--sp-1) var(--sp-2);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink-secondary);font-size:var(--text-sm);font-weight:600;cursor:pointer}.pd-arrangement-btn.active{border-color:var(--accent);background:var(--accent-softer);color:var(--accent)}.pd-arrangement-glyph{font-size:var(--text-xs);letter-spacing:2px;color:var(--ink-faint)}.pd-arrangement-btn.active .pd-arrangement-glyph{color:var(--accent)}.pd-slider-block{margin-top:var(--sp-3);display:grid;gap:var(--sp-1)}.pd-slider-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-top:var(--sp-2)}.pd-slider-value{font-size:var(--text-sm);font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink)}.pd-slider{width:100%;accent-color:var(--accent);min-height:24px}.pd-field-group{margin-bottom:var(--sp-4)}.pd-field-group-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);margin-bottom:var(--sp-2)}.pd-field-group-count{font-size:var(--text-xs);font-weight:600;color:var(--ink-faint);font-variant-numeric:tabular-nums}.pd-add-btn{display:inline-flex;align-items:center;gap:var(--sp-1);min-height:28px;padding:2px var(--sp-2);border:1px solid var(--line);border-radius:var(--r-full);background:var(--surface);color:var(--ink-secondary);font-size:var(--text-xs);font-weight:600;cursor:pointer;margin-bottom:0}.pd-add-btn:disabled{opacity:.45;cursor:not-allowed}@media(hover:hover){.pd-add-btn:hover:not(:disabled){border-color:var(--line-strong);background:var(--surface-sunken);color:var(--ink)}}.pd-add-btn:focus-within{box-shadow:var(--focus-ring)}.pd-field-list{display:grid;gap:var(--sp-2)}.pd-field-card{border:1px solid var(--line-subtle);border-radius:var(--r-md);background:var(--surface);padding:var(--sp-2) var(--sp-3) var(--sp-3)}.pd-field-card.selected{border-color:var(--accent)}.pd-field-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--ink-muted);margin-bottom:var(--sp-2)}.pd-field-card-actions{display:inline-flex;align-items:center;gap:2px}.pd-field-move,.pd-field-remove{width:28px;height:28px;border:0;border-radius:var(--r-sm);background:none;color:var(--ink-muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.pd-field-move:disabled{color:var(--ink-disabled);cursor:not-allowed}@media(hover:hover){.pd-field-move:hover:not(:disabled),.pd-field-remove:hover{background:var(--surface-sunken);color:var(--ink)}.pd-field-remove:hover{color:var(--danger)}}.pd-field-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}.pd-field-grid-wide{grid-column:1 / -1}.pd-relevance-row{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2)}.pd-positions{margin-top:var(--sp-3)}.pd-positions-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}.pd-positions-grid{display:grid;gap:var(--sp-1);margin-top:var(--sp-2)}.pd-positions-row{display:grid;grid-template-columns:28px repeat(3,1fr);gap:var(--sp-2);align-items:center}.pd-positions-header{font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--ink-muted)}.pd-positions-index{font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-muted);text-align:center}.pd-mini-slot{position:relative;display:inline-flex;width:100%}.pd-mini-slot label,.pd-override-slot label{display:flex;align-items:center;justify-content:center;width:100%;height:36px;border:1px dashed var(--line-strong);border-radius:var(--r-sm);background:var(--surface-sunken);cursor:pointer;overflow:hidden;margin:0}.pd-mini-slot label:focus-within,.pd-override-slot label:focus-within{box-shadow:var(--focus-ring)}.pd-mini-slot img,.pd-override-slot img{width:100%;height:100%;object-fit:cover}.pd-mini-slot-empty{color:var(--ink-faint);font-size:var(--text-sm)}.pd-mini-slot button,.pd-override-slot>button{position:absolute;top:-6px;right:-6px;width:16px;height:16px;border:0;border-radius:var(--r-full);background:var(--surface-ink);color:var(--ink-on-dark);font-size:9px;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.pd-overrides-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:var(--sp-2)}.pd-override-slot{position:relative;display:grid;gap:2px;justify-items:center}.pd-override-slot label{aspect-ratio:375 / 144;height:auto}.pd-override-slot-count{font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--ink-muted)}.pd-bulk-results{margin:var(--sp-2) 0 0;padding:0 0 0 var(--sp-4);font-size:var(--text-xs);display:grid;gap:2px}.pd-bulk-results .ok{color:var(--ok)}.pd-bulk-results .rejected{color:var(--danger)}.pd-barcode-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}.pd-barcode-type-btn{display:grid;gap:2px;justify-items:center;padding:var(--sp-2);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink-secondary);font-size:var(--text-sm);font-weight:600;cursor:pointer}.pd-barcode-type-btn.active{border-color:var(--accent);background:var(--accent-softer);color:var(--accent)}.pd-barcode-type-icon{font-size:var(--text-md);line-height:1}.pd-barcode-type-pk{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pd-stage-toolbar{display:flex;align-items:center;gap:var(--sp-2);align-self:center}.pd-stage{display:grid;gap:var(--sp-3);justify-items:center}.pd-stage-watermark{font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--ink-faint)}.pd-phone{position:relative;width:320px;max-width:100%;border:10px solid var(--n-950);border-radius:44px;background:var(--n-950);box-shadow:var(--e3)}.pd-phone-notch{position:absolute;top:8px;left:50%;transform:translate(-50%);width:96px;height:22px;border-radius:var(--r-full);background:var(--n-950);z-index:1}.pd-phone-screen{border-radius:34px;background:var(--n-100);min-height:560px;max-height:620px;overflow-y:auto;padding:44px var(--sp-3) var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3)}.pd-phone-heading{text-align:center;font-size:var(--text-sm);font-weight:600;color:var(--ink-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pd-pass{position:relative;border-radius:var(--r-md);padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-3);min-height:440px;box-shadow:var(--e2);overflow:hidden}.pd-pass-top-row{display:flex;align-items:center;gap:var(--sp-2);min-height:34px}.pd-pass-logo{width:30px;height:30px;border-radius:var(--r-sm);overflow:hidden;flex:none;background:color-mix(in srgb,var(--surface-raised) 18%,transparent)}.pd-pass-logo img{width:100%;height:100%;object-fit:contain}.pd-pass-logo-text{font-weight:700;letter-spacing:var(--tracking-wide);font-size:var(--text-sm);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pd-pass-header-fields{margin-left:auto;display:flex;gap:var(--sp-3);text-align:right}.pd-pass-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:var(--tracking-caps)}.pd-pass-header-field-value{font-size:var(--text-sm);font-weight:600;font-variant-numeric:tabular-nums}.pd-strip-band{position:relative;margin:0 calc(-1 * var(--sp-3));aspect-ratio:375 / 144;overflow:hidden;flex:none}.pd-strip-band-background{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.pd-stamp-cell{position:absolute;object-fit:contain}.pd-stamp-cell.unfilled{opacity:.35}.pd-strip-primary{position:absolute;left:var(--sp-4);top:50%;transform:translateY(-50%);display:grid;gap:2px}.pd-strip-primary-value{font-size:var(--text-xl);font-weight:700;font-variant-numeric:tabular-nums;line-height:var(--leading-tight)}.pd-pass-fields{display:flex;gap:var(--sp-4);min-height:34px;align-items:flex-start}.pd-pass-value{font-size:var(--text-sm);font-weight:600}.pd-pass-spacer{flex:1}.pd-zone-empty-hint{font-size:var(--text-xs);font-weight:600;opacity:.8}.pd-pass-barcode-plate{align-self:center;background:var(--surface-raised);border-radius:var(--r-sm);padding:var(--sp-2);display:grid;gap:var(--sp-1);justify-items:center;min-width:120px;color:var(--n-950)}.pd-pass-barcode-alt{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--n-950);font-variant-numeric:tabular-nums}.pd-barcode-code128{width:150px;height:44px}.pd-barcode-qr{display:grid;grid-template-columns:repeat(9,8px);grid-auto-rows:8px}.pd-barcode-qr .on{background:currentColor}.pd-barcode-pdf417,.pd-barcode-bars{display:flex;width:150px;height:40px}.pd-barcode-pdf417 .on,.pd-barcode-bars .on{background:currentColor}.pd-zone{cursor:pointer;border-radius:var(--r-sm)}.pd-zone:focus-visible{outline:none;box-shadow:var(--focus-ring)}.pd-zone.guides-on{outline:1.5px dashed var(--info);outline-offset:2px}.pd-zone-label{position:absolute;top:-8px;left:var(--sp-2);z-index:2;padding:1px var(--sp-2);border-radius:var(--r-full);background:var(--info);color:var(--surface-raised);font-size:10px;font-weight:700;letter-spacing:var(--tracking-wide);white-space:nowrap;pointer-events:none}.pd-pass-back{background:var(--surface);border-radius:var(--r-md);box-shadow:var(--e2);overflow:hidden}.pd-pass-back-header{padding:var(--sp-4);border-bottom:1px solid var(--line-subtle)}.pd-pass-back-title{font-weight:700}.pd-pass-back-subtitle{font-size:var(--text-sm);color:var(--ink-muted)}.pd-pass-back-rows{position:relative;display:grid}.pd-pass-back-row{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line-subtle);display:grid;gap:2px}.pd-pass-back-row:last-child{border-bottom:0}.pd-pass-back-row-label{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--ink-muted)}.pd-pass-back-row-value{font-size:var(--text-sm);overflow-wrap:anywhere}.pd-pass-back-row-value.muted{color:var(--ink-muted);font-style:italic}.pd-test-ribbon{position:absolute;top:14px;right:-34px;transform:rotate(45deg);z-index:2;padding:2px 40px;background:var(--warn);color:var(--surface-raised);font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-caps);pointer-events:none}.pd-test-notice{max-width:320px;padding:var(--sp-2) var(--sp-3);border:1px solid var(--warn-line);border-radius:var(--r-md);background:var(--warn-bg);color:var(--warn);font-size:var(--text-sm)}.pd-test-result{padding:var(--sp-2) var(--sp-3);border:1px solid var(--ok-line);border-radius:var(--r-md);background:var(--ok-bg);color:var(--ok);font-size:var(--text-sm);font-weight:500}.pd-test-result a{color:inherit;font-weight:700}.pd-json-drawer{width:min(560px,100%);background:var(--surface);border:1px solid var(--line-subtle);border-radius:var(--r-lg);box-shadow:var(--e2);overflow:hidden}.pd-json-drawer-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--line-subtle)}.pd-json-drawer-title{font-family:var(--font-mono);font-weight:700;font-size:var(--text-sm)}.pd-json-drawer-badge{margin-left:var(--sp-2);padding:1px var(--sp-2);border-radius:var(--r-full);background:var(--surface-sunken);color:var(--ink-muted);font-size:var(--text-xs);font-weight:600}.pd-json-drawer-actions{display:flex;align-items:center;gap:var(--sp-1);flex-wrap:wrap}.pd-json-copy-btn{min-height:28px;padding:2px var(--sp-2);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);color:var(--ink-secondary);font-size:var(--text-xs);font-weight:600;cursor:pointer}@media(hover:hover){.pd-json-copy-btn:hover{background:var(--surface-sunken);color:var(--ink)}}.pd-json-advanced-active{border-color:var(--accent);background:var(--accent-softer);color:var(--accent)}.pd-json-close-btn{width:28px;height:28px;border:0;border-radius:var(--r-full);background:var(--surface-sunken);color:var(--ink-secondary);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.pd-json-drawer-body{margin:0;padding:var(--sp-3);max-height:320px;overflow:auto;font-family:var(--font-mono);font-size:var(--text-xs);line-height:1.6;color:var(--ink);background:var(--surface-sunken)}.pd-json-drawer-textarea{width:100%;min-height:280px;border:0;border-radius:0;background:var(--surface-sunken);font-family:var(--font-mono);font-size:var(--text-base);line-height:1.6;resize:vertical}.pd-json-parse-error{padding:var(--sp-2) var(--sp-3);background:var(--danger-bg);color:var(--danger);font-size:var(--text-sm);font-weight:500}.pd-json-drawer-footer{padding:var(--sp-2) var(--sp-3);border-top:1px solid var(--line-subtle);font-size:var(--text-xs);color:var(--ink-muted)}.pd-copy-list{display:grid;gap:var(--sp-2)}.pd-copy-item{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-height:var(--control-md);padding:var(--sp-2) var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);font-size:var(--text-base);font-weight:600;color:var(--ink);cursor:pointer;text-align:left}.pd-copy-item:disabled{opacity:.6;cursor:wait}@media(hover:hover){.pd-copy-item:hover:not(:disabled){border-color:var(--line-strong);background:var(--n-50)}}.pd-copy-item-hint{font-size:var(--text-sm);font-weight:600;color:var(--accent);flex:none}.pd-lint-title{font-weight:700;margin-bottom:var(--sp-1)}.pd-lint-list{margin:0;padding-left:var(--sp-5);display:grid;gap:2px}.pd-lint-warn{font-weight:600}.pd-lint-info{color:var(--ink-secondary)}.pd-studio{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:flex;flex-direction:column;background:var(--canvas)}.pd-studio-head{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--surface);border-bottom:1px solid var(--line-subtle);flex:none}.pd-studio-title{font-family:var(--font-display);font-weight:700;letter-spacing:var(--tracking-tight)}.pd-studio-subtitle{font-size:var(--text-sm);color:var(--ink-muted);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pd-studio-body{display:flex;flex:1;min-height:0}.pd-studio-timeline{width:128px;flex:none;overflow-y:auto;padding:var(--sp-3);background:var(--surface);border-right:1px solid var(--line-subtle);display:grid;gap:var(--sp-2);align-content:start}.pd-studio-thumb{display:grid;gap:2px;padding:var(--sp-1);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);cursor:pointer}.pd-studio-thumb.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.pd-studio-thumb img{width:100%;aspect-ratio:375 / 144;object-fit:cover;border-radius:2px}.pd-studio-thumb-empty{display:block;width:100%;aspect-ratio:375 / 144;border-radius:2px;background:var(--surface-sunken)}.pd-studio-thumb-label{display:inline-flex;align-items:center;gap:var(--sp-1);font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--ink-muted)}.pd-studio-thumb-badge{padding:0 var(--sp-1);border-radius:var(--r-full);background:var(--accent-soft);color:var(--accent);font-size:10px;font-weight:700}.pd-studio-stage{flex:1;min-width:0;overflow:auto;padding:var(--sp-6);display:flex;flex-direction:column;align-items:center;gap:var(--sp-4)}.pd-studio-canvas{position:relative;border-radius:var(--r-sm);box-shadow:var(--e2);overflow:hidden;flex:none;touch-action:none}.pd-studio-canvas-bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;pointer-events:none}.pd-studio-stamp{position:absolute;cursor:grab}.pd-studio-stamp.unfilled{opacity:.35}.pd-studio-text{position:absolute;cursor:grab;white-space:nowrap;border-radius:2px}.pd-studio-text.selected{outline:1.5px dashed var(--info);outline-offset:2px}.pd-studio-exact{display:grid;gap:var(--sp-1);justify-items:start}.pd-studio-exact img{width:375px;max-width:100%;border-radius:var(--r-sm);box-shadow:var(--e1)}.pd-studio-props{width:280px;flex:none;overflow-y:auto;padding:var(--sp-4);background:var(--surface);border-left:1px solid var(--line-subtle)}.pd-studio-props-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}.pd-studio-row{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-2)}.pd-studio-row input[type=color]{width:36px;height:36px;padding:2px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);cursor:pointer}.pd-studio-row input[type=number],.pd-studio-row select{width:auto;flex:1;min-width:72px}.card-preview-page{position:static;overflow:visible;padding:0;max-width:100%}.card-preview-page>*{max-width:100%}.card-preview-toolbar{display:flex;align-items:flex-end;gap:var(--sp-3);flex-wrap:wrap;margin:var(--sp-4) 0}.card-preview-program-field{flex:1 1 220px;min-width:0;margin-bottom:0}.card-preview-publish-btn{margin-left:auto}.card-preview-stamp-slider{max-width:420px;margin-bottom:var(--sp-4)}.card-preview-body{display:grid;gap:var(--sp-4)}.card-preview-body .pd-section{border:1px solid var(--line-subtle);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--e1);padding:var(--sp-4)}.card-visual-stage{display:flex;justify-content:center;padding:var(--sp-4);background:var(--surface-sunken);border-radius:var(--r-md)}.card-preview-image-grid{display:grid;gap:var(--sp-4)}.card-preview-image-group-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);font-weight:600;margin-bottom:var(--sp-2)}.card-preview-image-variants{display:flex;flex-wrap:wrap;gap:var(--sp-3)}.card-preview-image-tile{display:grid;gap:var(--sp-1);justify-items:center;padding:var(--sp-2);border:1px solid var(--line-subtle);border-radius:var(--r-md);background:var(--surface-sunken);max-width:100%}.card-preview-image-tile img{max-width:min(260px,100%);max-height:96px;object-fit:contain}.card-preview-image-filename{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-muted);overflow-wrap:anywhere}.card-preview-json{margin:0;padding:var(--sp-3);border-radius:var(--r-md);background:var(--surface-sunken);font-family:var(--font-mono);font-size:var(--text-xs);line-height:1.6;overflow-x:auto;max-width:100%}.card-preview-json-editor{width:100%;min-height:320px;border:1px solid var(--line-strong);font-size:var(--text-base);margin-bottom:var(--sp-2)}.card-preview-manifest-table{width:100%;border-collapse:collapse;font-size:var(--text-sm);table-layout:fixed}.card-preview-manifest-table td{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--line-subtle);vertical-align:top;overflow-wrap:anywhere}.card-preview-manifest-table tr:last-child td{border-bottom:0}.card-preview-manifest-hash{font-size:var(--text-xs);color:var(--ink-muted);word-break:break-all}.card-visual{width:340px;max-width:100%;border-radius:var(--r-md);padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-3);box-shadow:var(--e2);overflow:hidden}.card-visual-top{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);min-height:32px}.card-visual-logo-slot{display:flex;align-items:center;gap:var(--sp-2);min-width:0}.card-visual-logo{height:28px;width:auto;max-width:96px;object-fit:contain}.card-visual-logo-text{font-weight:700;font-size:var(--text-sm);letter-spacing:var(--tracking-wide);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-visual-header-fields{display:flex;gap:var(--sp-3)}.card-visual-field{display:grid;gap:1px;min-width:0}.card-visual-field--right{text-align:right}.card-visual-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:var(--tracking-caps)}.card-visual-value{font-size:var(--text-sm);font-weight:600;font-variant-numeric:tabular-nums}.card-visual-strip{position:relative;margin:0 calc(-1 * var(--sp-3));aspect-ratio:375 / 144;overflow:hidden}.card-visual-strip-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.card-visual-strip-primary{position:absolute;left:var(--sp-4);top:50%;transform:translateY(-50%);display:grid;gap:2px}.card-visual-primary-value{font-size:var(--text-xl);font-weight:700;font-variant-numeric:tabular-nums;line-height:var(--leading-tight)}.card-visual-fields-row{display:flex;gap:var(--sp-4)}.card-visual-barcode{align-self:center;background:var(--surface-raised);border-radius:var(--r-sm);padding:var(--sp-2);display:grid;gap:var(--sp-1);justify-items:center;color:var(--n-950)}.card-visual-barcode-alt{font-family:var(--font-mono);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.card-visual-barcode-fallback{font-family:var(--font-mono);font-size:var(--text-xs);overflow-wrap:anywhere}@media(max-width:899px){.pd-editor{overflow-y:auto}.pd-editor-body{flex-direction:column-reverse;flex:none;min-height:0}.pd-left-panel{width:100%;border-right:0;border-top:1px solid var(--line-subtle);overflow:visible}.pd-stage-wrap{overflow:visible;flex:none}.pd-studio-body{flex-direction:column;overflow-y:auto}.pd-studio-timeline{width:100%;display:flex;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line-subtle)}.pd-studio-thumb{flex:none;width:112px}.pd-studio-stage{overflow:visible;padding:var(--sp-4)}.pd-studio-canvas{max-width:100%}.pd-studio-props{width:100%;border-left:0;border-top:1px solid var(--line-subtle);overflow:visible}}@media(max-width:639px){.pd-topbar{padding:var(--sp-2) var(--sp-3)}.pd-topbar-title,.pd-store-chip-name{display:none}.pd-page{padding:var(--sp-5) var(--sp-4) var(--sp-10)}}.pd-page>*{min-width:0}.pd-section,.card-preview-body>*{min-width:0}.dash-boot{min-height:100dvh;display:grid;place-items:center;padding:var(--sp-4)}.dash-login-wrap{min-height:100dvh;display:grid;place-items:center;padding:var(--sp-4);padding-bottom:max(var(--sp-4),env(safe-area-inset-bottom))}.dash-login-card{width:100%;max-width:400px;display:grid;gap:var(--sp-4);justify-items:start}.dash-login-card form{width:100%}.dash-login-title{font-size:var(--text-xl)}.dash-login-subtitle{color:var(--ink-muted);font-size:var(--text-sm);margin-top:calc(var(--sp-3) * -1)}.dash-login-back{font-size:var(--text-sm);color:var(--ink-secondary)}.dash-brand{display:inline-flex;align-items:center;gap:var(--sp-2);font-family:var(--font-display);font-size:var(--text-md);font-weight:700;letter-spacing:var(--tracking-tight);color:var(--ink)}.dash-root{display:flex;min-height:100dvh}.dash-sidebar{display:none}@media(min-width:640px){.dash-sidebar{position:sticky;top:0;display:flex;flex-direction:column;gap:var(--sp-6);width:232px;flex:none;height:100dvh;padding:var(--sp-5) var(--sp-4);background:var(--surface);border-right:1px solid var(--line-subtle)}}.dash-nav{display:grid;gap:var(--sp-1)}.dash-nav-item{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--control-md);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);color:var(--ink-secondary);font-size:var(--text-sm);font-weight:600;text-decoration:none;transition:background-color var(--t-fast) var(--ease-standard),color var(--t-fast) var(--ease-standard)}@media(hover:hover){.dash-nav-item:hover{background:var(--surface-sunken);color:var(--ink)}}.dash-nav-item[aria-current=page]{background:var(--accent-soft);color:var(--accent-strong)}.dash-sidebar-footer{margin-top:auto;display:flex;align-items:center;gap:var(--sp-2);padding-top:var(--sp-4);border-top:1px solid var(--line-subtle)}.dash-avatar{width:var(--control-sm);height:var(--control-sm);flex:none;border-radius:var(--r-full);background:var(--accent);color:var(--on-accent);display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-wide)}.dash-profile-text{display:grid;min-width:0;flex:1;line-height:var(--leading-snug)}.dash-profile-text strong{font-size:var(--text-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-profile-text span{font-size:var(--text-xs);color:var(--ink-muted);text-transform:uppercase;letter-spacing:var(--tracking-caps)}.dash-main{flex:1;min-width:0;display:flex;flex-direction:column}.dash-topbar{position:sticky;top:0;z-index:var(--z-sticky);display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-height:var(--control-lg);padding:var(--sp-1) var(--sp-4);background:var(--surface);border-bottom:1px solid var(--line-subtle)}@media(min-width:640px){.dash-topbar{display:none}}.dash-content{width:100%;max-width:1160px;margin:0 auto;padding:var(--sp-4) var(--sp-4) var(--sp-10);display:grid;gap:var(--sp-4);align-content:start}@media(min-width:640px){.dash-content{padding:var(--sp-6) var(--sp-6) var(--sp-12)}}@media(max-width:639px){.dash-content{padding-bottom:calc(var(--sp-16) + var(--sp-4) + env(safe-area-inset-bottom))}}.dash-tabbar{display:none}@media(max-width:639px){.dash-tabbar{position:fixed;left:0;right:0;bottom:0;z-index:var(--z-nav);display:flex;background:var(--surface);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.dash-tabbar-item{flex:1 1 0;min-width:0;display:grid;justify-items:center;gap:2px;padding:var(--sp-2) var(--sp-1);font-size:var(--text-xs);font-weight:600;color:var(--ink-muted);text-decoration:none}.dash-tabbar-item span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-tabbar-item[aria-current=page]{color:var(--accent-strong)}}.dash-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap}.dash-page-head-text{min-width:0}.dash-page-context{color:var(--ink-muted);font-size:var(--text-sm);margin-top:var(--sp-1)}.dash-page-actions{display:flex;align-items:center;gap:var(--sp-2)}.dash-section-title{font-size:var(--text-md);margin-top:var(--sp-2)}.kpi-grid{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}@media(max-width:639px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.kpi-grid>.kpi:last-child:nth-child(odd){grid-column:1 / -1}}.dash-widget-grid{display:grid;gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.dash-widget-wide{grid-column:1 / -1}.dash-card-detail{color:var(--ink-muted);font-size:var(--text-sm)}.dash-live-status{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm);font-weight:600}.live-dot{width:var(--sp-2);height:var(--sp-2);flex:none;border-radius:var(--r-full);background:var(--ok);box-shadow:0 0 0 3px var(--ok-bg)}.dash-summary-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--line-subtle);font-size:var(--text-sm)}.dash-summary-row:last-child{border-bottom:0}.dash-summary-row-label{display:inline-flex;align-items:center;gap:var(--sp-2);color:var(--ink-secondary)}.dash-summary-row-value{font-weight:600;font-variant-numeric:tabular-nums}.dash-activity-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--line-subtle)}.dash-activity-item:last-child{border-bottom:0}.dash-activity-icon{width:var(--control-sm);height:var(--control-sm);flex:none;border-radius:var(--r-full);background:var(--accent-softer);color:var(--accent-strong);display:inline-flex;align-items:center;justify-content:center}.dash-activity-text{flex:1;min-width:0}.dash-activity-title{font-size:var(--text-sm);font-weight:600}.dash-activity-subtitle{font-size:var(--text-xs);color:var(--ink-muted)}.dash-activity-time{flex:none;font-size:var(--text-xs);color:var(--ink-muted);font-variant-numeric:tabular-nums}.dash-leaderboard-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--line-subtle)}.dash-leaderboard-row:last-child{border-bottom:0}.dash-leaderboard-rank{width:var(--sp-6);flex:none;text-align:center;font-family:var(--font-display);font-weight:700;color:var(--ink-muted);font-variant-numeric:tabular-nums}.dash-leaderboard-info{flex:1;min-width:0;display:grid;gap:2px}.dash-leaderboard-name{font-size:var(--text-sm);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-leaderboard-sub{font-size:var(--text-xs);color:var(--ink-muted)}.dash-leaderboard-bar-track{height:var(--sp-1);border-radius:var(--r-full);background:var(--surface-sunken);overflow:hidden}.dash-leaderboard-bar-fill{height:100%;border-radius:var(--r-full);background:var(--accent);transition:width var(--t-slow) var(--ease-enter)}.dash-leaderboard-value{flex:none;font-family:var(--font-display);font-weight:700;font-variant-numeric:tabular-nums}.dash-radial-wrap{display:grid;gap:var(--sp-2);justify-items:center;text-align:center}.dash-donut-wrap{position:relative;width:100%}.dash-donut-center{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;gap:0;pointer-events:none}.dash-donut-center-value{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;font-variant-numeric:tabular-nums}.dash-donut-center-label{font-size:var(--text-xs);color:var(--ink-muted)}.dash-donut-legend{display:grid;gap:var(--sp-1);width:100%}.dash-donut-legend-row{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm)}.dash-donut-legend-row strong{margin-left:auto;font-variant-numeric:tabular-nums}.dash-donut-legend-dot{width:var(--sp-2);height:var(--sp-2);flex:none;border-radius:var(--r-full)}.dash-tooltip{background:var(--surface-ink);color:var(--ink-on-dark);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);font-size:var(--text-xs);box-shadow:var(--e2)}.dash-tooltip-label{font-weight:600;margin-bottom:2px}.dash-audit-list{display:grid;gap:var(--sp-2)}.dash-audit-item{background:var(--surface);border:1px solid var(--line-subtle);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);display:grid;gap:2px;font-size:var(--text-sm)}.dash-audit-row1{display:flex;justify-content:space-between;gap:var(--sp-3);font-weight:600}.dash-audit-when{color:var(--ink-muted);font-weight:400;font-size:var(--text-xs);font-variant-numeric:tabular-nums}.dash-audit-row2{color:var(--ink-secondary);overflow-wrap:anywhere}.dash-log-viewer{background:var(--surface-ink);color:var(--ink-on-dark);border-radius:var(--r-lg);padding:var(--sp-4);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--leading-body);max-height:60dvh;overflow-y:auto}.dash-log-line{white-space:pre-wrap;overflow-wrap:anywhere;padding:2px 0}.dash-log-time{color:var(--ink-faint);font-variant-numeric:tabular-nums}.dash-card-link{border:0;background:none;padding:0;cursor:pointer;color:inherit;text-align:left}.dash-card-link .code{color:var(--accent-strong)}.dash-customize-panel{display:grid;gap:var(--sp-4)}.dash-theme-picker{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.dash-theme-swatch{width:var(--control-sm);height:var(--control-sm);flex:none;border:0;border-radius:var(--r-full);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--e1)}.dash-theme-swatch.active{box-shadow:var(--focus-ring)}.dash-widget-editor{display:grid;gap:var(--sp-2)}.dash-widget-editor-row{display:flex;align-items:center;gap:var(--sp-2);min-width:0;padding:var(--sp-2);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md)}.dash-widget-editor-row.dragging{position:relative;z-index:var(--z-sticky);box-shadow:var(--e3)}.dash-widget-editor-handle{flex:none;display:inline-flex;align-items:center;justify-content:center;width:var(--control-sm);height:var(--control-sm);border:0;border-radius:var(--r-sm);background:var(--surface-sunken);color:var(--ink-muted);cursor:grab;touch-action:none}.dash-widget-editor-handle:focus-visible{outline:none;box-shadow:var(--focus-ring)}.dash-widget-editor-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm);font-weight:600}.dash-widget-editor-row .btn{flex:none}.dash-form-title{margin-bottom:var(--sp-4)}.dash-form-note{margin-top:var(--sp-3)}.dash-color-field{position:relative;display:flex;align-items:center}.dash-color-field input{flex:1}.dash-color-field .dash-color-swatch{position:absolute;right:var(--sp-3);width:var(--sp-5);height:var(--sp-5);border-radius:var(--r-sm);border:1px solid var(--line)}.dash-terminal-link{border-top:1px solid var(--line-subtle);border-radius:0;padding-top:var(--sp-3)}
