/* Apply app — Theós design language ported for a public insurance customer app.
   Centered glass card on an animated ambient canvas; dark-first with light/auto via
   [data-theme]; single accent = Steele blue. Auth screens use .auth/.field/.btn; the
   questionnaire + dashboard reuse the same tokens and card aesthetic. */
:root{
  --bg:#0b0b14; --bg-2:#12121f;
  --surface:rgba(255,255,255,0.035); --surface-2:rgba(255,255,255,0.05);
  --border:rgba(255,255,255,0.09); --border-strong:rgba(255,255,255,0.16);
  --fg:#ececf5; --muted:#8a8aa8;
  --accent:#3f7fd6;            /* lightened Steele blue for dark-mode glow/focus legibility */
  --accent-ink:#ffffff;
  --ok:#34d399; --danger:#f87171;
  --font:'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  --radius:16px; --radius-input:10px;
  color-scheme:dark;
}
:root[data-theme="light"]{
  --bg:#f5f5fa; --bg-2:#ececf3; --surface:#ffffff; --surface-2:#f2f2f8;
  --border:rgba(20,20,40,0.10); --border-strong:rgba(20,20,40,0.20);
  --fg:#16162a; --muted:#5c5c78; --accent:#134b8e; --danger:#dc2626;
  color-scheme:light;
}
@media (prefers-color-scheme: light){
  :root:not([data-theme="dark"]):not([data-theme="light"]){
    --bg:#f5f5fa; --bg-2:#ececf3; --surface:#ffffff; --surface-2:#f2f2f8;
    --border:rgba(20,20,40,0.10); --border-strong:rgba(20,20,40,0.20);
    --fg:#16162a; --muted:#5c5c78; --accent:#134b8e; --danger:#dc2626;
    color-scheme:light;
  }
}
*{margin:0;padding:0;box-sizing:border-box}
body.ap{min-height:100vh;position:relative;overflow-x:hidden;background:var(--bg);color:var(--fg);font-family:var(--font);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;display:flex;flex-direction:column}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
img{max-width:100%}

/* ambient drifting blobs (accent + sky) — the Theós signature */
body.ap::before,body.ap::after{content:'';position:fixed;z-index:0;pointer-events:none;inset:-25%;will-change:transform}
body.ap::before{background:radial-gradient(45vw 42vh at 30% 22%, color-mix(in srgb, var(--accent) 24%, transparent), transparent 70%);animation:driftA 32s ease-in-out infinite}
body.ap::after{background:radial-gradient(42vw 40vh at 74% 80%, color-mix(in srgb, #38bdf8 16%, transparent), transparent 70%);animation:driftB 40s ease-in-out infinite}
:root[data-theme="light"] body.ap::before,:root[data-theme="light"] body.ap::after{opacity:.5}
@keyframes driftA{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(5%,4%) scale(1.1)}}
@keyframes driftB{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-4%,-5%) scale(1.12)}}
@media (prefers-reduced-motion: reduce){body.ap::before,body.ap::after{animation:none}}

/* theme switch pill */
.theme-switch{position:fixed;top:1rem;right:1rem;z-index:6;display:inline-flex;gap:.15rem;padding:.2rem;background:var(--surface);border:1px solid var(--border);border-radius:999px;backdrop-filter:blur(8px)}
.theme-switch button{border:0;background:none;color:var(--muted);cursor:pointer;font-size:.78rem;padding:.3rem .7rem;border-radius:999px;line-height:1}
.theme-switch button:hover{color:var(--fg)}
.theme-switch button.is-active{color:var(--fg);background:color-mix(in srgb, var(--accent) 18%, transparent)}

/* app header (logged-in pages) */
.ap-top{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem clamp(1rem,4vw,2rem)}
.ap-brand{display:inline-flex;align-items:center;gap:.6rem;color:var(--muted);font-size:12px;letter-spacing:.1em;text-transform:uppercase;text-decoration:none}
.ap-brand:hover{text-decoration:none}
.ap-mark{width:12px;height:12px;background:var(--accent);transform:rotate(45deg);border-radius:2px;box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 18%, transparent);flex:none}
.ap-brand__name{font-weight:500;color:var(--fg)}
.ap-top__nav{display:flex;align-items:center;gap:1.1rem;font-size:.86rem}
.ap-top__who{color:var(--muted);max-width:38vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ap-top__link{color:var(--muted);text-decoration:none;font-weight:500}
.ap-top__link:hover{color:var(--fg);text-decoration:none}
.ap-main{position:relative;z-index:1;flex:1;width:100%;max-width:760px;margin:0 auto;padding:clamp(1rem,3vw,2rem) clamp(1rem,4vw,1.5rem) 2.5rem}
.ap-foot{position:relative;z-index:1;display:inline-flex;align-self:center;align-items:center;gap:.5rem;font-size:11.5px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;padding:1rem 1rem 2rem}
.ap-foot__chip{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 10px var(--ok)}

/* ---- auth (Theós .auth card) ---- */
.auth{position:relative;z-index:1;flex:1;display:grid;place-items:center;padding:clamp(1rem,4vw,3rem)}
.auth__card{width:min(430px,100%);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:clamp(1.6rem,4vw,2.5rem);display:grid;gap:1.2rem;box-shadow:0 24px 70px rgba(0,0,0,.45);backdrop-filter:blur(12px)}
:root[data-theme="light"] .auth__card{box-shadow:0 20px 50px rgba(20,20,40,.12)}
.auth__brand{display:flex;align-items:center;gap:.6rem;color:var(--muted);font-size:12px;letter-spacing:.1em;text-transform:uppercase}
.auth__mark{width:12px;height:12px;background:var(--accent);transform:rotate(45deg);border-radius:2px;box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 18%, transparent)}
.auth__org{font-weight:500}
.auth__title{font-size:28px;font-weight:650;letter-spacing:-.03em;line-height:1.1}
.auth__subtitle{font-size:14px;color:var(--muted);margin-top:-.6rem}
.auth__notice{font-size:13.5px;padding:.75rem .875rem;border-radius:var(--radius-input);border:1px solid var(--border);background:var(--surface-2)}
.auth__notice--error{border-color:color-mix(in srgb, var(--danger) 40%, var(--border));color:var(--danger);background:color-mix(in srgb, var(--danger) 10%, transparent)}
.auth__notice--ok{border-color:color-mix(in srgb, var(--ok) 40%, var(--border));color:var(--ok);background:color-mix(in srgb, var(--ok) 12%, transparent)}
.auth__form{display:grid;gap:1rem}
.field{display:grid;gap:.4rem}
.field__label{font-size:12px;letter-spacing:.05em;color:var(--muted);text-transform:uppercase}
.field__hint{font-size:12px;color:var(--muted)}
.field__input{width:100%;padding:.75rem .875rem;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-input);font-size:15px;color:var(--fg);transition:border-color 140ms ease,box-shadow 140ms ease}
.field__input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 22%, transparent)}
.auth__row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.auth__row--end{justify-content:flex-end}
.auth__row--split{justify-content:space-between}
.auth__link{font-size:13px}
.auth__foot{display:inline-flex;align-items:center;gap:.5rem;font-size:11.5px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}
.auth__chip{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 10px var(--ok)}
.auth__qr{display:grid;justify-items:center;gap:.6rem;text-align:center}
.auth__qr-img{width:184px;height:184px;border-radius:var(--radius-input);background:#fff;padding:8px}
.auth__secret{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;letter-spacing:.06em;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-input);padding:.5rem .75rem;word-break:break-all;user-select:all;text-align:center}
.auth__codes{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:.4rem}
.auth__codes li{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-input);padding:.45rem;text-align:center}
.otp-input{text-align:center;font-size:1.35rem;letter-spacing:.4em}
details.auth__alt{font-size:13px}
details.auth__alt summary{color:var(--muted);cursor:pointer;list-style:none}
details.auth__alt summary::-webkit-details-marker{display:none}

/* ---- buttons (Theós .btn) ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.8rem 1rem;border-radius:var(--radius-input);font-size:14.5px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:transform 140ms ease,box-shadow 200ms ease,background 140ms ease,border-color 140ms;text-decoration:none}
.btn:hover{text-decoration:none}
.btn--primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 8px 24px color-mix(in srgb, var(--accent) 35%, transparent)}
.btn--primary:hover{transform:translateY(-1px);box-shadow:0 12px 32px color-mix(in srgb, var(--accent) 45%, transparent)}
.btn--ghost{background:var(--surface-2);border-color:var(--border-strong);color:var(--fg)}
.btn--ghost:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}
.btn--block{width:100%}
.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none}
.btn__glyph{transition:transform 140ms ease}.btn:hover .btn__glyph{transform:translateX(2px)}

/* ---- questionnaire (reuses tokens + card aesthetic) ---- */
.ap-q{position:relative;z-index:1}
.ap-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 24px 70px rgba(0,0,0,.35);backdrop-filter:blur(12px);padding:clamp(1.4rem,4vw,2rem)}
:root[data-theme="light"] .ap-card,:root[data-theme="light"] .ap-section{box-shadow:0 18px 44px rgba(20,20,40,.10)}
.ap-q__head{margin:0 0 1.4rem}
.ap-q__head h1{font-size:26px;font-weight:650;letter-spacing:-.03em;line-height:1.1;margin:0 0 .4rem}
.ap-q__head p{color:var(--muted);margin:0}
.ap-progress{height:7px;border-radius:999px;background:var(--surface-2);overflow:hidden;margin:1rem 0 0;border:1px solid var(--border)}
.ap-progress__bar{height:100%;background:linear-gradient(90deg, var(--accent), #38bdf8);width:0;transition:width .35s ease}
.ap-steps{display:flex;flex-direction:column;gap:.4rem;align-items:stretch;margin:.6rem 0 0}
.ap-stepcount{font-size:.75rem;color:var(--muted);letter-spacing:.02em}
.ap-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 24px 70px rgba(0,0,0,.35);backdrop-filter:blur(12px);padding:clamp(1.3rem,4vw,2rem);animation:rise 420ms cubic-bezier(.2,.7,.2,1) both}
.ap-section__title{margin:0 0 .25rem;font-size:1.3rem;font-weight:650;letter-spacing:-.02em}
.ap-section__desc{margin:0 0 1.4rem;color:var(--muted)}
.ap-hero{margin:0 0 1.3rem}
.ap-hero h1{font-size:1.7rem;font-weight:650;letter-spacing:-.03em;margin:0 0 .4rem}
.ap-hero p{color:var(--muted);margin:0}
.ap-eyebrow{display:inline-flex;align-items:center;gap:.5rem;font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:.7rem}
.ap-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 1.1rem}
@media (max-width:520px){.ap-grid{grid-template-columns:1fr}}
.ap-field{margin:0 0 1.05rem}
.ap-field--wide{grid-column:1/-1}
.ap-label{display:block;font-size:12px;letter-spacing:.05em;color:var(--muted);text-transform:uppercase;margin:0 0 .4rem}
.ap-input,.ap-select{width:100%;padding:.75rem .875rem;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-input);font-size:15px;color:var(--fg);transition:border-color .14s,box-shadow .14s}
.ap-input:focus,.ap-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 22%, transparent)}
.ap-help{color:var(--muted);font-size:12px;margin:.35rem 0 0}
.ap-money{position:relative}
.ap-money::before{content:"$";position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--muted)}
.ap-money .ap-input{padding-left:1.5rem}
.ap-navrow{display:flex;justify-content:space-between;gap:.7rem;align-items:center;margin:1.5rem 0 0}
.ap-save{color:var(--muted);font-size:12px;text-align:center;flex:1}
.ap-btnrow{display:flex;gap:.7rem;flex-wrap:wrap}
.ap-mt{margin-top:1rem}.ap-center{text-align:center}.ap-muted{color:var(--muted);font-size:.9rem}

/* legacy .ap-btn -> Theós button look (used by apply.js + dashboard) */
.ap-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.8rem 1.1rem;border-radius:var(--radius-input);font-size:14.5px;font-weight:600;cursor:pointer;border:1px solid transparent;background:var(--accent);color:var(--accent-ink);box-shadow:0 8px 24px color-mix(in srgb, var(--accent) 35%, transparent);transition:transform .14s,box-shadow .2s;text-decoration:none}
.ap-btn:hover{transform:translateY(-1px);box-shadow:0 12px 32px color-mix(in srgb, var(--accent) 45%, transparent);text-decoration:none}
.ap-btn[disabled]{opacity:.5;cursor:not-allowed;transform:none}
.ap-btn--ghost{background:var(--surface-2);border-color:var(--border-strong);color:var(--fg);box-shadow:none}
.ap-btn--ghost:hover{border-color:var(--accent);color:var(--accent);box-shadow:none}
.ap-btn--lg{padding:.9rem 1.3rem;font-size:1rem}
.ap-btn--block{width:100%}

/* enum tiles */
.ap-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.7rem}
.ap-tile{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:.55rem;padding:.95rem;border:1.5px solid var(--border-strong);border-radius:var(--radius-input);background:var(--surface-2);cursor:pointer;text-align:left;transition:border-color .14s,background .14s,transform .05s;color:var(--fg)}
.ap-tile:hover{border-color:var(--accent);transform:translateY(-1px)}
.ap-tile:active{transform:translateY(0)}
.ap-tile.is-on{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 16%, transparent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent)}
.ap-tile__ic{width:28px;height:28px;color:var(--accent);flex:none}
.ap-tile__ic svg{width:100%;height:100%;display:block}
.ap-tile__lab{font-weight:600;font-size:.9rem;line-height:1.2}
.ap-tile__sub{font-size:.74rem;color:var(--muted);line-height:1.2}
.ap-tile__check{position:absolute;top:.5rem;right:.5rem;width:18px;height:18px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:none;align-items:center;justify-content:center}
.ap-tile.is-on .ap-tile__check{display:flex}
.ap-tile__check svg{width:11px;height:11px}
.ap-tile.is-invalid,.ap-field.is-invalid .ap-input,.ap-field.is-invalid .ap-select{border-color:var(--danger)}

/* repeatable list rows */
.ap-list__row{border:1px solid var(--border);border-radius:var(--radius-input);padding:1.1rem;margin:0 0 .8rem;background:var(--surface-2);position:relative}
.ap-list__rm{position:absolute;top:.5rem;right:.5rem;border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:1.2rem;line-height:1;padding:.15rem .4rem;border-radius:6px}
.ap-list__rm:hover{background:color-mix(in srgb, var(--danger) 15%, transparent);color:var(--danger)}
.ap-list__empty{color:var(--muted);font-size:.9rem;margin:0 0 .8rem}

/* alerts */
.ap-alert{border-radius:var(--radius-input);padding:.75rem .9rem;font-size:.9rem;margin:0 0 1rem;border:1px solid var(--border)}
.ap-alert--err{background:color-mix(in srgb, var(--danger) 10%, transparent);color:var(--danger);border-color:color-mix(in srgb, var(--danger) 40%, var(--border))}
.ap-alert--ok{background:color-mix(in srgb, var(--ok) 12%, transparent);color:var(--ok);border-color:color-mix(in srgb, var(--ok) 40%, var(--border))}
.ap-alert--info{background:var(--surface-2);color:var(--fg)}

/* dashboard */
.ap-apps{display:flex;flex-direction:column;gap:.7rem;margin:1.2rem 0 0}
.ap-app{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.1rem;border:1px solid var(--border);border-radius:var(--radius-input);background:var(--surface-2);text-decoration:none;color:var(--fg);transition:border-color .14s,transform .05s}
.ap-app:hover{border-color:var(--accent);transform:translateY(-1px);text-decoration:none}
.ap-app__t{font-weight:600}
.ap-app__m{color:var(--muted);font-size:.8rem}
.ap-badge{font-size:.7rem;font-weight:700;padding:.24rem .6rem;border-radius:999px;white-space:nowrap;text-transform:uppercase;letter-spacing:.04em}
.ap-badge--invited{background:color-mix(in srgb, var(--accent) 18%, transparent);color:var(--accent)}
.ap-badge--draft{background:var(--surface);color:var(--muted);border:1px solid var(--border)}
.ap-badge--submitted{background:color-mix(in srgb, var(--ok) 15%, transparent);color:var(--ok)}

@media (prefers-reduced-motion: no-preference){
  .auth__card{animation:rise 460ms cubic-bezier(.2,.7,.2,1) both}
  @keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
}

/* ---- header brand logo + profile dropdown ---- */
.ap-brand__logo{height:24px;width:auto;display:block;background:#fff;border-radius:7px;padding:4px 8px}
.ap-profile{position:relative}
.ap-profile__btn{display:inline-flex;align-items:center;gap:.5rem;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:.3rem .55rem .3rem .35rem;color:var(--fg);cursor:pointer;font:inherit}
.ap-profile__btn:hover{border-color:var(--border-strong)}
.ap-avatar{width:28px;height:28px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:inline-flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700;flex:none}
.ap-profile__name{font-size:.86rem;font-weight:500;max-width:24vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ap-profile__chev{color:var(--muted);transition:transform .15s}
.ap-profile.is-open .ap-profile__chev{transform:rotate(180deg)}
.ap-menu{position:absolute;top:calc(100% + .5rem);right:0;min-width:224px;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 20px 50px rgba(0,0,0,.4);backdrop-filter:blur(12px);padding:.5rem;z-index:20}
:root[data-theme="light"] .ap-menu{box-shadow:0 18px 44px rgba(20,20,40,.14)}
.ap-menu__head{padding:.4rem .6rem .6rem}
.ap-menu__name{font-weight:600}
.ap-menu__email{font-size:.78rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ap-menu__item{display:flex;align-items:center;gap:.6rem;padding:.55rem .6rem;border-radius:9px;color:var(--fg);text-decoration:none;font-size:.9rem}
.ap-menu__item:hover{background:var(--surface-2);text-decoration:none}
.ap-menu__item svg{color:var(--muted);flex:none}
.ap-menu__item--danger:hover{color:var(--danger)}
.ap-menu__item--danger:hover svg{color:var(--danger)}
.ap-menu__sep{height:1px;background:var(--border);margin:.4rem .2rem}
.ap-menu__label{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:.2rem .6rem .4rem}
.ap-theme-seg{display:flex;gap:.2rem;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:.2rem;margin:0 .2rem}
.ap-theme-seg button{flex:1;border:0;background:none;color:var(--muted);cursor:pointer;font-size:.8rem;padding:.35rem;border-radius:8px;line-height:1}
.ap-theme-seg button:hover{color:var(--fg)}
.ap-theme-seg button.is-active{color:var(--fg);background:color-mix(in srgb, var(--accent) 20%, transparent)}
.auth__logo{height:28px;width:auto;display:block;background:#fff;border-radius:9px;padding:6px 11px}

.ap-dots{display:flex;justify-content:space-between;align-items:center;gap:.25rem}
.ap-dot{min-width:26px;height:26px;padding:0 .3rem;border-radius:999px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--muted);font-size:.72rem;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:border-color .14s,background .14s,color .14s}
.ap-dot:hover{border-color:var(--accent);color:var(--fg)}
.ap-dot.is-current{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.ap-dot.is-done{border-color:color-mix(in srgb,var(--accent) 45%,var(--border-strong));color:var(--accent)}
.ap-dot--rev{padding:0 .6rem}

/* connected stepper: dots sit on a progress line, filled up to the current step */
.ap-stepper{position:relative;padding:4px 0}
.ap-stepper__line{position:absolute;left:13px;right:13px;top:calc(50% - 1px);height:2px;background:var(--border-strong);border-radius:2px}
.ap-stepper__fill{position:absolute;left:13px;top:calc(50% - 1px);height:2px;background:linear-gradient(90deg,var(--accent),#38bdf8);border-radius:2px;transition:width .35s ease;max-width:calc(100% - 26px)}
.ap-stepper .ap-dots{position:relative;z-index:1}
.ap-stepper .ap-dot{background:var(--bg)}
.ap-stepper .ap-dot.is-current{background:var(--accent)}
.ap-dot.is-locked{opacity:.4;cursor:not-allowed}
.ap-dot.is-locked:hover{border-color:var(--border-strong);color:var(--muted)}
