*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#0c0e14;
  --bg2:#111420;
  --bg3:#161b28;
  --surface:#1c2133;
  --surface2:#222840;
  --border:rgba(255,255,255,0.06);
  --border2:rgba(255,255,255,0.11);
  --text:#e4e8f4;
  --text2:#8b93b0;
  --text3:#555e7a;
  --accent:#e8602a;
  --accent2:#f07840;
  --accent-dim:rgba(232,96,42,0.12);
  --green:#22c55e;
  --green-dim:rgba(34,197,94,0.12);
  --blue:#3b82f6;
  --blue-dim:rgba(59,130,246,0.12);
  --amber:#f59e0b;
  --amber-dim:rgba(245,158,11,0.12);
  --red:#ef4444;
  --red-dim:rgba(239,68,68,0.12);
  --sh:0 1px 2px rgba(0,0,0,0.3),0 4px 16px rgba(0,0,0,0.2);
  --sh2:0 0 0 1px rgba(255,255,255,0.05),0 8px 32px rgba(0,0,0,0.35);
}
html{scroll-behavior:smooth}
body{font-family:'Plus Jakarta Sans',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;font-size:13.5px;line-height:1.55;-webkit-font-smoothing:antialiased}

/* ── TOPNAV ── */
.topnav{
  background:rgba(17,20,32,0.92);
  backdrop-filter:blur(20px);
  height:52px;display:flex;align-items:center;
  padding:0 20px;position:sticky;top:0;z-index:200;
  border-bottom:1px solid var(--border);
}
.nav-logo{
  font-family:'Syne',sans-serif;font-size:16px;font-weight:800;
  color:#fff;margin-right:32px;white-space:nowrap;flex-shrink:0;
  letter-spacing:-0.02em;
}
.nav-logo span{color:var(--accent)}
.nav-links{display:flex;gap:1px;flex:1;overflow-x:auto}
.nav-link{
  padding:5px 12px;border-radius:6px;font-size:12.5px;font-weight:500;
  color:var(--text3);cursor:pointer;transition:all .14s;
  border:none;background:none;font-family:'Plus Jakarta Sans',sans-serif;
  white-space:nowrap;letter-spacing:0.01em;
}
.nav-link:hover{color:var(--text2);background:rgba(255,255,255,0.04)}
.nav-link.active{color:#fff;background:rgba(255,255,255,0.09)}
.nav-right{display:flex;align-items:center;gap:10px;margin-left:16px;flex-shrink:0}
.status-dot{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 6px var(--green);animation:glow 2s ease-in-out infinite}
.status-label{font-size:11.5px;font-weight:500;color:var(--text2)}
.nav-badge{
  background:var(--accent);color:#fff;font-size:10.5px;
  font-weight:700;padding:2px 8px;border-radius:20px;letter-spacing:0.05em;
}
.nav-avatar{
  width:28px;height:28px;border-radius:50%;
  background:linear-gradient(135deg,var(--accent),#f07840);
  display:flex;align-items:center;justify-content:center;
  font-size:10px;font-weight:700;color:#fff;flex-shrink:0;
}

/* ── LAYOUT ── */
.layout{display:flex;min-height:calc(100vh - 52px)}
.sidebar{
  width:200px;background:var(--bg2);flex-shrink:0;
  padding:16px 8px;border-right:1px solid var(--border);
  overflow-y:auto;
}
.sidebar-section{margin-bottom:20px}
.sidebar-label{
  font-size:9.5px;font-weight:700;color:var(--text3);
  text-transform:uppercase;letter-spacing:.12em;
  padding:0 10px;margin-bottom:5px;
}
.sidebar-item{
  display:flex;align-items:center;gap:8px;
  padding:6px 10px;border-radius:7px;
  font-size:12px;font-weight:500;color:var(--text3);
  cursor:pointer;transition:all .13s;margin-bottom:1px;
  border:none;background:none;
  font-family:'Plus Jakarta Sans',sans-serif;width:100%;text-align:left;
}
.sidebar-item:hover{color:var(--text);background:rgba(255,255,255,0.05)}
.sidebar-item.active{color:#fff;background:rgba(232,96,42,0.15);border-left:2px solid var(--accent)}
.sidebar-item .dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.sidebar-item .sbadge{
  margin-left:auto;font-size:10px;background:rgba(255,255,255,0.08);
  padding:1px 6px;border-radius:8px;color:var(--text3);
}
.sidebar-item.active .sbadge{background:var(--accent-dim);color:var(--accent)}
.dot-red{background:#ef4444}.dot-orange{background:#f59e0b}
.dot-green{background:#22c55e}.dot-blue{background:#3b82f6}
.main{flex:1;padding:24px 28px;overflow:auto;min-width:0}
.panel{display:none}.panel.active{display:block;animation:fadeUp .18s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}

/* ── PAGE HEADER ── */
.page-title{
  font-family:'Syne',sans-serif;font-size:22px;font-weight:700;
  color:#fff;margin-bottom:2px;letter-spacing:-0.02em;
}
.page-sub{font-size:12.5px;color:var(--text3);margin-bottom:20px}

/* ── METRICS ── */
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:22px}
.metric{
  background:var(--bg3);border:1px solid var(--border);
  border-radius:12px;padding:16px 18px;box-shadow:var(--sh);
  transition:border-color .15s;
}
.metric:hover{border-color:var(--border2)}
.metric-label{
  font-size:10px;font-weight:700;color:var(--text3);
  text-transform:uppercase;letter-spacing:.1em;margin-bottom:8px;
}
.metric-value{
  font-family:'Syne',sans-serif;font-size:28px;font-weight:700;
  color:#fff;line-height:1;margin-bottom:5px;
}
.metric-delta{font-size:11.5px;color:var(--text3);font-weight:500}
.metric.accent{border-color:rgba(232,96,42,0.25);background:linear-gradient(135deg,var(--bg3),rgba(232,96,42,0.05))}
.metric.accent .metric-value{color:var(--accent)}

/* ── CARDS ── */
.card{
  background:var(--bg3);border:1px solid var(--border);
  border-radius:13px;box-shadow:var(--sh);margin-bottom:16px;overflow:hidden;
}
.card-header{
  padding:16px 20px 0;display:flex;align-items:flex-start;
  justify-content:space-between;margin-bottom:14px;
}
.card-title{
  font-family:'Syne',sans-serif;font-size:14px;font-weight:700;
  color:#fff;letter-spacing:-0.01em;
}
.card-sub{font-size:11px;color:var(--text3);margin-top:2px}
.card-body{padding:0 20px 18px}

/* ── TABLES / LISTS ── */
.list-header{
  display:grid;gap:10px;padding:8px 20px;
  background:var(--surface);border-bottom:1px solid var(--border);
}
.list-hcol{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.09em}
.claim-row{
  display:grid;gap:10px;align-items:center;
  padding:11px 20px;border-bottom:1px solid var(--border);
  transition:background .1s;cursor:pointer;
}
.claim-row:last-child{border-bottom:none}
.claim-row:hover{background:rgba(255,255,255,0.025)}
.claim-cols-5{grid-template-columns:1fr 120px 100px 95px 80px}
.claim-address{font-weight:600;font-size:13px;color:#fff}
.claim-num{font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--text3);margin-top:2px}
.claim-val{font-size:13px;font-weight:600;color:#fff}

/* ── CHIPS ── */
.chip{
  display:inline-flex;align-items:center;font-size:10.5px;font-weight:700;
  padding:2px 8px;border-radius:20px;white-space:nowrap;letter-spacing:0.02em;
}
.chip-green{background:var(--green-dim);color:var(--green);border:1px solid rgba(34,197,94,0.2)}
.chip-orange{background:var(--amber-dim);color:var(--amber);border:1px solid rgba(245,158,11,0.2)}
.chip-red{background:var(--red-dim);color:var(--red);border:1px solid rgba(239,68,68,0.2)}
.chip-blue{background:var(--blue-dim);color:var(--blue);border:1px solid rgba(59,130,246,0.2)}
.chip-gray{background:rgba(255,255,255,0.06);color:var(--text2);border:1px solid var(--border2)}
.chip-accent{background:var(--accent-dim);color:var(--accent);border:1px solid rgba(232,96,42,0.2)}

/* ── BUTTONS ── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:7px 14px;border-radius:8px;font-family:'Plus Jakarta Sans',sans-serif;
  font-size:12.5px;font-weight:600;cursor:pointer;transition:all .14s;
  border:1px solid var(--border2);letter-spacing:0.01em;
}
.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.btn-primary:hover{background:var(--accent2);transform:translateY(-1px);box-shadow:0 4px 16px rgba(232,96,42,0.35)}
.btn:disabled,.btn[disabled]{opacity:.45;cursor:not-allowed;pointer-events:none}
.btn-ghost{background:rgba(255,255,255,0.04);color:var(--text2)}
.btn-ghost:hover{background:rgba(255,255,255,0.08);color:#fff}
.btn-sm{padding:4px 10px;font-size:11.5px;border-radius:6px}
.btn-danger{background:var(--red-dim);color:var(--red);border-color:rgba(239,68,68,0.2)}
.btn-danger:hover{background:var(--red);color:#fff}

/* ── SEARCH ── */
.searchbar{
  display:flex;align-items:center;background:var(--surface);
  border:1px solid var(--border2);border-radius:8px;
  padding:6px 12px;gap:7px;
}
.searchbar input{
  border:none;outline:none;font-family:'Plus Jakarta Sans',sans-serif;
  font-size:12.5px;color:var(--text);background:transparent;width:220px;
}
.searchbar input::placeholder{color:var(--text3)}

/* ── TABS ── */
.tabs{
  display:flex;gap:1px;background:rgba(255,255,255,0.04);
  padding:3px;border-radius:8px;width:fit-content;margin-bottom:16px;
  border:1px solid var(--border);
}
.tab{
  padding:5px 12px;border-radius:5px;font-size:12px;font-weight:500;
  color:var(--text3);cursor:pointer;transition:all .13s;
  border:none;background:none;font-family:'Plus Jakarta Sans',sans-serif;
}
.tab.active{background:var(--surface2);color:#fff;box-shadow:0 1px 4px rgba(0,0,0,.3)}
.tab:hover:not(.active){color:var(--text2)}

/* ── FORMS ── */
.form-group{margin-bottom:13px}
.form-label{
  display:block;font-size:10px;font-weight:700;color:var(--text3);
  text-transform:uppercase;letter-spacing:.09em;margin-bottom:4px;
}
.form-input{
  width:100%;padding:8px 11px;
  border:1px solid var(--border2);border-radius:7px;
  font-family:'Plus Jakarta Sans',sans-serif;font-size:13px;color:var(--text);
  background:var(--surface);outline:none;transition:border-color .13s;
}
.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(232,96,42,0.1)}
.form-input::placeholder{color:var(--text3)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:11px}
select.form-input{appearance:none;cursor:pointer}
textarea.form-input{min-height:78px;resize:vertical}

/* ── UPLOAD ZONE ── */
.upload-zone{
  border:2px dashed var(--border2);border-radius:11px;padding:26px;
  text-align:center;background:rgba(255,255,255,0.02);cursor:pointer;
  transition:all .15s;
}
.upload-zone:hover{border-color:var(--accent);background:var(--accent-dim)}
.upload-zone input[type=file]{display:none}
.upload-icon{font-size:28px;margin-bottom:8px}
.upload-title{font-size:13.5px;font-weight:600;color:#fff;margin-bottom:3px}
.upload-sub{font-size:11.5px;color:var(--text3)}

/* ── WORKER CARDS ── */
.worker-card{
  background:var(--bg3);border:1px solid var(--border);
  border-radius:11px;padding:14px;box-shadow:var(--sh);
  display:flex;gap:12px;align-items:flex-start;margin-bottom:10px;
  transition:border-color .13s;
}
.worker-card:hover{border-color:var(--border2)}
.worker-avatar{
  width:36px;height:36px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;flex-shrink:0;
}
.worker-name{font-size:13px;font-weight:600;color:#fff}
.worker-trade{font-size:11.5px;color:var(--text3);margin-top:1px}
.worker-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.worker-tag{
  font-size:10px;padding:2px 7px;border-radius:20px;
  background:rgba(255,255,255,0.06);color:var(--text2);
  border:1px solid var(--border);
}
.stars{color:var(--amber);font-size:11.5px}

/* ── MARKETING ── */
.mkt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;margin-top:4px}
.mkt-card{
  background:var(--bg3);border:1px solid var(--border);
  border-radius:12px;box-shadow:var(--sh);overflow:hidden;
  display:flex;flex-direction:column;transition:border-color .13s;
}
.mkt-card:hover{border-color:var(--border2)}
.mkt-img{
  aspect-ratio:4/3;background:var(--surface);
  display:flex;align-items:center;justify-content:center;
  font-size:30px;border-bottom:1px solid var(--border);
}
.mkt-body{padding:12px}
.mkt-name{font-size:12.5px;font-weight:600;color:#fff;margin-bottom:2px}
.mkt-type{font-size:11px;color:var(--text3)}

/* ── TIMELINE ── */
.timeline-item{display:flex;gap:11px;padding:10px 0;border-bottom:1px solid var(--border)}
.timeline-item:last-child{border-bottom:none}
.tl-dot{
  width:25px;height:25px;border-radius:50%;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:700;margin-top:1px;
}
.tl-dot-accent{background:var(--accent-dim);color:var(--accent)}
.tl-dot-green{background:var(--green-dim);color:var(--green)}
.tl-dot-blue{background:var(--blue-dim);color:var(--blue)}
.tl-dot-gray{background:rgba(255,255,255,0.06);color:var(--text3)}
.tl-title{font-size:12.5px;font-weight:600;color:#fff;margin-bottom:2px}
.tl-sub{font-size:11px;color:var(--text3)}

/* ── LETTER BOX ── */
.letter-box{
  background:var(--surface);border:1px solid var(--border);border-radius:9px;
  padding:16px;font-family:'JetBrains Mono',monospace;font-size:11px;
  line-height:1.8;color:var(--text2);white-space:pre-wrap;
  max-height:300px;overflow-y:auto;
}

/* ── PHONE CARD ── */
.phone-card{
  background:linear-gradient(135deg,#0e111e,#161c2e);
  border:1px solid rgba(255,255,255,0.08);
  border-radius:13px;padding:18px 20px;margin-bottom:16px;
  position:relative;overflow:hidden;
}
.phone-card::before{
  content:'';position:absolute;top:-40px;right:-40px;
  width:120px;height:120px;border-radius:50%;
  background:radial-gradient(circle,rgba(232,96,42,0.15),transparent);
  pointer-events:none;
}
.phone-number{
  font-family:'JetBrains Mono',monospace;font-size:18px;
  color:#fff;letter-spacing:.04em;margin-bottom:5px;
}
.phone-status{font-size:11.5px;color:var(--text3);display:flex;align-items:center;gap:7px}
.phone-live{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green);animation:glow 1.8s ease-in-out infinite}

/* ── CHAT ── */
.chat-wrap{
  background:var(--surface);border:1px solid var(--border);
  border-radius:10px;padding:14px;min-height:200px;max-height:300px;
  overflow-y:auto;display:flex;flex-direction:column;gap:9px;margin-bottom:10px;
}
.bubble-user{
  align-self:flex-end;background:var(--accent-dim);
  border:1px solid rgba(232,96,42,0.2);
  border-radius:11px 2px 11px 11px;
  padding:8px 12px;font-size:12px;color:var(--text);max-width:82%;
}
.bubble-agent{
  align-self:flex-start;background:var(--surface2);
  border:1px solid var(--border2);
  border-radius:2px 11px 11px 11px;
  padding:8px 12px;font-size:12px;color:var(--text);max-width:82%;
}
.bubble-label{font-size:9.5px;font-weight:700;margin-bottom:3px;text-transform:uppercase;letter-spacing:.07em}
.bubble-label-user{color:var(--accent)}
.bubble-label-agent{color:var(--green)}

/* ── EVIDENCE GRID ── */
.evidence-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:6px;margin-top:10px}
.evidence-thumb{
  aspect-ratio:1;border-radius:8px;background:var(--surface);
  border:1px solid var(--border);display:flex;align-items:center;
  justify-content:center;cursor:pointer;position:relative;overflow:hidden;
  transition:transform .12s;
}
.evidence-thumb:hover{transform:scale(1.04)}
.ev-label{
  position:absolute;bottom:0;left:0;right:0;
  background:rgba(0,0,0,.6);color:#fff;font-size:8.5px;
  text-align:center;padding:3px;font-weight:600;
}

/* ── STORM ── */
.storm-banner{
  background:linear-gradient(135deg,rgba(245,158,11,0.1),rgba(239,68,68,0.1));
  border:1px solid rgba(245,158,11,0.2);border-radius:11px;
  padding:12px 16px;display:flex;align-items:center;gap:12px;margin-bottom:16px;
}

/* ── INFO TABLE ── */
.info-table{width:100%;border-collapse:collapse}
.info-table tr td{
  padding:7px 0;font-size:12.5px;border-bottom:1px solid var(--border);
}
.info-table tr:last-child td{border-bottom:none}
.info-table td:first-child{color:var(--text3);font-weight:500;width:120px}
.info-table td:last-child{color:#fff;font-weight:500}

/* ── TOAST ── */
.toast-wrap{position:fixed;bottom:24px;right:24px;z-index:1000;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{
  background:var(--surface2);border:1px solid var(--border2);
  border-radius:10px;padding:12px 16px;font-size:12.5px;
  color:var(--text);box-shadow:var(--sh2);
  display:flex;align-items:center;gap:10px;pointer-events:auto;
  animation:slideIn .2s ease;min-width:260px;max-width:340px;
}
.toast.success{border-color:rgba(34,197,94,0.3)}
.toast.error{border-color:rgba(239,68,68,0.3)}
.toast-icon{font-size:16px;flex-shrink:0}
@keyframes slideIn{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:none}}
@keyframes glow{0%,100%{opacity:1}50%{opacity:0.45}}

/* ── LOADING ── */
.loading-overlay{
  display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);
  z-index:500;align-items:center;justify-content:center;
}
.loading-overlay.show{display:flex}
.loading-box{
  background:var(--bg3);border:1px solid var(--border2);
  border-radius:16px;padding:32px 40px;text-align:center;
  box-shadow:var(--sh2);
}
.spinner{
  width:36px;height:36px;border:3px solid var(--surface2);
  border-top-color:var(--accent);border-radius:50%;
  animation:spin .7s linear infinite;margin:0 auto 16px;
}
@keyframes spin{to{transform:rotate(360deg)}}

/* Per-photo "analyzing" overlay used on the Adjuster panel's
 * thumbnail grid while a photo_report row is in flight. Sits
 * over the thumbnail image; cleared on photo_report.ready. */
.adj-thumb-wrap{position:relative;display:inline-block}
.adj-thumb-overlay{
  position:absolute;inset:0;border-radius:8px;
  background:rgba(13,15,18,0.55);
  display:flex;align-items:center;justify-content:center;
  pointer-events:none;
}
.adj-thumb-spinner{
  width:22px;height:22px;border:2px solid rgba(255,255,255,0.25);
  border-top-color:var(--accent);border-radius:50%;
  animation:spin .7s linear infinite;
}
/* Generic PDF "thumbnail" — a document-shaped icon card (no page
   render; see notes/pdf_persistence.md §14). Reuses .adj-thumb-wrap so
   the analyzing spinner overlay drops straight on top. */
.pdf-thumb{
  width:150px;height:132px;border-radius:8px;
  background:var(--surface);border:1px solid var(--border);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:9px;padding:10px;text-align:center;
}
.pdf-thumb-badge{
  font-family:'Syne',sans-serif;font-weight:700;font-size:13px;letter-spacing:.08em;
  color:#fff;background:var(--accent);border-radius:5px;padding:4px 9px;
}
.pdf-thumb-name{
  font-size:10px;color:var(--text3);max-width:100%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
a:hover > .adj-thumb-wrap > .pdf-thumb{border-color:var(--accent)}
.loading-title{
  font-family:'Syne',sans-serif;font-size:16px;font-weight:700;
  color:#fff;margin-bottom:4px;
}
.loading-sub{font-size:12px;color:var(--text3)}

/* ── SCROLLBARS ── */
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--surface2);border-radius:10px}
::-webkit-scrollbar-thumb:hover{background:var(--border2)}

/* ── MISC ── */
.two-col{display:grid;grid-template-columns:1fr 300px;gap:16px}
.two-col-big{display:grid;grid-template-columns:1fr 330px;gap:16px}
.half{display:grid;grid-template-columns:1fr 1fr;gap:16px}
a{color:inherit;text-decoration:none}

/* ── CHAT THINKING INDICATOR (in-bubble spinner while agent is generating) ── */
.chat-thinking{display:flex;align-items:center;gap:8px}
.chat-thinking-dot{
  width:14px;height:14px;
  border:2px solid var(--surface);border-top-color:var(--accent);
  border-radius:50%;
  animation:spin .7s linear infinite;
  flex-shrink:0;
}
.chat-thinking-text{color:var(--text2);font-size:11.5px}

/* ── MARKDOWN BODY (assistant turns rendered via marked + DOMPurify) ── */
.md-body{word-wrap:break-word}
.md-body > *:first-child{margin-top:0}
.md-body > *:last-child{margin-bottom:0}
.md-body h1,.md-body h2,.md-body h3,.md-body h4{font-family:'Syne',sans-serif;color:#fff;margin:14px 0 6px;line-height:1.25}
.md-body h1{font-size:18px}
.md-body h2{font-size:16px}
.md-body h3{font-size:14px}
.md-body h4{font-size:13px}
.md-body p{margin:6px 0}
.md-body strong{color:#fff;font-weight:700}
.md-body em{font-style:italic}
.md-body ul,.md-body ol{margin:6px 0;padding-left:22px}
.md-body li{margin:3px 0}
.md-body code{background:rgba(255,255,255,0.06);padding:1px 5px;border-radius:4px;font-family:'JetBrains Mono',monospace;font-size:.92em}
.md-body pre{background:rgba(0,0,0,0.3);padding:10px;border-radius:6px;overflow-x:auto;margin:8px 0}
.md-body pre code{background:transparent;padding:0;font-size:11px}
.md-body blockquote{border-left:3px solid var(--accent);padding:2px 10px;margin:8px 0;color:var(--text2);background:rgba(232,96,42,.05)}
.md-body table{border-collapse:collapse;width:100%;margin:8px 0;font-size:.95em}
.md-body th,.md-body td{border:1px solid var(--border);padding:5px 8px;text-align:left;vertical-align:top}
.md-body th{background:var(--surface);color:#fff;font-weight:700}
.md-body hr{border:none;border-top:1px solid var(--border);margin:12px 0}
.md-body a{color:var(--accent);text-decoration:underline}
