/* Aimosti redesign — authenticated app surfaces (dashboard, welcome, consent, subscription).
   Loaded via head_extra AFTER funnel.css (which supplies .card/.alert/.spinner/.drop-zone/
   .btn--lg/.checkout-consent). This layer adds only the app-shell + app-only components.
   Product register: restrained, precise, one consistent component vocabulary. */

/* ── app shell ───────────────────────────────────────── */
.app{max-width:900px;margin-inline:auto;padding:clamp(2rem,5vw,3.4rem) clamp(1.2rem,4vw,2rem) var(--space)}
.app--narrow{max-width:680px}
.app--wide{max-width:1040px}
.app>h1{font-size:clamp(1.7rem,3.4vw,2.4rem);font-weight:700;letter-spacing:-.03em}
.app__head{margin-bottom:1.8rem;padding-bottom:1.4rem;border-bottom:1.5px solid var(--ink)}
.app__head .eyebrow{margin-bottom:1rem}
.app__head h1{font-size:clamp(1.8rem,3.6vw,2.6rem);font-weight:700;letter-spacing:-.035em}
.app .lede{max-width:60ch;margin-top:1rem;font-size:clamp(1.02rem,1vw,1.15rem);color:var(--ink-soft);line-height:1.55}
.app .card{margin-top:1.2rem}
.app .card h2{font-size:1.2rem;font-weight:700;letter-spacing:-.02em}
.app .card p{margin:.5rem 0;color:var(--ink-soft)}
.app .card .btn{margin-top:1rem}
.back-link{display:inline-block;margin-top:1.6rem;font:500 .9rem var(--font-mono);color:var(--ink-soft);text-decoration:none}
.back-link:hover{color:var(--ink)}

/* success alert — funnel.css covers error/warning; this completes the set */
.alert-success{background:oklch(0.96 0.04 150);border:1.5px solid var(--ok);color:oklch(0.40 0.10 150)}
.alert-success strong{color:oklch(0.34 0.10 150)}

/* ── consent status dots (dashboard summary) ─────────── */
.consent-list{list-style:none;margin:1rem 0 1.4rem;padding:0;display:grid;gap:.6rem}
.consent-list li{display:flex;align-items:center;gap:.7ch;font-size:.95rem}
.dot{width:9px;height:9px;border-radius:50%;flex:none;border:1.5px solid var(--line-2)}
.dot.on{background:var(--ok);border-color:var(--ok)}
.dot.off{background:var(--bg)}
.consent-list em{font-style:normal;font:500 .76rem var(--font-mono);color:var(--ink-faint)}

/* ── buy panel (no report credit yet) ────────────────── */
.buy-panel{display:grid;gap:.6rem}
.buy-panel .btn{justify-self:start;margin-top:.6rem}

/* ── upload progress bar ─────────────────────────────── */
.progress-bar{height:8px;border-radius:100px;background:var(--tint);border:1px solid var(--line);overflow:hidden;margin:.7rem 0}
.progress-bar__fill{height:100%;background:var(--primary);border-radius:100px;transition:width .3s cubic-bezier(.2,.7,.2,1)}

/* ── analyses table ──────────────────────────────────── */
.analyses-list{margin-top:1.8rem;border-top:1.5px solid var(--line);padding-top:1.2rem}
.analyses-list h3{font:600 .76rem var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:.6rem}
.analyses-table{width:100%;border-collapse:collapse;font-size:.92rem}
.analyses-table th{text-align:left;font:600 .68rem var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);padding:.5rem .6rem;border-bottom:1.5px solid var(--line)}
.analyses-table td{padding:.7rem .6rem;border-bottom:1px solid var(--line);vertical-align:middle}
.analyses-table tr:last-child td{border-bottom:0}

/* status badge — mono pill, severity-aware (in-progress = blue, done = green, failed = red) */
.status-badge{display:inline-flex;align-items:center;gap:.5ch;font:600 .72rem var(--font-mono);letter-spacing:.02em;
  padding:.22em .65em;border-radius:100px;border:1.5px solid var(--primary);color:var(--primary);background:var(--primary-wash)}
.status-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.status-badge--complete,.status-badge--input_deleted{border-color:var(--ok);color:oklch(0.40 0.10 150);background:oklch(0.96 0.04 150)}
.status-badge--failed{border-color:var(--attention);color:var(--attention);background:var(--attention-wash)}

/* ── Deep Read uploader rows ─────────────────────────── */
.dr-item{padding:1.1rem 0;border-top:1px solid var(--line)}
.dr-item:first-of-type{border-top:0}
.dr-item__head{font:600 .76rem var(--font-mono);letter-spacing:.03em;color:var(--ink-faint);margin-bottom:.7rem}
.dr-uploader{display:grid;gap:.9rem;border:1.5px solid var(--line);border-radius:var(--radius-lg);background:var(--tint);padding:1.1rem}
.dr-files{display:grid;gap:.7rem}
.dr-files label{display:grid;gap:.35rem;font-size:.9rem;font-weight:600}
.dr-files input[type=file]{font:inherit;font-weight:400;font-size:.86rem;color:var(--ink-soft)}

/* ── onboarding (register 2-col) + welcome path ──────── */
.onboard{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,5vw,4rem);align-items:start}
@media(max-width:860px){.onboard{grid-template-columns:1fr}}
.onboard--welcome{display:block}
.onboard__intro{margin-bottom:2.2rem}
.onboard__intro .eyebrow{margin-bottom:1rem}
.onboard__intro h1{font-size:clamp(1.9rem,4vw,2.8rem);font-weight:700;letter-spacing:-.035em}
.onboard__intro .lede{max-width:58ch;margin-top:1.1rem;font-size:clamp(1.05rem,1.1vw,1.2rem);color:var(--ink-soft);line-height:1.55}
.path-cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1.1rem}
.path-card{display:flex;flex-direction:column;gap:.5rem;margin-top:0}
.path-card__step{font:600 .68rem var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--primary)}
.path-card h2{font-size:1.15rem;font-weight:700;letter-spacing:-.02em}
.path-card p{font-size:.92rem;color:var(--ink-soft);line-height:1.5;margin:0}
.onboard__cta{margin-top:2.4rem;padding-top:1.6rem;border-top:1.5px solid var(--line)}
.onboard__cta .muted{margin-top:.8rem;font-size:.92rem}

/* ── consent form ────────────────────────────────────── */
.consent .eyebrow{margin-bottom:.9rem}
.consent>h1{font-size:clamp(1.8rem,3.6vw,2.6rem);font-weight:700;letter-spacing:-.035em}
.consent>.lede{max-width:62ch;margin-top:1rem;font-size:clamp(1.02rem,1vw,1.15rem);color:var(--ink-soft);line-height:1.55}
.consent-form{display:grid;gap:.9rem;margin-top:1.8rem}
.consent-item{display:grid;grid-template-columns:auto 1fr;gap:.9rem;align-items:start;
  border:1.5px solid var(--line);border-radius:var(--radius-lg);padding:1.1rem 1.2rem;cursor:pointer;background:var(--bg);
  transition:border-color .2s,background .2s}
.consent-item:hover{border-color:var(--line-2)}
.consent-item input[type=checkbox]{margin-top:.18rem;width:1.1rem;height:1.1rem;accent-color:var(--primary);flex:none}
.consent-item--primary{border-color:var(--primary);background:var(--primary-wash)}
.consent-item__body{display:grid;gap:.3rem}
.consent-item__title{display:flex;align-items:center;gap:.7ch;flex-wrap:wrap}
.consent-item__title strong{font-size:1.02rem}
.consent-item__desc{font-size:.92rem;line-height:1.5}
.req-pill{font:600 .64rem var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--on-primary);
  background:var(--primary);border-radius:100px;padding:.22em .6em}
.consent-optional-head{font-size:1.05rem;font-weight:700;margin-top:1.4rem}
.consent-optional-sub{margin-top:-.3rem}
.consent-form .btn{justify-self:start;margin-top:.8rem}

/* ── notices + inline errors (.notice base lives in funnel.css) ── */
.reconsent-notice{border-color:var(--signal);background:var(--signal-wash);color:var(--signal-ink)}
.reconsent-notice strong{color:var(--signal-ink)}
.error{border:1.5px solid var(--attention);background:var(--attention-wash);color:var(--attention);border-radius:var(--radius);padding:.8rem 1rem;font-size:.92rem;margin:1.2rem 0}

/* ── auth (login / register / reset / verify) ────────── */
.auth-form{display:grid;gap:1rem;max-width:380px;margin-top:1.4rem}
.auth-form label{display:grid;gap:.4rem;font-size:.92rem;font-weight:600}
.auth-form input{font:inherit;font-weight:400;padding:.65em .8em;border:1.5px solid var(--line-2);border-radius:var(--radius);background:var(--bg);color:var(--ink)}
.auth-form input:focus-visible{outline:2.5px solid var(--signal);outline-offset:2px;border-color:var(--primary)}
.auth-form .btn{justify-self:start;margin-top:.3rem}
.or{display:flex;align-items:center;gap:1ch;max-width:380px;margin:1.3rem 0;color:var(--ink-faint);font:600 .74rem var(--font-mono);text-transform:uppercase;letter-spacing:.08em}
.or::before,.or::after{content:"";flex:1;height:1px;background:var(--line)}
.btn-google{max-width:380px;width:100%;justify-content:center}
/* Register CTA on the login screen — a clear secondary action, not a muted afterthought. */
.login-register{max-width:380px;margin-top:1.6rem;padding-top:1.2rem;border-top:1px solid var(--line);color:var(--ink-soft);font-size:.95rem}
.login-register a{color:var(--primary);text-decoration:none;white-space:nowrap}
.login-register a:hover{text-decoration:underline}
/* register journey — a real ordered sequence */
.journey{list-style:none;margin:1.6rem 0;padding:0;display:grid;gap:1.1rem}
.journey li{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:start}
.journey__num{width:1.9rem;height:1.9rem;display:flex;align-items:center;justify-content:center;flex:none;
  font:600 .85rem var(--font-mono);color:var(--primary);background:var(--primary-wash);border:1.5px solid var(--primary);border-radius:50%}
.journey strong{display:block;margin-bottom:.15rem}
.journey p{margin:0;font-size:.92rem}
.onboard__assure{margin-top:1.4rem;font-size:.88rem}
.onboard__form{align-self:start}
.onboard__form h2{font-size:1.2rem;font-weight:700;letter-spacing:-.02em;margin-bottom:.5rem}
.onboard__form .muted{margin-top:.9rem}

/* ── contact form ────────────────────────────────────── */
.contact-form{display:grid;gap:1.1rem;margin-top:1.4rem}
.contact-form label{display:grid;gap:.4rem;font-size:.92rem;font-weight:600}
.contact-form input,.contact-form textarea{font:inherit;font-weight:400;width:100%;padding:.65em .8em;border:1.5px solid var(--line-2);border-radius:var(--radius);background:var(--bg);color:var(--ink)}
.contact-form input:focus-visible,.contact-form textarea:focus-visible{outline:2.5px solid var(--signal);outline-offset:2px;border-color:var(--primary)}
.contact-form input::placeholder,.contact-form textarea::placeholder{color:var(--ink-faint)}
.contact-form textarea{resize:vertical;min-height:8rem;line-height:1.5}
.contact-form .req{color:var(--attention);font-weight:700}
.contact-form .btn{justify-self:start}
.contact-form__alt{font-size:.88rem;margin-top:.3rem}
.contact__sent{max-width:560px}
/* .hp honeypot rule moved to core.css so it's loaded on marketing pages too (not just the app shell). */

/* ── utilities ───────────────────────────────────────── */
.mt-3{margin-top:1.2rem}
.mt-4{margin-top:1.8rem}
