/* Launch mobile safeguards. Loaded explicitly; never loaded by The Books. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
*,*::before,*::after{box-sizing:border-box}
:where(a,button,summary,[role="button"],label[for]){touch-action:manipulation}
:where(a,button,summary,[role="button"]):active{opacity:.8}
:where(a,button,input,textarea,select,summary,[tabindex]):focus-visible{outline:2px solid #b98d3c;outline-offset:4px}
:where(img,video){max-width:100%;height:auto}
:where(p,li,dd,td,th,label){overflow-wrap:anywhere}
:where(input,textarea,select){scroll-margin-block:5rem}
:where(pre,[role="dialog"],dialog){overscroll-behavior:contain}
html:has(dialog[open]){overflow:hidden}
@media(max-width:900px),(pointer:coarse){
  body :is(button,[role="button"],.btn,.button,.mini,.icon-link,summary){min-width:44px;min-height:44px}
  body :is(nav a,.footer-links a,.footer-social a,.footer-bottom a){min-height:44px;min-width:44px;display:inline-flex;align-items:center}
}
@media(prefers-reduced-motion:reduce),(prefers-reduced-data:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}

/* Scopes stay on Builder; the owner Books page does not load this file. */
body:has(>.shell),.shell,.access-page{min-height:100vh;min-height:100svh}
.shell :is(input[type="text"],input[type="url"],input[type="email"],textarea,select){font-size:max(1rem,16px)}
.shell pre{overscroll-behavior:contain}
.shell .rail{padding-top:max(26px,env(safe-area-inset-top,0px));padding-bottom:max(26px,env(safe-area-inset-bottom,0px));padding-left:max(18px,env(safe-area-inset-left,0px))}
.shell .pv{padding-top:max(28px,env(safe-area-inset-top,0px));padding-bottom:max(28px,env(safe-area-inset-bottom,0px));padding-right:max(20px,env(safe-area-inset-right,0px))}
.shell .toast{bottom:max(24px,env(safe-area-inset-bottom,0px))}
@media(max-width:900px){
  .wrap,.access-page .wrap,.partner-page .wrap,.partner-page .legal,.partner-masthead{padding-left:max(20px,env(safe-area-inset-left,0px));padding-right:max(20px,env(safe-area-inset-right,0px))}
  header.site,.top,.journey-header{padding-top:max(18px,env(safe-area-inset-top,0px))}
  .partner-masthead{padding-top:max(18px,env(safe-area-inset-top,0px))}
  .wrap>footer,.partner-page .legal{padding-bottom:max(24px,env(safe-area-inset-bottom,0px))}
  .partner-masthead nav a,.top nav a,header.site nav a{min-height:44px}
  header.site nav .cta{min-height:44px!important}
  .partner-page .nav{gap:8px;flex-wrap:wrap}
  .legal-page{font-size:1rem}
}
@media(max-width:860px){
  .shell .rail,.shell .main,.shell .pv{padding-left:max(20px,env(safe-area-inset-left,0px));padding-right:max(20px,env(safe-area-inset-right,0px))}
  .shell .rail{padding-top:max(20px,env(safe-area-inset-top,0px))}
  .shell .steps{gap:8px}
  .shell .steps li button{min-width:44px}
}

/* Optional referral memory: equal choices, inline beside the first checkout. */
.referral-privacy{margin-block:1rem;max-width:42rem;padding:1rem;border:1px solid #79623b;background:#15120c;text-align:left;color:#f1ece0}
.referral-privacy h2{margin:0 0 .5rem;font:600 1rem/1.5 var(--body,system-ui,sans-serif);letter-spacing:0;text-transform:none;color:#f1ece0}
.referral-privacy p{margin:0 0 .75rem;font:400 1rem/1.5 var(--body,system-ui,sans-serif);color:#d0c7b5}
.referral-privacy-actions{display:flex;flex-wrap:wrap;gap:8px}
body .referral-privacy button{min-height:44px;min-width:44px;margin:0;padding:.65rem .85rem;border:1px solid #ad8b4d;border-radius:3px;background:#211b11;color:#f1ece0;font:500 1rem/1.4 var(--body,system-ui,sans-serif);cursor:pointer;text-align:center;white-space:normal}
.referral-privacy-actions button{flex:1 1 11rem}
.referral-privacy [data-referral-action="change"]{margin-bottom:.75rem;text-decoration:underline;text-underline-offset:3px}
.referral-privacy button:focus-visible{outline:2px solid #f0d795;outline-offset:3px}
.referral-privacy button:active{opacity:.8}
.referral-privacy [hidden]{display:none!important}

/* The target minimum also applies on tablets and larger touch screens. */
body :is(nav a,footer a,.footer-links a,.footer-social a,.footer-bottom a,a.brand,a.partner-brand){min-width:44px;min-height:44px}
body footer a{display:inline-flex;align-items:center}
.journey-header>a,.visual-showcase a.proof-full{display:inline-flex;align-items:center;min-height:44px;min-width:44px}
.partner-page button.copy.sm,.availability-controls button,[data-pause-updates],[data-refresh-updates]{min-height:44px;min-width:44px}

/* Mobile alignment pass (2026-10-23): on phones nothing drops onto its own line by accident.
   Price buttons keep "— $27" with the words before it and never split the price. */
.cta-label{display:block;text-align:center;overflow-wrap:normal}
.cta [data-price]{white-space:nowrap}
@media(max-width:520px){
  /* Countdown chip sits beside the deadline text, not under it. */
  .ribbon{display:flex;align-items:center;justify-content:center;gap:10px;text-align:left;text-wrap:pretty}
  .ribbon .tick{flex:none;margin:0}
  /* Spots badge goes above the price as a label; tax line below. */
  .price-line{display:grid;grid-template-columns:auto 1fr;align-items:baseline;column-gap:10px;row-gap:6px}
  .price-line .launch{grid-column:1/-1;grid-row:1;justify-self:start}
  .price-line .tax{grid-column:1/-1}
  .assure{flex-direction:column;align-items:flex-start}
  .availability-controls button{flex:1 1 auto}
  .stack li>span:first-child{flex:1 1 100%}
  .stack-total{flex-wrap:nowrap}
  .stack-total+.spots{text-align:left!important}
  .product-stage .proof-label{flex-direction:column;align-items:flex-start;gap:4px}
  .visual-showcase .proof-label>span{max-width:none;text-align:left}
}
@media(max-width:380px){
  .stack-total>span:first-child{font-size:15px}
  .stack-total .sum{font-size:26px}
  .stack-total .sum s{font-size:17px}
}
/* Launch ladder: ten spot dots stay on one row however narrow the box is (phones, and tablets
   where the offer sits in a side column). Sized by the ladder's own width. */
.ladder{container-type:inline-size}
@container (max-width:380px){
  .ld li{grid-template-columns:43px minmax(0,1fr) auto;gap:7px;padding-inline:6px}
  .ld .n{font-size:11px}
  .ld .dots{flex-wrap:nowrap;gap:3px}
  .ld .dots b{flex:none;width:8px;height:8px}
}
@container (max-width:280px){
  .ld li{gap:5px;padding-inline:4px}
  .ld .dots{gap:2px}
  .ld .dots b{width:6px;height:6px}
}
@container (max-width:236px){.ld .dots b{width:5px;height:5px}}
