:root{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100dvh}html[data-ff-text-scale=large]{font-size:112.5%}html[data-ff-text-scale=extra_large]{font-size:125%}html[data-ff-text-scale=accessibility]{font-size:150%}@media(prefers-reduced-motion:reduce){html[data-ff-text-scale]{transition:none}}.impersonation-banner{position:sticky;top:0;z-index:1100;display:flex;align-items:center;justify-content:center;gap:1rem;padding:.65rem 1rem;background:#7c2d12;color:#fff;font-weight:600}.impersonation-banner .btn-ghost{color:inherit;border-color:currentColor}:root{--ff-bg: #0f1419;--ff-surface: #1a2332;--ff-surface-2: #243044;--ff-border: #2d3a4f;--ff-text: #e8edf4;--ff-muted: #94a3b8;--ff-accent: #3b82f6;--ff-accent-hover: #2563eb;--ff-danger: #ef4444;--ff-radius: 12px;font-family:Segoe UI,system-ui,-apple-system,sans-serif}:root[data-theme=dark]{color-scheme:dark}:root[data-theme=light]{--ff-bg: #f6f8fb;--ff-surface: #ffffff;--ff-surface-2: #edf2f7;--ff-border: #d8e0ea;--ff-text: #172033;--ff-muted: #5f6f85;--ff-accent: #2563eb;--ff-accent-hover: #1d4ed8;--ff-danger: #dc2626;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--ff-bg);color:var(--ff-text);min-height:100dvh}.auth-page{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:1.25rem;background:radial-gradient(ellipse at top,#1e3a5f 0%,var(--ff-bg) 55%)}.auth-card{width:100%;max-width:min(440px,calc(100vw - 2rem));background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:clamp(1.25rem,4vw,1.75rem) clamp(1rem,3vw,1.5rem);box-shadow:0 24px 48px #00000059}.auth-card--wide{max-width:min(520px,calc(100vw - 2rem))}.auth-header h1{margin:.85rem 0 .5rem;font-size:clamp(1.45rem,4vw,1.75rem);font-weight:700;letter-spacing:-.02em;line-height:1.2}.auth-brand{margin:0;font-size:clamp(1rem,2.8vw,1.15rem);text-transform:none;letter-spacing:-.03em;color:var(--ff-text);font-weight:700}.auth-tagline{margin:.35rem 0 0;font-size:.88rem;color:var(--ff-muted);line-height:1.45;max-width:34ch}.auth-subtitle{margin:0;color:var(--ff-muted);font-size:.92rem;line-height:1.5}.auth-form{display:flex;flex-direction:column;gap:1rem;margin-top:1.5rem;width:100%;min-width:0}.auth-form label,.auth-form .password-field-wrap{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;font-weight:500;min-width:0}.auth-form input,.auth-form select{width:100%;max-width:100%;min-width:0;padding:.65rem .75rem;border-radius:8px;border:1px solid var(--ff-border);background:var(--ff-bg);color:var(--ff-text);font-size:1rem}.signature-canvas{display:block;width:100%;max-width:480px;height:160px;border:1px solid var(--border);border-radius:8px;background:#fff;touch-action:none}.auth-form input:focus,.auth-form select:focus{outline:2px solid var(--ff-accent);outline-offset:1px}.auth-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;width:100%}.auth-row>label{min-width:0}@media(max-width:560px){.auth-row{grid-template-columns:1fr}}.field-hint{font-size:.75rem;color:var(--ff-muted);font-weight:400}.field-error{display:block;margin-top:.35rem;font-size:.8rem;font-weight:600;color:var(--ff-danger, #b42318)}.security-idle-card{position:relative}.security-idle-actions{position:sticky;bottom:0;z-index:2;padding-top:.5rem;background:linear-gradient(to top,var(--ff-surface, #fff) 70%,transparent)}.security-sessions-details>summary{cursor:pointer;list-style:none}.security-sessions-details>summary h2{display:inline;margin:0}.security-sessions-details>summary::-webkit-details-marker{display:none}.security-sessions-details>summary:before{content:"▸ ";color:var(--ff-muted)}.security-sessions-details[open]>summary:before{content:"▾ "}.btn-primary{margin-top:.25rem;padding:.75rem 1rem;border:none;border-radius:8px;background:var(--ff-accent);color:#fff;font-size:1rem;font-weight:600;cursor:pointer}.btn-primary:hover:not(:disabled){background:var(--ff-accent-hover)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-block{width:100%;display:block}.btn-ghost{padding:.5rem .75rem;border:1px solid var(--ff-border);border-radius:8px;background:transparent;color:var(--ff-text);cursor:pointer}.auth-footer{margin-top:1.25rem;text-align:center;font-size:.9rem;color:var(--ff-muted)}.ops-sso-buttons{display:flex;flex-direction:column;gap:.65rem;margin-bottom:1rem}.ops-sso-divider{text-align:center;margin:.25rem 0 0;font-size:.85rem}.auth-footer a{color:var(--ff-accent)}.surface{min-height:100dvh;display:flex;flex-direction:column}.surface-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1rem 1.25rem;border-bottom:1px solid var(--ff-border);background:var(--ff-surface)}.surface-header h1{margin:.25rem 0 0;font-size:1.25rem}.surface-nav{display:flex;align-items:center;gap:.75rem}.surface-nav a{color:var(--ff-muted);text-decoration:none;font-size:.9rem}.surface-main{flex:1;padding:1.25rem clamp(1rem,2.5vw,2rem);max-width:none;width:100%;margin:0;box-sizing:border-box}.surface-app{--surface-accent: #3b82f6}.surface-pro{--surface-accent: #10b981}.surface-portal{--surface-accent: #a855f7}.surface-portal .surface-main{max-width:none}.surface-main>.page{max-width:none;width:100%;padding-inline:0}.surface-main>.page.page--narrow{max-width:560px}.surface-portal .surface-header{position:sticky;top:0;z-index:20}.app-shell{display:flex;min-height:100dvh}.app-sidebar{width:220px;flex-shrink:0;padding:1.25rem 1rem;background:var(--ff-surface);border-right:1px solid var(--ff-border);display:flex;flex-direction:column;gap:1rem}.app-shell--sidebar-collapsed .app-sidebar{width:76px;padding-inline:.65rem;align-items:stretch}.app-sidebar-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.app-brand-link{text-decoration:none;white-space:nowrap}.app-sidebar-toggle{min-width:2rem;padding-inline:.45rem}.app-nav{display:flex;flex-direction:column;gap:.25rem;flex:1}.app-nav-link{padding:.5rem .75rem;border-radius:8px;color:var(--ff-muted);text-decoration:none;font-size:.95rem}.app-shell--sidebar-collapsed .app-nav-link{display:grid;place-items:center;min-height:2.35rem;padding:.45rem;font-size:0}.app-shell--sidebar-collapsed .app-nav-link:before{content:attr(data-short);font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.app-shell--sidebar-collapsed .app-nav-link-text,.app-shell--sidebar-collapsed .app-signout{display:none}.app-nav-link.active,.app-nav-link:hover{background:#3b82f626;color:var(--ff-text)}.app-signout{margin-top:auto;width:100%}.app-main{flex:1;min-width:0;overflow:auto;background:var(--ff-bg)}.app-main>.page,.pro-main>.page{max-width:none;width:100%}.app-main>.page.page--narrow,.pro-main>.page.page--narrow{max-width:560px}.app-main>.page.page--wide,.pro-main>.page.page--wide{max-width:none}.app-main .page-header{gap:.75rem 1.25rem;margin-bottom:1.35rem}.app-main .page-header h1{margin:0;font-size:clamp(1.35rem,2vw,1.75rem);letter-spacing:-.02em}.app-main .table-wrap{width:100%}.app-main .page-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem}.app-main .page-toolbar>input[type=search],.app-main .page-toolbar>.input[type=search],.app-main .page-toolbar>input.input:first-of-type{flex:1 1 16rem;min-width:min(100%,12rem)}.app-main .input,.app-main input.input,.app-main select.input,.app-main .page-toolbar input:not([type=checkbox]):not([type=radio]),.app-main .page-toolbar select,.app-main .lead-filters input,.app-main .lead-filters select{box-sizing:border-box;padding:.55rem .75rem;min-height:2.5rem;border-radius:8px;border:1px solid var(--ff-border);background:var(--ff-surface-2);color:var(--ff-text);font:inherit}.app-main .input::placeholder,.app-main input.input::placeholder,.app-main .page-toolbar input::placeholder{color:var(--ff-muted);opacity:1}.lead-filters{display:grid;grid-template-columns:minmax(220px,1fr) repeat(2,minmax(140px,180px)) auto auto;gap:.75rem;align-items:end;margin-bottom:1rem;padding:.85rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius)}.lead-filters label{display:flex;flex-direction:column;gap:.35rem;color:var(--ff-muted);font-size:.8rem}.lead-filters input,.lead-filters select{min-width:0;width:100%;padding:.6rem .7rem;border:1px solid var(--ff-border);border-radius:8px;background:var(--ff-bg);color:var(--ff-text)}.segmented-control{display:inline-flex;padding:.2rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:999px}.segmented-control button{border:0;border-radius:999px;padding:.45rem .75rem;background:transparent;color:var(--ff-muted);cursor:pointer}.segmented-control button.active{background:var(--ff-accent);color:#fff}.link-button{padding:0;border:0;background:transparent;color:var(--ff-accent);font:inherit;font-weight:600;cursor:pointer;text-align:left}.leads-list-wrap table{min-width:760px}@media(max-width:900px){.lead-filters{grid-template-columns:1fr 1fr}.lead-filters label:first-child{grid-column:1 / -1}}@media(max-width:560px){.lead-filters,.kanban{grid-template-columns:1fr}}.page{padding:1.25rem clamp(1rem,3vw,2rem);max-width:1100px}.page--wide{max-width:1280px}.page--full{max-width:none}.page--narrow{max-width:560px}.page-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.page-header h1{margin:.35rem 0 0;font-size:1.5rem}.page-subtitle{margin:.25rem 0 0;color:var(--ff-muted);font-size:.9rem}.back-link{color:var(--ff-accent);text-decoration:none;font-size:.85rem}.muted{color:var(--ff-muted)}.search-bar{display:flex;gap:.5rem;margin-bottom:1rem;max-width:480px}.search-bar input{flex:1;min-width:0;padding:.6rem .75rem;border-radius:8px;border:1px solid var(--ff-border);background:var(--ff-surface);color:var(--ff-text)}.table-wrap{overflow-x:auto;border:1px solid var(--ff-border);border-radius:var(--ff-radius)}.data-table{width:100%;border-collapse:collapse;font-size:.9rem}.data-table th,.data-table td{padding:.65rem .85rem;text-align:left;border-bottom:1px solid var(--ff-border)}.data-table th{background:var(--ff-surface);color:var(--ff-muted);font-weight:600;white-space:nowrap}.data-table tbody tr:hover{background:#ffffff08}.data-table tbody tr.row--selected{background:#3b82f614}.data-table tbody tr.row--selected:hover{background:#3b82f61f}.data-table .col-check{width:36px;padding-left:.75rem;padding-right:.25rem}.data-table .col-check input[type=checkbox]{width:15px;height:15px;cursor:pointer;accent-color:var(--ff-accent)}.data-table .col-num{width:36px;color:var(--ff-muted);font-size:.78rem;text-align:center;padding-right:.5rem}.data-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.data-table th.sortable:hover{color:var(--ff-text)}.data-table th.sortable .sort-icon{display:inline-block;margin-left:.3rem;opacity:.4;font-size:.7rem}.data-table th.sortable.sort-asc .sort-icon,.data-table th.sortable.sort-desc .sort-icon{opacity:1;color:var(--ff-accent)}.bulk-action-bar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:1rem;padding:.6rem 1rem;background:var(--ff-accent);border-radius:var(--ff-radius);margin-bottom:.75rem;box-shadow:0 2px 8px #00000059;animation:slideDown .15s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.bulk-action-count{color:#fff;font-size:.88rem;font-weight:600;white-space:nowrap}.bulk-action-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 5px;border-radius:999px;background:#ffffff40;font-size:.78rem;font-weight:700;margin-right:.15rem}.bulk-action-buttons{display:flex;gap:.4rem;flex-wrap:wrap;margin-left:auto}.bulk-action-buttons .btn-sm{padding:.3rem .75rem;font-size:.82rem;border-radius:var(--ff-radius);border:1px solid rgba(255,255,255,.3);background:#ffffff1f;color:#fff;cursor:pointer;font-weight:600;transition:background .1s}.bulk-action-buttons .btn-sm:hover{background:#ffffff38}.bulk-action-buttons .btn-danger{background:#e855554d;border-color:#e8555580}.bulk-action-buttons .btn-danger:hover{background:#e8555573}.bulk-action-clear{opacity:.8;font-size:.78rem!important}.view-toggle{display:flex;border:1px solid var(--ff-border);border-radius:var(--ff-radius);overflow:hidden}.view-toggle-btn{padding:.3rem .65rem;background:none;border:none;color:var(--ff-muted);cursor:pointer;font-size:.82rem;transition:background .1s,color .1s;display:flex;align-items:center;gap:.3rem}.view-toggle-btn:first-child{border-right:1px solid var(--ff-border)}.view-toggle-btn.active{background:var(--ff-accent);color:var(--ff-bg);font-weight:600}.link-button{background:none;border:none;color:var(--ff-accent);cursor:pointer;font:inherit;padding:0;text-align:left}.row-actions{display:flex;gap:.35rem;justify-content:flex-end;white-space:nowrap}.btn-sm{padding:.35rem .55rem;font-size:.8rem}.btn-danger-text{color:#f87171}.btn-danger{background:#dc2626}.btn-danger:hover:not(:disabled){background:#b91c1c}.crm-form textarea{padding:.65rem .75rem;border-radius:8px;border:1px solid var(--ff-border);background:var(--ff-bg);color:var(--ff-text);font:inherit;resize:vertical}.detail-grid{display:grid;grid-template-columns:1fr;gap:1.25rem}.detail-grid--split{grid-template-columns:repeat(2,minmax(0,1fr));max-width:none}@media(max-width:900px){.detail-grid--split{grid-template-columns:1fr}}@media(max-width:768px){.app-shell{flex-direction:column}.app-sidebar{width:100%;flex-direction:row;flex-wrap:wrap;align-items:center}.app-shell--sidebar-collapsed .app-sidebar{width:100%;padding:.75rem 1rem}.app-shell--sidebar-collapsed .app-signout{display:none}.app-nav{flex-direction:row;flex-wrap:wrap}.app-signout{margin-top:0}.detail-grid--split{grid-template-columns:1fr}.page-header{flex-direction:column}.app-main{padding-bottom:calc(4.5rem + env(safe-area-inset-bottom,0px))}.app-mobile-bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;border-top:1px solid var(--ff-border);background:var(--ff-surface);padding:.35rem .25rem calc(.35rem + env(safe-area-inset-bottom,0px));gap:.15rem;justify-content:space-around}.app-mobile-bottom-nav-link{flex:1;min-height:44px;display:flex;align-items:center;justify-content:center;border-radius:8px;color:var(--ff-muted);font-size:.68rem;font-weight:600;text-align:center;padding:.25rem .15rem}.app-mobile-bottom-nav-link.active,.app-mobile-bottom-nav-link:hover{color:var(--ff-text);background:#3b82f61f}}.app-mobile-bottom-nav{display:none}.detail-card{background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:1.25rem 1.5rem}.detail-card h2{margin:0 0 .5rem;font-size:1.05rem;font-weight:600;letter-spacing:-.01em}.detail-card h3{margin:0 0 .5rem;font-size:.95rem;font-weight:600}.detail-card>.page-subtitle,.detail-card>.muted:first-of-type{margin-bottom:1rem;line-height:1.5}.detail-card a:not(.btn-primary):not(.btn-ghost):not(.btn-danger){color:var(--ff-accent);text-decoration:none}.detail-card a:not(.btn-primary):not(.btn-ghost):not(.btn-danger):hover{text-decoration:underline}.detail-list{display:grid;grid-template-columns:auto 1fr;gap:.35rem 1rem;margin:0;font-size:.9rem}.detail-list dt{color:var(--ff-muted)}.detail-list dd{margin:0}.notes-block{white-space:pre-wrap;font-size:.9rem;color:var(--ff-muted)}.activity-form{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.activity-form textarea{padding:.6rem;border-radius:8px;border:1px solid var(--ff-border);background:var(--ff-bg);color:var(--ff-text);font:inherit}.activity-list{list-style:none;margin:0;padding:0}.activity-list li{padding:.65rem 0;border-top:1px solid var(--ff-border);font-size:.9rem}.activity-list p{margin:.35rem 0 0;color:var(--ff-muted)}.activity-meta{display:block;font-size:.75rem;color:var(--ff-muted);margin-top:.15rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#0f1419b8;display:flex;align-items:center;justify-content:center;padding:1rem}.modal-panel{width:100%;max-width:420px;max-height:min(90dvh,640px);display:flex;flex-direction:column;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);box-shadow:0 24px 64px #00000073}.modal-panel--wide{max-width:640px}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.85rem 1rem;background:#166534;color:#fff}.modal-header h2{margin:0;font-size:1rem;font-weight:600}.modal-close{background:transparent;border:none;color:#fff;font-size:1.5rem;line-height:1;cursor:pointer;padding:0 .25rem}.modal-body{padding:1rem 1.25rem;overflow-x:hidden;overflow-y:auto;flex:1 1 auto;min-height:0;font-size:.9rem;-webkit-overflow-scrolling:touch}.modal-body:has(select:focus),.modal-body:has(select:active){overflow:visible}.modal-footer{display:flex;justify-content:flex-end;gap:.5rem;padding:.75rem 1rem;border-top:1px solid var(--ff-border)}.kanban-page{display:flex;flex-direction:column;min-height:calc(100dvh - 4rem);min-width:0;overflow-x:clip}.kanban-board{flex:1;min-height:0;min-width:0;display:flex;flex-direction:column;overflow-x:clip}.kanban{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:.75rem;min-width:0;overflow-x:clip;flex:1;min-height:min(520px,calc(100dvh - 14rem));padding-bottom:.35rem;align-items:stretch;scrollbar-width:thin;scrollbar-color:var(--ff-border) transparent}.kanban::-webkit-scrollbar{height:6px}.kanban::-webkit-scrollbar-track{background:transparent}.kanban::-webkit-scrollbar-thumb{background:var(--ff-border);border-radius:999px}.kanban-column{background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);min-height:100%;min-width:0;display:flex;flex-direction:column}.contract-signed-files-card{margin-top:1rem}.section-heading-row,.signed-file-group-header,.signed-file-actions{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.signed-file-groups,.signed-file-version-list{list-style:none;padding:0;margin:0}.signed-file-groups{display:grid;gap:.75rem}.signed-file-group{border:1px solid var(--ff-border);border-radius:10px;padding:.75rem;background:#0f141959}.signed-file-group-header p{margin:.25rem 0 0}.signed-file-version-list{display:grid;gap:.35rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--ff-border)}.signed-file-version-list li{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}.signed-file-version-list .is-current a{color:var(--ff-accent);font-weight:600}.signed-contract-modal-copy{display:grid;gap:.85rem}.signed-file-dropzone input{border-style:dashed}.kanban-column-header{padding:.75rem;border-bottom:1px solid var(--ff-border)}.kanban-column-header h2{margin:0;font-size:.85rem;font-weight:600}.kanban-meta{font-size:.75rem;color:var(--ff-muted)}.kanban-cards{padding:.5rem;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:.5rem;min-height:80px}.kanban-card{background:var(--ff-bg);border:1px solid var(--ff-border);border-radius:8px;padding:.65rem;cursor:grab;min-width:0;overflow-wrap:anywhere}.kanban-card--dragging{opacity:.5}.kanban-card-title{background:none;border:none;color:var(--ff-text);font:inherit;font-weight:600;text-align:left;padding:0;cursor:pointer;width:100%;overflow-wrap:anywhere}.kanban-card-sub{margin:.25rem 0 0;font-size:.8rem;color:var(--ff-muted);overflow-wrap:anywhere}.kanban-card-value{margin:.35rem 0 0;font-size:.85rem;color:var(--ff-accent)}.kanban-card-actions{display:flex;gap:.35rem;margin-top:.5rem}.page-header-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.callout{margin:0 0 1rem;padding:.75rem 1rem;background:color-mix(in srgb,var(--ff-accent) 12%,transparent);border:1px solid color-mix(in srgb,var(--ff-accent) 35%,var(--ff-border));border-radius:var(--ff-radius);font-size:.9rem}.modal-field{display:flex;flex-direction:column;gap:.35rem;margin-top:1rem;font-size:.9rem}.modal-field input{padding:.5rem .65rem;border:1px solid var(--ff-border);border-radius:8px;background:var(--ff-bg);color:var(--ff-text)}.toolbar{margin-bottom:1rem}.toolbar select{padding:.45rem .65rem;border:1px solid var(--ff-border);border-radius:8px;background:var(--ff-bg);color:var(--ff-text)}.badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;text-transform:capitalize;background:var(--ff-surface);border:1px solid var(--ff-border)}.badge--draft{color:var(--ff-muted)}.badge--sent{color:var(--ff-accent)}.badge--accepted{color:#0a7a3e}.badge--rejected,.badge--overdue{color:#b42318}.badge--paid{color:#0a7a3e}.alert-banner{padding:1rem 1.1rem;border-radius:var(--ff-radius);margin-bottom:1.25rem;border:1px solid var(--ff-border);color:var(--ff-text)}.alert-banner strong{color:var(--ff-text)}.alert-banner--danger{background:color-mix(in srgb,#b42318 14%,var(--ff-surface));border-color:color-mix(in srgb,#b42318 40%,var(--ff-border))}.alert-banner--info{background:color-mix(in srgb,var(--ff-accent) 12%,var(--ff-surface));border-color:color-mix(in srgb,var(--ff-accent) 35%,var(--ff-border))}.alert-banner-list{margin:.5rem 0;padding-left:1.1rem;font-size:.9rem}.alert-banner-list a{color:var(--ff-accent);text-decoration:none}.alert-banner-list a:hover{text-decoration:underline}.alert-banner-link{font-size:.85rem;color:var(--ff-accent)}.alert-digest{margin-bottom:1.25rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius);background:var(--ff-surface);overflow:hidden}.alert-digest-header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.35rem .75rem;padding:.85rem 1.1rem;border-bottom:1px solid var(--ff-border);background:color-mix(in srgb,var(--ff-accent) 6%,var(--ff-surface))}.alert-digest-header strong{font-size:.95rem}.alert-digest details{border-bottom:1px solid var(--ff-border)}.alert-digest details:last-child{border-bottom:none}.alert-digest summary{cursor:pointer;padding:.75rem 1.1rem;font-size:.9rem;font-weight:600;list-style:none;display:flex;align-items:center;gap:.5rem}.alert-digest summary::-webkit-details-marker{display:none}.alert-digest summary:before{content:"▸";font-size:.75rem;color:var(--ff-muted);transition:transform .15s ease}.alert-digest details[open] summary:before{transform:rotate(90deg)}.alert-digest-group--danger summary{background:color-mix(in srgb,#b42318 10%,var(--ff-surface))}.alert-digest-group--warn summary{background:color-mix(in srgb,#b54708 8%,var(--ff-surface))}.alert-digest details .alert-banner-list{margin:0;padding:0 1.1rem .85rem 1.75rem}.alert-digest details .alert-banner-link{display:inline-block;padding:0 1.1rem .85rem}.settings-links{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.85rem}.settings-sections{display:grid;gap:1.75rem}.settings-section-title{margin:0 0 .85rem;padding-bottom:.45rem;border-bottom:1px solid var(--ff-border);font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:color-mix(in srgb,var(--ff-text) 78%,var(--ff-muted))}.settings-link-card{display:flex;align-items:flex-start;gap:.85rem;padding:1rem 1.1rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius);background:var(--ff-surface);color:inherit;text-decoration:none;transition:border-color .15s ease,background .15s ease}.settings-link-glyph{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:.65rem;background:color-mix(in srgb,var(--ff-accent) 12%,transparent);color:var(--ff-accent);font-size:.92rem;font-weight:700;flex-shrink:0;text-transform:uppercase;letter-spacing:.02em}.settings-link-body{min-width:0}.settings-link-card:hover{border-color:var(--ff-accent);background:var(--ff-surface-2)}.settings-link-card strong{display:block;font-size:.95rem}.settings-link-body>span{display:block;margin-top:.25rem;font-size:.85rem;color:var(--ff-muted)}.theme-options{display:grid;gap:.75rem}.theme-option{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.75rem;align-items:flex-start;padding:.85rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius);background:var(--ff-surface-2);cursor:pointer}.theme-option:has(input:checked){border-color:var(--ff-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--ff-accent) 20%,transparent)}.theme-option input{margin-top:.2rem}.theme-option span{display:grid;gap:.2rem}.theme-option small{color:var(--ff-muted);line-height:1.4}.theme-preview{display:flex;align-items:center;justify-content:space-between;gap:1rem}.theme-preview h2{margin:.15rem 0 .25rem}.status-pill{display:inline-flex;align-items:center;width:fit-content;border:1px solid color-mix(in srgb,var(--ff-accent) 35%,var(--ff-border));border-radius:999px;padding:.2rem .55rem;background:color-mix(in srgb,var(--ff-accent) 10%,var(--ff-surface));color:var(--ff-text);font-size:.78rem;font-weight:600}.status-pill--muted{border-color:var(--ff-border);background:var(--ff-surface-2);color:var(--ff-muted)}.check-row{display:flex;align-items:flex-start;gap:.5rem;margin:.75rem 0}.crm-share-panel{margin-top:.5rem}.crm-share-contact{border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:1rem;margin:.75rem 0;background:var(--ff-surface)}.crm-share-contact-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.5rem}.crm-share-contact-meta{margin:0 0 .75rem}.crm-share-contact-edit{border:none;padding:0;margin:0;display:grid;gap:.75rem}.crm-share-warning{color:var(--ff-red, #dc2626);font-size:.9rem;margin:.5rem 0}.form-actions-row{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}.form-actions-row .btn-primary{margin-left:auto}.portal-project-list{list-style:none;margin:0;padding:0;display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}a.portal-project-card,.portal-project-card{display:block;padding:1.15rem 1.25rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius);background:var(--ff-surface);text-decoration:none;color:var(--ff-text);transition:border-color .15s ease,background .15s ease,transform .15s ease}a.portal-project-card:hover{border-color:var(--ff-accent);background:var(--ff-surface-2);transform:translateY(-1px)}.portal-project-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:.35rem}.portal-project-card h2,.portal-project-card h3{margin:0;font-size:1.05rem;line-height:1.35}.portal-project-progress{font-size:.85rem;font-weight:700;color:var(--ff-accent);white-space:nowrap}.portal-project-location{margin:0 0 .35rem;font-size:.88rem}.portal-project-complete{margin:0 0 .65rem;font-size:.88rem;color:var(--ff-muted)}.pro-main{padding-bottom:4.5rem}@media(min-width:768px){.pro-main{padding-bottom:0}.pro-bottom-nav{display:none}}.pro-bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;justify-content:space-around;gap:.25rem;padding:.35rem .5rem calc(.35rem + env(safe-area-inset-bottom,0px));background:var(--surface-elevated, #fff);border-top:1px solid var(--border, #e5e7eb);box-shadow:0 -2px 8px #0000000f}.pro-bottom-nav-link{flex:1;text-align:center;font-size:.7rem;padding:.35rem .2rem;color:var(--text-muted, #6b7280);text-decoration:none;border-radius:6px}.pro-bottom-nav-link.active{color:var(--accent, #2563eb);font-weight:600;background:color-mix(in srgb,var(--accent, #2563eb) 12%,transparent)}.ipc-card{flex-direction:column;align-items:stretch;gap:.75rem;padding:1rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius)}.ipc-card--action{border-color:color-mix(in srgb,var(--ff-accent) 40%,var(--ff-border));background:color-mix(in srgb,var(--ff-accent) 6%,var(--ff-surface))}.ipc-card-amount{margin:.25rem 0 0;font-size:1.05rem}.ipc-card-approve{width:100%}html[dir=rtl] .portal-project-nav,html[dir=rtl] .back-link{text-align:right}html[dir=rtl] .inline-form{flex-direction:row-reverse}html[dir=rtl] .app-main,html[dir=rtl] .page-header,html[dir=rtl] .detail-card,html[dir=rtl] .modal-panel,html[dir=rtl] .form-stack,html[dir=rtl] .stack-form,html[dir=rtl] .settings-grid,html[dir=rtl] .dashboard-grid,html[dir=rtl] .crm-filters,html[dir=rtl] .kanban-page{text-align:right}html[dir=rtl] .app-sidebar-head,html[dir=rtl] .app-nav-link,html[dir=rtl] .modal-header,html[dir=rtl] .modal-footer,html[dir=rtl] .page-actions,html[dir=rtl] .resource-list-actions,html[dir=rtl] .form-actions-end,html[dir=rtl] .modal-actions{flex-direction:row-reverse}html[dir=rtl] .app-nav-link,html[dir=rtl] .btn-primary,html[dir=rtl] .btn-ghost,html[dir=rtl] .btn-danger,html[dir=rtl] .btn-danger-text,html[dir=rtl] .btn-sm,html[dir=rtl] .field-chip,html[dir=rtl] .status-pill{text-align:right}html[dir=rtl] .modal-footer,html[dir=rtl] .form-actions-end,html[dir=rtl] .modal-actions,html[dir=rtl] .page-actions{justify-content:flex-start}html[dir=rtl] .form-stack label,html[dir=rtl] .stack-form label,html[dir=rtl] .modal-body form label,html[dir=rtl] .modal-body label,html[dir=rtl] .form-inline-label{align-items:stretch;text-align:right}html[dir=rtl] input:not([type=checkbox]):not([type=radio]):not([type=email]):not([type=url]):not([type=tel]):not([type=number]):not([type=datetime-local]),html[dir=rtl] textarea,html[dir=rtl] select,html[dir=rtl] .search-input{direction:rtl;text-align:right}html[dir=rtl] input[type=email],html[dir=rtl] input[type=url],html[dir=rtl] input[type=tel],html[dir=rtl] input[type=number],html[dir=rtl] input[type=datetime-local],html[dir=rtl] input[name*=email i],html[dir=rtl] input[name*=url i],html[dir=rtl] code,html[dir=rtl] pre{direction:ltr;text-align:left}html[dir=rtl] .table-wrap,html[dir=rtl] .leads-list-wrap{direction:rtl}html[dir=rtl] .data-table th,html[dir=rtl] .data-table td,html[dir=rtl] .leads-list-wrap th,html[dir=rtl] .leads-list-wrap td,html[dir=rtl] .utilisation-table th,html[dir=rtl] .utilisation-table td{text-align:right}html[dir=rtl] .data-table .num,html[dir=rtl] .utilisation-table .num{direction:ltr;text-align:left}html[dir=rtl] .kanban-board-scroll,html[dir=rtl] .kanban--compact{direction:rtl}html[dir=rtl] .kanban-card,html[dir=rtl] .kanban-card--compact,html[dir=rtl] .lead-list-card,html[dir=rtl] .project-card{text-align:right}.kanban--compact{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.25rem}.kanban-column--compact{min-width:140px;flex:0 0 auto}.kanban-card--compact{display:block;padding:.45rem .55rem;font-size:.82rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius);text-decoration:none;color:inherit;margin-bottom:.35rem}.dashboard-mini-kanban-hint{margin-top:.5rem;font-size:.82rem}.pro-nav{display:flex;gap:.5rem;margin-bottom:1.25rem;flex-wrap:wrap}.pro-nav-link{padding:.45rem .85rem;border-radius:var(--ff-radius);border:1px solid var(--ff-border);text-decoration:none;color:inherit;font-size:.9rem}.pro-nav-link.active{background:var(--ff-accent);border-color:var(--ff-accent);color:#fff}.task-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.65rem}.task-list-item a{display:block;padding:.85rem 1rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius);background:var(--ff-surface);color:inherit;text-decoration:none}.task-list-item strong{display:block;margin-bottom:.25rem}.task-list-item span{font-size:.85rem;color:var(--ff-muted)}.portal-project-nav{display:flex;flex-wrap:nowrap;align-items:center;gap:.45rem;margin-bottom:.75rem;padding:.65rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius);background:color-mix(in srgb,var(--ff-bg) 40%,var(--ff-surface));overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.portal-project-nav .back-link{flex-shrink:0;white-space:nowrap}.portal-nav-link{padding:.4rem .75rem;border-radius:var(--ff-radius);border:1px solid var(--ff-border);text-decoration:none;color:inherit;font-size:.85rem;flex-shrink:0;white-space:nowrap}.portal-nav-link.active{background:var(--ff-accent);border-color:var(--ff-accent);color:#fff}.portal-whatsapp-btn{margin-left:.5rem;vertical-align:middle}.portal-team-list,.portal-stage-summary{list-style:none;margin:0;padding:0}.portal-stage-summary li{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid var(--ff-border)}.alert-inline--danger{background:color-mix(in srgb,var(--ff-red) 12%,var(--ff-surface))}.portal-sharing-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.alert-inline{padding:.75rem 1rem;background:color-mix(in srgb,var(--ff-accent) 12%,var(--ff-surface));border-radius:var(--ff-radius);margin-bottom:1rem}.portal-sharing-banner a{font-weight:600}.portal-sharing-actions{margin-bottom:1rem}.portal-sharing-list{list-style:none;margin:0;padding:0}.portal-sharing-row{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--ff-border)}.portal-sharing-row>div{display:flex;flex-direction:column;gap:.25rem}.portal-sharing-row-actions{display:flex;gap:.5rem;flex-shrink:0}.portal-role-picker{border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:.75rem 1rem;margin:.75rem 0}.portal-role-option{display:flex;gap:.5rem;align-items:flex-start;padding:.5rem 0}.portal-role-option span{display:flex;flex-direction:column;gap:.15rem}.portal-sharing-roles ul{list-style:none;margin:0;padding:0}.portal-sharing-roles li{padding:.5rem 0;border-bottom:1px solid var(--ff-border)}.portal-digest-card h4{margin:.75rem 0 .35rem;font-size:.95rem}.portal-digest-section ul{margin:0;padding-left:1.1rem}.portal-digest-meta{font-size:.85rem;margin-bottom:.5rem}.portal-checkbox-row{display:flex;align-items:center;gap:.5rem;margin:.35rem 0}.portal-module-toggles{margin:.75rem 0;border:1px solid var(--ff-border);border-radius:var(--ff-radius-sm, 6px);padding:.75rem}.portal-visit-link{margin:.5rem 0 1rem}.portal-visit-requests{margin-bottom:1rem}.portal-visit-status-list{list-style:none;margin:.5rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem}.portal-visit-booking{display:grid;grid-template-columns:1fr;gap:1.25rem;padding:1.25rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius, 12px);background:var(--ff-surface)}@media(min-width:900px){.portal-visit-booking{grid-template-columns:minmax(0,1.55fr) minmax(16rem,.85fr);gap:1.75rem;padding:1.5rem 1.75rem;align-items:start}}.portal-visit-booking-main{min-width:0}.portal-visit-tz{margin:0 0 1.1rem;font-size:.875rem;color:var(--ff-muted)}.portal-visit-step{margin-bottom:1.5rem}.portal-visit-step:last-child{margin-bottom:0}.portal-visit-step-title{margin:0 0 .75rem;font-size:.95rem;font-weight:650;letter-spacing:.01em;color:var(--ff-text)}.portal-visit-days{display:flex;flex-wrap:nowrap;gap:.65rem;overflow-x:auto;padding:.15rem .15rem .5rem;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.portal-visit-day-chip{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:.1rem;min-width:4.75rem;padding:.7rem .65rem .55rem;border:1px solid var(--ff-border);border-radius:14px;background:var(--ff-surface-2, color-mix(in srgb, var(--ff-surface) 92%, var(--ff-text)));color:var(--ff-text);cursor:pointer;text-align:center;transition:border-color .14s ease,background .14s ease,color .14s ease,transform .14s ease}.portal-visit-day-chip:hover{border-color:color-mix(in srgb,var(--ff-accent) 50%,var(--ff-border));transform:translateY(-1px)}.portal-visit-day-chip.active{border-color:transparent;background:var(--ff-accent);color:#fff;box-shadow:0 8px 20px color-mix(in srgb,var(--ff-accent) 35%,transparent)}.portal-visit-day-chip-weekday{font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;opacity:.8}.portal-visit-day-chip.active .portal-visit-day-chip-weekday{opacity:.92}.portal-visit-day-chip-day{font-size:1.45rem;font-weight:700;line-height:1.1}.portal-visit-day-chip-month{font-size:.78rem;font-weight:550;opacity:.85}.portal-visit-day-chip-meta{margin-top:.2rem;font-size:.68rem;opacity:.72}.portal-visit-day-chip.active .portal-visit-day-chip-meta{opacity:.9}.portal-slot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(7.25rem,1fr));gap:.6rem}.portal-slot-option{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.1rem;margin:0!important;min-height:3.4rem;padding:.7rem .55rem;border:1px solid var(--ff-border);border-radius:12px;background:var(--ff-surface-2, color-mix(in srgb, var(--ff-surface) 92%, var(--ff-text)));cursor:pointer;text-align:center;transition:border-color .14s ease,background .14s ease,color .14s ease,box-shadow .14s ease}.portal-slot-option input{position:absolute;opacity:0;pointer-events:none}.portal-slot-option-start{font-size:.95rem;font-weight:650;color:var(--ff-text)}.portal-slot-option-end{font-size:.72rem;color:var(--ff-muted)}.portal-slot-option:hover{border-color:color-mix(in srgb,var(--ff-accent) 55%,var(--ff-border))}.portal-slot-option--selected,.portal-slot-option:has(input:checked){border-color:transparent;background:var(--ff-accent);box-shadow:0 8px 18px color-mix(in srgb,var(--ff-accent) 32%,transparent)}.portal-slot-option--selected .portal-slot-option-start,.portal-slot-option:has(input:checked) .portal-slot-option-start,.portal-slot-option--selected .portal-slot-option-end,.portal-slot-option:has(input:checked) .portal-slot-option-end{color:#fff}.portal-slot-option--selected .portal-slot-option-end,.portal-slot-option:has(input:checked) .portal-slot-option-end{opacity:.88}.portal-visit-booking-aside{display:flex;flex-direction:column;gap:1.1rem;padding:1.15rem;border-radius:14px;border:1px solid var(--ff-border);background:var(--ff-surface-2, color-mix(in srgb, var(--ff-surface) 88%, var(--ff-text)))}.portal-visit-summary-value{display:flex;flex-direction:column;gap:.2rem;margin:0;font-size:1rem;line-height:1.35}.portal-visit-summary-value strong{font-size:1.05rem;font-weight:700}.portal-visit-summary-value span{color:var(--ff-muted);font-size:.92rem}.portal-visit-summary-empty{margin:0;font-size:.9rem;line-height:1.4}.portal-visit-fields{display:flex;flex-direction:column;gap:.9rem}.portal-visit-field{display:flex;flex-direction:column;gap:.35rem;margin:0}.portal-visit-field>span{font-size:.8rem;font-weight:600;color:var(--ff-muted)}.portal-visit-field input,.portal-visit-field textarea{width:100%;box-sizing:border-box;border:1px solid var(--ff-border);border-radius:10px;background:var(--ff-surface);color:var(--ff-text);padding:.7rem .8rem;font:inherit}.portal-visit-field textarea{resize:vertical;min-height:6rem}.portal-visit-field input:focus,.portal-visit-field textarea:focus{outline:2px solid color-mix(in srgb,var(--ff-accent) 55%,transparent);outline-offset:1px;border-color:var(--ff-accent)}.portal-visit-submit{width:100%;min-height:2.85rem;font-weight:650}@media(max-width:520px){.portal-visit-booking{padding:1rem}.portal-slot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.alert-inline--danger{background:color-mix(in srgb,var(--ff-danger, #b42318) 12%,var(--ff-surface));border:1px solid color-mix(in srgb,var(--ff-danger, #b42318) 35%,transparent)}.radio-row{display:flex;align-items:center;gap:.5rem;margin:.5rem 0}.portal-card-badges{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.35rem}.approval-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1rem}.resource-list-actions{display:flex;gap:.35rem;flex-wrap:wrap}.form-stack--compact{gap:.65rem;margin-bottom:1rem}.form-stack,.stack-form{display:flex;flex-direction:column;gap:.85rem;margin:0 0 1rem;min-width:0}.form-stack label,.stack-form label,.modal-body form label,.modal-body label{display:flex;flex-direction:column;gap:.4rem;font-size:.875rem;font-weight:500;color:var(--ff-text)}.form-stack input:not([type=checkbox]):not([type=radio]),.form-stack textarea,.form-stack select,.stack-form input:not([type=checkbox]):not([type=radio]),.stack-form textarea,.stack-form select,.modal-body form input:not([type=checkbox]):not([type=radio]),.modal-body form textarea,.modal-body form select,.modal-body input:not([type=checkbox]):not([type=radio]),.modal-body textarea,.modal-body select{width:100%;padding:.55rem .7rem;border-radius:8px;border:1px solid var(--ff-border);background:var(--ff-bg);color:var(--ff-text);font:inherit}.form-stack textarea,.stack-form textarea{min-height:4.5rem;resize:vertical}.form-stack--inline{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:.75rem 1rem;align-items:end}.form-stack--inline>label,.form-stack--inline>button{min-width:0}.form-stack--grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1rem;align-items:start}.form-stack--grid-2 .span-2{grid-column:1 / -1}.repeatable-list{display:flex;flex-direction:column;gap:.5rem}.repeatable-list-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem;align-items:center}.repeatable-list-row--grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr)) auto}.rich-text-field{display:grid;gap:.45rem}.rich-text-toolbar{display:flex;flex-wrap:wrap;gap:.4rem}.rich-text-editor{min-height:8rem;padding:.7rem .85rem;border:1px solid var(--ff-border);border-radius:.75rem;background:var(--ff-surface);color:var(--ff-text);line-height:1.55;outline:none}.rich-text-editor:focus{border-color:var(--ff-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--ff-accent) 18%,transparent)}.rich-text-editor blockquote{margin:.5rem 0;padding-left:.8rem;border-left:3px solid var(--ff-border);color:var(--ff-muted)}.form-label{font-size:.875rem;font-weight:600;color:var(--ff-text)}@media(max-width:640px){.form-stack--grid-2{grid-template-columns:1fr}}.form-inline-label{display:flex;flex-direction:column;gap:.35rem;font-size:.8rem;font-weight:500;min-width:10rem}.form-inline-label select{padding:.45rem .55rem;border-radius:8px;border:1px solid var(--ff-border);background:var(--ff-bg);color:var(--ff-text);font:inherit}.delegation-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.75rem 1rem;align-items:end}.delegation-form .span-full{grid-column:1 / -1}.modal-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--ff-border)}.mt-sm{margin-top:.5rem}.mt-md{margin-top:1.25rem}.form-actions-end{display:flex;align-items:flex-end;justify-content:flex-end}.form-actions-end .btn-primary{margin-top:0}.fee-lines{border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:.75rem;margin:0}.fee-line-row{display:grid;grid-template-columns:1fr 1fr minmax(6rem,8rem) auto;gap:.5rem;margin-bottom:.5rem;align-items:center}.fee-summary{font-size:.9rem;color:var(--ff-muted)}.data-table .num{text-align:right}@media(max-width:640px){.fee-line-row{grid-template-columns:1fr}}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}.project-card{display:block;padding:.6rem 1rem 1rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);color:inherit;text-decoration:none;position:relative}.project-card-health{position:absolute;top:0;left:0;right:0;height:3px;border-radius:var(--ff-radius) var(--ff-radius) 0 0;opacity:.7}.project-card:hover{border-color:var(--ff-accent)}.project-card h2{margin:0 0 .35rem;font-size:1.05rem}.project-card-sub{margin:0;font-size:.85rem;color:var(--ff-muted)}.project-card-meta{margin:.5rem 0 0;font-size:.8rem;color:var(--ff-muted)}.progress-row{display:flex;align-items:center;gap:.5rem;margin:.65rem 0;font-size:.8rem}.progress-bar{flex:1;height:6px;background:var(--ff-border);border-radius:999px;overflow:hidden}.progress-bar-fill{height:100%;background:var(--ff-accent);border-radius:999px}.progress-bar-fill--warning{background:#f59e0b}.progress-bar-fill--danger{background:#dc2626}.billing-usage-meter{display:flex;flex-direction:column;gap:.35rem;min-width:12rem}.billing-usage-meter--over .billing-usage-meter__label{color:var(--ff-danger, #dc2626)}.progress-bar-fill--over{background:repeating-linear-gradient(-45deg,#dc2626,#dc2626 6px,#b91c1c 6px,#b91c1c 12px)}.text-danger{color:var(--ff-danger, #dc2626);font-weight:600}.billing-usage-meter__label{display:flex;justify-content:space-between;gap:.75rem;font-size:.9rem}.webhook-delivery-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem;margin-bottom:.75rem}.webhook-event-search{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;min-width:min(280px,100%)}.table-pagination{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-top:.75rem}.table-pagination__actions{display:flex;align-items:center;gap:.5rem}.project-shell-body{display:flex;gap:1.25rem;align-items:flex-start}.stage-sidebar{flex:0 0 min(240px,32vw);background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:.75rem;max-height:calc(100dvh - 11rem);overflow-y:auto;position:sticky;top:.75rem}.stage-sidebar-title{margin:0 0 .5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ff-muted)}.stage-nav{display:flex;flex-direction:column;gap:.25rem}.stage-nav-link{display:flex;flex-direction:column;padding:.5rem .6rem;border-radius:8px;color:var(--ff-text);text-decoration:none;font-size:.85rem}.stage-nav-link:hover{background:color-mix(in srgb,var(--ff-accent) 8%,transparent)}.stage-nav-link.active{background:color-mix(in srgb,var(--ff-accent) 18%,transparent);font-weight:600}.stage-nav-meta{font-size:.75rem;color:var(--ff-muted);font-weight:400}.project-main{flex:1;min-width:0;width:100%}.project-shell-header{margin-bottom:1.25rem;padding:1rem 1.25rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius)}.project-shell-header-main{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem;margin-top:.35rem}.project-shell-header-main h1{margin:.25rem 0 0;font-size:1.45rem}.project-shell-header-progress-group{display:flex;flex-wrap:wrap;gap:1rem;flex:1 1 320px;justify-content:flex-end}.project-shell-header-progress{min-width:min(180px,100%);flex:0 1 220px}.progress-bar-fill--delivery{background:linear-gradient(90deg,#2563eb,#3b82f6)}.progress-bar-fill--inspection{background:linear-gradient(90deg,#0d9488,#14b8a6)}.inspection-profession-picker{display:block;padding:0 .75rem .75rem}.inspection-profession-picker .input{width:100%}.inspection-stage-nav{margin-top:.25rem}.inspection-programmes-settings{margin-bottom:1.5rem}.inspection-programme-list{list-style:none;margin:1rem 0 0;padding:0;display:flex;flex-direction:column;gap:.65rem}.inspection-programme-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.65rem 0;border-bottom:1px solid var(--ff-border)}.inspection-programme-row:last-child{border-bottom:none}.inspection-stage-page--refreshing{opacity:.72;pointer-events:none;transition:opacity .15s ease}.inspection-stage-page{display:flex;flex-direction:column;gap:1.5rem;max-width:920px}.inspection-stage-header{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;align-items:flex-end}.inspection-stage-breadcrumb{margin:0 0 .25rem;font-size:.8rem;color:var(--ff-muted);text-transform:uppercase;letter-spacing:.04em}.inspection-stage-header h2{margin:0}.inspection-stage-header-progress{min-width:160px;flex:0 1 240px}.inspection-floor-row{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin-bottom:1rem}.inspection-floor-row>span{font-size:.875rem;font-weight:600;color:var(--text-muted, #64748b)}.inspection-visit-header{margin-bottom:1rem;padding:1rem 1.25rem}.inspection-visit-header-title h3{margin:0 0 .35rem;font-size:1rem}.inspection-visit-header-title p{margin:0 0 1rem;font-size:.875rem}.inspection-visit-header-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem 1rem}.inspection-visit-header-actions{margin-top:.75rem}.inspection-stage-export-actions{display:flex;flex-wrap:wrap;gap:.35rem;justify-content:flex-end}.inspection-authority-panel{border:2px solid color-mix(in srgb,var(--accent, #2563eb) 35%,var(--ff-border))}.inspection-authority-panel-header{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem;margin-bottom:1rem}.inspection-authority-panel-header h3{margin:0 0 .25rem}.inspection-authority-status{font-size:.8rem;font-weight:600;padding:.35rem .65rem;border-radius:999px}.inspection-authority-status--ready{background:#dcfce7;color:#166534}.inspection-authority-status--pending{background:#ffedd5;color:#9a3412}.inspection-authority-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.inspection-authority-list--additional{margin-top:.75rem}.inspection-authority-more-toggle{margin-top:.75rem;border:none;background:transparent;color:var(--accent, #2563eb);font-weight:600;cursor:pointer;padding:0}.inspection-authority-row{border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:.75rem;background:var(--ff-surface-muted, #f8fafc)}.inspection-authority-row--approved{border-color:#86efac}.inspection-authority-row-check{display:flex;align-items:center;gap:.5rem;font-weight:600;margin-bottom:.5rem}.inspection-authority-row-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.5rem}.inspection-authority-row-fields label{display:flex;flex-direction:column;gap:.2rem;font-size:.75rem;font-weight:600;color:var(--ff-muted)}.inspection-authority-remarks{grid-column:1 / -1}.inspection-item-row{display:flex;flex-direction:column;gap:.35rem}.inspection-item-extras{display:grid;grid-template-columns:1fr auto;gap:.75rem;margin-left:1.65rem;padding:.5rem 0 0}.inspection-item-remarks-field{display:flex;flex-direction:column;gap:.25rem;font-size:.75rem;font-weight:600;color:var(--ff-muted)}.inspection-item-photo-field{display:flex;flex-direction:column;gap:.35rem;font-size:.75rem;font-weight:600;color:var(--ff-muted)}.inspection-item-photo-preview{display:flex;flex-direction:column;gap:.35rem;align-items:flex-start}.inspection-item-photo-preview img{max-width:120px;max-height:90px;border-radius:6px;object-fit:cover;border:1px solid var(--ff-border)}.inspection-item-photo-upload{cursor:pointer}.versioned-file-attachments{margin-top:.5rem}.versioned-file-attachments-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.versioned-file-attachments-label{font-size:.75rem;font-weight:600;color:var(--ff-muted)}.versioned-file-upload-btn{cursor:pointer}.versioned-file-upload-btn.disabled{opacity:.6;pointer-events:none}.versioned-file-empty{font-size:.85rem;margin:0}.versioned-file-groups{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.65rem}.versioned-file-group{border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:.65rem;background:var(--ff-surface-muted, #f8fafc)}.versioned-file-group-header{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.versioned-file-thumb img{width:56px;height:42px;object-fit:cover;border-radius:4px}.versioned-file-doc-icon{font-size:1.5rem}.versioned-file-group-meta{flex:1;min-width:120px;display:flex;flex-direction:column;gap:.1rem}.versioned-file-version-list{list-style:none;margin:.5rem 0 0;padding:0 0 0 1rem;font-size:.85rem;display:flex;flex-direction:column;gap:.35rem}.versioned-file-version-list li.is-current{font-weight:600}.versioned-file-remove{margin-top:.35rem}@media print{.app-nav,.stage-sidebar,.project-shell-header,.inspection-stage-export-actions,.inspection-discuss-link,.inspection-item-extras,.inspection-authority-more-toggle,.inspection-section-toggle,.inspection-tag-chips button,.inspection-visit-header-actions,.inspection-stage-nav-footer{display:none!important}.project-shell-body{display:block!important}.project-main{max-width:none!important}.inspection-stage-print-root{max-width:none}.inspection-section-body{display:block!important}.inspection-section-card{break-inside:avoid;page-break-inside:avoid}.inspection-authority-row-fields{grid-template-columns:repeat(2,1fr)}}.inspection-section-card--authority{border-color:var(--accent, #2563eb);box-shadow:inset 3px 0 0 var(--accent, #2563eb)}.inspection-sections{display:flex;flex-direction:column;gap:.75rem}.inspection-section-card{border:1px solid var(--ff-border);border-radius:var(--ff-radius);background:var(--ff-surface);overflow:hidden}.inspection-section-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.85rem 1rem;border:none;background:transparent;text-align:left;cursor:pointer;color:inherit;font:inherit}.inspection-section-toggle:hover{background:var(--ff-surface-muted, rgba(0, 0, 0, .03))}.inspection-section-toggle-main{display:flex;flex-direction:column;gap:.2rem;min-width:0}.inspection-section-name{font-weight:600}.inspection-section-meta{font-size:.8rem;color:var(--ff-muted)}.inspection-section-chevron{font-size:1.25rem;line-height:1;color:var(--ff-muted)}.inspection-section-body{padding:0 1rem 1rem;border-top:1px solid var(--ff-border)}.inspection-item-list{list-style:none;margin:.75rem 0 1rem;padding:0;display:flex;flex-direction:column;gap:.5rem}.inspection-item-checkbox,.inspection-item-measurement{display:flex;align-items:flex-start;gap:.6rem;cursor:pointer}.inspection-item-checkbox input,.inspection-item-measurement input[type=checkbox]{margin-top:.2rem}.inspection-item-task{flex:1;line-height:1.45}.inspection-item-measurement{flex-wrap:wrap}.inspection-item-value{flex:1 1 140px;min-width:120px}.inspection-section-grade-row{display:grid;grid-template-columns:minmax(160px,220px) 1fr;gap:1rem}.inspection-grade-field,.inspection-notes-field{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem}.inspection-grade-field .input,.inspection-notes-field .input{width:100%}.inspection-stage-footer{display:flex;justify-content:space-between;gap:1rem;padding-top:.5rem}.inspection-item-main{display:flex;flex-direction:column;gap:.35rem;width:100%}.inspection-discuss-link{align-self:flex-start;margin-left:1.6rem;padding:0;border:none;background:none;color:#2563eb;font-size:.85rem;cursor:pointer}.inspection-discuss-link:hover{text-decoration:underline}.inspection-tag-row{display:flex;flex-direction:column;gap:.5rem;margin:1rem 0;font-size:.85rem}.inspection-tag-chips{display:flex;flex-wrap:wrap;gap:.4rem}.inspection-tag-chip{border:1px solid var(--ff-border);background:var(--ff-surface);border-radius:999px;padding:.3rem .65rem;font-size:.78rem;cursor:pointer}.inspection-tag-chip.active{background:#dbeafe;border-color:#2563eb;color:#1d4ed8}.inspection-discussion{margin-top:1rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius);background:#f8fafc;overflow:hidden}.inspection-discussion-header{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;border-bottom:1px solid var(--ff-border);background:var(--ff-surface)}.inspection-discussion-subtitle{display:block;font-size:.8rem;color:var(--ff-muted);font-weight:400}.inspection-discussion-count{font-size:.8rem;color:var(--ff-muted)}.inspection-discussion-messages{max-height:240px;overflow-y:auto;padding:.75rem 1rem}.inspection-discussion-empty{text-align:center;padding:1.5rem 0}.inspection-discussion-message{padding:.5rem 0;border-bottom:1px solid var(--ff-border)}.inspection-discussion-message:last-child{border-bottom:none}.inspection-discussion-message-meta{display:flex;justify-content:space-between;gap:.5rem;font-size:.8rem;margin-bottom:.25rem}.inspection-discussion-message-meta time{color:var(--ff-muted)}.inspection-discussion-attachments{list-style:none;margin:.35rem 0 0;padding:0;font-size:.85rem}.inspection-discussion-compose{padding:.75rem 1rem 1rem;border-top:1px solid var(--ff-border);background:var(--ff-surface)}.inspection-discussion-compose-tools{display:flex;gap:.35rem;margin-bottom:.5rem}.btn-icon{width:2rem;height:2rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius);background:var(--ff-surface);cursor:pointer}.inspection-discussion-pending{list-style:none;margin:.35rem 0 0;padding:0;font-size:.8rem;color:var(--ff-muted)}.inspection-discussion-hint{margin:.35rem 0 0;font-size:.75rem}.inspection-discussion-compose-actions{display:flex;justify-content:flex-end;margin-top:.5rem}.inspection-discuss-modal{max-width:560px;width:min(560px,94vw)}.sr-only-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media(max-width:720px){.inspection-section-grade-row{grid-template-columns:1fr}.project-shell-header-progress-group{width:100%;justify-content:stretch}.project-shell-header-progress{flex:1 1 100%}}.project-shell-header-progress{min-width:min(220px,100%);flex:0 1 280px}.project-shell-header-progress>span{display:block;font-size:.8rem;color:var(--ff-muted);margin-bottom:.35rem}.progress-bar--lg{height:10px}.project-overview{display:flex;flex-direction:column;gap:2rem;max-width:none;width:100%}.project-overview-hero{display:flex;flex-direction:column;gap:1rem;padding:1.1rem 1.25rem;background:linear-gradient(135deg,color-mix(in srgb,var(--ff-accent) 12%,var(--ff-surface)) 0%,var(--ff-surface) 55%);border:1px solid var(--ff-border);border-radius:var(--ff-radius)}.project-overview-hero-main{display:grid;grid-template-columns:minmax(0,240px) minmax(0,1fr);gap:1.25rem;align-items:start}.project-legal-hold-banner{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin:0 0 .25rem;padding:.55rem .75rem;background:color-mix(in srgb,var(--ff-warning, #b45309) 10%,var(--ff-surface));border:1px solid color-mix(in srgb,var(--ff-warning, #b45309) 35%,var(--ff-border));border-radius:var(--ff-radius-sm, 6px)}.badge--warning{background:color-mix(in srgb,var(--ff-warning, #b45309) 18%,var(--ff-surface));color:var(--ff-warning-text, #92400e);border:1px solid color-mix(in srgb,var(--ff-warning, #b45309) 40%,transparent)}@media(max-width:800px){.project-overview-hero-main{grid-template-columns:1fr}}.project-overview-progress-head{display:flex;align-items:center;gap:.35rem;font-size:.85rem;color:var(--ff-muted);margin-bottom:.45rem}.project-overview-progress-head strong{margin-left:auto;color:var(--ff-text);font-size:1.1rem}.project-next-steps-label{display:flex;align-items:center;gap:.35rem;margin:0 0 .5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ff-muted);font-weight:600}.project-next-steps-list{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.project-next-step-card{display:block;padding:.65rem .85rem;border:1px solid var(--ff-border);border-radius:10px;background:var(--ff-bg);color:inherit;text-decoration:none;transition:border-color .15s ease,background .15s ease}.project-next-step-card:hover{border-color:var(--ff-accent);background:var(--ff-surface-2)}.project-next-step-card strong{display:block;font-size:.9rem;margin-bottom:.2rem}.project-next-step-card span{font-size:.8rem;color:var(--ff-muted);line-height:1.4}.project-overview-nav{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem;padding-top:.85rem;border-top:1px solid var(--ff-border)}.project-overview-nav-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ff-muted);margin-right:.35rem}.project-overview-nav-link,.project-overview-nav-tab{padding:.3rem .65rem;border-radius:999px;border:1px solid var(--ff-border);background:var(--ff-bg);color:var(--ff-text);text-decoration:none;font-size:.8rem;font-family:inherit;cursor:pointer}.project-overview-nav-link:hover,.project-overview-nav-tab:hover{border-color:var(--ff-accent);color:var(--ff-accent)}.project-overview-nav-tab.active{border-color:var(--ff-accent);background:color-mix(in srgb,var(--ff-accent) 12%,var(--ff-surface));color:var(--ff-accent);font-weight:600;box-shadow:inset 0 -2px 0 var(--ff-accent)}.project-overview-group{scroll-margin-top:1rem}.project-overview-group-title{margin:0 0 .35rem;font-size:1.15rem;font-weight:600}.project-overview-group-intro{margin:0 0 1rem;font-size:.9rem;max-width:52rem}.project-overview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.project-overview-span-2{grid-column:1 / -1}@media(max-width:900px){.project-overview-grid{grid-template-columns:1fr}.project-overview-span-2{grid-column:auto}}.project-overview-stack{display:flex;flex-direction:column;gap:1rem}.project-overview-anchor{scroll-margin-top:5rem}.section-header{margin-bottom:1rem}.section-header-row{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.75rem}.section-header-title{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.section-header h2{margin:0;font-size:1.05rem}.section-header-actions{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.section-intro{margin:.5rem 0 0;font-size:.88rem;line-height:1.45;max-width:48rem}.help-tip{position:relative;display:inline-flex}.help-tip-trigger{width:1.35rem;height:1.35rem;padding:0;border-radius:999px;border:1px solid var(--ff-border);background:var(--ff-surface-2);color:var(--ff-muted);font-size:.75rem;font-weight:700;cursor:pointer;line-height:1}.help-tip-trigger:hover,.help-tip-trigger[aria-expanded=true]{border-color:var(--ff-accent);color:var(--ff-accent);background:color-mix(in srgb,var(--ff-accent) 12%,var(--ff-surface))}.help-tip-panel{position:absolute;z-index:40;top:calc(100% + .35rem);left:0;min-width:min(280px,calc(100vw - 2rem));max-width:320px;padding:.65rem .75rem;border-radius:10px;border:1px solid var(--ff-border);background:var(--ff-surface);color:var(--ff-text);font-size:.82rem;line-height:1.45;box-shadow:0 12px 32px #00000059}.boq-stage-links{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}.boq-stage-link{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;padding:.65rem .85rem;border:1px solid var(--ff-border);border-radius:10px;background:var(--ff-bg);color:inherit;text-decoration:none}.boq-stage-link:hover{border-color:var(--ff-accent)}.boq-stage-link-name{font-weight:600}.boq-stage-link-meta{font-size:.8rem;color:var(--ff-muted);display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.page-header--compact h2{margin:0}.badge--phase{text-transform:capitalize}.detail-card--wide{grid-column:1 / -1}.compliance-tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0}.compliance-tab{padding:.35rem .75rem;border:1px solid var(--ff-border);border-radius:6px;background:var(--ff-bg);color:var(--ff-text);cursor:pointer;font-size:.875rem}.compliance-tab.active{background:var(--ff-accent);color:#fff;border-color:var(--ff-accent)}.module-matrix-wrap{overflow-x:auto}.module-matrix th,.module-matrix td{text-align:center;white-space:nowrap}.module-matrix th:first-child,.module-matrix td:first-child{text-align:left;min-width:12rem}.ff-switch{position:relative;display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.ff-switch--disabled{cursor:not-allowed;opacity:.45}.ff-switch--busy{opacity:.7;pointer-events:none}.ff-switch-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;padding:0;margin:0;opacity:0;border:0;cursor:inherit}.ff-switch-track{position:relative;flex-shrink:0;width:2.75rem;height:1.5rem;border-radius:999px;background:color-mix(in srgb,var(--ff-muted) 35%,var(--ff-surface));border:1px solid var(--ff-border);transition:background .15s ease,border-color .15s ease}.ff-switch--on .ff-switch-track{background:var(--ff-accent);border-color:color-mix(in srgb,var(--ff-accent) 80%,#000)}.ff-switch-thumb{position:absolute;top:2px;left:2px;width:1.125rem;height:1.125rem;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .15s ease}.ff-switch--on .ff-switch-thumb{transform:translate(1.25rem)}.ff-switch-label{font-size:.8125rem;font-weight:600;color:var(--ff-muted);min-width:1.75rem}.ff-switch--on .ff-switch-label{color:var(--ff-accent)}.ff-switch-input:focus-visible+.ff-switch-track{outline:2px solid var(--ff-accent);outline-offset:2px}.module-matrix-cell{text-align:center;vertical-align:middle}.module-matrix-cell .ff-switch{justify-content:center}.inspection-programme-row .ff-switch{flex-shrink:0}.portal-gantt{display:flex;flex-direction:column;gap:0}.portal-gantt-head,.portal-gantt-row{display:grid;grid-template-columns:minmax(10rem,14rem) minmax(0,1fr) 5rem 6.5rem;gap:.75rem;align-items:center;padding:.55rem .85rem}.portal-gantt-head{font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ff-muted);border-bottom:1px solid var(--ff-border);background:color-mix(in srgb,var(--ff-bg) 40%,var(--ff-surface))}.portal-gantt-row{border-bottom:1px solid color-mix(in srgb,var(--ff-border) 70%,transparent)}.portal-gantt-row:last-child{border-bottom:none}.portal-gantt-col-name{display:flex;flex-direction:column;gap:.15rem;min-width:0}.portal-gantt-col-name strong{font-size:.88rem;line-height:1.3}.portal-gantt-track{position:relative;height:1.5rem;background:color-mix(in srgb,var(--ff-border) 35%,var(--ff-bg));border-radius:6px;border:1px solid var(--ff-border)}.portal-gantt-bar{position:absolute;top:3px;height:calc(100% - 6px);background:var(--ff-accent);border-radius:4px;min-width:6px}.portal-gantt-pct-bar{display:inline-block;width:3rem;height:.4rem;background:var(--ff-border);border-radius:999px;vertical-align:middle;margin-right:.35rem}.portal-gantt-pct-fill{display:block;height:100%;background:var(--ff-accent);border-radius:999px}.internal-gantt-head,.internal-gantt-row{display:grid;grid-template-columns:minmax(11rem,15rem) minmax(0,1fr) 5.5rem 4.5rem 5.5rem;gap:.75rem;align-items:center;padding:.55rem .85rem}.internal-gantt-head{font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ff-muted);border-bottom:1px solid var(--ff-border);background:color-mix(in srgb,var(--ff-bg) 40%,var(--ff-surface))}.internal-gantt-row{border-bottom:1px solid color-mix(in srgb,var(--ff-border) 70%,transparent)}.internal-gantt-col-name{display:flex;flex-direction:column;gap:.15rem;min-width:0;color:var(--ff-text);text-decoration:none}.internal-gantt-col-name:hover strong{color:var(--ff-accent)}.internal-gantt-col-name strong{font-size:.88rem;line-height:1.3}.internal-gantt-track{position:relative;height:1.5rem;background:color-mix(in srgb,var(--ff-border) 35%,var(--ff-bg));border-radius:6px;border:1px solid var(--ff-border)}.internal-gantt-bar{position:absolute;top:3px;height:calc(100% - 6px);border-radius:4px;min-width:6px}.internal-gantt-bar--planned{background:color-mix(in srgb,var(--ff-accent) 55%,transparent);border:1px solid color-mix(in srgb,var(--ff-accent) 70%,var(--ff-border))}.internal-gantt-bar.is-draggable{cursor:grab}.internal-gantt-bar.is-dragging,.internal-gantt-bar.is-resizing{cursor:grabbing;opacity:.9;box-shadow:0 0 0 2px color-mix(in srgb,var(--ff-accent) 35%,transparent)}.internal-gantt-bar--actual{background:#0a7a3e;opacity:.92;z-index:1;border:1px solid color-mix(in srgb,#0a7a3e 80%,var(--ff-border))}.gantt-shell{margin-top:.75rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius);background:var(--ff-surface);overflow:hidden}.gantt-shell--portal{margin-top:1rem}.gantt-timeline-row{display:grid;grid-template-columns:minmax(11rem,15rem) minmax(0,1fr) 5.5rem;gap:.75rem;align-items:end;padding:.75rem .85rem .35rem;border-bottom:1px solid var(--ff-border);background:color-mix(in srgb,var(--ff-bg) 45%,var(--ff-surface))}.gantt-timeline-row--internal{grid-template-columns:minmax(11rem,15rem) minmax(0,1fr) 15.5rem}.gantt-timeline-row--portal{grid-template-columns:minmax(10rem,14rem) minmax(0,1fr) 11.5rem}.gantt-timeline-label{font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.gantt-timeline-track{position:relative;height:1.35rem;border-bottom:1px solid var(--ff-border)}.gantt-timeline-tick{position:absolute;bottom:.15rem;transform:translate(-50%);font-size:.68rem;color:var(--ff-muted);white-space:nowrap}.gantt-timeline-today{position:absolute;top:0;bottom:0;width:2px;transform:translate(-50%);background:#b42318;z-index:2}.gantt-timeline-today:after{content:"Today";position:absolute;top:-1rem;left:50%;transform:translate(-50%);font-size:.62rem;color:#b42318;white-space:nowrap}.gantt-phase-divider{padding:.45rem .85rem;background:color-mix(in srgb,var(--ff-bg) 55%,var(--ff-surface));border-bottom:1px solid var(--ff-border)}.gantt-stage-dates{font-size:.72rem}.gantt-legend-card{display:flex;flex-wrap:wrap;gap:.75rem 1.25rem;padding:.75rem .85rem;border-top:1px solid var(--ff-border);background:color-mix(in srgb,var(--ff-bg) 35%,var(--ff-surface))}.gantt-legend-item{display:inline-flex;align-items:center;gap:.4rem;font-size:.78rem;color:var(--ff-muted)}.gantt-legend-swatch{width:1rem;height:.55rem;border-radius:3px}.gantt-legend-swatch--planned{background:color-mix(in srgb,var(--ff-accent) 55%,transparent);border:1px solid var(--ff-accent)}.gantt-legend-swatch--actual{background:#0a7a3e}.gantt-legend-swatch--today{background:#b42318;width:2px;height:.75rem;border-radius:0}.gantt-empty{padding:1.25rem 1.5rem}.gantt-empty-hint,.gantt-hint{margin-top:.5rem;font-size:.82rem}.gantt-section{padding-bottom:.5rem}.gantt-flag{display:inline-flex;align-items:center;padding:.1rem .35rem;border-radius:4px;font-size:.68rem;font-weight:600;margin-right:.2rem}.gantt-date-nudge{margin-top:.35rem;font-size:.75rem;max-width:9rem}.auth-forgot{margin:-.25rem 0 .5rem;font-size:.875rem}.link-button{background:none;border:none;padding:0;color:var(--ff-accent);cursor:pointer;text-decoration:underline}.settings-roles-callout{margin-bottom:1.25rem;padding:1rem 1.25rem}.settings-roles-callout h2{margin:0 0 .5rem;font-size:1rem}.settings-roles-callout p{margin:0 0 .65rem;font-size:.9rem;line-height:1.45}.settings-roles-callout p:last-child{margin-bottom:0}.settings-roles-meta-block{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.settings-roles-discipline-hint{margin:0;font-size:.85rem}.inspection-role-filter-hint{display:block;margin:.25rem 0 .5rem;font-size:.85rem}.settings-roles-layout{display:grid;grid-template-columns:minmax(15rem,18rem) minmax(0,1fr);gap:1.25rem;align-items:start}.settings-roles-panel{position:sticky;top:1rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:.85rem;max-height:calc(100dvh - 8rem);overflow:auto}.settings-roles-panel-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.75rem;padding-bottom:.65rem;border-bottom:1px solid var(--ff-border)}.settings-roles-panel-head h2{margin:0;font-size:.95rem;font-weight:600}.settings-roles-count{display:inline-flex;align-items:center;justify-content:center;min-width:1.5rem;padding:.1rem .45rem;border-radius:999px;font-size:.75rem;font-weight:600;color:var(--ff-muted);background:var(--ff-bg);border:1px solid var(--ff-border)}.settings-roles-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.settings-role-btn{display:flex;width:100%;flex-direction:column;align-items:stretch;gap:.45rem;padding:.65rem .75rem;border:1px solid var(--ff-border);border-radius:10px;background:var(--ff-bg);color:var(--ff-text);cursor:pointer;text-align:left;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.settings-role-btn:hover{border-color:color-mix(in srgb,var(--ff-accent) 45%,var(--ff-border));background:var(--ff-surface-2)}.settings-role-btn.is-active{border-color:var(--ff-accent);background:color-mix(in srgb,var(--ff-accent) 14%,var(--ff-surface));box-shadow:inset 3px 0 0 var(--ff-accent)}.settings-role-btn-main{display:flex;flex-direction:column;gap:.15rem;min-width:0}.settings-role-btn-label{font-size:.9rem;font-weight:600;line-height:1.3}.settings-role-btn-key{font-size:.75rem;color:var(--ff-muted);text-transform:capitalize}.settings-role-btn-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.settings-role-perm-count{margin-left:auto;font-size:.72rem;color:var(--ff-muted)}.badge--accent{color:var(--ff-accent);border-color:color-mix(in srgb,var(--ff-accent) 35%,var(--ff-border));background:color-mix(in srgb,var(--ff-accent) 12%,var(--ff-surface))}.settings-roles-detail{min-width:0}.settings-roles-detail-card{padding:0;overflow:hidden}.settings-roles-detail-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.75rem 1rem;padding:1.25rem 1.5rem 1rem;border-bottom:1px solid var(--ff-border);background:color-mix(in srgb,var(--ff-bg) 40%,var(--ff-surface))}.settings-roles-detail-head h2{margin:0;font-size:1.15rem}.settings-roles-detail-sub{margin:.35rem 0 0;font-size:.88rem;line-height:1.45;max-width:36rem}.settings-roles-detail-actions{display:flex;gap:.5rem}.settings-roles-name-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem 1rem;padding:1rem 1.5rem;border-bottom:1px solid var(--ff-border)}.settings-roles-name-row label{flex:1;min-width:12rem}.settings-roles-perms-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem;padding:1rem 1.5rem .5rem}.settings-roles-perms-head h3{margin:0;font-size:.95rem;font-weight:600}.settings-roles-perms-head p{margin:.25rem 0 0;max-width:44rem;font-size:.85rem}.settings-roles-perm-tools{padding:0 1.5rem 1rem}.settings-roles-perm-tools label{max-width:32rem}.settings-roles-save-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1rem;padding:1rem 1.5rem 1.25rem;border-top:1px solid var(--ff-border);background:color-mix(in srgb,var(--ff-bg) 35%,var(--ff-surface))}.settings-roles-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:16rem;text-align:center;padding:2rem 1.5rem}.settings-roles-empty h2{margin:0 0 .5rem;font-size:1.05rem}.permission-matrix{display:flex;flex-direction:column;gap:.85rem;max-height:min(52vh,28rem);overflow-y:auto;margin:0;padding:0 1.5rem 1rem}.permission-matrix--compact{max-height:14rem;padding:0}.permission-group{padding:.85rem 1rem;border:1px solid var(--ff-border);border-radius:10px;background:color-mix(in srgb,var(--ff-bg) 30%,var(--ff-surface))}.permission-group-head{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;margin-bottom:.65rem}.permission-group-head h3{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ff-muted);margin:0}.permission-group-head span{flex-shrink:0;font-size:.72rem;color:var(--ff-muted)}.permission-group-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(13.5rem,1fr));gap:.35rem .75rem}.permission-check{display:flex;align-items:flex-start;gap:.5rem;font-size:.85rem;line-height:1.35;margin:0;cursor:pointer}.permission-check span{display:flex;min-width:0;flex-direction:column;gap:.15rem}.permission-check strong{font-weight:600}.permission-check small{color:var(--ff-muted);font-family:var(--ff-font-mono);font-size:.72rem;overflow-wrap:anywhere}.permission-check input{margin-top:.15rem;flex-shrink:0}.permission-check input:disabled{cursor:not-allowed;opacity:.65}.permission-empty{margin:0;padding:.85rem 1rem}.settings-role-preview{margin:0 1.5rem 1rem;padding:1rem;border:1px solid var(--ff-border);border-radius:12px;background:color-mix(in srgb,var(--ff-bg) 30%,var(--ff-surface))}.settings-role-preview-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.75rem 1rem;margin-bottom:1rem}.settings-role-preview-head h3,.settings-role-preview-grid h4{margin:0}.settings-role-preview-head p{margin:.25rem 0 0;max-width:42rem;font-size:.85rem}.settings-role-preview-grid{display:grid;grid-template-columns:minmax(12rem,.8fr) minmax(0,2.2fr);gap:1rem}.settings-role-preview-grid h4{margin-bottom:.55rem;font-size:.82rem;color:var(--ff-muted);text-transform:uppercase;letter-spacing:.05em}.settings-role-preview-tags{display:flex;flex-wrap:wrap;gap:.35rem}.settings-role-preview-modes{min-width:0}.settings-role-preview-mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.settings-role-preview-mode{min-width:0;padding:.75rem;border:1px solid color-mix(in srgb,var(--ff-border) 72%,transparent);border-radius:10px;background:color-mix(in srgb,var(--ff-bg) 42%,var(--ff-surface))}.settings-role-preview-mode header{display:flex;align-items:flex-start;justify-content:space-between;gap:.65rem;margin-bottom:.55rem}.settings-role-preview-mode header strong{font-size:.9rem}.settings-role-preview-mode p{margin:0;font-size:.82rem}.settings-role-preview-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.settings-role-preview-list li{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.55rem 0;border-top:1px solid color-mix(in srgb,var(--ff-border) 72%,transparent)}.settings-role-preview-list li:first-child{border-top:0;padding-top:0}.settings-role-preview-list span:first-child{display:flex;flex-direction:column;gap:.2rem}.settings-role-preview-list small{color:var(--ff-muted);font-size:.78rem;line-height:1.35}.settings-role-preview-list--muted strong{color:var(--ff-muted)}.settings-role-preview-missing{margin-top:.65rem;color:var(--ff-muted);font-size:.78rem}.settings-role-preview-missing summary{cursor:pointer;font-weight:600}.settings-role-preview-missing ul{margin:.5rem 0 0;padding-left:1rem}.settings-role-preview-missing li+li{margin-top:.25rem}.settings-export-card{display:flex;flex-direction:column;gap:.85rem;max-width:52rem;padding:1.25rem}.settings-export-card h2,.settings-export-card p{margin:0}.settings-export-included{display:flex;flex-wrap:wrap;gap:.4rem}.inline-check{display:inline-flex;align-items:center;gap:.45rem;margin:.25rem 0 .75rem;font-size:.9rem}.ml-sm{margin-left:.4rem}@media(max-width:900px){.settings-roles-layout{grid-template-columns:1fr}.settings-roles-panel{position:static;max-height:none}.settings-role-preview-grid,.settings-role-preview-mode-grid{grid-template-columns:1fr}}.media-visibility-select{font-size:.8rem;max-width:10rem}.roadmap-page{display:flex;flex-direction:column;gap:1.25rem}.roadmap-mobile-section{display:none}.roadmap-mobile-list{display:grid;gap:.65rem}.roadmap-mobile-stage{border:1px solid var(--ff-border);border-radius:12px;background:var(--ff-surface);overflow:hidden}.roadmap-mobile-stage summary{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.85rem;cursor:pointer;font-weight:700}.roadmap-mobile-stage-body{border-top:1px solid var(--ff-border);padding:.85rem}.roadmap-mobile-meta,.roadmap-mobile-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.roadmap-mobile-actions{margin-top:.75rem}.stage-editor-table .stage-name-input{width:100%;min-width:8rem}.stage-dates-cell{display:flex;gap:.25rem;align-items:center;flex-wrap:wrap}.stage-row--hidden{opacity:.55}.stage-create-form{display:grid;grid-template-columns:minmax(12rem,1fr) auto minmax(12rem,1fr) auto;gap:.85rem 1rem;align-items:start;margin-bottom:1.5rem;padding:1.15rem 1.25rem;background:var(--ff-surface-2, rgba(255, 255, 255, .03));border-radius:var(--ff-radius)}.stage-checklist-input{grid-column:1 / -1;min-height:3rem;resize:vertical}.stage-editor-table td,.stage-editor-table th{padding:.85rem 1rem;vertical-align:middle}.stage-editor-table tbody tr{border-bottom:1px solid var(--ff-border)}.stage-dates-cell{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;min-width:14rem}.stage-dates-cell input[type=date]{min-width:9rem}.stage-order-cell{white-space:nowrap}.stage-drag-handle{cursor:grab;margin-right:.35rem;opacity:.55;-webkit-user-select:none;user-select:none}.stage-row--dragging{opacity:.45}.stage-checklist-cell{white-space:nowrap}.search-bar--live{display:flex;align-items:center;gap:.75rem}.search-bar--live input{flex:1}.search-bar--inline{flex:1;min-width:12rem}.toolbar--split{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.search-live-hint{font-size:.85rem;white-space:nowrap}@media(max-width:768px){.roadmap-mobile-section{display:block}.gantt-section{display:none}}.compliance-rfi-actions{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:.35rem}.meeting-actions-list{list-style:disc;margin:.35rem 0 .35rem 1.25rem;padding:0;font-size:.85rem}.badge--danger{background:color-mix(in srgb,#c0392b 20%,transparent);color:#c0392b;font-size:.7rem;padding:.1rem .35rem;border-radius:3px;margin-left:.35rem}.alert-banner--warn{border-color:color-mix(in srgb,#d68910 45%,var(--ff-border));background:color-mix(in srgb,#d68910 14%,var(--ff-surface));color:var(--ff-text)}.forecast-totals{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem;font-size:.9rem}.forecast-table .forecast-row--risk{background:color-mix(in srgb,#c0392b 8%,transparent)}.utilisation-scroll{overflow-x:auto}.utilisation-table th,.utilisation-table td{font-size:.8rem;white-space:nowrap}.util-cell--green{background:color-mix(in srgb,#27ae60 18%,transparent)}.util-cell--amber{background:color-mix(in srgb,#d68910 18%,transparent)}.util-cell--red{background:color-mix(in srgb,#c0392b 18%,transparent)}.portal-checklist{list-style:none;padding:0;margin:.75rem 0 0}.portal-checklist li{padding:.35rem 0}.portal-checklist li.done{color:var(--ff-muted)}.portal-checklist-progress{height:6px;background:var(--ff-border);border-radius:3px;margin:.5rem 0 1rem;overflow:hidden}.portal-checklist-item{display:flex;align-items:center;gap:.5rem;padding:.5rem 0;border-bottom:1px solid var(--ff-border)}.portal-checklist-item--done .portal-checklist-label{color:var(--ff-muted);text-decoration:line-through}.portal-checklist-label{flex:1}.portal-settings-toggles{margin:1rem 0;padding:.75rem 0;border-top:1px solid var(--ff-border)}.finance-claim-row{flex-wrap:wrap;gap:.5rem}.tender-detail-panel{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--ff-border)}.tender-portal-page .auth-card{max-width:36rem}.compliance-panel{margin-top:.5rem}.notification-unread strong{color:var(--ff-accent)}.notification-center{position:relative}.notification-bell{position:relative;display:inline-flex;align-items:center;justify-content:center;width:2.35rem;height:2.35rem;border:1px solid var(--ff-border);border-radius:10px;background:var(--ff-bg);color:var(--ff-text);cursor:pointer;transition:border-color .15s ease,background .15s ease}.notification-bell:hover{border-color:var(--ff-accent);background:var(--ff-surface-2)}.notification-bell-icon{font-size:1rem;line-height:1}.notification-bell-badge{position:absolute;top:-.35rem;right:-.35rem;min-width:1.1rem;height:1.1rem;padding:0 .25rem;border-radius:999px;background:#b42318;color:#fff;font-size:.65rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.notification-panel{position:absolute;top:calc(100% + .5rem);right:0;width:min(22rem,calc(100vw - 2rem));max-height:min(28rem,70dvh);display:flex;flex-direction:column;border:1px solid var(--ff-border);border-radius:var(--ff-radius);background:var(--ff-surface);box-shadow:0 16px 40px #00000059;z-index:40}.notification-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.85rem 1rem;border-bottom:1px solid var(--ff-border)}.notification-panel-sub{display:block;font-size:.78rem;margin-top:.15rem}.notification-panel-body{overflow:auto;padding:.35rem 0}.notification-panel-foot{padding:.65rem 1rem;border-top:1px solid var(--ff-border);background:color-mix(in srgb,var(--ff-bg) 35%,var(--ff-surface))}.notification-view-all{font-size:.85rem;color:var(--ff-accent);text-decoration:none}.notification-view-all:hover{text-decoration:underline}.notification-list{list-style:none;margin:0;padding:0}.notification-list-item{display:flex;align-items:flex-start;gap:.65rem;width:100%;padding:.75rem 1rem;border:none;border-bottom:1px solid color-mix(in srgb,var(--ff-border) 65%,transparent);background:transparent;color:inherit;text-align:left;text-decoration:none;cursor:pointer;transition:background .12s ease}.notification-list-item:last-child{border-bottom:none}.notification-list-item:hover{background:color-mix(in srgb,var(--ff-accent) 8%,var(--ff-surface))}.notification-list-item.is-unread{background:color-mix(in srgb,var(--ff-accent) 6%,var(--ff-surface))}.notification-list-icon{flex-shrink:0;width:1.75rem;height:1.75rem;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;background:var(--ff-bg);border:1px solid var(--ff-border);font-size:.9rem}.notification-list-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem}.notification-list-title{font-size:.88rem;font-weight:600;line-height:1.35;color:var(--ff-text)}.notification-list-sub{font-size:.8rem;color:var(--ff-muted);line-height:1.35}.notification-list-time{font-size:.72rem;color:var(--ff-muted)}.notification-unread-dot{flex-shrink:0;width:.5rem;height:.5rem;margin-top:.35rem;border-radius:999px;background:var(--ff-accent)}.notification-empty{padding:1rem;text-align:center}.notification-page-card{padding:0;overflow:hidden}.dashboard-panel--notifications .notification-list-item{padding-left:0;padding-right:0}.app-topbar{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;padding:.75rem 1.5rem 0;border-bottom:1px solid var(--ff-border)}.compliance-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-top:1rem}@media(max-width:768px){.compliance-grid{grid-template-columns:1fr}}.stage-overview-list{display:flex;flex-direction:column;gap:.35rem}.stage-overview-row{display:grid;grid-template-columns:1fr auto auto auto;gap:.65rem .85rem;align-items:center;padding:.65rem .85rem;border:1px solid var(--ff-border);border-radius:10px;color:inherit;text-decoration:none;font-size:.9rem;background:var(--ff-bg)}.stage-overview-name{font-weight:600}.stage-overview-pct{font-variant-numeric:tabular-nums;font-weight:600;color:var(--ff-accent)}.stage-overview-status{font-size:.75rem;color:var(--ff-muted);text-transform:capitalize}.stage-overview-row:hover{border-color:var(--ff-accent)}.checklist{list-style:none;margin:0;padding:0}.checklist li{padding:.65rem 0;border-bottom:1px solid var(--ff-border)}.checklist li.checklist-item-block{padding:0;border-bottom:none;margin-bottom:.75rem}.checklist-item-block{display:flex;flex-direction:column;gap:0;padding:1rem 1.1rem;background:var(--ff-surface-2);border:1px solid var(--ff-border);border-radius:10px}.checklist-item-block--highlight{border-color:var(--ff-accent);background:color-mix(in srgb,var(--ff-accent) 14%,var(--ff-surface-2));box-shadow:0 0 0 3px color-mix(in srgb,var(--ff-accent) 12%,transparent)}.checklist-portal-meta{display:grid;gap:.75rem;margin-top:.85rem;padding-top:.85rem;border-top:1px solid var(--ff-border)}.checklist-portal-meta>label:not(.permission-check){display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;font-weight:500}.checklist-portal-meta>label:not(.permission-check) input{width:100%;padding:.5rem .65rem;border:1px solid var(--ff-border);border-radius:8px;background:var(--ff-bg);color:var(--ff-text);font:inherit}.checklist-tech-name{margin:0;font-size:.8rem}@media(min-width:720px){.checklist-portal-meta{grid-template-columns:1fr 1fr auto;align-items:end}.checklist-tech-name,.checklist-portal-meta>.permission-check{grid-column:1 / -1}}.checklist li:last-child{border-bottom:none}.checklist label{display:flex;align-items:flex-start;gap:.5rem;cursor:pointer}.checklist-item--done label span:first-of-type{text-decoration:line-through;color:var(--ff-muted)}.checklist-required{margin-left:.35rem;font-size:.7rem;color:var(--ff-muted)}.checklist-item--swipe{transition:transform .15s ease;touch-action:pan-y}.checklist-swipe-hint{display:block;margin-top:.25rem;font-size:.75rem}@media(min-width:768px){.checklist-swipe-hint{display:none}}.toolbar input[type=search]{flex:1;min-width:12rem;padding:.45rem .65rem;border:1px solid var(--ff-border);border-radius:8px;background:var(--ff-bg);color:var(--ff-text)}.toolbar{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}@media(max-width:900px){.project-shell-body{flex-direction:column}.stage-sidebar{flex:none;width:100%;max-height:none}}.metric-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem}.metric-card{padding:1rem 1.1rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);text-decoration:none;color:inherit;display:block}.metric-card--link{cursor:pointer;transition:border-color .15s,box-shadow .15s;text-align:left;width:100%}.metric-card--link:hover{border-color:var(--ff-accent);box-shadow:0 2px 8px color-mix(in srgb,var(--ff-accent) 15%,transparent)}.metric-card--active{border-color:var(--ff-accent);background:color-mix(in srgb,var(--ff-accent) 8%,var(--ff-surface))}.metric-card--muted{opacity:.85}.metric-label{margin:0;font-size:.8rem;color:var(--ff-muted);text-transform:uppercase;letter-spacing:.03em}.metric-value{margin:.35rem 0 .5rem;font-size:1.75rem;font-weight:600;line-height:1.1}.metric-link{font-size:.85rem;color:var(--ff-accent);text-decoration:none}.metric-hint{font-size:.75rem;color:var(--ff-muted)}.dashboard-columns{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr);gap:1.25rem;align-items:start}.dashboard-panel{background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:1rem 1.1rem;margin-bottom:1rem}.dashboard-panel-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.85rem}.dashboard-panel-header h2,.dashboard-panel>h2{margin:0;font-size:1rem}.dashboard-panel-header a{font-size:.85rem;color:var(--ff-accent);text-decoration:none;white-space:nowrap}.dashboard-aside .dashboard-panel:last-child{margin-bottom:0}.project-card h3{margin:0 0 .35rem;font-size:1.05rem}.pipeline-mini{list-style:none;margin:0;padding:0}.pipeline-mini li{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.45rem 0;border-bottom:1px solid var(--ff-border);font-size:.9rem}.pipeline-mini li:last-child{border-bottom:none}.task-list{list-style:none;margin:0;padding:0}.task-list li{border-bottom:1px solid var(--ff-border)}.task-list li:last-child{border-bottom:none}.task-list a{display:block;padding:.55rem 0;color:inherit;text-decoration:none}.task-list a strong{display:block;font-size:.9rem;margin-bottom:.15rem}.task-list a span{font-size:.8rem;color:var(--ff-muted)}.activity-list--compact li{padding:.45rem 0;border-bottom:1px solid var(--ff-border);font-size:.85rem}.activity-list--compact li:last-child{border-bottom:none}.activity-meta{display:block;margin-top:.15rem;font-size:.75rem;color:var(--ff-muted);font-weight:400}@media(max-width:900px){.dashboard-columns{grid-template-columns:1fr}}.stage-tabs{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:1rem;border-bottom:1px solid var(--ff-border);padding-bottom:.5rem}.stage-tab{padding:.45rem .85rem;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--ff-muted);font-size:.85rem;cursor:pointer}.stage-tab:hover{color:var(--ff-text);background:color-mix(in srgb,var(--ff-accent) 6%,transparent)}.stage-tab.active{color:var(--ff-text);border-color:var(--ff-border);background:var(--ff-surface)}.calendar-page-grid{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:1.25rem;align-items:start}.calendar-upcoming{min-height:280px}.calendar-filters{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem}.calendar-filters .chip-row{display:flex;flex-wrap:wrap;gap:.35rem}.calendar-filters .filter-select{padding:.3rem .6rem;border-radius:6px;border:1px solid var(--ff-border);background:var(--ff-bg);color:var(--ff-text);font-size:.82rem}.resource-list-num{display:inline-flex;align-items:center;justify-content:center;min-width:1.5rem;height:1.5rem;border-radius:50%;background:var(--ff-border);color:var(--ff-muted);font-size:.7rem;font-weight:600;flex-shrink:0;margin-top:.15rem}@media(max-width:960px){.calendar-page-grid{grid-template-columns:1fr}}.tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;margin-left:.35rem;padding:0 .35rem;border-radius:999px;font-size:.7rem;font-weight:600;background:var(--ff-accent);color:#fff}.gantt-flag--red{background:color-mix(in srgb,#dc2626 15%,transparent);color:#b91c1c}.gantt-flag--yellow{background:color-mix(in srgb,#ca8a04 15%,transparent);color:#a16207}.inline-form{display:flex;flex-wrap:wrap;gap:.5rem;align-items:flex-end;margin-bottom:1rem}.inline-form input,.inline-form textarea{flex:1;min-width:140px;padding:.5rem .65rem;border-radius:8px;border:1px solid var(--ff-border);background:var(--ff-bg);color:var(--ff-text)}.resource-list{list-style:none;margin:0;padding:0}.resource-list-item{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.85rem 0;border-bottom:1px solid var(--ff-border)}.resource-list-item--highlight{margin:.35rem 0;padding:.85rem;border:1px solid var(--ff-accent);border-radius:12px;background:color-mix(in srgb,var(--ff-accent) 14%,var(--ff-surface));box-shadow:0 0 0 3px color-mix(in srgb,var(--ff-accent) 12%,transparent)}.resource-list-item--member{flex-direction:column;align-items:stretch;padding:1rem 1.1rem;border:1px solid var(--ff-border);border-radius:10px;background:color-mix(in srgb,var(--ff-bg) 35%,var(--ff-surface));margin-bottom:.25rem}.resource-list-item--member:last-child{margin-bottom:0}.team-member-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .75rem}.team-member-head strong{font-size:.95rem}.team-member-meta{display:flex;flex-wrap:wrap;gap:.35rem .75rem;font-size:.85rem;color:var(--ff-muted);line-height:1.45}.team-member-controls{display:flex;flex-wrap:wrap;gap:.65rem 1rem;align-items:flex-end;justify-content:space-between;width:100%;margin-top:.65rem;padding-top:.75rem;border-top:1px solid var(--ff-border)}.detail-card .resource-list--cards{display:flex;flex-direction:column;gap:.75rem}.detail-card .resource-list--cards .resource-list-item{border-bottom:none;padding:0}.resource-list-main{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;min-width:0}.resource-list-item--member .resource-list-main{flex-direction:column;align-items:stretch;gap:.5rem;width:100%}.resource-list-main a.resource-list-main,a.resource-list-main{display:flex;flex-direction:column;align-items:flex-start;gap:.2rem;text-decoration:none;color:inherit;padding:.65rem 0}a.resource-list-main:hover strong{color:var(--ff-accent)}a.resource-list-main .muted{font-size:.8rem}.resource-list-item:last-child{border-bottom:none}.resource-list-item--member{border-bottom:none}.resource-list-actions{display:flex;flex-wrap:wrap;gap:.35rem}.resource-link{font-size:.85rem;color:var(--ff-accent)}.cost-summary{display:flex;flex-wrap:wrap;gap:1.5rem;margin-bottom:1rem;font-size:.9rem}.cost-summary span{display:block;color:var(--ff-muted);font-size:.75rem}.message-thread{list-style:none;margin:0 0 1rem;padding:0;max-height:320px;overflow-y:auto}.message-thread li{padding:.65rem 0;border-bottom:1px solid var(--ff-border)}.message-body{margin:0 0 .25rem;white-space:pre-wrap}.message-compose{display:flex;flex-direction:column;gap:.5rem}.message-compose textarea{width:100%;padding:.6rem .75rem;border-radius:8px;border:1px solid var(--ff-border);background:var(--ff-bg);color:var(--ff-text);resize:vertical}.badge--uploaded,.badge--approved,.badge--pending{text-transform:capitalize}.global-search{position:relative;width:min(420px,100%)}.global-search-input{width:100%;padding:.5rem .75rem;border-radius:8px;border:1px solid var(--ff-border);background:var(--ff-bg);color:var(--ff-text)}.global-search-panel{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:20;max-height:360px;overflow-y:auto;padding:.75rem;border-radius:8px;border:1px solid var(--ff-border);background:var(--ff-surface);box-shadow:0 8px 24px #0000001f}.search-group-title{margin:.5rem 0 .25rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ff-muted)}.search-group ul{list-style:none;margin:0;padding:0}.search-group li a{display:block;padding:.35rem 0;font-size:.9rem}.command-palette-backdrop{z-index:100}.command-palette{width:min(560px,calc(100vw - 2rem));max-height:min(70vh,520px);overflow-y:auto;padding:0}.command-palette-input{width:100%;padding:1rem 1.25rem;border:none;border-bottom:1px solid var(--ff-border);background:transparent;color:var(--ff-text);font-size:1rem}.command-palette-input:focus{outline:none}.command-palette-section{padding:.75rem 1.25rem}.command-palette-nav{list-style:none;margin:0;padding:0}.command-palette-nav li a{display:flex;justify-content:space-between;gap:.75rem;padding:.45rem 0;font-size:.95rem}.command-palette-hint{margin:0;padding:.65rem 1.25rem;border-top:1px solid var(--ff-border);font-size:.75rem}.command-palette-hint kbd{padding:.1rem .35rem;border-radius:4px;border:1px solid var(--ff-border);font-size:.7rem}.prebuilt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem}.prebuilt-card{display:flex;flex-direction:column;gap:.35rem}.prebuilt-clone-btn{align-self:flex-start}.report-builder-panels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;align-items:start}@media(max-width:1200px){.report-builder-panels{grid-template-columns:1fr 1fr}.report-builder-panel--preview{grid-column:1 / -1}}.report-builder-panel{display:flex;flex-direction:column;gap:.75rem;padding:.75rem;border:1px solid var(--ff-border);border-radius:8px;background:var(--ff-bg)}.report-builder-panel h3{margin:0;font-size:.95rem}.report-builder-panel--preview{min-height:240px}.report-builder-actions{display:flex;flex-wrap:wrap;gap:.5rem}.report-filters{display:flex;flex-direction:column;gap:.5rem}.report-filter-row{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.report-filter-row select,.report-filter-row input{font-size:.85rem;min-width:5rem}.boq-status-pipeline{display:flex;flex-wrap:wrap;gap:.25rem;margin:.35rem 0}.boq-status-step{font-size:.7rem;text-transform:capitalize;padding:.15rem .45rem;border-radius:999px;border:1px solid var(--ff-border);color:var(--ff-muted)}.boq-status-step--active{border-color:color-mix(in srgb,var(--ff-accent) 50%,var(--ff-border));color:var(--ff-text)}.boq-status-step--current{background:color-mix(in srgb,var(--ff-accent) 18%,transparent);border-color:var(--ff-accent);font-weight:600}.boq-line-item{flex-wrap:wrap;align-items:flex-start}.boq-line-actions{display:flex;flex-wrap:wrap;gap:.35rem}.boq-claim-actions{margin:.75rem 0;padding:.75rem;border:1px dashed var(--ff-border);border-radius:8px}.boq-claim-action-row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:.35rem}.boq-margin-card{margin:.75rem 0 1rem;padding:1rem 1.15rem;border:1px solid var(--ff-border);border-radius:10px;background:var(--ff-surface-2)}.boq-margin-card-head{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:.65rem}.boq-margin-metrics{display:grid;grid-template-columns:repeat(auto-fill,minmax(8rem,1fr));gap:.65rem 1rem;margin:0}.boq-margin-metrics dt{font-size:.75rem;color:var(--ff-muted, #666);margin:0}.boq-margin-metrics dd{margin:.15rem 0 0;font-weight:600}.boq-margin-badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600}.boq-margin-badge--on_track{background:color-mix(in srgb,#22c55e 22%,transparent);color:#86efac}.boq-margin-badge--at_risk{background:color-mix(in srgb,#eab308 22%,transparent);color:#fde047}.boq-margin-badge--critical{background:color-mix(in srgb,#ef4444 22%,transparent);color:#fca5a5}.boq-locked-badge{font-size:.75rem;padding:.15rem .45rem;border-radius:4px;background:var(--ff-border);color:var(--ff-muted, #666)}.boq-dashboard-charts{margin-top:1.25rem}.boq-dashboard-charts h3{font-size:.95rem;margin:1rem 0 .5rem}.boq-chart-bars{list-style:none;padding:0;margin:0}.boq-chart-row{display:grid;grid-template-columns:minmax(8rem,12rem) 1fr;gap:.75rem;align-items:center;margin-bottom:.5rem}.boq-chart-label{font-size:.85rem}.boq-chart-bar-group{display:flex;flex-direction:column;gap:.2rem}.boq-chart-bar{display:block;height:.45rem;border-radius:2px;min-width:2px}.boq-chart-bar--boq{background:#3b82f6}.boq-chart-bar--projected{background:#f59e0b}.boq-chart-bar--actual{background:#10b981}.boq-waterfall{list-style:none;padding:0;margin:0;display:grid;gap:.35rem}.boq-waterfall li{display:flex;justify-content:space-between;gap:1rem;font-size:.9rem}.report-builder-row{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-end;margin-bottom:1rem}.field-chips{display:flex;flex-wrap:wrap;gap:.5rem}.field-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .6rem;border-radius:6px;border:1px solid var(--ff-border);font-size:.85rem;cursor:pointer}.field-chip--active{border-color:var(--ff-accent);background:color-mix(in srgb,var(--ff-accent) 12%,transparent)}.field-order-list{list-style:none;padding:0;margin:0 0 1rem;display:flex;flex-wrap:wrap;gap:.5rem}.field-order-item{padding:.4rem .75rem;border-radius:6px;border:1px dashed var(--ff-border);background:var(--ff-bg);cursor:grab;font-size:.85rem}.field-order-item:active{cursor:grabbing}.report-save-form{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--ff-border);display:flex;flex-direction:column;gap:.75rem}.report-save-form label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem}.password-field{position:relative;display:flex;align-items:stretch}.password-field input{flex:1;padding-right:2.75rem}.password-toggle{position:absolute;right:.35rem;top:50%;transform:translateY(-50%);border:none;background:transparent;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--ff-muted);padding:.35rem;border-radius:6px;min-width:2.25rem;min-height:2.25rem}.password-toggle:hover{color:var(--ff-text);background:var(--ff-surface-2)}.password-toggle:focus-visible{outline:2px solid var(--ff-accent);outline-offset:1px}.access-denied-panel{text-align:center;padding:2rem 1.5rem}.access-denied-actions{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin-top:1rem}.portal-page{display:flex;flex-direction:column;gap:1rem}html[dir=rtl] .portal-page,html[dir=rtl] .portal-nav,html[dir=rtl] .portal-tabs{direction:rtl}html[dir=rtl] .portal-onboarding-list label{flex-direction:row-reverse;text-align:right}.portal-milestone-celebration{border-color:var(--accent, #2563eb);background:linear-gradient(135deg,rgba(37,99,235,.08),transparent)}.portal-onboarding-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.portal-onboarding-list label{display:flex;align-items:center;gap:.5rem}.portal-page-header h2{margin:0;font-size:1.35rem}.portal-page-intro{margin:.35rem 0 0;max-width:40rem;line-height:1.5}.portal-page-body{display:flex;flex-direction:column;gap:1rem}.portal-empty-card{padding:1.5rem;text-align:center}.portal-team-card h3{margin:0 0 .75rem}.portal-team-list--cards{display:flex;flex-direction:column;gap:.5rem}.portal-team-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem .85rem;border:1px solid var(--ff-border);border-radius:10px;background:color-mix(in srgb,var(--ff-bg) 35%,var(--ff-surface))}.portal-team-row strong{display:block}.portal-team-row .muted{font-size:.82rem}.portal-media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;list-style:none;margin:0;padding:0}.portal-media-card{display:flex;flex-direction:column;gap:.5rem;padding:.65rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius);background:var(--ff-surface);text-decoration:none;color:var(--ff-text);min-height:100%;transition:border-color .15s ease}.portal-media-card:hover{border-color:var(--ff-accent)}.portal-media-thumb{aspect-ratio:4 / 3;border-radius:8px;overflow:hidden;background:color-mix(in srgb,var(--ff-border) 40%,var(--ff-bg));display:flex;align-items:center;justify-content:center}.portal-media-thumb img{width:100%;height:100%;object-fit:cover}.portal-media-placeholder{font-size:2rem;opacity:.45}.portal-media-title{font-size:.88rem;font-weight:600;line-height:1.35}.portal-media-type{font-size:.75rem;text-transform:capitalize}.comms-hub-toolbar{display:flex;flex-direction:column;gap:.85rem;margin-bottom:1rem}.comms-hub-toolbar-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem}.comms-hub-profession{display:flex;flex-direction:column;gap:.35rem;min-width:12rem}.comms-hub-profession-label{font-size:.78rem;color:var(--ff-muted);text-transform:uppercase;letter-spacing:.04em}.comms-hub-profession select{min-width:14rem}.comms-hub-filters{display:flex;flex-wrap:wrap;gap:.5rem}.comms-filter-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .75rem;border:1px solid var(--ff-border);border-radius:999px;background:var(--ff-surface);font-size:.85rem;cursor:pointer}.comms-filter-chip.active{border-color:var(--ff-accent);background:color-mix(in srgb,var(--ff-accent) 12%,var(--ff-surface))}.comms-filter-count{min-width:1.25rem;padding:0 .35rem;border-radius:999px;background:color-mix(in srgb,var(--ff-accent) 18%,var(--ff-bg));font-size:.75rem;text-align:center}.comms-hub-search{width:100%;max-width:32rem}.comms-hub-viewing-note{margin:0;font-size:.88rem}.comms-hub-list-card{padding:0;overflow:hidden}.comms-hub-empty{padding:1.25rem}.comms-inbox-list{list-style:none;margin:0;padding:0}.comms-inbox-item{display:block;padding:1rem 1.25rem;border-bottom:1px solid var(--ff-border);color:inherit;text-decoration:none}.comms-inbox-item:last-child{border-bottom:none}.comms-inbox-item:hover{background:color-mix(in srgb,var(--ff-accent) 6%,var(--ff-surface))}.comms-inbox-item.is-unread{background:color-mix(in srgb,var(--ff-accent) 8%,var(--ff-surface))}.comms-inbox-item-head{display:flex;justify-content:space-between;gap:.75rem;align-items:baseline}.comms-inbox-time{font-size:.78rem;color:var(--ff-muted);white-space:nowrap}.comms-inbox-context{margin:.25rem 0 0;font-size:.82rem;color:var(--ff-muted)}.comms-inbox-preview{margin:.35rem 0 0;font-size:.92rem;line-height:1.45}.comms-inbox-sender{font-weight:600}.comms-inbox-badges{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.5rem}.comms-badge{display:inline-block;padding:.12rem .45rem;border-radius:999px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.comms-badge--inspection{background:color-mix(in srgb,var(--ff-accent) 16%,var(--ff-bg))}.comms-badge--stage{background:color-mix(in srgb,var(--ff-border) 50%,var(--ff-bg))}.comms-badge--mention{background:color-mix(in srgb,#c2410c 18%,var(--ff-bg))}.comms-badge--client{background:color-mix(in srgb,#0369a1 16%,var(--ff-bg))}.comms-hub-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:1.25rem;align-items:start}@media(max-width:768px){.comms-hub-layout{grid-template-columns:1fr}}.comms-hub-sidebar{position:sticky;top:1rem;display:flex;flex-direction:column;gap:1rem}.comms-hub-sidebar-section{background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:.75rem;display:flex;flex-direction:column;gap:.5rem}.comms-hub-sidebar-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ff-muted);margin:0}.comms-hub-profession-select{width:100%;padding:.35rem .5rem;border-radius:6px;border:1px solid var(--ff-border);background:var(--ff-bg);color:var(--ff-text);font-size:.88rem}.comms-hub-nav{background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);overflow:hidden;display:flex;flex-direction:column}.comms-hub-nav-item{display:flex;align-items:center;justify-content:space-between;padding:.65rem .85rem;background:none;border:none;border-bottom:1px solid var(--ff-border);cursor:pointer;font-size:.9rem;color:var(--ff-text);text-align:left;transition:background .1s}.comms-hub-nav-item:last-child{border-bottom:none}.comms-hub-nav-item:hover{background:color-mix(in srgb,var(--ff-accent) 6%,var(--ff-surface))}.comms-hub-nav-item--active{background:color-mix(in srgb,var(--ff-accent) 10%,var(--ff-surface));color:var(--ff-accent);font-weight:600}.comms-hub-nav-label{flex:1}.comms-hub-nav-badge{min-width:1.4rem;padding:.1rem .4rem;border-radius:999px;background:var(--ff-border);font-size:.72rem;font-weight:700;text-align:center}.comms-hub-nav-badge--unread{background:var(--ff-accent);color:#fff}.comms-hub-main{display:flex;flex-direction:column;gap:.75rem}.comms-hub-search-bar{display:flex;align-items:center;gap:.5rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:.5rem .85rem}.comms-hub-search-icon{color:var(--ff-muted);flex-shrink:0}.comms-hub-search-input{flex:1;background:none;border:none;outline:none;color:var(--ff-text);font-size:.9rem}.comms-inbox-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.comms-thread-card{display:flex;align-items:flex-start;gap:.85rem;padding:.9rem 1rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);text-decoration:none;color:inherit;position:relative;transition:border-color .15s,box-shadow .15s}.comms-thread-card:hover{border-color:var(--ff-accent);box-shadow:0 2px 8px color-mix(in srgb,var(--ff-accent) 12%,transparent)}.comms-thread-card--unread{background:color-mix(in srgb,var(--ff-accent) 5%,var(--ff-surface))}.comms-thread-unread-bar{position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--ff-accent);border-radius:var(--ff-radius) 0 0 var(--ff-radius)}.comms-thread-avatar{flex-shrink:0;width:2.25rem;height:2.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:700;color:#fff;letter-spacing:.02em}.comms-thread-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:.3rem}.comms-thread-row1{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem}.comms-thread-project{font-weight:600;font-size:.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.comms-thread-time{font-size:.75rem;color:var(--ff-muted);white-space:nowrap;flex-shrink:0}.comms-thread-row2{display:flex;align-items:center;gap:.4rem}.comms-thread-context{font-size:.8rem;color:var(--ff-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.comms-thread-preview{margin:0;font-size:.88rem;color:var(--ff-text);line-height:1.45;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",inherit}.comms-thread-sender{font-weight:600}.comms-thread-badges{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.1rem}.comms-badge--new{background:color-mix(in srgb,var(--ff-accent) 20%,var(--ff-bg));color:var(--ff-accent);font-weight:700}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.45}}.route-suspense{padding:1.5rem 1.25rem 2rem;max-width:48rem}.route-suspense-brand{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ff-muted, #6b7280);margin-bottom:1.25rem}.route-suspense-body{display:flex;flex-direction:column;gap:.75rem}.route-suspense-line{height:12px;border-radius:6px;background:var(--ff-border, #e5e7eb);animation:skeleton-pulse 1.6s ease-in-out infinite}.route-suspense-line--title{width:42%;height:18px}.route-suspense-line--short{width:28%}.route-suspense-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin-top:.5rem}.route-suspense-card{height:88px;border-radius:var(--ff-radius, 10px);border:1px solid var(--ff-border, #e5e7eb);background:var(--ff-surface, #fff);animation:skeleton-pulse 1.6s ease-in-out infinite}.page-skeleton{padding:1.5rem 1.25rem 2rem;max-width:64rem}.page-skeleton-brand{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ff-muted, #6b7280);margin-bottom:1.25rem}.page-skeleton-body{display:flex;flex-direction:column;gap:.75rem}.page-skeleton-line{height:12px;border-radius:6px;background:var(--ff-border, #e5e7eb);animation:skeleton-pulse 1.6s ease-in-out infinite}.page-skeleton-line--title{width:42%;height:18px}.page-skeleton-line--short{width:28%}.page-skeleton-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin-top:.5rem}.page-skeleton-card{height:88px;border-radius:var(--ff-radius, 10px);border:1px solid var(--ff-border, #e5e7eb);background:var(--ff-surface, #fff);animation:skeleton-pulse 1.6s ease-in-out infinite}.page-skeleton-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;margin-top:.25rem}.page-skeleton-card--metric{height:96px}.page-skeleton-panels{display:grid;grid-template-columns:1fr min(320px,36%);gap:1rem;margin-top:.5rem}.page-skeleton-panel{min-height:220px;border-radius:var(--ff-radius, 10px);border:1px solid var(--ff-border, #e5e7eb);background:var(--ff-surface, #fff);animation:skeleton-pulse 1.6s ease-in-out infinite}.page-skeleton-panel--aside{min-height:180px}.page-skeleton-table{display:flex;flex-direction:column;gap:.5rem;margin-top:.35rem}.page-skeleton-table-row{height:44px;border-radius:var(--ff-radius-sm, 8px);border:1px solid var(--ff-border, #e5e7eb);background:var(--ff-surface, #fff);animation:skeleton-pulse 1.6s ease-in-out infinite}.ff-empty-state{text-align:center;padding:clamp(1.75rem,4vw,2.5rem) 1.25rem;border:1px dashed var(--ff-border);border-radius:var(--ff-radius);background:var(--ff-surface);width:100%}.ff-empty-state__icon{display:inline-flex;width:2.75rem;height:2.75rem;align-items:center;justify-content:center;border-radius:999px;background:color-mix(in srgb,var(--ff-accent) 12%,transparent);font-size:1.15rem;margin-bottom:.65rem}.ff-empty-state__title{margin:0 0 .35rem;font-size:1rem;font-weight:600}.ff-empty-state__desc{margin:0;font-size:.9rem;max-width:36rem;margin-inline:auto}.ff-empty-state__action{margin-top:.85rem}.comms-hub-loading{display:flex;flex-direction:column;gap:.5rem}.comms-thread-skeleton{display:flex;gap:.85rem;padding:.9rem 1rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);animation:skeleton-pulse 1.6s ease-in-out infinite}.comms-thread-skeleton-avatar{width:2.25rem;height:2.25rem;border-radius:50%;background:var(--ff-border);flex-shrink:0}.comms-thread-skeleton-body{flex:1;display:flex;flex-direction:column;gap:.5rem}.comms-thread-skeleton-line{height:12px;border-radius:6px;background:var(--ff-border);width:80%}.comms-thread-skeleton-line--title{width:55%;height:14px}.comms-thread-skeleton-line--short{width:35%}.comms-hub-empty-state{text-align:center;padding:3rem 1.5rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius)}.comms-hub-empty-icon{font-size:2.5rem;margin:0 0 .75rem}.comms-hub-empty-title{font-size:1.05rem;font-weight:600;margin:0 0 .5rem}.comms-hub-empty-sub{margin:0;font-size:.9rem}.stage-messages-card{overflow:hidden}.stage-messages-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.stage-messages-count{font-size:.8rem;color:var(--ff-muted);background:color-mix(in srgb,var(--ff-border) 60%,var(--ff-bg));padding:.15rem .5rem;border-radius:999px}.stage-chat-thread{max-height:420px;overflow-y:auto;display:flex;flex-direction:column;gap:.75rem;padding:0 .25rem;margin-bottom:1rem;scroll-behavior:smooth}.stage-chat-empty{text-align:center;padding:2rem 1rem;color:var(--ff-muted)}.stage-chat-empty-icon{font-size:2rem;margin:0 0 .5rem}.stage-chat-empty-text{margin:0;font-size:.9rem}.stage-chat-bubble{display:flex;gap:.65rem;align-items:flex-start}.stage-chat-bubble--client{background:color-mix(in srgb,#0369a1 5%,var(--ff-surface));padding:.5rem;border-radius:8px;border-left:3px solid #0369a1}.stage-chat-avatar{flex-shrink:0;width:2rem;height:2rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;color:#fff}.stage-chat-content{flex:1;min-width:0}.stage-chat-meta{display:flex;align-items:center;gap:.5rem;margin-bottom:.3rem;flex-wrap:wrap}.stage-chat-sender{font-size:.85rem;font-weight:600}.stage-chat-time{font-size:.75rem;color:var(--ff-muted)}.stage-chat-client-badge{font-size:.72rem;padding:.1rem .4rem;border-radius:999px;background:color-mix(in srgb,#0369a1 15%,var(--ff-bg));color:#0369a1;font-weight:600}.stage-chat-text{margin:0;font-size:.9rem;line-height:1.55;white-space:pre-wrap;font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",inherit}.stage-chat-compose{display:flex;flex-direction:column;gap:.5rem;border-top:1px solid var(--ff-border);padding-top:.75rem}.stage-chat-input{width:100%;padding:.65rem .85rem;border-radius:8px;border:1px solid var(--ff-border);background:var(--ff-bg);color:var(--ff-text);resize:vertical;font-size:.9rem;line-height:1.5;transition:border-color .15s;font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",inherit}.stage-chat-input:focus{outline:none;border-color:var(--ff-accent)}.stage-chat-compose-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.stage-chat-client-toggle{display:flex;align-items:center;gap:.35rem;font-size:.82rem;color:var(--ff-muted);cursor:pointer}.stage-chat-compose-actions{display:flex;align-items:center;gap:.75rem}.stage-chat-hint{font-size:.75rem;color:var(--ff-muted)}.stage-chat-emoji-picker{position:relative}.stage-chat-emoji-toggle{font-size:1.05rem;line-height:1}.stage-chat-emoji-panel{position:absolute;right:0;bottom:calc(100% + .35rem);z-index:20;display:grid;grid-template-columns:repeat(5,1fr);gap:.25rem;padding:.45rem;border:1px solid var(--ff-border);border-radius:10px;background:var(--ff-surface);box-shadow:0 8px 24px #0000002e}.stage-chat-emoji-option{width:2rem;height:2rem;border:none;border-radius:6px;background:transparent;font-size:1.15rem;cursor:pointer;line-height:1}.stage-chat-emoji-option:hover{background:var(--ff-surface-2)}.calendar-type-stats{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;align-items:center}.calendar-type-stat{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;border:1px solid var(--ff-border);border-radius:999px;background:var(--ff-surface);font-size:.85rem;cursor:pointer;transition:all .15s}.calendar-type-stat:hover{border-color:var(--ff-accent)}.calendar-type-stat--active{font-weight:600}.calendar-type-count{min-width:1.2rem;padding:.05rem .3rem;border-radius:999px;background:color-mix(in srgb,var(--ff-border) 60%,var(--ff-bg));font-size:.72rem;text-align:center}.calendar-completed-badge{font-size:.82rem;color:var(--ff-green, #16a34a);padding:.3rem .75rem;border-radius:999px;background:#16a34a14}.calendar-sync-banner{display:block;padding:0;background:transparent;border:none;margin-bottom:1rem}.calendar-sync-banner .ff-empty-state{margin:0}.calendar-sync-banner--connected{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:.85rem 1rem;border:1px solid rgba(22,163,74,.3);border-radius:var(--ff-radius);background:#16a34a0d;flex-wrap:wrap}.calendar-page-grid{display:flex;flex-direction:column;gap:1rem}.calendar-form-card{margin-bottom:0}.calendar-filters-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem}.calendar-upcoming--full{margin-top:0}.calendar-event-groups{display:flex;flex-direction:column;gap:1.25rem}.calendar-day-header{font-size:.82rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ff-muted);margin:0 0 .65rem;padding-bottom:.4rem;border-bottom:1px solid var(--ff-border)}.calendar-event-cards{display:flex;flex-direction:column;gap:.5rem}.calendar-event-card{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);position:relative;overflow:hidden;transition:box-shadow .15s}.calendar-event-card:hover{box-shadow:0 2px 8px #0000000f}.calendar-event-card--highlighted{border-color:var(--ff-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--ff-accent) 25%,transparent)}.calendar-event-card--completed{opacity:.65}.calendar-event-rail{position:absolute;left:0;top:0;bottom:0;width:4px}.calendar-event-icon-box{flex-shrink:0;width:2.25rem;height:2.25rem;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:1.1rem}.calendar-event-content{flex:1;min-width:0}.calendar-event-row1{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;margin-bottom:.25rem}.calendar-event-title{font-size:.92rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.calendar-event-time{font-size:.78rem;color:var(--ff-muted);white-space:nowrap;flex-shrink:0}.calendar-event-row2{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.calendar-event-type-badge{font-size:.72rem;font-weight:600;padding:.1rem .45rem;border-radius:999px;text-transform:uppercase;letter-spacing:.04em}.calendar-event-project{font-size:.8rem;color:var(--ff-accent);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-event-project:hover{text-decoration:underline}.calendar-event-actions{display:flex;flex-direction:column;gap:.35rem;flex-shrink:0}.calendar-event-btn{width:2rem;height:2rem;border-radius:6px;border:1px solid var(--ff-border);background:var(--ff-bg);cursor:pointer;font-size:.85rem;display:flex;align-items:center;justify-content:center;transition:all .15s}.calendar-event-btn--complete:hover{background:#16a34a1f;border-color:#16a34a;color:#16a34a}.calendar-event-btn--cancel:hover{background:#ef44441a;border-color:#ef4444;color:#ef4444}.calendar-empty-state{text-align:center;padding:3rem 1.5rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius)}.calendar-empty-icon{font-size:2.5rem;margin:0 0 .75rem}.calendar-empty-title{font-size:1.05rem;font-weight:600;margin:0 0 .5rem}.calendar-skeleton-header{height:60px;border-radius:var(--ff-radius);background:var(--ff-border);margin-bottom:1rem;animation:skeleton-pulse 1.6s ease-in-out infinite}.calendar-skeleton-grid{display:flex;flex-direction:column;gap:.5rem}.calendar-skeleton-card{height:70px;border-radius:var(--ff-radius);background:var(--ff-border);animation:skeleton-pulse 1.6s ease-in-out infinite}.safety-metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1rem}.safety-metric-card{display:flex;flex-direction:column;gap:.5rem;padding:1.1rem 1.25rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);position:relative;text-align:left;cursor:default}.safety-metric-card[type=button]{cursor:pointer;transition:all .15s}.safety-metric-card[type=button]:hover{border-color:var(--ff-accent);box-shadow:0 2px 8px #0000000f}.safety-metric-card--danger{border-left:4px solid var(--ff-red, #dc2626)}.safety-metric-card--warn{border-left:4px solid var(--ff-amber, #d97706)}.safety-metric-card--safe{border-left:4px solid var(--ff-green, #16a34a)}.safety-metric-card--neutral{border-left:4px solid var(--ff-border)}.safety-metric-card--skeleton{height:100px;animation:skeleton-pulse 1.6s ease-in-out infinite}.safety-metric-icon{font-size:1.5rem;line-height:1}.safety-metric-value{font-size:2rem;font-weight:700;margin:0;line-height:1.1}.safety-metric-sub{margin:0;font-size:.78rem;color:var(--ff-muted)}.safety-loading{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.safety-filter-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.safety-filter-chip{padding:.35rem .85rem;border:1px solid var(--ff-border);border-radius:999px;background:var(--ff-surface);font-size:.85rem;cursor:pointer;transition:all .15s}.safety-filter-chip:hover{border-color:var(--ff-accent)}.safety-filter-chip--active{border-color:var(--ff-accent);background:color-mix(in srgb,var(--ff-accent) 10%,var(--ff-surface));color:var(--ff-accent);font-weight:600}.safety-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.safety-section-header h2{margin:0}.safety-incidents-table{width:100%}.safety-incidents-table .col-num{width:2.5rem;color:var(--ff-muted);font-size:.82rem}.safety-row--critical{border-left:3px solid #dc2626}.safety-row--high{border-left:3px solid #ea580c}.safety-row--medium{border-left:3px solid #d97706}.safety-row--low{border-left:3px solid #16a34a}.safety-incident-link{display:flex;flex-direction:column;gap:.2rem;text-decoration:none;color:inherit}.safety-incident-link:hover strong{color:var(--ff-accent)}.safety-incident-title{font-size:.82rem;color:var(--ff-muted)}.link-muted{color:var(--ff-muted);text-decoration:none;font-size:.85rem}.link-muted:hover{color:var(--ff-accent)}.safety-severity-badge{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.safety-status-dot{font-size:.82rem;font-weight:500}.safety-empty-state{text-align:center;padding:2.5rem 1.5rem}.safety-empty-icon{font-size:2.5rem;margin:0 0 .5rem}.safety-empty-title{font-size:1rem;font-weight:600;margin:0 0 .35rem}.safety-trend-chart{display:flex;align-items:flex-end;gap:.75rem;height:100px;padding-top:1rem}.safety-trend-bar-group{display:flex;flex-direction:column;align-items:center;gap:.3rem;flex:1}.safety-trend-bar{width:100%;max-width:40px;border-radius:4px 4px 0 0;transition:height .3s}.safety-trend-label{font-size:.68rem;color:var(--ff-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:100%}.report-category-tabs{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:1.25rem;border-bottom:1px solid var(--ff-border);padding-bottom:.75rem}.report-category-tab{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem 1rem;border:1px solid var(--ff-border);border-radius:999px;background:var(--ff-surface);font-size:.85rem;cursor:pointer;transition:all .15s}.report-category-tab:hover{border-color:var(--ff-accent)}.report-category-tab--active{border-color:var(--ff-accent);background:color-mix(in srgb,var(--ff-accent) 10%,var(--ff-surface));color:var(--ff-accent);font-weight:600}.report-category-count{padding:.05rem .4rem;border-radius:999px;background:color-mix(in srgb,var(--ff-border) 60%,var(--ff-bg));font-size:.72rem}.report-prebuilt-section{margin-bottom:1.25rem}.report-prebuilt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.85rem}.report-prebuilt-card{background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:1.1rem;display:flex;flex-direction:column;gap:.65rem;transition:border-color .15s,box-shadow .15s}.report-prebuilt-card:hover{border-color:var(--ff-accent);box-shadow:0 2px 8px #0000000f}.report-prebuilt-card-header{display:flex;align-items:flex-start;gap:.75rem}.report-prebuilt-icon{font-size:1.5rem;flex-shrink:0;line-height:1;margin-top:.1rem}.report-prebuilt-name{display:block;font-weight:600;font-size:.92rem;margin-bottom:.15rem}.report-prebuilt-entity{font-size:.75rem;color:var(--ff-muted)}.report-prebuilt-cat-badge{margin-left:auto;font-size:.68rem;padding:.1rem .45rem;border-radius:999px;background:color-mix(in srgb,var(--ff-accent) 12%,var(--ff-bg));color:var(--ff-accent);font-weight:600;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.report-prebuilt-desc{margin:0;font-size:.82rem;color:var(--ff-muted);line-height:1.45}.report-prebuilt-actions{display:flex;gap:.5rem;margin-top:auto}.report-saved-section h2{margin-bottom:1rem}.report-saved-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.75rem}.report-saved-card{background:var(--ff-bg);border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:.85rem 1rem;display:flex;flex-direction:column;gap:.5rem}.report-saved-card-header{display:flex;flex-direction:column;gap:.25rem}.report-saved-name{font-weight:600;font-size:.9rem}.report-saved-badges{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center}.report-saved-meta{margin:0;font-size:.8rem;color:var(--ff-muted)}.report-builder-section{margin-top:0}.report-builder-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.25rem}.report-builder-header h2{margin:0}.field-order-item{display:flex;align-items:center;gap:.5rem;padding:.35rem .6rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:6px;font-size:.85rem;cursor:grab}.field-order-handle{color:var(--ff-muted);cursor:grab}.field-order-remove{margin-left:auto;background:none;border:none;cursor:pointer;color:var(--ff-muted);font-size:1rem;line-height:1;padding:0}.field-order-remove:hover{color:var(--ff-red, #dc2626)}.report-preview-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:200px;gap:.5rem}.report-preview-empty-icon{font-size:2.5rem;margin:0}.list-updating-bar{margin:0 0 .75rem;padding:.35rem .75rem;font-size:.82rem;border-radius:6px;background:color-mix(in srgb,var(--ff-accent) 8%,var(--ff-surface));border:1px solid color-mix(in srgb,var(--ff-accent) 25%,var(--ff-border))}.cal-header-actions{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.cal-view-toggle{display:flex;border:1px solid var(--ff-border);border-radius:8px;overflow:hidden}.cal-view-btn{padding:.35rem .85rem;background:var(--ff-surface);border:none;font-size:.82rem;cursor:pointer;color:var(--ff-text);transition:background .15s,color .15s}.cal-view-btn:hover{background:color-mix(in srgb,var(--ff-accent) 8%,var(--ff-surface))}.cal-view-btn--active{background:var(--ff-accent);color:#fff;font-weight:600}.cal-month-section{background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:1.25rem;grid-column:1 / -1}.cal-month-section--full{grid-column:1 / -1}.cal-month-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.cal-month-title{flex:1;display:flex;align-items:baseline;gap:.5rem;font-size:1.1rem}.cal-nav-btn{padding:.35rem .75rem;background:var(--ff-bg);border:1px solid var(--ff-border);border-radius:6px;cursor:pointer;font-size:.85rem;color:var(--ff-text);transition:border-color .15s}.cal-nav-btn:hover{border-color:var(--ff-accent);color:var(--ff-accent)}.cal-month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--ff-border);border:1px solid var(--ff-border);border-radius:8px;overflow:hidden}.cal-month-dow{padding:.4rem;text-align:center;font-size:.75rem;font-weight:600;color:var(--ff-muted);background:var(--ff-bg);text-transform:uppercase;letter-spacing:.05em}.cal-month-cell{padding:.4rem;min-height:72px;background:var(--ff-surface);border:none;cursor:pointer;text-align:left;display:flex;flex-direction:column;gap:.25rem;transition:background .1s;position:relative}.cal-month-cell:hover{background:color-mix(in srgb,var(--ff-accent) 5%,var(--ff-surface))}.cal-month-cell--other{background:var(--ff-bg)}.cal-month-cell--other .cal-month-day-num{color:color-mix(in srgb,var(--ff-muted) 60%,transparent)}.cal-month-cell--today{background:color-mix(in srgb,var(--ff-accent) 6%,var(--ff-surface))}.cal-month-cell--today .cal-month-day-num{background:var(--ff-accent);color:#fff;border-radius:50%;width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-weight:700}.cal-month-cell--selected{background:color-mix(in srgb,var(--ff-accent) 12%,var(--ff-surface));outline:2px solid var(--ff-accent);outline-offset:-2px;z-index:1}.cal-month-day-num{font-size:.82rem;font-weight:500;line-height:22px;width:22px;text-align:center}.cal-month-event-dots{display:flex;flex-wrap:wrap;gap:2px;margin-top:2px}.cal-month-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.cal-month-dot-more{font-size:.65rem;color:var(--ff-muted);line-height:7px}.cal-day-panel{margin-top:1rem;background:var(--ff-bg);border:1px solid var(--ff-border);border-radius:8px;overflow:hidden}.cal-day-panel-header{display:flex;align-items:center;justify-content:space-between;padding:.65rem 1rem;background:color-mix(in srgb,var(--ff-accent) 6%,var(--ff-surface));border-bottom:1px solid var(--ff-border);font-size:.9rem}.cal-day-panel-close{background:none;border:none;cursor:pointer;color:var(--ff-muted);font-size:.85rem;padding:.1rem .3rem;border-radius:4px}.cal-day-panel-close:hover{background:var(--ff-border)}.cal-day-panel-events{display:flex;flex-direction:column}.cal-day-event-row{display:flex;align-items:center;gap:.75rem;padding:.6rem 1rem;border-bottom:1px solid var(--ff-border)}.cal-day-event-row:last-child{border-bottom:none}.cal-day-event-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.cal-day-event-info{flex:1;min-width:0}.cal-day-event-title{font-size:.88rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-day-event-meta{display:flex;gap:.75rem;align-items:center;margin-top:.15rem}.cal-day-event-time{font-size:.8rem;font-weight:600}.cal-day-event-actions{display:flex;gap:.3rem;flex-shrink:0}.report-prebuilt-card{padding:0;overflow:hidden}.report-prebuilt-top-bar{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1rem;border-bottom:1px solid var(--ff-border)}.report-prebuilt-big-icon{font-size:1.75rem;line-height:1}.report-prebuilt-body{padding:.85rem 1rem;display:flex;flex-direction:column;gap:.5rem;flex:1}.report-result-section{margin-top:0}.report-result-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.report-result-header h2{margin:0}.report-result-actions{display:flex;gap:.5rem;flex-shrink:0}.report-result-table th{white-space:nowrap}.report-sort-btn{background:none;border:none;cursor:pointer;font-weight:600;font-size:.82rem;color:inherit;padding:0;display:flex;align-items:center;gap:.2rem;white-space:nowrap}.report-sort-btn:hover{color:var(--ff-accent)}.safety-log-form{margin-bottom:1.25rem}.safety-log-form h2{margin-bottom:.75rem}.safety-project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.75rem;margin-top:.5rem}.safety-project-card{display:block;background:var(--ff-bg);border:1px solid var(--ff-border);border-radius:var(--ff-radius);padding:.85rem 1rem;text-decoration:none;color:inherit;transition:border-color .15s,box-shadow .15s}.safety-project-card:hover{border-color:var(--ff-accent);box-shadow:0 2px 8px #0000000f}.safety-project-card--has-open{border-left:3px solid var(--ff-red, #dc2626)}.safety-project-name{font-size:.9rem;font-weight:600;margin-bottom:.35rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.safety-project-stats{display:flex;gap:.6rem;align-items:center;font-size:.8rem;margin-bottom:.4rem}.safety-project-total{color:var(--ff-muted)}.safety-project-open{color:var(--ff-red, #dc2626);font-weight:600}.safety-project-clear{color:var(--ff-green, #16a34a);font-weight:600}.safety-project-sev-row{display:flex;flex-wrap:wrap;gap:.25rem}.safety-sev-pip{font-size:.68rem;padding:.08rem .4rem;border-radius:999px;font-weight:600}.column-selector{position:relative;display:inline-flex}.column-selector-panel{position:absolute;top:100%;right:0;z-index:20;min-width:12rem;margin-top:.35rem;padding:.75rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius);box-shadow:var(--ff-shadow-md)}.search-bar--live{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.token-preview{display:block;padding:.5rem .75rem;background:var(--ff-surface-muted);border-radius:var(--ff-radius-sm);font-size:.85rem;word-break:break-all}.next-activity-widget{display:flex;flex-direction:column;gap:1rem}.next-activity-row strong{display:block;margin-bottom:.25rem}.project-next-activity-banner{margin-bottom:1rem}.feature-module-toggle{align-items:flex-start;gap:.75rem}.feature-module-toggle-hint{display:block;font-size:.9rem;margin-top:.2rem}.settings-steps{margin:.5rem 0 1rem;padding-left:1.25rem}.settings-steps li{margin-bottom:.35rem}.saved-views-bar{margin-bottom:.75rem;gap:.5rem;flex-wrap:wrap}.saved-views-label{display:flex;align-items:center;gap:.5rem}.saved-views-manage{position:relative}.saved-views-list{list-style:none;margin:.5rem 0 0;padding:.5rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius);background:var(--ff-surface)}.saved-views-list li{display:flex;gap:.25rem;margin-bottom:.25rem}.pipeline-forecast{margin-bottom:1rem}.pipeline-forecast-title{font-size:.9rem;margin:0 0 .5rem}.pipeline-forecast-list{list-style:none;margin:0;padding:0}.pipeline-forecast-row{display:grid;grid-template-columns:8.5rem 1fr auto;gap:.5rem;align-items:center;margin-bottom:.35rem;font-size:.85rem}.pipeline-forecast-bar-wrap{height:.45rem;background:var(--ff-border);border-radius:999px;overflow:hidden}.pipeline-forecast-bar{display:block;height:100%;background:var(--ff-accent);border-radius:999px}.pipeline-forecast-meta{color:var(--ff-muted);white-space:nowrap}.kanban-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.35rem}.badge--score{font-size:.7rem;font-weight:700;padding:.1rem .35rem;border-radius:999px}.badge--score-low{background:#64748b26;color:var(--ff-muted)}.badge--score-medium{background:#d9770626;color:#b45309}.badge--score-high{background:#16a34a26;color:#15803d}.compliance-sla-banner{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.65rem .85rem;margin-bottom:.75rem;border-radius:var(--ff-radius);background:#d9770614;border:1px solid rgba(217,119,6,.25)}.compliance-sla-banner--danger{background:#dc262614;border-color:#dc262640}.portal-progress-scroll{display:flex;gap:.65rem;overflow-x:auto;padding-bottom:.35rem;scroll-snap-type:x mandatory}.portal-progress-thumb{flex:0 0 auto;width:9rem;height:6.5rem;border-radius:var(--ff-radius);overflow:hidden;scroll-snap-align:start;border:1px solid var(--ff-border)}.portal-progress-thumb img{width:100%;height:100%;object-fit:cover;display:block}.checkbox-grid{display:grid;gap:.35rem}.checkbox-inline{display:flex;align-items:center;gap:.4rem}.defect-markup-canvas{display:block;max-width:100%;border:1px solid var(--ff-border);border-radius:var(--ff-radius);cursor:crosshair;touch-action:none}.merge-candidate{display:flex;align-items:flex-start;gap:.5rem;cursor:pointer}.ops-shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100dvh;background:var(--ff-bg)}.ops-sidebar{border-right:1px solid var(--ff-border);padding:1.25rem .85rem;display:flex;flex-direction:column;gap:1rem;background:linear-gradient(180deg,var(--ff-surface) 0%,color-mix(in srgb,var(--ff-surface) 92%,#000) 100%);position:sticky;top:0;height:100dvh;overflow-y:auto}.ops-sidebar__brand{display:flex;flex-direction:column;gap:.2rem;padding:.15rem .65rem 1rem;border-bottom:1px solid var(--ff-border)}.ops-sidebar__brand strong{font-size:.98rem;letter-spacing:-.01em;line-height:1.3}.ops-sidebar__admin{font-size:.8rem;margin-top:.25rem;word-break:break-all}.ops-nav{display:flex;flex-direction:column;gap:.25rem}.ops-nav__link{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.6rem .75rem;border-radius:var(--ff-radius);color:var(--ff-text);text-decoration:none;font-size:.92rem;transition:background .15s}.ops-nav__link:hover{background:var(--ff-surface-2)}.ops-nav__link--active{background:color-mix(in srgb,var(--ff-accent) 16%,transparent);font-weight:600;color:var(--ff-accent)}.ops-nav__badge{min-width:1.25rem;height:1.25rem;padding:0 .35rem;border-radius:999px;background:var(--ff-danger);color:#fff;font-size:.7rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.ops-nav__back{margin-top:auto;padding:.65rem .75rem;color:var(--ff-muted);text-align:left;border:1px solid var(--ff-border);border-radius:var(--ff-radius);background:transparent;cursor:pointer}.ops-nav__back:hover{background:var(--ff-surface-2)}.ops-main{padding:clamp(1rem,2.5vw,1.75rem) clamp(1rem,2.5vw,2rem);overflow:auto;min-width:0;background:radial-gradient(ellipse 80% 40% at 100% 0%,color-mix(in srgb,var(--ff-accent) 8%,transparent),transparent 55%),var(--ff-bg)}.ops-main>.page{max-width:none;width:100%;padding:0;margin:0}.ops-main .page-header{flex-direction:column;align-items:flex-start;gap:.35rem;margin-bottom:1.35rem;padding-bottom:1rem;border-bottom:1px solid var(--ff-border)}.ops-main .page-header h1{margin:0;font-size:clamp(1.4rem,2vw,1.85rem);letter-spacing:-.02em;line-height:1.2}.ops-main .page-subtitle{margin:0;max-width:42rem;line-height:1.45}.ops-shell .input,.ops-shell input.input,.ops-shell select.input,.ops-shell .page-toolbar input:not([type=checkbox]):not([type=radio]),.ops-shell .page-toolbar select,.ops-shell .ops-global-search input,.ops-shell .ops-saved-views-label select,.ops-shell .ops-density-control select,.ops-shell .ops-sticky-filters input:not([type=checkbox]):not([type=radio]),.ops-shell .ops-sticky-filters select{box-sizing:border-box;padding:.55rem .75rem;min-height:2.5rem;border-radius:8px;border:1px solid var(--ff-border);background:var(--ff-surface-2);color:var(--ff-text);font:inherit;color-scheme:dark}.ops-shell .input::placeholder,.ops-shell input.input::placeholder,.ops-shell .page-toolbar input::placeholder,.ops-shell .ops-global-search input::placeholder,.ops-shell .ops-sticky-filters input::placeholder{color:var(--ff-muted);opacity:1}.ops-shell .input:focus,.ops-shell input.input:focus,.ops-shell select.input:focus,.ops-shell .page-toolbar input:focus,.ops-shell .page-toolbar select:focus,.ops-shell .ops-global-search input:focus,.ops-shell .ops-sticky-filters input:focus,.ops-shell .ops-sticky-filters select:focus{outline:2px solid color-mix(in srgb,var(--ff-accent) 55%,transparent);outline-offset:1px;border-color:var(--ff-accent)}.ops-shell .table-wrap{width:100%;background:var(--ff-surface);box-shadow:0 1px color-mix(in srgb,#fff 4%,transparent)}.ops-shell .data-table{width:100%}.ops-shell .detail-card{background:var(--ff-surface)}.ops-shell .btn-link{color:#93c5fd;text-underline-offset:.15em}.ops-shell .btn-link:hover{color:#bfdbfe}:root[data-theme=light] .ops-shell .input,:root[data-theme=light] .ops-shell input.input,:root[data-theme=light] .ops-shell select.input,:root[data-theme=light] .ops-shell .page-toolbar input:not([type=checkbox]):not([type=radio]),:root[data-theme=light] .ops-shell .page-toolbar select,:root[data-theme=light] .ops-shell .ops-global-search input,:root[data-theme=light] .ops-shell .ops-sticky-filters input:not([type=checkbox]):not([type=radio]),:root[data-theme=light] .ops-shell .ops-sticky-filters select{color-scheme:light;background:#fff}.ops-mobile-topbar{display:none}.ops-table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}.ops-sticky-filters{position:sticky;top:0;z-index:5;display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem;padding:.85rem 1rem;background:color-mix(in srgb,var(--ff-surface) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--ff-border);border-radius:12px;box-shadow:0 8px 24px #0000002e}.ops-sticky-filters .page-toolbar{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:.55rem}.ops-sticky-filters .page-toolbar>input[type=search],.ops-sticky-filters .page-toolbar>.input[type=search],.ops-sticky-filters .page-toolbar>input.input:first-of-type{flex:1 1 16rem;min-width:min(100%,14rem)}.ops-sticky-filters .page-toolbar>select.input,.ops-sticky-filters .page-toolbar>select{flex:0 1 11rem;min-width:9rem}.ops-sticky-filters .page-toolbar label{display:inline-flex;flex-direction:column;gap:.25rem;font-size:.75rem;font-weight:600;color:var(--ff-muted);text-transform:uppercase;letter-spacing:.04em}.ops-sticky-filters .page-toolbar label .input,.ops-sticky-filters .page-toolbar label input{text-transform:none;letter-spacing:normal;font-weight:400;min-width:9.5rem}.ops-saved-views-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding-top:.15rem;border-top:1px solid color-mix(in srgb,var(--ff-border) 70%,transparent)}.ops-saved-views-label{display:inline-flex;align-items:center;gap:.4rem;font-size:.875rem}.ops-saved-views-label select{min-width:10rem}.ops-saved-views-manage{position:relative}.ops-saved-views-list{list-style:none;margin:.35rem 0 0;padding:.35rem;display:grid;gap:.25rem;background:var(--ff-surface, #fff);border:1px solid var(--ff-border, rgba(0, 0, 0, .1));border-radius:8px;min-width:14rem}.ops-saved-views-list li{display:flex;justify-content:space-between;gap:.35rem}.ops-density-control{margin:.75rem 1rem .25rem;padding:0 .25rem}.ops-density-control label{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem}.ops-density-control select{font-size:.85rem;padding:.35rem .5rem;border-radius:6px;border:1px solid var(--ff-border, rgba(0, 0, 0, .12));background:var(--ff-surface, #fff)}html[data-ops-density=compact] .ops-main{padding:.75rem 1rem}html[data-ops-density=compact] .ops-sticky-filters{padding:.45rem .55rem;gap:.4rem}html[data-ops-density=compact] .ops-shell .data-table th,html[data-ops-density=compact] .ops-shell .data-table td{padding:.35rem .5rem;font-size:.875rem}html[data-ops-density=compact] .ops-shell .page-header h1{font-size:1.35rem;margin-bottom:.15rem}html[data-ops-density=compact] .ops-shell .page-subtitle{font-size:.85rem}html[data-ops-density=compact] .ops-shell .page-toolbar .input,html[data-ops-density=compact] .ops-shell .page-toolbar select,html[data-ops-density=compact] .ops-shell .page-toolbar button{min-height:2rem;font-size:.85rem}html[data-ops-density=compact] .ops-nav__link{padding:.4rem .75rem;font-size:.875rem}.ops-tenants-header__row{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.75rem 1rem}.ops-tenants-header__row h1{margin-bottom:.25rem}.ops-tenants-create-btn{flex:0 0 auto;min-height:2.5rem;scroll-margin-top:4.75rem}@media(max-width:900px){.ops-sticky-filters{position:static}.ops-tenants-header__row{flex-direction:column;align-items:stretch}.ops-tenants-create-btn{width:100%;min-height:2.75rem}.ops-shell .data-table tbody tr,.ops-shell .data-table tbody a{scroll-margin-top:4.75rem}}.metric-grid--compact{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.85rem}.ops-shell .metric-grid--compact{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.85rem;margin-bottom:1.15rem}.ops-shell .metric-card{background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:12px;padding:1rem 1.1rem}.ops-shell .ops-trend-grid{gap:1.25rem}.ops-admins-list-card{width:100%}.metric-grid--compact .metric-card{display:flex;flex-direction:column;gap:.35rem}.metric-grid--compact .metric-card strong{font-size:1.75rem;font-weight:700;line-height:1.1;margin:0}.ops-quick-links ul{margin:.75rem 0 0;padding:0;list-style:none;display:grid;gap:.5rem}.ops-quick-links a{display:inline-flex;align-items:center;gap:.35rem;color:var(--ff-accent);text-decoration:none;font-weight:500}.ops-quick-links a:hover{text-decoration:underline}.ops-create-form{display:grid;gap:.75rem;margin-bottom:1.25rem}.ops-create-form label{display:grid;gap:.35rem;font-size:.85rem;font-weight:500}.ops-billing-meters{display:grid;gap:.85rem;margin:.75rem 0 1rem}@media(min-width:900px){.ops-billing-meters{grid-template-columns:repeat(3,minmax(0,1fr))}}.ops-tenant-status-row{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;margin-top:.5rem}.ops-tenant-chip{display:inline-flex;align-items:center;padding:.2rem .55rem;border-radius:999px;border:1px solid var(--ff-border);background:var(--ff-surface-2, color-mix(in srgb, var(--ff-surface) 88%, var(--ff-text)));font-size:.78rem;font-weight:600}.ops-tenant-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;margin:1rem 0}@media(min-width:640px){.ops-tenant-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}}.ops-tenant-metric{display:flex;flex-direction:column;gap:.2rem;padding:.75rem .85rem;border-radius:12px;border:1px solid var(--ff-border);background:var(--ff-surface-2, color-mix(in srgb, var(--ff-surface) 90%, var(--ff-text)))}.ops-tenant-metric__value{font-size:1.2rem;font-weight:700;line-height:1.2}.ops-tenant-metric__label{font-size:.72rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--ff-muted)}.ops-tenant-rename-form{max-width:28rem}.ops-tenant-rename-form .btn-secondary{width:fit-content}.ops-tenant-card-intro{margin-top:-.25rem;margin-bottom:.85rem}.ops-override-provenance{margin:0 0 .75rem;font-size:.85rem}.ops-adjust-limits{margin-top:1.25rem;padding-top:1.1rem;border-top:1px solid var(--ff-border)}.ops-adjust-limits h3{margin:0 0 .5rem;font-size:1rem}.ops-preset-label{margin:0 0 .35rem;font-size:.8rem}.ops-subscription-form{max-width:40rem}.ops-subscription-fields{display:grid;grid-template-columns:1fr;gap:.75rem}@media(min-width:720px){.ops-subscription-fields{grid-template-columns:1fr 1fr}.ops-subscription-fields__full{grid-column:1 / -1}}.ops-tenant-actions{margin-top:.5rem}.btn-compact{padding:.35rem .7rem;font-size:.8rem;white-space:nowrap}.ops-users-table td:last-child{text-align:right}.ops-flag-row{padding:.45rem .55rem;border-radius:8px}.ops-flag-row:hover{background:color-mix(in srgb,var(--ff-accent) 8%,transparent)}.ops-tenant-flags-card{grid-column:1 / -1}@media(min-width:900px){.ops-tenant-users-card{grid-column:1 / -1}}.ops-preset-row{flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}@media(max-width:720px){.ops-billing-meters{grid-template-columns:1fr}.ops-preset-row .btn-ghost{flex:1 1 100%;text-align:center}.ops-create-form{padding-bottom:5rem}.ops-create-form .btn-primary,.ops-create-form .btn-secondary{position:relative;z-index:1}}.ops-empty-state{text-align:center;padding:clamp(2.5rem,6vw,4rem) 1.5rem;border:1px dashed var(--ff-border);border-radius:var(--ff-radius);background:var(--ff-surface);width:100%}.ops-empty-state__icon{display:inline-flex;width:3rem;height:3rem;align-items:center;justify-content:center;border-radius:999px;background:color-mix(in srgb,var(--ff-accent) 12%,transparent);font-size:1.25rem;margin-bottom:.75rem}.ops-empty-state h2{margin:0 0 .35rem;font-size:1.1rem}.ops-bulk-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.75rem 1rem;margin-bottom:1rem;border-radius:var(--ff-radius);background:color-mix(in srgb,var(--ff-accent) 10%,var(--ff-surface));border:1px solid color-mix(in srgb,var(--ff-accent) 25%,var(--ff-border))}.ops-bulk-bar__count{font-weight:600;font-size:.9rem}.ops-bulk-bar__actions{display:flex;flex-wrap:wrap;gap:.5rem;flex:1}.ops-stat-alert{margin-top:1rem;padding:.85rem 1rem;border-radius:var(--ff-radius);border:1px solid color-mix(in srgb,var(--ff-danger) 35%,var(--ff-border));background:color-mix(in srgb,var(--ff-danger) 8%,var(--ff-surface))}.ops-attention-strip{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.ops-attention-strip--clear{padding:.5rem 0}.ops-attention-chip{display:inline-flex;align-items:center;padding:.4rem .75rem;border-radius:999px;border:1px solid var(--ff-border);background:var(--ff-surface);color:inherit;text-decoration:none;font-size:.85rem;font-weight:600}.ops-attention-chip--warn{border-color:color-mix(in srgb,#f59e0b 50%,var(--ff-border));background:color-mix(in srgb,#f59e0b 12%,var(--ff-surface))}.ops-global-search{display:flex;flex-wrap:wrap;gap:.55rem;margin-bottom:1.15rem;padding:.85rem 1rem;background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:12px}.ops-global-search .input{flex:1 1 18rem;min-width:0}.ops-overview-panels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-bottom:1.25rem}@media(max-width:900px){.ops-overview-panels{grid-template-columns:1fr}}.ops-panel-header{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.ops-panel-header h2{margin:0}.ops-health-list{list-style:none;margin:0;padding:0;display:grid;gap:.55rem}.ops-trend-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.ops-trend{height:4rem;display:flex;align-items:end;gap:.25rem;margin-top:.5rem}.ops-trend__bar{flex:1;min-height:.35rem;border-radius:.2rem .2rem 0 0;background:var(--color-primary, #315efb)}.ops-metadata-list>div{display:grid;grid-template-columns:minmax(8rem,.35fr) 1fr;gap:.75rem;padding:.4rem 0;border-bottom:1px solid var(--border-color, #e5e7eb)}.ops-metadata-list dt{font-weight:600;overflow-wrap:anywhere}.ops-metadata-list dd{margin:0;overflow-wrap:anywhere}.ops-usage-badges{display:flex;flex-direction:column;align-items:flex-start;gap:.3rem;min-width:11rem}.ops-usage-badges .badge,.ops-usage-badges .ops-usage-meter-inline{white-space:nowrap}.ops-security-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));gap:1rem;margin-bottom:1rem}.ops-enrollment-banner{margin-bottom:1rem;padding:1rem 1.25rem;border:1px solid var(--color-warning, #c9a227);background:color-mix(in srgb,var(--color-warning, #c9a227) 12%,transparent);border-radius:8px}.ops-enrollment-banner .btn-primary{margin-top:.75rem}.ops-sessions-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.ops-session-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--border-subtle, rgba(0, 0, 0, .08))}.ops-session-row:last-child{border-bottom:none}.ops-security-panel{margin-bottom:1rem}.ops-security-panel .btn-primary,.ops-security-panel .btn-danger{width:auto;max-width:16rem}.ops-security-status-row{display:flex;align-items:center;gap:.75rem;margin:.75rem 0 1rem}.ops-security-label{font-weight:600}.ops-checkbox-row{display:flex;align-items:flex-start;gap:.5rem}.ops-checkbox-row input{margin-top:.2rem}.ops-cidr-textarea{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.85rem;line-height:1.45}.ops-admins-list-card .ops-panel-header{margin-bottom:.75rem}.ops-totp-setup{align-items:stretch}.totp-qr{display:flex;justify-content:center;margin:.5rem auto .75rem;padding:.75rem;width:fit-content;background:#fff;border-radius:.75rem;box-shadow:0 0 0 1px #0f172a14}.totp-qr img{display:block;border-radius:.25rem}.totp-qr--loading{background:#94a3b833;border-radius:.75rem}.ops-totp-manual{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin-bottom:.5rem}.ops-totp-manual code{word-break:break-all}.ops-security-actions{display:flex;flex-wrap:wrap;gap:.5rem .75rem;margin-top:.75rem}.ops-backup-codes-list{list-style:none;margin:.5rem 0;padding:.85rem 1rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem 1rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;background:#f8fafc;color:#0f172a;border:1px solid #cbd5e1;border-radius:.5rem;-webkit-user-select:text;user-select:text}.ops-backup-codes-list li{margin:0;color:#0f172a}.ops-backup-codes-list code{color:#0f172a;background:transparent;font-size:.95rem;font-weight:600;letter-spacing:.04em}.ops-usage-meter-inline{display:inline-flex;align-items:center;gap:.35rem;font-variant-numeric:tabular-nums;font-size:.8rem;color:var(--muted, #94a3b8)}.ops-usage-meter-inline--warning{color:#fbbf24}.ops-usage-meter-inline--critical{color:#f87171;font-weight:600}@media(max-width:900px){.ops-security-grid{grid-template-columns:1fr}}.ops-setting-card{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem}.ops-rejection-reason{border-inline-start:.25rem solid var(--danger, #b42318);padding-inline-start:.75rem}@media(max-width:640px){.ops-trend-grid{grid-template-columns:1fr}}.ops-health-pill{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em}.ops-health-pill--ok{background:color-mix(in srgb,#22c55e 18%,transparent);color:#86efac}.ops-health-pill--warn{background:color-mix(in srgb,#f59e0b 18%,transparent);color:#fcd34d}.ops-activity-list{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}.ops-activity-list__main{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.35rem .75rem}.ops-activity-list__meta{font-size:.85rem}.ops-filter-chip{margin:.35rem 0 0;font-size:.9rem}.metric-card--warn{border-color:color-mix(in srgb,#f59e0b 45%,var(--ff-border))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ops-row-checkbox{width:1rem;height:1rem;accent-color:var(--ff-accent)}.pagination-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-top:1rem}.ops-flag-list{display:grid;gap:.5rem;margin-bottom:1rem}.ops-auth-page{background:radial-gradient(ellipse at 20% 0%,#312e81 0%,transparent 50%),radial-gradient(ellipse at 80% 100%,#1e3a5f 0%,var(--ff-bg) 60%)}.auth-card--ops{border-color:color-mix(in srgb,var(--ff-accent) 35%,var(--ff-border));box-shadow:0 24px 48px #00000059,0 0 0 1px color-mix(in srgb,var(--ff-accent) 12%,transparent)}.auth-card--ops .auth-brand{color:#a5b4fc}@media(max-width:480px){.ops-auth-page{padding:1rem;align-items:flex-start;padding-top:max(1.5rem,env(safe-area-inset-top))}.auth-card--ops{margin-top:.5rem}.auth-form input,.auth-form .password-field input{font-size:16px}.btn-block{min-height:48px}}.ops-sidebar__admin{font-size:.8rem;margin-top:.25rem}@media(max-width:900px){.ops-shell{grid-template-columns:1fr}.ops-mobile-topbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;border-bottom:1px solid var(--ff-border);background:var(--ff-surface);position:sticky;top:0;z-index:20}.ops-mobile-topbar strong{font-size:.95rem}.ops-mobile-menu-btn{padding:.45rem .75rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius);background:var(--ff-bg);color:var(--ff-text);cursor:pointer;font-weight:600}.ops-sidebar{display:none;position:fixed;inset:0 auto 0 0;width:min(280px,88vw);z-index:30;height:100dvh;box-shadow:8px 0 32px #00000059}.ops-sidebar--open{display:flex}.ops-sidebar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:25;border:none;cursor:pointer}.ops-main{padding-top:0}.metric-grid--compact{grid-template-columns:repeat(2,minmax(0,1fr))}.page-toolbar{flex-direction:column;align-items:stretch}.page-toolbar .input,.page-toolbar select,.page-toolbar button{width:100%}}
