:root{--color-primary: #007AFF;--color-primary-dark: #0056D3;--color-primary-light: #E5F1FF;--color-success: #34C759;--color-success-light: #E8F9EC;--color-warning: #FF9500;--color-warning-light: #FFF4E5;--color-danger: #FF3B30;--color-danger-light: #FFE5E3;--color-background: #F2F2F7;--color-surface: #FFFFFF;--color-surface-elevated: #FFFFFF;--color-border: #E5E5EA;--color-divider: #C7C7CC;--text-primary: #1C1C1E;--text-secondary: #8E8E93;--text-tertiary: #C7C7CC;--text-inverse: #FFFFFF;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .12);--shadow-xl: 0 16px 48px rgba(0, 0, 0, .16);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-full: 9999px;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-base: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-size-3xl: 32px;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--transition-fast: .15s ease;--transition-base: .25s ease;--transition-slow: .35s ease;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;touch-action:manipulation}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:1.5;color:var(--text-primary);background-color:var(--color-background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;overflow-x:hidden}#app{min-height:100vh;display:flex;flex-direction:column}.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}.container{width:100%;max-width:600px;margin:0 auto;padding:var(--space-md)}.container-full{width:100%;min-height:100vh;padding:var(--space-md);padding-top:calc(var(--space-md) + var(--safe-top));padding-bottom:calc(var(--space-md) + var(--safe-bottom))}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-bold);line-height:1.2;color:var(--text-primary)}h1{font-size:var(--font-size-3xl)}h2{font-size:var(--font-size-2xl)}h3{font-size:var(--font-size-xl)}h4{font-size:var(--font-size-lg)}.text-xs{font-size:var(--font-size-xs)}.text-sm{font-size:var(--font-size-sm)}.text-base{font-size:var(--font-size-base)}.text-lg{font-size:var(--font-size-lg)}.text-xl{font-size:var(--font-size-xl)}.text-primary{color:var(--text-primary)}.text-secondary{color:var(--text-secondary)}.text-success{color:var(--color-success)}.text-danger{color:var(--color-danger)}.text-primary-blue{color:var(--color-primary)}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.font-bold{font-weight:var(--font-weight-bold)}.text-center{text-align:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);font-family:inherit;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);line-height:1.25;text-decoration:none;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent;position:relative;overflow:hidden}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.btn-primary{background:var(--color-primary);color:var(--text-inverse);box-shadow:var(--shadow-sm)}.btn-primary:active{background:var(--color-primary-dark)}.btn-secondary{background:var(--color-surface);color:var(--color-primary);border:1px solid var(--color-border)}.btn-secondary:active{background:var(--color-background)}.btn-success{background:var(--color-success);color:var(--text-inverse)}.btn-success:active{filter:brightness(.9)}.btn-danger{background:var(--color-danger);color:var(--text-inverse)}.btn-danger:active{filter:brightness(.9)}.btn-ghost{background:transparent;color:var(--color-primary)}.btn-ghost:active{background:var(--color-primary-light)}.btn-sm{padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm)}.btn-lg{padding:calc(var(--space-md) + 4px) var(--space-xl);font-size:var(--font-size-lg)}.btn-full{width:100%}.btn-icon{width:44px;height:44px;padding:0;border-radius:var(--radius-full)}.card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.card-elevated{box-shadow:var(--shadow-md)}.card-flat{box-shadow:none;border:1px solid var(--color-border)}.card-header{padding:var(--space-lg);border-bottom:1px solid var(--color-border)}.card-body{padding:var(--space-lg)}.card-footer{padding:var(--space-md) var(--space-lg);border-top:1px solid var(--color-border);background:var(--color-background)}.form-group{margin-bottom:var(--space-lg)}.form-label{display:block;margin-bottom:var(--space-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-secondary)}.form-input{width:100%;padding:var(--space-md);font-family:inherit;font-size:var(--font-size-base);color:var(--text-primary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:all var(--transition-fast);-webkit-appearance:none}.form-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.form-input::placeholder{color:var(--text-tertiary)}.form-input:disabled{background:var(--color-background);color:var(--text-secondary);cursor:not-allowed}.form-error{margin-top:var(--space-xs);font-size:var(--font-size-sm);color:var(--color-danger)}.nav-header{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:var(--space-md);padding-top:calc(var(--space-md) + var(--safe-top));background:var(--color-surface);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--color-border)}.nav-header-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary);flex:1;text-align:center}.nav-header-btn{min-width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:var(--radius-full);color:var(--color-primary);font-size:var(--font-size-lg);cursor:pointer;transition:background var(--transition-fast)}.nav-header-btn:active{background:var(--color-background)}.badge{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);border-radius:var(--radius-full)}.badge-success{background:var(--color-success-light);color:var(--color-success)}.badge-warning{background:var(--color-warning-light);color:var(--color-warning)}.badge-danger{background:var(--color-danger-light);color:var(--color-danger)}.badge-primary{background:var(--color-primary-light);color:var(--color-primary)}.modal-overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:var(--space-md);background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:fadeIn .2s ease}.modal-content{width:100%;max-width:400px;max-height:90vh;background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);overflow:hidden;animation:slideUp .3s ease}.modal-header{padding:var(--space-xl);text-align:center}.modal-header-success{background:linear-gradient(135deg,var(--color-success) 0%,#30B350 100%);color:#fff}.modal-header-error{background:linear-gradient(135deg,var(--color-danger) 0%,#E02E24 100%);color:#fff}.modal-header-icon{font-size:56px;margin-bottom:var(--space-sm);animation:bounceIn .5s ease}.modal-body{padding:var(--space-lg);overflow-y:auto}.modal-footer{display:flex;gap:var(--space-md);padding:var(--space-md) var(--space-lg) calc(var(--space-lg) + var(--safe-bottom));background:var(--color-background)}.list{display:flex;flex-direction:column;gap:var(--space-sm)}.list-item{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md);background:var(--color-surface);border-radius:var(--radius-md);transition:background var(--transition-fast)}.list-item:active{background:var(--color-background)}.list-item-icon{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:var(--color-primary-light);color:var(--color-primary);border-radius:var(--radius-md);font-size:var(--font-size-xl);flex-shrink:0}.list-item-content{flex:1;min-width:0}.list-item-title{font-weight:var(--font-weight-medium);color:var(--text-primary);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-item-subtitle{font-size:var(--font-size-sm);color:var(--text-secondary)}.list-item-action{color:var(--text-tertiary);flex-shrink:0}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-2xl) var(--space-lg);text-align:center}.empty-state-icon{font-size:64px;margin-bottom:var(--space-lg);opacity:.5}.empty-state-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin-bottom:var(--space-sm)}.empty-state-message{font-size:var(--font-size-base);color:var(--text-secondary);max-width:280px}.loading-spinner{width:24px;height:24px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}.loading-spinner-lg{width:40px;height:40px;border-width:3px}.loading-overlay{position:fixed;inset:0;z-index:2000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-lg);background:var(--color-background);opacity:.95;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.scanner-container{position:relative;background:#000;border-radius:var(--radius-lg);overflow:hidden}.scanner-region{position:relative;width:100%;aspect-ratio:9/16;max-height:60vh}.scanner-region video{width:100%;height:100%;object-fit:cover}.scanner-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}.scanner-frame{width:80%;max-width:320px;height:100px;border:2px solid var(--color-success);border-radius:var(--radius-md);box-shadow:0 0 0 9999px #00000080}.scanner-laser{position:absolute;top:50%;left:10%;right:10%;height:2px;background:var(--color-danger);box-shadow:0 0 4px var(--color-danger);animation:scanLaser 2s ease-in-out infinite}.scanner-hint{position:absolute;bottom:var(--space-xl);left:var(--space-lg);right:var(--space-lg);padding:var(--space-md) var(--space-lg);background:#000c;color:#fff;font-size:var(--font-size-sm);text-align:center;border-radius:var(--radius-full);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{transform:scale(1.05)}70%{transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes scanLaser{0%,to{opacity:0;transform:translateY(-40px)}50%{opacity:1;transform:translateY(40px)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@media(min-width:768px){.container{padding:var(--space-xl)}.modal-content{max-width:480px}}@supports (padding-top: env(safe-area-inset-top)){.safe-area-top{padding-top:env(safe-area-inset-top)}.safe-area-bottom{padding-bottom:env(safe-area-inset-bottom)}}@media(prefers-color-scheme:dark){:root{--color-background: #000000;--color-surface: #1C1C1E;--color-surface-elevated: #2C2C2E;--color-border: #38383A;--text-primary: #FFFFFF;--text-secondary: #8E8E93;--text-tertiary: #636366;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4)}}@media(pointer:coarse){.btn,.list-item,.nav-header-btn{min-height:44px}.form-input{font-size:16px}}@media(min-width:1024px){.mobile-only{display:none!important}.container{max-width:1200px;padding:var(--space-xl)}.desktop-layout{margin-left:280px;min-height:100vh}.desktop-main-content{padding:var(--space-xl);max-width:1400px;margin:0 auto}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-xl);padding-bottom:var(--space-lg);border-bottom:1px solid var(--color-border)}.page-header-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--text-primary)}.page-header-actions{display:flex;gap:var(--space-md)}.desktop-grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-xl)}.desktop-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-xl)}.desktop-grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-xl)}.desktop-card{background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);padding:var(--space-xl)}.stats-grid-desktop{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-lg);margin-bottom:var(--space-xl)}.stat-card-desktop{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-xl);box-shadow:var(--shadow-sm);text-align:center;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.stat-card-desktop:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.stat-card-desktop .stat-icon{width:56px;height:56px;margin:0 auto var(--space-md);font-size:28px;display:flex;align-items:center;justify-content:center;background:var(--color-primary-light);border-radius:var(--radius-lg)}.stat-card-desktop .stat-value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--text-primary);margin-bottom:var(--space-xs)}.stat-card-desktop .stat-label{font-size:var(--font-size-sm);color:var(--text-secondary)}.desktop-table-container{background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);overflow:hidden}.desktop-table{width:100%;border-collapse:collapse}.desktop-table th,.desktop-table td{padding:var(--space-md) var(--space-lg);text-align:left;border-bottom:1px solid var(--color-border)}.desktop-table th{background:var(--color-background);font-weight:var(--font-weight-semibold);color:var(--text-secondary);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.5px}.desktop-table tbody tr:hover{background:var(--color-background)}.form-grid-desktop{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-xl)}.form-group-desktop{margin-bottom:var(--space-xl)}.form-input-desktop{padding:calc(var(--space-md) + 4px) var(--space-lg);font-size:var(--font-size-lg)}.btn-desktop{padding:var(--space-md) var(--space-xl);font-size:var(--font-size-lg)}.desktop-nav{display:flex;gap:var(--space-xs);background:var(--color-surface);padding:var(--space-xs);border-radius:var(--radius-lg);margin-bottom:var(--space-xl)}.desktop-nav-item{padding:var(--space-md) var(--space-xl);border-radius:var(--radius-md);font-weight:var(--font-weight-medium);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.desktop-nav-item:hover{background:var(--color-background);color:var(--text-primary)}.desktop-nav-item.active{background:var(--color-primary);color:#fff}.modal-content{max-width:560px}.modal-content.large{max-width:800px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-background)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-divider)}}@media(min-width:1400px){.container{max-width:1400px}.desktop-main-content{max-width:1600px}.stats-grid-desktop{grid-template-columns:repeat(6,1fr)}.desktop-grid-4{grid-template-columns:repeat(4,1fr)}}.nav-header{position:fixed;top:0;left:0;right:0;height:60px;background:var(--color-surface);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-md);z-index:100;box-shadow:var(--shadow-sm)}.nav-header-title{font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary);margin:0}.nav-header-btn{width:40px;height:40px;border:none;background:transparent;color:var(--color-primary);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .2s;flex-shrink:0}.nav-header-btn:hover{background:var(--color-background)}.nav-header-btn svg{width:24px;height:24px}.nav-header-spacer{width:40px;flex-shrink:0}.nav-header .user-avatar{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--color-primary-light);color:var(--color-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);border-radius:var(--radius-full);border:2px solid var(--color-primary)}.nav-header .user-avatar.admin{background:var(--color-primary);color:var(--text-inverse);border-color:var(--color-primary-dark)}@media(min-width:1024px){.nav-header.mobile-only{display:none!important}}.global-scanner-indicator[data-v-463cfdd7]{position:fixed;top:20px;right:20px;z-index:9999;background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-dark) 100%);color:#fff;padding:var(--space-md) var(--space-lg);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);min-width:280px;animation:slideIn-463cfdd7 .3s ease}@media(max-width:640px){.global-scanner-indicator[data-v-463cfdd7]{top:10px;right:10px;left:10px;min-width:auto}}.indicator-content[data-v-463cfdd7]{display:flex;align-items:center;gap:var(--space-md)}.spinner[data-v-463cfdd7]{width:20px;height:20px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin-463cfdd7 .8s linear infinite}.indicator-text[data-v-463cfdd7]{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);flex:1}.indicator-code[data-v-463cfdd7]{font-family:Courier New,monospace;font-size:var(--font-size-xs);background:#fff3;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm)}.fade-enter-active[data-v-463cfdd7],.fade-leave-active[data-v-463cfdd7]{transition:opacity .3s ease,transform .3s ease}.fade-enter-from[data-v-463cfdd7],.fade-leave-to[data-v-463cfdd7]{opacity:0;transform:translateY(-10px)}@keyframes slideIn-463cfdd7{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes spin-463cfdd7{to{transform:rotate(360deg)}}.toast-container[data-v-e5c136ff]{position:fixed;top:20px;right:20px;z-index:10000;display:flex;flex-direction:column;gap:var(--space-sm);max-width:400px;pointer-events:none}@media(max-width:640px){.toast-container[data-v-e5c136ff]{top:10px;right:10px;left:10px;max-width:none}}.toast[data-v-e5c136ff]{display:flex;align-items:flex-start;gap:var(--space-md);padding:var(--space-md);background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);border-left:4px solid;min-width:300px;pointer-events:auto;cursor:pointer;transition:all .2s ease}@media(max-width:640px){.toast[data-v-e5c136ff]{min-width:auto}}.toast[data-v-e5c136ff]:hover{transform:translate(-4px);box-shadow:0 8px 32px #0003}.toast-success[data-v-e5c136ff]{border-left-color:var(--color-success);background:linear-gradient(135deg,rgba(34,197,94,.05) 0%,var(--color-surface) 100%)}.toast-error[data-v-e5c136ff]{border-left-color:var(--color-danger);background:linear-gradient(135deg,rgba(239,68,68,.05) 0%,var(--color-surface) 100%)}.toast-warning[data-v-e5c136ff]{border-left-color:var(--color-warning);background:linear-gradient(135deg,rgba(251,191,36,.05) 0%,var(--color-surface) 100%)}.toast-info[data-v-e5c136ff]{border-left-color:var(--color-primary);background:linear-gradient(135deg,rgba(59,130,246,.05) 0%,var(--color-surface) 100%)}.toast-icon[data-v-e5c136ff]{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:var(--font-size-sm);font-weight:700}.toast-success .toast-icon[data-v-e5c136ff]{background:var(--color-success);color:#fff}.toast-error .toast-icon[data-v-e5c136ff]{background:var(--color-danger);color:#fff}.toast-warning .toast-icon[data-v-e5c136ff]{background:var(--color-warning);color:#fff}.toast-info .toast-icon[data-v-e5c136ff]{background:var(--color-primary);color:#fff}.toast-content[data-v-e5c136ff]{flex:1;min-width:0}.toast-message[data-v-e5c136ff]{margin:0;font-size:var(--font-size-sm);color:var(--text-primary);line-height:1.5;word-wrap:break-word}.toast-close[data-v-e5c136ff]{flex-shrink:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);font-size:var(--font-size-xs);transition:all .2s ease;padding:0}.toast-close[data-v-e5c136ff]:hover{background:var(--color-background);color:var(--text-primary)}.toast-enter-active[data-v-e5c136ff],.toast-leave-active[data-v-e5c136ff]{transition:all .3s ease}.toast-enter-from[data-v-e5c136ff]{opacity:0;transform:translate(100%)}.toast-leave-to[data-v-e5c136ff]{opacity:0;transform:translate(100%) scale(.8)}.toast-move[data-v-e5c136ff]{transition:transform .3s ease}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif}#app{min-height:100vh}
