@font-face{font-family:Good Sans;src:url(/fonts/GoodSans-Regular.woff) format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Denim INK;src:url(/fonts/DenimINKWD-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}:root{--color-bg: #101210;--color-surface: #1a1d19;--color-border: #2a2e27;--color-text: #e2e4e0;--color-muted: #6b7268;--color-green: #22c55e;--color-green-dim: #14532d;--color-blue: #3b82f6;--color-blue-dim: #1e3a5f;--color-red: #ef4444;--color-red-dim: #450a0a;--color-yellow: #f59e0b;--color-yellow-dim: #3b3000;--color-brand: #7B8C42;--color-brand-dim: #2a3015;--color-shadow: rgba(0, 0, 0, .5);--radius: 10px;--font: "Good Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}[data-theme=light]{--color-bg: #f4f5f0;--color-surface: #ffffff;--color-border: #d6d9d0;--color-text: #1a1d19;--color-muted: #6b7268;--color-green: #16a34a;--color-green-dim: #dcfce7;--color-blue: #2563eb;--color-blue-dim: #dbeafe;--color-red: #dc2626;--color-red-dim: #fee2e2;--color-yellow: #d97706;--color-yellow-dim: #fef3c7;--color-brand: #6a7a38;--color-brand-dim: #eef0e4;--color-shadow: rgba(0, 0, 0, .1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);background:var(--color-bg);color:var(--color-text);min-height:100vh;font-size:14px;line-height:1.6}a{color:var(--color-brand);text-decoration:none}a:hover{text-decoration:underline}.app-shell{display:flex;flex-direction:column;min-height:100vh}.nav{display:flex;align-items:center;gap:12px;padding:0 24px;height:56px;border-bottom:1px solid var(--color-border);background:var(--color-surface);position:sticky;top:0;z-index:10}.nav-logo{font-family:"Denim INK",var(--font);font-size:16px;font-weight:700;color:var(--color-text);display:flex;align-items:center;gap:8px;text-decoration:none!important}.nav-logo:hover{color:var(--color-text)}.nav-bird{height:28px;width:auto}.nav-bird-light,[data-theme=light] .nav-bird-dark{display:none}[data-theme=light] .nav-bird-light{display:block}.nav-logo svg{color:var(--color-brand)}.health-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:6px;vertical-align:middle}.health-unknown{background:var(--color-muted)}.health-healthy{background:var(--color-green)}.health-unhealthy{background:var(--color-red)}.nav-links{display:flex;gap:4px;margin-left:16px}.nav-link{padding:6px 12px;border-radius:6px;color:var(--color-muted);font-size:13px;font-weight:500;transition:background .15s,color .15s}.nav-link:hover,.nav-link.active{background:var(--color-border);color:var(--color-text);text-decoration:none}.nav-dropdown{position:relative}.nav-dropdown-trigger-row{display:flex;align-items:stretch;border-radius:6px;overflow:hidden}.nav-dropdown-label{padding-right:4px;border-top-right-radius:0!important;border-bottom-right-radius:0!important;margin-right:0}.nav-dropdown-caret-btn{background:none;border:none;cursor:pointer;padding:6px 8px;border-radius:0 6px 6px 0;display:flex;align-items:center;color:var(--color-muted);transition:background .1s,color .1s;line-height:1}.nav-dropdown-trigger-row:hover .nav-dropdown-label,.nav-dropdown-trigger-row:hover .nav-dropdown-caret-btn,.nav-dropdown-caret-btn.active,.nav-dropdown-caret-btn:hover{background:var(--color-border);color:var(--color-text)}.nav-dropdown-trigger-row:has(.nav-link.active) .nav-dropdown-label,.nav-dropdown-trigger-row:has(.nav-link.active) .nav-dropdown-caret-btn{background:var(--color-border);color:var(--color-text)}.nav-dropdown-caret{font-size:10px;opacity:.7}.nav-dropdown-menu{position:absolute;top:calc(100% + 6px);left:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);min-width:160px;box-shadow:0 8px 24px var(--color-shadow);z-index:100;padding:4px 0}.nav-dropdown-item{display:block;padding:8px 14px;font-size:13px;font-weight:500;color:var(--color-muted);text-decoration:none!important;transition:background .1s,color .1s}.nav-dropdown-item:hover,.nav-dropdown-item.active{background:var(--color-border);color:var(--color-text)}.nav-dropdown-divider{height:1px;background:var(--color-border);margin:4px 0}.page{padding:28px 24px;max-width:900px;margin:0 auto;width:100%}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;border:none;transition:opacity .15s}.btn:disabled{opacity:.5;cursor:default}.btn-default{background:var(--color-border);color:var(--color-text)}.btn-default:hover:not(:disabled){opacity:.8}.btn-primary{background:var(--color-brand);color:#fff}[data-theme=light] .btn-primary{color:#fff}.btn-primary:hover:not(:disabled){opacity:.85}.source-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:20px 22px;margin-bottom:14px;transition:border-color .2s}.source-card.running{border-color:var(--color-blue)}.source-card.failed{border-color:var(--color-red)}.source-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.source-name{font-size:16px;font-weight:600;display:flex;align-items:center;gap:10px}.badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:20px;letter-spacing:.3px;text-transform:uppercase}.badge-synced{background:var(--color-green-dim);color:var(--color-green)}.badge-running{background:var(--color-blue-dim);color:var(--color-blue)}.badge-failed{background:var(--color-red-dim);color:var(--color-red)}.badge-never{background:var(--color-border);color:var(--color-muted)}.source-meta{font-size:12px;color:var(--color-muted);display:flex;gap:16px;flex-wrap:wrap;margin-bottom:10px}.progress-wrap{margin:12px 0 8px}.progress-label{display:flex;justify-content:space-between;font-size:12px;color:var(--color-muted);margin-bottom:5px}.progress-track{height:6px;background:var(--color-border);border-radius:10px;overflow:hidden}.progress-fill{height:100%;border-radius:10px;background:var(--color-blue);transition:width .4s ease}.stats-row{display:flex;gap:20px;font-size:12px;color:var(--color-muted);flex-wrap:wrap}.stat-item{display:flex;align-items:center;gap:4px}.stat-created{color:var(--color-green)}.stat-updated{color:var(--color-blue)}.stat-deleted{color:var(--color-yellow)}.stat-errors{color:var(--color-red)}.source-actions{display:flex;gap:8px;margin-top:14px}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.page-title{font-size:22px;font-weight:700}.page-subtitle{font-size:13px;color:var(--color-muted);margin-top:2px}.header-actions{display:flex;align-items:center;gap:10px}.last-updated{font-size:12px;color:var(--color-muted)}@keyframes spin{to{transform:rotate(360deg)}}.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--color-border);border-top-color:var(--color-brand);border-radius:50%;animation:spin .7s linear infinite}.error-banner{background:var(--color-red-dim);border:1px solid var(--color-red);color:var(--color-red);border-radius:var(--radius);padding:12px 16px;margin-bottom:20px;font-size:13px}.skeleton{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);height:110px;margin-bottom:14px;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.nav-right{margin-left:auto;display:flex;align-items:center;gap:10px}.nav-user{font-size:12px;color:var(--color-muted)}.btn-small{padding:4px 10px;font-size:12px;border-radius:5px;border:none;cursor:pointer;font-weight:500}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:32px;max-width:380px;margin:60px auto}.login-card h1{font-family:"Denim INK",var(--font);font-size:22px;margin-bottom:20px;text-align:center}.login-brand-logo{display:block;margin:0 auto 16px;height:56px}.login-card label{display:block;margin-bottom:14px;font-size:13px;color:var(--color-muted)}.login-card input{display:block;width:100%;margin-top:4px;padding:8px 10px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text);font-size:14px}.login-card input:focus{border-color:var(--color-brand);outline:none}.form-error{background:var(--color-red-dim);border:1px solid var(--color-red);color:var(--color-red);border-radius:6px;padding:8px 12px;font-size:13px;margin-bottom:14px}.form-success{background:var(--color-green-dim);border:1px solid var(--color-green);color:var(--color-green);border-radius:6px;padding:8px 12px;font-size:13px;margin-bottom:14px}.login-subtitle{text-align:center;color:var(--color-muted);font-size:13px;margin:-12px 0 20px}.form-label{display:block;margin-bottom:14px;font-size:13px;color:var(--color-muted)}.form-input{display:block;width:100%;margin-top:4px;padding:8px 10px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text);font-size:14px}.form-input:focus{border-color:var(--color-brand);outline:none}.btn-sso{display:flex;align-items:center;justify-content:center;gap:10px;background:#fff;color:#3c4043;border:1px solid var(--color-border);font-weight:600;font-size:14px}.btn-sso:hover{background:#f7f8f8;border-color:var(--color-muted)}.btn-full{width:100%;padding:10px 16px;border-radius:6px;cursor:pointer}.login-divider{display:flex;align-items:center;gap:12px;margin:18px 0;color:var(--color-muted);font-size:12px}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.btn-link{background:none;border:none;color:var(--color-brand);cursor:pointer;font-size:13px;padding:0}.btn-link:hover{text-decoration:underline}.login-toggle{display:block;margin:0 auto 16px}.login-form{margin-top:4px}.filter-bar{display:flex;gap:10px;margin-bottom:16px}.filter-search{flex:1;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;padding:8px 12px;color:var(--color-text);font-size:14px}.filter-search:focus{border-color:var(--color-brand);outline:none}.filter-search::placeholder{color:var(--color-muted)}.filter-select{background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;padding:8px 12px;color:var(--color-text);font-size:14px;min-width:150px}.filter-select:focus{border-color:var(--color-brand);outline:none}.empty-state{color:var(--color-muted);text-align:center;padding:40px 0;grid-column:1 / -1}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.project-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:18px 20px;transition:border-color .15s;text-decoration:none!important;color:inherit;display:block}.project-card:hover{border-color:var(--color-brand)}.project-card-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.project-number{font-size:11px;font-weight:700;background:var(--color-border);color:var(--color-text);padding:2px 8px;border-radius:4px}.project-card-name{font-size:15px;font-weight:600}.project-card-address{font-size:12px;color:var(--color-muted);margin-top:2px}.project-card-value{font-size:13px;color:var(--color-muted);margin-top:8px}.badge-completed{background:var(--color-blue-dim);color:var(--color-blue)}.badge-on-hold{background:var(--color-brand-dim);color:var(--color-yellow)}.badge-cancelled{background:var(--color-red-dim);color:var(--color-red)}.page-wide{max-width:1400px}.project-banner{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:24px;flex-wrap:wrap}.project-banner-left{flex:1;min-width:200px}.project-banner-title{font-size:20px;font-weight:700;margin:4px 0 0;display:flex;align-items:center;gap:8px}.project-rename-btn{background:none;border:none;cursor:pointer;font-size:14px;color:var(--color-muted);padding:2px 4px;border-radius:4px;line-height:1}.project-rename-btn:hover{color:var(--color-primary);background:var(--color-bg-hover, #f0f0f0)}.project-rename-row{display:flex;align-items:center;gap:8px;margin:4px 0 0}.project-rename-input{font-size:18px;font-weight:700;padding:4px 8px;border:2px solid var(--color-primary);border-radius:6px;flex:1;min-width:220px}.btn-sm{padding:4px 10px;font-size:13px}.project-banner-address{font-size:13px;color:var(--color-muted);margin-top:2px}.project-banner-right{display:flex;gap:8px;align-items:center;flex-shrink:0}.back-link{font-size:13px;color:var(--color-muted)}.back-link:hover{color:var(--color-brand)}.section-title{font-size:16px;font-weight:600;margin-bottom:12px}.register-table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius)}.register-table{width:100%;border-collapse:collapse;font-size:12px;white-space:nowrap}.register-table th{background:var(--color-surface);position:sticky;top:0;padding:8px 10px;text-align:left;font-weight:600;border-bottom:2px solid var(--color-border);color:var(--color-muted);font-size:11px;text-transform:uppercase;letter-spacing:.3px}.register-table td{padding:6px 10px;border-bottom:1px solid var(--color-border)}.register-table tbody tr:hover{background:#7b8c4214}.col-money{text-align:right;font-variant-numeric:tabular-nums}.col-desc{max-width:220px;white-space:normal}.col-notes{max-width:160px;white-space:normal}.empty-row{text-align:center;padding:40px 10px!important;color:var(--color-muted);font-size:14px}.totals-row{background:var(--color-surface);font-size:13px}.totals-row td{border-top:2px solid var(--color-border)}.paid-badge{font-size:11px;padding:2px 8px;border-radius:4px;font-weight:600}.paid-green{background:var(--color-green-dim);color:var(--color-green)}.paid-red{background:var(--color-red-dim);color:var(--color-red)}.paid-amber{background:var(--color-brand-dim);color:var(--color-yellow)}.paid-dark-red{background:var(--color-red-dim);color:var(--color-red)}.sync-badge{font-size:11px;padding:2px 8px;border-radius:4px}.sync-synced{background:var(--color-green-dim);color:var(--color-green)}.sync-not-synced{background:var(--color-border);color:var(--color-muted)}.sync-error{background:var(--color-red-dim);color:var(--color-red)}.sync-pending{background:var(--color-blue-dim);color:var(--color-blue)}.sync-status-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:12px 16px;margin-bottom:20px}.sync-status-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.sync-chip{font-size:12px;padding:3px 10px;border-radius:4px;background:var(--color-border);color:var(--color-muted)}.sync-chip.sync-synced{background:var(--color-green-dim);color:var(--color-green)}.sync-chip.sync-not-synced{background:var(--color-border);color:var(--color-muted)}.sync-chip.sync-error{background:var(--color-red-dim);color:var(--color-red)}.sync-chip.sync-pending{background:var(--color-blue-dim);color:var(--color-blue)}.sync-errors{margin-top:10px}.sync-errors-summary{font-size:12px;color:var(--color-red);cursor:pointer;font-weight:600}.sync-errors-list{margin-top:6px;padding-left:18px;font-size:12px;color:var(--color-muted)}.sync-errors-list li{margin-bottom:4px}.sync-errors-list a{color:var(--color-brand)}.pdf-link{font-size:11px;font-weight:600;color:var(--color-brand)}.page-form{max-width:900px}.form-title{font-size:20px;font-weight:700;margin:8px 0 20px}.cost-form fieldset{border:1px solid var(--color-border);border-radius:var(--radius);padding:16px 18px;margin-bottom:18px}.cost-form legend{font-size:14px;font-weight:600;color:var(--color-text);padding:0 6px;display:flex;align-items:center;gap:10px}.form-row{display:flex;gap:14px;margin-bottom:12px}.form-row>label{flex:1;display:flex;flex-direction:column;font-size:12px;color:var(--color-muted)}.form-row-full{display:flex;flex-direction:column;font-size:12px;color:var(--color-muted);margin-bottom:12px}.cost-form input,.cost-form select,.cost-form textarea{margin-top:4px;padding:7px 10px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:5px;color:var(--color-text);font-size:13px;font-family:var(--font)}.cost-form input:focus,.cost-form select:focus,.cost-form textarea:focus{border-color:var(--color-brand);outline:none}.computed-field{display:flex;flex-direction:column;font-size:12px;color:var(--color-muted)}.computed-value{margin-top:4px;padding:7px 10px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:5px;font-size:13px;color:var(--color-text);font-variant-numeric:tabular-nums}.line-items-wrap{overflow-x:auto}.line-items-table{width:100%;border-collapse:collapse;font-size:12px;margin-top:8px}.line-items-table th{text-align:left;font-size:11px;font-weight:600;color:var(--color-muted);padding:4px 6px;text-transform:uppercase}.line-items-table td{padding:3px 4px}.line-items-table input,.line-items-table select{width:100%;padding:5px 6px;margin-top:0;font-size:12px}.input-narrow{max-width:90px}.btn-icon-danger{background:none;border:none;color:var(--color-red);font-size:18px;cursor:pointer;padding:2px 6px;border-radius:4px}.btn-icon-danger:hover{background:var(--color-red-dim)}.form-actions{display:flex;gap:10px;margin-top:8px;align-items:center}.shortcut-hint{font-size:11px;color:var(--color-muted);margin-left:8px}.project-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:24px}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:14px 16px}.stat-label{font-size:11px;color:var(--color-muted);text-transform:uppercase;letter-spacing:.3px;margin-bottom:4px}.stat-value{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.paid-toggle{font-size:11px;padding:2px 8px;border-radius:4px;font-weight:600;border:none;cursor:pointer;transition:opacity .15s}.paid-toggle:hover{opacity:.8}.cost-link{color:var(--color-brand);font-weight:600;text-decoration:none}.cost-link:hover{text-decoration:underline}.clickable-row{cursor:pointer}.clickable-row:hover{background:#7b8c421f!important}.badge-po{background:var(--color-blue-dim);color:var(--color-blue);font-size:11px;padding:2px 8px;border-radius:4px;font-weight:600}.badge-sc{background:var(--color-brand-dim);color:var(--color-brand);font-size:11px;padding:2px 8px;border-radius:4px;font-weight:600}.badge-status{font-size:11px;padding:2px 8px;border-radius:4px;font-weight:600}.badge-active{background:var(--color-green-dim);color:var(--color-green)}.badge-draft{background:var(--color-border);color:var(--color-muted)}.badge-closed{background:var(--color-blue-dim);color:var(--color-blue)}.badge-approval{font-size:11px;padding:2px 8px;border-radius:4px;font-weight:600}.badge-pending{background:var(--color-yellow-dim);color:var(--color-yellow)}.badge-approved{background:var(--color-green-dim);color:var(--color-green)}.badge-rejected{background:var(--color-red-dim);color:var(--color-red)}.cost-detail-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px;gap:16px}.cost-detail-actions{display:flex;align-items:center;gap:10px}.cost-detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 20px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:20px;margin-bottom:24px}.detail-field{display:flex;flex-direction:column;gap:2px}.detail-field-full{grid-column:1 / -1}.detail-label{font-size:11px;color:var(--color-muted);text-transform:uppercase;letter-spacing:.3px}.project-tab-bar{display:flex;gap:2px;border-bottom:2px solid var(--color-border);margin-bottom:20px;overflow-x:auto;scrollbar-width:none}.project-tab-bar::-webkit-scrollbar{display:none}.project-tab{background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;padding:8px 18px;font-size:13px;font-weight:500;color:var(--color-muted);cursor:pointer;white-space:nowrap;display:flex;align-items:center;gap:6px;transition:color .15s,border-color .15s}.project-tab:hover{color:var(--color-text)}.project-tab.active{color:var(--color-brand);border-bottom-color:var(--color-brand)}.tab-count{background:var(--color-border);color:var(--color-muted);font-size:10px;font-weight:700;padding:1px 6px;border-radius:10px}.project-tab.active .tab-count{background:var(--color-brand-dim, #e8f0fe);color:var(--color-brand)}.tab-stub{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--color-muted);text-align:center;gap:8px}.tab-stub strong{font-size:16px;color:var(--color-text)}.tab-stub p{margin:0;font-size:13px;max-width:360px}.register-section{margin-bottom:28px}.cost-edit-form{margin-bottom:24px}.cost-edit-form .cost-detail-grid input,.cost-edit-form .cost-detail-grid select,.cost-edit-form .cost-detail-grid textarea{background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;padding:6px 10px;color:var(--color-text);font-size:13px;font-family:var(--font);width:100%}.cost-edit-form .cost-detail-grid input:focus,.cost-edit-form .cost-detail-grid select:focus,.cost-edit-form .cost-detail-grid textarea:focus{border-color:var(--color-brand);outline:none}.cost-edit-form .form-actions{display:flex;gap:10px;margin-top:16px}.tabs{display:flex;gap:4px;margin-bottom:18px;border-bottom:1px solid var(--color-border);padding-bottom:0}.tab{padding:8px 16px;background:none;border:none;border-bottom:2px solid transparent;color:var(--color-muted);font-size:13px;font-weight:600;cursor:pointer;transition:color .15s,border-color .15s}.tab:hover{color:var(--color-text)}.tab-active{color:var(--color-brand);border-bottom-color:var(--color-brand)}.col-nowrap{white-space:nowrap}.stat-meta{font-size:11px;color:var(--color-muted)}.badge-insert{background:var(--color-green-dim);color:var(--color-green);padding:2px 8px;border-radius:4px;font-size:11px}.badge-update{background:var(--color-blue-dim);color:var(--color-blue);padding:2px 8px;border-radius:4px;font-size:11px}.badge-delete{background:var(--color-red-dim);color:var(--color-red);padding:2px 8px;border-radius:4px;font-size:11px}.sync-success{background:var(--color-green-dim);color:var(--color-green)}.sync-failed{background:var(--color-red-dim);color:var(--color-red)}.sync-warning{background:var(--color-yellow-dim);color:var(--color-yellow)}.sync-skipped{background:var(--color-border);color:var(--color-muted)}.toast-container{position:fixed;bottom:20px;right:20px;z-index:1000;display:flex;flex-direction:column-reverse;gap:8px;pointer-events:none}.toast{padding:10px 18px;border-radius:var(--radius);font-size:13px;font-weight:500;pointer-events:auto;cursor:pointer;animation:toast-slide .25s ease-out;max-width:380px;box-shadow:0 4px 20px var(--color-shadow)}.toast-success{background:var(--color-green-dim);color:var(--color-green);border:1px solid var(--color-green)}.toast-error{background:var(--color-red-dim);color:var(--color-red);border:1px solid var(--color-red)}.toast-info{background:var(--color-blue-dim);color:var(--color-blue);border:1px solid var(--color-blue)}@keyframes toast-slide{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:100;display:flex;align-items:center;justify-content:center;animation:fade-in .15s ease-out}.dialog-box{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:24px;max-width:440px;width:90%;box-shadow:0 8px 32px var(--color-shadow)}.dialog-title{font-size:16px;font-weight:700;margin-bottom:8px}.dialog-message{font-size:13px;color:var(--color-muted);margin-bottom:20px;line-height:1.5}.dialog-actions{display:flex;gap:10px;justify-content:flex-end}.btn-danger{background:var(--color-red);color:#fff;border:none;border-radius:6px;padding:8px 16px;font-size:13px;font-weight:600;cursor:pointer}.btn-danger:hover{opacity:.85}.btn-sm{padding:3px 8px;font-size:12px}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.breadcrumbs{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--color-muted);margin-bottom:12px}.breadcrumbs a{color:var(--color-muted)}.breadcrumbs a:hover{color:var(--color-brand);text-decoration:none}.breadcrumb-sep{color:var(--color-border)}.breadcrumb-current{color:var(--color-text)}.sort-header{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.sort-header:hover{color:var(--color-brand)}.sort-indicator{font-size:10px;margin-left:3px;opacity:.6}.btn-export{background:none;border:1px solid var(--color-border);color:var(--color-muted);padding:5px 12px;border-radius:6px;font-size:12px;cursor:pointer;transition:border-color .15s,color .15s}.btn-export:hover{border-color:var(--color-brand);color:var(--color-brand)}.filter-tabs{display:flex;gap:4px;background:var(--color-surface);border-radius:8px;padding:3px;border:1px solid var(--color-border)}.filter-tab{background:none;border:none;padding:5px 14px;border-radius:6px;font-size:12px;cursor:pointer;color:var(--color-muted);transition:background .15s,color .15s;white-space:nowrap}.filter-tab:hover{color:var(--color-text)}.filter-tab.active{background:var(--color-brand);color:#fff}.alert-banner{padding:10px 16px;border-radius:8px;margin-bottom:16px;display:flex;align-items:center;gap:8px;font-size:13px}.alert-danger{background:#e74c3c1f;border:1px solid rgba(231,76,60,.3);color:#e74c3c}.alert-banner.alert-clickable{cursor:pointer}.alert-action{margin-left:auto;font-size:12px;opacity:.7}.spend-progress{margin-bottom:16px;padding:12px 16px;background:var(--color-surface);border-radius:8px;border:1px solid var(--color-border)}.spend-progress-header{display:flex;justify-content:space-between;font-size:12px;color:var(--color-muted);margin-bottom:6px}.progress-bar-track{height:8px;background:var(--color-border);border-radius:4px;overflow:hidden}.progress-bar-fill{height:100%;border-radius:4px;transition:width .4s ease;width:var(--fill-w, 0%);background:var(--fill-bg, var(--color-success, #27ae60))}.mini-progress{position:relative;height:18px;min-width:60px;background:var(--color-border);border-radius:9px;overflow:hidden}.mini-progress-fill{height:100%;background:var(--color-brand);border-radius:9px;transition:width .3s ease;width:var(--fill-w, 0%)}.mini-progress-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#fff;mix-blend-mode:difference}.skeleton{background:linear-gradient(90deg,var(--color-surface) 25%,var(--color-border) 50%,var(--color-surface) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite;border-radius:var(--radius);height:20px;margin-bottom:12px}.skeleton-lg{height:48px}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.status-select{background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;padding:4px 8px;color:var(--color-text);font-size:12px;cursor:pointer}.status-select:focus{border-color:var(--color-brand);outline:none}.cost-breakdown{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;padding:12px 16px;margin-bottom:20px}.breakdown-title{font-size:13px;font-weight:600;color:var(--color-muted);margin:0 0 8px;text-transform:uppercase;letter-spacing:.5px}.breakdown-chips{display:flex;flex-wrap:wrap;gap:8px}.breakdown-chip{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;font-size:13px}.breakdown-type{font-weight:600;color:var(--color-text)}.breakdown-count{color:var(--color-muted)}.breakdown-total{font-weight:600;color:var(--color-brand)}.stat-green{color:#22c55e}.stat-red{color:#ef4444}.btn-icon{background:none;border:none;cursor:pointer;padding:2px 6px;border-radius:4px;font-size:14px;line-height:1;transition:background .15s,color .15s}.btn-delete-icon{color:var(--color-muted)}.btn-delete-icon:hover{background:#ef444426;color:#ef4444}.hc-summary{display:flex;gap:16px;margin-bottom:20px;padding:12px 16px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);font-size:14px;font-weight:600}.hc-summary-item{display:flex;align-items:center;gap:6px}.hc-pass{color:var(--color-green)}.hc-fail{color:var(--color-red)}.hc-total{color:var(--color-muted);margin-left:auto}.hc-category{margin-bottom:24px}.hc-category-title{font-size:15px;font-weight:600;color:var(--color-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid var(--color-border)}.hc-tests{display:flex;flex-direction:column;gap:6px}.hc-test{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;padding:10px 14px;transition:border-color .2s}.hc-test-pass{border-left:3px solid var(--color-green)}.hc-test-fail{border-left:3px solid var(--color-red)}.hc-test-running{border-left:3px solid var(--color-brand)}.hc-test-header{display:flex;align-items:center;gap:10px}.hc-test-indicator{width:20px;text-align:center;font-weight:700;font-size:14px}.hc-test-pass .hc-test-indicator{color:var(--color-green)}.hc-test-fail .hc-test-indicator{color:var(--color-red)}.hc-test-running .hc-test-indicator{color:var(--color-brand)}.hc-test-idle .hc-test-indicator{color:var(--color-muted)}.hc-test-name{flex:1;font-size:13px;font-weight:500;display:flex;align-items:center;gap:8px}.hc-tag-mutate{font-size:9px;font-weight:700;padding:1px 5px;border-radius:3px;background:var(--color-yellow-dim);color:var(--color-yellow);letter-spacing:.5px}.hc-test-time{font-size:12px;color:var(--color-muted);min-width:50px;text-align:right;font-variant-numeric:tabular-nums}.hc-test-detail{margin-top:6px;padding:6px 10px;font-size:12px;color:var(--color-muted);background:var(--color-bg);border-radius:4px;word-break:break-word}.hc-detail-error{color:var(--color-red)}.hc-env-info{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;overflow:hidden}.hc-env-row{display:flex;justify-content:space-between;padding:8px 14px;font-size:13px;border-bottom:1px solid var(--color-border)}.hc-env-row:last-child{border-bottom:none}.hc-env-label{color:var(--color-muted);font-weight:500}.hc-env-badge{font-weight:600}.hc-env-local{color:var(--color-blue)}.hc-env-dev{color:var(--color-yellow)}.hc-env-production{color:var(--color-green)}@media(max-width:1024px){.page-wide{padding:12px}.project-banner{flex-direction:column;gap:12px}.project-banner-right{flex-wrap:wrap}.project-stats{grid-template-columns:repeat(3,1fr)}.breakdown-chips{flex-direction:column}}@media(max-width:768px){.navbar{flex-direction:column;gap:8px;padding:8px 12px}.nav-links{gap:8px}.page-wide{padding:8px}.project-stats{grid-template-columns:repeat(2,1fr);gap:8px}.register-table-wrap{overflow-x:auto}.register-table{min-width:900px}.project-banner-right{flex-wrap:wrap;gap:6px}.project-banner-right .btn{font-size:12px;padding:6px 10px}.filter-bar{flex-direction:column;gap:6px}.sync-status-panel{font-size:12px}.sync-chip{font-size:11px;padding:2px 6px}}@media(max-width:480px){.project-stats{grid-template-columns:1fr}.stat-card{padding:8px 12px}.breadcrumbs{font-size:12px}.section-title{font-size:15px}h1.project-banner-title{font-size:18px}}.search-trigger{display:flex;align-items:center;gap:0;background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;padding:5px 8px;color:var(--color-muted);font-size:12px;cursor:pointer;transition:border-color .15s,gap .2s,padding .2s}.search-trigger:hover{border-color:var(--color-brand);gap:6px;padding:5px 10px}.search-trigger-icon{flex-shrink:0}.search-trigger-text{white-space:nowrap;max-width:0;overflow:hidden;opacity:0;transition:max-width .2s ease,opacity .2s ease}.search-trigger:hover .search-trigger-text{max-width:80px;opacity:1}.search-trigger-kbd{font-size:9px;font-family:monospace;background:var(--color-surface);border:1px solid var(--color-border);border-radius:3px;padding:1px 4px;max-width:0;overflow:hidden;opacity:0;transition:max-width .2s ease,opacity .2s ease,margin .2s ease;margin-left:0}.search-trigger:hover .search-trigger-kbd{max-width:30px;opacity:1;margin-left:2px}.search-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:100;display:flex;justify-content:center;padding-top:120px}.search-dialog{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);width:520px;max-height:420px;display:flex;flex-direction:column;box-shadow:0 12px 40px var(--color-shadow)}.search-input{border:none;background:transparent;color:var(--color-text);font-size:15px;padding:14px 16px;outline:none;border-bottom:1px solid var(--color-border);font-family:var(--font)}.search-input::placeholder{color:var(--color-muted)}.search-loading{display:flex;justify-content:center;padding:12px}.search-results{list-style:none;overflow-y:auto;padding:6px}.search-result-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;cursor:pointer;transition:background .1s}.search-result-item:hover,.search-result-item.selected{background:var(--color-border)}.search-result-type{font-size:10px;font-weight:700;text-transform:uppercase;padding:2px 6px;border-radius:3px;white-space:nowrap;flex-shrink:0}.type-project{background:var(--color-brand-dim);color:var(--color-brand)}.type-cost{background:var(--color-blue-dim);color:var(--color-blue)}.type-tradePackage{background:var(--color-yellow-dim);color:var(--color-yellow)}.type-variation{background:var(--color-red-dim);color:var(--color-red)}.search-result-body{display:flex;flex-direction:column;min-width:0}.search-result-title{font-size:13px;font-weight:500;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result-sub{font-size:11px;color:var(--color-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-empty{text-align:center;color:var(--color-muted);padding:20px;font-size:13px}.health-pill-wrap{position:relative}.health-pill{display:inline-flex;align-items:center;gap:0;background:var(--color-bg);border:1px solid var(--color-border);border-radius:20px;padding:4px 6px;font-size:11px;color:var(--color-muted);cursor:pointer;transition:border-color .15s,gap .2s,padding .2s}.health-pill:hover{gap:6px;padding:4px 10px 4px 6px}.hp-label{max-width:0;overflow:hidden;opacity:0;white-space:nowrap;transition:max-width .2s ease,opacity .2s ease}.health-pill:hover .hp-label{max-width:120px;opacity:1}.hp-icon{flex-shrink:0;opacity:.7}.health-pill-healthy{border-color:var(--color-green-dim)}.health-pill-healthy .hp-icon{color:var(--color-green);opacity:1}.health-pill-degraded{border-color:var(--color-yellow-dim)}.health-pill-degraded .hp-icon{color:var(--color-yellow);opacity:1}.health-pill-unhealthy{border-color:var(--color-red-dim)}.health-pill-unhealthy .hp-icon{color:var(--color-red);opacity:1}.hp-indicator{width:7px;height:7px;border-radius:50%;flex-shrink:0}.hp-indicator-ok,.hp-dot-ok{background:var(--color-green)}.hp-indicator-degraded,.hp-dot-degraded{background:var(--color-yellow)}.hp-indicator-down,.hp-dot-down{background:var(--color-red)}.hp-indicator-unconfigured,.hp-dot-unconfigured{background:var(--color-muted)}.health-popover{position:absolute;top:calc(100% + 8px);right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:14px 16px;min-width:260px;box-shadow:0 8px 24px var(--color-shadow);z-index:20}.health-popover-title{font-size:12px;font-weight:700;color:var(--color-text);margin-bottom:10px;text-transform:uppercase;letter-spacing:.3px}.health-popover-list{list-style:none}.health-popover-item{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:12px;border-bottom:1px solid var(--color-border)}.health-popover-item:last-child{border-bottom:none}.hp-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.hp-name{font-weight:500;color:var(--color-text)}.hp-status{margin-left:auto;font-size:11px;text-transform:capitalize;color:var(--color-muted)}.hp-msg{display:block;width:100%;font-size:10px;color:var(--color-muted);padding-left:15px;margin-top:-2px}.hp-error-banner{background:color-mix(in srgb,var(--color-red) 10%,transparent);border:1px solid color-mix(in srgb,var(--color-red) 30%,transparent);border-radius:6px;padding:8px 10px;margin-bottom:8px}.hp-error-code{font-size:11px;font-weight:700;font-family:monospace;color:var(--color-red);letter-spacing:.3px}.hp-error-reason{font-size:11px;color:var(--color-text);margin-top:3px;line-height:1.4}.health-popover-ts{font-size:10px;color:var(--color-muted);margin-top:8px;text-align:right}.health-popover-versions{margin-top:10px;padding-top:8px;border-top:1px solid var(--color-border)}.health-popover-versions-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--color-muted);margin-bottom:6px}.hp-version-row{display:flex;justify-content:space-between;align-items:center;font-size:11px;padding:2px 0}.hp-version-label{color:var(--color-muted)}.hp-version-val{font-weight:500;color:var(--color-text)}.profile-pill-wrap{position:relative}.profile-pill{display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;padding:0}.profile-avatar{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--color-brand);color:#fff;font-size:11px;font-weight:700;letter-spacing:.3px;transition:opacity .15s}.profile-pill:hover .profile-avatar{opacity:.85}.profile-avatar-lg{width:36px;height:36px;font-size:13px;flex-shrink:0}.profile-popover{position:absolute;top:calc(100% + 8px);right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);min-width:220px;box-shadow:0 8px 24px var(--color-shadow);z-index:20;overflow:hidden}.profile-popover-header{display:flex;align-items:center;gap:10px;padding:14px 16px}.profile-popover-info{display:flex;flex-direction:column;min-width:0}.profile-popover-email{font-size:12px;color:var(--color-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-popover-divider{height:1px;background:var(--color-border)}.profile-popover-item{display:flex;align-items:center;gap:8px;width:100%;padding:10px 16px;border:none;background:none;color:var(--color-text);font-size:13px;cursor:pointer;transition:background .1s;font-family:var(--font)}.profile-popover-item:hover{background:var(--color-border)}.profile-popover-logout{color:var(--color-red)}.profile-popover-logout:hover{background:var(--color-red-dim)}.profile-theme-row{display:flex;align-items:center;justify-content:space-between;padding:8px 16px}.profile-theme-label{font-size:12px;color:var(--color-muted)}.profile-theme-toggle{display:flex;gap:2px;background:var(--color-border);border-radius:6px;padding:2px}.profile-theme-btn{display:flex;align-items:center;justify-content:center;width:28px;height:26px;border:none;border-radius:4px;background:transparent;color:var(--color-muted);cursor:pointer;transition:background .12s,color .12s}.profile-theme-btn:hover{color:var(--color-text)}.profile-theme-btn.active{background:var(--color-surface);color:var(--color-text);box-shadow:0 1px 3px var(--color-shadow)}.dash-section{margin-bottom:28px}.section-title{font-family:"Denim INK",var(--font);font-size:16px;font-weight:700;margin-bottom:12px;color:var(--color-text)}.dash-quick-links{display:flex;flex-wrap:wrap;gap:10px}.dash-quick-card{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);font-size:13px;font-weight:500;transition:border-color .15s,background .15s;text-decoration:none!important}.dash-quick-card:hover{border-color:var(--color-brand);background:var(--color-brand-dim)}.dash-quick-icon{font-size:16px}.dash-recent-list{display:flex;flex-direction:column;gap:4px}.dash-recent-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--radius);transition:background .12s;color:var(--color-text);text-decoration:none!important}.dash-recent-item:hover{background:var(--color-surface)}.dash-recent-icon{font-size:15px;flex-shrink:0}.dash-recent-label{flex:1;font-size:13px}.dash-recent-time{font-size:11px;color:var(--color-muted);flex-shrink:0}.schedule-info{font-size:13px;color:var(--color-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:12px 16px;margin-bottom:20px;line-height:1.6}.schedule-table{border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.schedule-table-header{display:grid;grid-template-columns:200px 1fr;padding:10px 16px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.schedule-row{display:grid;grid-template-columns:200px 1fr;align-items:center;padding:12px 16px;border-bottom:1px solid var(--color-border)}.schedule-row:last-child{border-bottom:none}.schedule-source-name{font-size:14px;font-weight:500}.schedule-options{display:flex;flex-wrap:wrap;gap:6px}.schedule-option{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;font-size:12px;font-weight:500;border:1px solid var(--color-border);border-radius:20px;cursor:pointer;transition:background .1s,border-color .1s,color .1s}.schedule-option input[type=radio]{display:none}.schedule-option:hover{background:var(--color-border)}.schedule-option.selected{background:var(--color-brand);border-color:var(--color-brand);color:#fff}.schedule-empty{padding:24px;color:var(--color-muted);font-size:13px;text-align:center}.schedule-saved{font-size:13px;color:var(--color-success, #22c55e);font-weight:500}.schedule-footer-note{margin-top:16px;font-size:12px;color:var(--color-muted)}.import-source-header{display:flex;align-items:center;gap:10px;padding:0 0 14px;border-bottom:1px solid var(--color-border);margin-bottom:16px}.import-source-icon{font-size:20px}.import-source-name{font-size:15px;font-weight:600}.import-source-desc{font-size:13px;color:var(--color-muted);margin-top:2px}.import-table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius)}.import-table{width:100%;border-collapse:collapse;font-size:13px}.import-table th{padding:8px 12px;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.import-table td{padding:8px 12px;border-bottom:1px solid var(--color-border);vertical-align:middle}.import-table tr:last-child td{border-bottom:none}.import-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--color-muted)}.import-result-ok{color:var(--color-success, #22c55e);font-size:13px;font-weight:600}.import-source-soon .import-source-header{border-bottom:none;padding-bottom:0;margin-bottom:0}.badge-soon{display:inline-block;padding:2px 8px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;border-radius:10px;background:var(--color-border);color:var(--color-muted)}.mt-8{margin-top:8px}.hc-version-soon{display:inline-flex;align-items:center;gap:6px;color:var(--color-muted);font-size:13px}.hc-version-value{font-size:13px;font-weight:500}.hc-version-unknown{font-size:13px;color:var(--color-muted);font-style:italic}.admin-overview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-top:8px}.admin-overview-card{display:flex;flex-direction:column;gap:8px;padding:20px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);text-decoration:none!important;color:var(--color-text);transition:border-color .15s,box-shadow .15s}.admin-overview-card:hover{border-color:var(--color-brand);box-shadow:0 4px 16px var(--color-shadow);color:var(--color-text)}.admin-overview-icon{font-size:24px}.admin-overview-title{font-size:15px;font-weight:600}.admin-overview-desc{font-size:13px;color:var(--color-muted);line-height:1.5}.mono{font-family:monospace;font-size:12px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:20px 24px;margin-bottom:20px}.card-title{font-size:15px;font-weight:600;margin:0 0 12px}.card-desc{font-size:13px;color:var(--color-muted);margin:0 0 16px;line-height:1.6}.card-actions{display:flex;align-items:center;gap:12px;margin-top:16px}.alert{padding:10px 14px;border-radius:var(--radius);font-size:13px;margin-bottom:14px}.alert-success{background:var(--color-green-dim);border:1px solid var(--color-green);color:var(--color-green)}.alert-error{background:var(--color-red-dim);border:1px solid var(--color-red);color:var(--color-red)}.status-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:600}.status-badge-success{background:var(--color-green-dim);color:var(--color-green)}.status-badge-error{background:var(--color-red-dim);color:var(--color-red)}.status-badge-info{background:var(--color-blue-dim);color:var(--color-blue)}.xero-status-grid{display:grid;gap:10px}.xero-status-row{display:flex;align-items:center;gap:12px;font-size:13px}.xero-status-label{width:150px;flex-shrink:0;color:var(--color-muted);font-weight:500}.xero-token-expired-banner{margin-bottom:1rem;display:flex;align-items:center;flex-wrap:wrap;gap:8px}.xero-reauth-btn{margin-left:.5rem}.import-discover-row{display:flex;align-items:center;gap:12px;margin-bottom:16px}.import-discover-count{font-size:13px;color:var(--color-muted)}.import-empty-hint{margin-top:1rem}.import-file-row{transition:background .1s}.import-file-row:hover{background:var(--color-hover, rgba(0,0,0,.04))}.import-file-name{font-weight:500}.import-file-name a{color:var(--color-text);text-decoration:none}.import-file-name a:hover{text-decoration:underline;color:var(--color-brand)}.import-file-path{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-col-narrow,.import-col-status{white-space:nowrap}.import-col-action{white-space:nowrap;text-align:right;width:120px}.import-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:99px;font-size:12px;font-weight:500;white-space:nowrap}.import-badge--imported{background:color-mix(in srgb,var(--color-brand) 15%,transparent);color:var(--color-brand)}.import-badge--new{background:color-mix(in srgb,#3b82f6 12%,transparent);color:#2563eb}.import-error-inline{font-size:13px;color:var(--color-danger, #dc2626)}.import-folders-section{padding:14px 0 16px;border-bottom:1px solid var(--color-border);margin-bottom:16px}.import-folders-header{display:flex;align-items:center;gap:10px;margin-bottom:10px}.import-folders-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--color-muted)}.import-folders-empty{font-size:13px;color:var(--color-muted)}.import-folder-toggles{display:flex;flex-wrap:wrap;gap:8px}.import-folder-toggle{display:inline-flex;align-items:center;gap:6px;padding:4px 12px 4px 8px;border:1px solid var(--color-border);border-radius:6px;font-size:13px;cursor:pointer;transition:border-color .12s,background .12s;-webkit-user-select:none;user-select:none}.import-folder-toggle:hover{border-color:var(--color-brand)}.import-folder-toggle.is-enabled{border-color:var(--color-brand);background:var(--color-brand-dim);color:var(--color-brand);font-weight:500}.import-folder-toggle input{cursor:pointer;accent-color:var(--color-brand)}.import-folder-toggle--filter{font-size:.8rem}.import-badge--partial{background:var(--color-warning-dim, #fff3cd);color:var(--color-warning, #856404);border:1px solid var(--color-warning, #f0c040)}.procore-extract-status{display:flex;flex-direction:column;gap:2px}.procore-extract-date{font-size:11px;color:var(--color-muted)}.procore-detail-row td{background:var(--color-surface-alt, #f8f9fa);padding:12px 16px!important}.procore-counts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px}.procore-count-cell{display:flex;justify-content:space-between;align-items:center;padding:5px 10px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;font-size:12px}.procore-count-cell.procore-count-zero{opacity:.45}.procore-count-label{color:var(--color-muted)}.procore-count-value{font-weight:600;color:var(--color-text);min-width:24px;text-align:right}.section-header-row{display:flex;align-items:center;gap:12px;margin-bottom:8px}.section-header-row .section-title{margin-bottom:0}.filter-row{display:flex;gap:12px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.filter-search{max-width:320px}.filter-search-mb{max-width:320px;margin-bottom:12px}.variation-actions{display:flex;gap:4px}.tab-stub-icon{font-size:32px;margin-bottom:12px}.import-actions-row{margin-left:auto;display:flex;gap:8px;align-items:center}.procore-col-id{width:80px}.procore-col-num,.procore-col-stage{width:120px}.procore-col-active{width:80px}.procore-col-mapped{width:90px}.procore-col-extract,.procore-col-action{width:140px}.excel-col-name{width:30%}.excel-col-loc{width:28%}.excel-col-size{width:100px}.excel-col-date{width:70px}.excel-col-action{width:130px}.import-folders-actions{display:flex;align-items:center;gap:10px;margin-top:10px}.import-saved-hint{font-size:12px;color:var(--color-brand);font-weight:500}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-dialog{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:24px;max-width:440px;width:90%;box-shadow:0 8px 32px #0000002e}.modal-title{font-size:17px;font-weight:600;margin:0 0 12px}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:20px}.btn-danger{background:#dc2626;color:#fff;border:none}.btn-danger:hover{background:#b91c1c}.btn-secondary{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary:hover:not(:disabled){border-color:var(--color-brand);color:var(--color-brand)}.page-actions{display:flex;align-items:center;gap:12px}.toggle-label{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--color-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-label input{accent-color:var(--color-brand);cursor:pointer}.loading-text{font-size:13px;color:var(--color-muted);padding:20px 0}.users-table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius)}.users-table{width:100%;border-collapse:collapse;font-size:13px}.users-table th{background:var(--color-surface);padding:9px 14px;text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;color:var(--color-muted);border-bottom:2px solid var(--color-border);white-space:nowrap}.users-table th.col-center{text-align:center}.users-table td{padding:10px 14px;border-bottom:1px solid var(--color-border);vertical-align:middle}.users-table tbody tr:last-child td{border-bottom:none}.users-table tbody tr:hover{background:#7b8c420f}.users-table tbody tr.row-inactive{opacity:.5}.user-cell{display:flex;flex-direction:column;gap:2px;min-width:0}.user-name{font-size:13px;font-weight:500;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}.user-email{font-size:11px;color:var(--color-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}.badge-provider{font-size:10px;font-weight:700;padding:2px 7px;border-radius:4px;letter-spacing:.4px;text-transform:uppercase;background:var(--color-border);color:var(--color-muted);white-space:nowrap}.role-select{background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;padding:5px 8px;color:var(--color-text);font-size:12px;font-family:var(--font);cursor:pointer;min-width:130px;max-width:160px}.role-select:focus{border-color:var(--color-brand);outline:none}.role-select:disabled{opacity:.5;cursor:default}.cell-date{font-size:12px;color:var(--color-muted);white-space:nowrap;font-variant-numeric:tabular-nums}.col-date{min-width:180px}.col-center,.cell-center{text-align:center}.toggle-switch{position:relative;display:inline-block;width:34px;height:20px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--color-border);border-radius:20px;cursor:pointer;transition:background .2s}.toggle-slider:before{content:"";position:absolute;width:14px;height:14px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .2s;box-shadow:0 1px 3px #0000004d}.toggle-switch input:checked+.toggle-slider{background:var(--color-brand)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(14px)}.toggle-switch input:disabled+.toggle-slider{opacity:.45;cursor:default}.table-empty{text-align:center;padding:40px!important;color:var(--color-muted);font-size:14px}.admin-tab-bar{display:flex;gap:2px;border-bottom:2px solid var(--color-border);margin-bottom:20px}.admin-tab{padding:9px 18px;background:none;border:none;font-size:13px;font-weight:500;color:var(--color-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;border-radius:4px 4px 0 0;transition:color .15s,border-color .15s;font-family:var(--font)}.admin-tab:hover{color:var(--color-text)}.admin-tab--active{color:var(--color-brand);border-bottom-color:var(--color-brand);font-weight:600}.roles-tab{display:flex;flex-direction:column;gap:16px}.roles-tab-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.roles-tab-hint{font-size:13px;color:var(--color-muted);max-width:600px;margin:0}.roles-new-form{padding:16px 20px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface)}.roles-form-title{font-size:14px;font-weight:600;margin:0 0 12px}.roles-form-row{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:10px}.roles-form-label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--color-muted);text-transform:uppercase;letter-spacing:.3px;flex:1;min-width:180px}.roles-form-input{background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;padding:7px 10px;font-size:13px;font-family:var(--font);color:var(--color-text);font-weight:400}.roles-form-input:focus{border-color:var(--color-brand);outline:none}.roles-form-input:disabled{opacity:.5}.roles-form-check{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--color-text);cursor:pointer;-webkit-user-select:none;user-select:none}.roles-form-check input{accent-color:var(--color-brand);cursor:pointer}.roles-form-check-sm{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--color-text);cursor:pointer;-webkit-user-select:none;user-select:none}.roles-form-check-sm input{accent-color:var(--color-brand);cursor:pointer}.roles-form-error{font-size:12px;color:var(--color-danger, #c0392b);margin:6px 0 0}.roles-form-error-inline{font-size:11px;color:var(--color-danger, #c0392b)}.roles-form-actions{display:flex;gap:8px;margin-top:14px}.roles-list{display:flex;flex-direction:column;gap:8px}.role-card{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);overflow:hidden;transition:border-color .15s}.role-card--expanded{border-color:var(--color-brand)}.role-card-header{display:flex;align-items:center;gap:12px;padding:12px 16px;flex-wrap:wrap}.role-card-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.role-name{font-size:14px;font-weight:600;color:var(--color-text)}.role-desc{font-size:12px;color:var(--color-muted)}.role-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:2px}.badge-system{background:rgba(var(--color-brand-rgb, 123, 140, 66),.15);color:var(--color-brand);font-size:10px;font-weight:700;padding:2px 7px;border-radius:4px;letter-spacing:.4px;text-transform:uppercase}.badge-template{background:#4278b41f;color:#3a6fa8;font-size:10px;font-weight:700;padding:2px 7px;border-radius:4px;letter-spacing:.4px;text-transform:uppercase}.role-card-stats{display:flex;gap:14px;flex-shrink:0}.role-stat{font-size:12px;color:var(--color-muted);white-space:nowrap}.role-card-actions{display:flex;gap:6px;align-items:center;flex-shrink:0}.roles-inline-edit{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.roles-inline-name{max-width:200px}.roles-inline-desc{max-width:260px}.role-perms-section{border-top:1px solid var(--color-border);padding:16px 20px 20px;background:#00000004}.uat-top-banner{position:fixed;top:0;left:0;right:0;height:26px;line-height:26px;background:#f59e0b;color:#fff;font-size:11px;font-weight:700;text-align:center;letter-spacing:.08em;z-index:10001;pointer-events:none;-webkit-user-select:none;user-select:none}.uat-watermark-overlay{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10000;-webkit-user-select:none;user-select:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='280' height='280'%3E%3Ctext x='50%25' y='50%25' font-family='Arial%2C sans-serif' font-size='36' font-weight='bold' fill='rgba(245%2C158%2C11%2C0.13)' text-anchor='middle' dominant-baseline='middle' transform='rotate(-45 140 140)'%3EUAT%3C%2Ftext%3E%3C%2Fsvg%3E");background-repeat:repeat;background-size:280px 280px}body:has(.uat-top-banner) .app-shell{padding-top:26px}.role-perms-matrix{display:flex;flex-direction:column;gap:12px}.perms-category{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.perms-category-header{padding:6px 14px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--color-muted);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.perms-row{display:flex;align-items:center;gap:12px;padding:7px 14px;border-bottom:1px solid var(--color-border)}.perms-row:last-child{border-bottom:none}.perms-label{flex:1;font-size:13px;color:var(--color-text);min-width:0}.perms-levels{display:flex;gap:6px;flex-shrink:0}.perms-level-label{display:flex;align-items:center;gap:4px;cursor:pointer;-webkit-user-select:none;user-select:none}.perms-level-label input[type=radio]{accent-color:var(--color-brand);cursor:pointer}.perms-level-badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:4px;letter-spacing:.2px;border:1px solid transparent;cursor:pointer;transition:background .15s}.perms-level-badge--none{background:var(--color-border);color:var(--color-muted)}.perms-level-badge--read{background:#4278b41f;color:#3a6fa8;border-color:#4278b433}.perms-level-badge--write{background:#dc8c281f;color:#b8720a;border-color:#dc8c2833}.perms-level-badge--full{background:#7b8c4226;color:var(--color-brand);border-color:#7b8c4240}.role-perms-footer{display:flex;justify-content:flex-end;margin-top:14px}.btn-sm{padding:5px 10px;font-size:12px}.btn-danger{background:#c0392b1a;color:#c0392b;border:1px solid rgba(192,57,43,.2)}.btn-danger:hover:not(:disabled){background:#c0392b2e;border-color:#c0392b59}.btn-default{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}.btn-default:hover:not(:disabled){background:var(--color-border)}.muted{color:var(--color-muted);font-size:13px}.procore-number-input{width:100%;background:transparent;border:1px solid transparent;border-radius:5px;padding:3px 6px;font-size:13px;color:var(--color-muted);font-family:var(--font);transition:border-color .15s,background .15s,color .15s}.procore-number-input:hover,.procore-number-input:focus{border-color:var(--color-border);background:var(--color-bg);color:var(--color-text);outline:none}.procore-number-input.is-saving{opacity:.5;pointer-events:none}.procore-count-link{all:unset;cursor:pointer;font-weight:600;color:var(--color-brand);min-width:24px;text-align:right;text-decoration:underline;text-underline-offset:2px}.procore-count-link:hover{color:var(--color-brand-hover, #5a6e28)}.procore-errors-section{margin-top:12px;border-top:1px solid var(--color-border);padding-top:10px}.procore-errors-title{font-size:12px;font-weight:600;color:var(--color-warning, #856404);display:block;margin-bottom:6px}.procore-errors-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.procore-error-item{display:flex;gap:6px;font-size:12px;color:var(--color-text)}.procore-error-category{font-weight:600;color:var(--color-muted);flex-shrink:0}.procore-error-message{color:var(--color-warning, #856404)}.modal-dialog--wide{max-width:780px;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px;flex-shrink:0}.modal-subtitle{margin:2px 0 0;font-size:12px}.modal-close{all:unset;cursor:pointer;font-size:18px;color:var(--color-muted);line-height:1;padding:2px 6px;border-radius:4px;flex-shrink:0}.modal-close:hover{color:var(--color-text);background:var(--color-border)}.modal-loading{padding:24px 0;color:var(--color-muted);display:flex;align-items:center;gap:8px;font-size:13px}.procore-detail-items{overflow-y:auto;display:flex;flex-direction:column;gap:12px;flex:1;min-height:0}.procore-detail-item{border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden;font-size:12px}.procore-detail-item-header{display:flex;gap:10px;align-items:baseline;padding:7px 12px;background:var(--color-surface-alt, #f8f9fa);border-bottom:1px solid var(--color-border)}.procore-detail-item-id{font-weight:700;color:var(--color-muted);font-size:11px}.procore-detail-item-name{font-weight:600;color:var(--color-text)}.procore-detail-item-json{margin:0;padding:10px 12px;background:var(--color-bg);font-size:11px;font-family:monospace;overflow-x:auto;max-height:200px;white-space:pre-wrap;word-break:break-word}
