:root{--brand-amber: #F59E0B;--brand-coral: #EF4444;--brand-stamp: #C0392B;--brand-gold-warm: #FBBF24;--brand-orange-deep: #EA580C;--brand-gradient: linear-gradient(135deg, var(--brand-amber) 0%, var(--brand-coral) 100%);--brand-gradient-warm: linear-gradient(135deg, var(--brand-gold-warm) 0%, var(--brand-orange-deep) 100%);--brand-gradient-glow: radial-gradient(circle at center, rgba(245, 158, 11, .18) 0%, transparent 70%);--font-display: "Noto Serif TC", "Source Han Serif TC", "PingFang TC", "Microsoft JhengHei", serif;--font-body: "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Cascadia Code", Consolas, ui-monospace, monospace;--ease-standard: cubic-bezier(.4, 0, .2, 1);--ease-out-expo: cubic-bezier(.19, 1, .22, 1);--ease-out-back: cubic-bezier(.34, 1.56, .64, 1);--duration-fast: .18s;--duration-base: .28s;--duration-slow: .48s;--shadow-glass-sm: 0 4px 16px rgba(0, 0, 0, .1);--shadow-glass-md: 0 8px 32px rgba(0, 0, 0, .18);--shadow-glass-lg: 0 24px 64px rgba(0, 0, 0, .28);--shadow-brand-glow: 0 8px 24px rgba(245, 158, 11, .28);--radius-sm: 6px;--radius-md: 12px;--radius-lg: 20px;--radius-pill: 999px;--noise-svg: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.55 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}:root{color-scheme:dark;--gradient-primary: var(--brand-gradient);--gradient-secondary: var(--brand-gradient-warm);--font-sans: var(--font-body);--font-num: var(--font-body);--transition-fast: .2s ease;--transition-normal: .3s ease;--color-error: #ef4444;--color-success: #10b981;--color-warning: var(--brand-amber);--color-primary: var(--brand-amber);--color-bg-main: #0B0F19;--color-bg-secondary: #131B2E;--color-text-primary: #F8FAFC;--color-text-secondary: #94A3B8;--color-text-muted: #7C8BA1;--glass-bg: rgba(255, 255, 255, .03);--glass-border: rgba(255, 255, 255, .1);--glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, .37);--backdrop-blur: 12px;--gradient-glow: var(--brand-gradient-glow);--crud-surface: #1A2138;--crud-border: rgba(255, 255, 255, .08);--hover-bg: rgba(255, 255, 255, .05);--overlay-bg: rgba(0, 0, 0, .6);--color-info: #60A5FA;--color-success-text: #4ADE80;--color-warning-text: #F59E0B;--color-danger-text: var(--color-error);--state-error-bg: rgba(239, 68, 68, .1);--state-error-border: rgba(239, 68, 68, .45);--state-ok-bg: rgba(34, 197, 94, .1);--state-ok-border: rgba(34, 197, 94, .4);--state-warn-bg: rgba(245, 158, 11, .12);--state-warn-border: rgba(245, 158, 11, .45);--status-new-bg: rgba(34, 197, 94, .16);--status-new-text: var(--color-success-text);--status-draft-bg: rgba(245, 158, 11, .18);--status-draft-text: var(--color-warning-text);--status-done-bg: rgba(100, 116, 139, .22);--status-done-text: #A5B4C8;--status-void-bg: rgba(239, 68, 68, .14);--status-void-text: #F87171;--tooltip-bg: rgba(15, 23, 42, .92);--tooltip-text: #F8FAFC;--tooltip-border: rgba(255, 255, 255, .1);--color-focus-ring: #6366F1;--face-color-2000: #6B3535;--face-color-1000: #6B4830;--face-color-500: #6B5E30;--face-color-300: #355C45;--face-color-200: #2A3F6B;--face-color-100: #3F3F3F;--face-color-other: #4A4A4A;--face-text: #F8FAFC;--chart-series-1: #3987E5;--chart-series-2: #D95926;--chart-series-3: #199E70;--btn-h: 38px;--btn-h-sm: 32px;--btn-radius: 8px;--btn-px: 1rem;--btn-font: .875rem;--btn-primary-bg: var(--brand-gradient);--btn-primary-text: #FFFFFF;--btn-primary-shadow: 0 2px 10px rgba(245, 158, 11, .22);--btn-secondary-bg: rgba(255, 255, 255, .04);--btn-secondary-hover: rgba(255, 255, 255, .09);--btn-secondary-text: var(--color-text-primary);--btn-border: rgba(255, 255, 255, .16);--btn-success-bg: #15803D;--btn-danger-bg: #DC2626;--btn-info-bg: #2563EB;--btn-warning-bg: #F59E0B;--btn-warning-text: #1C1917;--btn-locked-bg: rgba(148, 163, 184, .14);--btn-locked-text: var(--color-text-secondary);--btn-locked-border: rgba(148, 163, 184, .3);--seg-active-bg: rgba(245, 158, 11, .18);--seg-active-text: #FBBF24;--seg-active-border: rgba(245, 158, 11, .55);--gate-bg: #050814;--gate-sky: radial-gradient(120% 70% at 50% 112%, rgba(245, 158, 11, .26) 0%, rgba(239, 68, 68, .1) 32%, transparent 62%), radial-gradient(90% 75% at 50% -12%, #1E2B4F 0%, #0C1328 52%, #050814 100%);--gate-vignette: radial-gradient(ellipse at center, transparent 52%, rgba(0, 0, 0, .55) 100%);--gate-grid: rgba(148, 163, 184, .17);--gate-horizon: rgba(245, 158, 11, .3);--gate-dust: rgba(253, 230, 138, .6);--gate-laser: rgba(255, 82, 72, 1);--gate-spot: rgba(251, 191, 36, .13);--gate-card-bg: rgba(14, 21, 40, .6);--gate-card-edge: rgba(255, 255, 255, .1);--gate-card-shadow: 0 30px 90px rgba(0, 0, 0, .55), 0 2px 0 rgba(255, 255, 255, .05) inset;--gate-glare: rgba(255, 228, 180, .14);--gate-ring-1: rgba(251, 191, 36, .95);--gate-ring-2: rgba(239, 68, 68, .75);--gate-title: linear-gradient(100deg, #FEF3C7 0%, #FCD34D 30%, #FB923C 68%, #F87171 100%);--gate-accent-text: #FCD34D;--gate-scan-bar: #E2E8F0;--gate-scan-bg: rgba(255, 255, 255, .04);--gate-mark-top: #FCD34D;--gate-mark-left: #F59E0B;--gate-mark-right: #EA580C;--gate-mark-edge: rgba(255, 247, 230, .9);--gate-mark-tape: rgba(255, 247, 230, .7);--gate-beam-color: rgba(253, 230, 138, .9);--gate-chip-bg: rgba(255, 255, 255, .06);--gate-chip-edge: rgba(255, 255, 255, .12)}[data-theme=light]{color-scheme:light;--color-bg-main: #F0F9FF;--color-bg-secondary: #FFFFFF;--color-text-primary: #0F172A;--color-text-secondary: #475569;--color-text-muted: #5F6E85;--color-primary: #0EA5E9;--glass-bg: rgba(255, 255, 255, .5);--glass-border: rgba(255, 255, 255, .3);--glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, .1);--backdrop-blur: 12px;--gradient-glow: radial-gradient(circle at center, rgba(245, 158, 11, .1) 0%, transparent 70%);--crud-surface: #F8FAFC;--crud-border: #E2E8F0;--hover-bg: rgba(15, 23, 42, .05);--overlay-bg: rgba(15, 23, 42, .45);--color-info: #2563EB;--color-success-text: #15803D;--color-warning-text: #B45309;--color-danger-text: #DC2626;--state-error-bg: rgba(239, 68, 68, .08);--state-error-border: rgba(220, 38, 38, .45);--state-ok-bg: rgba(34, 197, 94, .1);--state-ok-border: rgba(21, 128, 61, .35);--state-warn-bg: rgba(250, 204, 21, .22);--state-warn-border: rgba(202, 138, 4, .5);--status-new-bg: rgba(34, 197, 94, .14);--status-new-text: #166534;--status-draft-bg: rgba(245, 158, 11, .16);--status-draft-text: #92400E;--status-done-bg: rgba(100, 116, 139, .14);--status-done-text: #475569;--status-void-bg: rgba(239, 68, 68, .1);--status-void-text: #B91C1C;--tooltip-bg: rgba(15, 23, 42, .92);--tooltip-text: #F8FAFC;--tooltip-border: rgba(0, 0, 0, .1);--color-focus-ring: #0EA5E9;--face-color-2000: #EA9999;--face-color-1000: #F9CB9C;--face-color-500: #FFE599;--face-color-300: #B6D7A8;--face-color-200: #A4C2F4;--face-color-100: #D9D9D9;--face-color-other: #C0C0C0;--face-text: #1F2937;--chart-series-1: #2A78D6;--chart-series-2: #EB6834;--chart-series-3: #1BAF7A;--btn-primary-shadow: 0 2px 8px rgba(234, 88, 12, .18);--btn-secondary-bg: #FFFFFF;--btn-secondary-hover: #F1F5F9;--btn-border: #CBD5E1;--btn-locked-bg: #F1F5F9;--btn-locked-text: #475569;--btn-locked-border: #CBD5E1;--seg-active-bg: rgba(245, 158, 11, .16);--seg-active-text: #92400E;--seg-active-border: rgba(217, 119, 6, .55);--gate-bg: #EAF6FF;--gate-sky: radial-gradient(120% 70% at 50% 115%, rgba(251, 146, 60, .32) 0%, rgba(251, 191, 36, .14) 34%, transparent 64%), linear-gradient(180deg, #D6ECFF 0%, #EEF8FF 52%, #FFF4E6 100%);--gate-vignette: radial-gradient(ellipse at center, transparent 58%, rgba(15, 40, 80, .12) 100%);--gate-grid: rgba(2, 132, 199, .15);--gate-horizon: rgba(251, 146, 60, .34);--gate-dust: rgba(245, 158, 11, .45);--gate-laser: rgba(239, 68, 68, .95);--gate-spot: rgba(255, 255, 255, .6);--gate-card-bg: rgba(255, 255, 255, .68);--gate-card-edge: rgba(255, 255, 255, .9);--gate-card-shadow: 0 30px 80px rgba(15, 40, 80, .18), 0 2px 0 rgba(255, 255, 255, .9) inset;--gate-glare: rgba(255, 255, 255, .55);--gate-ring-1: rgba(245, 158, 11, .9);--gate-ring-2: rgba(14, 165, 233, .75);--gate-title: linear-gradient(100deg, #B45309 0%, #EA580C 45%, #DC2626 100%);--gate-accent-text: #B45309;--gate-scan-bar: #0F172A;--gate-scan-bg: rgba(255, 255, 255, .7);--gate-mark-edge: rgba(124, 45, 18, .55);--gate-mark-tape: rgba(255, 255, 255, .75);--gate-beam-color: rgba(251, 191, 36, .85);--gate-chip-bg: rgba(255, 255, 255, .7);--gate-chip-edge: rgba(15, 23, 42, .08)}:is(.btn-primary,.btn-secondary,.btn-success,.btn-danger,.btn-warning,.btn-info){display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:var(--btn-h);padding:0 var(--btn-px);border:1px solid transparent;border-radius:var(--btn-radius);font-family:inherit;font-size:var(--btn-font);font-weight:600;line-height:1.2;white-space:nowrap;text-decoration:none;cursor:pointer;transition:filter var(--transition-fast),transform var(--transition-fast),background-color var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast),color var(--transition-fast)}:is(.btn-primary,.btn-secondary,.btn-success,.btn-danger,.btn-warning,.btn-info) svg{flex-shrink:0}.btn-primary{background:var(--btn-primary-bg);color:var(--btn-primary-text);box-shadow:var(--btn-primary-shadow)}.btn-secondary{background:var(--btn-secondary-bg);border-color:var(--btn-border);color:var(--btn-secondary-text)}.btn-success{background:var(--btn-success-bg);color:var(--btn-primary-text)}.btn-danger{background:var(--btn-danger-bg);color:var(--btn-primary-text)}.btn-info{background:var(--btn-info-bg);color:var(--btn-primary-text)}.btn-warning{background:var(--btn-warning-bg);color:var(--btn-warning-text)}:is(.btn-primary,.btn-success,.btn-danger,.btn-warning,.btn-info):hover:not(:disabled):not(.btn-locked){filter:brightness(1.07);transform:translateY(-1px)}.btn-secondary:hover:not(:disabled):not(.btn-locked):not([aria-busy=true]){background:var(--btn-secondary-hover);border-color:var(--seg-active-border)}:is(.btn-primary,.btn-secondary,.btn-success,.btn-danger,.btn-warning,.btn-info):active:not(:disabled):not(.btn-locked){transform:scale(.98)}:is(.btn-primary,.btn-secondary,.btn-success,.btn-danger,.btn-warning,.btn-info):disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none;filter:none}:is(.btn-primary,.btn-secondary,.btn-success,.btn-danger,.btn-warning,.btn-info)[aria-busy=true]:not(.btn-locked){opacity:.45;cursor:progress;box-shadow:none;transform:none;filter:none}:is(.btn-primary,.btn-secondary,.btn-success,.btn-danger,.btn-warning,.btn-info).btn-locked{background:var(--btn-locked-bg);border-color:var(--btn-locked-border);color:var(--btn-locked-text);box-shadow:none;cursor:not-allowed}:is(.btn-primary,.btn-secondary,.btn-success,.btn-danger,.btn-warning,.btn-info,.icon-btn):focus-visible,.seg-toggle>:is(button,a):focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}:is(.btn-primary,.btn-secondary,.btn-success,.btn-danger,.btn-warning,.btn-info).icon-only{width:var(--btn-h);min-width:var(--btn-h);padding:0}.btn-secondary.icon-only{color:var(--color-text-secondary)}.btn-secondary.icon-only:hover:not(:disabled):not([aria-busy=true]){color:var(--color-text-primary)}:is(.btn-primary,.btn-secondary,.btn-success,.btn-danger,.btn-warning,.btn-info).small{min-height:var(--btn-h-sm);padding:0 .75rem;font-size:.8125rem}:is(.btn-primary,.btn-secondary,.btn-success,.btn-danger,.btn-warning,.btn-info).small.icon-only{width:var(--btn-h-sm);min-width:var(--btn-h-sm);padding:0}.seg-toggle{display:inline-flex;align-items:stretch;flex:none;gap:2px;max-width:100%;height:var(--btn-h);padding:3px;border:1px solid var(--btn-border);border-radius:var(--btn-radius);background:var(--btn-secondary-bg)}.seg-toggle>:is(button,a){display:inline-flex;align-items:center;justify-content:center;gap:.35rem;padding:0 .75rem;border:1px solid transparent;border-radius:calc(var(--btn-radius) - 3px);background:transparent;color:var(--color-text-secondary);font-family:inherit;font-size:var(--btn-font);font-weight:600;line-height:1.2;white-space:nowrap;text-decoration:none;cursor:pointer;transition:background-color var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast)}.seg-toggle>:is(button,a) svg{flex-shrink:0}.seg-toggle>:is(button,a):hover:not(.active):not([aria-current=page]):not(:disabled){background:var(--btn-secondary-hover);color:var(--color-text-primary)}.seg-toggle>:is(button,a):is(.active,[aria-current=page]){background:var(--seg-active-bg);border-color:var(--seg-active-border);color:var(--seg-active-text);font-weight:700}.seg-toggle>button:disabled{opacity:.45;cursor:not-allowed}.icon-btn{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;color:var(--color-text-secondary);cursor:pointer;padding:.3rem;border-radius:6px;transition:background-color var(--transition-fast),color var(--transition-fast)}.icon-btn:hover:not(:disabled){background:var(--btn-secondary-hover);color:var(--color-text-primary)}.icon-btn.delete:hover:not(:disabled){color:var(--color-danger-text);background:var(--state-error-bg)}.icon-btn:disabled{opacity:.4;cursor:not-allowed}@media(max-width:768px){:root{--btn-h: 44px;--btn-h-sm: 36px}:is(.btn-primary,.btn-secondary,.btn-success,.btn-danger,.btn-warning,.btn-info):not(.icon-only){white-space:normal;text-align:center}.seg-toggle{flex-wrap:wrap;height:auto;min-height:var(--btn-h)}.seg-toggle>:is(button,a){min-height:calc(var(--btn-h) - 8px)}}.product-table-container{flex:1;overflow:auto;border-radius:12px;-webkit-overflow-scrolling:touch;scrollbar-width:thin;min-height:0}.product-table-container.glass-panel{overflow:auto}.product-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.95rem}.product-table th{background:var(--color-bg-secondary);color:var(--color-text-secondary);font-weight:600;text-align:left;padding:1rem;position:sticky;top:0;z-index:10;border-bottom:1px solid var(--glass-border);white-space:nowrap}.product-table td{padding:1rem;border-bottom:1px solid var(--glass-border);color:var(--color-text-primary);transition:background .2s;white-space:nowrap}.product-table :is(th,td).num{text-align:right;font-family:var(--font-num);font-variant-numeric:tabular-nums;white-space:nowrap}@media(pointer:coarse){.product-table th{position:static;top:auto}}.product-table tr:hover td{background:var(--hover-bg)}.product-table tr:last-child td{border-bottom:none}.product-table.compact-table{font-size:.85rem}.product-table.compact-table th{padding:.5rem .75rem;font-size:.8rem;letter-spacing:.05em}.product-table.compact-table td{padding:.4rem .75rem}@media(max-width:768px){.responsive-table-scroll .product-table{min-width:max-content}.responsive-table-scroll .product-table th:first-child{z-index:11}}.static-head>thead>tr>th{position:static!important}.product-table th .th-sort{display:inline-flex;align-items:center;gap:.3rem;padding:0;border:none;background:none;color:inherit;font:inherit;cursor:pointer;white-space:nowrap}.product-table th.num .th-sort{flex-direction:row-reverse}.product-table th .th-sort:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.product-table th .th-sort .th-sort-icon{opacity:.45}.product-table th .th-sort.is-active{color:var(--color-text-primary)}.product-table th .th-sort.is-active .th-sort-icon{opacity:1;color:var(--color-info)}.product-page{display:flex;flex-direction:column;flex:1;min-height:0;gap:1rem;color:var(--color-text-primary);overflow:hidden}.product-page .page-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem 1rem}.product-page .page-header h1{font-size:1.5rem;line-height:1.3}.product-page .action-bar{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.page-banner{display:flex;align-items:flex-start;gap:.6rem;padding:.7rem .9rem;border-radius:10px;border:1px solid var(--crud-border);border-left-width:4px;background:var(--crud-surface);color:var(--color-text-primary);font-size:.9rem;line-height:1.5}.page-banner svg{flex-shrink:0;margin-top:.15rem}.page-banner.info{border-left-color:var(--color-info)}.page-banner.info svg{color:var(--color-info)}.page-banner.warning{border-left-color:var(--color-warning-text);background:var(--state-warn-bg)}.page-banner.warning svg{color:var(--color-warning-text)}.page-banner.danger{border-left-color:var(--color-danger-text);background:var(--state-error-bg)}.page-banner.danger svg{color:var(--color-danger-text)}@media(max-width:768px){.product-page{overflow:visible;flex:none}.product-page .page-header{flex-direction:column;align-items:flex-start;gap:.75rem}.product-page .page-header h1{font-size:1.35rem}.product-page .action-bar{width:100%;flex-flow:row wrap;align-items:center;gap:.5rem .75rem}}.face-badge{display:inline-block;min-width:3.25rem;padding:.15rem .6rem;border-radius:4px;font-family:var(--font-num);font-variant-numeric:tabular-nums;font-weight:700;font-size:.82rem;line-height:1.5;text-align:center;white-space:nowrap;color:var(--face-text);background:var(--face-color-other)}.face-badge.face-2000{background:var(--face-color-2000)}.face-badge.face-1000{background:var(--face-color-1000)}.face-badge.face-500{background:var(--face-color-500)}.face-badge.face-300{background:var(--face-color-300)}.face-badge.face-200{background:var(--face-color-200)}.face-badge.face-100{background:var(--face-color-100)}.face-badge.face-other{background:var(--face-color-other)}.status-chip{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .65rem;border-radius:var(--radius-pill);font-size:.8rem;font-weight:700;line-height:1.4;white-space:nowrap}.status-chip.status-new{background:var(--status-new-bg);color:var(--status-new-text)}.status-chip.status-draft{background:var(--status-draft-bg);color:var(--status-draft-text)}.status-chip.status-done{background:var(--status-done-bg);color:var(--status-done-text)}.status-chip.status-void{background:var(--status-void-bg);color:var(--status-void-text);text-decoration:line-through}.role-chip{display:inline-flex;align-items:center;padding:.1rem .55rem;border-radius:var(--radius-pill);font-size:.72rem;font-weight:700;line-height:1.5;white-space:nowrap;background:var(--status-done-bg);color:var(--status-done-text)}.role-chip.role-admin{background:var(--status-draft-bg);color:var(--status-draft-text)}.role-chip.role-viewer{background:var(--status-done-bg);color:var(--status-done-text)}.role-chip.role-operator{background:var(--status-new-bg);color:var(--status-new-text)}.modal-overlay{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--overlay-bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:xzFadeIn .2s ease-out}.modal-content{display:flex;flex-direction:column;width:560px;max-width:100%;max-height:calc(100dvh - 2rem);background:var(--color-bg-secondary);color:var(--color-text-primary);border:1px solid var(--crud-border);border-radius:16px;box-shadow:var(--shadow-glass-lg);overflow:hidden;animation:xzPopIn .25s var(--ease-out-back)}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:1rem 1.25rem;border-bottom:1px solid var(--crud-border)}.modal-title{font-size:1.1rem;font-weight:700}.modal-body{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;overflow-y:auto}.modal-footer,.modal-actions{display:flex;justify-content:flex-end;gap:.75rem}.modal-footer{padding:.9rem 1.25rem;border-top:1px solid var(--crud-border)}@keyframes xzFadeIn{0%{opacity:0}to{opacity:1}}@keyframes xzPopIn{0%{opacity:0;transform:scale(.94) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@media(prefers-reduced-motion:reduce){.modal-overlay,.modal-content{animation:none}}@page{size:A4 portrait;margin:10mm 5mm;@bottom-right{content:"第 " counter(page) " 頁";font-size:8pt}}@page box-label{size:100mm 62mm;margin:0;@bottom-right{content:none}}.print-label{page:box-label}.print-only{display:none}@media print{.no-print,.app-sidebar,.sidebar-overlay,.top-header,.gt-container{display:none!important}.print-only{display:revert}:root{color-scheme:light!important}html,body{background:#fff!important;color:#000!important}body:after{display:none}.app-shell,.main-area,.content-wrapper{display:block!important;height:auto!important;overflow:visible!important;padding:0!important;margin:0!important}.print-a4 thead{display:table-header-group}.print-a4 tfoot{display:table-footer-group}.print-a4 tr{break-inside:avoid}}:root{--bp-tablet: 768px;--bp-phone: 480px;--bp-fold: 380px}@media(max-width:768px){.icon-btn{min-width:44px;min-height:44px;padding:.55rem}.search-input{width:100%!important;min-height:44px;box-sizing:border-box}.action-bar{flex-wrap:wrap;width:100%}.product-table td{white-space:normal;word-break:break-word}.responsive-table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.responsive-table-scroll table th:first-child,.responsive-table-scroll table td:first-child{position:sticky;left:0;background:var(--crud-surface);z-index:2;box-shadow:2px 0 4px #00000026}.responsive-table-scroll table th:first-child{z-index:3}.modal-content{width:100%;max-width:100%;max-height:100dvh;margin:.5rem;border-radius:12px}.modal-body{max-height:calc(100dvh - 180px);padding:1rem;gap:1rem}.modal-header,.modal-footer{padding:.9rem 1.1rem}input,select,textarea{font-size:16px}h1,h2{word-break:break-word}}@media(max-width:480px){.modal-content{margin:0;border-radius:0;max-height:100dvh}.modal-overlay{padding:0;align-items:stretch}.modal-footer{position:sticky;bottom:0;background:var(--color-bg-secondary);border-top:1px solid var(--glass-border)}}@media(max-width:480px),(pointer:coarse)and (max-width:900px){.responsive-table-cards table,.responsive-table-cards thead,.responsive-table-cards tbody,.responsive-table-cards tr,.responsive-table-cards td{display:block;width:100%}.responsive-table-cards thead{position:absolute;left:-10000px;top:auto;height:1px;width:1px;overflow:hidden}.responsive-table-cards tr{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:12px;padding:.6rem .75rem;margin-bottom:.6rem;backdrop-filter:blur(var(--backdrop-blur));-webkit-backdrop-filter:blur(var(--backdrop-blur));box-shadow:0 2px 8px #0000000f}.responsive-table-cards tr.empty-row{background:transparent;border:none;box-shadow:none;text-align:center}.responsive-table-cards td{border:none;border-bottom:1px dashed var(--glass-border);padding:.4rem 0;display:flex;align-items:center;justify-content:space-between;gap:.75rem;text-align:right;word-break:break-word;min-height:0}.responsive-table-cards td:last-child{border-bottom:none;padding-bottom:0}.responsive-table-cards td:before{content:attr(data-label);font-size:.72rem;font-weight:600;color:var(--color-text-secondary);text-align:left;flex-shrink:0;letter-spacing:.3px}.responsive-table-cards td:not([data-label]):before{content:"";display:none}.responsive-table-cards td[data-primary=true]{font-size:1rem;font-weight:700;text-align:left;justify-content:flex-start;border-bottom:1px solid var(--glass-border);padding-bottom:.5rem;margin-bottom:.4rem}.responsive-table-cards td[data-primary=true]:before{display:none}.responsive-table-cards td.action-cell{justify-content:flex-end;flex-wrap:wrap;gap:.5rem;padding-top:.5rem}.responsive-table-cards td.action-cell:before{margin-right:auto}.responsive-table-cards.responsive-table-scroll table th:first-child,.responsive-table-cards.responsive-table-scroll table td:first-child{position:static;box-shadow:none}}@media(max-width:380px){.modal-actions,.modal-footer{flex-direction:column;gap:.4rem}.modal-actions>button,.modal-footer>button{width:100%;min-width:0}h1{font-size:1.05rem}.product-table th,.product-table td{padding:.5rem .4rem;font-size:.78rem}}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{font-family:var(--font-sans);font-variant-numeric:tabular-nums;background-color:var(--color-bg-main);color:var(--color-text-primary);min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;position:relative}body:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background-image:var(--noise-svg);background-size:180px 180px;opacity:.035;mix-blend-mode:overlay}h1,h2{font-family:var(--font-body);font-weight:700;letter-spacing:.01em}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}.glass-panel{background:var(--glass-bg);backdrop-filter:blur(var(--backdrop-blur));-webkit-backdrop-filter:blur(var(--backdrop-blur));border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);border-radius:16px}[data-theme=light] .glass-panel{border-color:var(--crud-border)}.text-gradient{background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.input-field{width:100%;min-height:var(--btn-h);padding:.5rem .75rem;border:1px solid var(--glass-border);border-radius:8px;background:var(--hover-bg);color:var(--color-text-primary);outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.input-field:focus{border-color:var(--color-focus-ring);box-shadow:0 0 0 3px #6366f12e}[data-theme=light] .input-field{border-color:var(--crud-border);background:var(--color-bg-secondary)}.input-field::placeholder{color:var(--color-text-muted)}.input-field.qty{color:var(--color-info);font-weight:700;text-align:right;font-variant-numeric:tabular-nums}[data-theme=dark] select{color-scheme:dark}[data-theme=dark] select option{background-color:var(--color-bg-secondary);color:var(--color-text-primary)}.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}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.route-loading{display:flex;align-items:center;justify-content:center;min-height:40vh;padding:2rem 1rem}.route-loading.is-print{min-height:60vh}.route-loading-text{display:inline-flex;align-items:center;gap:.5rem;margin:0;color:var(--color-text-secondary);opacity:0;animation:routeLoadingIn .2s ease-out .2s forwards}.route-loading-spin{animation:routeLoadingSpin 1s linear infinite}@keyframes routeLoadingIn{0%{opacity:0}to{opacity:1}}@keyframes routeLoadingSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.route-loading-text{animation:none;opacity:1}.route-loading-spin{animation:none}}.form-modal-form{flex:1;min-height:0;display:flex;flex-direction:column}.form-modal-wide{width:760px}.form-modal-close{flex-shrink:0}.form-modal:focus{outline:none}@media(max-width:768px){.form-modal-wide{width:100%}}.pw-field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;font-size:.9rem;color:var(--color-text-secondary)}.pw-note{min-height:1.4em;font-size:.82rem;line-height:1.6;color:var(--color-text-muted)}.pw-field input[aria-invalid=true]{border-color:var(--color-danger-text)}.app-shell{position:relative;z-index:1;display:flex;height:100vh;height:100dvh;width:100%;overflow:hidden;background-color:var(--color-bg-main)}.app-sidebar{display:flex;flex-direction:column;flex-shrink:0;width:248px;background-color:var(--color-bg-secondary);border-right:1px solid var(--glass-border);transition:width var(--transition-normal);z-index:50}[data-theme=light] .app-sidebar{border-right-color:var(--crud-border)}.app-shell.is-collapsed .app-sidebar{width:70px}.sidebar-header{height:64px;flex-shrink:0;display:flex;align-items:center;gap:.75rem;padding:0 1.25rem;border-bottom:1px solid var(--glass-border);color:var(--color-text-primary)}[data-theme=light] .sidebar-header{border-bottom-color:var(--crud-border)}.logo-icon{width:32px;height:32px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:8px;background:var(--gradient-primary);color:var(--btn-primary-text)}.logo-text{font-weight:700;font-size:1.1rem;white-space:nowrap}.sidebar-nav{flex:1;display:flex;flex-direction:column;gap:.15rem;padding:.75rem;overflow-x:hidden;overflow-y:auto;scrollbar-width:thin}.nav-group{display:flex;flex-direction:column;gap:.15rem}.nav-separator{padding:.6rem .75rem .2rem;margin-top:.35rem}.nav-group:first-child .nav-separator{margin-top:0}.nav-separator-text{display:block;font-size:.72rem;font-weight:700;letter-spacing:.08em;color:var(--color-text-muted);white-space:nowrap;border-bottom:1px solid var(--glass-border);padding-bottom:.35rem}[data-theme=light] .nav-separator-text{border-bottom-color:var(--crud-border)}.nav-item{position:relative;display:flex;align-items:center;gap:.75rem;width:100%;padding:.6rem .75rem;border-radius:8px;color:var(--color-text-secondary);font-size:.95rem;white-space:nowrap;transition:background-color var(--transition-fast),color var(--transition-fast)}.nav-item:hover{background:var(--hover-bg);color:var(--color-text-primary)}.nav-item:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:-2px}.nav-item.active{background:var(--seg-active-bg);color:var(--seg-active-text);font-weight:700}.nav-icon{width:20px;height:20px;flex-shrink:0}.sidebar-footer{flex-shrink:0;padding:.75rem 1.25rem;border-top:1px solid var(--glass-border);font-size:.75rem;color:var(--color-text-muted);white-space:nowrap;overflow:hidden}[data-theme=light] .sidebar-footer{border-top-color:var(--crud-border)}@media(min-width:769px){.app-shell.is-collapsed :is(.logo-text,.nav-label,.nav-separator-text){display:none}.app-shell.is-collapsed .nav-separator{padding:.25rem 0;border-bottom:1px solid var(--glass-border);margin:.35rem .5rem}.app-shell.is-collapsed .nav-item{justify-content:center;padding:.6rem 0}.app-shell.is-collapsed .sidebar-header{justify-content:center;padding:0}}.main-area{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.top-header{flex-shrink:0;height:64px;margin:1rem 1.5rem 0;padding:0 1.25rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;border-radius:12px}.header-left,.header-right{display:flex;align-items:center;gap:.75rem;min-width:0}.toggle-btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;min-width:36px;min-height:36px;padding:.25rem .4rem;border:none;border-radius:8px;background:none;color:var(--color-text-secondary);cursor:pointer;white-space:nowrap}.toggle-btn:hover{background:var(--hover-bg);color:var(--color-text-primary)}.toggle-btn:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.header-brand{display:none;align-items:center;gap:.4rem;font-weight:700;font-size:1.05rem;white-space:nowrap}.page-title{font-size:1.1rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-chip{display:flex;align-items:center;gap:.4rem;min-width:0;white-space:nowrap;font-size:.9rem}.user-label{color:var(--color-text-secondary)}.username{font-weight:600;overflow:hidden;text-overflow:ellipsis;max-width:12rem}.desktop-chip{font-size:.8rem;color:var(--color-text-muted)}.desktop-chip-text{max-width:9rem;overflow:hidden;text-overflow:ellipsis}.logout-btn{color:var(--color-danger-text)}.logout-btn:hover{background:var(--state-error-bg);color:var(--color-danger-text)}.logout-text{font-size:.85rem;font-weight:600}.session-banner{margin:.75rem 1.5rem 0;align-items:center;flex-wrap:wrap}.session-banner>span{flex:1;min-width:12rem}.content-wrapper{flex:1;min-height:0;display:flex;flex-direction:column;padding:1.5rem;overflow-y:auto}.content-wrapper>*{width:100%}@media(min-width:769px)and (max-width:1200px){.top-header{height:auto;min-height:56px;flex-wrap:wrap;padding:.4rem 1rem;gap:.25rem .75rem}.header-right{margin-left:auto;gap:.5rem}.user-label,.desktop-chip-text{display:none}}@media(max-width:768px){.app-sidebar{position:fixed;top:0;bottom:0;left:0;width:min(80vw,300px);transform:translate(-100%);visibility:hidden;box-shadow:10px 0 30px #00000059;border-right:none;transition:transform var(--transition-normal),visibility 0s linear var(--transition-normal)}.app-shell.is-drawer-open .app-sidebar{transform:translate(0);visibility:visible;transition:transform var(--transition-normal),visibility 0s}.sidebar-overlay{position:fixed;inset:0;z-index:49;background:var(--overlay-bg);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:xzFadeIn .3s ease}.top-header{height:56px;margin:.5rem .5rem 0;padding:0 .5rem;gap:.5rem}.header-left,.header-right{gap:.25rem}.header-brand{display:inline-flex}.page-title,.user-label,.desktop-chip-text,.logout-text{display:none}.username{max-width:6rem}.toggle-btn{min-width:44px;min-height:44px}.session-banner{margin:.5rem .5rem 0}.content-wrapper{padding:.75rem}}@media(max-width:480px){.desktop-chip{display:none}}@media(max-width:380px){.username{display:none}}.state-panel{display:flex;flex-direction:column;align-items:center;gap:.6rem;max-width:32rem;margin:2rem auto;padding:2rem 1.5rem;text-align:center;line-height:1.7}.state-panel h1{font-size:1.3rem}.state-panel p{color:var(--color-text-secondary);overflow-wrap:anywhere}.state-panel .btn-secondary{margin-top:.75rem}.state-panel-sub{font-size:.85rem;font-weight:600}.state-panel-icon{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--hover-bg);color:var(--color-info)}.state-panel-icon.is-lock{background:var(--btn-locked-bg);color:var(--btn-locked-text)}.cd-overlay{position:fixed;inset:0;z-index:11000;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--overlay-bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:xzFadeIn .2s ease-out}.cd-dialog{width:400px;max-width:100%;max-height:calc(100dvh - 2rem);overflow-y:auto;background:var(--color-bg-secondary);color:var(--color-text-primary);border:1px solid var(--crud-border);border-radius:1rem;padding:2rem 1.75rem 1.5rem;text-align:center;box-shadow:var(--shadow-glass-lg);animation:xzPopIn .25s var(--ease-out-back)}.cd-dialog:focus{outline:none}.cd-icon-ring{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 1rem}.cd-icon-ring--danger{background:var(--state-error-bg);color:var(--color-danger-text)}.cd-icon-ring--warning{background:var(--state-warn-bg);color:var(--color-warning-text)}.cd-icon-ring--info{background:var(--hover-bg);color:var(--color-info)}.cd-title{font-size:1.1rem;font-weight:700;margin:0 0 .5rem}.cd-message{font-size:.9rem;line-height:1.6;color:var(--color-text-secondary);margin:0 0 1.5rem;white-space:pre-line;overflow-wrap:anywhere}.cd-scan-blocked{display:flex;align-items:flex-start;gap:.4rem;margin:-.75rem 0 1.25rem;padding:.6rem .75rem;border-radius:.6rem;background:var(--state-warn-bg);color:var(--color-warning-text);font-size:.85rem;line-height:1.5;text-align:left}.cd-scan-blocked svg{flex-shrink:0;margin-top:.15rem}.cd-actions{display:flex;gap:.75rem;justify-content:center}.cd-actions>button{flex:1}.cd-reminder{margin:.5rem 0 1rem;padding:.75rem .875rem;border-radius:.75rem;border:2px solid var(--color-danger-text);background:var(--state-error-bg);text-align:center}.cd-reminder-text{display:inline-flex;align-items:center;gap:.35rem;font-size:1.05rem;font-weight:800;line-height:1.5;color:var(--color-danger-text)}.cd-reminder-highlight{margin-top:.25rem;font-size:1.45rem;font-weight:800;line-height:1.35;overflow-wrap:anywhere}.cd-reminder-hint{margin-top:.25rem;font-size:.85rem;line-height:1.5;color:var(--color-text-secondary)}@media(max-width:380px){.cd-actions{flex-direction:column-reverse}}.rim-overlay{position:fixed;inset:0;z-index:11000;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--overlay-bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:xzFadeIn .2s ease-out}.rim-dialog{width:440px;max-width:100%;max-height:calc(100dvh - 2rem);overflow-y:auto;background:var(--color-bg-secondary);color:var(--color-text-primary);border:1px solid var(--crud-border);border-radius:1rem;padding:2rem 1.75rem 1.5rem;text-align:center;box-shadow:var(--shadow-glass-lg);animation:xzPopIn .25s var(--ease-out-back)}.rim-dialog:focus{outline:none}.rim-icon-ring{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 1rem;background:var(--state-warn-bg);color:var(--color-warning-text)}.rim-title{font-size:1.1rem;font-weight:700;margin:0 0 .5rem}.rim-message{font-size:.9rem;line-height:1.6;color:var(--color-text-secondary);margin:0 0 1rem;white-space:pre-line}.rim-textarea{width:100%;padding:.6rem .75rem;border:1px solid var(--crud-border);border-radius:.5rem;font-size:.9rem;line-height:1.5;resize:vertical;background:var(--crud-surface);color:var(--color-text-primary);transition:border-color .15s,box-shadow .15s}.rim-textarea::placeholder{color:var(--color-text-muted)}.rim-textarea:focus{outline:none;border-color:var(--color-warning-text);box-shadow:0 0 0 3px var(--state-warn-bg)}.rim-counter{display:flex;justify-content:space-between;font-size:.75rem;color:var(--color-text-muted);margin:.25rem 0 1.25rem}.rim-required{color:var(--color-warning-text);font-weight:600}.rim-actions{display:flex;gap:.75rem;justify-content:center}.rim-actions>button{flex:1}@media(max-width:380px){.rim-actions{flex-direction:column-reverse}}.gt-container{position:fixed;top:1rem;right:1.5rem;z-index:12000;display:flex;flex-direction:column;gap:.5rem;width:380px;max-width:calc(100vw - 2rem);pointer-events:none}.gt-item{display:flex;align-items:flex-start;gap:.5rem;padding:.7rem 1rem;border-radius:.75rem;font-size:.875rem;font-weight:500;line-height:1.5;background:var(--color-bg-secondary);box-shadow:0 6px 20px #0003;animation:gtSlideIn .3s ease-out;pointer-events:auto}.gt-item--success{border:1px solid var(--state-ok-border);background-image:linear-gradient(var(--state-ok-bg),var(--state-ok-bg));color:var(--color-success-text)}.gt-item--error{border:1px solid var(--state-error-border);background-image:linear-gradient(var(--state-error-bg),var(--state-error-bg));color:var(--color-danger-text)}.gt-item--info{border:1px solid var(--crud-border);color:var(--color-info)}.gt-item--warning{border:1px solid var(--state-warn-border);background-image:linear-gradient(var(--state-warn-bg),var(--state-warn-bg));color:var(--color-warning-text)}.gt-icon{flex-shrink:0;margin-top:.15rem}.gt-msg{flex:1;overflow-wrap:anywhere}.gt-close{background:none;border:none;color:inherit;opacity:.6;cursor:pointer;padding:2px;display:flex;align-items:center}.gt-close:hover{opacity:1}@keyframes gtSlideIn{0%{opacity:0;transform:translate(60px)}to{opacity:1;transform:translate(0)}}@media(max-width:480px){.gt-container{top:.5rem;right:.5rem;left:.5rem;width:auto;max-width:none}}.gate-form{width:100%;display:flex;flex-direction:column;align-items:stretch;text-align:left}.gate-form-title{font-size:1.2rem;text-align:center}.gate-form-note{margin-top:6px;font-size:.86rem;line-height:1.6;color:var(--color-text-secondary);text-align:center;overflow-wrap:anywhere}.gate-form-error{display:flex;gap:8px;align-items:flex-start;margin-top:12px;padding:10px 12px;border-radius:10px;background:var(--state-error-bg);color:var(--color-danger-text);font-size:.86rem;line-height:1.6;overflow-wrap:anywhere}.gate-form-error svg{flex:none;margin-top:3px}.gate-field-label{margin-top:14px;margin-bottom:6px;font-size:.84rem;font-weight:600;color:var(--color-text-secondary)}.gate .gate-input{font-size:1rem;min-height:44px}#gate-employee-no{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.gate-password-wrap{position:relative}.gate-password-wrap .gate-input{padding-right:44px}.gate-reveal{position:absolute;top:50%;right:6px;transform:translateY(-50%);width:34px;height:34px;border:0;border-radius:8px;background:transparent;color:var(--color-text-muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.gate-reveal:hover,.gate-reveal:focus-visible{background:var(--hover-bg);color:var(--color-text-primary)}.gate-remember{display:flex;align-items:flex-start;gap:8px;margin-top:12px;font-size:.86rem;line-height:1.5;color:var(--color-text-secondary);cursor:pointer}.gate-remember input{width:18px;height:18px;margin-top:1px;flex:none;accent-color:var(--color-primary)}.gate-remember small{display:block;color:var(--color-text-muted);font-size:.78rem}.gate-form .gate-submit,.gate-form .gate-google,.gate-form .gate-signout{width:100%;justify-content:center;min-height:44px}.gate-form .gate-submit{margin-top:16px}.gate-form .gate-signout{margin-top:10px}.gate-or{display:flex;align-items:center;gap:10px;margin:14px 0 12px;font-size:.78rem;color:var(--color-text-muted)}.gate-or:before,.gate-or:after{content:"";flex:1;height:1px;background:var(--crud-border)}.gate-google-mark{width:18px;height:18px;flex:none}.gate-form-hint{display:flex;gap:6px;align-items:flex-start;margin-top:10px;font-size:.76rem;line-height:1.55;color:var(--color-text-muted)}.gate-form-hint svg{flex:none;margin-top:2px}.gate-form-problem{min-height:1.4em;margin-top:8px;font-size:.82rem;color:var(--color-danger-text)}.gate{position:fixed;inset:0;z-index:9000;overflow:hidden;background:var(--gate-bg);color:var(--color-text-primary);transition:opacity .24s var(--ease-standard)}.gate.is-pending{opacity:0;pointer-events:none}.gate-sky,.gate-vignette{position:absolute;inset:0;pointer-events:none}.gate-sky{background:var(--gate-sky)}.gate-vignette{background:var(--gate-vignette)}.gate-field{position:absolute;inset:0;display:block;pointer-events:none}.gate-theme{position:absolute;top:max(16px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));z-index:3;width:42px;height:42px;border-radius:50%;border:1px solid var(--gate-chip-edge);background:var(--gate-chip-bg);color:var(--color-text-primary);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:transform var(--duration-fast) var(--ease-standard),box-shadow var(--duration-fast) var(--ease-standard)}.gate-theme:hover{transform:rotate(-12deg) scale(1.06);box-shadow:var(--shadow-brand-glow)}.gate-theme:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px}.gate-theme-icon{display:inline-flex;animation:gateIconSwap .52s var(--ease-out-back) both}@keyframes gateIconSwap{0%{transform:rotate(-120deg) scale(.4);opacity:0}to{transform:rotate(0) scale(1);opacity:1}}html.gate-vt::view-transition-old(root),html.gate-vt::view-transition-new(root){animation:none;mix-blend-mode:normal}.gate-main{position:relative;z-index:2;height:100%;display:flex;align-items:center;justify-content:center;padding:24px 16px;overflow-y:auto}.gate-stage{position:relative;width:440px;max-width:100%;margin:auto;perspective:1100px}.gate-glass{position:absolute;inset:0;border-radius:26px;backdrop-filter:blur(18px) saturate(1.35);-webkit-backdrop-filter:blur(18px) saturate(1.35)}.gate-card{position:relative;isolation:isolate;border-radius:26px;padding:30px 28px 18px;text-align:center;background:var(--gate-card-bg);border:1px solid var(--gate-card-edge);box-shadow:var(--gate-card-shadow);transform:rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg));transform-style:preserve-3d;will-change:transform}.gate-card:before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:radial-gradient(420px circle at var(--glare-x, 50%) var(--glare-y, 0%),var(--gate-glare),transparent 60%);opacity:var(--glare, 0);pointer-events:none}@property --gate-angle{syntax: "<angle>"; inherits: false; initial-value: 0deg;}.gate-card:after{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1.5px;background:conic-gradient(from var(--gate-angle),transparent 0deg,var(--gate-ring-1) 40deg,var(--gate-ring-2) 80deg,transparent 130deg,transparent 360deg);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);animation:gateRing 5.5s linear infinite;pointer-events:none}@keyframes gateRing{to{--gate-angle: 360deg}}.gate-head{display:flex;flex-direction:column;align-items:center}.gate-mark{width:74px;height:74px;overflow:visible;margin-bottom:12px;filter:drop-shadow(0 10px 18px rgba(234,88,12,.28))}.gate-mark-face.is-top{fill:var(--gate-mark-top)}.gate-mark-face.is-left{fill:var(--gate-mark-left)}.gate-mark-face.is-right{fill:var(--gate-mark-right)}.gate-mark-tape{fill:var(--gate-mark-tape)}.gate-mark-label-bg{fill:var(--color-bg-secondary)}.gate-mark-label-stripe{fill:var(--brand-coral)}.gate-mark-label-bar{fill:var(--color-text-primary)}.gate-mark-beam-stop{stop-color:var(--gate-beam-color)}.gate-mark-beam-stop.is-end{stop-opacity:0}.gate-mark-edges{fill:none;stroke:var(--gate-mark-edge);stroke-width:1.4;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:0}.gate-mark-beam{opacity:0;transform-origin:32px 20px;transform:scaleY(.2)}.gate-title{display:flex;justify-content:center;gap:.06em;font-family:var(--font-display);font-size:2.35rem;font-weight:900;line-height:1.15;letter-spacing:.08em;perspective:600px}.gate-char{display:inline-block;background-image:var(--gate-title);background-size:calc(var(--n) * 100%) 100%;background-position:calc(var(--i) / (var(--n) - 1) * 100%) 0;-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 3px 10px rgba(234,88,12,.22))}.gate-subtitle{margin-top:6px;font-family:var(--font-mono);font-size:.72rem;font-weight:600;letter-spacing:.34em;color:var(--color-text-secondary)}.gate-greeting{display:inline-flex;align-items:center;gap:6px;margin-top:14px;padding:4px 12px;border-radius:var(--radius-pill);background:var(--gate-chip-bg);border:1px solid var(--gate-chip-edge);font-size:.85rem;font-weight:600;color:var(--color-text-secondary)}.gate-greeting svg{color:var(--gate-accent-text)}.gate-greeting-date{color:var(--color-text-muted);font-weight:500}.gate-body{margin-top:22px;min-height:168px;display:flex;flex-direction:column;align-items:center;justify-content:center;animation:gateBodyIn .52s var(--ease-out-expo) both}@keyframes gateBodyIn{0%{opacity:0;transform:translateY(10px);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}.gate-scan{position:relative;width:220px;max-width:80%;height:64px;padding:8px 14px;border-radius:10px;background:var(--gate-scan-bg);border:1px solid var(--gate-chip-edge);overflow:hidden}.gate-scan-bars{display:block;width:100%;height:100%}.gate-scan-bar{fill:var(--gate-scan-bar);animation:gateBarPulse 1.6s ease-in-out infinite}@keyframes gateBarPulse{0%,to{opacity:.88}50%{opacity:.45}}.gate-scan-laser{position:absolute;left:0;right:0;top:50%;height:2px;border-radius:2px;background:linear-gradient(90deg,transparent,var(--gate-laser) 18%,var(--gate-laser) 82%,transparent);box-shadow:0 0 12px 2px #ef44448c,0 0 32px 6px #ef44442e;animation:gateLaser 1.5s cubic-bezier(.45,0,.55,1) infinite alternate}@keyframes gateLaser{0%{transform:translateY(-26px)}to{transform:translateY(26px)}}.gate-loading-text{margin-top:16px;font-size:.95rem;color:var(--color-text-secondary)}.gate-dots{display:inline-flex;gap:3px;margin-left:4px;vertical-align:middle}.gate-dots i{width:4px;height:4px;border-radius:50%;background:currentColor;animation:gateDot 1.2s ease-in-out infinite}.gate-dots i:nth-child(2){animation-delay:.15s}.gate-dots i:nth-child(3){animation-delay:.3s}@keyframes gateDot{0%,70%,to{opacity:.25;transform:none}35%{opacity:1;transform:translateY(-3px)}}.gate-check{width:58px;height:58px;fill:none;stroke-linecap:round;stroke-linejoin:round}.gate-check-ring{stroke:var(--color-success-text);stroke-width:3;stroke-dasharray:1;transform-box:fill-box;transform-origin:center;transform:rotate(-90deg);animation:gateDraw .62s var(--ease-out-expo) both}.gate-check-tick{stroke:var(--color-success-text);stroke-width:4;stroke-dasharray:1;animation:gateDraw .42s .26s var(--ease-out-expo) both}@keyframes gateDraw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.gate-welcome-hi{margin-top:10px;font-size:.9rem;font-weight:600;letter-spacing:.2em;color:var(--color-text-secondary);animation:gateRise .52s .16s var(--ease-out-expo) both}.gate-welcome-name{display:inline-flex;align-items:center;gap:10px;margin-top:4px;animation:gateRise .62s .24s var(--ease-out-back) both}.gate-welcome-who{font-size:1.55rem;font-weight:800;color:var(--color-text-primary);overflow-wrap:anywhere}.gate-progress{width:180px;max-width:70%;height:4px;margin-top:16px;border-radius:var(--radius-pill);background:var(--gate-chip-edge);overflow:hidden}.gate-progress-fill{display:block;height:100%;border-radius:inherit;background:var(--brand-gradient);transform-origin:left center;animation:gateProgress var(--gate-welcome-ms) var(--ease-standard) both}@keyframes gateProgress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.gate-welcome-sub{margin-top:8px;font-size:.8rem;color:var(--color-text-muted)}@keyframes gateRise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.gate-problem-icon{width:58px;height:58px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--state-warn-bg);color:var(--color-warning-text);box-shadow:0 0 0 6px var(--state-warn-bg);animation:gatePop .56s var(--ease-out-back) both}.gate-problem-icon.is-login{background:var(--seg-active-bg);color:var(--seg-active-text);box-shadow:0 0 0 6px var(--seg-active-bg)}.gate-problem-icon.is-disabled,.gate-problem-icon.is-forbidden{background:var(--state-error-bg);color:var(--color-danger-text);box-shadow:0 0 0 6px var(--state-error-bg)}@keyframes gatePop{0%{opacity:0;transform:scale(.4) rotate(-20deg)}to{opacity:1;transform:none}}.gate-problem-title{margin-top:14px;font-size:1.3rem}.gate-problem-message{margin-top:6px;line-height:1.7;color:var(--color-text-secondary);overflow-wrap:anywhere}.gate-problem-hint{margin-top:6px;font-size:.85rem;line-height:1.6;color:var(--color-text-muted)}.gate-problem-code{margin-top:8px;font-size:.76rem;color:var(--color-text-muted);overflow-wrap:anywhere}.gate-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;margin-top:1.25rem}.gate .gate-cta{position:relative;overflow:hidden}.gate .gate-cta:after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.45) 50%,transparent 70%);transform:translate(-120%);animation:gateSweep 3.2s 1.2s ease-in-out infinite;pointer-events:none}@keyframes gateSweep{0%,55%{transform:translate(-120%)}85%,to{transform:translate(120%)}}.gate-foot{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:5px;margin-top:22px;padding-top:12px;border-top:1px solid var(--crud-border);font-size:.72rem;color:var(--color-text-muted)}.gate-foot-sep{opacity:.6}.gate-foot-ver{font-family:var(--font-mono)}.gate-intro,.gate-intro-cover{position:fixed;inset:0;z-index:5;pointer-events:none;animation:gateIntroSafety 0s linear 4s forwards}.gate-intro-cover{background:#02040a}@keyframes gateIntroSafety{to{opacity:0;visibility:hidden}}.gate:not(.is-revealed) .gate-stage,.gate:not(.is-revealed) .gate-theme{visibility:hidden;animation:gateSafetyReveal 0s linear 4.2s forwards}@keyframes gateSafetyReveal{to{visibility:visible}}.gate.is-revealed .gate-stage{animation:gateStageIn .9s var(--ease-out-expo) both}.gate.is-revealed .gate-card,.gate.is-revealed .gate-glass{animation:gateCardIn .9s var(--ease-out-expo) both}@keyframes gateStageIn{0%{transform:translateY(26px) scale(.92)}to{transform:none}}@keyframes gateCardIn{0%{opacity:0;filter:blur(10px)}to{opacity:1;filter:none}}.gate.is-revealed .gate-glass{animation-name:gateFade}.gate.is-revealed .gate-theme{animation:gateFade .6s .3s var(--ease-standard) both}@keyframes gateFade{0%{opacity:0}to{opacity:1}}.gate.is-revealed .gate-mark-edges{animation:gateDraw .9s .12s var(--ease-out-expo) both}.gate.is-revealed .gate-mark-face{animation:gateFaceIn .6s var(--ease-out-back) both}.gate.is-revealed .gate-mark-face.is-left{animation-delay:.38s}.gate.is-revealed .gate-mark-face.is-right{animation-delay:.46s}.gate.is-revealed .gate-mark-face.is-top{animation-delay:.54s}@keyframes gateFaceIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.gate.is-revealed .gate-mark-tape{animation:gateFade .4s .76s ease-out both}.gate.is-revealed .gate-mark-label{animation:gateFade .36s .86s ease-out both}.gate.is-revealed .gate-char{animation:gateCharIn .76s calc(.26s + var(--i) * 90ms) var(--ease-out-back) both,gateGlint 6.5s calc(2.2s + var(--i) * .11s) ease-in-out infinite}@keyframes gateCharIn{0%{opacity:0;transform:translateY(.55em) rotateX(-75deg) scale(.86);filter:blur(6px) drop-shadow(0 3px 10px rgba(234,88,12,0))}to{opacity:1;transform:none;filter:drop-shadow(0 3px 10px rgba(234,88,12,.22))}}@keyframes gateGlint{0%,86%,to{filter:drop-shadow(0 3px 10px rgba(234,88,12,.22)) brightness(1)}92%{filter:drop-shadow(0 0 14px rgba(251,191,36,.75)) brightness(1.45)}}.gate.is-revealed .gate-subtitle{animation:gateTrack 1.1s .52s var(--ease-out-expo) both}@keyframes gateTrack{0%{opacity:0;letter-spacing:1.1em}to{opacity:1;letter-spacing:.34em}}.gate.is-revealed .gate-greeting{animation:gateRise .64s .7s var(--ease-out-expo) both}.gate.is-revealed .gate-foot{animation:gateFade .7s .9s ease-out both}.gate[data-phase=ready] .gate-mark-beam,.gate[data-phase=welcome] .gate-mark-beam,.gate[data-phase=leaving] .gate-mark-beam{animation:gateBeam .9s var(--ease-out-expo) forwards}@keyframes gateBeam{0%{opacity:0;transform:scaleY(.2)}to{opacity:1;transform:scaleY(1)}}.gate.is-leaving{pointer-events:none;animation:gateOut var(--gate-leave-ms) cubic-bezier(.55,0,.75,.2) forwards}.gate.is-leaving .gate-stage{animation:gateStageOut var(--gate-leave-ms) cubic-bezier(.6,0,.8,.25) forwards}.gate.is-leaving .gate-card,.gate.is-leaving .gate-glass{animation:gateCardOut var(--gate-leave-ms) cubic-bezier(.6,0,.8,.25) forwards}.gate.is-leaving:after{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;background:radial-gradient(circle at 50% 48%,rgba(255,237,213,.9) 0%,rgba(251,191,36,.45) 26%,transparent 62%);animation:gateBloom var(--gate-leave-ms) ease-out forwards}@keyframes gateOut{0%,35%{opacity:1}to{opacity:0}}@keyframes gateStageOut{0%{transform:none}to{transform:translateY(-8px) scale(1.18)}}.gate.is-leaving .gate-glass{animation-name:gateFadeOut}@keyframes gateFadeOut{0%{opacity:1}to{opacity:0}}@keyframes gateCardOut{0%{opacity:1;filter:none}to{opacity:0;filter:blur(12px)}}@keyframes gateBloom{0%{opacity:0;transform:scale(.6)}35%{opacity:1}to{opacity:0;transform:scale(1.4)}}.gate[data-motion=calm].is-leaving:after{display:none}.gate.is-lite .gate-card:after,.gate.is-lite .gate-char,.gate.is-lite .gate-cta:after{animation:none}.gate.is-lite .gate-card:after{display:none}.gate[data-motion=still],.gate[data-motion=still] *,.gate[data-motion=still] *:before,.gate[data-motion=still] *:after{animation:none!important;transition:none!important}.gate[data-motion=still] .gate-card:after{display:none}@media(prefers-reduced-motion:reduce){.gate *,.gate *:before,.gate *:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition:none!important}}@media(max-width:480px){.gate-card{padding:24px 18px 14px;border-radius:22px}.gate-glass{border-radius:22px}.gate-title{font-size:2rem}.gate-mark{width:62px;height:62px}.gate-body{min-height:150px}.gate-theme{width:40px;height:40px}}.home-page{display:flex;flex-direction:column;gap:1.25rem}.home-hero h1{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem .75rem;font-size:1.6rem}.home-hero p{margin-top:.35rem;color:var(--color-text-secondary)}.home-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));gap:1rem;align-items:start}.home-group{padding:1rem 1.1rem}.home-group h2{font-size:.85rem;font-weight:700;letter-spacing:.08em;color:var(--color-text-muted);margin-bottom:.5rem}.home-group ul{list-style:none;display:flex;flex-direction:column;gap:.15rem}.home-link{display:flex;align-items:center;gap:.6rem;min-height:40px;padding:.4rem .6rem;border-radius:8px;color:var(--color-text-primary);font-weight:600}.home-link svg{color:var(--color-text-secondary);flex-shrink:0}.home-link:hover{background:var(--hover-bg)}.home-link:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:-2px}@media(max-width:768px){.home-hero h1{font-size:1.3rem}.home-link{min-height:44px}}.print-page{position:relative;z-index:1;min-height:100dvh;padding:1rem;display:flex;flex-direction:column;align-items:center;gap:1rem}.print-toolbar{display:flex;gap:.5rem;width:100%;max-width:210mm;justify-content:flex-end}.print-sheet{width:100%;max-width:210mm;min-height:120mm;padding:10mm 5mm;background:var(--color-bg-secondary);color:var(--color-text-primary);border:1px solid var(--crud-border);box-shadow:var(--shadow-glass-sm);line-height:1.7}.print-sheet h1{font-size:1.2rem;margin-bottom:.5rem}.print-problem{max-width:210mm;width:100%}@media print{.print-page{padding:0;min-height:0}.print-sheet{max-width:none;min-height:0;padding:0;border:none;box-shadow:none;background:none;color:inherit}}.fps-wrap{position:relative;z-index:1;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:1rem}.fps-card{width:440px;max-width:100%;padding:1.75rem 1.5rem 1.5rem;text-align:center;background:var(--color-bg-secondary)}.fps-brand{display:inline-flex;align-items:center;gap:.5rem;margin-bottom:1.25rem;font-size:1.05rem;font-weight:700;color:var(--color-text-secondary)}.fps-logo{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;background:var(--gradient-primary);color:var(--btn-primary-text)}.fps-icon-ring{width:60px;height:60px;margin:0 auto .85rem;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--state-warn-bg);color:var(--color-warning-text)}.fps-title{font-size:1.3rem;margin-bottom:.5rem}.fps-message{color:var(--color-text-secondary);line-height:1.7;overflow-wrap:anywhere}.fps-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;margin-top:1.5rem}
