:root{--primary-h:224;--primary-s:76%;--primary-l:54%;--primary:hsl(var(--primary-h), var(--primary-s), var(--primary-l));--primary-hover:hsl(var(--primary-h), var(--primary-s), calc(var(--primary-l) - 6%));--primary-light:hsl(var(--primary-h), var(--primary-s), 95%);--secondary:#0f172a;--success:#10b981;--success-hover:#059669;--success-light:#ecfdf5;--warning:#f59e0b;--warning-light:#fef3c7;--danger:#ef4444;--danger-hover:#dc2626;--danger-light:#fef2f2;--bg-app:#f8fafc;--bg-card:#fff;--text-main:#334155;--text-muted:#64748b;--text-title:#0f172a;--border-color:#e2e8f0;--border-focus:hsl(var(--primary-h), var(--primary-s), 75%);--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -1px #0000000f;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -2px #0000000d;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--sidebar-width:260px;--header-height:70px}[data-theme=dark]{--bg-app:#0f172a;--bg-card:#1e293b;--text-main:#94a3b8;--text-muted:#64748b;--text-title:#f8fafc;--border-color:#334155;--border-focus:hsl(var(--primary-h), var(--primary-s), 50%);--primary-light:#6366f126}*{box-sizing:border-box;margin:0;padding:0;transition:background-color .2s,border-color .2s}body{font-family:var(--font-sans);background-color:var(--bg-app);color:var(--text-main);-webkit-font-smoothing:antialiased;line-height:1.5;overflow-x:hidden}#root{flex-direction:column;width:100vw;max-width:100%;min-height:100vh;display:flex}a{color:var(--primary);text-decoration:none}.admin-layout{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);color:#f8fafc;z-index:100;background-color:#0f172a;border-right:1px solid #1e293b;flex-direction:column;transition:width .3s;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar-brand{height:var(--header-height);letter-spacing:-.5px;background:linear-gradient(135deg,#38bdf8,#818cf8);-webkit-text-fill-color:transparent;-webkit-background-clip:text;border-bottom:1px solid #1e293b;align-items:center;padding:0 24px;font-size:20px;font-weight:700;display:flex}.sidebar-menu{flex-direction:column;flex:1;gap:8px;padding:24px 16px;list-style:none;display:flex}.sidebar-item a{color:#94a3b8;border-radius:var(--radius-sm);align-items:center;gap:12px;padding:12px 16px;font-size:14px;font-weight:500;transition:all .2s;display:flex}.sidebar-item a:hover{color:#f8fafc;background-color:#ffffff0d}.sidebar-item.active a{background-color:var(--primary);color:#fff;box-shadow:0 4px 12px #6366f14d}.sidebar-footer{border-top:1px solid #1e293b;justify-content:space-between;align-items:center;padding:16px;display:flex}.main-content{margin-left:var(--sidebar-width);flex-direction:column;flex:1;min-height:100vh;display:flex}.main-header{height:var(--header-height);background-color:var(--bg-card);border-bottom:1px solid var(--border-color);z-index:90;box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;padding:0 32px;display:flex;position:sticky;top:0}.header-title h1{color:var(--text-title);letter-spacing:-.5px;font-size:20px;font-weight:600}.header-user{align-items:center;gap:16px;display:flex}.user-info{text-align:right}.user-name{color:var(--text-title);font-size:14px;font-weight:600}.user-role{color:var(--text-muted);font-size:12px}.btn-logout{border:1px solid var(--border-color);color:var(--text-main);border-radius:var(--radius-sm);cursor:pointer;background:0 0;align-items:center;gap:6px;padding:8px 12px;font-size:13px;font-weight:500;transition:all .2s;display:flex}.btn-logout:hover{background-color:var(--danger-light);color:var(--danger);border-color:#ef444433}.content-body{flex:1;width:100%;max-width:1600px;margin:0 auto;padding:32px}.card{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin-bottom:24px;padding:24px;position:relative;overflow:hidden}.card-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.card-title{color:var(--text-title);font-size:18px;font-weight:600}.btn{border-radius:var(--radius-sm);cursor:pointer;box-shadow:var(--shadow-sm);border:none;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:14px;font-weight:500;transition:all .2s cubic-bezier(.4,0,.2,1);display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background-color:var(--primary);color:#fff}.btn-primary:hover{background-color:var(--primary-hover);box-shadow:0 4px 12px #6366f140}.btn-secondary{color:#0f172a;border:1px solid var(--border-color);background-color:#f1f5f9}.btn-secondary:hover{background-color:#e2e8f0}.btn-danger{background-color:var(--danger);color:#fff}.btn-danger:hover{background-color:var(--danger-hover)}.btn-success{background-color:var(--success);color:#fff}.btn-success:hover{background-color:var(--success-hover)}.btn:disabled{opacity:.55;cursor:not-allowed;pointer-events:none;box-shadow:none}.reports-page{max-width:1180px;margin:0 auto}.reports-page-header{justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.reports-page-header h2{color:var(--text-title);letter-spacing:-.4px;font-size:28px;line-height:1.3}.reports-toolbar{align-items:center;gap:12px;margin-bottom:16px;display:flex}.reports-search{flex:1;max-width:480px;position:relative}.reports-search svg{color:var(--text-muted);pointer-events:none;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.reports-search input,.reports-filter{height:42px;color:var(--text-title);background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-sm);outline:none}.reports-search input{width:100%;font:inherit;padding:0 14px 0 42px;font-size:14px}.reports-filter{min-width:210px;padding:0 36px 0 14px;font-size:14px}.reports-search input:focus,.reports-filter:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.reports-empty-state{text-align:center;background:var(--bg-card);border-radius:var(--radius-lg);min-height:270px;box-shadow:var(--shadow-sm);border:1px dashed #cbd5e1;flex-direction:column;justify-content:center;align-items:center;padding:44px 24px;display:flex}.reports-empty-icon{width:64px;height:64px;color:var(--primary);background:var(--primary-light);border-radius:14px;justify-content:center;align-items:center;margin-bottom:16px;display:flex}.reports-empty-state h3{color:var(--text-title);font-size:18px}.reports-empty-state p{max-width:580px;color:var(--text-muted);margin:8px 0 22px;font-size:14px}.reports-empty-compact{min-height:190px}.report-batches-table{border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.report-batches-table .table th:first-child,.report-batches-table .table td:first-child{min-width:220px}.report-batches-table .table th:nth-child(2),.report-batches-table .table td:nth-child(2),.report-batches-table .table th:nth-child(3),.report-batches-table .table td:nth-child(3){white-space:nowrap;width:20%}.report-batches-table .table td{height:68px}.report-batches-table .table th:last-child,.report-batches-table .table td:last-child{white-space:nowrap;width:1%}.report-row-actions,.report-detail-actions,.report-folder-pending{align-items:center;gap:8px;display:flex}.report-row-actions{justify-content:flex-end}.report-folder-pending{color:var(--text-muted);font-size:12px}.report-detail-actions{flex-wrap:wrap;justify-content:flex-end}.report-detail-loading{min-height:360px;color:var(--primary);justify-content:center;align-items:center;display:flex}.report-detail-back{color:var(--text-muted);align-items:center;gap:7px;margin-bottom:18px;font-size:14px;font-weight:600;display:inline-flex}.report-detail-back:hover{color:var(--primary)}.report-detail-heading{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:24px;display:flex}.report-detail-title-line{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.report-detail-title-line h2{color:var(--text-title);letter-spacing:-.4px;font-size:28px}.report-detail-heading p{color:var(--text-muted);margin-top:6px;font-size:14px}.report-detail-heading p span{margin:0 7px}.report-status-pill,.report-unit-status{border-radius:999px;align-items:center;gap:5px;width:fit-content;font-weight:700;display:inline-flex}.report-status-pill{text-transform:uppercase;letter-spacing:.35px;padding:5px 10px;font-size:11px}.report-unit-status{padding:4px 9px;font-size:12px}.status-draft,.status-pending,.status-deploying{color:#92400e;background:#fef3c7}.status-active,.status-ready,.status-in_progress{color:#1d4ed8;background:#dbeafe}.status-completed{color:#047857;background:#d1fae5}.status-failed,.status-sync_error,.status-overdue{color:#b91c1c;background:#fee2e2}.status-closed{color:#475569;background:#e2e8f0}.report-deployment-alert{color:#991b1b;border-radius:var(--radius-md);background:#fef2f2;border:1px solid #fecaca;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;margin-bottom:20px;padding:16px 18px;display:grid}.report-deployment-alert p{margin-top:3px;font-size:13px}.operation-toast-stack{z-index:320;pointer-events:none;flex-direction:column;gap:12px;width:min(400px,100vw - 32px);max-height:calc(100vh - 116px);display:flex;position:fixed;top:92px;right:24px;overflow-y:auto}.operation-toast{border:1px solid var(--border-color);border-left:4px solid var(--primary);pointer-events:auto;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffffa;border-radius:12px;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;padding:16px;animation:.22s ease-out operationToastEnter;display:grid;box-shadow:0 16px 38px #0f172a2e}.operation-toast-success-state{border-left-color:#10b981}.operation-toast-error-state{border-left-color:#ef4444}.operation-toast-progress-state{grid-template-columns:auto minmax(0,1fr);align-self:flex-end;align-items:center;width:auto;min-width:240px;max-width:100%;padding:12px 14px}.operation-toast-icon{width:34px;height:34px;color:var(--primary);background:#eff6ff;border-radius:50%;justify-content:center;align-items:center;display:flex}.operation-toast-success-state .operation-toast-icon{color:#059669;background:#ecfdf5}.operation-toast-error-state .operation-toast-icon{color:#dc2626;background:#fef2f2}.operation-toast-content{min-width:0}.operation-toast-heading{color:var(--text-title);justify-content:space-between;align-items:baseline;gap:12px;display:flex}.operation-toast-heading strong{font-size:14px;line-height:1.4}.operation-toast-message{color:var(--text-muted);overflow-wrap:anywhere;margin-top:8px;font-size:12px;line-height:1.5}.operation-toast-actions{justify-content:flex-end;margin-top:10px;display:flex}.operation-toast-action{color:var(--primary);font-size:12px;font-weight:700;text-decoration:none}.operation-toast-action:hover{text-decoration:underline}.operation-toast-close{width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;margin:-5px -5px 0 0;padding:0;display:flex}.operation-toast-close:hover{color:var(--text-title);background:#f1f5f9}@keyframes operationToastEnter{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:translate(0)}}@media (width<=640px){.operation-toast-stack{width:calc(100vw - 24px);max-height:calc(100vh - 92px);top:76px;right:12px}.operation-toast{padding:14px}}.report-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:24px;display:grid}.report-summary-card{color:var(--primary);background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);align-items:center;gap:14px;padding:18px 20px;display:flex}.report-summary-card div{flex-direction:column;display:flex}.report-summary-card span{color:var(--text-muted);font-size:12px}.report-summary-card strong{color:var(--text-title);font-size:24px}.report-summary-card.summary-active{color:var(--warning)}.report-summary-card.summary-completed{color:var(--success)}.report-detail-table-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:20px}.report-detail-table-heading{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.report-detail-table-heading h3{color:var(--text-title);font-size:17px}.report-detail-table-heading span{color:var(--text-muted);font-size:13px}.report-detail-table-sub{color:var(--text-muted);margin-top:3px;font-size:13px}.unit-search-box{border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-card);align-items:center;gap:8px;padding:5px 12px;transition:border-color .2s;display:flex}.unit-search-box:focus-within{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-light)}.unit-search-input{color:var(--text-main);background:0 0;border:none;outline:none;width:170px;font-size:13px}.unit-search-input::placeholder{color:var(--text-muted);font-size:12px}.unit-progress-columns{grid-template-columns:1fr 1fr;gap:20px;margin-top:16px;display:grid}@media (width<=860px){.unit-progress-columns{grid-template-columns:1fr;gap:16px}}.unit-column{border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);background:#f8fafc;flex-direction:column;display:flex;overflow:hidden}.unit-column-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.unit-column-title{letter-spacing:-.1px;align-items:center;gap:8px;font-size:14px;font-weight:700;display:flex}.unit-column-completed .unit-column-header{color:#166534;background:#f0fdf4;border-bottom-color:#bbf7d0}.unit-column-pending .unit-column-header{color:#854d0e;background:#fefce8;border-bottom-color:#fef08a}.unit-column-badge{border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700}.badge-success{color:#15803d;background:#dcfce7;border:1px solid #bbf7d0}.badge-warning{color:#a16207;background:#fef9c3;border:1px solid #fef08a}.unit-column-list{flex-direction:column;gap:10px;min-height:140px;padding:14px;display:flex}.unit-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-sm);flex-direction:column;gap:8px;padding:12px 14px;transition:all .18s;display:flex;box-shadow:0 1px 2px #00000008}.unit-card:hover{border-color:#cbd5e1;transform:translateY(-1px);box-shadow:0 4px 10px #0000000d}.unit-card-completed{border-left:3.5px solid var(--success)}.unit-card-pending{border-left:3.5px solid var(--warning)}.unit-card-header{justify-content:space-between;align-items:center;gap:10px;display:flex}.unit-card-title-group{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.unit-card-title{color:var(--text-title);font-size:14px;font-weight:700}.unit-card-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.unit-meta-editor{color:var(--text-muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.unit-meta-time{color:#059669;align-items:center;gap:5px;font-size:12px;font-weight:600;display:inline-flex}.unit-meta-error{color:var(--danger);align-items:center;gap:5px;font-size:11px;display:inline-flex}.unit-meta-lock{color:#047857;align-items:center;gap:5px;font-size:12px;font-weight:600;display:inline-flex}.unit-meta-lock.is-locking{color:#1d4ed8}.btn-unit-file{border-radius:var(--radius-sm);color:#334155;white-space:nowrap;background:#f1f5f9;border:1px solid #e2e8f0;align-items:center;gap:5px;padding:5px 11px;font-size:12px;font-weight:600;text-decoration:none;transition:all .15s;display:inline-flex}.btn-unit-file:hover{color:#0f172a;background:#e2e8f0;border-color:#cbd5e1}.btn-open-completed{color:#065f46;background:#ecfdf5;border-color:#a7f3d0}.btn-open-completed:hover{color:#047857;background:#d1fae5;border-color:#6ee7b7}.unit-no-file{color:var(--text-muted);font-size:12px;font-style:italic}.unit-column-empty{min-height:110px;color:var(--text-muted);text-align:center;justify-content:center;align-items:center;padding:20px;font-size:13px;font-style:italic;display:flex}.unit-empty-all-done{color:#059669;border-radius:var(--radius-sm);background:#ecfdf5;border:1px dashed #a7f3d0;margin:10px;font-style:normal;font-weight:600}.report-progress{background:#e2e8f0;border-radius:999px;width:90px;height:6px;margin-bottom:5px;overflow:hidden}.report-progress span{background:var(--success);border-radius:inherit;height:100%;display:block}.report-row-error{max-width:260px;color:var(--danger);margin-top:6px;line-height:1.35;display:block}@media (width<=720px){.reports-page-header,.reports-toolbar{flex-direction:column;align-items:stretch}.reports-page-header .btn,.reports-search,.reports-filter{width:100%;max-width:none}.report-batches-table .table th:first-child,.report-batches-table .table td:first-child,.report-batches-table .table th:nth-child(2),.report-batches-table .table td:nth-child(2),.report-batches-table .table th:nth-child(3),.report-batches-table .table td:nth-child(3){width:auto}.report-detail-heading,.report-detail-actions{flex-direction:column;align-items:stretch}.report-detail-actions .btn{width:100%}.report-summary-grid{grid-template-columns:1fr}.report-deployment-alert{grid-template-columns:auto minmax(0,1fr)}.report-deployment-alert .btn{grid-column:1/-1}}.btn-sm{padding:6px 12px;font-size:12px}.form-group{margin-bottom:20px}.form-label{color:var(--text-title);margin-bottom:6px;font-size:13px;font-weight:500;display:block}.form-control{width:100%;color:var(--text-title);background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-sm);outline:none;padding:10px 14px;font-size:14px;transition:border-color .2s,box-shadow .2s}.form-control:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.table-container{border-radius:var(--radius-sm);border:1px solid var(--border-color);background-color:var(--bg-card);width:100%;overflow-x:auto}.table{border-collapse:collapse;text-align:left;width:100%;font-size:14px}.table th{color:var(--text-muted);border-bottom:1px solid var(--border-color);text-transform:uppercase;letter-spacing:.5px;background-color:#f8fafc;padding:16px 20px;font-size:11px;font-weight:600}.table td{border-bottom:1px solid var(--border-color);color:var(--text-main);vertical-align:middle;padding:16px 20px}.table tr:last-child td{border-bottom:none}.table tr:hover td{background-color:#f8fafc}.badge{text-transform:uppercase;letter-spacing:.3px;border-radius:9999px;align-items:center;padding:4px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-success{background-color:var(--success-light);color:var(--success)}.badge-warning{background-color:var(--warning-light);color:var(--warning)}.badge-danger{background-color:var(--danger-light);color:var(--danger)}.badge-primary{background-color:var(--primary-light);color:var(--primary)}.login-page{background:radial-gradient(circle at 0 0,#e0f2fe 0%,#fff 50%,#e0e7ff 100%);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex;position:relative;overflow:hidden}.login-page:before{content:"";z-index:0;background:radial-gradient(circle,#6366f126 0%,#6366f100 70%);width:400px;height:400px;position:absolute;top:-100px;right:-100px}.login-card{-webkit-backdrop-filter:blur(20px);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:10;background:#ffffffb3;border:1px solid #ffffff80;width:100%;max-width:440px;min-height:482px;padding:40px;animation:none}.google-signin-slot{justify-content:center;align-items:center;height:52px;display:flex}.google-signin-host{z-index:2;contain:layout paint;opacity:0;position:absolute;inset:0;overflow:hidden}.google-signin-stage{width:100%;height:44px;position:relative}.google-signin-visual{z-index:1;color:#1f1f1f;pointer-events:none;background:#fff;border:1px solid #dadce0;border-radius:4px;justify-content:center;align-items:center;font-family:Arial,sans-serif;font-size:16px;font-weight:500;display:flex;position:absolute;inset:0}.google-logo{color:#4285f4;font-size:22px;font-weight:700;position:absolute;left:16px}.login-header{text-align:center;margin-bottom:32px}.login-logo{background:linear-gradient(135deg, var(--primary), #818cf8);-webkit-text-fill-color:transparent;-webkit-background-clip:text;margin-bottom:8px;font-size:28px;font-weight:800}.login-subtitle{color:var(--text-muted);font-size:14px}.login-alert{background-color:var(--danger-light);color:var(--danger);border-radius:var(--radius-sm);border:1px solid #ef44441a;margin-bottom:20px;padding:12px 16px;font-size:13px}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:200;background-color:#0f172a99;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal-content{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);flex-direction:column;width:100%;max-width:600px;max-height:calc(100vh - 40px);margin:auto;animation:.3s cubic-bezier(.34,1.56,.64,1) modalEnter;display:flex;overflow:hidden}.modal-content>form{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.modal-header{border-bottom:1px solid var(--border-color);flex-shrink:0;justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.modal-title{color:var(--text-title);font-size:18px;font-weight:600}.btn-close{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;transition:all .2s;display:flex}.btn-close:hover{color:var(--text-title);background-color:#f1f5f9}.modal-body{flex:1;min-height:0;padding:24px;overflow-y:auto}.modal-footer{border-top:1px solid var(--border-color);border-bottom-left-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md);background-color:#f8fafc;flex-shrink:0;justify-content:flex-end;gap:12px;padding:16px 24px;display:flex}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes modalEnter{0%{opacity:0;transform:scale(.95)translateY(10px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin{animation:.8s linear infinite spin;display:inline-block}.action-buttons{gap:8px;display:flex}.btn-icon-action{border:1px solid var(--border-color);cursor:pointer;border-radius:var(--radius-sm);width:32px;height:32px;color:var(--text-main);background:0 0;justify-content:center;align-items:center;transition:all .2s;display:flex}.btn-icon-action:hover{background-color:#f1f5f9}.btn-icon-action.edit:hover{color:var(--primary);background-color:var(--primary-light);border-color:#6366f133}.btn-icon-action.delete:hover{color:var(--danger);background-color:var(--danger-light);border-color:#ef444433}.tree-node-indent{width:24px;height:24px;display:inline-block;position:relative}.tree-node-indent:before{content:"";border-left:2px dashed #cbd5e1;position:absolute;top:-8px;bottom:12px;left:12px}.tree-node-indent:after{content:"";border-top:2px dashed #cbd5e1;width:12px;position:absolute;top:12px;left:12px}.tree-node-container{align-items:center;display:flex}.ss-toolbar{color:#3c4043;background:#f8f9fa;border:1px solid #dadce0;border-bottom:none;border-radius:8px 8px 0 0;flex-wrap:wrap;align-items:center;gap:8px;min-height:41px;padding:6px 12px;font-size:13px;display:flex}.ss-cell-ref{color:#3c4043;min-width:56px;height:28px;font-size:12px;font-weight:600;font-family:"Google Sans", var(--font-sans);background:#fff;border:1px solid #dadce0;border-radius:4px;justify-content:center;align-items:center;padding:0 8px;display:inline-flex}.ss-formula-bar{color:#3c4043;text-overflow:ellipsis;white-space:nowrap;background:#fff;border:1px solid #dadce0;border-radius:4px;flex:1;align-items:center;min-width:120px;height:28px;padding:0 10px;font-size:13px;display:flex;overflow:hidden}.ss-toolbar-actions{flex:none;align-items:center;gap:8px;display:flex}.ss-toolbar-sep{background:#dadce0;width:1px;height:20px;margin:0 4px}.ss-toolbar-btn{color:#3c4043;cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;gap:5px;height:28px;padding:0 10px;font-size:12px;font-weight:500;transition:background .15s,border-color .15s;display:inline-flex}.ss-toolbar-btn:hover{background:#e8eaed;border-color:#dadce0}.ss-toolbar-btn.danger:hover{color:#c5221f;background:#fce8e6}.ss-toolbar-info{color:#5f6368;margin-left:auto;font-size:12px}.ss-container{background:#fff;border:1px solid #dadce0;border-radius:0 0 8px 8px;min-height:200px;max-height:calc(100vh - 340px);position:relative;overflow:auto}.ss-container:focus,.ss-container:focus-visible{outline:none}.ss-grid{border-collapse:collapse;table-layout:fixed;font-size:13px;font-family:"Google Sans", var(--font-sans);min-width:100%}.ss-grid thead tr:first-child th{color:#5f6368;text-align:center;z-index:12;-webkit-user-select:none;user-select:none;background:#f8f9fa;border-bottom:1px solid #dadce0;border-right:1px solid #e8eaed;padding:2px 4px;font-size:11px;font-weight:500;position:sticky;top:0}.ss-grid thead tr:nth-child(2) th{color:#202124;text-align:center;z-index:12;-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;background:#f8f9fa;border-bottom:2px solid #dadce0;border-right:1px solid #e8eaed;max-width:200px;padding:6px 8px;font-size:12px;font-weight:600;position:sticky;top:22px;overflow:hidden}.ss-corner{width:46px;min-width:46px;max-width:46px;position:sticky;left:0;z-index:15!important;background:#f8f9fa!important;border-right:2px solid #dadce0!important}.ss-row-num{color:#5f6368;text-align:center;z-index:10;-webkit-user-select:none;user-select:none;background:#f8f9fa;border-bottom:1px solid #e8eaed;border-right:2px solid #dadce0;width:46px;min-width:46px;max-width:46px;padding:0 4px;font-size:12px;font-weight:500;position:sticky;left:0}.ss-row-num.active-row{color:#1a73e8;background:#d3e3fd;font-weight:700}.ss-cell{cursor:cell;border-bottom:1px solid #e8eaed;border-right:1px solid #e8eaed;min-width:120px;height:32px;padding:0;position:relative;overflow:hidden}.ss-cell-value{white-space:nowrap;text-overflow:ellipsis;color:#202124;align-items:center;height:100%;min-height:32px;padding:0 6px;font-size:13px;line-height:32px;display:flex;overflow:hidden}.ss-cell-value.placeholder{color:#bdc1c6;font-style:italic}.ss-cell-value.boolean{justify-content:center}.ss-cell.active{outline-offset:-1px;z-index:5;outline:2px solid #1a73e8}.ss-cell.active .ss-cell-value{background:#1a73e80a}.ss-cell.editing{outline-offset:-1px;z-index:6;outline:2px solid #1a73e8;overflow:visible}.ss-cell.editing .ss-cell-input{color:#202124;z-index:6;background:#fff;border:none;outline:none;width:calc(100% + 2px);height:calc(100% + 2px);padding:0 6px;font-family:inherit;font-size:13px;position:absolute;inset:-1px;box-shadow:0 2px 8px #0000001f}.ss-cell.editing .ss-cell-select{color:#202124;z-index:6;cursor:pointer;background:#fff;border:none;outline:none;width:calc(100% + 2px);height:calc(100% + 2px);padding:0 4px;font-family:inherit;font-size:13px;position:absolute;inset:-1px;box-shadow:0 2px 8px #0000001f}.ss-cell.required-empty{background:#fce8e6}.ss-cell.required-empty .ss-cell-value{background:0 0}.ss-grid tbody tr:hover .ss-row-num{background:#e8eaed}.ss-col-active{color:#1a73e8!important;background:#d3e3fd!important;font-weight:700!important}.ss-add-row{color:#1a73e8;cursor:pointer;background:#f8f9fa;border:none;border-top:1px dashed #dadce0;border-radius:0 0 8px 8px;justify-content:center;align-items:center;gap:6px;width:100%;padding:8px 0;font-size:13px;font-weight:500;transition:background .15s;display:flex}.ss-add-row:hover{background:#e8f0fe}.ss-cell.locked{cursor:default;background:#f8f9fa}.ss-cell.locked .ss-cell-value{color:#5f6368}.ss-row-delete{color:#c5221f;cursor:pointer;background:0 0;border:none;padding:2px;line-height:1;display:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ss-row-num:hover .ss-row-delete{display:block}.ss-row-num:hover .ss-row-num-text{display:none}.ss-row-num{z-index:10;position:sticky;left:0}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f5f9}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}@keyframes pendingPopupSlideUp{0%{opacity:0;transform:translateY(30px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes pulseGlow{0%,to{box-shadow:0 10px 30px -5px #f59e0b40,0 0 0 1px #f59e0b33}50%{box-shadow:0 15px 35px -5px #f59e0b66,0 0 0 2px #f59e0b66}}.pending-popup-container{z-index:1050;background:#fff;border-radius:14px;flex-direction:column;width:400px;max-width:calc(100vw - 32px);font-family:inherit;animation:.35s cubic-bezier(.16,1,.3,1) pendingPopupSlideUp;display:flex;position:fixed;bottom:24px;right:24px;overflow:hidden;box-shadow:0 20px 40px -10px #0f172a2e,0 0 0 1px #e2e8f0e6}.pending-popup-header{background:linear-gradient(135deg,#fffbeb 0%,#fef3c7 100%);border-bottom:1px solid #fde68a;justify-content:space-between;align-items:flex-start;padding:16px 18px 14px;display:flex}.pending-popup-title-area{align-items:flex-start;gap:12px;display:flex}.pending-popup-icon-wrapper{color:#fff;background:#f59e0b;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex;box-shadow:0 4px 10px #f59e0b4d}.pending-popup-title{color:#92400e;font-size:14px;font-weight:700;line-height:1.35}.pending-popup-title strong{color:#b45309;text-underline-offset:2px;font-size:15px;text-decoration:underline}.pending-popup-subtitle{color:#a16207;margin-top:2px;font-size:12px}.pending-popup-controls{gap:4px;margin-left:8px;display:flex}.pending-popup-btn-icon{cursor:pointer;color:#92400e;opacity:.8;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:4px;transition:all .15s;display:flex}.pending-popup-btn-icon:hover{opacity:1;color:#78350f;background:#f59e0b33}.pending-popup-body{background:#fff;flex-direction:column;gap:8px;max-height:270px;padding:10px 14px;display:flex;overflow-y:auto}.pending-popup-item{cursor:pointer;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;outline:none;padding:10px 12px;transition:all .2s}.pending-popup-item:hover,.pending-popup-item:focus-visible{background:#fff;border-color:#3b82f6;transform:translateY(-1px);box-shadow:0 4px 12px #3b82f61f}.pending-popup-item-content{flex-direction:column;gap:4px;display:flex}.pending-popup-item-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.pending-popup-form-name{color:#0f172a;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px;font-weight:600;overflow:hidden}.pending-popup-tag{white-space:nowrap;border-radius:999px;padding:2px 7px;font-size:11px;font-weight:600;line-height:1.2}.pending-popup-tag.draft{color:#475569;background:#f1f5f9;border:1px solid #cbd5e1}.pending-popup-tag.warning{color:#dc2626;background:#fef2f2;border:1px solid #fca5a5}.pending-popup-item-campaign{color:#64748b;white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.pending-popup-item-bottom{justify-content:space-between;align-items:center;margin-top:4px;font-size:11px;display:flex}.pending-popup-item-actions{justify-content:flex-end;align-items:center;gap:8px;margin-left:auto;display:flex}.pending-popup-btn-read{color:#475569;font:inherit;cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #cbd5e1;border-radius:6px;align-items:center;gap:3px;padding:3px 6px;font-size:11px;font-weight:600;display:inline-flex}.pending-popup-btn-read:hover:not(:disabled){color:#0f172a;background:#f1f5f9;border-color:#94a3b8}.pending-popup-btn-read:disabled,.pending-popup-btn-read-all:disabled{cursor:wait;opacity:.6}.pending-popup-deadline{color:#64748b;align-items:center;gap:4px;display:flex}.pending-popup-deadline.expired{color:#dc2626;font-weight:600}.pending-popup-link-action{color:#2563eb;align-items:center;gap:2px;font-weight:600;transition:transform .15s;display:flex}.pending-popup-item:hover .pending-popup-link-action{color:#1d4ed8;transform:translate(3px)}.pending-popup-footer{background:#f8fafc;border-top:1px solid #e2e8f0;justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.pending-popup-footer-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.pending-popup-footer-actions{flex-shrink:0;align-items:center;gap:5px;display:flex}.pending-popup-hint{color:#94a3b8;font-size:11px}.pending-popup-error{color:#dc2626;font-size:10px;line-height:1.25}.pending-popup-btn-read-all{color:#fff;font:inherit;cursor:pointer;white-space:nowrap;background:#2563eb;border:1px solid #2563eb;border-radius:7px;align-items:center;gap:4px;padding:5px 8px;font-size:11px;font-weight:600;display:inline-flex}.pending-popup-btn-read-all:hover:not(:disabled){background:#1d4ed8;border-color:#1d4ed8}.pending-popup-btn-later{color:#64748b;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:12px;font-weight:600;transition:all .15s}.pending-popup-btn-later:hover{color:#0f172a;background:#e2e8f0}.pending-popup-minimized{color:#0f172a;cursor:pointer;z-index:1050;background:#fff;border-radius:999px;align-items:center;gap:10px;padding:10px 14px 10px 12px;transition:all .2s;animation:.3s pendingPopupSlideUp;display:flex;position:fixed;bottom:24px;right:24px;box-shadow:0 10px 25px -5px #0f172a2e,0 0 0 1px #e2e8f0e6}.pending-popup-minimized:hover{transform:translateY(-2px);box-shadow:0 14px 28px -4px #0f172a40,0 0 0 1px #3b82f6}.pending-popup-minimized-icon{color:#d97706;background:#fef3c7;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;display:flex;position:relative}.pending-popup-badge-count{color:#fff;background:#ef4444;border:1.5px solid #fff;border-radius:8px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 3px;font-size:10px;font-weight:700;display:flex;position:absolute;top:-4px;right:-4px}.pending-popup-minimized-text{color:#1e293b;font-size:13px;font-weight:600}@media (width<=640px){.pending-popup-container{width:auto;bottom:12px;left:12px;right:12px}.pending-popup-minimized{bottom:12px;right:12px}.pending-popup-footer{flex-direction:column;align-items:flex-start;gap:8px}.pending-popup-footer-actions{justify-content:flex-end;width:100%}}.batch-setup-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-bottom:20px;display:grid}.org-selection-section{margin-top:12px}.org-selection-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.org-selection-title-wrap{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.org-selection-title{color:var(--text-title);align-items:center;gap:8px;margin:0;font-size:15px;font-weight:600;display:flex}.org-selection-count-badge{background:var(--primary-light);color:var(--primary);border-radius:12px;padding:3px 8px;font-size:12px;font-weight:600}.org-selection-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.org-search-box{align-items:center;display:flex;position:relative}.org-search-box svg{color:var(--text-muted);pointer-events:none;position:absolute;left:10px}.org-search-input{border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-card);height:32px;color:var(--text-main);outline:none;width:170px;padding:0 10px 0 32px;font-size:13px;transition:border-color .2s,box-shadow .2s}.org-search-input:focus{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-light)}.org-boxes-container{background:var(--bg-app);border:1px solid var(--border-color);border-radius:var(--radius-md);grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-height:440px;padding:12px;display:grid;overflow-y:auto}@media (width<=640px){.org-boxes-container{grid-template-columns:1fr}}.org-select-box{background:var(--bg-card);border:1.5px solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;box-sizing:border-box;flex-direction:column;gap:8px;min-width:0;padding:10px 14px;transition:all .15s ease-in-out;display:flex}.org-select-box:hover{border-color:var(--border-focus);box-shadow:var(--shadow-sm);background:#fff}.org-select-box.selected{border-color:var(--primary);background:var(--primary-light);box-shadow:0 1px 3px #2563eb1f}.org-select-box-header{align-items:flex-start;gap:10px;display:flex}.org-select-box-header input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary);cursor:pointer;flex-shrink:0;margin-top:2px}.org-select-box-info{flex:1;min-width:0}.org-select-box-name{color:var(--text-title);word-break:break-word;font-size:14px;font-weight:600;line-height:1.4}.org-select-box-badge{white-space:nowrap;border-radius:4px;flex-shrink:0;margin-top:1px;padding:2.5px 8px;font-size:11px;font-weight:500}.org-select-box-badge.has-officer{color:#3730a3;background:#e0e7ff}.org-select-box-badge.no-officer{background:var(--danger-light);color:var(--danger)}.officer-dashboard{flex-direction:column;gap:22px;width:100%;max-width:1300px;margin:0 auto;display:flex}.officer-stats-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;display:grid}.officer-stat-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);flex-direction:column;padding:20px 22px;transition:transform .2s,box-shadow .2s;display:flex;position:relative}.officer-stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.officer-stat-card.card-total{border-left:4px solid var(--primary)}.officer-stat-card.card-pending{border-left:4px solid #f59e0b}.officer-stat-card.card-completed{border-left:4px solid var(--success)}.officer-stat-top{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.officer-stat-title{color:var(--text-muted);font-size:13.5px;font-weight:500}.officer-stat-icon{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;display:flex}.officer-stat-icon.icon-blue{color:#2563eb;background:#eff6ff}.officer-stat-icon.icon-amber{color:#d97706;background:#fffbeb}.officer-stat-icon.icon-green{color:#059669;background:#ecfdf5}.officer-stat-number{color:var(--text-title);letter-spacing:-.5px;font-size:32px;font-weight:800;line-height:1.1}.officer-stat-number-row{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.officer-stat-percent{color:#059669;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:9999px;padding:2px 8px;font-size:12px;font-weight:600}.officer-stat-sub{color:var(--text-muted);margin-top:8px;font-size:12.5px}.officer-progress-track{background:#e2e8f0;border-radius:9999px;height:5px;margin-top:10px;overflow:hidden}.officer-progress-bar{background:#10b981;border-radius:9999px;height:100%;transition:width .4s}.officer-section-container{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:24px 26px}.officer-section-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.officer-section-heading{color:var(--text-title);letter-spacing:-.2px;margin:0;font-size:18px;font-weight:700}.officer-section-desc{color:var(--text-muted);margin:4px 0 0;font-size:13px}.officer-section-tools{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.officer-tabs{background:var(--bg-app);border:1px solid var(--border-color);border-radius:8px;gap:2px;padding:3px;display:flex}.officer-tab{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:5px 12px;font-size:12.5px;font-weight:500;transition:all .15s}.officer-tab:hover{color:var(--text-title)}.officer-tab.active{background:var(--bg-card);color:var(--primary);font-weight:600;box-shadow:0 1px 2px #0000000f}.officer-search-input-wrap{background:var(--bg-app);border:1px solid var(--border-color);border-radius:8px;align-items:center;gap:8px;min-width:220px;padding:5px 12px;display:flex}.officer-search-icon{color:var(--text-muted);flex-shrink:0}.officer-search-input{width:100%;color:var(--text-main);background:0 0;border:none;outline:none;font-size:13px}.officer-search-input::placeholder{color:var(--text-muted)}.officer-empty-box{text-align:center;background:var(--bg-app);border-radius:var(--radius-md);border:1px dashed var(--border-color);flex-direction:column;justify-content:center;align-items:center;padding:48px 24px;display:flex}.officer-report-card-list{flex-direction:column;gap:14px;display:flex}.officer-report-row{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-card);border-left:4px solid var(--primary);justify-content:space-between;align-items:center;gap:20px;padding:18px 20px;transition:border-color .2s,box-shadow .2s;display:flex}.officer-report-row:hover{border-color:#cbd5e1;box-shadow:0 4px 12px #0000000d}.officer-report-row.completed{border-left-color:var(--success);background:#10b98104}.officer-report-info-col{flex:1;min-width:0}.officer-report-title-line{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;display:flex}.officer-batch-code-badge{color:var(--primary);letter-spacing:.5px;background:#eff6ff;border-radius:4px;padding:2.5px 8px;font-size:11px;font-weight:700}.officer-batch-title{color:var(--text-title);margin:0;font-size:16px;font-weight:600;line-height:1.3}.officer-status-badge{white-space:nowrap;border-radius:9999px;align-items:center;gap:5px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.officer-status-badge.badge-done{color:#047857;background:#ecfdf5;border:1px solid #a7f3d0}.officer-status-badge.badge-progress{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe}.officer-status-badge.badge-overdue{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca}.officer-status-badge.badge-ready{color:#475569;background:#f1f5f9;border:1px solid #e2e8f0}.officer-report-details-grid{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:16px;font-size:13px;display:flex}.officer-detail-item{align-items:center;gap:6px;display:inline-flex}.officer-deadline-chip{border-radius:4px;margin-left:6px;padding:1px 7px;font-size:11px;font-weight:600}.officer-deadline-chip.chip-urgent{color:#c2410c;background:#ffedd5}.officer-deadline-chip.chip-warning{color:#b45309;background:#fef3c7}.officer-deadline-chip.chip-overdue{color:#b91c1c;background:#fee2e2}.officer-deadline-chip.chip-normal{color:#64748b;background:#f1f5f9}.officer-error-bar{color:var(--danger);background:var(--danger-light);border-radius:6px;align-items:center;gap:6px;margin-top:8px;padding:4px 10px;font-size:12px;display:inline-flex}.officer-report-cta-col{flex-shrink:0}.officer-sheet-action-btn{white-space:nowrap;border-radius:8px;align-items:center;gap:8px;padding:10px 18px;font-size:13.5px;font-weight:600;transition:all .2s;display:inline-flex;box-shadow:0 2px 6px #2563eb33}.officer-sheet-action-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #2563eb4d}.officer-pending-tag{color:var(--text-muted);background:var(--bg-app);border:1px solid var(--border-color);border-radius:6px;align-items:center;gap:6px;padding:6px 12px;font-size:12.5px;display:inline-flex}@media (width<=768px){.officer-report-row{flex-direction:column;align-items:flex-start}.officer-report-cta-col{width:100%}.officer-sheet-action-btn{justify-content:center;width:100%}.officer-section-header{flex-direction:column}.officer-section-tools,.officer-search-input-wrap{width:100%}}.pagination-wrapper{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;padding:12px 18px;display:flex}.pagination-left{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:16px;font-size:13.5px;display:flex}.pagination-select-wrapper{align-items:center;gap:6px;display:flex}.pagination-select{border-radius:var(--radius-sm);border:1px solid var(--border-color);background-color:var(--bg-app);color:var(--text-main);cursor:pointer;outline:none;padding:5px 10px;font-size:13px;font-weight:500;transition:all .2s}.pagination-select:focus{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-light)}.pagination-pages{align-items:center;gap:5px;display:flex}.pagination-btn{border-radius:var(--radius-sm);border:1px solid var(--border-color);background-color:var(--bg-card);min-width:32px;height:32px;color:var(--text-main);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:0 6px;font-size:13px;font-weight:500;transition:all .15s;display:inline-flex}.pagination-btn:hover:not(:disabled){background-color:var(--primary-light);color:var(--primary);border-color:var(--primary)}.pagination-btn.active{background-color:var(--primary);color:#fff;border-color:var(--primary);font-weight:600;box-shadow:0 2px 5px #2563eb4d}.pagination-btn:disabled{opacity:.35;cursor:not-allowed;border-color:var(--border-color);color:var(--text-muted);background-color:var(--bg-card)}.pagination-ellipsis{text-align:center;min-width:20px;color:var(--text-muted);-webkit-user-select:none;user-select:none;font-size:13px}.batch-filter-tabs{background:var(--bg-app);border:1px solid var(--border-color);border-radius:8px;flex-wrap:wrap;align-items:center;gap:6px;padding:4px;display:flex}.batch-filter-tab{color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;align-items:center;gap:8px;padding:7px 14px;font-size:13px;font-weight:500;transition:all .2s;display:inline-flex}.batch-filter-tab:hover{color:var(--text-title);background:#00000008}.batch-filter-tab.active{background:var(--bg-card);color:var(--primary);font-weight:600;box-shadow:0 1px 3px #00000014}.batch-tab-badge{border-radius:999px;justify-content:center;align-items:center;padding:1px 7px;font-size:11px;font-weight:700;line-height:1.2;display:inline-flex}.batch-tab-badge.badge-all{color:#475569;background:#e2e8f0}.batch-tab-badge.badge-active{color:#1d4ed8;background:#dbeafe}.batch-tab-badge.badge-ended{color:#b91c1c;background:#fee2e2}.batch-tab-badge.badge-setup{color:#64748b;background:#f1f5f9}.batch-status-badge{white-space:nowrap;letter-spacing:.1px;border-radius:9999px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.batch-status-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.batch-status-dot.pulse{animation:1.8s infinite batchDotPulse;box-shadow:0 0 #2563ebb3}@keyframes batchDotPulse{0%{transform:scale(.95);box-shadow:0 0 #2563ebb3}70%{transform:scale(1);box-shadow:0 0 0 5px #2563eb00}to{transform:scale(.95);box-shadow:0 0 #2563eb00}}.batch-badge-active{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe}.batch-badge-completed{color:#047857;background:#ecfdf5;border:1px solid #a7f3d0}.batch-badge-ended{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca}.batch-badge-draft{color:#475569;background:#f8fafc;border:1px solid #e2e8f0}.batch-badge-deploying{color:#b45309;background:#fffbeb;border:1px solid #fde68a}.batch-progress-box{flex-direction:column;gap:4px;min-width:110px;display:flex}.batch-progress-text{color:var(--text-muted);justify-content:space-between;align-items:center;font-size:12px;display:flex}.batch-progress-text strong{color:var(--text-title);font-weight:600}.batch-progress-track{background:#e2e8f0;border-radius:999px;width:100%;height:6px;overflow:hidden}.batch-progress-fill{border-radius:inherit;height:100%;transition:width .3s}.batch-table-row{transition:background-color .15s}.batch-table-row.row-active{border-left:4px solid #3b82f6!important}.batch-table-row.row-completed{border-left:4px solid #10b981!important}.batch-table-row.row-ended{border-left:4px solid #ef4444!important}.batch-table-row.row-draft{border-left:4px solid #94a3b8!important}.batch-group-divider{align-items:center;gap:10px;margin:24px 0 12px;padding-bottom:6px;display:flex}.batch-group-title{color:var(--text-title);align-items:center;gap:8px;font-size:14.5px;font-weight:700;display:inline-flex}.batch-group-line{background:var(--border-color);flex:1;height:1px}.batch-board-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:flex-start;gap:24px;display:grid}@media (width<=960px){.batch-board-grid{grid-template-columns:1fr;gap:20px}}.batch-board-column{border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);background:#f8fafc;flex-direction:column;display:flex;overflow:visible}.batch-board-column-header{background:var(--bg-card);border-bottom:1px solid var(--border-color);border-top-left-radius:inherit;border-top-right-radius:inherit;justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.batch-board-column-header.column-active{border-top:3px solid #3b82f6}.batch-board-column-header.column-ended{border-top:3px solid #ef4444}.batch-board-column-title{color:var(--text-title);align-items:center;gap:8px;margin:0;font-size:15px;font-weight:700;display:flex}.batch-board-column-body{flex-direction:column;gap:12px;min-height:160px;padding:14px;display:flex}.batch-board-column-empty{text-align:center;min-height:130px;color:var(--text-muted);border:1px dashed var(--border-color);border-radius:var(--radius-sm);background:#fff;justify-content:center;align-items:center;padding:24px;font-size:13px;font-style:italic;display:flex}.compact-batch-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-sm);z-index:1;flex-direction:column;gap:6px;padding:9px 12px;transition:all .2s;display:flex;position:relative;box-shadow:0 1px 2px #0000000a}.compact-batch-card:hover{z-index:10;border-color:#cbd5e1;transform:translateY(-1px);box-shadow:0 3px 10px #0000000f}.compact-batch-card.menu-open{z-index:100!important}.compact-batch-card.card-active{border-left:3.5px solid #3b82f6}.compact-batch-card.card-completed{border-left:3.5px solid #10b981}.compact-batch-card.card-ended{border-left:3.5px solid #ef4444}.compact-batch-card.card-draft{border-left:3.5px solid #94a3b8}.compact-batch-header{align-items:center;gap:8px;display:flex;position:relative}.compact-batch-title-wrap{flex:0 auto;align-items:center;min-width:0;max-width:calc(100% - 145px);display:inline-flex;position:relative}.compact-batch-title{color:var(--text-title);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:13.5px;font-weight:600;line-height:1.25;overflow:hidden}.compact-batch-title a{color:inherit;white-space:nowrap;text-overflow:ellipsis;text-decoration:none;transition:color .15s;display:block;overflow:hidden}.compact-batch-title a:hover,.compact-batch-title span:hover{color:var(--primary)}.compact-batch-title-tooltip{color:#f8fafc;white-space:normal;word-break:break-word;pointer-events:none;z-index:120;opacity:0;visibility:hidden;background:#0f172a;border-radius:6px;width:max-content;max-width:320px;padding:6px 10px;font-size:12px;font-weight:500;line-height:1.35;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% + 7px);left:0;transform:translateY(4px);box-shadow:0 8px 20px #00000038}.compact-batch-title-tooltip:after{content:"";border:5px solid #0000;border-top-color:#0f172a;position:absolute;top:100%;left:14px}.compact-batch-title-wrap:hover .compact-batch-title-tooltip{opacity:1;visibility:visible;transform:translateY(0)}.compact-batch-header .batch-status-badge{flex-shrink:0;padding:2px 7px;font-size:11px}.compact-batch-action-wrap{z-index:20;flex-shrink:0;margin-left:auto;position:relative}.btn-batch-more{cursor:pointer;color:#2563eb;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;padding:0;transition:all .15s;display:flex}.btn-batch-more:hover,.btn-batch-more.active{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}.batch-action-popover{border:1px solid var(--border-color);z-index:100;background:#fff;border-radius:10px;flex-direction:column;gap:2px;min-width:175px;padding:6px;animation:.16s ease-out batchPopoverEnter;display:flex;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 10px 25px -4px #0f172a2e,0 4px 8px -2px #0f172a14}@keyframes batchPopoverEnter{0%{opacity:0;transform:translateY(-4px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.batch-popover-item{color:var(--text-main);text-align:left;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;width:100%;padding:8px 12px;font-size:13px;font-weight:500;text-decoration:none;transition:all .15s;display:flex}.batch-popover-item:hover{color:var(--text-title);background:#f1f5f9}.batch-popover-item.item-primary{color:#2563eb}.batch-popover-item.item-primary:hover{color:#1d4ed8;background:#eff6ff}.batch-popover-item.item-danger{color:#ef4444}.batch-popover-item.item-danger:hover{color:#dc2626;background:#fef2f2}.batch-popover-divider{background:var(--border-color);height:1px;margin:4px 0}.compact-batch-footer-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding-top:1px;display:flex}.compact-batch-deadline-text{color:var(--text-muted);flex-shrink:0;align-items:center;gap:5px;font-size:11.5px;display:flex}.compact-batch-deadline-text strong{color:var(--text-title);font-weight:600}.compact-batch-deadline-text .officer-deadline-chip{padding:1px 5px;font-size:10px}.compact-batch-progress-inline{flex-shrink:0;align-items:center;gap:7px;margin-left:auto;display:flex}.compact-batch-progress-text{color:var(--text-muted);white-space:nowrap;font-size:11.5px}.compact-batch-progress-text strong{color:var(--text-title);font-weight:600}.compact-batch-mini-bar-wrap{align-items:center;gap:5px;display:flex}.compact-batch-mini-bar-wrap .batch-progress-track.mini{background:#e2e8f0;border-radius:999px;width:48px;height:4px;overflow:hidden}.compact-batch-percent{text-align:right;min-width:26px;font-size:11px;font-weight:700}.compact-batch-unconfigured-text{color:var(--text-muted);margin-left:auto;font-size:11px;font-style:italic}.system-settings-page{max-width:1120px;margin:0 auto;padding-bottom:32px}.system-settings-loading{min-height:320px;color:var(--text-muted);justify-content:center;align-items:center;gap:10px;display:flex}.system-settings-heading{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:20px;display:flex}.system-settings-heading h2{color:var(--text-title);margin-bottom:4px;font-size:28px}.system-settings-heading p{color:var(--text-muted);font-size:14px}.settings-state{white-space:nowrap;border-radius:999px;padding:7px 12px;font-size:12px;font-weight:700}.settings-state.active{color:#047857;background:#d1fae5}.settings-state.draft{color:#92400e;background:#fef3c7}.settings-message{border:1px solid;border-radius:8px;margin-bottom:16px;padding:12px 14px;font-size:14px}.settings-message.success{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.settings-message.error{color:#b91c1c;background:#fef2f2;border-color:#fecaca}.settings-section{background:var(--bg-card);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);border-radius:12px;margin-bottom:16px;padding:22px}.settings-section-title{color:var(--primary);align-items:flex-start;gap:11px;margin-bottom:20px;display:flex}.settings-section-title h3{color:var(--text-title);margin-bottom:2px;font-size:17px}.settings-section-title p{color:var(--text-muted);font-size:13px}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.settings-grid label{color:var(--text-main);flex-direction:column;gap:7px;font-size:13px;font-weight:600;display:flex}.settings-grid label.wide{grid-column:1/-1}.settings-grid input{border:1px solid var(--border-color);width:100%;min-height:42px;color:var(--text-title);background:var(--bg-card);font:inherit;border-radius:7px;outline:none;padding:9px 11px;font-weight:400}.settings-grid input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.settings-grid em{color:#059669;margin-left:5px;font-size:11px;font-style:normal}.settings-file-input{min-height:46px;color:var(--primary);background:var(--primary-light);cursor:pointer;border:1px dashed #94a3b8;border-radius:8px;justify-content:center;align-items:center;gap:8px;display:flex;position:relative}.settings-file-input input{opacity:0;cursor:pointer;position:absolute;inset:0}.settings-file-input b{font-size:13px}.settings-test-results{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:16px 0;display:grid}.settings-test-results>div{border:1px solid;border-radius:8px;align-items:flex-start;gap:9px;padding:12px;font-size:13px;display:flex}.settings-test-results .ok{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.settings-test-results .failed{color:#b91c1c;background:#fef2f2;border-color:#fecaca}.settings-test-results span{flex-direction:column;gap:2px;display:flex}.settings-actions{border:1px solid var(--border-color);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f8fafcf0;border-radius:10px;justify-content:flex-end;gap:10px;padding:14px;display:flex;position:sticky;bottom:0;box-shadow:0 -5px 20px #0f172a0f}.settings-actions .btn{align-items:center;gap:7px;display:inline-flex}.settings-security-note{color:var(--text-muted);justify-content:flex-end;align-items:center;gap:7px;margin-top:10px;font-size:12px;display:flex}@media (width<=800px){.settings-grid,.settings-test-results{grid-template-columns:1fr}.settings-actions{flex-wrap:wrap}.settings-actions .btn{flex:1;justify-content:center;min-width:150px}}
