/* Revocle — subpages (forms, contact, about, login) */
.subpage footer{min-height:auto}
.page-main{padding:calc(var(--nav-h) + clamp(44px,7vh,84px)) 0 clamp(70px,9vh,120px);min-height:72svh}
.page-head{margin-bottom:clamp(30px,5vh,54px);max-width:820px}
.page-head .s-eyebrow{margin-bottom:18px}
.page-title{font-size:clamp(2.375rem,5.2vw,4.75rem);text-transform:uppercase;font-stretch:110%}
.page-title .it{text-transform:none;font-size:1.06em}
.page-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(30px,4vw,60px);align-items:start}
.panel{border-radius:24px;padding:clamp(24px,3vw,38px);background:linear-gradient(170deg,oklch(18% .016 77 / .6),oklch(13% .011 72 / .55));border:1px solid var(--line2)}
.fsec{font:700 0.6875rem var(--f-m);letter-spacing:.26em;text-transform:uppercase;color:var(--accent);margin:26px 0 18px;padding-top:22px;border-top:1px solid var(--line2)}
form .fsec:first-child{margin-top:0;padding-top:0;border-top:none}
form .frow{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.field{display:grid;gap:8px;margin-bottom:16px;align-content:start}
.field label{font:400 0.65625rem var(--f-m);letter-spacing:.18em;text-transform:uppercase;color:var(--faint)}
.field .req{color:var(--accent)}
.field input,.field select,.field textarea{width:100%;background:oklch(11.5% .01 70 / .75);border:1px solid var(--line);border-radius:12px;padding:13px 15px;color:var(--cream);font:400 0.9375rem var(--f-d);outline:none;transition:border-color .3s,box-shadow .3s;box-sizing:border-box}
.field :is(input,select,textarea):focus{border-color:oklch(72% .15 45 / .6);box-shadow:0 0 0 4px oklch(70% .16 45 / .14)}
.field input::placeholder,.field textarea::placeholder{color:var(--faint)}
.field textarea{min-height:110px;resize:vertical}
.field select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23837a6e' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 15px center;cursor:pointer}
.form-foot{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:10px}
.hint{font:400 0.6875rem var(--f-m);color:var(--faint);letter-spacing:.06em}
.hint a,.rx .sub a{color:var(--accent)}
.plan-pick{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pcard{position:relative;border:1px solid var(--line);border-radius:14px;padding:13px 15px;cursor:pointer;display:grid;gap:3px;transition:border-color .3s,background .3s}
.pcard input{position:absolute;opacity:0;pointer-events:none}
.pcard b{font:700 0.90625rem var(--f-d)}
.pcard .sub{font:400 0.625rem var(--f-m);color:var(--faint);letter-spacing:.05em}
.pcard:hover{border-color:oklch(72% .14 45 / .4)}
.pcard:has(input:checked){border-color:var(--accent);background:oklch(70% .16 45 / .1);box-shadow:0 0 0 1px var(--accent) inset}
form.hide{display:none}
.ok-panel{display:none;text-align:center;padding:28px 10px}
.ok-panel.show{display:block}
.ok-panel h3{font-size:1.5rem;margin:14px 0 10px}
.ok-panel p{color:var(--muted);max-width:44ch;margin:0 auto}
.ok-panel a{text-decoration:underline;text-underline-offset:4px}
.ok-panel .btn{text-decoration:none}
.ok-icon{width:64px;height:64px;border-radius:50%;margin:0 auto;display:grid;place-items:center;font-size:1.625rem;color:oklch(18% .04 45);background:linear-gradient(135deg,var(--accent),var(--accent-2));animation:float 5s ease-in-out infinite}
.contact-cards,.side-stack{display:grid;gap:12px;align-content:start}
.ccard{display:flex;gap:15px;padding:17px 18px;border:1px solid var(--line2);border-radius:16px;background:oklch(15% .012 72 / .5);align-items:flex-start}
.ccard .di{flex:none}
.ccard b{font-size:0.9375rem;display:block}
.ccard p{color:var(--muted);font-size:0.8125rem;margin:5px 0 7px}
.ccard a{font:400 0.75rem var(--f-m);letter-spacing:.03em}
.side-stack .rx,.contact-cards .rx{border:1px solid var(--line2);border-radius:14px;padding:14px 16px;background:oklch(15% .012 72 / .4)}
/* about */
.about-mv{display:grid;grid-template-columns:1.15fr .85fr;gap:16px;margin-bottom:26px}
.mv-txt{font:400 1.25rem/1.5 var(--f-s);margin-top:12px}
.about-story{color:var(--muted);max-width:74ch;font-size:1rem;margin-bottom:clamp(30px,4.5vh,50px)}
.about-story b{color:var(--cream)}
.vals{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.vals .ccard{flex-direction:column;gap:12px}
.lead-head{margin:clamp(36px,5.5vh,60px) 0 20px}
.leads{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.lead{border:1px solid var(--line2);border-radius:18px;padding:24px;background:oklch(15% .012 72 / .5);display:grid;gap:4px;justify-items:start}
.lava{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;font:800 1.0625rem var(--f-d);color:oklch(20% .05 40);background:linear-gradient(135deg,var(--accent),var(--accent-2));margin-bottom:12px}
.lead b{font-size:1.03125rem}
.lead .sub{font:400 0.65625rem var(--f-m);color:var(--faint);letter-spacing:.14em}
.about-cta{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;margin-top:clamp(36px,5.5vh,60px)}
/* login */
.login-main{display:grid;place-items:center;min-height:100svh;padding-top:calc(var(--nav-h) + 24px)}
.login-card{width:min(440px,94vw)}
.login-title{font-size:1.5625rem;text-align:center;margin:18px 0 8px;text-transform:uppercase;font-stretch:108%}
.login-title .it{text-transform:none}
.login-disc{width:86px;height:86px;border-radius:50%;margin:0 auto;position:relative;background:radial-gradient(circle at 34% 28%,oklch(30% .01 70 / .9),transparent 44%),repeating-radial-gradient(circle,oklch(13% .008 70) 0 1.1px,oklch(19% .012 75) 1.1px 2.3px),oklch(14% .01 70);box-shadow:0 18px 40px oklch(0 0 0 / .5);animation:spin 7s linear infinite}
.ld-label{position:absolute;inset:32%;border-radius:50%;background:radial-gradient(circle at 38% 32%,oklch(80% .14 50),oklch(66% .18 40) 50%,oklch(50% .17 32));display:grid;place-items:center;font:900 0.9375rem var(--f-d);color:oklch(22% .06 35)}
.login-err{display:none;font-size:0.8125rem;color:oklch(72% .14 25);border:1px solid oklch(60% .15 25 / .4);background:oklch(60% .15 25 / .08);border-radius:12px;padding:11px 14px;margin-bottom:16px}
.login-err.show{display:block}
.login-err a{text-decoration:underline;text-underline-offset:3px}
.login-foot{display:flex;justify-content:center;gap:12px;margin-top:20px;font:400 0.75rem var(--f-m);color:var(--faint)}
/* responsive */
@media (max-width:1000px){.page-grid{grid-template-columns:1fr}.vals{grid-template-columns:1fr 1fr}.about-mv{grid-template-columns:1fr}}
@media (max-width:640px){form .frow{grid-template-columns:1fr;gap:0}.plan-pick{grid-template-columns:1fr 1fr}.vals,.leads{grid-template-columns:1fr}.page-title{font-size:clamp(2.125rem,10vw,3.25rem)}.panel{padding:22px 18px;border-radius:18px}.about-cta{justify-content:center;text-align:center}.about-cta .btn,.form-foot .btn{width:100%}}
@media (max-width:400px){.plan-pick{grid-template-columns:1fr}}

/* ===== richer form pages ===== */
.stat-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line2);border:1px solid var(--line2);border-radius:14px;overflow:hidden;margin-top:26px}
.stat-strip>div{background:oklch(13.5% .012 72);padding:16px 18px;display:grid;gap:5px}
.stat-strip b{font:800 clamp(1.3125rem,2vw,1.625rem)/1 var(--f-d);color:var(--cream)}
.stat-strip span{font:400 0.59375rem var(--f-m);letter-spacing:.13em;color:var(--faint);line-height:1.6}
.side-panel{padding:24px 26px}
.tline{display:grid;gap:2px}
.tl{display:flex;gap:14px;padding:11px 0;position:relative}
.tl+.tl{border-top:1px solid var(--line2)}
.tn{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font:700 0.6875rem var(--f-m);color:var(--accent);border:1px solid oklch(70% .16 45 / .3);background:oklch(70% .16 45 / .1)}
.tl b{font-size:0.90625rem;display:block}
.tl p{color:var(--muted);font-size:0.78125rem;margin-top:3px}
.chk{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.chkbox,.consent{display:flex;align-items:flex-start;gap:10px;font-size:0.84375rem;color:var(--muted);cursor:pointer;line-height:1.5}
.chkbox{border:1px solid var(--line);border-radius:11px;padding:10px 12px;transition:border-color .3s,background .3s;align-items:center}
.chkbox input,.consent input{position:absolute;opacity:0;pointer-events:none}
.box{flex:none;width:17px;height:17px;border-radius:5px;border:1px solid var(--line);background:oklch(11.5% .01 70 / .8);position:relative;transition:.25s}
.box::after{content:"✓";position:absolute;inset:0;display:grid;place-items:center;font-size:0.6875rem;color:oklch(18% .04 45);opacity:0;transition:.2s}
:is(.chkbox,.consent):hover .box{border-color:oklch(72% .14 45 / .5)}
:is(.chkbox,.consent) input:checked+.box{background:var(--accent);border-color:var(--accent)}
:is(.chkbox,.consent) input:checked+.box::after{opacity:1}
.chkbox:has(input:checked){border-color:var(--accent);background:oklch(70% .16 45 / .08);color:var(--cream)}
.consent{margin:20px 0 18px;font-size:0.78125rem;padding-top:18px;border-top:1px solid var(--line2)}
.consent .box{margin-top:1px}
.quote-mini{border:1px solid var(--line2);border-radius:16px;padding:20px;background:oklch(15% .012 72 / .4)}
.quote-mini .qt{font:400 1rem/1.5 var(--f-s)}
.page-grid>.panel form .fsec:first-child{margin-top:0}
.routes .route{padding:22px 24px}
@media (max-width:1000px){.stat-strip{grid-template-columns:1fr 1fr}.routes{grid-template-columns:1fr}}
@media (max-width:640px){.chk{grid-template-columns:1fr}.stat-strip b{font-size:1.25rem}.stat-strip>div{padding:13px 15px}}

/* ===== mobile: form pages ===== */
html.is-mobile .page-main{padding:calc(var(--nav-h) + 34px) 0 60px;min-height:0}
html.is-mobile .page-head{margin-bottom:24px;max-width:none}
html.is-mobile .page-title{font-size:clamp(2.125rem,10.4vw,3rem)}
html.is-mobile .stat-strip{grid-template-columns:1fr 1fr;margin-top:20px;border-radius:14px}
html.is-mobile .stat-strip>div{padding:13px 14px}
html.is-mobile .stat-strip b{font-size:1.25rem}
html.is-mobile .stat-strip span{font-size:0.53125rem;letter-spacing:.11em}
html.is-mobile .page-grid{grid-template-columns:1fr;gap:22px}
html.is-mobile .panel{padding:20px 16px;border-radius:18px}
html.is-mobile form .frow{grid-template-columns:1fr;gap:0}
html.is-mobile .fsec{margin:22px 0 16px;padding-top:18px;font-size:0.65625rem;letter-spacing:.22em}
html.is-mobile .field{margin-bottom:14px}
html.is-mobile .field label{font-size:0.625rem}
/* 16px inputs stop iOS auto-zoom */
html.is-mobile .field :is(input,select,textarea){font-size:1rem;padding:14px 15px;border-radius:12px}
html.is-mobile .field textarea{min-height:120px}
html.is-mobile .plan-pick{grid-template-columns:1fr}
html.is-mobile .pcard{padding:15px 16px;min-height:58px;align-content:center}
html.is-mobile .chk{grid-template-columns:1fr}
html.is-mobile .chkbox{padding:13px 14px;font-size:0.90625rem}
html.is-mobile .consent{font-size:0.8125rem;margin:18px 0 16px}
html.is-mobile .form-foot{flex-direction:column;align-items:stretch;gap:12px}
html.is-mobile .form-foot .btn{width:100%;justify-content:center;min-height:52px}
html.is-mobile .form-foot .hint{text-align:center}
html.is-mobile .side-panel{padding:20px 18px}
html.is-mobile .tl{padding:12px 0}
html.is-mobile .contact-cards,html.is-mobile .side-stack{gap:10px}
html.is-mobile .ccard{padding:15px 16px;gap:13px}
html.is-mobile .vals,html.is-mobile .leads,html.is-mobile .about-mv{grid-template-columns:1fr}
html.is-mobile .mv-txt{font-size:1.125rem}
html.is-mobile .about-story{font-size:0.96875rem;max-width:none}
html.is-mobile .about-cta{flex-direction:column;align-items:stretch;text-align:left;gap:16px}
html.is-mobile .about-cta .btn{width:100%;justify-content:center}
html.is-mobile .login-main{min-height:0;padding:calc(var(--nav-h) + 40px) 0 50px;place-items:start center}
html.is-mobile .login-card{width:min(440px,100% - var(--gut) * 2)}
html.is-mobile .login-title{font-size:1.4375rem}
html.is-mobile .ok-panel{padding:22px 4px}

/* ===== responsive hardening (subpages) =====
   iOS zooms the whole page when a focused input renders under 16px.
   max() keeps that guarantee even if the user's default font is smaller
   than 16px. Must live here: revocle-pages.css loads after
   revocle-site.css, so a guard placed there would be overridden. */
.field :is(input,select,textarea),
html.is-mobile .field :is(input,select,textarea){font-size:max(1rem,16px)}

/* Form grids collapse on their own, but a large user font can still push a
   two-up row past a narrow screen. */
@media (max-width:820px){
form .frow,.plan-pick,.chk{grid-template-columns:1fr}
}
/* Honeypot. Deliberately NOT display:none — better bots skip hidden fields,
   so this is pushed off-canvas instead while staying focusable-in-DOM. */
.hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
/* Inline form error, reusing the login error styling. */
.form-err{margin-bottom:16px}
/* ============================================================
   FORM REDESIGN - lifted surfaces, legible labels
   The old form sank into the page: the input fill was RGB[7,5,3]
   against a panel of RGB[19,15,8], so a field read as a hole rather
   than a surface, and labels sat at 3.45:1 (below the 4.5:1 AA floor)
   in 10.5px uppercase mono. Everything below raises the whole stack:
   page -> panel -> field, each step lighter than the last.
   ============================================================ */

/* 1 - the card lifts off the page */
.page-grid>.panel,.side-panel,.login-card,.panel{
  background:linear-gradient(168deg,oklch(23% .018 78 / .94),oklch(19.5% .014 74 / .96));
  border:1px solid oklch(85% .06 85 / .2);
  box-shadow:0 24px 64px oklch(0 0 0 / .45),inset 0 1px 0 oklch(100% 0 0 / .08)}

/* 2 - labels: sentence case, bigger, bright enough to pass AA */
.field label{font:600 .8125rem/1.45 var(--f-d);letter-spacing:0;text-transform:none;
  color:oklch(89% .015 85);margin-bottom:2px}
.field .req{color:var(--accent);font-weight:700}
.field .help{font:400 .75rem var(--f-d);color:oklch(70% .015 80);margin-top:-2px}

/* 3 - fields sit ON the panel, not cut into it */
.field input,.field select,.field textarea{
  background:oklch(28% .013 78 / .62);
  border:1px solid oklch(85% .06 85 / .22);
  border-radius:11px;padding:12px 14px;
  font-family:var(--f-d);font-weight:400;color:var(--cream);
  /* Never below 16px: iOS zooms the whole page when a focused input is
     smaller, and a `font:` shorthand here would silently beat the guard. */
  font-size:max(1rem,16px)}
.field input::placeholder,.field textarea::placeholder{color:oklch(66% .014 80)}
.field :is(input,select,textarea):hover{border-color:oklch(85% .06 85 / .36);
  background:oklch(30% .013 78 / .7)}
.field :is(input,select,textarea):focus{
  background:oklch(32% .015 78 / .8);
  border-color:oklch(72% .17 45 / .85);
  box-shadow:0 0 0 4px oklch(70% .16 45 / .16)}
/* The chevron needs repeat/position restated: the `background:` shorthand
   above resets them, which tiled the arrow across the whole control. */
.field select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23c3baad' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 15px center;
  padding-right:40px}

/* 4 - section headers read as steps, not fine print */
.fsec{font:700 .8125rem var(--f-d);letter-spacing:.02em;text-transform:none;
  color:var(--cream);margin:30px 0 16px;padding-top:22px;
  border-top:1px solid oklch(85% .06 85 / .14);display:flex;align-items:center;gap:10px}
.fsec::before{content:"";width:3px;height:15px;border-radius:2px;flex:none;
  background:linear-gradient(180deg,var(--accent),var(--accent-2))}

/* 5 - choice controls get the same lift */
.pcard,.chkbox{background:oklch(26% .012 78 / .5);border-color:oklch(85% .06 85 / .2)}
.pcard:hover,.chkbox:hover{background:oklch(29% .013 78 / .6);border-color:oklch(85% .06 85 / .34)}
.pcard b{color:var(--cream)}
.chkbox,.consent{color:oklch(82% .014 82)}
.box{background:oklch(20% .01 70 / .9);border-color:oklch(85% .06 85 / .3)}

/* 6 - optional-detail disclosure keeps long forms short on first read */
.more{margin:26px 0 4px;border-top:1px solid oklch(85% .06 85 / .14);padding-top:20px}
.more>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;
  font:600 .8125rem var(--f-d);color:var(--accent);padding:6px 0;min-height:44px}
.more>summary::-webkit-details-marker{display:none}
.more>summary::after{content:"+";font:400 1.25rem/1 var(--f-s);transition:transform .3s var(--ease)}
.more[open]>summary::after{transform:rotate(45deg)}
.more>summary span{color:oklch(66% .015 80);font-weight:400}