@import"https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap";*{box-sizing:border-box;margin:0;padding:0}:root{--bg-page: #f8f9fb;--bg-white: #ffffff;--bg-light: #f1f3f7;--bg-hover: #e8ebf0;--navy-900: #1a2744;--navy-800: #0f1829;--navy-700: #2e3a52;--navy-600: #5a6578;--navy-500: #6b7588;--navy-400: #9ca3b0;--navy-300: #d4d6db;--navy-200: #e0e4ea;--navy-100: #eef0f4;--accent: #259b8e;--accent-hover: #1e8a7d;--accent-light: rgba(37, 155, 142, .12);--accent-bg: rgba(37, 155, 142, .06);--accent-glow: rgba(37, 155, 142, .25);--green-600: #16a34a;--green-100: #dcfce7;--red-600: #dc2626;--red-100: #fee2e2;--yellow-600: #ca8a04;--yellow-100: #fef9c3;--radius-sm: .375rem;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 3px rgba(0, 0, 0, .03);--shadow-md: 0 2px 4px rgba(0, 0, 0, .04), 0 4px 12px rgba(0, 0, 0, .06);--shadow-lg: 0 4px 8px rgba(0, 0, 0, .04), 0 8px 24px rgba(0, 0, 0, .08);--shadow-xl: 0 8px 16px rgba(0, 0, 0, .06), 0 20px 48px rgba(0, 0, 0, .12);--transition-fast: .15s ease;--transition-base: .2s ease;--text-xs: .6875rem;--text-sm: .78rem;--text-base: .875rem;--text-md: .9375rem;--text-lg: 1.0625rem;--text-xl: 1.25rem;--text-2xl: 1.75rem;--text-display: 2rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-7: 1.75rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--dark-bg-page: #1a1c2e;--dark-bg-surface: #151725;--dark-bg-elevated: #1e2036;--dark-bg-hover: #252840;--dark-bg-active: #2e3250;--dark-border: rgba(255, 255, 255, .08);--dark-border-hover: rgba(255, 255, 255, .15);--dark-text-primary: #e2e4ed;--dark-text-secondary: #c0c4d6;--dark-text-muted: #9aa0b8;--dark-text-faint: #6b7194;--duration-fast: .15s;--duration-normal: .25s;--duration-slow: .4s;--ease-out-expo: cubic-bezier(.16, 1, .3, 1)}body{font-family:DM Sans,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg-page);color:var(--navy-900);font-size:1.0625rem;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.topbar{background:linear-gradient(180deg,#1e2d4a,#1a2744);border-bottom:1px solid rgba(255,255,255,.08);padding:0 1.5rem;height:56px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100;box-shadow:0 1px 3px #0000001f,0 4px 12px #00000014;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.topbar-nav{display:flex;gap:.5rem;align-items:center}.topbar-brand{font-size:1.1rem;font-weight:700;color:#fff;letter-spacing:-.02em;display:flex;align-items:center;gap:.6rem}.topbar-brand svg{color:#fff}.topbar .topbar-nav button.lang-switcher{padding:.3rem .6rem;font-size:.7rem;font-weight:700;letter-spacing:.04em;color:var(--dark-text-muted);border-color:#ffffff1f;background:#ffffff0f;min-width:2rem;text-align:center}.topbar .topbar-nav button.lang-switcher:hover{color:#fff;border-color:#ffffff40;background:#ffffff1a}.container{max-width:1160px;margin:0 auto;padding:2rem 1.5rem 3rem}h1{font-size:1.75rem;font-weight:700;letter-spacing:-.03em;color:var(--navy-900);line-height:1.15;margin-bottom:.35rem}.page-subtitle{color:var(--navy-500);font-size:.9rem;margin-bottom:2.25rem}h3{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--navy-500);margin-bottom:.75rem}.card{background:var(--bg-white);border:1px solid var(--navy-200);border-radius:var(--radius-lg);padding:1.5rem;margin-bottom:1.25rem;overflow-x:auto;box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-base),border-color var(--transition-base),transform var(--transition-base)}.card:hover{box-shadow:var(--shadow-md);border-color:var(--navy-300)}.card h3{margin-bottom:.85rem}.api-key-input{display:flex;gap:.5rem}.api-key-input input{flex:1;padding:.55rem .85rem;border:1px solid var(--navy-200);border-radius:var(--radius-sm);background:var(--bg-white);color:var(--navy-900);font-family:DM Sans,SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:.84rem;outline:none;transition:border-color .2s,box-shadow .2s}.api-key-input input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #259b8e1f,inset 0 1px 2px #0000000a}.api-key-input input:disabled{color:var(--navy-400);background:var(--bg-light)}button{padding:.55rem 1.15rem;border:none;border-radius:var(--radius-md);background:var(--accent);color:#fff;cursor:pointer;font-family:DM Sans,sans-serif;font-size:.8rem;font-weight:600;letter-spacing:.01em;transition:all var(--transition-fast);outline:none}button:hover{background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 4px 14px var(--accent-glow)}button:active{transform:scale(.97)}button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}button.danger{background:var(--bg-white);color:var(--red-600);border:1px solid var(--navy-200)}button.danger:hover{background:var(--red-100);border-color:var(--red-600);box-shadow:none;transform:none}button.secondary{background:var(--bg-white);color:var(--navy-900);border:1px solid var(--navy-200);box-shadow:var(--shadow-sm)}button.secondary:hover{background:var(--bg-light);border-color:var(--navy-300);box-shadow:var(--shadow-md);transform:translateY(-1px)}.upload-zone{border:2px dashed var(--navy-200);border-radius:var(--radius-lg);padding:3rem 2rem;text-align:center;cursor:pointer;color:var(--navy-600);font-size:.88rem;transition:all .25s ease;position:relative;background:linear-gradient(180deg,rgba(37,155,142,.02),transparent)}.upload-zone:hover{border-color:var(--accent);color:var(--accent);background:linear-gradient(180deg,#259b8e0f,#259b8e05);transform:translateY(-2px);box-shadow:0 4px 16px #259b8e1a}.upload-zone.dragging{border-style:solid;border-color:var(--accent);background:linear-gradient(180deg,#259b8e14,#259b8e08);color:var(--accent);box-shadow:0 0 0 4px var(--accent-light),0 0 24px #259b8e26;transform:scale(1.01)}.upload-zone input{display:none}.upload-icon{margin-bottom:.5rem;color:var(--navy-300);transition:color var(--transition-base),transform var(--transition-base)}.upload-zone:hover .upload-icon{color:var(--accent);transform:translateY(-2px)}table{width:100%;border-collapse:collapse;margin-top:.5rem}th,td{text-align:left;padding:.8rem .85rem;border-bottom:1px solid var(--navy-100);white-space:nowrap}th{font-weight:700;font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:var(--navy-500);background:var(--bg-light);border-bottom:2px solid var(--navy-200)}th:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}th:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}tr:nth-child(2n) td{background:#00000004}tr:hover td{background:#259b8e08}td{font-size:.9375rem;color:var(--navy-600)}td:first-child{color:var(--navy-900);font-weight:500;white-space:normal;word-break:break-word;max-width:220px}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .55rem;border-radius:20px;font-size:.68rem;font-weight:600;letter-spacing:.01em;text-transform:capitalize}.badge:before{content:"";width:5px;height:5px;border-radius:50%;flex-shrink:0}.badge.pending{background:#ca8a041a;color:var(--yellow-600);border:1px solid rgba(202,138,4,.2)}.badge.pending:before{background:var(--yellow-600)}.badge.processing{background:#259b8e1a;color:var(--accent);border:1px solid rgba(37,155,142,.2)}.badge.processing:before{background:var(--accent);animation:pulse-dot 1.5s ease-in-out infinite}.badge.completed{background:#16a34a1a;color:var(--green-600);border:1px solid rgba(22,163,74,.2)}.badge.completed:before{background:var(--green-600)}.badge.failed{background:#dc26261a;color:var(--red-600);border:1px solid rgba(220,38,38,.2)}.badge.failed:before{background:var(--red-600)}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.3}}.warning-dot{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background:#d97706;color:#fff;font-size:.6rem;font-weight:700;margin-left:.3rem;flex-shrink:0}.status-cell{display:flex;flex-direction:column;gap:.35rem}.progress-track{width:100%;height:4px;background:var(--navy-100);border-radius:2px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),#34d399);border-radius:2px;transition:width .6s ease;box-shadow:0 0 8px #259b8e4d}.time-info{font-size:.8rem;font-variant-numeric:tabular-nums;color:var(--navy-400)}.time-info.processing{color:var(--accent)}.error-detail{margin:0 .75rem .75rem;padding:.75rem 1rem;background:var(--red-100);color:var(--red-600);border-radius:var(--radius-sm);font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:.76rem;line-height:1.5;max-height:200px;overflow-y:auto;white-space:pre-wrap;word-break:break-word}.actions{display:flex;gap:.4rem;flex-wrap:wrap}.actions button{padding:.35rem .7rem;font-size:.74rem}.report-form{margin:0 .75rem .75rem;padding:.75rem 1rem;background:var(--bg-light);border-radius:var(--radius-sm)}.report-textarea{width:100%;padding:.55rem .75rem;border:1px solid var(--navy-200);border-radius:var(--radius-sm);background:var(--bg-white);color:var(--navy-900);font-family:DM Sans,sans-serif;font-size:.84rem;line-height:1.5;resize:vertical;outline:none;transition:border-color .2s,box-shadow .2s}.report-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #259b8e1f,inset 0 1px 2px #0000000a}.report-actions{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}.report-success{color:var(--green-600);font-size:.84rem;font-weight:500}.report-error{color:var(--red-600);font-size:.78rem}.report-hint{font-size:.78rem;color:var(--navy-400);margin-bottom:.25rem}.labeling-container{height:100vh;display:flex;flex-direction:column;background:var(--dark-bg-page);color:var(--dark-text-primary)}.labeling-toolbar{display:flex;align-items:center;justify-content:space-between;padding:.6rem 1rem;background:var(--dark-bg-surface);border-bottom:1px solid var(--dark-border);gap:1rem}.labeling-toolbar button{background:var(--dark-bg-hover);color:var(--dark-text-secondary);font-size:.78rem;padding:.4rem .85rem;border:1px solid var(--dark-border)}.labeling-toolbar button:hover{background:var(--dark-bg-active);color:var(--dark-text-primary);border-color:var(--dark-border-hover);box-shadow:none;transform:none}.labeling-toolbar .save-btn{background:var(--accent);color:#fff;border:none}.labeling-toolbar .save-btn:hover{background:var(--accent-hover);box-shadow:0 0 16px #2a9d8f59}.page-nav{display:flex;align-items:center;gap:.5rem;font-size:.8rem;font-weight:500;color:var(--dark-text-muted)}.zoom-controls{display:flex;align-items:center;gap:.35rem}.zoom-level{font-size:.75rem;color:var(--dark-text-muted);min-width:3rem;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none}.zoom-level:hover{color:var(--dark-text-primary)}.labeling-body{flex:1;display:flex;overflow:hidden}.labeling-viewer{flex:1;overflow:auto;padding:1.5rem;text-align:center;background:var(--dark-bg-page);background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.02) 1px,transparent 0);background-size:20px 20px}.image-container{position:relative;display:inline-block;margin:0;text-align:left;border-radius:var(--radius-md);overflow:visible;box-shadow:0 8px 32px #0006}.image-container img{max-width:100%;max-height:calc(100vh - 70px);display:block;-webkit-user-select:none;user-select:none}.bbox-overlay{position:absolute;cursor:default;transition:background-color .12s ease,border-color .12s ease;border-radius:2px}.bbox-overlay.clickable{cursor:crosshair}.labeling-panel{width:280px;background:var(--dark-bg-surface);border-left:1px solid var(--dark-border);padding:1.25rem;overflow-y:auto}.labeling-panel h3{margin-bottom:1rem;font-size:.7rem;color:var(--dark-text-faint);text-transform:uppercase;letter-spacing:.08em}.field-item{padding:.7rem .85rem;margin-bottom:.5rem;border-left:3px solid #4b5070;border-radius:var(--radius-sm);background:#1e2036;cursor:pointer;transition:all .15s ease;border-top:1px solid transparent;border-right:1px solid transparent;border-bottom:1px solid transparent}.field-item:hover{background:#252840;border-color:#ffffff0f;border-left-width:3px}.field-item.selected{background:#282c48;border-color:#ffffff1a;border-left-width:3px;box-shadow:0 0 12px #0000004d}.field-item.assigned{background:#16a34a14;border-color:#16a34a1f;border-left-width:3px}.field-name{font-weight:600;font-size:.82rem;margin-bottom:.25rem;letter-spacing:-.01em}.field-value{font-size:.78rem;color:#34d399;display:flex;align-items:center;gap:.5rem;word-break:break-all;line-height:1.4}.field-hint{font-size:.72rem;color:#5b6080;font-style:italic}.clear-btn{background:#ffffff0f;color:#6b7194;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-sm);padding:.1rem .45rem;font-size:.65rem;cursor:pointer;line-height:1.4;flex-shrink:0;transition:all .15s ease}.clear-btn:hover{background:var(--red-600);color:#fff;border-color:var(--red-600);box-shadow:none;transform:none}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px;background-clip:content-box;border:1px solid transparent}::-webkit-scrollbar-thumb:hover{background:#00000040;background-clip:content-box;border:1px solid transparent}.labeling-container ::-webkit-scrollbar-thumb{background:#ffffff1a}.labeling-container ::-webkit-scrollbar-thumb:hover{background:#ffffff2e}.container p{color:var(--navy-600);font-size:.88rem}.empty-state{text-align:center;padding:2rem 1rem;color:var(--navy-400)}.empty-state p{margin-top:.5rem}.admin-container{max-width:1200px;margin:0 auto;padding:2rem 1.5rem 3rem}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1rem}.stat-card{background:var(--bg-white);border:1px solid var(--navy-200);border-radius:var(--radius-lg);padding:1.25rem 1.5rem;box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-base),border-color var(--transition-base),transform var(--transition-base);position:relative;overflow:hidden}.stat-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent),#34d399);opacity:0;transition:opacity var(--transition-base)}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-card:hover:before{opacity:1}.stat-value{font-size:2rem;font-weight:700;color:var(--navy-900);line-height:1.2;letter-spacing:-.03em}.stat-label{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--navy-600);margin-top:.25rem}.stat-sub{font-weight:400;text-transform:none;letter-spacing:normal;color:var(--navy-400)}.chart-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;margin-bottom:1rem}.chart-card{background:var(--bg-white);border:1px solid var(--navy-200);border-radius:var(--radius-lg);padding:1.25rem 1.5rem;margin-bottom:1rem;box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-base),border-color var(--transition-base)}.chart-card:hover{box-shadow:var(--shadow-md);border-color:var(--navy-300)}.chart-card h3{margin-bottom:.85rem}.chart-grid .chart-card{margin-bottom:0}.more-menu{position:relative;display:inline-block}.more-menu-trigger{padding:.3rem .45rem!important;line-height:1;display:inline-flex;align-items:center;justify-content:center}.more-menu-dropdown{z-index:2147483647;background:var(--bg-white);border:1px solid var(--navy-100);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);min-width:150px;padding:.3rem;display:flex;flex-direction:column;gap:.1rem;animation:dropdown-enter .15s ease}@keyframes dropdown-enter{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.more-menu-item{display:block;width:100%;text-align:left;padding:.45rem .75rem;font-size:.78rem;background:none;color:var(--navy-900);border:none;border-radius:var(--radius-sm);cursor:pointer}.more-menu-item:hover{background:var(--bg-light);transform:none;box-shadow:none}.more-menu-item-danger{color:var(--red-600)}.more-menu-item-danger:hover{background:var(--red-100)}.toast-container{position:fixed;top:1rem;right:1rem;z-index:1000;display:flex;flex-direction:column;gap:.5rem;pointer-events:none}.toast{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-radius:var(--radius-lg);background:#ffffffe6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-left:4px solid var(--navy-400);box-shadow:var(--shadow-lg);font-size:.84rem;color:var(--navy-900);pointer-events:auto;animation:toast-in .3s ease forwards;min-width:260px;max-width:400px}.toast-success{border-left-color:var(--green-600)}.toast-error{border-left-color:var(--red-600)}.toast-info{border-left-color:var(--accent)}.toast-message{flex:1}.toast-close{background:none;border:none;color:var(--navy-400);font-size:1.1rem;padding:0 .25rem;cursor:pointer;line-height:1}.toast-close:hover{color:var(--navy-900);background:none;box-shadow:none;transform:none}.toast-action{background:none;border:1px solid currentColor;color:inherit;padding:.15rem .5rem;border-radius:var(--radius-sm);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:opacity var(--duration-fast) ease}.toast-action:hover{opacity:.8}@keyframes toast-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.confirm-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2147483647;background:#0f182980;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;animation:fade-in .15s ease}.confirm-card{background:var(--bg-white);border-radius:var(--radius-xl);padding:1.5rem;width:100%;max-width:400px;box-shadow:var(--shadow-xl);animation:modal-enter .2s ease}@keyframes modal-enter{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton{background:linear-gradient(90deg,var(--navy-100) 25%,var(--navy-200) 50%,var(--navy-100) 75%);background-size:800px 100%;animation:shimmer 1.5s infinite linear;border-radius:var(--radius-sm)}.skeleton-text{height:.85rem;width:70%;margin-bottom:.4rem}.skeleton-text.short{width:40%}.skeleton-stat{height:2rem;width:3rem;margin-bottom:.35rem}.skeleton-chart{height:260px;width:100%}.skeleton-row td{padding:.7rem .75rem}.skeleton-cell{height:.85rem;border-radius:var(--radius-sm)}.btn-loading{position:relative;pointer-events:none;opacity:.7;padding-left:2rem}.btn-loading:before{content:"";position:absolute;left:.7rem;top:50%;width:.8rem;height:.8rem;margin-top:-.4rem;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:btn-spin .5s linear infinite}@keyframes btn-spin{to{transform:rotate(360deg)}}.empty-state-block{text-align:center;padding:3.5rem 1rem}.empty-state-icon{color:var(--navy-300);margin-bottom:.75rem}.empty-state-title{font-size:.95rem;font-weight:600;color:var(--navy-700);margin-bottom:.25rem}.empty-state-subtitle{font-size:.84rem;color:var(--navy-400)}.empty-state-action{margin-top:var(--space-3)}.input-error{border-color:var(--red-600)!important;box-shadow:0 0 0 3px #dc262626!important}.input-error-text{color:var(--red-600);font-size:.78rem;margin-top:.25rem}.required-star{color:var(--red-600);margin-left:.15rem}input[type=text],input[type=password],textarea{transition:border-color .2s,box-shadow .2s;outline:none}input[type=text],input[type=password]{border-radius:var(--radius-md)}input[type=text]:focus,input[type=password]:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #259b8e1f,inset 0 1px 2px #0000000a}.table-toolbar{display:flex;gap:.5rem;margin-bottom:.75rem;flex-wrap:wrap}.table-toolbar input,.table-toolbar select{padding:.45rem .75rem;border:1px solid var(--navy-200);border-radius:var(--radius-sm);background:var(--bg-white);color:var(--navy-900);font-family:DM Sans,sans-serif;font-size:.82rem;outline:none;transition:border-color .2s,box-shadow .2s}.table-toolbar input:focus,.table-toolbar select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #259b8e1f,inset 0 1px 2px #0000000a}.table-toolbar input{flex:1;min-width:180px}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;position:relative}th.sortable:hover{color:var(--accent)}@keyframes page-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.container,.admin-container{animation:page-fade-in .35s cubic-bezier(.4,0,.2,1)}.row-failed td{background:#dc262608}.row-failed{border-left:3px solid var(--red-600)}.row-completed{border-left:3px solid var(--green-600)}.file-icon{display:inline-flex;align-items:center;vertical-align:middle;margin-right:.35rem;color:var(--red-600);flex-shrink:0}.nav-btn{padding:.4rem .85rem;font-size:.8rem;font-weight:500;border-radius:20px;border:1px solid rgba(255,255,255,.15);cursor:pointer;transition:all var(--transition-fast)}.nav-btn.nav-active{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 0 12px #259b8e4d}.nav-btn.nav-active:hover{background:var(--accent-hover);box-shadow:0 0 16px #259b8e66}.nav-btn.nav-inactive{background:#ffffff0f;color:#c0c4d6;border-color:#ffffff26}.nav-btn.nav-inactive:hover{background:#ffffff1a;color:#fff;border-color:#ffffff40;box-shadow:none;transform:none}.not-found-page{text-align:center;padding:5rem 1rem;animation:page-fade-in .2s ease-out}.not-found-code{font-size:5rem;font-weight:700;color:var(--navy-300);line-height:1;margin-bottom:.5rem}.not-found-message{font-size:1.1rem;color:var(--navy-600);margin-bottom:1.5rem}.comparison-modal-card{background:var(--bg-white);border-radius:var(--radius-xl);padding:1.5rem;width:100%;max-width:800px;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-xl);animation:modal-enter .2s ease}.pl-doc-viewer{background:var(--bg-white);border-radius:var(--radius-xl);width:90vw;max-width:900px;height:85vh;display:flex;flex-direction:column;box-shadow:var(--shadow-xl);animation:modal-enter .2s ease;overflow:hidden}.pl-doc-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--navy-100);flex-shrink:0}.pl-doc-header h3{font-size:1rem;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pl-doc-content{flex:1;overflow:hidden}.comparison-summary{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.comparison-badge{display:inline-flex;align-items:center;gap:.3rem;padding:.25rem .6rem;border-radius:20px;font-size:.75rem;font-weight:600}.comparison-badge.match{background:var(--green-100);color:var(--green-600)}.comparison-badge.price-diff{background:var(--yellow-100);color:var(--yellow-600)}.comparison-badge.not-found,.comparison-badge.fee-issue{background:var(--red-100);color:var(--red-600)}.comparison-badge.qty-exceeded{background:#fff3e0;color:#e65100}.comparison-filters{display:flex;gap:.35rem;margin-bottom:.75rem}.comparison-filters button{padding:.3rem .7rem;font-size:.74rem}.comparison-filters button.active-filter{background:var(--accent);color:#fff}.comparison-row-price_diff td{background:#ca8a040a}.comparison-row-not_found td,.comparison-row-fee_issue td{background:#dc26260a}.comparison-row-quantity_exceeded td{background:#e651000f}.comparison-modal-footer{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.job-detail-panel{margin:0 .75rem .75rem;padding:1rem 1.25rem;background:var(--bg-light);border-radius:var(--radius-sm);display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem 1.5rem;animation:fade-in .15s ease}.job-detail-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--navy-400);margin-bottom:.15rem}.job-detail-value{font-size:.84rem;color:var(--navy-900);word-break:break-all}tr.row-clickable{cursor:pointer}.pagination{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--navy-200)}.pagination-info{font-size:.8rem;color:var(--navy-600);font-weight:500;min-width:4rem;text-align:center}.live-indicator{display:inline-flex;align-items:center;gap:.4rem;font-size:.75rem;color:var(--navy-400);font-weight:500;margin-left:auto;white-space:nowrap}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--green-600);animation:pulse-dot 1.5s ease-in-out infinite;flex-shrink:0}.thumbnail-strip{display:flex;gap:.5rem;padding:.5rem 1rem;overflow-x:auto;background:#151725;border-bottom:1px solid rgba(255,255,255,.08);scrollbar-width:thin}.thumbnail-item{position:relative;flex-shrink:0;width:60px;height:80px;border-radius:var(--radius-sm);overflow:hidden;cursor:pointer;border:2px solid transparent;transition:border-color .15s ease,opacity .15s ease;opacity:.7}.thumbnail-item:hover{opacity:1}.thumbnail-item.thumbnail-active{border-color:var(--accent);opacity:1}.thumbnail-item img{width:100%;height:100%;object-fit:cover;display:block}.thumbnail-number{position:absolute;bottom:2px;right:3px;font-size:.6rem;font-weight:700;color:#fff;background:#0009;padding:0 .25rem;border-radius:2px;line-height:1.4}.thumbnail-skeleton{width:100%;height:100%;background:linear-gradient(90deg,#252840 25%,#2e3250,#252840 75%);background-size:800px 100%;animation:shimmer 1.5s infinite linear}.cell-truncate{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell-truncate-sm{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.compare-dropdown{position:absolute;top:100%;right:0;z-index:50;background:var(--bg-white);border:1px solid var(--navy-200);border-radius:var(--radius-sm);padding:.5rem;min-width:200px;box-shadow:var(--shadow-lg)}.compare-badge{margin-left:.4rem;font-size:.65rem;padding:.05rem .35rem;border-radius:10px;font-weight:600}.compare-badge-ok{background:var(--green-100);color:var(--green-600)}.compare-badge-diff{background:var(--red-100);color:var(--red-600)}.compare-suggestion{width:100%;text-align:left;margin-bottom:.25rem;font-size:.78rem;border:1.5px solid var(--blue-400, #60a5fa);background:var(--blue-50, #eff6ff)}.editable-cell{cursor:pointer;min-width:90px}.editable-cell-narrow{cursor:pointer;min-width:70px}.editable-cell-input{width:80px;padding:.2rem .4rem;font-size:.82rem;border:1px solid var(--blue-400);border-radius:4px;background:var(--bg-white);color:var(--navy-900)}.editable-cell-input-narrow{width:60px;padding:.2rem .4rem;font-size:.82rem;border:1px solid var(--blue-400);border-radius:4px;background:var(--bg-white);color:var(--navy-900)}.editable-cell-select{padding:.2rem .3rem;font-size:.82rem;border:1px solid var(--navy-200);border-radius:4px;background:var(--bg-white);color:var(--navy-900);cursor:pointer;min-width:80px}.editable-cell-dashed{border-bottom:1px dashed var(--navy-300);padding-bottom:1px}.more-menu-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:var(--radius-xs, 4px)}.review-cell:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}th.sortable:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}[data-theme=dark] .compare-dropdown{background:var(--navy-800);border-color:var(--navy-600)}[data-theme=dark] .editable-cell-input,[data-theme=dark] .editable-cell-input-narrow{background:var(--navy-800);color:var(--navy-100);border-color:var(--blue-400)}[data-theme=dark] .editable-cell-select{background:var(--navy-800);color:var(--navy-100);border-color:var(--navy-600)}.command-palette-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#00000080;display:flex;justify-content:center;padding-top:20vh}.command-palette{width:560px;max-width:90vw;max-height:60vh;background:var(--bg-white);border:1px solid var(--navy-200);border-radius:var(--radius-lg, 12px);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;overflow:hidden}.command-palette-input{width:100%;padding:.85rem 1rem;border:none;border-bottom:1px solid var(--navy-200);background:transparent;color:var(--navy-900);font-size:.95rem;font-family:DM Sans,sans-serif;outline:none}.command-palette-input::placeholder{color:var(--navy-400)}.command-palette-results{overflow-y:auto;padding:.5rem;flex:1}.command-palette-category{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--navy-400);padding:.5rem .75rem .25rem}.command-palette-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.5rem .75rem;background:none;border:none;color:var(--navy-900);font-size:.84rem;cursor:pointer;border-radius:var(--radius-sm);text-align:left}.command-palette-item:hover,.command-palette-item-active{background:var(--navy-50)}.command-palette-kbd{font-size:.68rem;padding:.1rem .4rem;background:var(--navy-100);border:1px solid var(--navy-200);border-radius:var(--radius-xs, 4px);color:var(--navy-500);font-family:monospace}.command-palette-empty{text-align:center;padding:1.5rem;color:var(--navy-400);font-size:.84rem}[data-theme=dark] .command-palette{background:var(--navy-800);border-color:var(--navy-600)}[data-theme=dark] .command-palette-input{color:var(--navy-100);border-bottom-color:var(--navy-600)}[data-theme=dark] .command-palette-item{color:var(--navy-100)}[data-theme=dark] .command-palette-item:hover,[data-theme=dark] .command-palette-item-active{background:var(--navy-700)}[data-theme=dark] .command-palette-kbd{background:var(--navy-700);border-color:var(--navy-600);color:var(--navy-300)}@media (max-width: 768px){.topbar{flex-direction:column;height:auto;gap:.5rem;padding:.6rem 1rem}.container,.admin-container{padding:1rem .75rem 2rem}.stat-grid{grid-template-columns:repeat(2,1fr)}.chart-grid{grid-template-columns:1fr}table{font-size:.85rem}.hide-mobile{display:none}.upload-zone{padding:1.5rem 1rem}.actions{flex-wrap:wrap}.labeling-body{flex-direction:column}.labeling-panel{width:100%;max-height:40vh;overflow-y:auto;border-left:none;border-top:1px solid rgba(255,255,255,.08)}.labeling-toolbar{flex-wrap:wrap;gap:.5rem}.labeling-toolbar button{font-size:.72rem;padding:.35rem .6rem}.table-toolbar{flex-direction:column}.table-toolbar input{width:100%}}@media (max-width: 480px){.stat-grid{grid-template-columns:1fr}.card{overflow-x:auto;-webkit-overflow-scrolling:touch}table{min-width:500px}.actions button{font-size:.68rem;padding:.3rem .5rem}}.review-container{height:100vh;display:flex;flex-direction:column;background:var(--dark-bg-page);color:var(--dark-text-primary)}.review-toolbar{display:flex;align-items:center;justify-content:space-between;padding:.6rem 1rem;background:var(--dark-bg-surface);border-bottom:1px solid var(--dark-border);gap:1rem}.review-toolbar button{background:var(--dark-bg-hover);color:var(--dark-text-secondary);font-size:.78rem;padding:.4rem .85rem;border:1px solid rgba(255,255,255,.1)}.review-toolbar button:hover{background:var(--dark-bg-active);color:var(--dark-text-primary);border-color:var(--dark-border-hover);box-shadow:none;transform:none}.review-toolbar .save-btn{background:var(--accent);color:#fff;border:none}.review-toolbar .save-btn:hover{background:var(--accent-hover);box-shadow:0 0 16px #2a9d8f59}.review-toolbar-left,.review-toolbar-right{display:flex;align-items:center;gap:.75rem}.review-pending-badge{font-size:.72rem;padding:.15rem .5rem;border-radius:10px;background:#60a5fa26;color:#60a5fa;font-weight:600}.review-history-btn{display:flex;align-items:center;gap:.35rem}.review-body{flex:1;display:flex;overflow:hidden}.review-viewer{flex:0 0 45%;overflow:auto;padding:1.5rem;text-align:center;background:var(--dark-bg-page);background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.02) 1px,transparent 0);background-size:20px 20px}.review-panel{flex:1;display:flex;flex-direction:column;background:var(--dark-bg-surface);border-left:1px solid var(--dark-border);overflow:hidden}.review-table-tabs{display:flex;gap:0;border-bottom:1px solid rgba(255,255,255,.08);padding:0 .5rem;flex-shrink:0}.review-tab{padding:.6rem 1rem;font-size:.78rem;background:transparent;border:none;border-bottom:2px solid transparent;color:#6b7194;cursor:pointer;transition:all .15s ease}.review-tab:hover{color:#c0c4d6;background:#ffffff08;border:none;border-bottom:2px solid transparent;box-shadow:none;transform:none}.review-tab-active,.review-tab-active:hover{color:var(--accent);border-bottom-color:var(--accent)}.review-table-wrapper{flex:1;overflow:auto;padding:0}.review-table{width:100%;border-collapse:collapse;font-size:.78rem}.review-table thead{position:sticky;top:0;z-index:10}.review-table th{background:#1e2036;color:#9aa0b8;font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;padding:.55rem .6rem;text-align:left;border-bottom:1px solid rgba(255,255,255,.1);white-space:nowrap}.review-row-num{color:#4b5070;font-size:.68rem;width:2rem;text-align:center;-webkit-user-select:none;user-select:none}.review-table tbody tr{transition:background .1s ease}.review-table tbody tr:hover{background:#ffffff08}.review-cell{padding:.4rem .6rem;border-bottom:1px solid rgba(255,255,255,.04);cursor:text;position:relative;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background .12s ease}.review-cell:hover{background:#ffffff0f}.review-cell-value{display:inline}.review-cell-empty{background:#ca8a040f}.review-cell-empty:hover{background:#ca8a041f}.review-cell-edited{background:#16a34a0f}.review-cell-edited:hover{background:#16a34a1f}.review-cell-pending{background:#60a5fa14}.review-cell-pending:hover{background:#60a5fa26}.review-cell-editing{padding:0;background:#259b8e1a}.review-cell-input{width:100%;padding:.4rem .6rem;background:#ffffff14;color:#e2e4ed;border:1.5px solid var(--accent);border-radius:2px;font-size:.78rem;font-family:inherit;outline:none;box-shadow:0 0 8px #259b8e40}.review-cell-indicator{position:absolute;top:2px;right:2px;line-height:0}.review-loading{padding:1.5rem}.review-empty{padding:2rem;text-align:center;color:#6b7194;font-size:.85rem}.review-history-panel{border-top:1px solid rgba(255,255,255,.08);padding:1rem;overflow-y:auto;max-height:280px;flex-shrink:0;background:#13152380}.review-history-panel h4{font-size:.7rem;color:#6b7194;text-transform:uppercase;letter-spacing:.08em;margin-bottom:.75rem}.review-history-empty{font-size:.78rem;color:#5b6080;font-style:italic}.review-history-version{margin-bottom:.75rem;padding:.6rem .7rem;background:#1e2036;border-radius:var(--radius-sm);border-left:3px solid var(--accent)}.review-history-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem}.review-version-badge{font-size:.68rem;font-weight:700;padding:.1rem .4rem;border-radius:4px;background:var(--accent);color:#fff}.review-version-time{font-size:.68rem;color:#6b7194}.review-version-count{font-size:.68rem;color:#9aa0b8;margin-left:auto}.review-history-edits{display:flex;flex-direction:column;gap:.2rem}.review-history-edit{display:flex;align-items:center;gap:.5rem;font-size:.72rem;padding:.2rem 0}.review-edit-location{font-family:monospace;font-size:.65rem;color:#6b7194;background:#ffffff0a;padding:.05rem .3rem;border-radius:3px;flex-shrink:0}.review-edit-col{font-weight:600;color:#9aa0b8;flex-shrink:0;max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.review-edit-diff{display:flex;align-items:center;gap:.3rem;min-width:0;overflow:hidden}.review-diff-old{color:#f87171;text-decoration:line-through;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.review-diff-new{color:#34d399;font-weight:500;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.review-container ::-webkit-scrollbar-thumb{background:#ffffff1a}.review-container ::-webkit-scrollbar-thumb:hover{background:#ffffff2e}@media (max-width: 768px){.review-body{flex-direction:column}.review-viewer{flex:0 0 40vh}.review-panel{border-left:none;border-top:1px solid rgba(255,255,255,.08)}.review-toolbar{flex-wrap:wrap}}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skip-link{position:absolute;top:-100%;left:var(--space-4);z-index:10000;padding:var(--space-2) var(--space-4);background:var(--accent);color:#fff;border-radius:var(--radius-md);font-size:var(--text-base);font-weight:600;text-decoration:none;transition:top var(--duration-fast) ease}.skip-link:focus{top:var(--space-2)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}[data-theme=dark]{--bg-page: var(--dark-bg-page);--bg-white: var(--dark-bg-elevated);--bg-light: var(--dark-bg-surface);--bg-hover: var(--dark-bg-hover);--navy-900: var(--dark-text-primary);--navy-800: var(--dark-text-primary);--navy-700: var(--dark-text-secondary);--navy-600: var(--dark-text-secondary);--navy-500: var(--dark-text-muted);--navy-400: var(--dark-text-muted);--navy-300: rgba(255, 255, 255, .12);--navy-200: var(--dark-border);--navy-100: rgba(255, 255, 255, .04);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .2), 0 1px 3px rgba(0, 0, 0, .15);--shadow-md: 0 2px 4px rgba(0, 0, 0, .2), 0 4px 12px rgba(0, 0, 0, .25);--shadow-lg: 0 4px 8px rgba(0, 0, 0, .2), 0 8px 24px rgba(0, 0, 0, .3);--shadow-xl: 0 8px 16px rgba(0, 0, 0, .25), 0 20px 48px rgba(0, 0, 0, .4)}[data-theme=dark] body{color-scheme:dark}[data-theme=dark] .topbar{background:linear-gradient(180deg,#13152580,#10122080);border-bottom-color:var(--dark-border)}[data-theme=dark] .card{background:var(--dark-bg-elevated);border-color:var(--dark-border)}[data-theme=dark] .card:hover{border-color:var(--dark-border-hover)}[data-theme=dark] button.secondary{background:var(--dark-bg-hover);color:var(--dark-text-primary);border-color:var(--dark-border)}[data-theme=dark] button.secondary:hover{background:var(--dark-bg-active);border-color:var(--dark-border-hover)}[data-theme=dark] th{background:var(--dark-bg-surface);color:var(--dark-text-muted);border-bottom-color:var(--dark-border)}[data-theme=dark] td{border-bottom-color:#ffffff0a}[data-theme=dark] tr:nth-child(2n) td{background:#ffffff04}[data-theme=dark] tr:hover td{background:#259b8e0f}[data-theme=dark] .upload-zone{border-color:var(--dark-border);background:linear-gradient(180deg,rgba(37,155,142,.04),transparent)}[data-theme=dark] .upload-zone:hover{border-color:var(--accent)}[data-theme=dark] .api-key-input input,[data-theme=dark] .table-toolbar input,[data-theme=dark] .table-toolbar select{background:var(--dark-bg-hover);border-color:var(--dark-border);color:var(--dark-text-primary)}[data-theme=dark] .more-menu-dropdown{background:var(--dark-bg-elevated);border-color:var(--dark-border)}[data-theme=dark] .more-menu-item{color:var(--dark-text-primary)}[data-theme=dark] .more-menu-item:hover{background:var(--dark-bg-hover)}[data-theme=dark] .confirm-backdrop{background:#0009}[data-theme=dark] .confirm-card{background:var(--dark-bg-elevated)}[data-theme=dark] .toast{background:#1e2036f2;color:var(--dark-text-primary)}[data-theme=dark] .job-detail-panel,[data-theme=dark] .report-form{background:var(--dark-bg-surface)}[data-theme=dark] .report-textarea{background:var(--dark-bg-hover);border-color:var(--dark-border);color:var(--dark-text-primary)}[data-theme=dark] .stat-card,[data-theme=dark] .chart-card{background:var(--dark-bg-elevated);border-color:var(--dark-border)}[data-theme=dark] .comparison-modal-card,[data-theme=dark] .pl-doc-viewer{background:var(--dark-bg-elevated)}[data-theme=dark] .pl-doc-header{border-bottom-color:#ffffff14}[data-theme=dark] .not-found-code{color:var(--dark-text-faint)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;padding:.3rem;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-md);color:var(--dark-text-muted);cursor:pointer;transition:all var(--duration-fast) ease}.theme-toggle:hover{color:#fff;background:#ffffff1a;border-color:#ffffff40;box-shadow:none;transform:none}.breadcrumbs{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-6);font-size:var(--text-sm);color:var(--navy-500);background:var(--bg-page);border-bottom:1px solid var(--navy-100)}.breadcrumb-link{color:var(--navy-500);text-decoration:none;cursor:pointer;background:none;border:none;font-size:var(--text-sm);font-family:inherit;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);transition:color var(--duration-fast) ease,background var(--duration-fast) ease}.breadcrumb-link:hover{color:var(--accent);background:var(--accent-light);transform:none;box-shadow:none}.breadcrumb-separator{color:var(--navy-300);font-size:var(--text-xs);-webkit-user-select:none;user-select:none}.breadcrumb-current{color:var(--navy-700);font-weight:500}.app-shell-content{min-height:calc(100vh - 56px)}.nav-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#fff3;color:#fff;font-size:.65rem;font-weight:700;margin-left:.35rem;line-height:1}.nav-btn.nav-active .nav-badge{background:#ffffff4d}.badge{transition:background-color var(--duration-normal) ease,color var(--duration-normal) ease,border-color var(--duration-normal) ease}.progress-fill{position:relative;overflow:hidden}.progress-fill:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:progress-shimmer 1.5s ease-in-out infinite}@keyframes progress-shimmer{0%{left:-100%}to{left:200%}}.progress-fill.indeterminate{width:100%!important;background:linear-gradient(90deg,var(--accent),#34d399,var(--accent));background-size:200% 100%;animation:progress-indeterminate 1.5s ease-in-out infinite}@keyframes progress-indeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}.toast-icon{flex-shrink:0;width:18px;height:18px;display:flex;align-items:center;justify-content:center}.toast-success .toast-icon{color:var(--green-600)}.toast-error .toast-icon{color:var(--red-600)}.toast-info .toast-icon{color:var(--accent)}.toast-exit{animation:toast-out .3s ease forwards}@keyframes toast-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.toast-countdown{position:absolute;bottom:0;left:0;height:3px;border-radius:0 0 0 var(--radius-lg);transition:width linear}.toast-success .toast-countdown{background:var(--green-600)}.toast-error .toast-countdown{background:var(--red-600)}.toast-info .toast-countdown{background:var(--accent)}.toast{position:relative;overflow:hidden}.upload-file-preview{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--bg-light);border-radius:var(--radius-md);margin-top:var(--space-3);font-size:var(--text-sm)}.upload-file-info{flex:1;text-align:left}.upload-file-name{font-weight:600;color:var(--navy-900)}.upload-file-size{font-size:var(--text-xs);color:var(--navy-400)}.upload-progress{width:100%;height:4px;background:var(--navy-100);border-radius:2px;overflow:hidden;margin-top:var(--space-2)}.upload-progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),#34d399);border-radius:2px;transition:width .3s ease}.upload-success-anim{animation:upload-success .5s ease forwards;color:var(--green-600);font-weight:600}@keyframes upload-success{0%{transform:scale(.8);opacity:0}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}.upload-zone.dragging{border-style:dashed;animation:marching-ants .5s linear infinite;background-size:12px 12px}@keyframes marching-ants{0%{border-dash-offset:0}to{border-dash-offset:24px}}.row-checkbox{width:18px;height:18px;accent-color:var(--accent);cursor:pointer}.bulk-action-bar{position:fixed;bottom:var(--space-6);left:50%;transform:translate(-50%);display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-6);background:var(--navy-900);color:#fff;border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);z-index:500;animation:slide-up .2s var(--ease-out-expo);font-size:var(--text-sm)}.bulk-action-bar button{font-size:var(--text-sm);padding:var(--space-2) var(--space-4)}@keyframes slide-up{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.column-toggle{position:relative}.column-toggle-dropdown{position:absolute;top:100%;right:0;z-index:50;background:var(--bg-white);border:1px solid var(--navy-200);border-radius:var(--radius-lg);padding:var(--space-2);min-width:180px;box-shadow:var(--shadow-lg);animation:dropdown-enter .15s ease}.column-toggle-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);color:var(--navy-700);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--duration-fast) ease}.column-toggle-item:hover{background:var(--bg-hover)}.column-toggle-item input{accent-color:var(--accent)}.card table thead th{position:sticky;top:0;z-index:10}th.sortable .sort-icon{display:inline-block;width:12px;height:12px;vertical-align:middle;margin-left:var(--space-1);opacity:.35}th.sortable.sort-asc .sort-icon,th.sortable.sort-desc .sort-icon{opacity:.8}.shortcut-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;background:#0f182980;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;animation:fade-in .15s ease}.shortcut-card{background:var(--bg-white);border-radius:var(--radius-xl);padding:var(--space-6);width:100%;max-width:400px;box-shadow:var(--shadow-xl);animation:modal-enter .2s ease}.shortcut-card h2{font-size:var(--text-xl);margin-bottom:var(--space-4);font-weight:700}.shortcut-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) 0;border-bottom:1px solid var(--navy-100);font-size:var(--text-sm)}.shortcut-row:last-child{border-bottom:none}.shortcut-key{display:inline-flex;align-items:center;gap:var(--space-1)}.shortcut-key kbd{display:inline-block;padding:.15rem .4rem;background:var(--bg-light);border:1px solid var(--navy-200);border-radius:var(--radius-sm);font-size:var(--text-xs);font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;color:var(--navy-700);box-shadow:0 1px 0 var(--navy-200)}.new-row td{animation:row-enter .3s var(--ease-out-expo)}@keyframes row-enter{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.confirm-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--red-100);color:var(--red-600);margin-bottom:var(--space-3)}.confirm-title{text-transform:none;letter-spacing:normal;font-size:var(--text-lg);font-weight:600;color:var(--navy-900);margin-bottom:var(--space-2)}.confirm-message{font-size:var(--text-base);color:var(--navy-600);margin-bottom:var(--space-5);line-height:1.5}.confirm-actions{display:flex;gap:var(--space-2);justify-content:flex-end}@media (max-width: 768px){.mobile-bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:100;display:flex;align-items:stretch;justify-content:space-around;background:var(--bg-white);border-top:1px solid var(--navy-200);box-shadow:0 -2px 8px #0000000f;padding:var(--space-1) 0;padding-bottom:env(safe-area-inset-bottom,0)}.mobile-nav-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-2) var(--space-3);background:none;border:none;color:var(--navy-400);font-size:.65rem;font-weight:500;cursor:pointer;border-radius:var(--radius-md);min-width:64px;min-height:44px;transition:color var(--duration-fast) ease}.mobile-nav-btn:hover{background:none;transform:none;box-shadow:none}.mobile-nav-btn.mobile-nav-active{color:var(--accent)}.mobile-nav-btn svg{width:22px;height:22px}.topbar .topbar-nav{display:none}.app-shell-content{padding-bottom:60px}}@media (min-width: 769px){.mobile-bottom-nav{display:none}}.time-warning-text{display:block;font-size:.68rem;color:var(--amber-600, #d97706);font-weight:500}.offline-banner{position:sticky;top:0;z-index:1000;background:var(--amber-500, #f59e0b);color:#000;text-align:center;padding:.4rem 1rem;font-size:.82rem;font-weight:600}.cell-checkbox{width:36px;text-align:center;cursor:pointer}.context-menu{position:fixed;z-index:1000;background:var(--bg-white);border:1px solid var(--navy-200);border-radius:var(--radius-sm);padding:.25rem;min-width:160px;box-shadow:var(--shadow-lg)}.context-menu-item{display:block;width:100%;text-align:left;padding:.4rem .75rem;background:none;border:none;color:var(--navy-900);font-size:.8rem;cursor:pointer;border-radius:var(--radius-xs, 4px);white-space:nowrap}.context-menu-item:hover{background:var(--navy-50)}.context-menu-item-danger{color:var(--red-600)}.context-menu-item-danger:hover{background:var(--red-50, #fef2f2)}[data-theme=dark] .context-menu{background:var(--navy-800);border-color:var(--navy-600)}[data-theme=dark] .context-menu-item{color:var(--navy-100)}[data-theme=dark] .context-menu-item:hover{background:var(--navy-700)}
