/* signup.css — the public sign-up / checkout, dressed in the MARKETING site's
   visual language rather than the panel's utilitarian one, so the buy flow feels
   like one continuous, premium experience on the operator's own domain.

   Self-contained and token-driven: the operator's accent + logo arrive at runtime
   via /v1/storefront-brand (the page sets --brand / --brand-tint on <html>), and
   the neutrals follow the visitor's OS (auto light/dark). Nothing here depends on
   the panel stylesheet, so it renders identically whether served from the panel
   host or proxied onto juraganemping.com/signup. */

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
:root{
  --brand:#0C8E84; --brand-hover:#0A736B; --brand-tint:#E1EEEC; --brand-contrast:#ffffff;
  --brand-strong:#0A736B; --brand-lift:#3FD9C8;
  --bg:#F7FDFA; --surface:#ffffff; --surface-2:#EFF9F3; --border:#DCEDE4; --border-strong:#7C938D;
  --text:#0C1A17; --text-muted:#51635E; --danger:#BF3333;
  --shadow-sm:0 1px 2px rgba(12,26,23,.05),0 8px 24px -14px rgba(12,26,23,.12);
  --shadow:0 1px 2px rgba(12,26,23,.05),0 18px 44px -22px rgba(12,26,23,.22);
  --radius:16px;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --maxw:960px;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --brand-strong:var(--brand-lift,#3FD9C8);
    --bg:#0B1614; --surface:#111F1C; --surface-2:#172A26; --border:#24403A; --border-strong:#5C7A72;
    --text:#E8F2EF; --text-muted:#9FB8B2; --danger:#FF8A80; --brand-contrast:#06120F;
    --shadow-sm:0 1px 2px rgba(0,0,0,.4),0 10px 26px -14px rgba(0,0,0,.6);
    --shadow:0 1px 2px rgba(0,0,0,.44),0 22px 50px -24px rgba(0,0,0,.7);
  }
}
[data-theme="dark"]{
  --brand-strong:var(--brand-lift,#3FD9C8);
  --bg:#0B1614; --surface:#111F1C; --surface-2:#172A26; --border:#24403A; --border-strong:#5C7A72;
  --text:#E8F2EF; --text-muted:#9FB8B2; --danger:#FF8A80; --brand-contrast:#06120F;
  --shadow-sm:0 1px 2px rgba(0,0,0,.4),0 10px 26px -14px rgba(0,0,0,.6);
  --shadow:0 1px 2px rgba(0,0,0,.44),0 22px 50px -24px rgba(0,0,0,.7);
}
/* A class with display:flex/grid outranks the UA [hidden] rule, so toggling
   .hidden on a flex element (the step bar) would leave it visible. Force it. */
[hidden]{display:none!important}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);line-height:1.55;-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto}
a{color:var(--brand-strong);text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:2px solid var(--brand-strong);outline-offset:2px;border-radius:6px}

/* A faint aurora wash behind the header — the premium touch, kept cheap (a fixed
   radial gradient, no blur, no animation) so it never costs performance. */
body::before{content:"";position:fixed;inset:0 0 auto 0;height:340px;z-index:-1;pointer-events:none;
  background:radial-gradient(120% 100% at 50% -30%, color-mix(in srgb, var(--brand) 16%, transparent), transparent 70%)}

/* ---------- Chrome (topbar + footer) ---------- */
.su-top{display:flex;align-items:center;gap:16px;max-width:var(--maxw);margin:0 auto;padding:20px 22px}
.su-top .brand{display:flex;align-items:center;gap:10px;color:var(--text);font-weight:700;font-size:18px}
.su-top .brand img{max-height:30px;width:auto;border-radius:6px;display:block}
.su-top .brand .cp{color:var(--brand-strong)}
.su-top .spacer{flex:1}
.su-back{font-size:14px;font-weight:500;color:var(--text-muted);display:inline-flex;align-items:center;gap:6px;min-height:40px}
.su-back:hover{color:var(--brand-strong);text-decoration:none}
/* Right-to-left (an Arabic site): the direction arrows turn round with the page. */
[dir=rtl] .su-back svg,[dir=rtl] .su-card .pick svg{transform:scaleX(-1)}
.su-foot{max-width:var(--maxw);margin:36px auto 28px;padding:18px 22px 0;border-top:1px solid var(--border);
  color:var(--text-muted);font-size:12.5px;display:flex;gap:12px;flex-wrap:wrap;align-items:center;justify-content:space-between}
.su-foot .secure{display:inline-flex;align-items:center;gap:7px}
.su-foot .secure svg{width:15px;height:15px;color:var(--brand-strong)}

/* ---------- Layout ---------- */
.su-wrap{max-width:var(--maxw);margin:0 auto;padding:8px 22px 8px}
.su-hero{text-align:center;margin:14px auto 30px;max-width:640px}
.su-hero h1{font-size:clamp(26px,4.4vw,38px);line-height:1.12;letter-spacing:-.02em;margin:0 0 10px;text-wrap:balance}
.su-hero p{font-size:16px;color:var(--text-muted);margin:0}
.su-steps{display:flex;gap:8px;justify-content:center;margin:16px 0 0;flex-wrap:wrap}
.su-steps .st{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--text-muted);
  padding:5px 12px;border:1px solid var(--border);border-radius:999px;background:var(--surface)}
.su-steps .st .n{width:19px;height:19px;border-radius:50%;background:var(--surface-2);color:var(--text-muted);
  display:inline-flex;align-items:center;justify-content:center;font-size:11px}
.su-steps .st.on{color:var(--brand-strong);border-color:color-mix(in srgb,var(--brand) 45%,var(--border))}
/* Soft tinted badge (brand-strong on brand-tint) rather than white-on-accent:
   the default teal is only 4.02:1 with white at this size, and an operator's
   accent is unknown, so a tinted chip is the one that passes AA for ANY brand. */
.su-steps .st.on .n{background:var(--brand-tint);color:var(--brand-strong)}

/* ---------- Plan cards ---------- */
.su-plan-section + .su-plan-section{margin-top:30px}
.su-sec-title{font-size:20px;font-weight:700;margin:0;letter-spacing:-.01em}
.su-sec-sub{font-size:13.5px;color:var(--text-muted);margin:4px 0 0}
.su-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;margin:16px 0 0;align-items:stretch}
.su-card{position:relative;display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius);
  padding:20px;background:var(--surface);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}
.su-card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--brand) 40%,var(--border));box-shadow:var(--shadow)}
.su-card:focus-visible{outline:2px solid var(--brand-strong);outline-offset:3px}
.su-card.sel{border-color:var(--brand);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 55%,transparent),var(--shadow)}
.su-card.popular{border-color:color-mix(in srgb,var(--brand) 45%,var(--border))}
.su-card .ribbon{position:absolute;top:-11px;left:20px;background:var(--brand-tint);color:var(--brand-strong);
  border:1px solid color-mix(in srgb,var(--brand) 40%,transparent);
  font-size:10.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:4px 10px;border-radius:999px}
.su-card .pname{font-size:16px;font-weight:700}
.su-card .mkt-tag{font-size:10.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--brand-strong);
  border:1px solid color-mix(in srgb,var(--brand) 40%,var(--border));border-radius:999px;padding:1px 7px;margin-left:6px;vertical-align:middle}
.su-card .pdesc{font-size:12.5px;color:var(--text-muted);margin:6px 0 0;line-height:1.45}
.su-card .price{font-size:26px;font-weight:800;letter-spacing:-.02em;margin:12px 0 0;font-variant-numeric:tabular-nums}
.su-card .price .per{font-size:13px;font-weight:500;color:var(--text-muted);letter-spacing:0}
.su-card .feat{list-style:none;margin:12px 0 0;padding:12px 0 0;border-top:1px solid var(--border);display:grid;gap:6px}
.su-card .feat li{font-size:12.5px;color:var(--text);display:flex;gap:8px;align-items:flex-start;line-height:1.4}
.su-card .feat li .ck{color:var(--brand-strong);font-weight:800;flex:none}
.su-card .pick{margin-top:auto;padding-top:14px;font-size:13px;font-weight:700;color:var(--brand-strong);display:inline-flex;align-items:center;gap:6px}

/* ---------- Form ---------- */
.su-form{margin:26px auto 0;max-width:560px;background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}
.su-summary{margin:0 0 18px;padding:13px 15px;border-radius:12px;background:var(--brand-tint);
  border:1px solid color-mix(in srgb,var(--brand) 30%,var(--border));font-size:13.5px;color:var(--text)}
.su-summary strong{font-weight:700}
.su-field{margin-bottom:15px}
.su-field label{display:block;font-size:13.5px;font-weight:600;margin-bottom:6px}
.su-field .hint{display:block;font-weight:400;color:var(--text-muted);font-size:12px;margin-top:2px}
.su-field input,.su-field select{width:100%;font:inherit;font-size:15px;color:var(--text);background:var(--surface);
  border:1px solid var(--border-strong);border-radius:11px;padding:11px 13px;min-height:46px;transition:border-color .15s,box-shadow .15s}
.su-field input::placeholder{color:color-mix(in srgb,var(--text-muted) 80%,transparent)}
.su-field input:focus,.su-field select:focus{outline:none;border-color:var(--brand-strong);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 22%,transparent)}
.su-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:520px){.su-two{grid-template-columns:1fr}}
.su-btn{width:100%;font:inherit;font-size:15px;font-weight:700;color:var(--brand-contrast);background:var(--brand);
  border:0;border-radius:12px;padding:14px 18px;min-height:50px;cursor:pointer;transition:background .15s,transform .1s;
  display:inline-flex;align-items:center;justify-content:center;gap:9px}
.su-btn:hover{background:var(--brand-hover)}
.su-btn:active{transform:translateY(1px)}
.su-btn:disabled{opacity:.6;cursor:default}
.su-btn svg{width:16px;height:16px}
.su-note{color:var(--text-muted);font-size:12.5px;margin:12px 0 0;line-height:1.5;text-align:center}
.su-error{color:var(--danger);font-size:13.5px;margin:12px 0 0;font-weight:600}
.su-top-note{background:var(--surface-2,#f3f6f5);border:1px solid var(--border,#dfe7e4);border-radius:10px;padding:10px 14px;font-size:14px;margin:0 0 16px;text-align:center}
.su-card.off{cursor:default;opacity:.8;border-style:dashed}
.su-card.off .su-off{font-size:13.5px;color:var(--text-muted);margin:10px 0 0;line-height:1.5}
.su-signin{margin-inline-start:12px}
.su-referral{color:var(--text-muted);font-size:12.5px;text-align:center;margin:0 0 14px}

/* ---------- Signup form extras (stage 3B) ---------- */
.su-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.su-field-err{color:var(--danger);font-size:13px;font-weight:600;margin:6px 0 0;line-height:1.4}
.su-field input[aria-invalid="true"]{border-color:var(--danger)}
.su-field input[aria-invalid="true"]:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 22%,transparent)}
.su-pass-wrap{position:relative}
.su-pass-wrap input{padding-right:78px}
.su-pass-toggle{position:absolute;top:50%;right:6px;transform:translateY(-50%);min-height:36px;min-width:60px;padding:0 10px;
  font:inherit;font-size:13px;font-weight:600;color:var(--brand-strong);background:transparent;border:0;border-radius:8px;cursor:pointer}
.su-pass-toggle:hover{background:var(--surface-2)}
.su-promo{margin:0 0 15px}
.su-promo summary{cursor:pointer;font-size:13.5px;font-weight:600;color:var(--brand-strong);min-height:44px;display:flex;align-items:center;list-style:revert}
.su-promo-row{display:flex;gap:8px;margin:4px 0 0}
.su-promo-row input{flex:1}
.su-btn-2{font:inherit;font-size:14px;font-weight:700;color:var(--brand-strong);background:var(--surface);border:1px solid var(--border-strong);
  border-radius:11px;padding:0 18px;min-height:46px;cursor:pointer;transition:border-color .15s}
.su-btn-2:hover{border-color:var(--brand-strong)}
.su-quote:empty{display:none}
.su-quote{margin:0 0 16px;padding:12px 15px;border:1px solid var(--border);border-radius:12px;background:var(--surface-2)}
.su-quote dl,.su-order{margin:0;display:grid;gap:6px}
.su-quote dl>div,.su-order>div{display:flex;justify-content:space-between;gap:12px;font-size:14px}
.su-quote dt,.su-order dt{color:var(--text-muted)}
.su-quote dd,.su-order dd{margin:0;font-variant-numeric:tabular-nums;font-weight:600;text-align:right}
.su-quote .disc dd{color:var(--brand-strong)}
.su-quote .total{border-top:1px solid var(--border);padding-top:8px;margin-top:2px;font-size:15.5px}
.su-quote .total dt{color:var(--text);font-weight:700}
.su-quote .total dd{font-weight:800}
.su-check{display:flex;gap:10px;align-items:flex-start;font-size:14px;font-weight:500;cursor:pointer;min-height:44px}
.su-check input{width:20px;height:20px;margin:1px 0 0;flex:none;accent-color:var(--brand)}
.su-testmode{max-width:720px;margin:0 auto 14px;padding:11px 15px;border-radius:12px;font-size:13.5px;line-height:1.45;
  background:color-mix(in srgb,#E8A317 16%,var(--surface));border:1px solid color-mix(in srgb,#E8A317 55%,var(--border));color:var(--text)}
.su-btn-inline{width:auto;text-decoration:none}
.su-btn-inline:hover{text-decoration:none}
.su-state .su-order{max-width:340px;margin:16px auto 0;padding:12px 15px;border:1px solid var(--border);border-radius:12px;background:var(--surface-2);text-align:left}
.su-state p a{color:var(--brand-strong);font-weight:600}
.su-spin{width:26px;height:26px;border-radius:50%;border:3px solid color-mix(in srgb,var(--brand) 25%,transparent);
  border-top-color:var(--brand-strong);animation:su-spin .9s linear infinite}
@keyframes su-spin{to{transform:rotate(360deg)}}

/* ---------- States (empty / message) ---------- */
.su-state{max-width:520px;margin:20px auto;background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);box-shadow:var(--shadow);padding:34px 28px;text-align:center}
.su-state .ic{width:52px;height:52px;margin:0 auto 14px;border-radius:14px;background:var(--brand-tint);
  color:var(--brand-strong);display:flex;align-items:center;justify-content:center}
.su-state .ic svg{width:26px;height:26px}
.su-state h2{font-size:21px;margin:0 0 8px;letter-spacing:-.01em}
.su-state p{color:var(--text-muted);font-size:14.5px;margin:0 auto;max-width:400px}
.su-state .actions{margin-top:18px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.su-state .btn-ghost{font-size:14px;font-weight:600;color:var(--brand-strong);border:1px solid var(--border-strong);
  border-radius:11px;padding:11px 18px;min-height:44px;display:inline-flex;align-items:center;background:var(--surface)}
.su-state .btn-ghost:hover{text-decoration:none;border-color:var(--brand-strong)}

@media (prefers-reduced-motion:reduce){
  .su-card,.su-btn{transition:none}
  .su-spin{animation-duration:3s}
  .su-card:hover{transform:none}
}
