/* AsteriskAI — design tokens on top of Bootstrap 5.3 */
:root,
[data-bs-theme="light"] {
  --aai-bg: #fbfaf7;
  --aai-surface: #ffffff;
  --aai-surface-2: #f3f1ec;
  --aai-ink: #14161f;
  --aai-muted: #5e6272;
  --aai-line: #e6e2d9;
  --aai-accent: #4338ca;
  --aai-accent-soft: #eceafd;
  --aai-star: #f0603c;
  --aai-ok: #15803d;
  --aai-warn: #b45309;
  --aai-risk: #b91c1c;
  --aai-shadow: 0 1px 2px rgba(20, 22, 31, .04), 0 8px 24px rgba(20, 22, 31, .06);
  --bs-body-bg: var(--aai-bg);
  --bs-body-color: var(--aai-ink);
  --bs-border-color: var(--aai-line);
  --bs-secondary-color: var(--aai-muted);
  --bs-primary: var(--aai-accent);
  --bs-primary-rgb: 67, 56, 202;
  --bs-link-color: var(--aai-accent);
  --bs-link-color-rgb: 67, 56, 202;
  --bs-link-hover-color: #3730a3;
  --bs-font-sans-serif: "Inter", ui-sans-serif, -apple-system, "Segoe UI Variable", "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, sans-serif;
  --bs-border-radius: .75rem;
  --bs-border-radius-lg: 1.1rem;
}

[data-bs-theme="dark"] {
  --aai-bg: #0e1016;
  --aai-surface: #161922;
  --aai-surface-2: #1d212c;
  --aai-ink: #eceef4;
  --aai-muted: #9aa0b2;
  --aai-line: #2a2f3c;
  --aai-accent: #8b85ff;
  --aai-accent-soft: #23224a;
  --aai-star: #ff7a57;
  --aai-ok: #4ade80;
  --aai-warn: #fbbf24;
  --aai-risk: #f87171;
  --aai-shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 10px 30px rgba(0, 0, 0, .35);
  --bs-body-bg: var(--aai-bg);
  --bs-body-color: var(--aai-ink);
  --bs-border-color: var(--aai-line);
  --bs-secondary-color: var(--aai-muted);
  --bs-primary-rgb: 139, 133, 255;
  --bs-link-color: var(--aai-accent);
  --bs-link-color-rgb: 139, 133, 255;
  --bs-link-hover-color: #b3afff;
}

html { scroll-behavior: smooth; }
body { font-feature-settings: "ss01", "cv11"; -webkit-font-smoothing: antialiased; letter-spacing: -.005em; }
h1, h2, h3, h4, .display-title { letter-spacing: -.025em; font-weight: 700; }
.text-muted, .text-secondary { color: var(--aai-muted) !important; }
a { text-underline-offset: .2em; }
:focus-visible { outline: 3px solid var(--aai-accent); outline-offset: 2px; border-radius: .4rem; }

.icon { width: 1.15em; height: 1.15em; vertical-align: -.2em; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; }
.icon-lg { width: 1.6rem; height: 1.6rem; }

/* Brand */
.brand { display: inline-flex; align-items: center; gap: .5rem; font-weight: 750; font-size: 1.15rem; color: var(--aai-ink); text-decoration: none; letter-spacing: -.03em; }
.brand-mark { width: 1.7rem; height: 1.7rem; color: var(--aai-star); transition: transform .6s cubic-bezier(.2, .8, .2, 1); }
.brand:hover .brand-mark { transform: rotate(60deg); }
.star { color: var(--aai-star); }

/* Navigation */
.site-nav { position: sticky; top: 0; z-index: 1020; backdrop-filter: saturate(180%) blur(14px); background: color-mix(in srgb, var(--aai-bg) 82%, transparent); border-bottom: 1px solid var(--aai-line); }
.site-nav .nav-link { white-space: nowrap; color: var(--aai-muted); font-weight: 500; padding: .5rem .75rem; border-radius: .6rem; }
.site-nav .nav-link:hover, .site-nav .nav-link.active { color: var(--aai-ink); background: var(--aai-surface-2); }
.btn-icon { display: inline-flex; align-items: center; justify-content: center; width: 2.4rem; height: 2.4rem; padding: 0; border-radius: .7rem; color: var(--aai-muted); background: transparent; border: 1px solid var(--aai-line); }
.btn-icon:hover { color: var(--aai-ink); background: var(--aai-surface-2); }

/* Buttons */
.btn { font-weight: 600; border-radius: .75rem; padding: .6rem 1.1rem; transition: transform .15s ease, box-shadow .15s ease, background-color .15s ease; }
.btn:active { transform: translateY(1px); }
.btn-primary { --bs-btn-bg: var(--aai-accent); --bs-btn-border-color: var(--aai-accent); --bs-btn-hover-bg: #3730a3; --bs-btn-hover-border-color: #3730a3; --bs-btn-disabled-bg: var(--aai-accent); --bs-btn-disabled-border-color: var(--aai-accent); box-shadow: 0 6px 18px -6px rgba(67, 56, 202, .55); }
[data-bs-theme="dark"] .btn-primary { --bs-btn-color: #0e1016; --bs-btn-hover-color: #0e1016; --bs-btn-hover-bg: #a7a2ff; --bs-btn-hover-border-color: #a7a2ff; --bs-btn-disabled-color: #0e1016; }
.btn-ghost { color: var(--aai-ink); border: 1px solid var(--aai-line); background: var(--aai-surface); }
.btn-ghost:hover { background: var(--aai-surface-2); color: var(--aai-ink); }
.btn-lg { padding: .85rem 1.4rem; font-size: 1.02rem; }

/* Surfaces */
.surface { background: var(--aai-surface); border: 1px solid var(--aai-line); border-radius: var(--bs-border-radius-lg); box-shadow: var(--aai-shadow); }
.surface-flat { background: var(--aai-surface); border: 1px solid var(--aai-line); border-radius: var(--bs-border-radius-lg); }
.card { --bs-card-bg: var(--aai-surface); --bs-card-border-color: var(--aai-line); border-radius: var(--bs-border-radius-lg); }
.form-control, .form-select { background-color: var(--aai-surface); border-color: var(--aai-line); border-radius: .7rem; padding: .6rem .85rem; }
.form-control:focus, .form-select:focus { border-color: var(--aai-accent); box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--aai-accent) 22%, transparent); }
.form-label { font-weight: 600; font-size: .9rem; }
.table { --bs-table-bg: transparent; }
.eyebrow { display: inline-flex; align-items: center; gap: .4rem; font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--aai-accent); }
.section { padding: 5.5rem 0; }
.section-tight { padding: 3rem 0; }
.lead-muted { color: var(--aai-muted); font-size: 1.12rem; max-width: 40rem; }

/* Hero */
.hero { position: relative; padding: 6.5rem 0 5rem; overflow: hidden; }
.hero::before { content: ""; position: absolute; inset: -30% -10% auto auto; width: 46rem; height: 46rem; background: radial-gradient(closest-side, color-mix(in srgb, var(--aai-star) 16%, transparent), transparent 70%); pointer-events: none; }
.hero h1 { font-size: clamp(2.5rem, 5.6vw, 4.4rem); line-height: 1.02; letter-spacing: -.045em; max-width: 14ch; }
.hero .sub { font-size: clamp(1.05rem, 1.6vw, 1.25rem); color: var(--aai-muted); max-width: 38rem; }
.hero-card { position: relative; padding: 1.4rem; transform: rotate(1.2deg); }
.hero-card .clause { border-left: 3px solid var(--aai-star); padding: .55rem .9rem; background: var(--aai-surface-2); border-radius: 0 .6rem .6rem 0; font-size: .92rem; }
.hero-card .finding { display: flex; gap: .6rem; align-items: flex-start; padding: .7rem 0; border-top: 1px dashed var(--aai-line); font-size: .92rem; }
.float-star { position: absolute; color: var(--aai-star); opacity: .9; animation: drift 9s ease-in-out infinite; }
@keyframes drift { 50% { transform: translateY(-10px) rotate(25deg); } }

/* Steps and features */
.step { position: relative; padding: 1.6rem; height: 100%; }
.step-number { display: inline-flex; width: 2.2rem; height: 2.2rem; border-radius: .7rem; align-items: center; justify-content: center; font-weight: 750; background: var(--aai-accent-soft); color: var(--aai-accent); margin-bottom: 1rem; }
.feature { padding: 1.5rem; height: 100%; transition: transform .2s ease, border-color .2s ease; }
.feature:hover { transform: translateY(-3px); border-color: color-mix(in srgb, var(--aai-accent) 40%, var(--aai-line)); }
.feature-icon { display: inline-flex; width: 2.6rem; height: 2.6rem; border-radius: .8rem; align-items: center; justify-content: center; background: var(--aai-surface-2); color: var(--aai-accent); margin-bottom: 1rem; }
.privacy-band { background: var(--aai-ink); color: #f4f4f7; border-radius: 1.5rem; padding: 3rem; }
[data-bs-theme="dark"] .privacy-band { background: var(--aai-surface-2); }
.privacy-band .text-muted { color: #b9bccb !important; }
.check-list { list-style: none; padding: 0; margin: 0; }
.check-list li { display: flex; gap: .6rem; padding: .35rem 0; }
.check-list .icon { color: var(--aai-ok); margin-top: .2rem; }

/* Pricing */
.plan { padding: 1.8rem; height: 100%; display: flex; flex-direction: column; }
.plan.featured { border: 2px solid var(--aai-accent); }
.plan .price { font-size: 2.4rem; font-weight: 750; letter-spacing: -.04em; }

/* FAQ */
.faq .accordion-item { background: var(--aai-surface); border-color: var(--aai-line); }
.faq .accordion-button { font-weight: 600; background: var(--aai-surface); color: var(--aai-ink); box-shadow: none; }
.faq .accordion-button:not(.collapsed) { color: var(--aai-accent); }

/* Analyze */
.dropzone { position: relative; border: 2px dashed var(--aai-line); border-radius: 1.25rem; padding: 3rem 1.5rem; text-align: center; background: var(--aai-surface); transition: border-color .2s ease, background-color .2s ease; cursor: pointer; }
.dropzone:hover, .dropzone.is-over { border-color: var(--aai-accent); background: var(--aai-accent-soft); }
.dropzone input[type=file] { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.dropzone .icon-lg { width: 2.6rem; height: 2.6rem; color: var(--aai-accent); }
.file-chip { display: flex; align-items: center; gap: .9rem; padding: .9rem 1rem; border-radius: 1rem; background: var(--aai-surface); border: 1px solid var(--aai-line); }
.file-chip .file-icon { display: inline-flex; width: 2.6rem; height: 2.6rem; border-radius: .7rem; align-items: center; justify-content: center; background: var(--aai-accent-soft); color: var(--aai-accent); }
.estimate { border-radius: 1rem; padding: 1.2rem; background: var(--aai-surface-2); }

/* Processing */
.stages { list-style: none; padding: 0; margin: 0; }
.stages li { display: flex; align-items: center; gap: .85rem; padding: .7rem 0; color: var(--aai-muted); transition: color .3s ease; }
.stages .dot { width: 1.6rem; height: 1.6rem; border-radius: 50%; border: 2px solid var(--aai-line); display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.stages li.done { color: var(--aai-ink); }
.stages li.done .dot { background: var(--aai-ok); border-color: var(--aai-ok); color: #fff; }
.stages li.current { color: var(--aai-ink); font-weight: 600; }
.stages li.current .dot { border-color: var(--aai-accent); border-top-color: transparent; animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.progress { height: .45rem; background: var(--aai-surface-2); border-radius: 1rem; }
.progress-bar { background: var(--aai-accent); transition: width .6s ease; }

/* Report */
.report-nav { position: sticky; top: 5.5rem; }
.report-nav a { display: block; padding: .35rem .7rem; border-radius: .5rem; color: var(--aai-muted); text-decoration: none; font-size: .92rem; }
.report-nav a:hover { color: var(--aai-ink); background: var(--aai-surface-2); }
.report-section { padding: 1.75rem; margin-bottom: 1.25rem; scroll-margin-top: 5.5rem; }
.report-section h2 { font-size: 1.25rem; display: flex; align-items: center; gap: .55rem; margin-bottom: 1rem; }
.verdict { display: flex; gap: 1rem; align-items: flex-start; padding: 1.2rem; border-radius: 1rem; border: 1px solid; }
.verdict.level-NoRelevantIssues { border-color: color-mix(in srgb, var(--aai-ok) 45%, transparent); background: color-mix(in srgb, var(--aai-ok) 8%, transparent); }
.verdict.level-WorthReviewing { border-color: color-mix(in srgb, var(--aai-warn) 45%, transparent); background: color-mix(in srgb, var(--aai-warn) 8%, transparent); }
.verdict.level-PotentiallyUnfavourable { border-color: color-mix(in srgb, var(--aai-risk) 45%, transparent); background: color-mix(in srgb, var(--aai-risk) 8%, transparent); }
.verdict.level-SignificantUncertainty { border-color: color-mix(in srgb, var(--aai-accent) 45%, transparent); background: color-mix(in srgb, var(--aai-accent) 8%, transparent); }
.finding-item { padding: 1rem 0; border-top: 1px solid var(--aai-line); }
.finding-item:first-of-type { border-top: 0; padding-top: 0; }
.tag { display: inline-flex; align-items: center; gap: .3rem; font-size: .75rem; font-weight: 650; padding: .2rem .55rem; border-radius: 2rem; background: var(--aai-surface-2); color: var(--aai-muted); }
.tag-risk { background: color-mix(in srgb, var(--aai-risk) 12%, transparent); color: var(--aai-risk); }
.tag-warn { background: color-mix(in srgb, var(--aai-warn) 14%, transparent); color: var(--aai-warn); }
.tag-info { background: var(--aai-accent-soft); color: var(--aai-accent); }
.ref { display: inline-flex; align-items: center; gap: .3rem; font-size: .78rem; font-weight: 600; padding: .18rem .55rem; border-radius: .5rem; border: 1px solid var(--aai-line); background: var(--aai-surface); color: var(--aai-muted); }
.ref:hover { color: var(--aai-accent); border-color: var(--aai-accent); }
.money { font-variant-numeric: tabular-nums; font-weight: 650; }
.calc { padding: .9rem 1rem; border-radius: .8rem; background: var(--aai-surface-2); }
mark.hit { background: color-mix(in srgb, var(--aai-star) 30%, transparent); color: inherit; padding: 0 .1em; border-radius: .2em; }
.page-text { white-space: pre-wrap; font-size: .9rem; max-height: 60vh; overflow: auto; background: var(--aai-surface-2); border-radius: .8rem; padding: 1rem; }
.modal-content { background: var(--aai-surface); border-color: var(--aai-line); border-radius: 1.1rem; }

/* Chat */
.chat-log { min-height: 18rem; max-height: 60vh; overflow-y: auto; padding: 1rem; }
.bubble { max-width: 85%; padding: .8rem 1rem; border-radius: 1rem; margin-bottom: .8rem; white-space: pre-wrap; }
.bubble.user { margin-left: auto; background: var(--aai-accent); color: #fff; border-bottom-right-radius: .3rem; }
[data-bs-theme="dark"] .bubble.user { color: #0e1016; }
.bubble.assistant { background: var(--aai-surface-2); border-bottom-left-radius: .3rem; }
.typing span { display: inline-block; width: .45rem; height: .45rem; margin-right: .2rem; border-radius: 50%; background: var(--aai-muted); animation: blink 1.2s infinite; }
.typing span:nth-child(2) { animation-delay: .2s; }
.typing span:nth-child(3) { animation-delay: .4s; }
@keyframes blink { 50% { opacity: .25; } }

/* Account and admin */
.stat { padding: 1.2rem 1.3rem; }
.stat .value { font-size: 1.7rem; font-weight: 750; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.stat .label { color: var(--aai-muted); font-size: .85rem; font-weight: 500; }
.admin-shell { display: grid; grid-template-columns: 15rem 1fr; gap: 1.5rem; }
.admin-side a { display: flex; align-items: center; gap: .6rem; padding: .55rem .8rem; border-radius: .6rem; color: var(--aai-muted); text-decoration: none; font-weight: 500; }
.admin-side a:hover, .admin-side a.active { background: var(--aai-surface-2); color: var(--aai-ink); }
.chart-bars { display: flex; align-items: flex-end; gap: .35rem; height: 9rem; }
.chart-bars .bar { flex: 1; background: var(--aai-accent); border-radius: .35rem .35rem 0 0; min-height: 2px; opacity: .85; }
.chart-bars .bar:hover { opacity: 1; }
.mode-pill { display: inline-flex; align-items: center; gap: .4rem; padding: .3rem .8rem; border-radius: 2rem; font-weight: 700; font-size: .85rem; }
.mode-Active { background: color-mix(in srgb, var(--aai-ok) 14%, transparent); color: var(--aai-ok); }
.mode-Warning { background: color-mix(in srgb, var(--aai-warn) 16%, transparent); color: var(--aai-warn); }
.mode-Restricted, .mode-Blocked { background: color-mix(in srgb, var(--aai-risk) 14%, transparent); color: var(--aai-risk); }
.danger-zone { border: 1px solid color-mix(in srgb, var(--aai-risk) 45%, var(--aai-line)); }
.prose { max-width: 46rem; }
.prose h2 { font-size: 1.3rem; margin-top: 2rem; }

/* Footer */
.site-footer { border-top: 1px solid var(--aai-line); padding: 3rem 0 2rem; margin-top: 4rem; color: var(--aai-muted); font-size: .92rem; }
.site-footer a { color: var(--aai-muted); text-decoration: none; }
.site-footer a:hover { color: var(--aai-ink); }

.fade-in { animation: fadeIn .45s ease both; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(6px); } }
.toast-zone { position: fixed; right: 1rem; bottom: 1rem; z-index: 1080; }

@media (max-width: 991.98px) {
  .admin-shell { grid-template-columns: 1fr; }
  .report-nav { position: static; }
  .hero { padding-top: 4rem; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
@media print {
  .site-nav, .site-footer, .no-print, .report-nav { display: none !important; }
  .surface, .surface-flat { box-shadow: none; border-color: #ccc; }
  body { background: #fff; color: #000; }
}

/* Utilities (no inline styles: the CSP forbids them) */
.text-warn { color: var(--aai-warn) !important; }
.text-accent { color: var(--aai-accent) !important; }
.text-star { color: var(--aai-star) !important; }
.text-risk { color: var(--aai-risk) !important; }
.float-star-hero { top: -1.5rem; right: 2rem; }
.container-narrow { max-width: 52rem; }
.container-xs { max-width: 36rem; }
.brand-mark-lg { width: 3rem; height: 3rem; }
.display-5, .display-6 { font-weight: 750; }
.admin-shell > * { min-width: 0; }
.admin-shell code { overflow-wrap: anywhere; }
details > summary { cursor: pointer; list-style: none; }
details > summary::-webkit-details-marker { display: none; }
