:root{color-scheme:light dark;--bg: #fbfaf8;--surface: #ffffff;--surface-sunken: #f4f2ee;--border: #e5e2dc;--border-strong: #d2cec6;--text: #191714;--muted: #6d6860;--accent: #1c5947;--accent-hover: #17493a;--accent-soft: #eaf2ee;--accent-text: #ffffff;--danger: #9e3226;--danger-soft: #fcefec;--warn: #8a6109;--warn-soft: #fbf3e2;--notice-bg: #f1f6f3;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--radius: 10px;--radius-sm: 7px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgb(25 23 20 / 5%);--shadow: 0 1px 2px rgb(25 23 20 / 5%), 0 6px 20px rgb(25 23 20 / 5%);--ring: 0 0 0 3px color-mix(in srgb, var(--accent) 28%, transparent);--page-width: 92rem;--page-gutter: 1.5rem;--prose-width: 46rem;--transition: .12s cubic-bezier(.2, 0, .3, 1)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #16171a;--surface: #1e2023;--surface-sunken: #23262a;--border: #31343a;--border-strong: #43474e;--text: #eceae6;--muted: #9a968e;--accent: #74c4a5;--accent-hover: #8ad0b5;--accent-soft: #1a2a25;--accent-text: #0d211a;--danger: #ef9a8e;--danger-soft: #2b1d1b;--warn: #d9ab4c;--warn-soft: #2a2317;--notice-bg: #1b2521;--shadow-sm: none;--shadow: none}}:root[data-theme=dark]{color-scheme:dark;--bg: #16171a;--surface: #1e2023;--surface-sunken: #23262a;--border: #31343a;--border-strong: #43474e;--text: #eceae6;--muted: #9a968e;--accent: #74c4a5;--accent-hover: #8ad0b5;--accent-soft: #1a2a25;--accent-text: #0d211a;--danger: #ef9a8e;--danger-soft: #2b1d1b;--warn: #d9ab4c;--warn-soft: #2a2317;--notice-bg: #1b2521;--shadow-sm: none;--shadow: none}:root[data-theme=light]{color-scheme:light}[hidden]{display:none!important}@media(prefers-reduced-motion:reduce){:root{--transition: 0ms}}.audit-owner-note{max-width:none}.toolbar.audit-filters{align-items:end}.audit-filters .btn{padding-block:.5rem;font-size:inherit}.audit-filters label{min-width:10rem}.audit-filters .grow{flex:1 1 18rem}.audit-list{display:grid;gap:var(--space-3)}.audit-event{padding:var(--space-4)}.audit-event-head{display:flex;justify-content:space-between;gap:var(--space-4);align-items:flex-start}.audit-event-head>div{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.audit-entity-type{color:var(--muted)}.audit-actor{margin:var(--space-1) 0 var(--space-2)}.audit-event details{border-top:1px solid var(--border);padding-top:var(--space-2)}.audit-event summary{width:fit-content;cursor:pointer;color:var(--accent);font-size:.88rem}.audit-changes{display:grid;gap:var(--space-1);margin-top:var(--space-3)}.audit-change{display:grid;grid-template-columns:minmax(9rem,.8fr) minmax(8rem,1fr) auto minmax(8rem,1fr);align-items:baseline;gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-sm);background:var(--surface-sunken)}.audit-value{overflow-wrap:anywhere}.audit-value.before{color:var(--muted);text-decoration:line-through}.audit-arrow{color:var(--muted)}.audit-created{color:var(--accent)}.audit-updated{color:var(--warn)}.audit-deleted{color:var(--danger)}.pagination{display:flex;align-items:center;justify-content:center;gap:var(--space-3);margin-top:var(--space-5)}.pagination-pages{display:flex;align-items:center;gap:var(--space-1)}.pagination-page{min-width:2.5rem;padding-inline:var(--space-2)}.pagination-page.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.pagination-ellipsis{min-width:1.5rem;text-align:center;color:var(--muted)}@media(max-width:48rem){.audit-event-head{flex-direction:column;gap:var(--space-2)}.audit-change{grid-template-columns:1fr auto 1fr}.audit-change .strong{grid-column:1 / -1}.pagination{flex-wrap:wrap}.pagination>span:not(.pagination-ellipsis){order:3;width:100%;text-align:center}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Segoe UI Variable Text,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{font-family:Segoe UI Variable Display,system-ui,-apple-system,Segoe UI,sans-serif;letter-spacing:-.015em;line-height:1.25}h1{font-size:1.45rem;font-weight:620;margin:0 0 var(--space-1)}h2{font-size:1.02rem;font-weight:600;margin:var(--space-6) 0 var(--space-3)}.card h2{font-size:.82rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 var(--space-3)}a{color:var(--accent);text-decoration-color:color-mix(in srgb,var(--accent) 35%,transparent);text-underline-offset:2px;transition:color var(--transition)}a:hover{color:var(--accent-hover);text-decoration-color:currentcolor}code{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.85em;padding:.1em .35em;background:var(--surface-sunken);border-radius:5px;word-break:break-all}.muted{color:var(--muted)}.small{font-size:.86rem}.block{display:block}.strong{font-weight:600}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.big{font-size:1.75rem;font-weight:620;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin:0 0 var(--space-1)}.negative,.warn{color:var(--danger)}.icon{width:1em;height:1em;flex:none;fill:none;stroke:currentcolor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.125em}.auth-shell{display:grid;place-items:center;min-height:100vh;padding:var(--space-5);background:radial-gradient(60rem 30rem at 50% -10%,var(--accent-soft),transparent 70%),var(--bg)}.auth-shell app-theme-toggle{position:fixed;top:var(--space-3);right:var(--space-3)}.auth-card{width:100%;max-width:25rem}.brand{display:inline-block;font-family:Segoe UI Variable Display,system-ui,sans-serif;font-size:1.5rem;font-weight:660;letter-spacing:-.03em;margin:0 0 var(--space-1);color:var(--accent);text-decoration:none}.brand.small{font-size:1.1rem}.topbar{position:sticky;top:0;z-index:10;padding:var(--space-2) 0;background:color-mix(in srgb,var(--surface) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.topbar-inner{display:flex;gap:var(--space-5);align-items:center;width:100%;max-width:var(--page-width);margin:0 auto;padding:0 var(--page-gutter)}.topbar nav{display:flex;gap:var(--space-1);overflow-x:auto;scrollbar-width:none}.topbar nav::-webkit-scrollbar{display:none}.topbar nav a{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--muted);font-size:.92rem;font-weight:500;text-decoration:none;white-space:nowrap;transition:background var(--transition),color var(--transition)}.topbar nav a:hover{background:var(--surface-sunken);color:var(--text)}.topbar nav a.active{background:var(--accent-soft);color:var(--accent)}.topbar-right{display:flex;gap:var(--space-2);align-items:center;margin-left:auto}.mobile-tabbar{display:none}.topbar-right .firm-name{max-width:14rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:var(--space-2)}.topbar-right .btn-ghost.active{background:var(--accent-soft);color:var(--accent)}@media(max-width:60rem){.topbar-right .firm-name{display:none}.topbar-inner{flex-wrap:wrap;gap:var(--space-2) var(--space-4)}.topbar nav{order:3;width:100%;padding-bottom:var(--space-1);scroll-snap-type:x proximity}.topbar nav a{scroll-snap-align:start}}@media(max-width:30rem){.topbar-right .btn .label{display:none}}@media(max-width:48rem){.topbar{padding:var(--space-2) 0}.topbar-inner{flex-wrap:nowrap}.topbar .primary-nav,.topbar-right .desktop-settings,.topbar-right .desktop-logout{display:none}.page{padding-bottom:calc(5.5rem + env(safe-area-inset-bottom))}.mobile-tabbar{position:fixed;right:0;bottom:0;left:0;z-index:30;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));padding:var(--space-1) max(var(--space-2),env(safe-area-inset-right)) calc(var(--space-1) + env(safe-area-inset-bottom)) max(var(--space-2),env(safe-area-inset-left));background:color-mix(in srgb,var(--surface) 94%,transparent);border-top:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.mobile-tab{position:relative;z-index:32;display:flex;min-width:0;min-height:3.35rem;padding:.35rem .2rem;flex-direction:column;gap:.15rem;align-items:center;justify-content:center;color:var(--muted);font:inherit;font-size:.68rem;text-decoration:none;background:transparent;border:0;border-radius:var(--radius-sm);cursor:pointer}.mobile-tab .icon{width:1.2rem;height:1.2rem}.mobile-tab.active{color:var(--accent);background:var(--accent-soft)}.mobile-menu-backdrop{position:fixed;inset:0;z-index:29;padding:0;background:#00000061;border:0}.mobile-menu-panel{position:fixed;right:var(--space-3);bottom:calc(4.25rem + env(safe-area-inset-bottom));left:var(--space-3);z-index:31;display:grid;gap:var(--space-1);padding:var(--space-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.mobile-menu-panel a,.mobile-menu-panel button{width:100%;padding:var(--space-3);color:var(--text);font:inherit;text-align:left;text-decoration:none;background:transparent;border:0;border-radius:var(--radius-sm);cursor:pointer}.mobile-menu-panel a:hover,.mobile-menu-panel a.active,.mobile-menu-panel button:hover{color:var(--accent);background:var(--accent-soft)}.mobile-menu-firm{margin:0;padding:var(--space-2) var(--space-3);overflow:hidden;color:var(--muted);font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}}.page{max-width:var(--page-width);margin:0 auto;padding:var(--space-5) var(--page-gutter) var(--space-7)}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5)}.page-head h1+p{margin:0}.page-head p,.empty,.notice,.alert,.page>p.muted,.page>p.small{max-width:var(--prose-width)}.head-actions{display:flex;gap:var(--space-2);align-items:center;flex:none}.section-tabs{display:inline-flex;gap:var(--space-1);padding:var(--space-1);margin:0 0 var(--space-5);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-sm)}.section-tabs button{min-height:2.25rem;padding:var(--space-2) var(--space-3);color:var(--muted);font:inherit;font-weight:650;cursor:pointer;background:transparent;border:0;border-radius:calc(var(--radius-sm) - 2px)}.section-tabs button:hover{color:var(--text)}.section-tabs button.active{color:var(--accent);background:var(--surface);box-shadow:var(--shadow-sm)}.toast-stack{position:fixed;right:max(var(--space-4),env(safe-area-inset-right));bottom:max(var(--space-4),env(safe-area-inset-bottom));z-index:100;display:grid;gap:var(--space-2);width:min(26rem,calc(100vw - 2 * var(--space-4)));pointer-events:none}.toast{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);pointer-events:auto}.toast-error{color:var(--danger);background:color-mix(in srgb,var(--danger-soft) 82%,var(--surface));border-color:color-mix(in srgb,var(--danger) 35%,var(--border))}.toast-close{display:inline-grid;flex:none;width:1.75rem;height:1.75rem;padding:0;color:currentColor;font:inherit;font-size:1.25rem;line-height:1;cursor:pointer;background:transparent;border:0;border-radius:50%;place-items:center}.toast-close:hover{background:color-mix(in srgb,currentColor 10%,transparent)}@media(max-width:40rem){.page-head{flex-direction:column}.head-actions{flex-wrap:wrap;width:100%}.section-tabs{display:grid;grid-template-columns:1fr 1fr;width:100%}.toast-stack{bottom:calc(4.5rem + env(safe-area-inset-bottom))}}.banner{border-bottom:1px solid var(--border);background:var(--notice-bg);font-size:.9rem}.banner-inner{max-width:var(--page-width);margin:0 auto;padding:var(--space-2) var(--page-gutter)}.banner-warn{background:var(--danger-soft);color:var(--danger)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);box-shadow:var(--shadow-sm)}.grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));margin-bottom:var(--space-2)}.stats{display:grid;grid-template-columns:auto 1fr;gap:var(--space-1) var(--space-4);margin:0;font-size:.9rem}.stats dt{color:var(--muted)}.stats dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}.calculator{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--border)}.calculator .field{margin-bottom:var(--space-3)}.form-card{max-width:56rem;margin-bottom:var(--space-5)}.modal-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:var(--space-4);overflow-y:auto;background:#0000009e;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-card{width:min(46rem,100%);max-height:calc(100dvh - 2 * var(--space-4));padding:0;overflow:auto;box-shadow:var(--shadow)}.project-modal{width:min(58rem,100%)}.template-modal-backdrop{z-index:110}.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}.phase-contract-list{padding:var(--space-3);margin:var(--space-4) 0;border:1px solid var(--border);border-radius:var(--radius)}.phase-contract-list legend{padding-inline:var(--space-1);font-weight:600}.phase-contract-list>.muted{margin:0 0 var(--space-3)}.phase-contract-head,.phase-contract-row{display:grid;grid-template-columns:minmax(0,1fr) 10rem;gap:var(--space-3);align-items:center}.phase-contract-head{padding:0 var(--space-2) var(--space-2);color:var(--muted);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.phase-contract-row{min-height:3.25rem;padding:var(--space-2);border-top:1px solid var(--border)}.phase-contract-row.unselected{color:var(--muted)}.phase-contract-row .check-line{display:flex;gap:var(--space-2);align-items:center;margin:0}.phase-contract-fee-field{margin:0}.phase-contract-fee{text-align:right;font-variant-numeric:tabular-nums}.phase-contract-total{display:flex;align-items:baseline;justify-content:flex-end;gap:var(--space-4);padding:var(--space-3) var(--space-2) 0;border-top:1px solid var(--border-strong)}.phase-contract-total strong{min-width:10rem;text-align:right;font-size:1.1rem}.project-dates{margin-top:var(--space-4)}.modal-head,.modal-actions{position:sticky;z-index:1;display:flex;align-items:center;background:var(--surface)}.modal-head{top:0;justify-content:space-between;gap:var(--space-3);padding:var(--space-4);border-bottom:1px solid var(--border)}.modal-head h2{margin:0}.modal-body{padding:var(--space-4)}.modal-actions{bottom:0;justify-content:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:1px solid var(--border)}.icon-button{display:inline-grid;width:2.25rem;height:2.25rem;padding:0;place-items:center;color:var(--muted);font:inherit;font-size:1.5rem;line-height:1;background:transparent;border:0;border-radius:var(--radius-sm);cursor:pointer}.icon-button:hover{color:var(--text);background:var(--surface-sunken)}.list-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-top:var(--space-3)}@media(max-width:40rem){.modal-backdrop{align-items:end;padding:0}.modal-card{width:100%;max-height:calc(100dvh - env(safe-area-inset-top));border-right:0;border-bottom:0;border-left:0;border-radius:var(--radius) var(--radius) 0 0}.modal-actions{padding-bottom:calc(var(--space-3) + env(safe-area-inset-bottom))}.phase-contract-head{display:none}.phase-contract-row{grid-template-columns:1fr;gap:var(--space-2)}.phase-contract-fee-field{padding-left:1.5rem}.phase-contract-total{justify-content:space-between}.phase-contract-total strong{min-width:0}.list-footer{align-items:stretch;flex-direction:column}}.budget-editor{display:grid;grid-template-columns:minmax(0,1fr) minmax(18rem,20rem);gap:var(--space-4);align-items:start;max-width:82rem;margin-bottom:var(--space-5)}.budget-main{min-width:0}.budget-assumptions{display:grid;grid-template-columns:repeat(2,minmax(12rem,1fr));gap:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--border)}.budget-assumptions .field{margin:0}.budget-block{margin-top:var(--space-5)}.budget-block-heading,.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4)}.budget-block-heading{align-items:center;margin-bottom:var(--space-3)}.budget-block-heading h3,.budget-summary h3{margin:0}.budget-block-heading .tag{margin-left:var(--space-1);vertical-align:.08rem}.budget-grid-scroll{margin-bottom:0}.budget-table{min-width:48rem}.budget-expense-table{min-width:52rem}.budget-table td{vertical-align:middle}.budget-table select,.budget-table input{margin:0}.budget-table select{min-width:10rem}.budget-table input.budget-hours{width:5.5rem}.budget-table input.budget-cost{width:7rem}.budget-summary{position:sticky;top:6rem}.budget-summary-stats{gap:var(--space-2) var(--space-3);margin:var(--space-4) 0}.budget-summary-stats dt:nth-of-type(3),.budget-summary-stats dd:nth-of-type(3){padding-top:var(--space-3);border-top:1px solid var(--border)}.budget-use-recommended,.budget-summary-actions .btn{width:100%}.budget-summary-actions{display:grid;gap:var(--space-2);padding-top:var(--space-4);margin-top:var(--space-4);border-top:1px solid var(--border)}@media(max-width:72rem){.budget-editor{grid-template-columns:1fr}.budget-summary{position:static;max-width:32rem}}.field{display:block;margin-bottom:var(--space-4)}.field>span{display:block;font-size:.82rem;font-weight:500;color:var(--muted);margin-bottom:var(--space-1)}.field small{display:block;margin-top:var(--space-1);font-size:.82rem}.field-row{display:grid;gap:0 var(--space-4);grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}input,select,textarea{width:100%;padding:.5rem .65rem;font:inherit;color:inherit;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);transition:border-color var(--transition),box-shadow var(--transition)}input:hover:not(:disabled),select:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 45%,var(--border-strong))}input:focus-visible,select:focus-visible,textarea:focus-visible,.btn:focus-visible,a:focus-visible{outline:none;border-color:var(--accent);box-shadow:var(--ring)}input:disabled{background:var(--surface-sunken);color:var(--muted)}input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--accent)}.inline{display:flex;gap:var(--space-2);align-items:center;white-space:nowrap;font-size:.9rem}.inline input,.inline select{width:auto}.toolbar{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap;margin-bottom:var(--space-4)}.toolbar input[name=search]{min-width:18rem;max-width:26rem}.actions{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.section-followup{margin-top:var(--space-4)}.section-block{margin-top:var(--space-6)}.section-block>h2:first-child{margin:0 0 var(--space-3)}.compact-actions{margin-top:var(--space-2)}.compact-row{align-items:end;margin-bottom:var(--space-2)}.plain-list{list-style:none;padding:0;margin:0}.plain-list li{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) 0;border-top:1px solid var(--border)}.btn{display:inline-flex;gap:var(--space-2);align-items:center;justify-content:center;padding:.45rem .8rem;font:inherit;font-size:.92rem;font-weight:500;color:inherit;text-decoration:none;white-space:nowrap;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition),border-color var(--transition),color var(--transition)}.btn:hover:not(:disabled){background:var(--surface-sunken);border-color:var(--accent);color:var(--accent)}.btn:active:not(:disabled){transform:translateY(.5px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:550}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-text)}.auth-card .btn-primary{width:100%}.btn-danger{background:var(--danger-soft);border-color:var(--danger);color:var(--danger);font-weight:550}.btn-danger:hover:not(:disabled){background:var(--danger);border-color:var(--danger);color:var(--surface)}.btn-ghost{background:transparent;border-color:transparent;color:var(--muted);padding:.35rem .55rem}.btn-ghost:hover:not(:disabled){background:var(--surface-sunken);border-color:transparent;color:var(--text)}.btn-icon{padding:.4rem;line-height:0}.btn-icon .icon{width:1.05rem;height:1.05rem;vertical-align:middle}.table{width:100%;border-collapse:separate;border-spacing:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;font-size:.92rem}.table th{position:sticky;top:0;z-index:1;padding:var(--space-2) var(--space-3);text-align:left;font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:var(--surface-sunken);border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:.45rem var(--space-3);border-bottom:1px solid color-mix(in srgb,var(--border) 60%,transparent)}.table tbody tr:last-child td{border-bottom:none}.table tbody tr{transition:background var(--transition)}.table tbody tr:hover{background:color-mix(in srgb,var(--accent-soft) 55%,transparent)}.table tr.archived td{color:var(--muted);text-decoration:line-through}.table tr.extra td{background:color-mix(in srgb,var(--notice-bg) 70%,transparent)}.row-actions{text-align:right;white-space:nowrap}.btn-danger{color:var(--danger)}.btn-danger:hover{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 45%,var(--border));background:var(--danger-soft)}.row-menu{position:relative;display:inline-block;text-align:left}.row-menu[open]{z-index:6}.table:has(.row-menu){overflow:visible}.row-menu>summary{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;color:var(--muted);font-size:1.2rem;line-height:1;cursor:pointer;border:1px solid transparent;border-radius:var(--radius-sm);list-style:none}.row-menu>summary::-webkit-details-marker{display:none}.row-menu>summary:hover,.row-menu[open]>summary{color:var(--text);border-color:var(--border);background:var(--surface-sunken)}.row-menu-popover{position:absolute;top:calc(100% + var(--space-1));right:0;z-index:5;display:grid;min-width:8.5rem;padding:var(--space-1);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow)}.row-menu-popover .btn{justify-content:flex-start;width:100%;border-color:transparent}.pace-comparison{display:grid;gap:.3rem;min-width:12rem;font-variant-numeric:tabular-nums}.pace-comparison-large{margin:var(--space-4) 0}.pace-row{display:grid;grid-template-columns:4.5rem minmax(4rem,1fr) 2.6rem;gap:var(--space-2);align-items:center;font-size:.76rem}.pace-label{color:var(--muted)}.pace-row strong{text-align:right;font-size:.78rem;font-weight:600}.pace-track{height:.42rem;overflow:hidden;background:var(--surface-sunken);border-radius:var(--radius-pill)}.pace-fill{display:block;height:100%;border:0;border-radius:inherit}.pace-fill.risk-healthy{background:var(--accent)}.pace-fill.risk-watch{background:var(--warn)}.pace-fill.risk-overrun{background:var(--danger)}.pace-completed{background:var(--muted);opacity:.75}.grid-scroll{overflow-x:auto;margin-bottom:var(--space-4);border-radius:var(--radius)}@media(max-width:48rem){.page{padding-bottom:calc(5.5rem + env(safe-area-inset-bottom))}.budget-assumptions{grid-template-columns:1fr}.budget-block-heading,.section-heading{align-items:stretch;flex-direction:column;gap:var(--space-2)}.budget-block-heading .btn{align-self:flex-start}.budget-table,.budget-expense-table{min-width:0}.budget-table input.mini,.budget-table input.budget-hours,.budget-table input.budget-cost{justify-self:end;width:min(100%,9rem)}.budget-summary{max-width:none}.grid-scroll:has(.mobile-cards){overflow:visible}.mobile-cards{display:block;background:transparent;border:0;overflow:visible}.mobile-cards thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mobile-cards tbody{display:grid;gap:var(--space-3)}.mobile-cards tr{display:grid;overflow:visible;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.mobile-cards td,.mobile-cards td.num{display:grid;grid-template-columns:minmax(6.5rem,38%) minmax(0,1fr);gap:var(--space-3);align-items:center;padding:var(--space-2) var(--space-3);text-align:right;white-space:normal;overflow-wrap:anywhere;border-bottom:1px solid color-mix(in srgb,var(--border) 60%,transparent)}.mobile-cards td:before{content:attr(data-label);color:var(--muted);font-size:.72rem;font-weight:600;text-align:left;text-transform:uppercase;letter-spacing:.04em}.mobile-cards td.mobile-card-title{order:-1;display:block;padding:var(--space-3);text-align:left;background:var(--surface-sunken);border-radius:var(--radius) var(--radius) 0 0}.mobile-cards td.mobile-card-title:before{display:none}.mobile-cards td:last-child{border-bottom:0}.table.mobile-cards tbody tr td:not(:last-child){border-bottom:1px solid color-mix(in srgb,var(--border) 60%,transparent)}.mobile-cards td:empty{display:none}.mobile-cards .row-actions{display:flex;justify-content:flex-end}.mobile-cards .pace-comparison{min-width:0}.mobile-cards .badge{justify-self:end}}.timesheet-grid-tools{position:sticky;top:3.25rem;z-index:8;display:grid;grid-template-columns:minmax(15rem,1fr) minmax(17rem,1.2fr) auto;gap:var(--space-2);align-items:center;padding:var(--space-3) 0;margin-bottom:var(--space-2);background:color-mix(in srgb,var(--bg) 94%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.timesheet-search input,.timesheet-grid-tools .add-row{width:100%}.timesheet-group-actions{display:flex;gap:var(--space-1);justify-content:flex-end}.empty-inline{margin:var(--space-3) 0;color:var(--muted)}.timesheet th,.timesheet td{padding:var(--space-2)}.timesheet .sticky{position:sticky;left:0;z-index:2;min-width:14rem;text-align:left;background:var(--surface)}.timesheet thead .sticky{z-index:3;background:var(--surface-sunken)}.timesheet .weekend{background:color-mix(in srgb,var(--surface-sunken) 55%,transparent)}.timesheet .timesheet-project-row td{background:color-mix(in srgb,var(--surface-sunken) 82%,var(--surface));border-top:1px solid var(--border-strong)}.timesheet .timesheet-project-row .sticky{background:color-mix(in srgb,var(--surface-sunken) 82%,var(--surface))}.timesheet-project-toggle{display:flex;gap:var(--space-2);align-items:center;width:100%;padding:0;color:var(--text);font:inherit;font-weight:650;text-align:left;cursor:pointer;background:transparent;border:0}.timesheet-project-toggle .badge{margin-left:auto;color:var(--muted)}.timesheet-chevron{width:.8rem;color:var(--accent)}.timesheet-phase-row .sticky{padding-left:calc(var(--space-2) + 1.3rem)}.timesheet-phase-name{display:flex;gap:var(--space-2);align-items:center;justify-content:space-between}.timesheet-remove-row{flex:none;width:1.6rem;height:1.6rem;color:var(--muted);font-size:1rem}.timesheet tr.totals td{border-top:2px solid var(--border-strong);font-weight:600;background:var(--surface-sunken)}input.hours{width:3.6rem;padding:.3rem .4rem;text-align:right;font-variant-numeric:tabular-nums}input.hours:disabled{background:transparent;border-color:transparent}@media(max-width:56rem){.timesheet-grid-tools{position:static;grid-template-columns:1fr}.timesheet-group-actions{justify-content:flex-start}}input.mini{width:4.4rem;padding:.25rem .4rem;text-align:right;font-variant-numeric:tabular-nums}.badge{display:inline-flex;gap:.4rem;align-items:center;padding:.1rem .55rem;font-size:.78rem;font-weight:500;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);white-space:nowrap}.badge:before{content:"";width:.45rem;height:.45rem;border-radius:50%;background:currentcolor}.status-draft,.status-onhold,.status-completed,.status-archived{color:var(--muted)}.status-active,.risk-healthy{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 35%,var(--border));background:var(--accent-soft)}.risk-watch{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 35%,var(--border));background:var(--warn-soft)}.risk-overrun{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,var(--border));background:var(--danger-soft)}.tag{display:inline-block;margin-left:var(--space-1);padding:.05rem .4rem;font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border:1px solid var(--border);border-radius:var(--radius-pill)}.checklist{margin:0;padding-left:1.15rem}.checklist li{margin-bottom:var(--space-1)}.checklist li.done{color:var(--muted);text-decoration:line-through}.checklist li.pending{color:var(--muted)}.alert,.notice{padding:var(--space-3);border-radius:var(--radius-sm);font-size:.9rem;border:1px solid transparent}.alert{background:var(--danger-soft);border-color:color-mix(in srgb,var(--danger) 25%,transparent);color:var(--danger)}.notice{background:var(--notice-bg);border-color:color-mix(in srgb,var(--accent) 18%,transparent)}.notice-warn{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 30%,transparent)}.rate-warning{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);max-width:none}.rate-warning .btn{flex:none}@media(max-width:40rem){.rate-warning{align-items:flex-start;flex-direction:column}}.empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-7) var(--space-5);margin:0 auto;text-align:center;color:var(--muted);background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius)}.empty .icon{width:1.6rem;height:1.6rem;color:var(--border-strong);stroke-width:1.5}.loading{display:flex;gap:var(--space-2);align-items:center;color:var(--muted);font-size:.92rem}.loading:before{content:"";width:.85rem;height:.85rem;border:2px solid color-mix(in srgb,var(--muted) 35%,transparent);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@media(prefers-reduced-motion:reduce){.loading:before{animation-duration:2s}}
