/* ============================================================
   Consulting Finder Agent — Dark Theme + Glow UI
   ============================================================ */

/* Self-hosted Inter font */
@font-face{font-family:'Inter';font-style:normal;font-weight:300;font-display:swap;src:url('/static/fonts/inter-300.ttf') format('truetype')}
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url('/static/fonts/inter-400.ttf') format('truetype')}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url('/static/fonts/inter-500.ttf') format('truetype')}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url('/static/fonts/inter-600.ttf') format('truetype')}
@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url('/static/fonts/inter-700.ttf') format('truetype')}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
  --bg:#094e47;
  --bg2:#1a0040;
  --surface:rgba(31,0,76,.92);
  --surface2:rgba(45,8,100,.7);
  --border:rgba(254,209,88,.15);
  --border-hi:rgba(254,209,88,.45);
  --text:#f0eff4;
  --text2:#c4b5d9;
  --text3:#8a76a8;
  --accent:#fed158;
  --accent2:#9ee300;
  --accentG:rgba(254,209,88,.3);
  --accent2G:rgba(158,227,0,.25);
  --green:#9ee300;
  --amber:#fed158;
  --r:12px;
  --rL:16px;
  --trans:.25s cubic-bezier(.4,0,.2,1);
}

html{font-size:15px;scroll-behavior:smooth}
body{
  font-family:'Inter',system-ui,-apple-system,sans-serif;
  background:var(--bg);
  color:var(--text);
  min-height:100vh;
  overflow-x:hidden;
  display:flex;flex-direction:column;
  background-image:
    radial-gradient(ellipse 80% 60% at 50% -20%,rgba(31,0,76,.15),transparent),
    radial-gradient(ellipse 60% 50% at 80% 100%,rgba(254,209,88,.1),transparent);
}

/* ===== LANDING PAGE ===== */
.landing{
  position:fixed;inset:0;z-index:500;
  display:flex;align-items:center;justify-content:center;
  background:var(--bg);
  background-image:
    radial-gradient(ellipse 80% 60% at 50% -20%,rgba(31,0,76,.25),transparent),
    radial-gradient(ellipse 60% 50% at 80% 100%,rgba(254,209,88,.12),transparent),
    radial-gradient(ellipse 40% 40% at 20% 60%,rgba(158,227,0,.06),transparent);
  transition:opacity .7s ease, transform .7s ease;
}
.landing.fade-out{
  opacity:0;
  transform:scale(1.03);
  pointer-events:none;
}
.landing-inner{
  max-width:640px;
  padding:2.5rem 2rem;
  text-align:center;
  animation:landingIn .8s ease forwards;
}
@keyframes landingIn{
  from{opacity:0;transform:translateY(30px)}
  to{opacity:1;transform:translateY(0)}
}
.landing-badge{
  display:inline-flex;align-items:center;gap:.4rem;
  padding:.3rem .9rem;margin-bottom:1.8rem;
  font-size:.75rem;font-weight:600;letter-spacing:.05em;
  color:var(--accent);
  background:rgba(254,209,88,.08);
  border:1px solid rgba(254,209,88,.2);
  border-radius:20px;
}
.landing-headline{
  font-size:1.65rem;font-weight:600;line-height:1.45;
  color:var(--text);margin-bottom:1.2rem;
}
.landing-accent{
  color:var(--accent);
  text-shadow:0 0 20px var(--accentG);
}
.landing-sub{
  font-size:1rem;line-height:1.65;
  color:var(--text2);margin-bottom:2rem;
}
.landing-sub strong{color:var(--text);font-weight:600}
.landing-cta{
  display:inline-block;
  padding:.85rem 2.4rem;
  font-size:1rem;font-weight:700;font-family:inherit;
  color:#1f004c;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  border:none;border-radius:12px;
  cursor:pointer;
  box-shadow:0 0 30px var(--accentG),0 4px 20px rgba(0,0,0,.3);
  transition:all .3s ease;
  letter-spacing:.02em;
}
.landing-cta:hover{
  box-shadow:0 0 50px var(--accentG),0 6px 28px rgba(0,0,0,.4);
  transform:translateY(-2px) scale(1.02);
}
.landing-cta:active{
  transform:translateY(0) scale(.98);
}
.landing-hint{
  margin-top:1.2rem;
  font-size:.72rem;color:var(--text3);letter-spacing:.02em;
}

@media(max-width:500px){
  .landing-inner{padding:2rem 1.2rem}
  .landing-headline{font-size:1.25rem}
  .landing-sub{font-size:.88rem}
  .landing-cta{padding:.75rem 1.8rem;font-size:.9rem}
}

/* ===== HEADER ===== */
header{
  display:flex;align-items:center;justify-content:center;gap:2rem;
  padding:.7rem 1.4rem;
  background:rgba(31,0,76,.95);
  backdrop-filter:blur(16px);
  border-bottom:1px solid var(--border);
  position:sticky;top:0;z-index:100;
  flex-wrap:wrap;
}
.header-brand{display:flex;flex-direction:column;align-items:center;gap:.15rem}
.brand-top{display:flex;align-items:center;gap:.5rem}
.logo-icon{font-size:1.3rem;color:var(--accent);filter:drop-shadow(0 0 6px var(--accentG))}
.logo-text{font-weight:700;font-size:1rem;letter-spacing:.03em}
.brand-tagline{font-size:.68rem;color:var(--text3);letter-spacing:.04em;font-weight:400}
.header-steps{display:flex;align-items:center}

/* Step nav */
.step-nav{display:flex;align-items:center;gap:0}
.step-dot{
  width:32px;height:32px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:.72rem;font-weight:600;
  background:var(--surface2);border:2px solid var(--border);
  color:var(--text3);transition:all .4s ease;
}
.step-dot.active{border-color:var(--accent);color:var(--accent);box-shadow:0 0 14px var(--accentG)}
.step-dot.done{border-color:var(--green);color:var(--green);background:rgba(158,227,0,.12)}
.step-line{width:28px;height:2px;background:var(--border);transition:background .4s}
.step-line.done{background:var(--green)}

/* Buttons */
.btn-ghost{
  background:transparent;border:1px solid var(--border);color:var(--text2);
  padding:.35rem .8rem;border-radius:8px;font-size:.78rem;cursor:pointer;
  transition:all var(--trans);
}
.btn-ghost:hover{border-color:var(--text2);color:var(--text)}
.btn-accent{
  background:var(--accent);color:#000;font-weight:600;border:none;
  padding:.35rem .9rem;border-radius:8px;font-size:.78rem;cursor:pointer;
  transition:all var(--trans);box-shadow:0 0 16px var(--accentG);
}
.btn-accent:hover{box-shadow:0 0 24px var(--accentG);transform:translateY(-1px)}

/* ===== MAIN LAYOUT ===== */
main{
  display:grid;
  grid-template-columns:1fr 300px;
  gap:1rem;
  padding:1rem;
  flex:1;
  max-width:1400px;width:100%;margin:0 auto;
}

/* ===== VIZ PANEL ===== */
.viz-panel{
  display:flex;
  height:320px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--rL);
  overflow:hidden;
}
.viz-canvas-wrap{
  flex:6;position:relative;min-width:0;
}
#network-canvas{width:100%;height:100%;display:block}
.viz-progress-wrap{
  flex:4;min-width:0;
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  border-left:1px solid var(--border);
}
.progress-ring-wrap{position:relative;width:180px;height:180px}
.progress-ring{
  position:absolute;inset:0;
  width:100%;height:100%;transform:rotate(-90deg);
}
.ring-bg{fill:none;stroke:var(--border);stroke-width:3}
.ring-fill{
  fill:none;stroke:var(--accent);stroke-width:4;
  stroke-linecap:round;
  stroke-dasharray:264;stroke-dashoffset:264;
  transition:stroke-dashoffset .8s ease;
  filter:drop-shadow(0 0 10px var(--accentG));
}

/* Rotating spinner behind the progress ring */
.progress-ring-spinner{
  position:absolute;inset:-8px;
  width:calc(100% + 16px);height:calc(100% + 16px);
  animation:ringSpin 8s linear infinite;
}
.ring-spinner-track{
  fill:none;
  stroke:rgba(254,209,88,.45);
  stroke-width:1.5;
  stroke-dasharray:40 80 20 60 30 58;
  stroke-linecap:round;
}
.progress-ring-spinner.spin-reverse{
  animation:ringSpinReverse 12s linear infinite;
}
.ring-spinner-track.track-2{
  stroke:rgba(254,209,88,.3);
  stroke-width:1;
  stroke-dasharray:15 45 30 70 10 50;
}
@keyframes ringSpin{
  to{transform:rotate(360deg)}
}
@keyframes ringSpinReverse{
  to{transform:rotate(-360deg)}
}

.ring-label{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  font-size:2.2rem;font-weight:700;color:var(--accent);
  text-shadow:0 0 20px var(--accentG);
}
.ring-label small{font-size:.75rem;color:var(--text2);font-weight:400}
.progress-stage{
  text-align:center;margin-top:.5rem;
  font-size:.8rem;font-weight:500;color:var(--accent);
  letter-spacing:.04em;
  transition:opacity .2s ease;
  text-shadow:0 0 12px var(--accentG);
}
.progress-motivation{
  text-align:center;margin-top:.6rem;
  font-size:.72rem;font-weight:400;
  color:var(--text3);opacity:.55;
  letter-spacing:.02em;
  min-height:1.2em;
  transition:opacity .5s ease;
}
.progress-motivation.fade{opacity:0}

@media(max-width:700px){
  .viz-panel{flex-direction:column;height:auto}
  .viz-canvas-wrap{height:200px}
  .viz-progress-wrap{flex:none;width:100%;height:200px;border-left:none;border-top:1px solid var(--border)}
}
@media(max-width:500px){
  .progress-ring-wrap{width:120px;height:120px}
  .ring-label{font-size:1.6rem}
  .progress-stage{font-size:.7rem}
}

/* ===== WIZARD ===== */
.wizard{position:relative;min-height:320px;margin-top:5px}
.wiz-step{
  display:none;
  animation:fadeSlideIn .45s ease forwards;
}
.wiz-step.active{display:block}
.wiz-step h2{font-size:1.15rem;font-weight:600;margin-bottom:.3rem}
.wiz-sub{color:var(--text2);font-size:.82rem;margin-bottom:1rem}

@keyframes fadeSlideIn{
  from{opacity:0;transform:translateY(16px)}
  to{opacity:1;transform:translateY(0)}
}

/* Card grid */
.card-grid{display:grid;gap:.65rem}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}

.opt-card{
  position:relative;overflow:hidden;
  display:flex;flex-direction:column;align-items:center;gap:.3rem;
  padding:.85rem .5rem;
  background:var(--surface2);
  border:1px solid var(--border);
  border-radius:var(--r);
  cursor:pointer;color:var(--text);
  transition:all .3s ease;
  text-align:center;
}
.opt-card .opt-icon{font-size:1.7rem;transition:transform .3s}
.opt-card strong{font-size:.92rem;font-weight:600}
.opt-card small{font-size:.76rem;color:var(--text3)}
.opt-card:hover{
  border-color:var(--accent);
  box-shadow:0 0 20px var(--accentG),inset 0 0 30px rgba(254,209,88,.06);
  transform:translateY(-3px);
}
.opt-card:hover .opt-icon{transform:scale(1.15)}
.opt-card.selected{
  border-color:var(--accent);
  background:rgba(254,209,88,.1);
  box-shadow:0 0 24px var(--accentG);
}

/* Ripple */
.ripple{
  position:absolute;border-radius:50%;
  background:rgba(254,209,88,.35);
  transform:scale(0);animation:rippleAnim .6s ease-out forwards;
  pointer-events:none;
}
@keyframes rippleAnim{
  to{transform:scale(4);opacity:0}
}

/* ===== CHAT ===== */
.chat-panel{
  display:flex;flex-direction:column;
  height:380px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--rL);
  overflow:hidden;
}
.chat-messages{
  flex:1;overflow-y:auto;padding:1rem;
  display:flex;flex-direction:column;gap:.65rem;
  scrollbar-width:thin;scrollbar-color:var(--border) transparent;
}
.chat-msg{
  max-width:85%;padding:.65rem .85rem;
  border-radius:var(--r);font-size:.82rem;line-height:1.55;
  animation:msgIn .3s ease forwards;
}
@keyframes msgIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.chat-msg.assistant{
  align-self:flex-start;
  background:var(--surface2);border:1px solid var(--border);
  border-bottom-left-radius:4px;
}
.chat-msg.assistant.final-analysis{
  background:rgba(158,227,0,.12);
  border:1px solid rgba(158,227,0,.35);
  color:var(--text);
  max-width:95%;
}
.chat-msg.assistant.final-analysis p,
.chat-msg.assistant.final-analysis li,
.chat-msg.assistant.final-analysis em{color:var(--text2)}
.chat-msg.assistant.final-analysis h3{color:var(--green)}
.chat-msg.assistant.final-analysis h4{color:var(--text)}
.chat-msg.assistant.final-analysis strong{color:var(--green)}
.chat-msg.assistant.final-analysis li::marker{color:var(--green)}
.chat-msg.user{
  align-self:flex-end;
  background:rgba(254,209,88,.12);border:1px solid var(--border-hi);
  border-bottom-right-radius:4px;
}
/* Markdown in chat */
.chat-msg p{margin:0 0 .4rem}
.chat-msg p:last-child{margin-bottom:0}
.chat-msg h3{font-size:.88rem;font-weight:700;color:var(--accent);margin:.6rem 0 .25rem}
.chat-msg h4{font-size:.82rem;font-weight:600;color:var(--text);margin:.5rem 0 .2rem}
.chat-msg strong{color:var(--text);font-weight:600}
.chat-msg em{font-style:italic;color:var(--text2)}
.chat-msg ul{padding-left:1.1rem;margin:.3rem 0}
.chat-msg li{margin-bottom:.15rem;line-height:1.5}
.chat-msg li::marker{color:var(--accent)}

.typing-indicator{
  display:flex;gap:4px;padding:.6rem .85rem;
  align-self:flex-start;align-items:center;
  background:var(--surface2);border:1px solid var(--border);
  border-radius:var(--r);border-bottom-left-radius:4px;
}
.typing-label{
  font-size:.8rem;color:var(--text2);margin-right:6px;
}
.typing-dot{
  width:7px;height:7px;border-radius:50%;background:var(--text3);
  animation:typeBounce 1.2s infinite;
}
.typing-dot:nth-child(2){animation-delay:.15s}
.typing-dot:nth-child(3){animation-delay:.3s}
@keyframes typeBounce{
  0%,60%,100%{transform:translateY(0);opacity:.4}
  30%{transform:translateY(-6px);opacity:1}
}

.chat-bar{
  display:flex;gap:.5rem;padding:.65rem;
  border-top:1px solid var(--border);
  background:rgba(31,0,76,.5);
}
#chat-input{
  flex:1;background:var(--surface2);border:1px solid var(--border);
  border-radius:8px;padding:.5rem .75rem;
  color:var(--text);font-size:.82rem;font-family:inherit;
  outline:none;transition:border-color var(--trans);
}
#chat-input:focus{border-color:var(--accent)}
.btn-send{
  width:38px;height:38px;border-radius:8px;
  background:var(--accent);border:none;color:#000;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;transition:all var(--trans);
  box-shadow:0 0 12px var(--accentG);
}
.btn-send:hover{box-shadow:0 0 20px var(--accentG);transform:scale(1.05)}
.btn-send:disabled{opacity:.4;cursor:default;transform:none;box-shadow:none}

/* ===== EMAIL BAR ===== */
.email-bar{
  padding:1rem;
  margin-top:.75rem;
  background:var(--surface);
  border:1px solid rgba(158,227,0,.25);
  border-radius:var(--rL);
  animation:fadeSlideIn .4s ease forwards;
}
.email-cta{
  text-align:center;padding:0 .5rem .8rem;
}
.email-cta strong{
  display:block;font-size:.95rem;font-weight:700;
  color:var(--accent);margin-bottom:.3rem;
}
.email-cta p{
  font-size:.82rem;line-height:1.55;color:var(--text2);margin:0;
}
.email-bar-inner{
  display:flex;gap:.5rem;align-items:center;
}
.email-icon{color:var(--accent);flex-shrink:0}
#email-input{
  flex:1;background:var(--surface2);border:1px solid var(--border);
  border-radius:8px;padding:.5rem .75rem;
  color:var(--text);font-size:.82rem;font-family:inherit;
  outline:none;transition:border-color var(--trans);
}
#email-input:focus{border-color:var(--accent)}
.btn-email-send{
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  color:#1f004c;font-weight:600;font-size:.78rem;
  border:none;border-radius:8px;padding:.5rem 1rem;
  cursor:pointer;white-space:nowrap;
  box-shadow:0 0 14px var(--accentG);
  transition:all var(--trans);
}
.btn-email-send:hover{box-shadow:0 0 24px var(--accentG);transform:translateY(-1px)}
.btn-email-send:disabled{opacity:.5;cursor:default;transform:none;box-shadow:none}
.email-consent{
  display:flex;align-items:flex-start;gap:.45rem;
  font-size:.72rem;color:var(--text2);margin-top:.45rem;padding-left:30px;
  cursor:pointer;line-height:1.4;
}
.email-consent input[type="checkbox"]{
  margin-top:2px;accent-color:var(--accent);cursor:pointer;flex-shrink:0;
}
.email-hint{
  font-size:.68rem;color:var(--text3);margin-top:.35rem;padding-left:30px;
}

.email-success{
  display:flex;align-items:center;gap:.6rem;
  padding:.75rem .9rem;margin-top:.75rem;
  background:var(--surface);
  border:1px solid rgba(158,227,0,.25);
  border-radius:var(--rL);
  animation:fadeSlideIn .5s ease forwards;
}
.email-success .success-icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:32px;height:32px;border-radius:50%;flex-shrink:0;
  background:rgba(158,227,0,.15);color:var(--green);
  font-size:1.1rem;
  box-shadow:0 0 12px rgba(158,227,0,.3);
}
.email-success strong{font-size:.82rem;color:var(--green);display:block;margin-bottom:.1rem}
.email-success p{font-size:.72rem;color:var(--text2);margin:0}

/* ===== SIDEBAR ===== */
.sidebar{
  display:flex;flex-direction:column;gap:.5rem;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--rL);
  padding:.9rem;
  height:fit-content;
  max-height:calc(100vh - 80px);
  overflow-y:auto;
  position:sticky;top:60px;
  scrollbar-width:thin;scrollbar-color:var(--border) transparent;
}
.sidebar-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.2rem}
.sidebar-head h3{font-size:.85rem;font-weight:600}
.live-dot{
  width:8px;height:8px;border-radius:50%;background:var(--green);
  box-shadow:0 0 8px rgba(158,227,0,.5);
  animation:pulseDot 2s infinite;
}
@keyframes pulseDot{0%,100%{opacity:1}50%{opacity:.4}}

.sb-section{margin-bottom:.1rem}
.sb-label{
  font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;
  color:var(--text3);font-weight:600;margin-bottom:.35rem;
}
.log-list{display:flex;flex-direction:column;gap:.25rem}
.log-entry{
  position:relative;overflow:hidden;
  font-size:.75rem;color:var(--text2);
  padding:.3rem .5rem;
  background:var(--surface2);border-radius:6px;
  border-left:3px solid var(--accent);
  animation:slideInRight .3s ease forwards;
}
/* Shimmer scan effect on sidebar items */
.log-entry.shimmer::after,
.finding-item.shimmer::after,
.role-bar.shimmer::after,
.hypo-box.shimmer::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(90deg,transparent 0%,rgba(254,209,88,.07) 40%,rgba(158,227,0,.1) 60%,transparent 100%);
  animation:shimmerScan 1.2s ease forwards;
  pointer-events:none;border-radius:inherit;
}
@keyframes shimmerScan{
  from{transform:translateX(-100%)}
  to{transform:translateX(100%);opacity:0}
}
@keyframes slideInRight{from{opacity:0;transform:translateX(12px)}to{opacity:1;transform:translateX(0)}}
.log-empty{font-size:.72rem;color:var(--text3);padding:.3rem 0}

.hypo-box{
  position:relative;overflow:hidden;
  padding:.5rem;
  background:var(--surface2);border-radius:8px;
  border:1px solid var(--border);
  font-size:.78rem;line-height:1.5;color:var(--text2);
  min-height:2.5rem;
  transition:all .4s ease;
}
.hypo-ph{color:var(--text3);font-style:italic;font-size:.72rem}
.hypo-box{transition:all .4s ease, opacity .2s ease}
.hypo-box.active{border-color:var(--accent2);box-shadow:0 0 12px var(--accent2G)}

/* Findings */
.findings-box{display:flex;flex-direction:column;gap:.25rem}
.finding-item{
  position:relative;overflow:hidden;
  display:flex;align-items:flex-start;gap:.4rem;
  font-size:.74rem;color:var(--text2);line-height:1.45;
  padding:.3rem .5rem;
  background:var(--surface2);border-radius:6px;
  border-left:3px solid var(--amber);
  animation:slideInRight .35s ease forwards;
}
.finding-dot{
  flex-shrink:0;
  width:6px;height:6px;margin-top:5px;
  border-radius:50%;
  background:var(--amber);
  box-shadow:0 0 6px rgba(254,209,88,.4);
}

.roles-box{display:flex;flex-direction:column;gap:.4rem}
.role-bar{position:relative;overflow:hidden;animation:slideInRight .4s ease forwards}
.role-bar-head{display:flex;justify-content:space-between;font-size:.75rem;margin-bottom:.15rem}
.role-bar-name{font-weight:500;color:var(--text)}
.role-bar-pct{font-weight:700;color:var(--accent)}
.role-bar-track{height:6px;background:var(--border);border-radius:3px;overflow:hidden}
.role-bar-fill{
  height:100%;border-radius:3px;
  background:linear-gradient(90deg,var(--accent),var(--accent2));
  box-shadow:0 0 8px var(--accentG);
  transition:width .8s cubic-bezier(.4,0,.2,1);
}

/* JD button */
.btn-jd{
  width:100%;padding:.6rem;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  color:#fff;font-weight:600;font-size:.82rem;
  border:none;border-radius:8px;cursor:pointer;
  box-shadow:0 0 16px var(--accentG);
  transition:all var(--trans);
}
.btn-jd:hover{box-shadow:0 0 28px var(--accentG);transform:translateY(-1px)}

/* ===== MODAL ===== */
.modal-overlay{
  position:fixed;inset:0;z-index:200;
  display:flex;align-items:center;justify-content:center;
  background:rgba(0,0,0,.7);backdrop-filter:blur(8px);
}
.modal-overlay.hidden{display:none}
.modal-box{
  width:90%;max-width:720px;max-height:85vh;
  background:var(--bg2);border:1px solid var(--border);
  border-radius:var(--rL);overflow:hidden;
  display:flex;flex-direction:column;
  animation:fadeSlideIn .3s ease;
}
.modal-head{
  display:flex;justify-content:space-between;align-items:center;
  padding:.8rem 1.2rem;border-bottom:1px solid var(--border);
}
.modal-head h2{font-size:1rem}
.modal-x{
  background:none;border:none;color:var(--text2);
  font-size:1.4rem;cursor:pointer;padding:0 .3rem;
}
.modal-body{
  padding:1.2rem;overflow-y:auto;
  scrollbar-width:thin;scrollbar-color:var(--border) transparent;
}
.jd-card{
  padding:1rem;margin-bottom:1rem;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r);
}
.jd-card h3{font-size:.9rem;color:var(--accent);margin-bottom:.1rem}
.jd-tag{
  display:inline-block;font-size:.6rem;padding:.1rem .45rem;
  border-radius:8px;font-weight:600;margin-bottom:.6rem;
}
.jd-tag.primary{background:rgba(6,182,212,.15);color:var(--accent)}
.jd-tag.secondary{background:rgba(254,209,88,.15);color:var(--amber)}
.jd-card h4{font-size:.78rem;color:var(--text);margin:.6rem 0 .2rem;font-weight:600}
.jd-card p{font-size:.76rem;line-height:1.55;color:var(--text2)}
.jd-card ul{padding-left:1.1rem;font-size:.76rem;line-height:1.55;color:var(--text2)}
.jd-card li{margin-bottom:.15rem}
.jd-metrics{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.3rem}
.jd-metric{
  background:rgba(158,227,0,.1);color:var(--green);
  border:1px solid rgba(158,227,0,.2);
  border-radius:6px;padding:.15rem .45rem;font-size:.65rem;font-weight:500;
}
.btn-copy{
  margin-top:.5rem;padding:.3rem .6rem;font-size:.7rem;
  background:var(--surface2);border:1px solid var(--border);border-radius:6px;
  color:var(--text2);cursor:pointer;transition:all var(--trans);
}
.btn-copy:hover{border-color:var(--accent);color:var(--accent)}

/* ===== DONE BANNER ===== */
.chat-done-banner{
  display:flex;align-items:center;gap:.5rem;
  padding:.6rem .9rem;margin:.3rem 0;
  background:rgba(158,227,0,.1);
  border:1px solid rgba(158,227,0,.3);
  border-radius:var(--r);
  color:var(--green);font-size:.8rem;font-weight:500;
  animation:fadeSlideIn .4s ease forwards;
}
.done-icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:24px;height:24px;border-radius:50%;
  background:rgba(158,227,0,.2);font-size:.9rem;
  box-shadow:0 0 10px rgba(158,227,0,.3);
}

/* ===== EMAIL CONFIRM MODAL ===== */
.modal-sm{max-width:420px}
.confirm-body{text-align:center;padding:1.5rem 1.2rem}
.confirm-icon{font-size:2.5rem;margin-bottom:.8rem}
.confirm-body p{font-size:.82rem;line-height:1.6;color:var(--text2);margin-bottom:.5rem}
.confirm-body p:last-of-type{margin-bottom:1.2rem}
.confirm-body strong{color:var(--accent)}
.btn-confirm-ok{
  background:var(--accent);color:#1f004c;font-weight:700;font-size:.85rem;
  border:none;border-radius:8px;padding:.55rem 1.8rem;cursor:pointer;
  box-shadow:0 0 16px var(--accentG);transition:all var(--trans);
}
.btn-confirm-ok:hover{box-shadow:0 0 24px var(--accentG);transform:translateY(-1px)}

/* ===== FOOTER ===== */
.site-footer{
  text-align:center;padding:.8rem 1rem;
  font-size:.72rem;color:var(--text3);letter-spacing:.02em;
}

/* ===== UTILITY ===== */
.hidden{display:none!important}

/* ===== RESPONSIVE ===== */
@media(max-width:900px){
  main{grid-template-columns:1fr}
  .sidebar{position:static;max-height:none}
  .g3{grid-template-columns:repeat(2,1fr)}
  .g4{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:500px){
  .g3,.g4{grid-template-columns:1fr}
  .viz-panel{height:auto}
  .viz-canvas-wrap{height:160px}
  .viz-progress-wrap{height:140px}
  .chat-panel{height:300px}
}
