/* Customer-page finish (booking, quote, renew, signup, signup_success, public_status) and the admin
   job pages. Tokens come from tokens.css; load after it. Layout and behavior stay owned by each page.
   Only those pages link this file: dashboard (.admin-app) rules belong in shell.css and cab
   (.operator-page) rules in operator-experience.css; tests/test_customer_css_scope.py pins that. */
body.booking-page .hero{padding:12px 16px 14px;}
body.booking-page .hero-logo{margin-bottom:10px;max-width:600px;}
body.booking-page .hero h1{font-size:23px;margin-bottom:4px;}
body.booking-page .hero p{font-size:13px;line-height:1.4;max-width:540px;}
body.booking-page .hero .wc-brand-logo{width:36px;height:36px;}
body.booking-page .trust{margin-top:10px;gap:14px;}
body.booking-page .trust-item{font-size:11px;}
body.renew-page .container{max-width:1200px;padding:24px;}
.renew-details,.renew-review{min-width:0;padding:22px;border:1px solid var(--border);border-radius:16px;background:var(--surface);}
.renew-section-title{font-size:20px;letter-spacing:-.02em;margin:0 0 18px;}
.renew-page #renewForm{display:grid;gap:20px;grid-template-columns:minmax(0,1.15fr) minmax(340px,1fr);align-items:start;}
.renew-page .terms-section{margin-top:0;}
.renew-page .service-terms{gap:10px;}
.signup-page .signup-success-kicker{color:var(--accent);font-size:12px;font-weight:750;letter-spacing:.08em;text-transform:uppercase;margin-bottom:12px;}
.signup-page .signup-activate{display:block;margin:20px 0;padding:16px;background:var(--finish-accent);color:var(--finish-on-accent);border-radius:12px;text-align:center;text-decoration:none;font-weight:750;}
.signup-next-steps{padding-left:22px;display:grid;gap:18px;margin-top:24px;}
.signup-next-steps li::marker{color:var(--accent);font-weight:750;}
.signup-next-steps strong,.signup-next-steps span{display:block;}
.signup-next-steps span{font-size:14px;color:var(--text-secondary);line-height:1.5;margin-top:4px;}
@media(max-width:899px){
  .renew-page #renewForm{grid-template-columns:minmax(0,1fr);}
  body.renew-page .container{max-width:740px;padding:16px;}
}
@media(max-width:480px){
  body.booking-page .hero .wc-brand-secondary{display:none;}
  body.booking-page .trust{display:none;}
  body.booking-page .hero h1{font-size:21px;}
  .renew-details,.renew-review{padding:16px;}
  body.renew-page .container{padding:12px;}
}
.booking-data-note{display:block;margin-top:8px;font-size:13px;line-height:1.5;color:var(--text-2);}
.renew-page .service-terms{padding-left:22px;margin:0 0 16px;font-size:14px;color:var(--text-2);line-height:1.6;}
.renew-page .terms-agreement{padding:14px;border:1px solid var(--input-border);border-radius:10px;font-weight:650;}
/* Customer pages (booking, quote, renew, signup, signup_success, public_status) and the admin job
   pages read tokens.css; the customer scope there follows the device light/dark setting. These
   aliases keep the legacy names the rules below and public.css still use. Phase 7 redesigns the
   customer pages and deletes this block with them. */
:root{
  --finish-page:var(--page);--finish-surface:var(--surface);--finish-elevated:var(--elevated);
  --finish-raised:var(--raised);--finish-text:var(--text);--finish-secondary:var(--text-secondary);
  --finish-muted:var(--text-muted);--finish-border:var(--border);--finish-divider:var(--divider);
  --finish-shadow:var(--shadow);--finish-input:var(--input-bg);--finish-input-border:var(--input-border);
  --finish-danger:var(--danger);--finish-cool:var(--cool);--finish-purple:var(--purple);
  --finish-success:var(--success);--finish-success-fill:var(--success-fill);
  --finish-accent:var(--accent-fill);--finish-on-accent:var(--on-accent-fill);
  --finish-link:var(--accent-text);--finish-accent-text:var(--accent-text);
  /* No token exists for these (the hero band stays dark in either theme). */
  --finish-hero:#202d3d;--finish-hero-end:#141c27;--finish-hero-copy:#c6d3e3;
  --finish-on-danger:var(--on-danger);
  --card:var(--surface);--ink:var(--text);--ink-soft:var(--text-secondary);
  --text-2:var(--text-secondary);--text-3:var(--text-muted);
  --navy:var(--finish-hero);--navy-deep:var(--finish-hero-end);
  /* public.css declares these as fixed per-theme hex; point them at the tokens instead. */
  --fc-page:var(--page);--fc-surface:var(--surface);--fc-elevated:var(--elevated);
  --fc-raised:var(--raised);--fc-text:var(--text);--fc-text-2:var(--text-secondary);
  --fc-text-3:var(--text-muted);--fc-border:var(--border);--fc-border-strong:var(--border-strong);
  --fc-input-bg:var(--input-bg);--fc-input-border:var(--input-border);
  --fc-accent:var(--accent-fill);--fc-accent-soft:var(--accent-soft);
  --fc-success:var(--success);--fc-danger:var(--danger);
  --fc-hero-from:var(--finish-hero);--fc-hero-to:var(--finish-hero-end);
  --fc-focus-ring:color-mix(in srgb,var(--focus-ring) 25%,transparent);
}
/* Semantic errors must remain readable on tinted panels, not only plain cards. */
html:not([data-outdoor="1"]):not([data-contrast="high"]) [data-action="confirm-sms-opt-out"]{color:var(--finish-on-danger)!important;}
/* Public heroes stay dark in either theme; avoid low-opacity small print. */
html:not([data-outdoor="1"]):not([data-contrast="high"]) .hero .wc-brand-secondary{color:var(--finish-hero-copy);}
/* Browser-default placeholder gray is too faint on the softer dark inputs. */
html:not([data-theme="light"]):not([data-outdoor="1"]):not([data-contrast="high"]) :is(input,textarea)::placeholder{color:var(--finish-muted);opacity:1;}
/* Customer documents: one gold rule, clear paper surface, generous typography. */
:is(.booking-page,.renew-page) .hero{background:linear-gradient(135deg,var(--finish-hero),var(--finish-hero-end));border-bottom:2px solid var(--finish-accent);}
:is(.booking-page,.renew-page) .card{box-shadow:var(--finish-shadow);border-color:var(--border);}
:is(.booking-page,.renew-page) .field label{text-transform:none;letter-spacing:0;font-weight:650;}
:is(.booking-page,.renew-page) .btn-submit{background:var(--finish-accent);color:var(--finish-on-accent);box-shadow:none;}
.booking-page .service-opt.selected,.booking-page .pay-method.selected{box-shadow:inset 0 0 0 1px var(--accent);}
.quote-page{background:var(--finish-page);background-image:none;}
.quote-page .hero{padding:18px 16px 22px;background:var(--finish-hero);border-radius:18px 18px 0 0;border-bottom:2px solid var(--finish-accent);}
.quote-page .doc{margin-top:0;border-radius:0 0 18px 18px;border-color:var(--finish-border);box-shadow:var(--finish-shadow);}
.quote-page .doc-band{background:var(--finish-elevated);color:var(--ink);border-bottom:1px solid var(--finish-border);}
.quote-page :is(.doc-title,.doc-num){color:var(--ink);}
.quote-page :is(.doc-sub,.doc-date){color:var(--ink-soft);}
.quote-page .btn-accept{background:var(--finish-accent);color:var(--finish-on-accent);box-shadow:none;}
.quote-page .hero-tag{color:var(--finish-accent);background:color-mix(in srgb,var(--finish-accent) 10%,transparent);border-color:color-mix(in srgb,var(--finish-accent) 30%,transparent);}
@media(prefers-reduced-motion:reduce){
  .booking-page .service-opt{transition:none;}
}
