:root{--accent: #176c5f;--line: #d5dde5;--muted: #536171;--panel: #ffffff;color:#1d2430;background:#f5f7f9;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,textarea,select{font:inherit;letter-spacing:0}.contractor-search{align-items:end;display:grid;gap:1rem;grid-template-columns:minmax(0,1fr) auto;margin-bottom:1rem}.contractor-suggestions,.contractor-list{display:grid;gap:.75rem;list-style:none;margin:0 0 1rem;padding:0}.contractor-suggestions li,.contractor-card{align-items:center;border:1px solid #d5dde5;border-radius:8px;display:flex;gap:1rem;justify-content:space-between;padding:1rem}.contractor-suggestions span{color:#536171;display:block}.contractor-form{border-top:1px solid #d5dde5;margin:1.5rem 0;padding-top:1.5rem}.contractor-form h4,.contractor-card h4{margin:0 0 .5rem}.contractor-card p{margin:.25rem 0}.contractor-card a{color:#176c5f}button{border:0;border-radius:8px;background:#176c5f;color:#fff;cursor:pointer;font-weight:700;padding:.75rem 1rem}button:disabled{cursor:wait;opacity:.65}input,textarea{border:1px solid #bac4cf;border-radius:8px;padding:.75rem;width:100%}select{appearance:none;background-color:#fff;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none' stroke='%23536171' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.75'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E");background-position:right .75rem center;background-repeat:no-repeat;background-size:1rem;border:1px solid #bac4cf;border-radius:8px;color:#1d2430;line-height:1.25;min-height:2.75rem;padding:.625rem 2.5rem .625rem .75rem;width:100%}select:hover:not(:disabled){border-color:#8190a0}select:focus-visible{border-color:#176c5f;box-shadow:0 0 0 3px #176c5f33;outline:0}select:disabled{background-color:#eef1f4;color:#66717b;cursor:not-allowed;opacity:1}select[aria-invalid=true],.field-error select{border-color:#a72f2f}select[aria-invalid=true]:focus-visible,.field-error select:focus-visible{box-shadow:0 0 0 3px #a72f2f33}textarea{min-height:6rem;resize:vertical}label{display:grid;gap:.35rem;font-weight:700}form{display:grid;gap:1rem}.app{min-height:100vh}.sidebar{background:#22313f;color:#fff;display:flex;flex-direction:column;gap:2rem;padding:2rem}.sidebar h1{font-size:1.4rem;margin:0}.sidebar nav{display:grid;gap:.5rem}.sidebar nav button,.secondary,.link-button,.module-nav button,.project-selector{background:transparent;border:1px solid rgba(28,46,62,.18);color:inherit;text-align:left}.sidebar nav button,.secondary{border-color:#ffffff40}.destructive-button{background:#b42318;border-color:#8f1d14;color:#fff}.destructive-button:hover:not(:disabled){background:#8f1d14;border-color:#6e1710}.destructive-button:focus-visible{outline:3px solid #66130e;outline-offset:2px}.destructive-button:disabled{background:#b9bfc5;border-color:#a3aab2;color:#fff}.sidebar nav button.active{background:#f5f7f9;color:#1d2430}.content{padding:clamp(1rem,4vw,3rem)}.content:has(.workspace-shell){padding:0}.auth,.centered{align-items:center;display:grid;min-height:100vh;padding:1rem;place-items:center}.auth-panel{background:#fff;border:1px solid #d7dee6;border-radius:8px;max-width:30rem;padding:2rem;width:100%}.auth-content{display:grid;gap:1rem;justify-items:center;max-width:30rem;width:100%}.auth-content .auth-panel{max-width:none}.auth-logo{display:block;height:6rem;object-fit:contain;width:6rem}.eyebrow,.muted,.section-header p,.metric-tile span,.status-tile span{color:#66717b;letter-spacing:0;margin:0}.eyebrow{color:#6a4b12;font-size:.8rem;font-weight:800;margin-bottom:.5rem;text-transform:uppercase}h1,h2,h3{line-height:1.1;margin:0 0 1rem}.details{display:grid;gap:.75rem;grid-template-columns:max-content minmax(0,1fr)}.details dd{color:#596676;margin:0}.details dt{font-weight:800}.account-page{max-width:36rem}.account-form{margin-bottom:2rem}.account-form__actions{display:flex;justify-content:flex-start}.error,.notice{border-radius:8px;margin:1rem 0;padding:.85rem 1rem}.error{background:#fae6e6;color:#8a1c1c}.notice{background:#e3f2ed;color:#17473e}.link-button{color:#176c5f;margin-top:1rem;padding-left:0}.workspace-shell{display:grid;gap:2rem;grid-template-columns:minmax(18rem,24rem) minmax(0,1fr);margin-top:2rem}.workspace-shell .project-workspace{margin-top:0}.project-overview,.modal-panel{background:#fff;border:1px solid #d7dee6;border-radius:8px}.project-overview{padding:1.25rem}.project-overview__header,.modal-header,.workspace-title{align-items:center;display:flex;gap:1rem;justify-content:space-between}.project-grid{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));margin-top:1rem}.project-hub,.project-workspace,.section-panel,.hero-panel,.metric-tile,.status-tile,.auth-panel{background:#fff;border:1px solid #d7dee6;border-radius:8px}.project-hub,.project-workspace,.workspace-sidebar{padding:1.25rem}.project-workspace{margin-top:2rem}.workspace-shell{align-items:stretch;display:grid;gap:0;grid-template-columns:15rem minmax(0,1fr);margin-top:0;min-height:100vh}.workspace-sidebar{background:#176c5f;border:0;border-radius:0;color:#fff;display:flex;flex-direction:column;gap:.75rem;min-height:100vh;padding:1.25rem 1rem;position:static}.workspace-header{display:grid;gap:.5rem}.workspace-logo{display:block;height:2.75rem;object-fit:contain;width:2.75rem}.workspace-logo-badge{align-items:center;background:#fff;border-radius:50%;display:flex;height:4rem;justify-content:center;justify-self:center;width:4rem}.workspace-nav button{background:transparent;border:1px solid rgba(255,255,255,.35);color:#fff;text-align:left}.workspace-project h2,.workspace-project p{margin:0}.workspace-project .eyebrow{color:#fff;font-weight:800}.workspace-project>p:last-child{color:#ffffffc7;margin-top:.35rem}.workspace-project h2{font-size:1.2rem;line-height:1.2}.workspace-nav{display:grid;gap:.35rem}.workspace-nav button.active{background:#fff;border-color:#fff;color:#176c5f;font-weight:800}.workspace-shell .project-workspace{border:0;border-radius:0;margin-top:0;padding:clamp(1rem,4vw,3rem)}.project-list,.editable-list,.period-list,.risk-list,.form-stack{display:grid;gap:1rem}.project-selector{border-radius:8px;color:#1d2430;display:grid;gap:.35rem;padding:1rem}.project-tile{background:#fff;border:1px solid #d7dee6;color:#1d2430;display:grid;gap:.75rem;min-width:0;padding:.75rem;text-align:left}.project-tile:hover,.project-tile:focus-visible{border-color:#176c5f}.project-tile__header{align-items:start;display:flex;gap:.5rem;justify-content:space-between;min-width:0}.project-tile__header strong{min-width:0;overflow-wrap:anywhere}.project-tile__code{color:#4c5965;flex:0 0 auto;font-size:.8rem;font-weight:700;max-width:45%;overflow-wrap:anywhere;text-align:right}.project-tile__meta{display:grid;gap:.5rem;grid-template-columns:repeat(3,minmax(0,1fr));margin:0}.project-tile__meta div{display:grid;gap:.2rem}.project-tile__meta dt{color:#66717b;font-size:.75rem;font-weight:800;text-transform:uppercase}.project-tile__meta dd{margin:0;overflow-wrap:anywhere}.project-selector.active,.module-nav button.active{background:#f0f7f4;border-color:#176c5f}.workspace-topbar{border-bottom:1px solid #d7dee6;display:grid;gap:.75rem;margin-bottom:1.25rem;padding-bottom:.75rem}.workspace-title{justify-content:flex-start}.section-actions{display:flex;flex-shrink:0}.icon-button,.add-button{align-items:center;display:inline-flex;font-size:1.15rem;height:2.5rem;justify-content:center;padding:0;width:2.5rem}.workspace-utility-row,.workspace-context-row{align-items:center;display:flex}.workspace-utility-row{gap:.5rem;justify-content:space-between}.workspace-due-status{display:flex;flex:1 1 auto;justify-content:center;min-width:0}.workspace-account-actions{display:flex;flex-shrink:0;gap:.5rem}.workspace-context-row{gap:1rem;justify-content:space-between}.icon-button{background:#176c5f;color:#fff}.add-button{background:#176c5f;color:#fff;line-height:1;white-space:nowrap}.icon-button svg{height:1.2rem;width:1.2rem}.icon-button:focus-visible,.add-button:focus-visible{outline:3px solid #0c3f36;outline-offset:2px}.module-nav{display:grid;gap:.5rem;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));margin:1rem 0 1.5rem}.module-nav button{color:#1d2430}.dashboard-grid,.form-grid,.metric-grid,.report-summary-grid,.narrative-summary,.inline-row,.risk-row{display:grid;gap:1rem}.hero-panel,.section-panel,.metric-tile{padding:1.25rem}.hero-panel{align-items:center;display:flex;justify-content:space-between}.compact-message{margin:.75rem 0 0}.report-hero-side{display:grid;gap:1rem;justify-items:end}.report-actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:flex-end}.report-navigation{background:#fff;border:1px solid #d7dee6;border-radius:8px;display:grid;gap:1rem;padding:1rem}.report-navigation__heading p{margin:0}.report-navigation__heading>p:last-child{color:#66717b}.report-navigation__items{display:flex;gap:.75rem;overflow-x:auto;padding-bottom:.25rem}.report-navigation__items button{background:#f5f7f9;border:1px solid #d7dee6;color:#1d2430;flex:0 0 14rem;min-height:4.8rem;text-align:left}.report-navigation__items button.active{background:#176c5f;border-color:#176c5f;color:#fff}.report-navigation__items span,.report-navigation__items small{display:block}.report-navigation__items small{font-weight:500;margin-top:.2rem;opacity:.8}.report-detail-list{display:grid;gap:.75rem 1rem;grid-template-columns:max-content 1fr}.report-detail-list span{color:#66717b}.report-detail-list strong{overflow-wrap:anywhere}.archive-filters{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}.archive-pagination{align-items:center;display:flex;gap:1rem;justify-content:flex-end;margin-top:1rem}.link-button{background:transparent;border:0;color:#176c5f;cursor:pointer;font:inherit;padding:0;text-align:left}.link-button:hover{text-decoration:underline}.metric-grid{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}.metric-grid.compact{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}.report-summary-grid{align-items:stretch;grid-template-columns:repeat(2,minmax(0,1fr))}.report-summary-right{display:grid;gap:1rem;height:100%;min-height:0;grid-template-rows:auto minmax(0,1fr)}.report-summary-metrics{display:grid;gap:1rem;grid-template-columns:repeat(2,minmax(0,1fr))}.report-summary-metrics .metric-tile{height:100%;min-height:0;padding:.55rem .75rem}.report-summary-metrics .metric-tile strong{font-size:1.15rem;margin-top:.1rem}.report-financial-status{display:grid;height:100%;min-height:0;min-width:0}.report-financial-status .section-panel{display:grid;grid-template-rows:auto minmax(0,1fr);height:100%;min-height:0}.progress-comparison{background:#fff;border:1px solid #d7dee6;border-radius:8px;display:grid;gap:.75rem;justify-items:center;min-width:0;padding:1.25rem}.progress-comparison__chart{max-width:24rem;min-width:0;position:relative;width:100%}.progress-comparison__centre{align-items:center;display:grid;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%)}.progress-comparison__centre span{color:#4f5b66;font-size:.85rem;font-weight:800;text-transform:uppercase}.progress-comparison__centre strong{font-size:clamp(2.5rem,12vw,4.5rem);line-height:1}.progress-comparison__copy h3,.progress-comparison__copy p{margin:0;text-align:center}.progress-comparison__copy p+p{margin-top:.3rem}.budget-position{display:grid;gap:.85rem}.budget-position__heading{align-items:end;display:flex;gap:1rem;justify-content:space-between}.budget-position__heading h3,.budget-position__heading p{margin:0}.budget-position__heading h3{font-size:1.5rem}.budget-position__bar,.budget-position__paid{background:#e8edf1;border-radius:999px;display:flex;height:1rem;overflow:hidden}.budget-position__committed{background:#176c5f}.budget-position__uncommitted{background:repeating-linear-gradient(135deg,#fff3c4 0 .35rem,#d5a93d .35rem .55rem)}.budget-position__legend{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));margin:0}.budget-position__legend div{border-left:3px solid #d7dee6;padding-left:.6rem}.budget-position__legend dt{color:#66717b;font-size:.8rem}.budget-position__legend dd{font-weight:800;margin:.15rem 0 0}.budget-position__paid{height:.45rem}.budget-position__paid span{background:#1d2430}.budget-position--compact{align-items:center;grid-template-columns:minmax(13rem,16rem) minmax(0,1fr);height:100%;min-height:0}.budget-position__compact-chart{min-width:0;position:relative}.budget-position__compact-total{display:grid;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%)}.budget-position__compact-total span{color:#4f5b66;font-size:.7rem;font-weight:800;text-transform:uppercase}.budget-position__compact-legend{display:grid;gap:.5rem .75rem;grid-template-columns:1fr;margin:0}.budget-position__compact-legend dt{align-items:center;color:#66717b;display:flex;font-size:.72rem;gap:.35rem}.budget-position__chart-swatch{border-radius:2px;display:inline-block;height:.75rem;width:.75rem}.budget-position__chart-swatch.committed{background:#176c5f}.budget-position__chart-swatch.uncommitted{background:#376ea6}.budget-position__compact-legend dd{font-size:.9rem;font-weight:800;margin:.15rem 0 0;overflow-wrap:anywhere}.milestone-highlight{align-items:center;border-left:5px solid #176c5f;display:flex;gap:1rem;justify-content:space-between;margin-bottom:1rem;padding:.85rem 1rem}.milestone-highlight.yellow{background:#fffaf0;border-left-color:#a77b19}.milestone-highlight.red{background:#fff1ef;border-left-color:#a72f2f}.milestone-highlight h3,.milestone-highlight p{margin:0}.milestone-highlight__state{align-items:flex-end;display:grid;gap:.35rem;justify-items:end;text-align:right}.risk-urgency-pill{align-items:center;border:1px solid currentColor;border-radius:999px;display:inline-flex;font-size:.75rem;font-weight:800;gap:.35rem;padding:.35rem .55rem;white-space:nowrap}.risk-urgency-pill.attention{background:#fff3c4;color:#735600}.risk-urgency-pill.warning{background:#fbe3c1;color:#884b00}.risk-urgency-pill.critical{background:#ffe1df;color:#992f28}.risk-priority{color:#66717b;display:block;margin-top:.3rem}.metric-tile strong{display:block;font-size:1.5rem;margin-top:.45rem}.status-tile{padding:1rem}.status-pill{border-radius:999px;display:inline-flex;font-size:.75rem;font-weight:800;justify-content:center;min-width:4.75rem;padding:.4rem .75rem;text-transform:uppercase}.status-pill.green{background:#dff5e7;color:#16633f}.status-pill.yellow{background:#fff3c4;color:#735600}.status-pill.red{background:#ffe1df;color:#992f28}.section-header{align-items:flex-start;display:flex;justify-content:space-between;gap:1rem;margin-bottom:1rem}.form-grid{grid-template-columns:repeat(auto-fit,minmax(13rem,1fr))}.form-grid--labelled{grid-template-columns:minmax(0,1fr)}.form-grid--labelled .field{align-items:center;grid-template-columns:minmax(11rem,.8fr) minmax(0,1.6fr)}.form-grid--labelled .field>span{color:#1d2430;font-size:1rem;font-weight:700}.field span,.checkbox-field{color:#66717b;font-size:.82rem;font-weight:700}.inline-row{grid-template-columns:repeat(2,minmax(0,1fr))}.inline-row.four{grid-template-columns:repeat(4,minmax(0,1fr))}.period-row{align-items:end;border:1px solid #d7dee6;border-radius:8px;display:grid;gap:.75rem;grid-template-columns:1.5rem 1fr 10rem 10rem 7rem;padding:.75rem}.period-row.active{border-color:#176c5f}.checkbox-field{align-items:center;display:flex;gap:.5rem;min-height:2.75rem}.checkbox-field input,.period-row input[type=radio]{width:auto}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{border-bottom:1px solid #d7dee6;padding:.7rem;text-align:left;vertical-align:middle}th{color:#66717b;font-size:.75rem;text-transform:uppercase}td input{width:100%}.narrative-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.narrative-summary>div{background:#fff;border:1px solid #d7dee6;border-radius:8px;display:flex;flex-direction:column;min-height:12rem;padding:1rem}.narrative-summary h3{margin-top:0}.narrative-summary ul{margin:0;padding-left:1.1rem}@media(max-width:900px){.narrative-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.project-grid,.project-tile__meta{grid-template-columns:1fr}.project-tile__code{max-width:55%}.narrative-summary{grid-template-columns:1fr}}.narrative-box-list{display:grid;gap:.75rem}.narrative-tabs{display:flex;flex-wrap:wrap;gap:.5rem}.narrative-tabs button{background:transparent;border:1px solid rgba(28,46,62,.18);color:#1d2430;text-align:left}.narrative-tabs button.active{background:#f0f7f4;border-color:#176c5f}.narrative-box{align-items:end;display:grid;gap:.75rem;grid-template-columns:minmax(0,1fr) auto}.pending-issue-box{grid-template-columns:repeat(2,minmax(0,1fr)) auto}.narrative-delete{min-height:2.75rem}.contractor-card-actions,.contractor-address-grid{display:flex;gap:.5rem}.contractor-address-grid>*{flex:1}.risk-filters,.risk-detail__fields,.risk-ratings{display:grid;gap:.75rem}.risk-filters{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:1rem}.risk-register-table{display:grid;gap:.5rem}.risk-register-row{background:#fff;border:1px solid #d7dee6;color:#1d2430;display:grid;gap:.7rem;grid-template-columns:minmax(0,1fr);padding:.85rem;text-align:left}.risk-register-row:hover,.risk-register-row:focus-visible{border-color:#176c5f;box-shadow:inset 3px 0 #176c5f}.risk-register-row span{min-width:0}.risk-register-row__main strong{display:block;font-size:1rem;line-height:1.35;overflow-wrap:anywhere}.risk-register-row__indicator{color:#536171;display:block;line-height:1.4;margin-top:.25rem;overflow-wrap:anywhere}.risk-register-row__metadata{display:grid;gap:.75rem;grid-template-columns:repeat(6,minmax(0,1fr))}.risk-register-row__metadata>span{display:grid;font-size:.9rem;gap:.15rem;min-width:0;overflow-wrap:anywhere}.risk-register-row__metadata small{color:#66717b;display:block;font-size:.75rem}.risk-detail{border:1px solid #d7dee6;padding:1rem}.risk-detail__heading{align-items:start;display:flex;gap:1rem;justify-content:space-between;margin-bottom:1rem}.risk-detail__heading h3{margin:0}.risk-detail__fields,.risk-ratings{grid-template-columns:repeat(2,minmax(0,1fr))}.risk-ratings{border-top:1px solid #d7dee6;margin-top:1rem;padding-top:1rem}.empty-state{color:#66717b}.readonly-field{align-content:center;border:1px solid #d7dee6;display:grid;gap:.35rem;min-height:2.75rem;padding:.6rem .75rem}.readonly-field span,.form-hint,.financial-contract header span,.payment-history p{color:#66717b;font-size:.875rem}.form-hint{margin:.9rem 0 0}.inline-form{align-items:end;display:grid;gap:.75rem;grid-template-columns:repeat(3,minmax(0,1fr));margin:.75rem 0 1rem}.inline-form button{align-self:end}.financial-contract{border-top:1px solid #d7dee6;padding:1rem 0}.financial-contract header{align-items:center;display:flex;gap:1rem;justify-content:space-between}.financial-contract header div{display:grid;gap:.2rem}.financial-contract-metrics{display:grid;gap:.75rem;grid-template-columns:repeat(4,minmax(0,1fr));margin:.85rem 0}.financial-contract-metrics div{display:grid;gap:.25rem}.financial-contract-metrics dt{color:#66717b;font-size:.8rem}.financial-contract-metrics dd{margin:0}.financial-negative{color:#a72f2f;font-weight:700}.payment-history{border-top:1px solid #e4e9ed;padding-top:.75rem}.payment-history ul{margin:.4rem 0;padding-left:1.2rem}.exception-list{display:grid;gap:.65rem;list-style:none;margin:0;padding:0}.exception-list li{border-left:4px solid #a72f2f;display:grid;gap:.2rem;padding:.6rem .75rem}.save-toast{align-items:center;border:1px solid #d7dee6;display:flex;gap:.75rem;justify-content:space-between;padding:.7rem .85rem}.save-toast.saving{border-left:4px solid #a77b19}.save-toast.saved{border-left:4px solid #176c5f}.save-toast.error{border-left:4px solid #a72f2f}.report-due-banner{align-items:baseline;background:#edf4e8;border-left:4px solid #176c5f;display:flex;gap:.6rem;margin:0;max-width:100%;padding:.75rem .9rem}.report-due-banner span{min-width:0;overflow-wrap:anywhere}.report-due-banner.overdue{background:#fff1ef;border-left-color:#a72f2f}.milestones-panel{display:grid;gap:1rem}.milestones-panel__actions{align-items:center;display:flex;gap:1rem;justify-content:flex-end}.milestones-panel__actions .save-toast{margin-right:auto}.modal-panel.modal-panel--wide{max-width:min(72rem,calc(100vw - 3rem));width:72rem}.milestone-revisions,.milestone-delete-action{white-space:nowrap}.milestone-delete-action{text-align:right}.milestone-history-modal{display:grid;gap:1rem}.milestone-history-modal__entries{margin:0;max-height:min(50vh,28rem);overflow-y:auto;padding:.25rem 1.25rem .25rem 2rem}.milestone-history-modal__entries li{margin-bottom:.75rem}@media(max-width:760px){.modal-panel--wide{width:min(100%,calc(100vw - 2rem))}}.modal-backdrop{align-items:center;background:#1d243073;display:flex;inset:0;justify-content:center;padding:1rem;position:fixed;z-index:20}.modal-panel{max-width:36rem;padding:1.25rem;width:min(100%,36rem)}.modal-header{margin-bottom:1rem}.modal-actions{display:flex;gap:.75rem;justify-content:flex-end}.modal-form{display:grid;gap:.85rem}.modal-form label{display:grid;gap:.35rem}.contractor-modal form{display:grid;gap:.85rem}.contractor-modal label{display:grid;gap:.35rem}.directory-lookup-status p{margin:0}.lookup-error{color:#9f2525}.duplicate-warning{background:#fff6da;border-left:4px solid #ae7600;color:#5a4000;padding:.75rem}.duplicate-warning p{margin:.35rem 0 .75rem}.duplicate-warning ul{display:grid;gap:.5rem;list-style:none;margin:0;padding:0}.duplicate-warning li{align-items:center;display:flex;gap:.75rem;justify-content:space-between}.duplicate-warning small{display:block}@media(max-width:980px){.app,.workspace-shell{grid-template-columns:1fr}.sidebar{padding:1rem}.sidebar nav{grid-template-columns:repeat(2,minmax(0,1fr))}.workspace-topbar,.workspace-context-row,.report-summary-grid,.project-overview__header,.modal-header,.hero-panel,.inline-row,.inline-row.four,.pending-issue-box,.narrative-box,.period-row,.risk-filters,.risk-detail__fields,.risk-ratings{grid-template-columns:1fr;display:grid}.risk-register-row{align-items:start;grid-template-columns:1fr}.risk-register-row__metadata{grid-template-columns:repeat(2,minmax(0,1fr))}.workspace-sidebar{min-height:auto;position:static}.workspace-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.budget-position--compact{grid-template-columns:1fr}.budget-position__compact-chart{max-width:12rem}.contractor-search,.contractor-suggestions li,.contractor-card,.inline-form,.financial-contract-metrics,.milestone-highlight,.report-due-banner{align-items:stretch;display:grid;grid-template-columns:1fr}.milestone-highlight__state{justify-items:start;text-align:left}}.project-setup-row{align-items:end;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}.project-setup-row .destructive-button{align-self:end;white-space:nowrap}@media(max-width:620px){.form-grid--labelled .field{align-items:stretch;grid-template-columns:1fr}.project-setup-row{grid-template-columns:1fr}.project-setup-row .destructive-button{justify-self:start}}.photo-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.photo-card{border:1px solid var(--line);border-radius:.5rem;display:grid;gap:.75rem;margin:0;overflow:hidden;padding:.75rem}.photo-card img{aspect-ratio:4 / 3;object-fit:cover;width:100%}.upload-zone{align-items:center;background:color-mix(in srgb,var(--accent) 5%,var(--panel));border:2px dashed color-mix(in srgb,var(--accent) 45%,var(--line));border-radius:.5rem;cursor:pointer;display:grid;gap:.35rem;justify-items:center;min-height:9rem;padding:1.25rem;text-align:center;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}.upload-zone:hover{background:color-mix(in srgb,var(--accent) 9%,var(--panel));border-color:var(--accent)}.upload-zone:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.upload-zone--drag-active{background:color-mix(in srgb,var(--accent) 14%,var(--panel));border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}.upload-zone--busy{cursor:wait;opacity:.65}.upload-zone__input{height:1px;opacity:0;overflow:hidden;position:absolute;width:1px}.upload-zone span{color:var(--muted);font-size:.9rem}.selected-upload-file{color:var(--muted);margin:0}.blocking-progress{align-items:center;display:flex;gap:.85rem;min-height:4rem}.blocking-progress p{margin:0}.loading-spinner{animation:loading-spin .8s linear infinite;border:3px solid var(--line);border-radius:50%;border-top-color:var(--accent);height:1.4rem;width:1.4rem}@keyframes loading-spin{to{transform:rotate(360deg)}}.report-photo-previews{display:flex;gap:.75rem}.report-photo-previews img{aspect-ratio:4 / 3;border-radius:.4rem;object-fit:cover;width:min(10rem,30vw)}.modal-description{margin-top:0}.report-photo-gallery{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));margin-bottom:1rem;max-height:min(55vh,34rem);overflow-y:auto;padding:.25rem}.report-photo-gallery__item{background:var(--panel);border:2px solid var(--line);border-radius:.5rem;color:inherit;display:grid;gap:.45rem;overflow:hidden;padding:.45rem;position:relative;text-align:left}.report-photo-gallery__item:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.report-photo-gallery__item--selected{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 24%,transparent)}.report-photo-gallery__item img{aspect-ratio:4 / 3;object-fit:cover;width:100%}.report-photo-gallery__details{display:grid;font-size:.85rem;gap:.2rem}.report-photo-gallery__details time{color:var(--muted)}.report-photo-gallery__check{align-items:center;background:var(--accent);border-radius:50%;color:#fff;display:flex;font-weight:700;height:1.5rem;justify-content:center;position:absolute;right:.7rem;top:.7rem;width:1.5rem}.photo-feed{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.photo-feed figcaption{display:grid;gap:.35rem}.photo-feed time{color:var(--muted);font-size:.85rem}@media print{.sidebar,.project-hub,.workspace-utility-row,.module-nav,.section-actions,.notice,.error{display:none!important}.app,.workspace-shell{display:block}.content{padding:0}.modal-backdrop{display:none!important}}
