:root{font-family:"Segoe UI",Tahoma,Arial,sans-serif;background:#eef3f7;color:#17304b;--navy:#10263b;--teal:#087a73;--muted:#536981;--line:#dbe4ed;--paper:#fff;line-height:1.55}
*{box-sizing:border-box}body{margin:0}a{color:var(--teal)}button,input,textarea,select{font:inherit}button,a,input,textarea,select{outline-offset:3px}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}[hidden]{display:none!important}
h1,h2,h3,p{margin:0}h1{font-size:clamp(1.65rem,4vw,2.55rem);line-height:1.18}h2{font-size:1.23rem}h3{font-size:1.05rem}small,.muted{color:var(--muted)}.loading{padding:2rem}
.topbar{background:#fff;display:flex;justify-content:space-between;align-items:center;padding:.7rem clamp(1rem,4vw,3rem);gap:1rem;border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:.8rem;color:var(--navy);text-decoration:none}.brand img{width:50px;height:50px;object-fit:contain}.brand span{display:grid;font-weight:750;line-height:1.3}.brand small{font-weight:500}
.shell{display:grid;grid-template-columns:215px minmax(0,1fr);min-height:calc(100vh - 74px)}aside{background:var(--navy);color:#fff;padding:1.3rem .8rem}aside nav{position:sticky;top:1rem;display:grid;gap:.35rem}
aside a,aside button{color:#edf7fe;text-align:start;padding:.75rem .9rem;border:0;background:transparent;border-radius:.55rem;text-decoration:none}
aside a[aria-current],aside button[aria-current],aside a:hover,aside button:hover{background:#24485d}
.content{width:min(1300px,100%);padding:clamp(1rem,3vw,2.4rem);margin-inline:auto;min-width:0}
.hero{background:linear-gradient(115deg,#10263b,#17555e);color:#fff;border-radius:1rem;padding:clamp(1.2rem,4vw,2.7rem);display:grid;gap:.85rem;margin-bottom:1.2rem}
.hero p,.hero small{color:#d6e7ef}.hero progress{accent-color:#50d8c4;max-width:34rem}.bar{display:flex;justify-content:space-between;align-items:center;gap:.7rem;flex-wrap:wrap}
.stack{display:grid;gap:.9rem}.grid{display:grid;gap:.9rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,255px),1fr))}.panel,.project-card{background:#fff;border:1px solid var(--line);padding:1rem;border-radius:.8rem;min-width:0}.panel>*+*{margin-top:.7rem}.project-card{display:grid;gap:.55rem;text-align:start;text-decoration:none;color:inherit}.project-card:hover{border-color:var(--teal);box-shadow:0 3px 10px #17304b13}
.pill{background:#e6f4f2;color:#175a54;padding:.2rem .6rem;border-radius:2rem;white-space:nowrap;font-size:.82rem}progress{width:100%;height:.7rem;accent-color:var(--teal)}
form{display:grid;gap:.8rem}.fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,175px),1fr));gap:.65rem}label{font-size:.9rem;font-weight:600;display:grid;gap:.25rem;min-width:0}input,textarea,select{color:inherit;border:1px solid #c6d2dd;border-radius:.5rem;padding:.53rem .63rem;width:100%;background:#fff;min-width:0}textarea{min-height:75px;resize:vertical}input[type=file]{font-size:.82rem}
.primary,.secondary{display:inline-block;text-decoration:none;border-radius:.55rem;padding:.52rem .8rem;border:1px solid transparent;font-weight:650;text-align:center;width:fit-content}
.primary{background:var(--teal);color:white}.secondary{color:#17304b;background:#fff;border-color:#c5d3df}.actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.actions form{display:contents}
details>summary{cursor:pointer;font-weight:700}details[open]>summary{margin-bottom:.75rem}.stage-summary{display:flex;align-items:center;gap:.6rem}.stage-summary b{margin-inline-start:auto}
.updates{display:grid;gap:.6rem;margin-top:.8rem}.update{border:1px solid #dce6ee;border-radius:.55rem;padding:.65rem;overflow-wrap:anywhere}.update a{display:block;width:fit-content;margin-top:.4rem}.update img{display:block;max-height:240px;max-width:100%;border-radius:.4rem}
.auth{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.auth-intro{background:linear-gradient(130deg,#10263b,#145052);color:white;padding:clamp(1.4rem,7vw,6rem);display:grid;align-content:center;gap:1.1rem}.auth-intro img{width:85px;background:#fff;border-radius:.9rem;padding:.35rem}.auth-body{max-width:500px;width:100%;margin:auto;padding:clamp(1.2rem,4vw,3rem)}.auth-body> *+*{margin-top:1rem}
.quote-row{display:grid;grid-template-columns:minmax(140px,2fr) repeat(5,minmax(72px,1fr)) minmax(68px,1fr) auto;gap:.48rem;align-items:end;padding:.54rem 0;border-bottom:1px solid var(--line)}.quote-row output{font-size:.87rem}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{border-bottom:1px solid var(--line);text-align:start;padding:.6rem}thead th{background:#edf5f8}.camera{width:100%;height:clamp(230px,44vw,430px);border:0;border-radius:.6rem;background:#10263b}
.toast{position:fixed;z-index:3;bottom:1rem;inset-inline:1rem;margin:auto;width:fit-content;max-width:calc(100% - 2rem);background:#17304b;color:white;padding:.7rem 1rem;border-radius:.6rem;box-shadow:0 5px 30px #0002}.toast[data-error]{background:#8c3038}
@media(max-width:900px){.quote-row{grid-template-columns:repeat(4,minmax(0,1fr))}.quote-row label:first-child{grid-column:span 2}}
@media(max-width:740px){.shell{display:block}aside{padding:.45rem .75rem}aside nav{display:flex;overflow:auto}aside nav>*{flex:none;font-size:.86rem}aside a,aside button{padding:.44rem .65rem}.auth{display:block}.auth-intro{padding:1.2rem}.auth-intro img{width:52px}.topbar{padding:.5rem .75rem}.topbar .identity{display:none}}
@media(max-width:425px){.quote-row{grid-template-columns:repeat(3,minmax(0,1fr))}.quote-row label:first-child{grid-column:1/-1}}
@page{size:A4;margin:14mm}
@media print{body{background:#fff;color:#000}#app,#status{display:none!important}#print:not([hidden]){display:block}.print-logo{width:68px;max-height:68px;object-fit:contain}.print-letterhead{position:fixed;inset:0;width:100%;height:100%;object-fit:fill;z-index:-1;opacity:.32}.print-title{border-bottom:2px solid #124358;padding-bottom:.5rem;margin-bottom:1rem}thead{display:table-header-group}tr{break-inside:avoid}th,td{border:1px solid #adb5bd}}
