:root{--amber:#8a5a00}.section-title{letter-spacing:.12em;color:var(--gray-mid);margin-bottom:12px}.month-select,.section-title{font-size:10px;font-weight:700;text-transform:uppercase}.month-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;border:1px solid var(--black);background:var(--white);color:var(--black);font-family:var(--font);letter-spacing:.15em;padding:8px 32px 8px 12px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1' stroke='%23000' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.month-select:focus{outline:2px solid var(--black);outline-offset:-2px}.month-card{border:1px solid var(--gray-rule);padding:24px;display:grid;grid-gap:18px;gap:18px}.month-card.ready,.month-card.warning{border-color:var(--gray-rule)}.month-card.blocked{border-color:var(--black)}.month-card.invoiced{border-color:var(--gray-rule)}.readiness-month-header{align-items:flex-start}.month-card-header{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.month-title{font-size:16px;font-weight:900;letter-spacing:-.01em}.month-status-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.month-status-badge{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:4px 10px}.month-status-badge.invoiced{background:var(--black);color:var(--white)}.month-status-badge.not-invoiced{border:1px dashed var(--gray-rule);color:var(--gray-mid)}.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));grid-gap:16px;gap:16px}.stat-value{font-size:18px;font-weight:900;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.01em}.stat-label{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--gray-mid);margin-top:2px}.metric-value{font-size:14px;font-weight:900;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.readiness-badge{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:4px 10px;border:1px solid var(--gray-rule)}.readiness-badge-ready{color:var(--black);border-color:var(--gray-rule)}.readiness-badge-warning{color:var(--amber);border-color:var(--amber)}.readiness-badge-blocked{color:var(--red);border-color:var(--red)}.readiness-summary-strip{border-top:1px solid var(--gray-rule);border-bottom:1px solid var(--gray-rule);padding:14px 0;display:grid;grid-template-columns:minmax(0,1.2fr) auto auto;grid-gap:16px;gap:16px;align-items:center;cursor:pointer}.readiness-summary-strip:focus-visible{outline:2px solid var(--black);outline-offset:4px}.readiness-summary-copy{display:grid;grid-gap:5px;gap:5px}.readiness-summary-title{font-size:14px;font-weight:700}.readiness-summary-text{font-size:12px;line-height:1.45;color:var(--gray-mid)}.readiness-summary-metrics{display:flex;gap:18px;flex-wrap:wrap;align-items:center}.readiness-summary-metric{display:grid;grid-gap:3px;gap:3px}.readiness-section{padding-top:0;display:grid;grid-gap:16px;gap:16px}.readiness-section+.readiness-section{border-top:1px solid var(--gray-rule);padding-top:14px}.readiness-section-toggle{display:flex;align-items:center;justify-content:space-between;gap:16px;background:transparent;border:none;padding:0;text-align:left;font-family:var(--font);font-size:12px;color:var(--gray-mid);cursor:pointer}.readiness-section-meta{margin-left:auto;color:var(--gray-mid);font-size:12px}.commit-toggle-arrow{font-size:10px;transition:transform .2s;display:inline-block;color:var(--black)}.commit-toggle-arrow.open{transform:rotate(90deg)}.readiness-details-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:18px;gap:18px}.readiness-detail-card{border:1px solid var(--gray-rule);padding:16px;display:grid;grid-gap:12px;gap:12px}.readiness-detail-headline-row{display:flex;justify-content:space-between;align-items:start;gap:12px;flex-wrap:wrap}.readiness-detail-title{font-size:14px;font-weight:700}.readiness-detail-copy{font-size:12px;line-height:1.45;color:var(--gray-mid)}.readiness-impact-row{display:flex;gap:8px;flex-wrap:wrap}.readiness-impact{border:1px solid var(--gray-rule);padding:4px 8px;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.readiness-impact-warning{color:var(--amber);border-color:var(--amber)}.readiness-impact-blocked{color:var(--red);border-color:var(--red)}.readiness-note{background:var(--gray-row-alt);padding:12px;font-size:12px;color:var(--gray-mid);line-height:1.45}.contributor-table-wrap table{width:100%;border-collapse:collapse;font-size:13px}.contributor-table-wrap td,.contributor-table-wrap th{padding:10px 12px 10px 0}.contributor-table-wrap td,.contributor-table-wrap th,table td,table th{border-bottom:1px solid var(--gray-rule);text-align:left;vertical-align:top}table td,table th{padding:10px 0}.align-right{text-align:right!important;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.row-status{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.row-status.ok{color:var(--black)}.row-status.warn{color:var(--amber)}.row-status.blocked{color:var(--red)}.invoice-card{border:1px solid var(--gray-rule);padding:16px 20px}.invoice-card+.invoice-card{margin-top:12px}.invoice-card.paid{border-color:var(--black)}.invoice-card-header{display:flex;align-items:center;gap:12px;font-size:13px}.invoice-card-header-stacked{display:grid;grid-gap:10px;gap:10px}.invoice-card-header-main{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.invoice-card-header a{color:var(--black);text-decoration:none;font-weight:700}.invoice-card-header a:hover{text-decoration:underline}.invoice-meta{font-size:12px;color:var(--gray-mid);margin-left:auto}.invoice-actions{display:flex;gap:6px;align-items:center;margin-left:auto;flex-wrap:wrap}.invoice-actions .btn{font-size:9px;padding:4px 12px;letter-spacing:.1em}.invoice-actions .btn-ghost{border-color:var(--gray-rule);color:var(--gray-mid)}.invoice-actions .btn-ghost:hover{border-color:var(--black);color:var(--black);background:var(--white)}.ready-message{font-size:11px;color:var(--gray-mid)}.warning-message{font-size:11px;color:var(--red)}.readiness-dialog-backdrop{position:fixed;inset:0;background:rgba(17,17,17,.22);display:grid;place-items:center;padding:24px;z-index:140}.readiness-dialog{width:min(920px,100%);max-height:min(88vh,920px);overflow:auto;background:var(--white);border:1px solid var(--black);padding:20px;display:grid;grid-gap:18px;gap:18px;box-shadow:0 12px 40px rgba(17,17,17,.18)}.readiness-dialog-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.readiness-dialog-title{margin:0;font-size:18px;font-weight:900;letter-spacing:-.01em}.readiness-dialog-copy{margin:0;font-size:12px;line-height:1.5;color:var(--gray-mid);max-width:62ch}.readiness-dialog-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:12px;gap:12px}.readiness-dialog-metric{border:1px solid var(--gray-rule);padding:12px;display:grid;grid-gap:6px;gap:6px}.readiness-dialog-issues{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.draft-editor{border-top:1px solid var(--gray-rule);padding-top:20px}.draft-header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--gray-rule);padding-bottom:16px;margin-bottom:16px}.draft-header-title{display:flex;align-items:center;gap:12px}.draft-header-title span:first-child{font-size:14px;font-weight:900}.draft-header-actions{display:flex;gap:8px}.draft-form{display:grid;grid-template-columns:auto auto auto 1fr;grid-gap:16px;gap:16px;align-items:end;margin-bottom:20px}.draft-form label{display:grid;grid-gap:4px;gap:4px;font-size:12px}.draft-form-checkbox{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--gray-mid);padding-bottom:2px}.draft-input{border:1px solid var(--gray-rule);font-family:var(--font);font-size:12px;padding:6px 10px;outline:none;background:var(--white);color:var(--black)}.draft-input-full{width:100%}.draft-table{width:100%;border-collapse:collapse;font-size:13px}.draft-table th{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gray-mid);padding:8px 0;border-bottom:1px solid var(--black)}.draft-table td{padding:8px 0;border-bottom:1px solid var(--gray-rule)}.draft-table tfoot td{padding:10px 0;font-weight:900;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.draft-table-total-label{text-align:right;font-size:10px;letter-spacing:.12em;text-transform:uppercase}.draft-table-total-value{text-align:right}.draft-table-total-spacer,.draft-table-total-value{border-top:2px solid var(--black)}.action-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}@media (max-width:980px){.readiness-details-grid,.readiness-dialog-issues,.readiness-summary-strip{grid-template-columns:1fr}.invoice-actions,.invoice-meta{margin-left:0}.readiness-section-toggle{align-items:flex-start}}*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--white:#FFFFFF;--black:#000000;--red:#E63329;--gray-mid:#666666;--gray-light:#F0F0F0;--gray-rule:#CCCCCC;--gray-row-alt:#F8F8F8;--nav-width:200px;--shell-gutter:32px;--shell-gutter-mobile:16px;--mobile-topbar-height:64px;--font:-apple-system,"Helvetica Neue",Helvetica,Arial,sans-serif}body,html{height:100%;overflow:hidden;background:var(--white);color:var(--black);font-family:var(--font);font-size:14px;line-height:1.4;-webkit-font-smoothing:antialiased}.app{width:100%;background:var(--white);overflow:hidden}.app,.content-shell{display:flex;min-height:100dvh;height:100dvh}.content-shell{flex:1 1;min-width:0;flex-direction:column;overflow-x:hidden}.app-sidebar{width:var(--nav-width);min-width:var(--nav-width);min-height:100dvh;border-right:1px solid var(--black);flex-shrink:0;background:var(--white);z-index:100}.app-sidebar,.nav-logo{display:flex;flex-direction:column}.nav-logo{padding:20px 16px;border-bottom:1px solid var(--black);align-items:center}.nav-logo-sub{font-size:8px;font-weight:700;letter-spacing:.05em;color:var(--gray-mid);text-transform:uppercase;display:block;margin-top:6px;text-align:center}.nav-list{list-style:none;flex:1 1}.nav-item{border-bottom:1px solid var(--black);position:relative}.nav-item a{display:block;padding:14px 16px 14px 20px;font-size:11px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--black);text-decoration:none;transition:background .1s}.nav-item:hover a{background:var(--gray-light)}.nav-item.active a{color:var(--red);padding-left:16px}.nav-item.active:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--red)}.nav-footer{border-top:1px solid var(--black);padding:16px}.nav-footer-label{font-size:9px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--gray-mid);display:block;margin-bottom:4px}.nav-footer-user{font-size:12px;font-weight:400}.nav-footer-cog{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:12px;line-height:1;color:var(--gray-mid)}.nav-footer-cog,.nav-footer-cog:active,.nav-footer-cog:focus,.nav-footer-cog:hover,.nav-footer-cog:visited{text-decoration:none!important}.nav-footer-cog:hover{color:var(--black)}.nav-footer-role{font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gray-mid);margin-top:2px;display:block}.mobile-topbar{display:none}.mobile-nav-close,.mobile-nav-trigger{border:1px solid var(--black);background:var(--white);color:var(--black);text-decoration:none;font-family:var(--font);font-size:10px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;padding:10px 12px;min-height:40px;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}.mobile-nav-close{flex-shrink:0;width:44px;min-width:44px;padding:0;font-size:28px;line-height:1;letter-spacing:0;text-transform:none}.mobile-nav-overlay{position:fixed;inset:0;background:rgba(0,0,0,.38);z-index:200}.mobile-nav-sheet{position:fixed;left:0;top:0;width:min(88vw,360px);height:100dvh;max-height:100dvh;display:flex;flex-direction:column;overflow:hidden;background:var(--white);border-right:1px solid var(--black);z-index:210;padding-top:max(16px,env(safe-area-inset-top));padding-bottom:0}.mobile-nav-sheet:focus{outline:none}.mobile-nav-sheet-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;grid-gap:12px;gap:12px;padding:0 calc(var(--shell-gutter-mobile) + env(safe-area-inset-right)) 16px var(--shell-gutter-mobile);border-bottom:1px solid var(--black)}.mobile-nav-sheet-logo,.mobile-topbar-logo{display:inline-flex;align-items:center;min-width:0}.mobile-nav-sheet-logo{width:128px}.mobile-topbar-logo{width:120px;flex:1 1;justify-content:center}.mobile-nav-sheet-body{flex:1 1;min-height:0;overflow-y:auto}.mobile-nav-sheet-footer{border-top:1px solid var(--black);padding:16px 16px calc(32px + env(safe-area-inset-bottom))}.content{flex:1 1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow-x:hidden}.content>.screen,.content>.screen-stack{height:100%}.screen,.screen-stack{display:flex;flex-direction:column;flex:1 1;min-height:0;overflow:hidden}.scroll-body{flex:1 1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.page-header{border-bottom:1px solid var(--black);padding:20px var(--shell-gutter);display:flex;align-items:baseline;justify-content:space-between;flex-shrink:0;background:var(--white)}.page-title{font-size:11px;font-weight:700;letter-spacing:.15em;text-transform:uppercase}.page-meta{font-size:11px;color:var(--gray-mid);letter-spacing:.05em}.section-label{font-size:10px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--gray-mid)}.kpi-strip{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--black);flex-shrink:0}.kpi-box{padding:24px var(--shell-gutter);border-right:1px solid var(--black)}.kpi-box:last-child{border-right:none}.kpi-number{font-size:48px;font-weight:900;line-height:1;letter-spacing:-.02em;display:block;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.kpi-label{font-size:10px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--gray-mid);display:block;margin-top:8px}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gray-mid);padding:10px 12px;text-align:left;border-bottom:1px solid var(--black);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap;background:var(--white);position:-webkit-sticky;position:sticky;top:0;z-index:2}.data-table th.sorted{color:var(--red);border-bottom-color:var(--red)}.data-table th.align-right{text-align:right}.data-table td{padding:10px 12px;border-bottom:1px solid var(--gray-rule);vertical-align:middle}.data-table tr:nth-child(2n) td{background:var(--gray-row-alt)}.data-table tr:nth-child(odd) td{background:var(--white)}.data-table tbody tr{cursor:pointer}.data-table tbody tr:hover td{background:var(--gray-light)!important}.data-table tbody tr.row-selected td{background:var(--white)!important}.data-table tbody tr.row-selected td:first-child{border-left:4px solid var(--red);padding-left:8px}.data-table td.align-right,.data-table td.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.data-table td.num{font-weight:700;font-size:13px}.data-table td:first-child,.data-table th:first-child{padding-left:var(--shell-gutter)}.data-table td:last-child,.data-table th:last-child{padding-right:var(--shell-gutter)}.time-grid-input:focus::placeholder{opacity:0}.status{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.status-active{color:var(--black)}.status-completed,.status-on_hold{color:var(--gray-mid)}.status-on_hold{border:1px dashed var(--gray-rule);padding:1px 6px}.status-cancelled{color:var(--red)}.status-draft{color:var(--gray-mid);border:1px dashed var(--gray-rule);padding:1px 6px}.status-sent{color:var(--black);border:1px solid var(--black);padding:1px 6px}.status-paid{color:var(--black);font-weight:900}.status-void{color:var(--gray-mid);text-decoration:line-through}.burn-bar-wrap{display:flex;align-items:center;gap:8px}.burn-bar{width:64px;height:6px;background:var(--gray-rule);position:relative;flex-shrink:0}.burn-bar-fill{position:absolute;left:0;top:0;height:100%;background:var(--black)}.burn-bar-fill.over{background:var(--red)}.burn-pct{font-size:12px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;min-width:32px}.burn-pct.over{color:var(--red)}.row-detail-container{overflow:hidden;max-height:0;transition:max-height .3s cubic-bezier(.4,0,.2,1)}.row-detail-container.open{max-height:400px}.row-detail{border-bottom:1px solid var(--black);border-left:4px solid var(--red);background:var(--white)}.row-detail-inner{display:grid;grid-template-columns:1fr 1fr 1fr}.row-detail-section{padding:24px 32px;border-right:1px solid var(--gray-rule)}.row-detail-section:last-child{border-right:none}.row-detail-title{font-size:10px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--gray-mid);margin-bottom:16px;display:block}.budget-bar-label{display:flex;justify-content:space-between;font-size:11px;color:var(--gray-mid);margin-bottom:6px}.budget-bar{height:16px;background:var(--gray-light);border:1px solid var(--gray-rule);position:relative}.budget-bar-fill{position:absolute;left:0;top:0;height:100%;background:var(--black)}.budget-bar-fill.over{background:var(--red)}.budget-numbers{display:flex;justify-content:space-between;margin-top:12px;gap:16px}.budget-num-label{font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gray-mid);display:block}.budget-num-value{font-size:18px;font-weight:900;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;display:block;margin-top:2px}.schedule-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--gray-rule);font-size:12px}.schedule-row:last-child{border-bottom:none}.schedule-label{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--gray-mid)}.team-list{list-style:none}.team-item{display:flex;justify-content:space-between;align-items:baseline;padding:6px 0;border-bottom:1px solid var(--gray-rule);font-size:12px}.team-item:last-child{border-bottom:none}.team-role{font-size:10px;color:var(--gray-mid);text-transform:uppercase;letter-spacing:.1em;font-weight:700}.toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px var(--shell-gutter);border-bottom:1px solid var(--black);flex-shrink:0;gap:16px}.btn{border:1px solid var(--black);background:var(--black);color:var(--white);font-family:var(--font);font-size:10px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;padding:8px 20px;cursor:pointer;transition:background .1s,color .1s;white-space:nowrap}.btn-ghost,.btn:hover{background:var(--white);color:var(--black)}.btn-ghost:hover{background:var(--black);color:var(--white)}.btn-danger{color:var(--red);border-color:var(--red)}.btn-danger:hover{background:var(--red);color:var(--white)}.empty-state{padding:64px 32px;text-align:center;color:var(--gray-mid);font-size:13px}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:var(--white)}::-webkit-scrollbar-thumb{background:var(--gray-rule)}::-webkit-scrollbar-thumb:hover{background:var(--gray-mid)}:focus{outline:none}@media (max-width:959px){.app-sidebar{display:none}.mobile-topbar{z-index:120;min-height:var(--mobile-topbar-height);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0;padding:max(10px,env(safe-area-inset-top)) var(--shell-gutter-mobile) 10px;border-bottom:1px solid var(--black);background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.content,.screen{overflow:hidden}.screen{min-height:0}.scroll-body{min-height:0;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}}@media (max-width:719px){.mobile-nav-sheet-logo{width:112px}.mobile-nav-close{width:40px;min-width:40px;font-size:24px}.page-header{padding:16px var(--shell-gutter-mobile);flex-direction:column;gap:8px}.page-header,.toolbar{align-items:flex-start}.toolbar{padding:12px var(--shell-gutter-mobile);flex-wrap:wrap}.kpi-strip{grid-auto-flow:column;grid-auto-columns:minmax(220px,1fr);overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity}.kpi-box{padding:20px var(--shell-gutter-mobile);scroll-snap-align:start}}