:root{font-family:Calibri,Inter,system-ui,sans-serif;color:#242532;background:#f5f5f8;font-size:16px;--line:#dedee7;--muted:#646575;--ink:#303148;--red:#c82d36;--orange:#da8400;--purple:#625984}*{box-sizing:border-box}body{margin:0}a{color:#484568;text-underline-offset:3px}header{height:72px;padding:0 4vw;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:35px;background:white}.brand{font-size:25px;font-weight:900;letter-spacing:.12em;text-decoration:none;color:#252631}.brand span{font-size:12px;padding:4px 6px;background:#eeedf4;border-radius:4px;vertical-align:middle}.strap{flex:1;color:var(--muted);font-size:14px}header>a:last-child{font-size:14px}main{max-width:1600px;margin:auto;padding:36px 4vw}.heading{display:flex;justify-content:space-between;gap:25px;align-items:center;margin-bottom:25px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:.16em;color:var(--muted);margin:0 0 8px}h1{font-size:36px;letter-spacing:-1px;margin:0}h2{font-size:24px;margin:0}h3{font-size:18px;margin:0 0 7px}.sub{color:var(--muted);margin:9px 0 0}.project-tools{min-width:260px;display:grid;gap:6px}.project-tools label{margin:0;font-size:13px}.programme-bar{display:flex;justify-content:space-between;align-items:center;gap:18px;border:1px solid var(--line);border-radius:10px;background:#eeedf4;padding:18px 20px}.programme-bar p{margin:5px 0 0;font-size:13px;color:var(--muted)}.actions{display:flex;gap:18px;align-items:center;flex-wrap:wrap;font-size:14px}.pilot-note{font-size:13px;padding:10px 2px;color:var(--muted)}button,input,select,textarea{font:inherit}button{background:#fff;border:1px solid #c7c6d3;border-radius:7px;color:var(--ink);padding:10px 14px;cursor:pointer;font-weight:600}button:hover{border-color:var(--purple);background:#f4f2f9}button:disabled{opacity:.5;cursor:default}button.primary{color:#fff;background:var(--ink);border-color:var(--ink)}button.primary:hover{background:#4b4666}button:focus-visible,a:focus-visible{outline:3px solid #9c8fd3;outline-offset:2px}input,select,textarea{width:100%;padding:10px;border:1px solid #c7c6d3;border-radius:6px;background:#fff;color:var(--ink);min-width:0}input:focus,select:focus,textarea:focus{outline:2px solid #b4a7d7;outline-offset:1px}.counts{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:23px 0}.count{padding:17px 18px;display:flex;text-align:left;align-items:center;gap:13px;background:white;border:1px solid var(--line);border-radius:9px}.count strong{font-size:29px;font-weight:700}.count span{font-weight:400;font-size:14px;color:var(--muted)}.count.active{outline:2px solid var(--purple);outline-offset:0}.dot{display:inline-block;flex-shrink:0;width:10px;height:10px;border-radius:50%;background:#fff;border:1px solid #a3a3b1}.dot.red{background:var(--red);border-color:var(--red)}.dot.orange{background:var(--orange);border-color:var(--orange)}.dot.all{background:var(--purple);border-color:var(--purple)}.toolbar{display:flex;justify-content:space-between;gap:20px;margin-bottom:14px}.toolbar>input{max-width:420px}.table-wrap{border:1px solid var(--line);border-radius:10px;background:white;overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}thead{background:#f2f2f7}th{font-weight:600;color:#656577;font-size:12px;text-align:left;padding:14px 17px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:17px;border-bottom:1px solid #ececf0;vertical-align:top}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fcfbff}td:first-child{width:29%;min-width:220px}td:nth-child(3){width:28%;min-width:200px}.ref-button{padding:0;border:0;background:none;color:#605979;font-size:11px;letter-spacing:.04em;display:block;margin-bottom:6px}.item-title{font-weight:600;font-size:15px}.risk-line{display:flex;gap:9px;align-items:baseline}.risk-line .dot{width:8px;height:8px}.small{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.45}.date-button{border:0;padding:0;border-bottom:1px dotted #848295;border-radius:0;font-size:14px;background:none}.tag{display:inline-block;background:#f0eff6;font-size:11px;padding:4px 7px;border-radius:4px;margin:0 4px 4px 0;white-space:nowrap}.footnote{font-size:12px;line-height:1.6;color:var(--muted);max-width:950px;margin-top:18px}#empty{padding:20px;text-align:center;color:var(--muted)}#message,.error{border:1px solid #cf8b8f;border-left:4px solid var(--red);padding:12px 15px;margin:12px 0;background:white;border-radius:6px;font-size:14px}#message.success{border-color:#aba0c2;border-left-color:var(--purple)}dialog{width:min(740px,calc(100vw - 24px));max-height:94vh;border:1px solid var(--line);border-radius:13px;padding:26px;box-shadow:0 20px 100px #24253355;overflow-y:auto}dialog::backdrop{background:#24253266}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;margin-bottom:20px}.dialog-head>.close{padding:2px 10px;font-size:25px;font-weight:400;border:0}.dialog-footer{display:flex;justify-content:flex-end;gap:12px;position:sticky;bottom:-26px;background:white;border-top:1px solid var(--line);padding:18px 0 5px;margin-top:22px}.editor-section{border-top:1px solid var(--line);padding-top:19px;margin-top:22px}.editor-section>p,dialog>p{color:var(--muted);font-size:14px;line-height:1.5}label{display:block;font-size:13px;font-weight:600;margin:12px 0}label>input,label>select,label>textarea{display:block;margin-top:6px;font-size:15px;font-weight:400}.two{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.check{display:flex;align-items:center;gap:8px;font-weight:400}.check input{width:auto;accent-color:var(--purple);margin:0}.step-field{display:grid;grid-template-columns:1fr 100px 100px;gap:12px;align-items:center;padding:7px 0;border-bottom:1px solid #eeeef3}.step-field label{margin:0}.step-field>span{font-size:12px;color:var(--muted)}.hint{font-size:12px!important;color:var(--muted);line-height:1.5}.date-note{color:#47425e!important;font-weight:600}#timeline{display:flex;overflow-x:auto;gap:8px;margin-top:16px}.milestone{border:1px solid var(--line);border-top:3px solid #a39ab9;flex:1;min-width:125px;border-radius:5px;padding:10px;font-size:13px}.milestone strong{display:block;margin-bottom:7px}.milestone span{display:block;color:var(--muted);font-size:11px;margin-top:5px}.milestone.install{border-top-color:var(--ink)}#risk-summary{font-size:13px;line-height:1.5}#import-preview{max-height:45vh;overflow:auto}#import-preview table{font-size:13px}#history{font-size:12px;line-height:1.6;color:var(--muted)}details{margin-top:15px}#task-picker{max-width:100%}@media(max-width:800px){header{gap:12px}.strap{display:none}header>a:last-child{margin-left:auto}main{padding-top:24px}.heading{display:block}h1{font-size:30px}.project-tools{margin-top:20px}.programme-bar{display:block}.programme-bar .actions{margin-top:15px;gap:14px}.counts{gap:8px}.count{padding:12px;display:block}.count strong{font-size:25px;display:block}.count .dot{float:right}.count span{font-size:12px}.toolbar{flex-direction:column;gap:12px}.toolbar>input{max-width:none}.toolbar>.actions{justify-content:space-between}.two{grid-template-columns:1fr}.step-field{grid-template-columns:1fr 70px 90px}dialog{padding:18px}.dialog-footer{bottom:-18px}td{padding:13px}th{padding:13px}}

.workflow-link{display:block;border:0;background:transparent;padding:6px 0 0;text-align:left;font-size:12px;color:#5d527c;text-decoration:underline}.group-status{border:1px solid var(--line);padding:12px;margin:10px 0;border-radius:7px;background:#faf9fd}.group-status>span{margin-left:12px}.group-status p{font-size:13px;white-space:pre-wrap}.upload-list{border-left:3px solid #b1a5ce;padding-left:14px;font-size:13px}.remove-member{font-size:11px;padding:4px 6px}#pdf-dialog{width:96vw;max-width:1500px}#canvas-wrap{height:60vh;overflow:auto;background:#dfdee7;padding:10px;text-align:center}#review-canvas{background:white;display:block;margin:auto;touch-action:none;height:auto}.pdf-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.pdf-controls label{margin:0;display:flex;align-items:center;gap:8px}.pdf-controls select{width:auto;margin:0}#mark-list{font-size:13px;max-height:150px;overflow:auto}#review-save-state{font-size:13px;align-self:center;margin-right:auto}#activation-link{margin:10px 0;font-size:12px}[hidden]{display:none!important}

.draft-banner{background:#e6e2ef;color:#303148;border-bottom:1px solid #d5cfe1;text-align:center;padding:10px 16px;font-size:15px;font-weight:800;letter-spacing:.22em}
/* The schedule is a grid of item rows; each fact/action is a rounded card. */
main{max-width:1900px;padding-left:2.5vw;padding-right:2.5vw}
.procurement-board{--columns:minmax(170px,1.3fr) minmax(115px,.85fr) minmax(125px,.95fr) minmax(225px,1.65fr) minmax(135px,1fr) minmax(145px,1.05fr)}
.grid-head,.procurement-row{display:grid;grid-template-columns:var(--columns);gap:10px;padding:12px}
.grid-head{position:sticky;top:0;z-index:2;background:#f5f5f8f5;color:var(--muted);font-size:12px;font-weight:700;backdrop-filter:blur(8px)}
.grid-head>span{padding:0 3px}.grid-rows{display:grid;gap:16px}
.procurement-row{border:1px solid #dcdbe7;border-radius:16px;background:#eeedf4;align-items:start;box-shadow:0 2px 4px #30314804}
.grid-cell,.cell-cards{min-width:0}.cell-cards{display:grid;gap:8px;align-content:start}.cell-label{display:none}
.grid-card{display:flex;flex-direction:column;align-items:flex-start;gap:7px;min-width:0;width:100%;padding:13px 12px;border:1px solid #dbdae6;border-radius:12px;background:#fff;text-align:left;font-size:13px;font-weight:400;line-height:1.35;overflow-wrap:anywhere;box-shadow:0 2px 3px #30314803}
button.grid-card:hover{background:#fdfcff;border-color:#a399bc;box-shadow:0 3px 9px #61547c15;transform:translateY(-1px)}
.grid-card strong{font-size:13px;font-weight:650;line-height:1.35}.grid-card .card-title{font-size:14px}
.card-kicker{font-size:10px;line-height:1.3;color:#777285;font-weight:650;letter-spacing:.06em;text-transform:uppercase}
.card-meta{display:block;color:var(--muted);font-size:11px;line-height:1.45;font-weight:400;max-width:100%}
.card-link{font-size:11px;color:#63537e;font-weight:650;margin-top:3px}
.card-people,.card-activity,.file-name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.card-status{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;line-height:1.35}.card-status .dot{width:8px;height:8px}
.dot.red{box-shadow:0 0 7px #c82d3650}.dot.orange{box-shadow:0 0 7px #da840045}
.item-card .item-title{font-size:16px;letter-spacing:0;line-height:1.45;margin:0;font-weight:700}.item-card .ref-button{margin:0;text-align:left;line-height:1.5;font-size:10px}
.item-card .workflow-link{font-size:11px;padding-top:3px}.attention-card{gap:8px}
.approval-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;align-items:stretch}
.approval-card{min-height:145px;padding:12px 10px;gap:7px}.approval-card .card-title{font-size:13px}.approval-card .card-status{flex-wrap:wrap}.approval-card .card-meta{font-size:10px}
.status-code{font-size:12px;line-height:1.3}.card-add{display:flex;align-items:center;justify-content:space-between;gap:7px;width:100%;min-width:0;border:1px dashed #bfbacb;background:transparent;border-radius:10px;padding:10px 11px;text-align:left;font-size:11px;font-weight:600;line-height:1.4;overflow-wrap:anywhere}
.empty-card{background:#faf9fc}.supplier-card{min-height:145px}.comment-card{min-height:145px}.comment-excerpt{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:5;overflow:hidden;font-size:12px;line-height:1.5;white-space:pre-wrap}
.pack-card,.install-card{border-color:#bfb8d0}.grid-card .date-value{font-size:17px}.date-cards{display:grid;gap:8px}.date-cards:empty,.approval-cards:empty{display:none}.step-card{padding:10px 11px;gap:5px}.step-card strong{font-size:12px}
.review-role-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.review-role-grid .group-status{margin:0;border-radius:12px;background:white;min-width:0;overflow-wrap:anywhere}.review-role-grid .group-status>span{display:block;margin:8px 0 0}
.document-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.document-cards a{overflow-wrap:anywhere}.comment-thread{display:grid;gap:10px}.comment-thread .group-status{margin:0;background:white;border-radius:12px;overflow-wrap:anywhere}
#workflow-dialog{width:min(900px,calc(100vw - 24px))}.workflow-target:focus{outline:2px solid #b4a7d7;outline-offset:7px;border-radius:5px}
.card-deadline{display:grid;gap:5px;width:100%;padding-top:9px;margin-top:3px;border-top:1px solid #eeedf4;font-size:11px;line-height:1.5}.deadline-date time{font-weight:700;white-space:normal}.deadline-status{display:flex;gap:6px;align-items:center;color:var(--muted);font-size:10px}.deadline-status .dot{flex:none;width:7px;height:7px}.deadline-status .dot.red{box-shadow:0 0 6px #e031484d}.deadline-status .dot.orange{box-shadow:0 0 6px #da84004d}
.date-flow{grid-column:1/-1;min-width:0;border-top:1px solid #d7d3e4;padding-top:10px}.date-flow>summary{cursor:pointer;padding:8px 4px;font-size:13px;font-weight:650}.date-flow>summary>span{margin-left:18px;color:var(--muted);font-size:11px;font-weight:400}.date-flow-body{padding:8px 2px}.date-flow-body>p{font-size:12px;line-height:1.5}.flow-warning{color:var(--muted)}.flow-sequence{display:flex;gap:10px;flex-wrap:wrap;align-items:stretch;margin:16px 0}.flow-step{flex:1 1 150px;min-width:0;display:grid;align-content:start;gap:9px;padding:14px 12px;border:1px solid #d7d3e4;border-radius:12px;background:white;position:relative}.flow-step strong{font-size:13px}.flow-step:not(:last-child)::after{content:'→';position:absolute;right:-10px;top:42%;z-index:1;color:#766589;background:#eeedf4}.flow-date{font-size:12px;font-weight:650}.flow-install{border:2px solid #aaa0c2}.step-explanation{grid-column:1/-1;color:var(--muted);font-size:12px;padding:0 0 6px 24px}
@media(max-width:1150px){
 .grid-head{display:none}.procurement-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.item-cell,.approvals-cell{grid-column:1/-1}.cell-label{display:block;font-size:12px;color:var(--muted);margin:0 0 8px}.item-cell>.cell-label{display:none}.item-cell>.cell-cards{grid-template-columns:1.6fr 1fr}.approval-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.date-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:600px){
 .date-flow>summary>span{display:block;margin:5px 0 0 18px}.flow-sequence{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}.flow-step:not(:last-child)::after{content:'↓';top:auto;bottom:-16px;right:50%}
 main{padding-left:16px;padding-right:16px}.procurement-row{grid-template-columns:minmax(0,1fr);padding:12px;gap:18px}.item-cell>.cell-cards{grid-template-columns:1fr}.approval-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.uploads-cell>.cell-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.uploads-cell .pack-card,.uploads-cell .card-add{grid-column:1/-1}.supplier-card,.comment-card{min-height:0}.document-cards{grid-template-columns:1fr}
}

/* Card borders carry state; white card surfaces keep the text readable. */
.grid-card[data-indicator]{border-width:2px;border-left-width:5px}
.grid-card[data-indicator="red"]{border-color:#e54b59}
.grid-card[data-indicator="orange"]{border-color:#d99b24}
.grid-card[data-indicator="green"]{border-color:#39a879}
.flow-toggle{display:block;width:100%;margin-top:10px;text-align:left;padding:7px 9px;background:#f0edf6;color:#41394e;border-color:#b5aacb;font-size:12px}
.card-deadline{margin-top:9px;padding-top:9px}.deadline-date{font-size:12px}.deadline-date time{display:block;font-size:15px;font-weight:750;margin-top:3px}.deadline-status{font-size:11px}
