*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{height:100%;height:100dvh;overflow:hidden}:root{--primary-color: #1a3a5c;--primary-hover: #142d47;--primary-light: #d6e4f0;--accent-color: #e87722;--accent-hover: #d06a1e;--success-color: #10b981;--error-color: #ef4444;--warning-color: #f59e0b;--text-primary: #1a3a5c;--text-secondary: #5a7a96;--border-color: #d6e4f0;--background: #ffffff;--background-alt: #f4f7fa;--shadow: 0 1px 3px 0 rgba(26, 58, 92, .1), 0 1px 2px 0 rgba(26, 58, 92, .06);--shadow-lg: 0 10px 15px -3px rgba(26, 58, 92, .1), 0 4px 6px -2px rgba(26, 58, 92, .05);--border-radius: 8px;--transition: all .2s ease}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(135deg,#0f2133,#1a3a5c,#2a5580);height:100%;height:100dvh;display:flex;align-items:center;justify-content:center;padding:16px;padding:calc(16px + env(safe-area-inset-top,0px)) calc(16px + env(safe-area-inset-right,0px)) calc(16px + env(safe-area-inset-bottom,0px)) calc(16px + env(safe-area-inset-left,0px));color:var(--text-primary);line-height:1.5;overflow:hidden;overscroll-behavior:none}#app{width:100%;max-width:440px;max-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}.container{background:var(--background);border-radius:12px;box-shadow:var(--shadow-lg);padding:40px;width:100%;animation:slideUp .3s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.header{text-align:center;margin-bottom:32px}.logo{width:220px;max-width:100%;height:auto;background:#fff;border-radius:12px;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;padding:12px 16px}.logo img{width:100%;height:auto;display:block;object-fit:contain}.header h1{font-size:18px;font-weight:700;margin-bottom:8px;color:var(--text-primary)}.header p{color:var(--text-secondary);font-size:14px}.tab-container{display:flex;gap:8px;margin-bottom:24px;background:var(--background-alt);padding:4px;border-radius:var(--border-radius)}.tab{flex:1;padding:12px;border:none;background:transparent;border-radius:calc(var(--border-radius) - 2px);cursor:pointer;font-size:14px;font-weight:600;color:var(--text-secondary);transition:var(--transition)}.tab:hover{color:var(--text-primary)}.tab.active{background:var(--background);color:var(--accent-color);box-shadow:var(--shadow)}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;font-size:14px;font-weight:600;color:var(--text-primary)}.form-group input{width:100%;min-width:0;max-width:100%;padding:12px 16px;border:2px solid var(--border-color);border-radius:var(--border-radius);font-size:15px;transition:var(--transition);background:var(--background)}.form-group input:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px #e8772226}.form-group input.error{border-color:var(--error-color)}.error-message{color:var(--error-color);font-size:13px;margin-top:6px;display:flex;align-items:center;gap:4px}.success-message{color:var(--success-color);font-size:13px;margin-top:6px;display:flex;align-items:center;gap:4px}.alert{padding:12px 16px;border-radius:var(--border-radius);margin-bottom:20px;font-size:14px;display:flex;align-items:flex-start;gap:8px;animation:slideDown .3s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.alert.success{background:#d1fae5;color:#065f46;border:1px solid #6ee7b7}.alert.error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5}.alert.info{background:#d6e4f0;color:#1a3a5c;border:1px solid #a3c1db}.btn{width:100%;padding:10px 20px;border:none;border-radius:var(--border-radius);font-size:13px;font-weight:500;cursor:pointer;transition:var(--transition);position:relative;overflow:hidden}.btn-primary{background:var(--accent-color);color:#fff;box-shadow:var(--shadow)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);box-shadow:var(--shadow-lg);transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:var(--background-alt);color:var(--text-primary);border:2px solid var(--border-color)}.btn-secondary:hover:not(:disabled){background:var(--background);border-color:var(--accent-color);color:var(--accent-color)}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite;display:inline-block;margin-right:8px}@keyframes spin{to{transform:rotate(360deg)}}.text-center{text-align:center}.mt-16{margin-top:16px}.text-link{color:var(--accent-color);text-decoration:none;font-weight:600;transition:var(--transition)}.text-link:hover{text-decoration:underline;color:var(--accent-hover)}.verification-code-input{display:flex;gap:8px;justify-content:center;margin-bottom:24px}.verification-code-input input{width:48px;height:56px;text-align:center;font-size:24px;font-weight:700;border:2px solid var(--border-color);border-radius:var(--border-radius);transition:var(--transition)}.verification-code-input input:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px #e8772226}.timer{text-align:center;color:var(--text-secondary);font-size:14px;margin-bottom:16px}.timer.warning{color:var(--warning-color);font-weight:600}.timer.expired{color:var(--error-color);font-weight:600}.expired-notice{text-align:center;padding:20px 0}.expired-notice p{font-size:14px;color:var(--error-color);font-weight:600;margin-bottom:12px}.expired-notice .btn{width:100%;animation:pulse-attention 2s ease-in-out infinite}@keyframes pulse-attention{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}.resend-section{text-align:center;margin-top:16px;padding-top:16px;border-top:1px solid var(--border-color)}.resend-section p{font-size:14px;color:var(--text-secondary);margin-bottom:8px}.hidden{display:none!important}@media(max-width:480px){.container{padding:32px 24px}.header h1{font-size:16px}.verification-code-input input{width:40px;height:48px;font-size:20px}}body.app-mode{background:var(--background-alt);padding:0;align-items:stretch;justify-content:stretch;overflow:hidden;position:fixed;inset:0}body.app-mode #app{max-width:none;max-height:none;height:100%;height:100dvh;overflow:hidden}.app-shell{display:flex;height:100%;height:100dvh;width:100%;overflow:hidden}.sidebar{width:clamp(200px,22vw,33.333vw);max-width:33.333%;background:var(--primary-color);display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto;transition:width .3s ease;padding-left:env(safe-area-inset-left,0px)}.sidebar-logo{padding:20px;display:flex;align-items:center;justify-content:center;background:#fff;margin:16px;border-radius:10px}.sidebar-logo img{width:100%;max-width:180px;height:auto;object-fit:contain}.sidebar-nav{flex:1;padding:8px 12px;display:flex;flex-direction:column;gap:2px}.nav-item{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:8px;color:#ffffffb3;text-decoration:none;font-size:14px;font-weight:500;transition:var(--transition);cursor:pointer;border:none;background:none;width:100%;text-align:left}.nav-item:hover{background:#ffffff1a;color:#fff}.nav-item.active{background:#ffffff26;color:#fff;font-weight:600}.nav-item .nav-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:16px}.nav-item .nav-icon svg{display:block}.nav-badge{margin-left:auto;background:var(--accent-color);color:#fff;font-size:11px;font-weight:700;padding:2px 8px;border-radius:10px;min-width:20px;text-align:center}.sidebar-footer{padding:16px;border-top:1px solid rgba(255,255,255,.1)}.sidebar-user{display:flex;align-items:center;gap:12px;padding:8px 0;margin-bottom:8px}.sidebar-user-avatar{width:36px;height:36px;background:var(--accent-color);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:14px}.sidebar-user-info{flex:1;min-width:0}.sidebar-user-name{color:#fff;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user-role{color:#ffffff80;font-size:11px}.logout-btn{display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:8px;color:#fff9;font-size:13px;font-weight:500;transition:var(--transition);cursor:pointer;border:none;background:none;width:100%;text-align:left}.logout-btn:hover{background:#ffffff1a;color:#fff}.main-content{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0;height:100%;height:100dvh}.top-header{background:#fff;border-bottom:1px solid var(--border-color);padding:16px 32px;padding-top:calc(16px + env(safe-area-inset-top,0px));padding-right:calc(32px + env(safe-area-inset-right,0px));display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.top-header-left{display:flex;flex-direction:column}.mobile-header-logo{display:none}.top-header-title{font-size:20px;font-weight:700;color:var(--text-primary)}.top-header-subtitle{font-size:13px;color:var(--text-secondary)}.top-header-right{display:flex;align-items:center;gap:16px}.notif-bell{position:relative;background:none;border:none;cursor:pointer;padding:8px;border-radius:8px;transition:var(--transition);color:var(--text-secondary);font-size:20px}.notif-bell:hover{background:var(--background-alt);color:var(--text-primary)}.notif-bell-badge{position:absolute;top:4px;right:4px;background:var(--error-color);color:#fff;font-size:10px;font-weight:700;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center}.page-content{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:24px 32px;padding-right:calc(32px + env(safe-area-inset-right,0px))}.bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--border-color);z-index:100;padding:4px 0;padding-bottom:env(safe-area-inset-bottom,4px);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}.bottom-nav-inner{display:flex;justify-content:space-around}.bottom-nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;text-decoration:none;color:var(--text-secondary);font-size:10px;font-weight:500;transition:var(--transition);cursor:pointer;border:none;background:none;position:relative;min-width:56px}.bottom-nav-item.active{color:var(--accent-color)}.bottom-nav-item .bnav-icon{font-size:20px;line-height:1;display:flex;align-items:center;justify-content:center}.bottom-nav-item .bnav-icon svg{display:block}.bottom-nav-badge{position:absolute;top:2px;right:8px;background:var(--error-color);color:#fff;font-size:9px;font-weight:700;width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center}.card{background:#fff;border-radius:12px;box-shadow:var(--shadow);padding:16px}@media(min-width:769px){.card{padding:24px}}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.card-title{font-size:16px;font-weight:700;color:var(--text-primary)}.summary-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:24px}.admin-shell .summary-cards{grid-template-columns:repeat(3,1fr)}.summary-card{background:#fff;border-radius:12px;padding:20px;box-shadow:var(--shadow);transition:var(--transition);border-left:4px solid var(--border-color)}.summary-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.summary-card-value{font-size:28px;font-weight:800;color:var(--text-primary);margin-bottom:4px}.summary-card-label{font-size:13px;color:var(--text-secondary);font-weight:500}.summary-card.accent{border-left-color:var(--accent-color);grid-column:1 / -1}.admin-shell .summary-card.accent{grid-column:auto}.summary-card.primary{border-left-color:var(--primary-color)}.summary-card.success{border-left-color:var(--success-color)}.summary-card.error{border-left-color:var(--error-color)}.summary-card.warning{border-left-color:var(--warning-color)}.page-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:24px}.page-grid-full{grid-column:1 / -1}.status-badge{display:inline-block;padding:4px 12px;border-radius:20px;font-size:12px;font-weight:600;white-space:nowrap}.data-table-wrapper{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:14px}.data-table th{background:var(--background-alt);text-align:left;padding:12px 16px;font-weight:600;color:var(--text-secondary);font-size:12px;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;border-bottom:2px solid var(--border-color)}.data-table td{padding:12px 16px;border-bottom:1px solid var(--border-color);color:var(--text-primary)}.data-table tr:hover td{background:var(--background-alt)}.data-table .action-btn{background:none;border:none;color:var(--accent-color);cursor:pointer;font-weight:600;font-size:13px;padding:4px 8px;border-radius:4px;transition:var(--transition)}.data-table .action-btn:hover{background:#e877221a}.filter-bar{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap;align-items:center}.filter-bar select,.filter-bar input{padding:10px 14px;border:1px solid var(--border-color);border-radius:var(--border-radius);font-size:14px;background:#fff;color:var(--text-primary);transition:var(--transition)}.filter-bar select:focus,.filter-bar input:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px #e877221a}.filter-bar .search-input{flex:1;min-width:200px}.filter-bar-inline{display:flex;gap:8px;margin-bottom:16px;align-items:center;flex-wrap:wrap}.filter-bar-inline select,.filter-bar-inline input{padding:6px 10px;border:1px solid var(--border-color);border-radius:var(--border-radius);font-size:13px;background:#fff;color:var(--text-primary);transition:var(--transition);height:34px;box-sizing:border-box}.filter-bar-inline select{min-width:120px;flex-shrink:0}.filter-bar-inline input{flex:1;min-width:120px}.filter-bar-inline select:focus,.filter-bar-inline input:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 2px #e877221a}@media(max-width:480px){.filter-bar-inline{gap:6px}.filter-bar-inline select,.filter-bar-inline input{font-size:12px;padding:5px 8px;height:32px}.filter-bar-inline input{min-width:0;flex-basis:calc(50% - 3px)}}.filter-bar--compact{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--border-radius);padding:12px}.filter-bar--compact .filter-bar__row{display:flex;gap:8px;align-items:center;flex-wrap:nowrap}.filter-bar--compact .filter-bar__row .search-input{flex:1;min-width:0}.filter-bar--compact select,.filter-bar--compact input{padding:7px 10px;font-size:13px}.filter-bar--compact select{max-width:140px;flex-shrink:0}.filter-date-range{display:flex;align-items:center;gap:6px}.filter-date-separator{color:var(--text-secondary);font-size:13px;flex-shrink:0}.filter-date-range input[type=date]{flex:1;min-width:0}.pagination{display:flex;align-items:center;justify-content:center;gap:8px;padding:16px 0}.pagination button{padding:8px 14px;border:1px solid var(--border-color);background:#fff;border-radius:var(--border-radius);cursor:pointer;font-size:13px;color:var(--text-primary);transition:var(--transition)}.pagination button:hover:not(:disabled){border-color:var(--accent-color);color:var(--accent-color)}.pagination button:disabled{opacity:.4;cursor:not-allowed}.pagination button.active{background:var(--accent-color);color:#fff;border-color:var(--accent-color)}.pagination-info{font-size:13px;color:var(--text-secondary)}.step-indicator{display:flex;align-items:center;margin-bottom:32px;padding:0 8px}.step-item{display:flex;align-items:center;gap:8px;flex:1}.step-item:not(:last-child):after{content:"";flex:1;height:2px;background:var(--border-color);margin:0 12px}.step-item.completed:not(:last-child):after{background:var(--accent-color)}.step-circle{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0;border:2px solid var(--border-color);background:#fff;color:var(--text-secondary);transition:var(--transition)}.step-item.active .step-circle,.step-item.completed .step-circle{border-color:var(--accent-color);background:var(--accent-color);color:#fff}.step-label{font-size:12px;color:var(--text-secondary);font-weight:500;white-space:nowrap}.step-item.active .step-label{color:var(--accent-color);font-weight:600}.step-item.completed .step-label{color:var(--text-primary)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid .form-group{margin-bottom:0;min-width:0;overflow:hidden}.form-full{grid-column:1 / -1}.form-section-label{font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:12px;padding-bottom:6px;border-bottom:1px solid var(--border-color)}.form-group select,.form-group textarea{width:100%;min-width:0;max-width:100%;padding:12px 16px;border:2px solid var(--border-color);border-radius:var(--border-radius);font-size:15px;transition:var(--transition);background:#fff;font-family:inherit;color:var(--text-primary)}.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px #e8772226}.form-group textarea{resize:vertical;min-height:80px}.form-actions{display:flex;gap:12px;margin-top:24px}.form-actions .btn{flex:1}.serial-dual-input{display:flex;gap:8px;align-items:stretch}.serial-scan-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:72px;padding:8px 10px;border:2px solid var(--primary-color);border-radius:var(--border-radius);background:var(--primary-light);color:var(--primary-color);cursor:pointer;transition:var(--transition);font-size:11px;font-weight:600;flex-shrink:0}.serial-scan-btn:active{background:var(--primary-color);color:#fff;transform:scale(.96)}.serial-scan-btn svg{flex-shrink:0}.serial-input-wrap{flex:1;position:relative;min-width:0}.serial-input-wrap input{width:100%;padding:12px 36px 12px 12px;border:2px solid var(--border-color);border-radius:var(--border-radius);font-size:15px;transition:var(--transition);background:var(--background);font-family:SF Mono,Fira Code,Consolas,monospace;letter-spacing:.5px;text-transform:uppercase}.serial-input-wrap input:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px #e8772226}.serial-input-wrap input.error{border-color:var(--error-color)}.serial-input-wrap input.scan-success{border-color:var(--success-color);box-shadow:0 0 0 3px #10b98133;animation:serialScanPulse .4s ease}@keyframes serialScanPulse{0%{transform:scale(1)}50%{transform:scale(1.01)}to{transform:scale(1)}}.serial-clear-btn{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:20px;line-height:1;padding:4px;border-radius:50%;transition:var(--transition)}.serial-clear-btn:hover{color:var(--error-color);background:#ef44441a}body.scanner-open{overflow:hidden}.scanner-overlay{position:fixed;inset:0;z-index:10000;background:#000;opacity:0;transition:opacity .2s ease}.scanner-overlay.active{opacity:1}.scanner-fullscreen{display:flex;flex-direction:column;height:100%;height:100dvh;background:#000}.scanner-top-bar{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;padding-top:calc(10px + env(safe-area-inset-top,0px));background:#000000d9;position:relative;z-index:20;flex-shrink:0}.scanner-title{font-weight:700;font-size:15px;color:#fff}.scanner-close-btn{background:#ffffff26;border:none;font-size:22px;line-height:1;color:#fff;cursor:pointer;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.scanner-close-btn:hover,.scanner-close-btn:active{background:#ef4444cc}.scanner-camera-area{position:relative;flex:1;overflow:hidden;display:flex;align-items:center;justify-content:center}.scanner-viewport{position:absolute;inset:0;width:100%!important;height:100%!important;background:#000}.scanner-viewport video{width:100%!important;height:100%!important;object-fit:cover!important;position:absolute!important;top:0!important;left:0!important}#qr-shaded-region{display:none!important}.scanner-aim-overlay{position:absolute;inset:0;z-index:10;display:flex;flex-direction:column;pointer-events:none}.scanner-dim{background:#0000008c}.scanner-dim-top,.scanner-dim-bottom{flex:1;min-height:20%}.scanner-dim-middle-row{display:flex;align-items:stretch;height:120px}.scanner-dim-left,.scanner-dim-right{flex:1;background:#0000008c;min-width:24px}.scanner-target-box{position:relative;width:82%;max-width:340px;min-width:200px;flex-shrink:0;border:1.5px solid rgba(255,255,255,.3);border-radius:10px;transition:border-color .3s ease,box-shadow .3s ease}.scanner-target-box.scanner-success{border-color:#10b981;box-shadow:0 0 30px #10b98180,inset 0 0 20px #10b98126}.scanner-corner{position:absolute;width:24px;height:24px;border-style:solid;border-width:0;border-color:#fff}.scanner-corner-tl{top:-1.5px;left:-1.5px;border-top-width:3px;border-left-width:3px;border-top-left-radius:10px}.scanner-corner-tr{top:-1.5px;right:-1.5px;border-top-width:3px;border-right-width:3px;border-top-right-radius:10px}.scanner-corner-bl{bottom:-1.5px;left:-1.5px;border-bottom-width:3px;border-left-width:3px;border-bottom-left-radius:10px}.scanner-corner-br{bottom:-1.5px;right:-1.5px;border-bottom-width:3px;border-right-width:3px;border-bottom-right-radius:10px}.scanner-target-box.scanner-success .scanner-corner{border-color:#10b981}.scanner-crosshair-h{position:absolute;top:50%;left:12px;right:12px;height:1px;background:#ffffff2e;transform:translateY(-.5px)}.scanner-crosshair-v{position:absolute;left:50%;top:12px;bottom:12px;width:1px;background:#ffffff2e;transform:translate(-.5px)}.scanner-target-box.scanner-success .scanner-crosshair-h,.scanner-target-box.scanner-success .scanner-crosshair-v{background:#10b9814d}.scanner-sweep{position:absolute;left:10px;right:10px;height:2px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.7),transparent);border-radius:1px;animation:scannerSweep 2.2s ease-in-out infinite}.scanner-target-box.scanner-success .scanner-sweep{background:linear-gradient(90deg,transparent,#10b981,transparent);animation:none;top:50%;transform:translateY(-1px)}@keyframes scannerSweep{0%{top:10px;opacity:.4}50%{top:calc(100% - 12px);opacity:.9}to{top:10px;opacity:.4}}.scanner-bottom-panel{background:#000000d9;padding:12px 20px;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;align-items:center;gap:8px;flex-shrink:0;position:relative;z-index:20}.scanner-hint{font-size:13px;font-weight:500;color:#ffffffb3;text-align:center;letter-spacing:.2px}.scanner-hint.success{color:#10b981;font-weight:600}.scanner-hint.error{color:#ef4444}.scanner-actions-row{display:flex;gap:12px;justify-content:center}.scanner-action-btn{display:flex;align-items:center;gap:6px;background:#ffffff1f;border:1px solid rgba(255,255,255,.15);color:#fff;padding:8px 16px;border-radius:20px;font-size:13px;font-weight:500;cursor:pointer;transition:background .2s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.scanner-action-btn:hover,.scanner-action-btn:active{background:#fff3}.scanner-action-btn.active{background:#f59e0bb3;border-color:#f59e0bcc}.scanner-quality-bar{width:100%}.scanner-quality-indicator{display:flex;align-items:center;gap:6px;justify-content:center}.scanner-quality-dot{width:8px;height:8px;border-radius:50%;transition:background .3s ease}.scanner-quality-label{font-size:11px;font-weight:600;color:#ffffffb3}.scanner-confidence-ring{--conf-pct: 0;position:absolute;inset:-4px;border-radius:12px;pointer-events:none;opacity:0;transition:opacity .3s ease;border:2px solid transparent}.scanner-confidence-ring.scanner-conf-low{opacity:.6;border-color:#f59e0b80;box-shadow:0 0 8px #f59e0b33}.scanner-confidence-ring.scanner-conf-high{opacity:.8;border-color:#10b98199;box-shadow:0 0 12px #10b9814d;animation:confPulse 1s ease-in-out infinite}@keyframes confPulse{0%,to{box-shadow:0 0 8px #10b98133}50%{box-shadow:0 0 16px #10b98166}}.scanner-fallback-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 24px;padding-bottom:calc(32px + env(safe-area-inset-bottom,0px));text-align:center;gap:12px;overflow-y:auto;-webkit-overflow-scrolling:touch}.scanner-fallback-body .btn{touch-action:manipulation;-webkit-tap-highlight-color:rgba(255,255,255,.1)}.scanner-fallback-icon{width:72px;height:72px;border-radius:50%;background:#ffffff14;display:flex;align-items:center;justify-content:center;margin-bottom:4px;color:#fff9}.scanner-fallback-title{font-size:16px;font-weight:700;color:#fff}.scanner-fallback-detail{font-size:13px;color:#fff9;max-width:280px;line-height:1.5}.scanner-fallback-manual{width:100%;max-width:320px;margin-top:16px;background:#ffffff0f;border-radius:12px;padding:16px}.scanner-fallback-manual-label{font-size:12px;font-weight:600;color:#ffffff80;text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px}.scanner-fallback-input-row{display:flex;gap:8px}.scanner-fallback-input-row input{flex:1;padding:10px 12px;border-radius:8px;border:1px solid rgba(255,255,255,.15);background:#ffffff14;color:#fff;font-size:14px;outline:none;transition:border-color .2s ease}.scanner-fallback-input-row input:focus{border-color:var(--primary-color)}.scanner-fallback-input-row input::placeholder{color:#ffffff4d}.scanner-fallback-input-row .btn{flex-shrink:0}.scanner-fallback-body>.btn-secondary{background:#ffffff1f;color:#fff;border-color:#ffffff40}.scanner-fallback-body>.btn-secondary:active{background:#ffffff40}.photo-serial-scanner{padding:8px 12px;background:var(--background-alt);border-bottom:1px solid var(--border-color)}.photo-serial-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.photo-serial-value{display:flex;align-items:center;gap:6px;flex:1;min-width:0}.photo-serial-label{font-size:11px;color:var(--text-secondary);white-space:nowrap}.photo-serial-text{font-size:13px;font-weight:600;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-serial-value.has-value .photo-serial-text{color:var(--text-primary)}.photo-serial-scan-btn{display:flex;align-items:center;gap:4px;white-space:nowrap;flex-shrink:0;font-size:12px;padding:4px 10px}.photo-serial-scan-btn svg{width:14px;height:14px}.photo-capture-section{display:flex;flex-direction:column;gap:16px}.photo-capture-card{background:#fff;border:1px solid var(--border-color);border-radius:12px;overflow:hidden}.photo-capture-label{display:flex;align-items:center;gap:8px;padding:12px 16px;font-size:14px;font-weight:600;color:var(--text-primary);border-bottom:1px solid var(--border-color);background:var(--background-alt)}.photo-capture-label svg{color:var(--text-secondary);flex-shrink:0}.photo-capture-trigger{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:100%;padding:32px 16px;border:none;background:var(--background-alt);cursor:pointer;transition:var(--transition)}.photo-capture-trigger:active{background:#e8772214;transform:scale(.98)}.photo-capture-icon{width:64px;height:64px;border-radius:50%;background:var(--primary-light);display:flex;align-items:center;justify-content:center;color:var(--primary-color);transition:var(--transition)}.photo-capture-trigger:active .photo-capture-icon{background:var(--primary-color);color:#fff}.photo-capture-text{font-size:15px;font-weight:600;color:var(--primary-color)}.photo-capture-hint{font-size:12px;color:var(--text-secondary)}.photo-captured-preview{position:relative}.photo-captured-preview img{width:100%;max-height:200px;object-fit:cover;display:block}.photo-captured-overlay{position:absolute;bottom:0;left:0;right:0;padding:8px 12px;background:linear-gradient(transparent,#000000b3);display:flex;justify-content:space-between;align-items:flex-end}.photo-captured-badge{display:inline-flex;align-items:center;gap:4px;background:var(--success-color);color:#fff;font-size:11px;font-weight:600;padding:3px 8px;border-radius:10px}.photo-captured-meta{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.photo-captured-meta span{font-size:10px;color:#ffffffd9}.photo-retake-btn{width:100%;padding:10px;border:none;border-top:1px solid var(--border-color);background:#fff;color:var(--primary-color);font-size:13px;font-weight:600;cursor:pointer;transition:var(--transition)}.photo-retake-btn:active{background:var(--background-alt)}.review-photos{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:8px}.review-photo-item{text-align:center}.review-photo-item img{width:100%;height:100px;object-fit:cover;border-radius:8px;border:1px solid var(--border-color);margin-bottom:4px}.review-photo-item span{font-size:11px;color:var(--text-secondary)}.file-uploader{border:2px dashed var(--border-color);border-radius:12px;padding:32px;text-align:center;cursor:pointer;transition:var(--transition);background:var(--background-alt)}.file-uploader:hover,.file-uploader.drag-over{border-color:var(--accent-color);background:#e877220d}.file-uploader-icon{font-size:32px;margin-bottom:8px;color:var(--text-secondary)}.file-uploader-text{font-size:14px;color:var(--text-secondary);margin-bottom:4px}.file-uploader-hint{font-size:12px;color:var(--text-secondary);opacity:.7}.file-preview-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin-top:16px}.file-preview-item{background:#fff;border:1px solid var(--border-color);border-radius:8px;padding:12px;text-align:center;position:relative}.file-preview-item img{width:100%;height:80px;object-fit:cover;border-radius:4px;margin-bottom:8px}.file-preview-name{font-size:11px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-preview-size{font-size:10px;color:var(--text-secondary)}.file-preview-remove{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;background:var(--error-color);color:#fff;border:none;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center}.upload-progress{width:100%;height:4px;background:var(--border-color);border-radius:2px;margin-top:8px;overflow:hidden}.upload-progress-bar{height:100%;background:var(--accent-color);border-radius:2px;transition:width .3s ease}.timeline{position:relative;padding-left:32px}.timeline:before{content:"";position:absolute;left:12px;top:0;bottom:0;width:2px;background:var(--border-color)}.timeline-item{position:relative;padding-bottom:24px}.timeline-item:last-child{padding-bottom:0}.timeline-dot{position:absolute;left:-26px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--border-color);border:2px solid #fff}.timeline-item:first-child .timeline-dot{background:var(--accent-color)}.timeline-content{padding:0}.timeline-title{font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:2px}.timeline-date{font-size:12px;color:var(--text-secondary)}.timeline-comment{font-size:13px;color:var(--text-secondary);margin-top:4px;padding:8px 12px;background:var(--background-alt);border-radius:6px;border-left:3px solid var(--accent-color)}.detail-section{margin-bottom:24px}.detail-section-title{font-size:16px;font-weight:700;color:var(--text-primary);margin-bottom:16px;padding-bottom:8px;border-bottom:2px solid var(--border-color)}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.detail-field{display:flex;flex-direction:column;gap:2px}.detail-field-label{font-size:12px;color:var(--text-secondary);font-weight:500}.detail-field-value{font-size:14px;color:var(--text-primary);font-weight:500}.evidence-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.evidence-item{background:#fff;border:1px solid var(--border-color);border-radius:8px;overflow:hidden;cursor:pointer;transition:var(--transition)}.evidence-item:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.evidence-item img{width:100%;height:120px;object-fit:cover}.evidence-item-info{padding:8px 12px}.evidence-item-type{font-size:11px;color:var(--accent-color);font-weight:600;text-transform:uppercase;letter-spacing:.5px}.evidence-item-name{font-size:12px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.empty-state{text-align:center;padding:48px 24px}.empty-state-icon{font-size:48px;margin-bottom:16px;opacity:.4;color:var(--text-secondary);display:flex;align-items:center;justify-content:center}.empty-state-title{font-size:18px;font-weight:600;color:var(--text-primary);margin-bottom:8px}.empty-state-text{font-size:14px;color:var(--text-secondary);margin-bottom:24px}.skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:6px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-line{height:16px;margin-bottom:12px}.skeleton-line.short{width:60%}.skeleton-card{height:100px;border-radius:12px}.toast-container{position:fixed;top:calc(16px + env(safe-area-inset-top,0px));right:calc(16px + env(safe-area-inset-right,0px));z-index:10000;display:flex;flex-direction:column;gap:8px}.toast{display:flex;align-items:center;gap:10px;padding:14px 20px;border-radius:10px;box-shadow:var(--shadow-lg);animation:toastIn .3s ease;font-size:14px;font-weight:500;min-width:280px;max-width:420px}@keyframes toastIn{0%{opacity:0;transform:translate(100px)}to{opacity:1;transform:translate(0)}}.toast-exit{animation:toastOut .3s ease forwards}@keyframes toastOut{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100px)}}.toast-success{background:#065f46;color:#fff}.toast-error{background:#991b1b;color:#fff}.toast-info{background:var(--primary-color);color:#fff}.toast-warning{background:#92400e;color:#fff}.toast-icon{font-size:18px;flex-shrink:0;display:flex;align-items:center}.toast-message{flex:1}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10001;padding:16px;padding:calc(16px + env(safe-area-inset-top,0px)) calc(16px + env(safe-area-inset-right,0px)) calc(16px + env(safe-area-inset-bottom,0px)) calc(16px + env(safe-area-inset-left,0px));animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-exit{animation:fadeOut .2s ease forwards}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.modal-content{background:#fff;border-radius:16px;padding:32px;max-width:440px;width:100%;box-shadow:0 20px 60px #0003;animation:modalSlideUp .3s ease}@keyframes modalSlideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-title{font-size:18px;font-weight:700;color:var(--text-primary);margin-bottom:12px}.modal-message{font-size:14px;color:var(--text-secondary);line-height:1.6;margin-bottom:24px}.modal-actions{display:flex;gap:12px}.modal-actions .btn{flex:1}.announcement-card{background:#fff;border:1px solid var(--border-color);border-radius:10px;padding:16px;margin-bottom:12px;border-left:4px solid var(--accent-color)}.announcement-inactive{opacity:.5}.announcement-card-layout{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.announcement-card-body{min-width:0;flex:1}.announcement-card-actions{display:flex;gap:6px;flex-shrink:0;align-items:center}.announcement-card-actions .btn-delete-ann{color:var(--error-color)}@media(max-width:600px){.announcement-card-layout{flex-direction:column;gap:10px}.announcement-card-actions{width:100%;flex-wrap:wrap}.announcement-card-actions .btn{min-height:36px}}.announcement-title{font-size:14px;font-weight:700;color:var(--text-primary);margin-bottom:6px;word-wrap:break-word;overflow-wrap:break-word}.announcement-content{font-size:13px;color:var(--text-secondary);line-height:1.5;word-wrap:break-word;overflow-wrap:break-word}.announcement-date{font-size:11px;color:var(--text-secondary);opacity:.7;margin-top:8px}.chart-container{height:200px;display:flex;align-items:flex-end;gap:8px;padding:16px 0}.chart-bar-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}.chart-bar{width:100%;max-width:40px;background:var(--primary-color);border-radius:4px 4px 0 0;transition:height .5s ease;min-height:4px}.chart-bar-label{font-size:10px;color:var(--text-secondary);text-align:center}.chart-bar-value{font-size:11px;font-weight:600;color:var(--text-primary)}.notification-item{display:flex;gap:16px;padding:16px;border-bottom:1px solid var(--border-color);cursor:pointer;transition:var(--transition)}.notification-item:hover{background:var(--background-alt)}.notification-item.unread{background:#e877220a}.notification-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--background-alt);color:var(--text-primary)}.notification-body{flex:1;min-width:0}.notification-title{font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:2px}.notification-message{font-size:13px;color:var(--text-secondary);line-height:1.4}.notification-time{font-size:11px;color:var(--text-secondary);opacity:.7;margin-top:4px}.notification-dot{width:8px;height:8px;border-radius:50%;background:var(--accent-color);flex-shrink:0;margin-top:6px}.profile-completeness{background:var(--background-alt);border-radius:10px;padding:16px;margin-bottom:24px}.profile-completeness-bar{width:100%;height:8px;background:var(--border-color);border-radius:4px;overflow:hidden;margin-top:8px}.profile-completeness-fill{height:100%;background:var(--accent-color);border-radius:4px;transition:width .5s ease}.profile-completeness-text{font-size:13px;color:var(--text-secondary);display:flex;justify-content:space-between}.quick-actions{display:flex;gap:12px;margin-bottom:24px}.quick-action-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:14px 16px;background:#fff;border:2px solid var(--border-color);border-radius:10px;cursor:pointer;font-size:13px;font-weight:600;color:var(--text-primary);transition:var(--transition);text-decoration:none}.quick-action-btn:hover{border-color:var(--accent-color);color:var(--accent-color);box-shadow:var(--shadow)}.quick-action-icon{font-size:18px}.review-section{background:var(--background-alt);border-radius:10px;padding:20px;margin-bottom:16px}.review-section-title{font-size:14px;font-weight:700;color:var(--text-primary);margin-bottom:12px;display:flex;align-items:center;gap:8px}.review-row{display:flex;justify-content:space-between;padding:6px 0;font-size:13px}.review-label{color:var(--text-secondary)}.review-value{color:var(--text-primary);font-weight:500}.product-item-card{background:#fff;border:1px solid var(--border-color);border-radius:10px;padding:16px;margin-bottom:12px;position:relative}.product-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.product-item-title{font-size:14px;font-weight:600;color:var(--text-primary)}.product-item-remove{background:none;border:none;color:var(--error-color);cursor:pointer;font-size:18px;padding:4px}.serial-highlight{font-size:15px;font-weight:600;color:var(--primary-color);letter-spacing:.3px}.image-lightbox-overlay{position:fixed;inset:0;background:#000000d9;z-index:9999;display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;transition:opacity .2s ease}.image-lightbox-overlay.active{opacity:1}.image-lightbox-content{position:relative;max-width:95vw;max-height:90vh;display:flex;align-items:center;justify-content:center}.image-lightbox-content img{max-width:95vw;max-height:85vh;object-fit:contain;border-radius:8px;box-shadow:0 8px 40px #00000080}.image-lightbox-close{position:absolute;top:-12px;right:-12px;width:36px;height:36px;border-radius:50%;border:none;background:#fff;color:#333;font-size:20px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #0000004d;transition:transform .15s;z-index:1}.image-lightbox-close:active{transform:scale(.9)}.serial-checker-card{display:flex;align-items:center;gap:14px;padding:16px 20px;background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-hover) 100%);border-radius:14px;cursor:pointer;transition:transform .15s,box-shadow .15s;margin-bottom:20px;box-shadow:0 2px 12px #1a3a5c40}.serial-checker-card:active{transform:scale(.98)}.serial-checker-card-icon{width:44px;height:44px;border-radius:12px;background:#fff3;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#fff}.serial-checker-card-text{flex:1;min-width:0}.serial-checker-card-title{font-size:15px;font-weight:700;color:#fff;letter-spacing:.2px}.serial-checker-card-desc{font-size:12px;color:#fffc;margin-top:2px}.serial-checker-card-arrow{color:#ffffffb3;flex-shrink:0}.serial-checker-overlay{position:fixed;inset:0;background:#00000080;z-index:9998;display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;transition:opacity .2s ease}.serial-checker-overlay.active{opacity:1}.serial-checker-popup{background:#fff;border-radius:16px;width:100%;max-width:400px;box-shadow:0 16px 48px #0003;overflow:hidden;transform:translateY(20px);transition:transform .25s ease}.serial-checker-overlay.active .serial-checker-popup{transform:translateY(0)}.serial-checker-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-color);background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-hover) 100%)}.serial-checker-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700;color:#fff}.serial-checker-close{width:32px;height:32px;border:none;background:#fff3;color:#fff;border-radius:8px;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.serial-checker-close:active{background:#ffffff59}.serial-checker-body{padding:24px 20px}.serial-checker-input-row{display:flex;gap:8px;align-items:stretch}.serial-checker-input-wrap{flex:1;position:relative}.serial-checker-input-wrap input{width:100%;padding:12px 36px 12px 14px;border:2px solid var(--border-color);border-radius:10px;font-size:15px;font-weight:600;letter-spacing:.5px;background:var(--background-alt);transition:border-color .15s;box-sizing:border-box}.serial-checker-input-wrap input:focus{border-color:var(--primary-color);outline:none;background:#fff}.serial-checker-input-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:24px;height:24px;border:none;background:var(--border-color);color:var(--text-secondary);border-radius:50%;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}.serial-checker-scan-btn{width:48px;border:2px solid var(--border-color);border-radius:10px;background:var(--background-alt);color:var(--text-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:border-color .15s,background .15s}.serial-checker-scan-btn:active{background:var(--border-color)}.serial-checker-result{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 0;text-align:center}.serial-checker-spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:sc-spin .7s linear infinite}@keyframes sc-spin{to{transform:rotate(360deg)}}.serial-checker-anim{width:64px;height:64px}.serial-checker-anim svg{width:64px;height:64px}.serial-checker-circle-success{stroke-dasharray:166;stroke-dashoffset:166;animation:sc-circle-draw .5s ease forwards}.serial-checker-check-path{stroke-dasharray:48;stroke-dashoffset:48;animation:sc-check-draw .35s .35s ease forwards}.serial-checker-circle-error{stroke-dasharray:166;stroke-dashoffset:166;animation:sc-circle-draw .5s ease forwards}.serial-checker-cross-path-1{stroke-dasharray:29;stroke-dashoffset:29;animation:sc-cross-draw .25s .35s ease forwards}.serial-checker-cross-path-2{stroke-dasharray:29;stroke-dashoffset:29;animation:sc-cross-draw .25s .5s ease forwards}@keyframes sc-circle-draw{to{stroke-dashoffset:0}}@keyframes sc-check-draw{to{stroke-dashoffset:0}}@keyframes sc-cross-draw{to{stroke-dashoffset:0}}.serial-checker-msg{font-size:14px;color:var(--text-secondary);font-weight:500}.serial-checker-msg-success{color:#16a34a;font-weight:700;font-size:15px}.serial-checker-msg-error{color:#dc2626;font-weight:700;font-size:15px}.serial-checker-serial-display{font-size:13px;font-weight:600;color:var(--text-secondary);background:var(--background-alt);padding:6px 16px;border-radius:8px;letter-spacing:.5px;word-break:break-all}.photo-dual-upload{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:16px}.photo-dual-upload .photo-capture-trigger,.photo-dual-upload .photo-file-trigger{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px 12px;border:2px dashed var(--border-color);border-radius:12px;background:var(--background-alt);cursor:pointer;transition:var(--transition);width:100%}.photo-dual-upload .photo-capture-trigger:active,.photo-dual-upload .photo-file-trigger:active{background:#e8772214;border-color:var(--primary-color);transform:scale(.97)}.photo-file-icon{background:var(--background-alt);border:2px solid var(--border-color)}.photo-capture-hint-bottom{text-align:center;font-size:12px;color:var(--text-secondary);padding:0 16px 12px}.install-prompt-banner{display:flex;align-items:center;justify-content:center;gap:10px;background:linear-gradient(135deg,#0f2133 0%,var(--primary-color) 100%);color:#fff;padding:0 20px;font-size:13px;max-height:0;overflow:hidden;opacity:0;transition:max-height .4s ease,opacity .3s ease,padding .4s ease}.install-prompt-banner.visible{max-height:80px;padding:12px 20px;padding-left:calc(20px + env(safe-area-inset-left,0px));padding-right:calc(20px + env(safe-area-inset-right,0px));opacity:1}.install-prompt-icon{flex-shrink:0;display:flex;align-items:center}.install-prompt-icon svg{width:18px;height:18px}.install-prompt-text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.install-prompt-action{flex-shrink:0;background:var(--accent-color);color:#fff;border:none;border-radius:6px;padding:6px 16px;font-size:12px;font-weight:600;cursor:pointer;transition:background .2s ease,transform .15s ease}.install-prompt-action:hover{background:var(--accent-hover);transform:scale(1.03)}.install-prompt-action:active{transform:scale(.97)}.install-prompt-banner .close-prompt{flex-shrink:0;background:none;border:none;color:#fff9;cursor:pointer;font-size:18px;padding:4px;display:flex;align-items:center;transition:color .2s ease}.install-prompt-banner .close-prompt:hover{color:#fff}.install-prompt-banner .close-prompt svg{width:16px;height:16px}.btn-sm{padding:8px 16px;font-size:13px;width:auto}.btn-xs{padding:5px 10px;font-size:12px;width:auto;border-radius:6px}.btn-icon{display:inline-flex;align-items:center;gap:6px}.text-muted{color:var(--text-secondary);font-size:13px}.mb-24{margin-bottom:24px}.mb-16{margin-bottom:16px}.mb-8{margin-bottom:8px}@media(max-width:768px){.sidebar{display:none}.bottom-nav{display:block}.main-content{padding-bottom:0;height:100%;height:100dvh}.page-content{padding:16px;padding-right:calc(16px + env(safe-area-inset-right,0px));padding-left:calc(16px + env(safe-area-inset-left,0px));padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}.top-header{padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top,0px));padding-right:calc(16px + env(safe-area-inset-right,0px));padding-left:calc(16px + env(safe-area-inset-left,0px))}.mobile-header-logo{display:flex;align-items:center;text-decoration:none}.mobile-header-logo img{height:clamp(27.6px,5.75vw,36.8px);width:auto;max-width:184px;object-fit:contain}.top-header-left .top-header-title,.top-header-left .top-header-subtitle{display:none}.top-header-title{font-size:16px}.summary-cards{grid-template-columns:repeat(2,1fr);gap:8px}.summary-card{padding:14px}.summary-card-value{font-size:22px}.page-grid,.form-grid{grid-template-columns:1fr}.step-indicator{overflow-x:auto;padding-bottom:8px}.step-label{display:none}.filter-bar:not(.filter-bar--compact){flex-direction:column}.filter-bar:not(.filter-bar--compact) select,.filter-bar:not(.filter-bar--compact) input{width:100%}.filter-bar--compact .filter-bar__row{flex-wrap:wrap}.filter-bar--compact .filter-bar__row .search-input{flex:1 1 100%;min-width:0}.filter-bar--compact select{flex:1 1 calc(50% - 4px);max-width:none}.filter-date-range{flex:1 1 100%}.filter-date-range input[type=date]{flex:1}.quick-actions{flex-direction:column}.detail-grid{grid-template-columns:1fr}.form-actions{flex-direction:column}.evidence-gallery{grid-template-columns:repeat(2,1fr)}.install-prompt-banner .install-prompt-text{font-size:12px}.chart-container{height:150px}}@media(max-width:374px){.mobile-header-logo img{height:25px;max-width:138px;object-fit:contain}}@media(min-width:769px)and (max-width:1023px){.sidebar{width:clamp(200px,28vw,33.333vw)}.sidebar-logo{padding:16px;margin:12px}.nav-item{padding:10px 14px;font-size:13px;gap:10px}.sidebar-user-name{font-size:12px}.sidebar-user-role{font-size:10px}}@media(min-width:1024px){.sidebar{width:clamp(220px,20vw,33.333vw)}}@media(orientation:landscape)and (min-width:769px){.sidebar{max-width:33.333vw}}@media(orientation:portrait)and (min-width:769px){.sidebar{max-width:33.333vw}}.admin-sidebar{background:#0c2135}.admin-badge-container{padding:0 16px 8px;text-align:center}.admin-portal-badge{display:inline-block;padding:4px 14px;background:#e8772226;color:var(--accent-color);border-radius:20px;font-size:11px;font-weight:700;letter-spacing:.5px;text-transform:uppercase}.admin-avatar{background:var(--primary-color)}.admin-top-header{border-bottom:2px solid var(--accent-color)}.header-logout-btn{background:none;border:none;cursor:pointer;padding:8px;border-radius:8px;transition:var(--transition);color:var(--text-secondary);display:flex;align-items:center;justify-content:center}.header-logout-btn:hover{background:#ef444414;color:var(--error-color)}.portal-switch-btn{background:none;border:none;cursor:pointer;padding:8px;border-radius:8px;transition:var(--transition);color:var(--text-secondary);display:flex;align-items:center;justify-content:center}.portal-switch-btn:hover{background:var(--background-alt);color:var(--accent-color)}.header-phone-btn{background:none;border:none;cursor:pointer;padding:8px;border-radius:8px;transition:var(--transition);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;text-decoration:none}.header-phone-btn:hover{background:#22c55e14;color:#16a34a}.admin-hamburger{display:none;background:none;border:none;cursor:pointer;padding:8px;border-radius:8px;color:var(--text-primary);transition:var(--transition);-webkit-tap-highlight-color:transparent}.admin-hamburger:hover{background:var(--background-alt)}.admin-drawer-overlay{display:none;position:fixed;inset:0;background:#00000080;z-index:999;opacity:0;transition:opacity .3s ease;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.admin-drawer-overlay.open{display:block;opacity:1}.admin-drawer{position:fixed;top:0;left:0;bottom:0;width:280px;max-width:85vw;background:#0c2135;z-index:1000;transform:translate(-100%);transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);padding-left:env(safe-area-inset-left,0px)}.admin-drawer.open{transform:translate(0)}.admin-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid rgba(255,255,255,.1)}.admin-drawer-logo{display:flex;align-items:center;justify-content:center;background:#fff;border-radius:8px;padding:10px 16px;flex:1;margin-right:12px}.admin-drawer-logo img{width:100%;max-width:140px;height:auto;object-fit:contain}.admin-drawer-close{background:none;border:none;cursor:pointer;padding:8px;border-radius:8px;color:#ffffffb3;transition:var(--transition);flex-shrink:0}.admin-drawer-close:hover{background:#ffffff1a;color:#fff}.admin-drawer-badge{padding:8px 16px 12px;text-align:center}.admin-drawer-nav{flex:1;padding:8px 12px;display:flex;flex-direction:column;gap:2px}.admin-drawer-nav .drawer-nav-item{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:8px;color:#ffffffb3;text-decoration:none;font-size:14px;font-weight:500;transition:var(--transition);cursor:pointer;border:none;background:none;width:100%;text-align:left;min-height:48px}.admin-drawer-nav .drawer-nav-item:hover{background:#ffffff1a;color:#fff}.admin-drawer-nav .drawer-nav-item.active{background:#ffffff26;color:#fff;font-weight:600}.admin-drawer-nav .drawer-nav-item .nav-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center}.admin-drawer-nav .drawer-nav-item .nav-icon svg{display:block}.admin-drawer-divider{height:1px;background:#ffffff1a;margin:8px 16px}.admin-drawer-footer{padding:16px;border-top:1px solid rgba(255,255,255,.1)}.admin-drawer-footer .sidebar-user{margin-bottom:12px}.admin-drawer-footer .drawer-nav-item{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:8px;color:#ffffffb3;text-decoration:none;font-size:14px;font-weight:500;transition:var(--transition);cursor:pointer;border:none;background:none;width:100%;text-align:left;min-height:44px}.admin-drawer-footer .drawer-nav-item:hover{background:#ffffff1a;color:#fff}.admin-drawer-footer .drawer-nav-item .nav-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center}.admin-drawer-footer .drawer-nav-item .nav-icon svg{display:block}.lb-rank{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;font-size:13px;font-weight:700;background:var(--background-alt);color:var(--text-secondary)}.lb-rank.lb-rank-top{background:var(--accent-color);color:#fff}.lb-rank.lb-rank-gold,.lb-rank.lb-rank-silver,.lb-rank.lb-rank-bronze{background:none;font-size:24px;width:32px;height:32px}.gps-section{background:var(--background-alt);border:2px solid var(--border-color);border-radius:10px;padding:12px;margin-top:12px}.gps-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;flex-wrap:wrap;gap:6px}.gps-section-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--text-primary)}.gps-status-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:20px;font-size:12px;font-weight:600;white-space:nowrap}.gps-status-badge.not-captured{background:#f3f4f6;color:#6b7280}.gps-status-badge.capturing{background:#fef3c7;color:#d97706}.gps-status-badge.captured{background:#d1fae5;color:#059669}.gps-status-badge.failed{background:#fee2e2;color:#dc2626}.gps-capture-area{text-align:center;padding:8px}.gps-capture-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 20px;background:var(--primary-color);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:var(--transition);width:100%;max-width:280px}.gps-capture-btn:hover:not(:disabled){background:var(--primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-lg)}.gps-capture-btn:disabled{opacity:.6;cursor:not-allowed}.gps-capturing{display:flex;flex-direction:column;align-items:center;gap:10px;padding:12px 8px}.gps-pulse-ring{position:relative;width:44px;height:44px}.gps-pulse-dot{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:16px;height:16px;border-radius:50%;background:var(--primary-color)}.gps-pulse-ring:before,.gps-pulse-ring:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:50%;border:2px solid var(--primary-color);animation:gpsPulse 1.5s ease-out infinite}.gps-pulse-ring:before{width:36px;height:36px}.gps-pulse-ring:after{width:56px;height:56px;animation-delay:.3s}@keyframes gpsPulse{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(1.4)}}.gps-result-card{background:#fff;border:1px solid var(--border-color);border-radius:10px;overflow:hidden;margin-top:12px}.gps-map-preview{width:100%;height:160px;border-bottom:1px solid var(--border-color)}.gps-map-preview iframe{width:100%;height:100%;border:0}.gps-result-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px}.gps-result-item{display:flex;flex-direction:column;gap:2px}.gps-result-label{font-size:11px;color:var(--text-secondary);font-weight:500}.gps-result-value{font-size:14px;color:var(--text-primary);font-weight:600;font-family:SF Mono,Fira Code,monospace}.gps-actions{display:flex;gap:8px;padding:0 16px 16px;flex-wrap:wrap}.gps-maps-link{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:var(--background-alt);color:var(--primary-color);border-radius:8px;font-size:13px;font-weight:600;text-decoration:none;transition:var(--transition)}.gps-maps-link:hover{background:var(--primary-light);color:var(--primary-hover)}.gps-recapture-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:none;color:var(--text-secondary);border:1px solid var(--border-color);border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;transition:var(--transition)}.gps-recapture-btn:hover{border-color:var(--accent-color);color:var(--accent-color)}.gps-empty-state{text-align:center;padding:8px;color:var(--text-secondary);font-size:12px}.gps-error-msg{display:flex;align-items:center;gap:6px;padding:10px 14px;background:#fee2e2;color:#dc2626;border-radius:8px;font-size:13px;margin-top:12px}.gps-location-note-input{width:100%;padding:10px 14px;border:1px solid var(--border-color);border-radius:8px;font-size:14px;font-family:inherit;color:var(--text-primary);transition:var(--transition);margin-top:12px}.gps-location-note-input:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px #e8772226}.gps-captured-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;background:#d1fae5;color:#059669;border-radius:20px;font-size:12px;font-weight:600}.gps-detail-card{background:#fff;border:1px solid var(--border-color);border-radius:10px;overflow:hidden}.gps-map-preview-detail{width:100%;border-bottom:1px solid var(--border-color)}.gps-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:16px}.gps-detail-item{display:flex;flex-direction:column;gap:2px}.gps-detail-label{font-size:12px;color:var(--text-secondary);font-weight:500}.gps-detail-value{font-size:14px;color:var(--text-primary);font-weight:600;font-family:SF Mono,Fira Code,monospace}.gps-maps-link-detail{display:flex;align-items:center;justify-content:center;gap:6px;padding:12px;border-top:1px solid var(--border-color);color:var(--primary-color);font-size:14px;font-weight:600;text-decoration:none;transition:var(--transition)}.gps-maps-link-detail:hover{background:var(--background-alt);color:var(--accent-color)}.gps-no-data{display:flex;align-items:center;justify-content:center;gap:8px;padding:24px;color:var(--text-secondary);font-size:14px;background:var(--background-alt);border-radius:10px}@media(max-width:768px){.gps-result-grid,.gps-detail-grid{grid-template-columns:1fr 1fr}.gps-map-preview{height:140px}.gps-actions{flex-direction:column}.gps-maps-link,.gps-recapture-btn{justify-content:center;width:100%}}.claim-cards-mobile{display:flex;flex-direction:column;gap:10px}.claim-card-item{background:#fff;border:1px solid var(--border-color);border-radius:10px;overflow:hidden;transition:var(--transition);cursor:pointer;-webkit-tap-highlight-color:transparent;outline:none}.claim-card-item:hover{box-shadow:var(--shadow);border-color:var(--accent-color)}.claim-card-item:focus-visible{box-shadow:0 0 0 3px #e877224d;border-color:var(--accent-color)}.claim-card-item:active{transform:scale(.985);box-shadow:none}.claim-card-top{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--background-alt);border-bottom:1px solid var(--border-color)}.claim-card-id{font-size:13px;font-weight:700;color:var(--text-primary);letter-spacing:.3px}.claim-card-body{padding:10px 14px;display:flex;flex-direction:column;gap:6px}.claim-card-row{display:flex;justify-content:space-between;align-items:center}.claim-card-label{font-size:12px;color:var(--text-secondary);font-weight:500}.claim-card-value{font-size:13px;color:var(--text-primary);font-weight:500}.claim-card-amount{font-weight:700;color:var(--primary-color)}.claim-card-footer{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-top:1px solid var(--border-color);background:var(--background-alt)}.claim-card-updated{font-size:11px;color:var(--text-secondary)}.claim-card-chevron{display:flex;align-items:center;color:var(--text-secondary);transition:var(--transition)}.claim-card-method{font-size:11px;font-weight:500;color:var(--text-secondary);background:var(--background-alt);padding:2px 8px;border-radius:4px;text-transform:capitalize}.claim-card-item:hover .claim-card-chevron{color:var(--accent-color);transform:translate(2px)}@media(max-width:768px){.admin-sidebar{display:none}.admin-shell .admin-hamburger{display:flex}.admin-shell .top-header-left{flex-direction:row;align-items:center;gap:8px}.admin-shell .page-content{padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}}.receipt-upload-area{border:2px dashed var(--border-color);border-radius:10px;cursor:pointer;transition:border-color .2s,background .2s;overflow:hidden;min-height:140px;position:relative}.receipt-upload-area:hover,.receipt-upload-area.dragover{border-color:var(--primary-color);background:var(--primary-light)}.receipt-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:32px 16px;color:var(--text-secondary);font-size:14px}.receipt-placeholder svg{opacity:.5}.receipt-hint{font-size:12px;opacity:.7}.receipt-preview{position:relative}.receipt-preview img{display:block;width:100%;max-height:240px;object-fit:contain;background:var(--background-alt);border-radius:8px}.receipt-preview-overlay{position:absolute;top:8px;right:8px}.receipt-pdf-preview{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:32px 16px;color:var(--text-secondary);font-size:13px}.payment-receipt-card{border:1px solid var(--border-color);border-radius:10px;overflow:hidden;background:var(--background-alt)}.payment-receipt-card img{display:block;width:100%;max-height:320px;object-fit:contain;cursor:pointer;transition:opacity .2s}.payment-receipt-card img:hover{opacity:.9}.payment-receipt-label{padding:10px 14px;font-size:13px;font-weight:600;color:var(--text-secondary);border-top:1px solid var(--border-color)}.installer-banking-card{background:var(--background-alt);border:1px solid var(--border-color);border-radius:10px;padding:16px}.installer-banking-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 20px}@media(max-width:480px){.installer-banking-grid{grid-template-columns:1fr}}.installer-banking-field{display:flex;flex-direction:column;gap:2px}.installer-banking-label{font-size:12px;color:var(--text-secondary);font-weight:500}.installer-banking-value{font-size:14px;color:var(--text-primary);font-weight:600}.payment-info-card{background:var(--background-alt);border:1px solid var(--border-color);border-radius:10px;padding:16px}.payment-info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 20px}@media(max-width:480px){.payment-info-grid{grid-template-columns:1fr}}.payment-info-field{display:flex;flex-direction:column;gap:2px}.payment-info-label{font-size:12px;color:var(--text-secondary);font-weight:500}.payment-info-value{font-size:14px;color:var(--text-primary);font-weight:500}.payment-info-amount{font-size:18px;font-weight:700;color:var(--success-color)}.payment-info-receipt{margin-top:14px;padding-top:14px;border-top:1px solid var(--border-color);display:flex;flex-direction:column;gap:8px}.payment-info-receipt .payment-receipt-card{max-width:320px}.payment-info-receipt .payment-receipt-card img{max-height:240px;padding:8px}#acr-actions .detail-section-title{margin-bottom:12px;padding-bottom:6px;font-size:15px}#acr-actions .form-grid{gap:12px}#acr-actions .form-group label{margin-bottom:5px;font-size:13px}#acr-actions .form-group input,#acr-actions .form-group select,#acr-actions .form-group textarea{padding:9px 12px;font-size:14px}#acr-actions .receipt-upload-area{min-height:100px}#acr-actions .receipt-placeholder{padding:20px 12px;gap:4px;font-size:13px}#acr-actions .receipt-preview img{max-height:180px}
