/* ===========================================================================
   Verity — "Stripe-inspired" design system
   Type: Hanken Grotesk (tight bold sans) · Data: Spline Sans Mono
   Identity: navy ink (#0a2540) · indigo accent (#635bff) · signature gradient.
   Accent (--violet) is admin-configurable; tints derive from it via color-mix.
   =========================================================================== */
:root{
  --font-display:'Hanken Grotesk',system-ui,-apple-system,sans-serif;
  --font-body:'Hanken Grotesk',system-ui,-apple-system,sans-serif;
  --font-mono:'Spline Sans Mono',ui-monospace,'SFMono-Regular',monospace;

  --ink:#0a2540; --ink-soft:#425466; --ink-faint:#8898aa;
  --violet:#635bff; --violet-deep:#5048e5; --violet-bright:#8b85ff; /* Stripe indigo */
  --brass:#0a2540; --amber:#0073e6; --emerald:#09a36b; --rose:#df1b41;

  /* dark navy panels */
  --ink-900:#0a2540; --ink-800:#0c2c4e; --ink-700:#103a63;

  --surface:#f6f9fc; --paper:#ffffff; --card:#ffffff;
  --line:#e6ebf1; --line-strong:#dbe3ec; --grid:rgba(10,37,64,.04);

  /* accent tints follow the brand colour */
  --accent-1:color-mix(in srgb,var(--violet) 8%,#fff);
  --accent-2:color-mix(in srgb,var(--violet) 14%,#fff);
  --accent-line:color-mix(in srgb,var(--violet) 24%,#fff);
  --emerald-1:color-mix(in srgb,var(--emerald) 12%,#fff);

  /* Stripe signature gradient */
  --grad:linear-gradient(108deg,#635bff 0%,#4d8bff 26%,#39c6e0 52%,#3ddc97 75%,#bff24a 100%);

  --radius:14px; --radius-lg:20px;
  --shadow-sm:0 1px 2px rgba(10,37,64,.06),0 1px 3px rgba(10,37,64,.04);
  --shadow:0 12px 28px -10px rgba(10,37,64,.18),0 4px 10px -6px rgba(10,37,64,.10);
  --shadow-hero:0 44px 88px -34px rgba(10,37,64,.55);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  font-family:var(--font-body);background:var(--surface);color:var(--ink);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  line-height:1.55;font-size:15px;letter-spacing:-.006em;
}
/* soft coloured wash at the top of the page, Stripe-style */
body::before{
  content:"";position:fixed;inset:0 0 auto;height:560px;z-index:-1;pointer-events:none;
  background:
    radial-gradient(60% 90% at 78% -10%,rgba(99,91,255,.10),transparent 60%),
    radial-gradient(50% 80% at 8% 0%,rgba(57,198,224,.09),transparent 55%);
}
.mono{font-family:var(--font-mono);font-feature-settings:"tnum" 1;}
h1,h2,h3{font-family:var(--font-display);margin:0;letter-spacing:-.022em;font-weight:700;color:var(--ink);}
h4{font-family:var(--font-body);margin:0;font-weight:600;letter-spacing:-.01em;}
em{font-style:italic;}
.eyebrow{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--violet);}
a{color:var(--violet);text-decoration:none;}
.hide{display:none !important;}
::selection{background:color-mix(in srgb,var(--violet) 22%,#fff);}

/* ---------- top bar ---------- */
.topbar{height:62px;background:color-mix(in srgb,var(--paper) 82%,transparent);backdrop-filter:saturate(1.4) blur(12px);
  border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:40;}
.brand{display:flex;align-items:center;gap:11px;font-family:var(--font-display);font-weight:600;font-size:20px;letter-spacing:-.02em;cursor:pointer;color:var(--ink);}
.brand .glyph{width:30px;height:30px;border-radius:9px;background:linear-gradient(140deg,var(--violet-bright),var(--violet) 55%,var(--violet-deep));color:#fff;display:grid;place-items:center;font-size:13px;
  box-shadow:0 4px 12px -3px color-mix(in srgb,var(--violet) 60%,transparent);}

/* animated logo mark */
.logo-anim{position:relative;overflow:hidden;transition:transform .5s cubic-bezier(.34,1.56,.64,1),box-shadow .4s;
  animation:logoGlow 4.5s ease-in-out infinite;}
.logo-anim::after{content:"";position:absolute;top:0;left:-130%;width:60%;height:100%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);transform:skewX(-18deg);
  animation:logoSheen 4.5s ease-in-out infinite;}
.brand:hover .logo-anim,.logo-anim:hover{transform:rotate(225deg) scale(1.08);
  box-shadow:0 8px 22px -4px color-mix(in srgb,var(--violet) 70%,transparent);}
@keyframes logoGlow{0%,100%{box-shadow:0 4px 12px -3px color-mix(in srgb,var(--violet) 55%,transparent);}
  50%{box-shadow:0 6px 20px -3px color-mix(in srgb,var(--violet) 80%,transparent);}}
@keyframes logoSheen{0%,72%{left:-130%;}86%,100%{left:130%;}}
@media(prefers-reduced-motion:reduce){
  .logo-anim,.logo-anim::after,.hero-band::before{animation:none;}
}
.brand small{font-family:var(--font-mono);font-weight:500;font-size:9.5px;letter-spacing:.2em;color:var(--ink-faint);text-transform:uppercase;align-self:center;border-left:1px solid var(--line-strong);padding-left:11px;}
.topbar .right{display:flex;gap:10px;align-items:center;color:var(--ink-faint);font-size:13px;}
.topnav{display:flex;gap:2px;}
.topnav a{padding:7px 13px;border-radius:9px;color:var(--ink-soft);font-weight:500;font-size:13.5px;cursor:pointer;transition:color .15s,background .15s;}
.topnav a:hover{background:var(--surface);color:var(--ink);}
.topnav a.active{background:var(--accent-1);color:var(--violet);}
.who{font-size:13px;color:var(--ink-soft);}
.who b{color:var(--ink);font-weight:600;}

.wrap{max-width:1200px;margin:0 auto;padding:30px 24px 90px;}
.wrap.narrow{max-width:760px;}

/* ---------- buttons ---------- */
.btn{font-family:var(--font-body);font-weight:600;font-size:14px;cursor:pointer;border-radius:999px;padding:11px 20px;border:1px solid transparent;
  display:inline-flex;align-items:center;gap:8px;letter-spacing:-.006em;transition:transform .14s,box-shadow .2s,background .18s,border-color .18s,color .15s;}
.btn:active{transform:translateY(0);}
.btn:focus-visible{outline:2px solid var(--violet);outline-offset:2px;}
.btn-primary{background:var(--violet);color:#fff;box-shadow:0 6px 16px -4px color-mix(in srgb,var(--violet) 60%,transparent);}
.btn-primary:hover{background:var(--violet-deep);transform:translateY(-1px);box-shadow:0 12px 26px -6px color-mix(in srgb,var(--violet) 68%,transparent);}
.btn-primary:disabled{background:var(--accent-line);color:#fff;box-shadow:none;cursor:not-allowed;opacity:.8;transform:none;}
.btn-ghost{background:var(--card);color:var(--ink);border-color:var(--line-strong);box-shadow:var(--shadow-sm);}
.btn-ghost:hover{border-color:var(--violet);color:var(--violet);transform:translateY(-1px);}
.btn-soft{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.28);backdrop-filter:blur(4px);}
.btn-soft:hover{background:rgba(255,255,255,.24);border-color:rgba(255,255,255,.45);}
.btn-sm{padding:7px 14px;font-size:12.5px;}
.btn-danger{color:var(--rose);border-color:#f3c2cd;background:var(--card);}
.btn-danger:hover{background:#fdf2f4;border-color:#e89aab;}

/* ---------- fields ---------- */
.field{display:flex;flex-direction:column;gap:7px;margin-bottom:16px;}
.field label{font-size:12px;font-weight:600;color:var(--ink-soft);letter-spacing:.01em;}
.field label .hint{font-weight:400;color:var(--ink-faint);}
.field input,.field select,.field textarea{font-family:inherit;font-size:14.5px;color:var(--ink);border:1px solid var(--line-strong);border-radius:10px;padding:11px 13px;background:var(--paper);transition:border-color .15s,box-shadow .15s,background .15s;width:100%;}
.field input::placeholder,.field textarea::placeholder{color:var(--ink-faint);}
.field textarea{resize:vertical;min-height:64px;line-height:1.5;}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--violet);background:#fff;box-shadow:0 0 0 3px color-mix(in srgb,var(--violet) 16%,transparent);}
.field textarea.code{font-family:var(--font-mono);font-size:12.5px;min-height:150px;line-height:1.5;}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}

.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:24px 26px;}
.card h3{font-size:17px;}

/* ---------- auth ---------- */
.auth-shell{min-height:calc(100vh - 62px);display:grid;place-items:center;padding:24px;}
.auth-card{width:100%;max-width:424px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:38px 34px;position:relative;overflow:hidden;}
.auth-card::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:var(--grad);}
.auth-card .glyph-lg{width:50px;height:50px;border-radius:14px;background:linear-gradient(140deg,var(--violet-bright),var(--violet) 55%,var(--violet-deep));display:grid;place-items:center;color:#fff;font-size:22px;margin-bottom:20px;
  box-shadow:0 10px 24px -8px color-mix(in srgb,var(--violet) 60%,transparent);}
.auth-card h1{font-size:28px;font-weight:700;letter-spacing:-.02em;}
.auth-card p.sub{color:var(--ink-soft);font-size:14.5px;margin:7px 0 24px;}
.auth-toggle{font-size:13.5px;color:var(--ink-soft);margin-top:16px;text-align:center;}
.auth-toggle a{cursor:pointer;font-weight:600;}
.err{background:#fdf3f3;border:1px solid #eccbcd;color:#8f2329;border-radius:10px;padding:10px 13px;font-size:13px;margin-bottom:14px;}

/* ---------- dashboard ---------- */
.dash-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:26px;flex-wrap:wrap;}
.dash-head h1{font-size:34px;font-weight:700;letter-spacing:-.02em;}
.dash-head h1 em{font-style:normal;color:var(--violet);}
.dash-head p{color:var(--ink-soft);margin:8px 0 0;max-width:60ch;}
.case-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(286px,1fr));gap:16px;}
.case-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px 22px;box-shadow:var(--shadow-sm);cursor:pointer;transition:transform .14s,box-shadow .18s,border-color .18s;position:relative;}
.case-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--line-strong);}
.case-card h3{font-size:18px;font-weight:600;margin-bottom:4px;}
.case-card .meta{font-size:12px;color:var(--ink-faint);font-family:var(--font-mono);}
.case-card .row{display:flex;align-items:center;justify-content:space-between;margin-top:16px;}
.status{font-size:10.5px;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;padding:4px 10px;border-radius:999px;display:inline-flex;align-items:center;gap:6px;}
.status::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;}
.status.ready{background:var(--emerald-1);color:var(--emerald);}
.status.generating{background:var(--accent-1);color:var(--violet);}
.status.error{background:#fbeaea;color:var(--rose);}
.empty{text-align:center;color:var(--ink-faint);padding:64px 20px;border:1px dashed var(--line-strong);border-radius:16px;background:var(--paper);}

/* ---------- report ---------- */
#report{display:grid;grid-template-columns:240px 1fr;gap:28px;align-items:start;}
.sidebar{position:sticky;top:90px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px;box-shadow:var(--shadow-sm);}
.nav-item{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:10px;font-size:13.5px;color:var(--ink-soft);cursor:pointer;font-weight:500;position:relative;transition:color .15s,background .15s;}
.nav-item:hover{background:var(--surface);color:var(--ink);}
.nav-item.active{background:var(--accent-1);color:var(--violet);font-weight:600;}
.nav-item.active::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--violet);}
.nav-item .dot{width:6px;height:6px;border-radius:50%;background:var(--line-strong);flex:none;}
.nav-item.active .dot{background:var(--violet);}
.nav-item.sub{padding-left:30px;font-size:12.5px;color:var(--ink-faint);}
.nav-sep{height:1px;background:var(--line);margin:8px 6px;}
.content{min-width:0;display:flex;flex-direction:column;gap:18px;}

/* dossier cover */
.hero{
  background:
    radial-gradient(60% 90% at 92% -10%,color-mix(in srgb,var(--violet) 78%,transparent),transparent 55%),
    radial-gradient(55% 90% at 8% 4%,rgba(57,198,224,.5),transparent 55%),
    radial-gradient(60% 100% at 60% 120%,rgba(61,220,151,.4),transparent 55%),
    linear-gradient(152deg,var(--ink-900) 0%,var(--ink-800) 60%,var(--ink-700) 100%);
  color:#fff;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg);
  padding:34px 36px;box-shadow:var(--shadow-hero);position:relative;overflow:hidden;
}
.hero::before{content:"";position:absolute;inset:13px;border:1px solid rgba(255,255,255,.12);border-radius:15px;pointer-events:none;}
.hero::after{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.05) 1px,transparent 1px);background-size:24px 24px;opacity:.5;pointer-events:none;}
.hero>*{position:relative;}
.hero .kick{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:color-mix(in srgb,var(--violet-bright) 60%,#fff);}
.hero h1{font-size:36px;font-weight:700;margin:12px 0 16px;line-height:1.04;letter-spacing:-.02em;color:#fff;}
.hero-meta{display:flex;gap:26px;flex-wrap:wrap;font-size:13.5px;color:rgba(255,255,255,.82);}
.hero-meta b{color:#fff;font-weight:600;}
.hero-meta .m{display:flex;align-items:center;gap:7px;}
.hero-chips{display:flex;gap:9px;flex-wrap:wrap;margin-top:18px;}
.hero-chip{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.18);border-radius:999px;padding:5px 12px;font-family:var(--font-mono);letter-spacing:.02em;}
.hero-chip .live{width:6px;height:6px;border-radius:50%;background:#37d399;box-shadow:0 0 0 3px rgba(55,211,153,.28);}
.hero-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:24px;padding-top:22px;border-top:1px solid rgba(255,255,255,.14);}

/* sections */
.sec{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:26px 28px;scroll-margin-top:88px;}
.sec-head{display:flex;align-items:center;gap:13px;margin-bottom:4px;}
.sec-head .ico{width:32px;height:32px;border-radius:9px;background:var(--accent-1);color:var(--violet);display:grid;place-items:center;flex:none;border:1px solid var(--accent-line);}
.sec-head h2{font-size:20px;font-weight:700;letter-spacing:-.015em;}
.sec-regen{margin-left:auto;flex:none;width:32px;height:32px;border-radius:9px;border:1px solid var(--line-strong);background:var(--card);color:var(--ink-faint);font-size:15px;line-height:1;cursor:pointer;transition:all .2s;}
.sec-regen:hover{border-color:var(--violet);color:var(--violet);background:var(--accent-1);transform:rotate(90deg);}
.sec-sub{color:var(--ink-faint);font-size:13px;margin:3px 0 18px 45px;}
.sec p{color:var(--ink-soft);margin:0 0 12px;}
.sec p:last-child{margin-bottom:0;}
.summary-block{margin-top:16px;}
.summary-block h3{font-size:15.5px;font-weight:600;margin-bottom:6px;}
.summary-block h3 .n{color:var(--violet);font-family:var(--font-mono);margin-right:8px;font-weight:500;}

.items{display:grid;gap:12px;margin-top:6px;}
.item{border:1px solid var(--line);border-radius:12px;padding:16px 18px;background:var(--paper);transition:border-color .15s;}
.item:hover{border-color:var(--line-strong);}
.item h4{font-size:14.5px;font-weight:600;margin-bottom:6px;display:flex;gap:10px;align-items:baseline;}
.item h4 .ix{font-family:var(--font-mono);font-size:11px;color:var(--violet);font-weight:500;letter-spacing:.04em;text-transform:uppercase;}
.item p{font-size:13.5px;color:var(--ink-soft);margin:0;line-height:1.55;}

.otable{width:100%;border-collapse:collapse;margin-top:8px;font-size:13.5px;}
.otable th{text-align:left;font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);font-weight:500;padding:0 10px 10px;border-bottom:1px solid var(--line-strong);}
.otable td{padding:13px 10px;border-bottom:1px solid var(--line);color:var(--ink-soft);vertical-align:top;}
.otable tr:last-child td{border-bottom:none;}
.otable td.metric{color:var(--ink);font-weight:600;}
.otable .num{font-family:var(--font-mono);color:var(--ink);}
.otable .up{color:var(--emerald);font-weight:600;}

.roi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:6px 0 22px;}
.roi-stat{border:1px solid var(--line);border-radius:13px;padding:18px 16px;background:var(--paper);position:relative;overflow:hidden;}
.roi-stat .lab{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);}
.roi-stat .val{font-family:var(--font-display);font-size:30px;font-weight:700;margin-top:8px;letter-spacing:-.02em;font-optical-sizing:auto;color:var(--ink);}
.roi-stat.accent{background:linear-gradient(180deg,var(--emerald-1),#fff);border-color:color-mix(in srgb,var(--emerald) 25%,#fff);}
.roi-stat.accent .val{color:var(--emerald);}
.roi-driver{display:flex;justify-content:space-between;align-items:center;font-size:13.5px;padding:10px 0;border-bottom:1px dashed var(--line-strong);}
.roi-driver:last-child{border-bottom:none;}
.roi-driver span{color:var(--ink-soft);}
.roi-driver b{font-family:var(--font-mono);color:var(--emerald);font-weight:600;}

.refs{display:grid;gap:12px;}
.ref{display:flex;gap:14px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:16px 18px;background:var(--paper);}
.ref .badge{width:40px;height:40px;border-radius:11px;background:var(--accent-1);color:var(--violet);display:grid;place-items:center;font-family:var(--font-display);font-weight:600;flex:none;border:1px solid var(--accent-line);}
.ref h4{font-size:14.5px;font-weight:600;margin-bottom:4px;}
.ref p{font-size:13px;color:var(--ink-soft);margin:0;}

.prospect-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 30px;}
.pi{display:flex;flex-direction:column;gap:4px;padding:11px 0;border-bottom:1px solid var(--line);}
.pi .k{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);}
.pi .v{font-size:14px;color:var(--ink);font-weight:500;}

.pending{display:flex;align-items:center;gap:10px;color:var(--ink-faint);font-size:12.5px;font-family:var(--font-mono);padding:6px 0;letter-spacing:.02em;}
.spin{width:14px;height:14px;border-radius:50%;border:2px solid var(--line-strong);border-top-color:var(--violet);animation:sp .7s linear infinite;flex:none;}
@keyframes sp{to{transform:rotate(360deg);}}
.skel{height:13px;border-radius:6px;background:linear-gradient(90deg,#efeadd,#e6dfcd,#efeadd);background-size:200% 100%;animation:sh 1.3s infinite;margin:10px 0;}
@keyframes sh{0%{background-position:200% 0;}100%{background-position:-200% 0;}}
.reveal{animation:rv .5s cubic-bezier(.2,.7,.3,1) both;}
@keyframes rv{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}
.disclaimer{font-size:11px;color:var(--ink-faint);text-align:center;padding:12px;font-family:var(--font-mono);letter-spacing:.02em;}
.errbox{background:#fdf3f3;border:1px solid #eccbcd;color:#8f2329;border-radius:12px;padding:14px 16px;font-size:13.5px;}

/* ---------- ask panel ---------- */
.ask-overlay{position:fixed;inset:0;background:rgba(10,20,16,.4);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .2s;z-index:50;}
.ask-overlay.open{opacity:1;pointer-events:auto;}
.ask{position:fixed;top:0;right:0;height:100%;width:min(424px,94vw);background:var(--card);box-shadow:-24px 0 70px -24px rgba(10,20,16,.45);transform:translateX(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);z-index:51;display:flex;flex-direction:column;}
.ask.open{transform:none;}
.ask-head{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;}
.ask-head h3{font-size:16px;display:flex;align-items:center;gap:9px;font-weight:600;}
.ask-head .glyph{background:linear-gradient(145deg,var(--ink-700),var(--ink-900));color:#fff;display:grid;place-items:center;}
.ask-head .x{cursor:pointer;color:var(--ink-faint);border:none;background:none;font-size:20px;padding:4px;border-radius:8px;line-height:1;}
.ask-head .x:hover{background:var(--surface);color:var(--ink);}
.ask-body{flex:1;overflow-y:auto;padding:18px 20px;display:flex;flex-direction:column;gap:14px;}
.msg{font-size:13.5px;line-height:1.55;border-radius:13px;padding:11px 14px;max-width:90%;white-space:pre-wrap;}
.msg.user{align-self:flex-end;background:var(--violet);color:#fff;border-bottom-right-radius:4px;}
.msg.bot{align-self:flex-start;background:var(--surface);color:var(--ink);border-bottom-left-radius:4px;border:1px solid var(--line);}
.ask-empty{color:var(--ink-faint);font-size:13px;text-align:center;margin-top:30px;}
.ask-sugg{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;margin-top:14px;}
.ask-sugg button{font-size:12px;border:1px solid var(--line-strong);background:var(--card);border-radius:999px;padding:6px 12px;cursor:pointer;color:var(--ink-soft);transition:all .15s;}
.ask-sugg button:hover{border-color:var(--violet);color:var(--violet);background:var(--accent-1);}
.ask-foot{padding:14px 16px;border-top:1px solid var(--line);display:flex;gap:9px;}
.ask-foot input{flex:1;border:1px solid var(--line-strong);border-radius:11px;padding:11px 13px;font-family:inherit;font-size:14px;}
.ask-foot input:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 3px color-mix(in srgb,var(--violet) 16%,transparent);}
.ask-foot button{background:var(--violet);color:#fff;border:none;border-radius:11px;width:44px;cursor:pointer;font-size:16px;}

/* ---------- admin ---------- */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:24px;flex-wrap:wrap;}
.tabs button{background:none;border:none;padding:10px 14px;font-family:var(--font-body);font-weight:600;font-size:13.5px;color:var(--ink-faint);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s;}
.tabs button:hover{color:var(--ink);}
.tabs button.active{color:var(--violet);border-bottom-color:var(--violet);}
.atable{width:100%;border-collapse:collapse;font-size:13.5px;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;}
.atable th{text-align:left;font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);font-weight:500;padding:12px 14px;background:var(--paper);border-bottom:1px solid var(--line);}
.atable td{padding:12px 14px;border-bottom:1px solid var(--line);color:var(--ink-soft);}
.atable tr:last-child td{border-bottom:none;}
.atable td b{color:var(--ink);font-weight:600;}
.tag{font-size:10.5px;font-family:var(--font-mono);padding:3px 9px;border-radius:999px;background:var(--accent-1);color:var(--violet);letter-spacing:.04em;text-transform:uppercase;}
.tag.admin{background:#fbf0e2;color:var(--amber);}
.persona-row{display:flex;gap:8px;margin-bottom:8px;}
.persona-row input{flex:1;}
.persona-row button{flex:none;}
.save-bar{position:sticky;bottom:0;background:linear-gradient(180deg,transparent,var(--surface) 34%);padding:18px 0 4px;display:flex;justify-content:flex-end;gap:10px;margin-top:8px;}

.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink-900);color:#fff;padding:12px 20px;border-radius:12px;font-size:13.5px;opacity:0;transition:.25s;z-index:60;box-shadow:var(--shadow);border:1px solid rgba(255,255,255,.08);}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

.site-footer{text-align:center;padding:32px 16px 44px;color:var(--ink-faint);font-size:12.5px;font-family:var(--font-mono);letter-spacing:.02em;}
.site-footer .heart{filter:saturate(1.1);}

.about-prose{max-width:740px;}
.about-prose p{color:var(--ink-soft);font-size:16px;line-height:1.8;margin:0 0 16px;}
.about-prose p:last-child{margin-bottom:0;}

/* ---------- landing ---------- */
.landing{max-width:1120px;margin:0 auto;padding:8px 24px 60px;}
.landing-top{display:flex;align-items:center;justify-content:space-between;padding:18px 0 0;}
.landing-top .brand,.landing-top .brand .glyph{color:#fff;}
.landing-top .brand .glyph{font-size:13px;box-shadow:0 4px 12px -3px rgba(0,0,0,.3);}

/* full-bleed gradient band with a slanted bottom edge — the Stripe signature */
.hero-band{position:relative;color:#fff;overflow:hidden;
  background:linear-gradient(160deg,#0a2540 0%,#0c2c4e 55%,#103a63 100%);
  clip-path:polygon(0 0,100% 0,100% calc(100% - 84px),0 100%);
  padding-bottom:84px;}
.hero-band::before{content:"";position:absolute;inset:-18%;z-index:0;pointer-events:none;
  background-repeat:no-repeat;
  background-image:
    radial-gradient(42% 60% at 82% 8%,rgba(99,91,255,.95),transparent 60%),
    radial-gradient(42% 60% at 12% 14%,rgba(57,198,224,.85),transparent 60%),
    radial-gradient(52% 72% at 55% 92%,rgba(61,220,151,.8),transparent 62%),
    radial-gradient(42% 60% at 98% 78%,rgba(191,242,74,.7),transparent 60%);
  animation:heroDrift 26s ease-in-out infinite alternate;will-change:transform;}
@keyframes heroDrift{
  0%{transform:translate3d(0,0,0) scale(1);}
  50%{transform:translate3d(-2.5%,1.6%,0) scale(1.05);}
  100%{transform:translate3d(2%,-1.4%,0) scale(1.08);}}
.hero-band::after{content:"";position:absolute;inset:0;z-index:1;background-image:radial-gradient(rgba(255,255,255,.06) 1px,transparent 1px);background-size:26px 26px;opacity:.5;pointer-events:none;}
.hero-band-inner{position:relative;z-index:2;max-width:1120px;margin:0 auto;padding:0 24px;}
.hero-landing{text-align:center;padding:64px 12px 40px;max-width:840px;margin:0 auto;}
.hero-landing .eyebrow{display:inline-block;margin-bottom:18px;color:color-mix(in srgb,var(--violet-bright) 55%,#fff);}
.hero-landing h1{font-size:clamp(38px,6.4vw,72px);line-height:1.02;font-weight:800;letter-spacing:-.035em;color:#fff;}
.hero-landing h1 em{font-style:normal;background:linear-gradient(100deg,#9bdcff,#7dffc4 60%,#dcff7a);-webkit-background-clip:text;background-clip:text;color:transparent;}
.hero-landing p{color:rgba(255,255,255,.82);font-size:19px;line-height:1.6;margin:22px auto 28px;max-width:620px;}
.hero-landing .btn-ghost{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.3);box-shadow:none;}
.hero-landing .btn-ghost:hover{background:rgba(255,255,255,.2);border-color:rgba(255,255,255,.5);color:#fff;}
.landing-body{max-width:1120px;margin:0 auto;padding:0 24px 60px;}
.landing-points{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:-48px 0 64px;position:relative;z-index:2;}
.lp{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:30px 24px 26px;box-shadow:var(--shadow);position:relative;overflow:hidden;transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;}
.lp::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--grad);}
.lp:hover{transform:translateY(-4px);box-shadow:0 18px 40px -16px rgba(10,37,64,.28);}
.lp h3{font-size:18px;margin:0 0 8px;font-weight:700;}
.lp p{color:var(--ink-soft);font-size:14px;margin:0;line-height:1.6;}
.landing-pricing{padding-top:8px;}
.landing-pricing h2,.landing-diy h2{font-size:clamp(26px,3.6vw,38px);font-weight:700;letter-spacing:-.03em;}
.plans-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:18px;align-items:stretch;}
.plan-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:28px 26px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:6px;transition:transform .14s,box-shadow .18s;}
.plan-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);}
.plan-card.current{border-color:var(--violet);box-shadow:0 0 0 3px color-mix(in srgb,var(--violet) 14%,transparent);}
.plan-name{font-family:var(--font-mono);font-weight:500;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--violet);}
.plan-price{font-family:var(--font-display);font-weight:700;font-size:44px;letter-spacing:-.03em;margin:6px 0 2px;font-optical-sizing:auto;}
.plan-price span{font-size:15px;color:var(--ink-faint);font-weight:400;font-family:var(--font-body);}
.plan-limit{font-family:var(--font-mono);font-size:12px;color:var(--ink-soft);}
.plan-blurb{color:var(--ink-soft);font-size:13.5px;line-height:1.55;margin:10px 0 18px;flex:1;}
.plan-card .btn{width:100%;justify-content:center;}

/* DIY comparison */
.landing-diy{margin:64px 0;}
.landing-diy h2{text-align:center;}
.diy-sub{text-align:center;color:var(--ink-soft);max-width:640px;margin:8px auto 30px;font-size:15.5px;line-height:1.6;}
.diy-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.diy-col{border:1px solid var(--line);border-radius:18px;padding:28px;}
.diy-col h3{font-size:13px;margin:0 0 18px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);}
.diy-col ul{list-style:none;margin:0;padding:0;}
.diy-col li{position:relative;padding-left:28px;margin-bottom:13px;font-size:14px;line-height:1.5;color:var(--ink-soft);}
.diy-them{background:var(--paper);}
.diy-them li::before{content:'✕';position:absolute;left:0;top:-1px;color:var(--rose);font-weight:700;}
.diy-us{background:linear-gradient(180deg,var(--accent-1),#fff);border-color:var(--accent-line);}
.diy-us h3{color:var(--violet);}
.diy-us li{color:var(--ink);}
.diy-us li::before{content:'✓';position:absolute;left:0;top:-1px;color:var(--emerald);font-weight:700;}
.diy-sauce{text-align:center;max-width:700px;margin:28px auto;font-family:var(--font-display);font-size:20px;font-weight:600;font-style:normal;line-height:1.6;color:var(--ink);}

/* verify banner */
.verify-banner{position:fixed;bottom:0;left:0;right:0;z-index:60;background:var(--ink-900);color:#fff;display:flex;align-items:center;justify-content:center;gap:14px;padding:11px 16px;font-size:14px;box-shadow:0 -6px 20px rgba(10,20,16,.25);border-top:1px solid color-mix(in srgb,var(--violet) 40%,transparent);}
.verify-banner .btn{background:rgba(255,255,255,.14);color:#fff;border-color:transparent;}

/* password meter */
.pw-meter{margin:-6px 0 14px;}
.pw-bar{height:5px;border-radius:99px;background:var(--line-strong);overflow:hidden;}
.pw-bar i{display:block;height:100%;width:0;border-radius:99px;transition:width .2s ease,background .2s ease;}
.pw-reqs{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px;font-size:12px;color:var(--ink-faint);font-family:var(--font-mono);}
.pw-req.ok{color:var(--emerald);}
.pw-label{margin-left:auto;font-weight:600;}

/* locked section */
.lockbox{text-align:center;padding:30px 22px;border:1px dashed var(--accent-line);border-radius:14px;background:linear-gradient(180deg,var(--accent-1),#fff);}
.lockbox .lock-ic{font-size:26px;}
.lockbox h4{font-family:var(--font-display);font-weight:700;font-size:18px;margin:8px 0 6px;}
.lockbox p{color:var(--ink-soft);font-size:14px;max-width:480px;margin:0 auto 18px;line-height:1.6;}

/* admin usage */
.ustats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:6px;}
.ustat{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;}
.ustat-l{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);font-family:var(--font-mono);}
.ustat-v{font-family:var(--font-display);font-size:26px;font-weight:700;margin:6px 0 2px;letter-spacing:-.02em;}
.ustat-s{font-size:12px;color:var(--ink-faint);}

/* upgrade backfill banner — shown when paid sections are still locked on saved cases */
.backfill-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  background:var(--accent-1);border:1px solid var(--accent-line);border-radius:14px;padding:16px 18px;margin-bottom:20px;}
.backfill-banner .bf-txt{display:flex;flex-direction:column;gap:3px;font-size:13.5px;color:var(--ink-soft);max-width:640px;}
.backfill-banner .bf-txt b{color:var(--ink);font-size:14.5px;}
.backfill-banner .btn{white-space:nowrap;}
.backfill-banner .pending{color:var(--ink-soft);font-size:13.5px;}

/* dashboard toolbar / grouping / pagination */
.dash-toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:20px;}
.dash-search{flex:1;min-width:200px;border:1px solid var(--line-strong);border-radius:999px;padding:10px 16px;font-family:inherit;font-size:14px;background:var(--card);}
.dash-search:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 3px color-mix(in srgb,var(--violet) 14%,transparent);}
.dash-sel{border:1px solid var(--line-strong);border-radius:999px;padding:10px 14px;font-family:inherit;font-size:13.5px;background:var(--card);color:var(--ink);cursor:pointer;}
.dash-toggle{display:flex;align-items:center;gap:7px;font-size:13.5px;color:var(--ink-soft);cursor:pointer;white-space:nowrap;}
.dash-toggle input{width:auto;cursor:pointer;}
.case-group{margin-bottom:22px;}
.case-group-head{display:flex;align-items:center;gap:10px;margin:6px 2px 12px;}
.case-group-head h3{font-size:16px;font-weight:700;letter-spacing:-.01em;}
.cg-count{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--violet);background:var(--accent-1);border:1px solid var(--accent-line);padding:3px 9px;border-radius:999px;}
.case-group .case-grid{margin-bottom:0;}
.pager{display:flex;gap:6px;justify-content:center;margin-top:26px;}
.pager .pg{min-width:34px;height:34px;border:1px solid var(--line-strong);background:var(--card);border-radius:9px;font-family:var(--font-mono);font-size:13px;color:var(--ink-soft);cursor:pointer;transition:all .15s;}
.pager .pg:hover{border-color:var(--violet);color:var(--violet);}
.pager .pg.active{background:var(--violet);color:#fff;border-color:var(--violet);}

/* modal (feedback) */
.modal-overlay{position:fixed;inset:0;background:rgba(10,37,64,.45);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .2s;z-index:70;display:grid;place-items:center;padding:20px;}
.modal-overlay.open{opacity:1;pointer-events:auto;}
.modal{background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow);width:100%;max-width:480px;padding:26px 28px;border:1px solid var(--line);max-height:90vh;overflow:auto;}
.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;}
.modal-head h3{font-size:19px;font-weight:700;}
.modal-head .x{border:none;background:none;font-size:22px;color:var(--ink-faint);cursor:pointer;line-height:1;padding:4px;border-radius:8px;}
.modal-head .x:hover{background:var(--surface);color:var(--ink);}
.stars{display:flex;gap:6px;font-size:28px;line-height:1;color:var(--line-strong);}
.stars span{cursor:pointer;transition:transform .1s;}
.stars span:hover{transform:scale(1.15);}
.stars span.on{color:var(--amber);}
.rec textarea.code{min-height:160px;}

/* sources / citations */
.src-intro{color:var(--ink-soft);font-size:13.5px;line-height:1.6;margin:0 0 14px;}
.src-list{margin:0;padding:0;list-style:none;counter-reset:src;}
.src-list li{counter-increment:src;margin:0 0 8px;}
.src-list li a{display:flex;align-items:baseline;gap:10px;padding:11px 14px;border:1px solid var(--line);border-radius:11px;background:var(--paper);text-decoration:none;transition:border-color .15s,transform .15s;}
.src-list li a:hover{border-color:var(--violet);transform:translateX(2px);}
.src-list li a::before{content:counter(src);font-family:var(--font-mono);font-size:11px;color:var(--violet);font-weight:700;min-width:16px;}
.src-title{color:var(--ink);font-size:13.5px;font-weight:600;flex:1;line-height:1.4;}
.src-host{color:var(--ink-faint);font-size:11.5px;font-family:var(--font-mono);white-space:nowrap;}

/* share modal */
.share-row{display:flex;gap:8px;}
.share-row input{flex:1;border:1px solid var(--line-strong);border-radius:10px;padding:10px 12px;font-family:var(--font-mono);font-size:12.5px;background:var(--surface);color:var(--ink);}
.shared-badge{display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#fff;opacity:.85;}
.shared-ribbon{background:var(--accent-1);border:1px solid var(--accent-line);border-radius:12px;padding:10px 16px;margin-bottom:16px;font-size:13px;color:var(--ink-soft);text-align:center;}
.btn-sm{padding:6px 12px;font-size:12.5px;}

/* analytics */
.an-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;}
.an-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px 18px 16px;box-shadow:var(--shadow);}
.an-card .an-lab{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint);}
.an-card .an-val{font-family:var(--font-display);font-size:30px;font-weight:700;line-height:1.1;margin:6px 0 2px;color:var(--violet);}
.an-card .an-sub{font-size:12px;color:var(--ink-soft);}

/* monthly-limit panel */
.limit-card{text-align:center;max-width:520px;margin:0 auto;padding:38px 30px;}
.limit-card .limit-ic{font-size:34px;margin-bottom:8px;}
.limit-card h3{font-size:19px;font-weight:700;margin:0 0 8px;}
.limit-card p{color:var(--ink-soft);font-size:14px;line-height:1.6;margin:0 0 18px;}
@media(max-width:760px){ .an-grid{grid-template-columns:1fr 1fr;} }

@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;transition-duration:.001ms !important;}
}

@media print{
  body::before{display:none;}
  .topbar,.sidebar,.hero-actions,.sec-regen,.site-footer,.ask,.ask-overlay,.toast,.topnav,.who,#logoutBtn,.verify-banner{display:none !important;}
  body{background:#fff;}
  .wrap{padding:0;max-width:none;margin:0;}
  #report{display:block;}
  .content{display:block;}
  .sec,.hero{break-inside:avoid;page-break-inside:avoid;box-shadow:none;margin-bottom:14px;}
  .sec{border:1px solid #e6e2d6;}
  .hero{-webkit-print-color-adjust:exact;print-color-adjust:exact;}
  .roi-stat,.item,.ref{-webkit-print-color-adjust:exact;print-color-adjust:exact;}
  a[onclick]{pointer-events:none;}
}

@media(max-width:880px){
  #report{grid-template-columns:1fr;}
  .sidebar{display:none;}
  .roi-grid{grid-template-columns:repeat(2,1fr);}
  .grid2,.prospect-grid{grid-template-columns:1fr;}
  .hero h1{font-size:26px;}
  .topnav a{padding:7px 9px;font-size:13px;}
  .who{display:none;}
  .ustats{grid-template-columns:1fr 1fr;}
}
@media(max-width:760px){
  .landing-points,.diy-grid{grid-template-columns:1fr;}
  .dash-head h1{font-size:28px;}
}
