.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(135deg,var(--ctiBlueLight) 0%,#f3f4f6 100%)}.login-card{width:100%;max-width:380px;background:#fff;border-radius:12px;padding:40px 32px 32px;box-shadow:0 10px 30px #0c3b651f,0 2px 6px #0000000a;text-align:center}.login-logo{display:flex;justify-content:center;margin-bottom:20px}.login-logo-mark{width:56px;height:56px;border-radius:12px;background:var(--ctiBlue);color:#fff;font-weight:700;font-size:20px;letter-spacing:.5px;display:flex;align-items:center;justify-content:center}.login-title{font-size:20px;font-weight:700;color:#111827;margin-bottom:6px}.login-subtitle{font-size:13px;color:#6b7280;margin-bottom:24px;line-height:1.5}.login-ms-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 16px;border:1px solid #d1d5db;background:#fff;color:#111827;font-size:14px;font-weight:600;border-radius:6px;transition:background .15s ease,border-color .15s ease}.login-ms-btn:hover:not(:disabled){background:#f9fafb;border-color:#9ca3af}.login-ms-btn:focus-visible{outline:2px solid var(--ctiBlue);outline-offset:2px}.login-ms-btn:disabled{opacity:.7;cursor:not-allowed}.login-ms-icon{flex-shrink:0}.login-error{margin-top:16px;padding:10px 12px;background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;font-size:12px;border-radius:6px;text-align:left}.loader-container{display:flex;align-items:center;justify-content:center;padding:40px}.loader-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#f8fafc,#e2e8f0);z-index:9999;padding:0}.loader-content{display:flex;flex-direction:column;align-items:center;gap:16px}.loader-spinner{border-radius:50%;border:3px solid #e5e7eb;border-top-color:#6b7280;animation:spin .8s linear infinite}.loader-small .loader-spinner{width:24px;height:24px;border-width:2px}.loader-medium .loader-spinner{width:32px;height:32px;border-width:3px}.loader-large .loader-spinner{width:48px;height:48px;border-width:4px}.loader-message{margin:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-weight:400;color:#6b7280}.loader-small .loader-message{font-size:.75rem}.loader-medium .loader-message{font-size:.875rem}.loader-large .loader-message{font-size:1rem}.user-menu{position:relative;display:inline-flex;align-items:center}.user-menu-trigger{width:34px;height:34px;border-radius:50%;background:#ffffff2e;border:1.5px solid rgba(255,255,255,.4);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:background .15s,border-color .15s;flex-shrink:0}.user-menu-trigger:hover{background:#ffffff4d;border-color:#fff9}.user-menu-trigger[aria-expanded=true]{background:#ffffff4d;border-color:#ffffffb3}.user-menu-avatar{font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:12px;font-weight:700;letter-spacing:.02em;line-height:1;-webkit-user-select:none;user-select:none}.user-menu-avatar-lg{width:40px;height:40px;border-radius:50%;background:#1e4a7a;color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;flex-shrink:0}.user-menu-avatar-spinner{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:user-menu-spin .7s linear infinite;display:inline-block}@keyframes user-menu-spin{to{transform:rotate(360deg)}}.user-menu-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:220px;background:#fff;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 8px 24px #0000001f,0 2px 6px #00000014;z-index:200;overflow:hidden}.user-menu-profile{display:flex;align-items:center;gap:12px;padding:14px 16px}.user-menu-profile-text{display:flex;flex-direction:column;gap:2px;min-width:0}.user-menu-name{font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:13px;font-weight:600;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-menu-name-unknown{color:#9ca3af;font-weight:400}.user-menu-email{font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:11px;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-menu-divider{height:1px;background:#f3f4f6;margin:0}.user-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 16px;background:none;border:none;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:13px;color:#374151;cursor:pointer;text-align:left;transition:background .1s}.user-menu-item:hover{background:#f9fafb;color:#111827}.user-menu-item-signout{color:#b91c1c}.user-menu-item-signout:hover{background:#fef2f2;color:#991b1b}.searchable-select{position:relative;flex:1;min-width:0}.searchable-select-trigger{width:100%;padding:6px 10px;border:none;background:transparent;color:#323130;font-size:14px;cursor:pointer;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.searchable-select-trigger:disabled{cursor:not-allowed;opacity:.6}.searchable-select-input{width:100%;padding:6px 10px;border:none;background:transparent;color:#323130;font-size:14px;outline:none;box-sizing:border-box}.searchable-select-dropdown{position:absolute;top:100%;left:-1px;right:-1px;background:#fff;border:1px solid #d2d0ce;border-top:none;border-radius:0 0 4px 4px;box-shadow:0 4px 12px #0000001f;z-index:1000;display:flex;flex-direction:column}.searchable-select-count{padding:6px 12px;font-size:12px;color:#605e5c;background:#faf9f8;border-bottom:1px solid #edebe9}.searchable-select-message{padding:10px 12px;font-size:13px;color:#a19f9d;font-style:italic}.searchable-select-list{max-height:300px;overflow-y:auto;margin:0;padding:0;list-style:none}.searchable-select-option{padding:7px 12px;font-size:14px;color:#323130;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.searchable-select-option.highlighted,.searchable-select-option:hover{background:#f3f2f1}.searchable-select-option.selected{background:#deecf9;color:#0078d4}.searchable-select-option.selected.highlighted{background:#c7dff5}.searchable-select-load-more{width:100%;padding:8px 12px;border:none;border-top:1px solid #edebe9;background:#faf9f8;color:#0078d4;font-size:13px;cursor:pointer;text-align:center}.searchable-select-load-more:hover:not(:disabled){background:#f3f2f1}.searchable-select-load-more:disabled{color:#a19f9d;cursor:not-allowed}.view-nav{display:flex;gap:4px}.view-nav-btn{background:var(--fl-bg);border:1px solid transparent;color:var(--fl-text-2);font-size:var(--fl-text-md);padding:5px 12px;border-radius:var(--fl-radius);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .15s,color .15s,border-color .15s}.view-nav-btn:hover{background:var(--fl-border);color:var(--fl-text)}.view-nav-btn.active{background:var(--fl-accent-bg);color:var(--fl-accent);border-color:var(--fl-accent-border);font-weight:500}.view-nav-spinner{width:10px;height:10px;border-radius:50%;border:2px solid var(--fl-accent);border-top-color:transparent;animation:view-nav-spin .8s linear infinite}@keyframes view-nav-spin{to{transform:rotate(360deg)}}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 20px;background:var(--fl-surface);border-bottom:1px solid var(--fl-border);min-height:48px;font-size:var(--fl-text-md);color:var(--fl-text)}.topbar-left,.topbar-right{display:flex;align-items:center;gap:10px;min-width:0}.topbar-left{flex:1}.topbar-crumb{font-weight:500;color:var(--fl-text)}.topbar-crumb-sep{color:var(--fl-text-2)}.topbar-picker{width:280px;max-width:100%;border:1px solid var(--fl-divider);border-radius:var(--fl-radius);background:var(--fl-surface)}.topbar-status-pill{background:var(--fl-accent-bg);color:var(--fl-accent);border-radius:var(--fl-radius);padding:2px 8px;font-size:var(--fl-text-sm);font-weight:500;white-space:nowrap}.topbar-opp-name{color:var(--fl-text);font-weight:500;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-yoda-link{display:inline-flex;align-items:center;gap:5px;font-size:var(--fl-text-md);color:var(--fl-text-2);text-decoration:none;padding:5px 8px;border-radius:var(--fl-radius)}.topbar-yoda-link:hover{color:var(--fl-text);background:var(--fl-bg)}.topbar-divider{width:1px;height:24px;background:var(--fl-border)}.qs-container{border:1px solid #e5e7eb;border-radius:10px;padding:10px 12px;background:#fcfcfd;margin-bottom:12px}.quote-source-radio{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:8px}.qs-selection-inline{font-size:11px;color:#2563eb;font-weight:500;margin-left:auto}.qs-radio-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border:1.5px solid #e5e7eb;border-radius:999px;background:#fff;font-size:12px;color:#6b7280;cursor:pointer;transition:border .12s,background .12s,color .12s}.qs-radio-pill:hover{border-color:#93c5fd}.qs-radio-pill.active{border-color:#2563eb;background:#eff6ff;color:#1e3a8a;font-weight:600}.qs-radio-pill input[type=radio]{margin:0;width:14px;height:14px;accent-color:#2563eb;cursor:pointer}.qs-radio-label{-webkit-user-select:none;user-select:none}.qs-radio-count{background:#e5e7eb;color:#374151;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600}.qs-radio-pill.active .qs-radio-count{background:#dbeafe;color:#1e40af}.qs-empty{display:flex;align-items:center;gap:8px;font-size:13px;color:#6b7280;padding:18px;border:1px dashed #e5e7eb;border-radius:8px;background:#f9fafb;text-align:center;justify-content:center;margin-bottom:12px}.qs-empty-error{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.qs-error{font-size:13px;color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:10px 12px;margin-bottom:12px}.qs-spinner{width:14px;height:14px;border:2px solid #d1d5db;border-top-color:#2563eb;border-radius:50%;animation:qs-spin .8s linear infinite}@keyframes qs-spin{to{transform:rotate(360deg)}}.qs-source-title{font-size:11px;font-weight:700;color:#111827;text-transform:uppercase;letter-spacing:.4px;margin:10px 0 4px;padding-bottom:3px;border-bottom:1px solid #e5e7eb}.qs-source-title:first-child,.qs-container>.qs-source-title:first-of-type{margin-top:2px}.qs-group-header{display:flex;align-items:center;justify-content:space-between;font-size:10px;font-weight:600;color:#374151;padding:5px 4px 3px;letter-spacing:.3px;text-transform:uppercase}.qs-group-header-muted{color:#9ca3af}.qs-link{background:transparent;border:0;font-size:11px;color:#2563eb;cursor:pointer;padding:2px 6px;font-weight:500;text-transform:none;letter-spacing:0}.qs-link:hover{text-decoration:underline}.qs-list{display:flex;flex-direction:column;gap:3px;margin-bottom:2px}.qs-list-muted .qs-row{opacity:.55}.qs-row{display:flex;align-items:center;gap:8px;padding:5px 9px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;cursor:pointer;transition:border .12s,background .12s}.qs-row:hover{background:#f9fafb}.qs-row-checked{border-color:#2563eb;background:#eff6ff}.qs-row input[type=checkbox]{cursor:pointer;width:13px;height:13px;accent-color:#2563eb;flex-shrink:0}.qs-row-main{flex:1;min-width:0}.qs-row-line1{display:flex;flex-wrap:wrap;align-items:center;gap:5px;font-size:12px;color:#111827}.qs-row-line2{font-size:10px;color:#6b7280;margin-top:1px;font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qs-row-empty{font-size:11px;color:#9ca3af;padding:6px 10px;text-align:center;font-style:italic}.qs-meta{color:#6b7280;font-size:11px;font-weight:400}.qs-chip{display:inline-flex;align-items:center;font-size:9px;font-weight:600;padding:1px 6px;border-radius:999px;text-transform:uppercase;letter-spacing:.3px}.qs-chip-active{background:#dcfce7;color:#166534}.qs-chip-inactive{background:#f3f4f6;color:#6b7280}.setup-card{background:var(--fl-surface);border:1px solid var(--fl-border-2);border-radius:var(--fl-radius-lg);padding:24px}.setup-card header h2{margin:0 0 4px;font-size:18px;color:var(--fl-text)}.setup-card header p{margin:0 0 20px;font-size:var(--fl-text-md);color:var(--fl-text-2)}.setup-row{margin-bottom:20px}.setup-label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--fl-text-2);margin-bottom:6px}.seg-group{display:inline-flex;border:1px solid var(--fl-divider);border-radius:var(--fl-radius);overflow:hidden}.seg-btn{background:var(--fl-surface);border:none;color:var(--fl-text-2);padding:6px 16px;font-size:var(--fl-text-md);cursor:pointer;border-left:1px solid var(--fl-divider)}.seg-btn:first-child{border-left:none}.seg-btn.selected{background:var(--fl-accent);color:#fff;font-weight:500}.setup-foot{border-top:1px solid var(--fl-border-2);padding-top:16px;display:flex;justify-content:flex-end}.setup-run-btn{background:var(--fl-accent);color:#fff;border:none;padding:8px 20px;border-radius:var(--fl-radius);font-size:var(--fl-text-lg);font-weight:500;cursor:pointer}.setup-run-btn:disabled{opacity:.5;cursor:not-allowed}.setup-run-btn:hover:not(:disabled){background:var(--fl-accent-hover)}.part-status-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:12px;font-size:var(--fl-text-sm);font-weight:600;white-space:nowrap}.part-status-badge.status-found{background:var(--fl-success-bg);color:var(--fl-success)}.part-status-badge.status-missing{background:var(--fl-error-bg);color:var(--fl-error)}.part-status-badge.status-restricted{background:var(--fl-warn-bg);color:var(--fl-warn)}.part-status-icon{font-size:13px;line-height:1}.log-list{display:flex;flex-direction:column;gap:6px;margin-top:4px;max-height:260px;overflow-y:auto}.log-item{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:8px;background:#f9fafb;border:1px solid #f3f4f6;transition:background .3s,border-color .3s}.log-enter{animation:logSlideIn .35s ease-out both}@keyframes logSlideIn{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}.log-latest{background:#eff6ff;border-color:#bfdbfe}.log-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:4px}.log-dot.ok{background:var(--ctiGreen)}.log-dot.info{background:#6b7280}.log-dot.warn{background:var(--ctiYellow)}.log-dot.error{background:#dc2626}.log-dot.run{background:var(--ctiBlue);animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.log-text{font-size:13px;color:#374151;flex:1;word-break:break-word}.log-link{color:#2563eb;text-decoration:none;word-break:break-all}.log-link:hover{text-decoration:underline;color:#1d4ed8}.log-time{font-size:11px;color:#9ca3af;flex-shrink:0;margin-top:1px}.log-activity{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;background:linear-gradient(90deg,#eff6ff,#f9fafb,#eff6ff);background-size:200% 100%;animation:logShimmer 2s ease-in-out infinite;border:1px dashed #93c5fd}@keyframes logShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.log-activity-dots{display:flex;gap:4px;align-items:center}.log-activity-dots span{width:6px;height:6px;border-radius:50%;background:var(--ctiBlue);animation:logBounce 1.4s ease-in-out infinite}.log-activity-dots span:nth-child(2){animation-delay:.16s}.log-activity-dots span:nth-child(3){animation-delay:.32s}@keyframes logBounce{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1.1)}}.log-activity-text{font-size:12px;color:var(--ctiBlue);font-weight:500}.srv-card{background:var(--fl-surface);border:1px solid var(--fl-border-2);border-radius:var(--fl-radius-lg);padding:24px;display:flex;flex-direction:column;gap:16px}.srv-header h2{margin:0 0 4px;font-size:18px;color:var(--fl-text)}.srv-summary{margin:0;font-size:var(--fl-text-md);color:var(--fl-text-2)}.srv-attention{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--fl-warn-bg);border:1px solid var(--fl-warn-border);border-radius:var(--fl-radius);padding:10px 14px;font-size:var(--fl-text-md);color:var(--fl-text)}.srv-attention-icon{color:var(--fl-warn);font-size:16px;line-height:1}.srv-attention-text{flex:1;min-width:0}.srv-attention-link{background:none;border:none;color:var(--fl-accent);text-decoration:underline;cursor:pointer;padding:0;font-size:var(--fl-text-md)}.srv-table-wrap{max-height:60vh;overflow:auto;border:1px solid var(--fl-border-2);border-radius:var(--fl-radius)}.srv-table{width:100%;border-collapse:collapse;font-size:var(--fl-text-md)}.srv-table thead th{position:sticky;top:0;background:var(--fl-surface-2);color:var(--fl-text-2);text-align:left;font-weight:600;font-size:var(--fl-text-sm);text-transform:uppercase;letter-spacing:.04em;padding:8px 10px;border-bottom:1px solid var(--fl-border-2);white-space:nowrap}.srv-table tbody td{padding:8px 10px;border-bottom:1px solid var(--fl-border-2);color:var(--fl-text);vertical-align:top}.srv-table tbody tr:last-child td{border-bottom:none}.srv-table a{color:var(--fl-accent);text-decoration:none}.srv-table a:hover{text-decoration:underline}.srv-empty{padding:24px;text-align:center;color:var(--fl-text-2);font-size:var(--fl-text-md)}.srv-chips{display:flex;gap:8px;flex-wrap:wrap}.srv-chip{display:inline-flex;align-items:center;gap:6px;background:var(--fl-surface);border:1px solid var(--fl-divider);color:var(--fl-text);border-radius:999px;padding:4px 12px;font-size:var(--fl-text-md);cursor:pointer}.srv-chip:hover{background:var(--fl-surface-2)}.srv-chip.selected{background:var(--fl-accent-bg);border-color:var(--fl-accent-border);color:var(--fl-accent);font-weight:500}.srv-chip-count{background:var(--fl-bg);color:var(--fl-text-2);border-radius:999px;padding:0 6px;font-size:var(--fl-text-sm)}.srv-chip.selected .srv-chip-count{background:var(--fl-surface);color:var(--fl-accent)}.rc-progress{display:flex;flex-direction:column;gap:8px;background:var(--fl-accent-bg);border:1px solid var(--fl-accent-border);border-radius:var(--fl-radius);padding:10px 14px}.rc-progress-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:var(--fl-text-md);color:var(--fl-text)}.rc-progress-msg{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rc-progress-pct{font-weight:600;color:var(--fl-accent);font-variant-numeric:tabular-nums}.rc-progress-bar{height:6px;background:var(--fl-surface);border-radius:999px;overflow:hidden}.rc-progress-bar-fill{height:100%;background:var(--fl-accent);transition:width .3s ease-out}.rc-log-disclosure summary{cursor:pointer;font-size:var(--fl-text-md);color:var(--fl-accent);padding:4px 0}.rc-log-disclosure summary:hover{text-decoration:underline}.rc-log-wrap{margin-top:8px;background:var(--fl-surface);border:1px solid var(--fl-border-2);border-radius:var(--fl-radius);padding:8px}.rc-log-wrap .log-list{margin-top:0}.rc-upload-notice{display:flex;gap:10px;align-items:center;background:var(--fl-warn-bg);border:1px solid var(--fl-warn-border);border-radius:var(--fl-radius);padding:10px 14px;font-size:var(--fl-text-md);color:var(--fl-text);margin-top:12px}.rc-foot{position:sticky;bottom:0;background:var(--fl-surface);border-top:1px solid var(--fl-border-2);padding:14px 0 4px;margin-top:4px;display:flex;gap:12px;justify-content:space-between;align-items:center}.rc-foot-actions{display:flex;gap:10px;align-items:center}.rc-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px 18px;border-radius:var(--fl-radius);font-size:var(--fl-text-lg);cursor:pointer;border:1px solid transparent}.rc-btn:disabled{opacity:.55;cursor:not-allowed}.rc-btn-spinner{width:12px;height:12px;border-radius:50%;border:2px solid currentColor;border-top-color:transparent;animation:rc-btn-spin .8s linear infinite}@keyframes rc-btn-spin{to{transform:rotate(360deg)}}.rc-btn-primary{background:var(--fl-accent);color:#fff;font-weight:500}.rc-btn-primary:hover:not(:disabled){background:var(--fl-accent-hover)}.rc-btn-secondary{background:var(--fl-surface);border-color:var(--fl-divider);color:var(--fl-text)}.rc-btn-secondary:hover:not(:disabled){background:var(--fl-surface-2)}.rc-btn-link{background:none;border:none;color:var(--fl-accent);text-decoration:underline;font-size:var(--fl-text-md);cursor:pointer;padding:0}.rc-yoda-link{color:var(--fl-accent);text-decoration:none;font-size:var(--fl-text-md);padding:8px 18px;border:1px solid var(--fl-accent-border);border-radius:var(--fl-radius);background:var(--fl-accent-bg)}.rc-yoda-link:hover{text-decoration:underline}.cc-card{background:var(--fl-surface);border:1px solid var(--fl-border-2);border-radius:var(--fl-radius-lg);padding:24px}.cc-card header{display:flex;align-items:center;gap:10px;margin-bottom:6px}.cc-card h2{margin:0;font-size:18px;color:var(--fl-text)}.cc-icon{width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:14px;color:#fff}.cc-icon-success{background:var(--fl-success)}.cc-icon-warn{background:var(--fl-warn-bg);color:var(--fl-warn);border:1px solid var(--fl-warn-border)}.cc-icon-error{background:var(--fl-error)}.cc-icon-mute{background:var(--fl-bg);color:var(--fl-text-2);border:1px solid var(--fl-divider)}.cc-summary{margin:0 0 16px 34px;font-size:var(--fl-text-md);color:var(--fl-text-2)}.cc-actions{margin-left:34px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.cc-btn{padding:8px 18px;border-radius:var(--fl-radius);font-size:var(--fl-text-lg);cursor:pointer}.cc-btn-primary{background:var(--fl-accent);color:#fff;border:none;font-weight:500}.cc-btn-primary:hover{background:var(--fl-accent-hover)}.cc-btn-secondary{background:var(--fl-surface);border:1px solid var(--fl-divider);color:var(--fl-text)}.cc-btn-link{background:none;border:none;color:var(--fl-accent);text-decoration:underline;margin-left:auto}.cw-shell{max-width:760px;margin:0 auto;padding:24px 20px}.cw-error{background:var(--fl-error-bg);border:1px solid var(--fl-error-border);color:var(--fl-error);border-radius:var(--fl-radius);padding:10px 14px;margin-top:14px;font-size:var(--fl-text-md)}.cw-shell-wide{max-width:1100px}.ht-wrap{max-width:1100px;margin:0 auto;background:var(--fl-surface);border:1px solid var(--fl-border-2);border-radius:var(--fl-radius-lg);overflow:hidden}.ht-table{width:100%;border-collapse:collapse;font-size:var(--fl-text-md)}.ht-table thead{background:var(--fl-surface-2)}.ht-table th{text-align:left;padding:10px 16px;border-bottom:1px solid var(--fl-border-2);font-weight:500;color:var(--fl-text-2)}.ht-table td{padding:14px 16px;border-bottom:1px solid var(--fl-surface-2);color:var(--fl-text)}.ht-run-title{font-weight:500}.ht-run-sub{font-size:11px;color:var(--fl-text-2)}.ht-icon{display:inline-flex;width:24px;height:24px;border-radius:50%;align-items:center;justify-content:center;font-size:12px;color:#fff}.ht-icon-success{background:var(--fl-success)}.ht-icon-partial{background:var(--fl-warn-bg);color:var(--fl-warn);border:1px solid var(--fl-warn-border)}.ht-icon-failed{background:var(--fl-error-bg);color:var(--fl-error);border:1px solid var(--fl-error-border)}.ht-btn{padding:5px 12px;border-radius:var(--fl-radius);font-size:var(--fl-text-sm);margin-right:6px;cursor:pointer}.ht-btn-primary{background:var(--fl-accent);color:#fff;border:none}.ht-btn-primary:hover{background:var(--fl-accent-hover)}.ht-btn-secondary{background:var(--fl-surface);border:1px solid var(--fl-divider);color:var(--fl-text-2)}.ht-btn-secondary:hover{color:var(--fl-text)}.hp-shell{padding:24px;max-width:1100px;margin:0 auto}.hp-headrow{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.hp-title{margin:0;font-size:20px;color:var(--fl-text)}.hp-filter{display:inline-flex;align-items:center;gap:8px;font-size:var(--fl-text-sm);color:var(--fl-text-2)}.hp-filter select{padding:5px 8px;border:1px solid var(--fl-divider);border-radius:var(--fl-radius);background:var(--fl-surface);font-size:var(--fl-text-sm)}.hp-empty{color:var(--fl-text-2);text-align:center;padding:40px}.pdf-folder-tree{list-style:none;padding:0;margin:0}.pdf-folder-tree li{margin:0}.folder-row{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;background:none;border:none;cursor:pointer;text-align:left;font-size:14px;color:#1f2937}.folder-row:hover{background:#f3f4f6}.folder-row.selected{background:#dbeafe;color:#1e3a8a;font-weight:600}.folder-icon{font-size:16px}.folder-count{color:#6b7280;font-size:12px;margin-left:auto}.pdf-status-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:12px;font-size:12px;font-weight:600}.pdf-status-badge.status-open{background:#e6f6ec;color:#1b7f3f}.pdf-status-badge.status-restricted{background:#fff4dd;color:#8a5a00}.pdf-status-badge.status-password-locked{background:#fde6e6;color:#a02020}.pdf-status-badge.status-unreadable{background:#ececec;color:#555}.pdf-status-icon{font-size:14px;line-height:1}.pdf-file-list{width:100%;border-collapse:collapse;font-size:14px}.pdf-file-list th,.pdf-file-list td{padding:8px 12px;text-align:left;border-bottom:1px solid #eee}.pdf-file-list th{background:#f5f7fa;font-weight:600;color:#374151}.pdf-file-list a{color:#2563eb;text-decoration:none}.pdf-file-list a:hover{text-decoration:underline}.status-header{background:none;border:none;cursor:pointer;font:inherit;color:inherit;padding:0}.status-header.active{color:#1b7f3f}.pdf-status-pending{color:#6b7280;font-size:12px;font-style:italic}.pdf-file-list tr.pdf-name-invalid{background:#fde6e6}.pdf-file-list tr.pdf-name-invalid a{color:#a02020}.pdf-file-list tr.pdf-name-invalid a:hover{color:#7a1818}.pdf-name-warning-icon{color:#a02020;font-weight:700}.pdf-file-folder-caption{font-size:11px;color:#6b7280;margin-top:2px}.pdf-name-edit-btn{margin-left:6px;padding:0 4px;background:none;border:none;cursor:pointer;color:#6b7280;font-size:14px;line-height:1;opacity:.4;transition:opacity .1s}.pdf-file-list tr:hover .pdf-name-edit-btn{opacity:1}.pdf-name-edit-btn:hover{color:#2563eb}.pdf-name-editor{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.pdf-name-editor input{flex:1;min-width:200px;padding:4px 8px;border:1px solid #d1d5db;border-radius:4px;font-size:14px;font-family:inherit}.pdf-name-editor input:focus{outline:2px solid #2563eb;outline-offset:-2px}.pdf-name-save,.pdf-name-cancel{padding:4px 10px;border:1px solid #d1d5db;border-radius:4px;background:#fff;cursor:pointer;font-size:13px}.pdf-name-save{background:#2563eb;color:#fff;border-color:#2563eb}.pdf-name-save:disabled,.pdf-name-cancel:disabled{opacity:.6;cursor:not-allowed}.pdf-name-edit-error{flex-basis:100%;color:#a02020;font-size:12px;margin-top:2px}.plp-shell{padding:24px;max-width:1280px;margin:0 auto;display:flex;flex-direction:column;height:calc(100vh - 64px)}.plp-headrow{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:12px;flex-wrap:wrap}.plp-title{margin:0;font-size:20px;color:var(--fl-text)}.plp-controls{display:flex;align-items:center;gap:12px}.plp-control{display:inline-flex;align-items:center;gap:6px;font-size:var(--fl-text-sm);color:var(--fl-text-2)}.plp-control select{padding:5px 8px;border:1px solid var(--fl-divider);border-radius:var(--fl-radius);background:var(--fl-surface);font-size:var(--fl-text-sm);color:var(--fl-text)}.plp-search{width:280px;padding:6px 10px;font-size:var(--fl-text-md);border:1px solid var(--fl-divider);border-radius:var(--fl-radius);background:var(--fl-surface);color:var(--fl-text)}.plp-search:disabled{background:var(--fl-surface-2);cursor:not-allowed}.plp-search-wrap{display:flex;flex-direction:column;gap:4px}.plp-search-hint{margin:0;font-size:var(--fl-text-xs, 12px);color:var(--fl-text-2)}.plp-card{background:var(--fl-surface);border:1px solid var(--fl-border-2);border-radius:var(--fl-radius-lg);display:flex;flex:1;min-height:0;overflow:hidden}.plp-tree{width:260px;border-right:1px solid var(--fl-border-2);background:var(--fl-surface-2);overflow-y:auto;padding:8px}.plp-folder-search{width:100%;padding:5px 8px;border:1px solid var(--fl-divider);border-radius:var(--fl-radius);background:var(--fl-surface);font-size:var(--fl-text-sm);margin-bottom:8px}.plp-files{flex:1;overflow:auto;padding:14px 16px}.plp-files-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}.plp-content-path{font-size:var(--fl-text-sm);color:var(--fl-text-2)}.plp-file-filter{width:260px;padding:5px 8px;border:1px solid var(--fl-divider);border-radius:var(--fl-radius);background:var(--fl-surface);color:var(--fl-text);font-size:var(--fl-text-sm)}.plp-empty{padding:40px;color:var(--fl-text-2);text-align:center}.plp-error{background:var(--fl-error-bg);border:1px solid var(--fl-error-border);color:var(--fl-error);border-radius:var(--fl-radius);padding:10px 14px;margin-bottom:14px;font-size:var(--fl-text-md)}.app{min-height:100vh;background:var(--fl-bg);color:var(--fl-text);display:flex;flex-direction:column}.app-body{flex:1}.placeholder-view{padding:40px;text-align:center;color:var(--fl-text-2)}.loading-screen,.error-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:12px;color:var(--fl-text-2)}.loading-spinner{width:36px;height:36px;border:3px solid #e5e7eb;border-top-color:var(--fl-accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-screen .error-icon{width:48px;height:48px;border-radius:50%;background:var(--fl-error-bg);color:var(--fl-error);font-size:22px;font-weight:700;display:flex;align-items:center;justify-content:center}.error-screen h2{font-size:18px;color:var(--fl-text)}.error-screen p{font-size:13px;max-width:420px;text-align:center}.alert{border-radius:var(--fl-radius);padding:12px 16px;font-size:13px;display:flex;gap:10px;align-items:flex-start}.alert-error{background:var(--fl-error-bg);border:1px solid var(--fl-error-border);color:var(--fl-error)}:root{--fl-bg: #f3f2f1;--fl-surface: #ffffff;--fl-surface-2: #faf9f8;--fl-border: #e1dfdd;--fl-border-2: #edebe9;--fl-divider: #d2d0ce;--fl-text: #323130;--fl-text-2: #605e5c;--fl-text-mute: #a19f9d;--fl-text-disabled:#8a8886;--fl-accent: #0078d4;--fl-accent-hover:#106ebe;--fl-accent-bg: #deecf9;--fl-accent-border:#c7e0f4;--fl-success: #107c10;--fl-success-bg: #dff6dd;--fl-warn: #8a6914;--fl-warn-bg: #fff4ce;--fl-warn-border: #f4d35e;--fl-error: #a4262c;--fl-error-bg: #fde7e9;--fl-error-border:#f1707b;--fl-radius: 4px;--fl-radius-lg: 6px;--fl-control-h: 32px;--fl-text-sm: 12px;--fl-text-md: 13px;--fl-text-lg: 14px}:root{--ctiBlue: #0C3B65;--ctiYellow: #FFBA4A;--ctiGreen: #00A9A6;--figmaCTIBlue: #0D3B66;--ctiBlueLight: #e8eef4;--ctiYellowLight: #fff6e3;--ctiGreenLight: #e5f7f7;font-family:Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.5;font-weight:400;color:#213547;background-color:#f3f4f6;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:#f3f4f6;min-height:100vh;padding:0}#root{width:100%;margin:0 auto;padding:0}.app{width:100%}a{font-weight:500;color:var(--ctiBlue);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer}
