:root{
  --navy:#0F1F40; --navy2:#1A2D54; --gold:#C9A95C; --gold-d:#8C734A;
  --red:#C0392D; --green:#2C6B4F; --amber:#D4881C;
  --grey:#F4F5F7; --ink:#222A35; --ink-soft:#4A5568; --white:#fff;
}
*{box-sizing:border-box}
body{margin:0;font-family:Calibri,"Segoe UI",system-ui,sans-serif;color:var(--ink);background:var(--grey)}
a{color:var(--gold-d);text-decoration:none}
a:hover{text-decoration:underline}

.topbar{background:var(--navy);color:#fff;padding:.7rem 1.5rem;display:flex;align-items:center;gap:1.5rem;border-bottom:3px solid var(--gold)}
.topbar .firm{font-size:.72rem;letter-spacing:.12em;color:var(--gold);font-weight:700;display:block}
.topbar .product{font-size:1.05rem;font-weight:700}
.topbar .tagline{font-size:.7rem;letter-spacing:.08em;color:var(--gold-d);margin-left:auto}
.topbar .logout{color:var(--gold);font-size:.85rem;margin-left:1rem}

.wrap{max-width:1080px;margin:1.5rem auto;padding:0 1.25rem}
.card{background:#fff;border:1px solid #e3e6ea;border-radius:10px;padding:1.4rem 1.6rem;margin-bottom:1.3rem;box-shadow:0 1px 3px rgba(15,31,64,.05)}
h1{color:var(--navy);font-size:1.5rem;margin:.2rem 0 .6rem}
h2{color:var(--navy);font-size:1.15rem;margin:.2rem 0 .8rem}
.muted{color:var(--ink-soft)}
.small{font-size:.82rem}
.mono{font-family:ui-monospace,Menlo,Consolas,monospace}

.row{display:flex;gap:1.2rem;flex-wrap:wrap;margin-bottom:1rem}
.row label{flex:1;min-width:220px;display:flex;flex-direction:column;font-size:.85rem;color:var(--ink-soft);gap:.3rem}
input[type=text],input[type=date],input[type=password]{padding:.55rem .7rem;border:1px solid #ccd2da;border-radius:6px;font-size:.95rem}
input[type=file]{margin-top:.4rem;font-size:.85rem}

.uploads{display:grid;gap:.9rem;margin:1.2rem 0}
.upload-role{border:1px dashed #ccd2da;border-radius:8px;padding:.8rem 1rem;background:#fbfcfd}
.role-head{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.role-label{font-weight:700;color:var(--navy)}
.role-desc{color:var(--ink-soft);font-size:.82rem}
.req{color:var(--red)}
.store-note{margin-top:.5rem}
.store-note input{width:100%;margin:.3rem 0}

.btn-gold{background:var(--gold);color:var(--navy);border:1px solid var(--gold-d);padding:.6rem 1.4rem;border-radius:7px;font-weight:700;cursor:pointer;font-size:.95rem}
.btn-gold:hover{background:var(--gold-d);color:#fff}
.btn-gold.big{font-size:1.05rem;padding:.75rem 2rem;margin-top:.5rem}

table{width:100%;border-collapse:collapse;font-size:.9rem}
th{background:var(--navy2);color:#fff;text-align:left;padding:.5rem .7rem;font-weight:600}
td{padding:.5rem .7rem;border-bottom:1px solid #eef0f3}
tr:nth-child(even) td{background:#fafbfc}
.results td.ok{color:var(--green);font-weight:700}
.results td.warn{color:var(--amber);font-weight:700}
th.r,td.r{text-align:right}
.backlink{display:inline-block;margin:.2rem 0 .9rem;color:#fff;background:var(--navy2);font-size:.82rem;font-weight:600;text-decoration:none;padding:.32rem .8rem;border-radius:7px;border:1px solid rgba(255,255,255,.12)}
.backlink:hover{background:var(--navy);text-decoration:none}
@media print{.backlink{display:none}}

.badge{padding:.18rem .6rem;border-radius:12px;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.badge.queued{background:#e8eaf0;color:var(--ink-soft)}
.badge.running{background:#fef3d6;color:var(--amber)}
.badge.done{background:#dff0e6;color:var(--green)}
.badge.error{background:#fbe2df;color:var(--red)}

.log{background:var(--navy);color:#cfe3d4;padding:1rem;border-radius:8px;font-family:ui-monospace,Consolas,monospace;font-size:.82rem;line-height:1.5;max-height:340px;overflow:auto;white-space:pre-wrap}
.err{background:#2a0f0d;color:#ffb4ac;padding:1rem;border-radius:8px;font-family:ui-monospace,monospace;font-size:.8rem;white-space:pre-wrap;overflow:auto}
.job-meta{display:flex;gap:1rem;align-items:center;color:var(--ink-soft)}

.login-card{max-width:380px;margin:5rem auto;background:#fff;border-radius:12px;padding:2rem;box-shadow:0 4px 18px rgba(15,31,64,.12);border-top:4px solid var(--gold)}
.login-card form{display:flex;flex-direction:column;gap:.8rem;margin:1rem 0}
.foot{text-align:center;color:var(--ink-soft);font-size:.78rem;padding:1.5rem}

/* ---- role groups, gauge, streams (v1.1) ---- */
.upload-group{margin:1.4rem 0 .6rem}
.group-title{margin:.2rem 0 .7rem;padding-bottom:.4rem;border-bottom:2px solid var(--gold);color:var(--navy)}
.chip{display:inline-block;font-size:.62rem;font-weight:700;letter-spacing:.04em;padding:.08rem .4rem;border-radius:10px;background:var(--navy);color:#fff;vertical-align:middle;margin-left:.3rem}
.chip.kill{background:#8a8f99}
.killrow{display:block;font-size:.8rem;color:var(--ink-soft);margin:.2rem 0 .4rem}
.killrow input{margin-right:.35rem}
.card-inset{background:#f6f7fb;border:1px solid #e3e6ef;border-radius:10px;padding:1rem 1.2rem;margin:1.2rem 0}
.gauge-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}
.gauge-bar{height:9px;background:#e0e3ee;border-radius:6px;overflow:hidden}
.gauge-fill{height:100%;background:linear-gradient(90deg,var(--gold),#2C6B4F);transition:width .25s ease}
.streamlist{list-style:none;padding:0;margin:.8rem 0 0;display:grid;gap:.35rem}
.streamlist li{display:flex;align-items:center;gap:.5rem;font-size:.9rem}
.streamlist .dot{width:9px;height:9px;border-radius:50%;background:#c9ccd6;flex:none}
.streamlist li.ok .dot{background:#2C6B4F}
.streamlist li.pending .dot{background:#D4881C}
#runBtn:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.3)}
.exc-grid{display:flex;gap:1.2rem;flex-wrap:wrap;margin:.4rem 0 .8rem}
.exc-pill{background:#fff;border:1px solid #e3e6ef;border-left:4px solid var(--amber);border-radius:8px;padding:.5rem .9rem;min-width:130px}
.exc-pill b{display:block;font-size:1.15rem;color:var(--navy)}
.exc-pill.red{border-left-color:var(--red)}

/* ---- multi-user nav, roles, queue, audit (v1.2) ---- */
.usernav{display:flex;align-items:center;gap:1rem;margin-left:auto;font-size:.9rem}
.usernav a{color:#fff;text-decoration:none;opacity:.9}
.usernav a:hover{opacity:1;text-decoration:underline}
.usernav .who{color:#fff;opacity:.85}
.rolechip{display:inline-block;font-size:.62rem;font-weight:700;letter-spacing:.04em;padding:.08rem .4rem;border-radius:10px;background:#5b6478;color:#fff;margin-left:.2rem}
.rolechip.ADMIN{background:#7a4ec0}.rolechip.HOA{background:#2C6B4F}.rolechip.RAO{background:#C9A95C;color:#0F1F40}
.rolechip.AGENT{background:#1f6feb;color:#fff}.rolechip.AGENT::before{content:"\01F916 "}
.rolebanner{background:#f6f7fb;border:1px solid #e3e6ef;border-radius:8px;padding:.5rem .8rem;font-size:.88rem}
.err-msg{color:var(--red);font-size:.85rem}
.exc-table .resolve-form{display:flex;gap:.3rem}
.exc-table .resolve-form input{padding:.25rem .4rem;font-size:.82rem;min-width:140px}
.btn-mini{background:var(--navy);color:#fff;border:none;border-radius:6px;padding:.25rem .6rem;font-size:.8rem;cursor:pointer}
.btn-mini:hover{background:var(--gold);color:var(--navy)}
tr.sla-overdue{background:#fdeceb}

/* ---- engagements, file lists, user mgmt (v1.3) ---- */
.newform summary{display:inline-block;cursor:pointer;list-style:none}
.newform summary::-webkit-details-marker{display:none}
.filelist{list-style:none;padding:0;margin:.4rem 0}
.filelist li{display:flex;align-items:center;gap:.5rem;padding:.2rem 0;border-bottom:1px solid #eef0f5}
.uploadrow{display:flex;gap:.5rem;align-items:center;margin-top:.5rem}
.inline{display:inline}
.btn-x{background:none;border:none;color:var(--red);cursor:pointer;font-size:.85rem;padding:0 .3rem}
.upload-role.locked{opacity:.6}
.lock-note{font-style:italic}
.ok-msg{color:#2C6B4F;font-size:.85rem}
select{padding:.25rem .4rem;border:1px solid #ccd;border-radius:6px}

.sub{margin:1.1rem 0 .4rem;font-size:1rem;color:var(--navy)}

.queue-top{display:flex;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;align-items:flex-start}
.cat-summary{margin-left:auto}
.cat-summary .exc-pill{border-left-color:var(--navy)}
.cat-summary .exc-pill.red{border-left-color:var(--red)}

/* ---- analytics: weekday bars + calendar heatmap (v1.5) ---- */
.wd-bars{display:flex;gap:.6rem;align-items:flex-end;height:160px;padding-top:1rem}
.wd-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}
.wd-bar{width:60%;background:linear-gradient(180deg,#C9A95C,#0F1F40);border-radius:4px 4px 0 0;min-height:3px}
.wd-amt{font-size:.7rem;color:var(--ink-soft);margin-top:.3rem}
.wd-lbl{font-size:.78rem;font-weight:600;color:var(--navy)}
.cal-wrap{display:flex;gap:2rem;flex-wrap:wrap}
.cal{flex:1;min-width:320px}
.cal-title{font-weight:700;color:var(--navy);margin-bottom:.5rem}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.cal-head .cal-dow{font-size:.7rem;text-align:center;color:var(--ink-soft);padding:.2rem 0}
.cal-cell{aspect-ratio:1/1;border-radius:5px;padding:.3rem .35rem;display:flex;flex-direction:column;justify-content:space-between;min-height:54px}
.cal-cell.empty{background:transparent !important}
.cal-d{font-size:.74rem;font-weight:700;color:var(--navy)}
.cal-v{font-size:.84rem;font-weight:700;color:var(--ink)}
.cal-d.lite,.cal-v.lite{color:#fff}
.mix-row{display:flex;gap:2rem;flex-wrap:wrap}
.mix-col{flex:1;min-width:280px}

.streamlist li{flex-wrap:wrap}
.runbtn{margin-left:auto}
.runbtn .btn-gold{padding:.25rem .7rem;font-size:.82rem}

.btn-clear{background:none;border:1px solid var(--red);color:var(--red);border-radius:6px;padding:.2rem .55rem;font-size:.78rem;cursor:pointer;margin-left:.4rem}
.btn-clear:hover{background:var(--red);color:#fff}

/* ---- exception category tabs (v1.7) ---- */
.cat-tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.1rem 0 .3rem}
.cat-tab{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .7rem;border-radius:18px;background:#eef0f5;color:var(--navy);text-decoration:none;font-size:.84rem;border:1px solid transparent}
.cat-tab:hover{background:#e2e6ef}
.cat-tab.on{background:var(--navy);color:#fff}
.cat-tab.has-overdue{border-color:var(--red)}
.cat-n{background:rgba(0,0,0,.12);border-radius:10px;padding:0 .4rem;font-weight:700;font-size:.78rem}
.cat-tab.on .cat-n{background:rgba(255,255,255,.25)}
.cat-amt{font-size:.72rem;opacity:.85}

.filter-card{padding:.9rem 1.2rem}
.filter-form{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap}
.filter-form label{display:flex;flex-direction:column;font-size:.8rem;color:var(--ink-soft);gap:.25rem}
.filter-form .btn-gold{padding:.45rem 1.1rem}
.clear-link{font-size:.85rem;align-self:center}

.report-table th,.report-table td{white-space:nowrap;padding:.4rem .6rem}
.report-table tr.latest-row td{background:#fef9ec !important;font-weight:600}
.report-table tr.wk td:nth-child(2){color:var(--gold-d);font-weight:700}
.report-table .total-row td{background:var(--navy);color:#fff;border-top:2px solid var(--gold)}

/* ---- executive report (v1.9) ---- */
.report-doc{max-width:820px;margin:0 auto}
.rep-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:3px solid var(--gold);padding-bottom:.6rem;margin-bottom:1rem}
.rep-firm{font-size:.8rem;letter-spacing:.12em;color:var(--gold-d);font-weight:700}
.rep-tag{font-size:.62rem;letter-spacing:.1em;color:var(--ink-soft)}
.rep-meta{font-size:.78rem;color:var(--ink-soft)}
.rep-title{font-size:1.7rem;color:var(--navy);margin:.3rem 0 .1rem}
.rep-sub{color:var(--ink-soft);margin:0 0 1rem}
.rep-h{font-size:1.05rem;color:var(--navy);border-left:4px solid var(--gold);padding-left:.6rem;margin:1.4rem 0 .6rem}
.rep-kpis{display:flex;flex-wrap:wrap;gap:1rem;margin:.5rem 0}
.rep-kpis div{flex:1;min-width:150px;background:#f6f7fb;border-radius:8px;padding:.6rem .8rem}
.rep-kpis span{font-size:.72rem;color:var(--ink-soft);display:block}
.rep-kpis b{font-size:1.15rem;color:var(--navy)}
.rep-kpis i{font-size:.72rem;color:var(--ink-soft);font-style:normal;margin-left:.3rem}
.rep-table{width:100%;border-collapse:collapse;font-size:.86rem;margin:.4rem 0}
.rep-table th{background:var(--navy2);color:#fff;padding:.4rem .6rem;text-align:left}
.rep-table td{padding:.35rem .6rem;border-bottom:1px solid #eef0f3}
.rep-table td.r{text-align:right}
.rep-table th.r{text-align:right}
/* ---- run history: current vs superseded ---- */
.run-stale td{opacity:.5}
.run-badge{display:inline-block;padding:.05rem .42rem;border-radius:4px;font-size:.78rem;margin-right:.28rem;font-weight:600}
.run-badge.cur{background:#e7f3ec;color:#1f7a47}
.run-badge.sup{background:#f0f0f3;color:#9aa0a6;text-decoration:line-through}
.tag-cur{display:inline-block;padding:.06rem .46rem;border-radius:4px;background:#1f7a47;color:#fff;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.rep-table td.good{color:var(--green);font-weight:700}
.rep-table td.warnc{color:var(--amber);font-weight:700}
.rep-exposure td{border-bottom:1px solid #eef0f3}
.rep-table tr.rep-total td{border-top:2px solid var(--gold);background:#f6f7fb}
.rep-foot{margin-top:1.6rem;padding-top:.6rem;border-top:1px solid #e3e6ea;font-size:.72rem;color:var(--ink-soft)}
@media print{
  .topbar,.usernav,.noprint,.foot{display:none !important}
  body{background:#fff}.wrap{margin:0;max-width:100%}.card{box-shadow:none;border:none;margin:0}
}

.navlabel{font-size:.66rem;color:var(--gold);opacity:.75;text-transform:uppercase;letter-spacing:.07em;font-weight:700}
.navsep{width:1px;height:14px;background:rgba(255,255,255,.25);display:inline-block}

/* ---- nav dropdown (v2.0) ---- */
.navdrop{position:relative;display:inline-block;padding-bottom:.7rem;margin-bottom:-.7rem}
.navdrop-toggle{cursor:pointer;color:#fff;opacity:.9;font-size:.9rem;display:inline-block}
.navdrop:hover .navdrop-toggle{opacity:1}
.navdrop-menu{display:none;position:absolute;top:100%;left:0;background:#1A2D54;border:1px solid rgba(255,255,255,.18);border-radius:7px;padding:.3rem 0;min-width:130px;z-index:60;box-shadow:0 6px 16px rgba(0,0,0,.35)}
.navdrop:hover .navdrop-menu,.navdrop:focus-within .navdrop-menu{display:block}
.navdrop-menu a{display:block;padding:.45rem 1rem;color:#fff;opacity:.9;white-space:nowrap;font-size:.88rem}
.navdrop-menu a:hover{background:rgba(255,255,255,.12);opacity:1;text-decoration:none}

/* ── Process & User Manual ── */
.manual-toc{line-height:1.9;margin-top:.5rem}
.manual-toc a{color:#0F1F40;white-space:nowrap}
.manual-flow{background:#F4F6FA;border:1px solid #d9dfea;border-left:3px solid #0F1F40;border-radius:6px;
  padding:.9rem 1.1rem;overflow-x:auto;font-size:.8rem;line-height:1.5;color:#0F1F40;margin:.6rem 0}
.report-doc h2.rep-h[id]{scroll-margin-top:80px}

/* ── Floating Recon Assist widget ── */
#ra-fab{position:fixed;right:24px;bottom:24px;z-index:1000;width:64px;height:64px;border-radius:50%;
  border:none;cursor:pointer;background:#0F1F40;color:#fff;box-shadow:0 8px 22px rgba(15,31,64,.40);
  display:flex;align-items:center;justify-content:center;transition:transform .15s,background .15s}
#ra-fab svg{width:30px;height:30px}
#ra-fab:hover{background:#16284f;transform:translateY(-2px) scale(1.04)}
#ra-fab.open{background:#D4881C}
#ra-fab::after{content:"Ask Recon Assist";position:absolute;right:74px;bottom:18px;white-space:nowrap;
  background:#0F1F40;color:#fff;font-size:.78rem;padding:.35rem .6rem;border-radius:7px;opacity:0;
  pointer-events:none;transition:opacity .15s;box-shadow:0 4px 12px rgba(15,31,64,.28)}
#ra-fab:hover::after{opacity:1}
#ra-fab.open::after{display:none}
@keyframes ra-pop{from{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:none}}
#ra-panel{position:fixed;right:24px;bottom:100px;z-index:1000;width:368px;max-width:calc(100vw - 32px);
  height:min(620px,calc(100vh - 140px));background:#fff;border:1px solid #d9dfea;border-radius:16px;
  box-shadow:0 18px 48px rgba(15,31,64,.34);display:flex;flex-direction:column;overflow:hidden;
  transform-origin:bottom right;animation:ra-pop .17s ease-out}
#ra-panel[hidden]{display:none}   /* author display:flex above would otherwise defeat the hidden attr */
.ra-head{display:flex;align-items:center;gap:.5rem;padding:.7rem .9rem;background:#0F1F40;color:#fff}
.ra-head b{font-size:1rem}
.ra-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#888;vertical-align:middle}
.ra-scope{margin-left:auto;max-width:160px;font-size:.75rem;padding:.25rem .35rem;border-radius:6px;border:1px solid #2b3c66;background:#16284f;color:#fff}
.ra-head #ra-close{background:none;border:none;color:#fff;font-size:1.5rem;line-height:1;cursor:pointer;padding:0 .15rem}
.ra-log{flex:1;overflow-y:auto;padding:.85rem;display:flex;flex-direction:column;gap:.6rem;background:#fbfcfe}
.ra-msg{display:flex}
.ra-msg.user{justify-content:flex-end}
.ra-bub{max-width:86%;padding:.6rem .8rem;border-radius:12px;font-size:.9rem;line-height:1.5}
.ra-msg.bot .ra-bub{background:#F4F6FA;border:1px solid #e1e6f0;color:#0F1F40;border-top-left-radius:3px}
.ra-msg.user .ra-bub{background:#0F1F40;color:#fff;border-top-right-radius:3px}
.ra-bub b{font-weight:700}.ra-bub ul{margin:.3rem 0 .3rem 1.1rem;padding:0}.ra-bub code{background:#eef1f7;padding:0 .2rem;border-radius:3px}
.ra-typing .ra-bub{opacity:.6;font-style:italic}
.ra-form{display:flex;gap:.5rem;padding:.6rem;border-top:1px solid #eef0f5;align-items:flex-end}
.ra-form textarea{flex:1;resize:none;font:inherit;font-size:.9rem;padding:.6rem .7rem;border:1px solid #cdd4e0;border-radius:9px;min-height:46px;max-height:120px;line-height:1.4}
.ra-form .btn-gold{padding:.55rem 1rem;font-size:1rem;align-self:stretch}
.ra-foot{padding:.35rem .9rem .6rem;text-align:center}
.ra-foot a{font-size:.76rem;color:#6b748c}
@media (max-width:480px){#ra-panel{width:calc(100vw - 24px);height:calc(100vh - 96px);right:12px;bottom:88px}}
@media print{#ra-fab,#ra-panel{display:none!important}}

/* ── Parse warning box (empty/wrong-composition uploads) ── */
.warn-box{background:#FFF7E6;border:1px solid #E8C879;border-left:4px solid #D4881C;border-radius:8px;
  padding:.7rem .9rem;margin:.2rem 0 .8rem;color:#6B4E12;font-size:.9rem;line-height:1.5}
.warn-box b{color:#8a5a00}
