:root{
  --navy:#1c3c60; --copper:#b06a37; --tan:#d8b98f; --ink:#1f2937; --paper:#f6f7f9;
  --bs-primary:#1c3c60; --bs-primary-rgb:28,60,96; --bs-link-color:#1c3c60; --bs-link-color-rgb:28,60,96;
  --bs-body-font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;
}
body{background:var(--paper);color:var(--ink)}
.brand-mark{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:8px;background:var(--navy);color:#fff;font-weight:700;font-size:.85rem}
.brand-name{color:var(--navy)}
.btn-primary{--bs-btn-bg:var(--navy);--bs-btn-border-color:var(--navy);--bs-btn-hover-bg:#16304e;--bs-btn-hover-border-color:#16304e;--bs-btn-active-bg:#16304e}
.btn-outline-primary{--bs-btn-color:var(--navy);--bs-btn-border-color:var(--navy);--bs-btn-hover-bg:var(--navy);--bs-btn-hover-border-color:var(--navy)}
.list-group-item.active{background:var(--navy);border-color:var(--navy)}
.progress-bar{background:var(--copper)}
.hero{background:linear-gradient(135deg,var(--navy),#2b5a8a);color:#fff}
.fact{position:relative}
.fact-missing>.d-flex .form-label::after{content:""}
.usedby .badge{font-weight:500;font-size:.68rem}
.cite{white-space:nowrap;color:#6b7280}
.reuse{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:.4rem .75rem}
.reuse strong{color:var(--copper)}
.track-card{transition:box-shadow .15s}
.track-card:hover{box-shadow:0 4px 14px rgba(0,0,0,.06)}
.htmx-request{opacity:.6;transition:opacity .2s}
#toast{position:fixed;right:16px;bottom:16px;z-index:1080}
@media print{.no-print,nav,footer{display:none!important}body{background:#fff}.form-preview{max-width:none!important}}
.sigpad{border:1.5px dashed #9aa5b1;border-radius:8px;background:#fff;height:190px}
.sigpad canvas{width:100%;height:100%;touch-action:none;display:block}
.htmx-indicator{display:none}.htmx-request .htmx-indicator,.htmx-request.htmx-indicator{display:inline}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.roadmap{position:relative;margin:0;padding:0}
.roadmap .stage{display:flex;gap:14px;position:relative;padding-bottom:18px}
.roadmap .stage:not(:last-child)::before{content:"";position:absolute;left:17px;top:38px;bottom:0;width:2px;background:#dfe3e8}
.stage-num{flex:0 0 36px;height:36px;border-radius:50%;display:grid;place-items:center;font-weight:700;background:#fff;border:2px solid #cfd6de;color:#6b7280;z-index:1}
.stage-body{flex:1;background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:12px 14px}
.stage-current .stage-num{border-color:var(--copper);color:var(--copper)}
.stage-current .stage-body{border-color:var(--copper);box-shadow:0 2px 10px rgba(176,106,55,.12)}
.stage-done .stage-num{background:#17703a;border-color:#17703a;color:#fff}
.stage-done .stage-body{opacity:.75}
.stage-blocked .stage-num{border-color:#b42318;color:#b42318}
.stage-blocked .stage-body{border-color:#f1aeb5}
.step{display:flex;gap:8px;padding:6px 0;border-top:1px dashed #eef0f3}
.step:first-child{border-top:0}
.step .tick{flex:0 0 18px;height:18px;margin-top:2px;border-radius:4px;border:1.5px solid #cfd6de;font-size:.75rem;display:grid;place-items:center}
.step-done .tick{background:#17703a;border-color:#17703a;color:#fff}
.step-blocked .tick{background:#b42318;border-color:#b42318;color:#fff}
.kpi{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:12px 14px;height:100%}
.kpi-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:#6b7280}
.kpi-val{font-size:1.45rem;font-weight:700;color:var(--navy);line-height:1.2;margin:2px 0 6px}
.gantt{position:relative;padding:10px 12px;overflow:hidden}
.g-row{display:flex;align-items:center;min-height:22px}
.g-label{flex:0 0 38%;padding-right:10px}
.g-track{flex:1;position:relative;height:16px;border-left:1px solid #eef0f3}
.g-head .g-track{height:18px}
.g-tick{position:absolute;top:0;font-size:.68rem;color:#6b7280;transform:translateX(-2px);white-space:nowrap}
.g-stage{margin-top:6px}.g-stage .g-label{font-size:.72rem;font-weight:700;text-transform:uppercase;color:#6b7280}
.g-bar{position:absolute;top:3px;height:10px;border-radius:3px}
.g-crit,.lg.g-crit{background:var(--copper)}.g-norm,.lg.g-norm{background:#8fa7c4}
.g-done,.lg.g-done{background:#17703a}.g-blocked,.lg.g-blocked{background:#b42318}
.lg{display:inline-block;width:12px;height:8px;border-radius:2px;margin-right:4px;vertical-align:middle}
.g-today{position:absolute;top:6px;bottom:6px;width:0;border-left:2px dashed #b42318;margin-left:12px}
.g-today span{position:absolute;top:-2px;left:3px;font-size:.65rem;color:#b42318;font-weight:600}
.chk{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:4px;border:1.5px solid #cfd6de;font-size:.75rem}
.chk.done{background:#17703a;border-color:#17703a;color:#fff}.chk.blocked{background:#b42318;border-color:#b42318;color:#fff}
.step-isdone{background:#fafbfa}
.note{border-radius:10px;padding:8px 12px;margin-bottom:8px;border:1px solid #e5e7eb}
.note-staff{background:#f2f6fb;border-color:#d6e2f0}.note-client{background:#fff}
.note-internal{background:#fff8e6;border-color:#f0dca8}
.portal-stages li{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;margin-bottom:6px}
.portal-stages .dot{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;border:2px solid #cfd6de;font-weight:700;font-size:.8rem;color:#6b7280;flex:0 0 26px}
.portal-stages li.done .dot{background:#17703a;border-color:#17703a;color:#fff}
.portal-stages li.current{border-color:var(--copper)}.portal-stages li.current .dot{border-color:var(--copper);color:var(--copper)}
.srcflag{font-size:.75rem;color:#7a5a12;background:#fff6dd;border:1px solid #f0dca8;border-radius:6px;padding:1px 8px;display:inline-block;margin-bottom:4px}
