/* =====================================================================
   PRIVATE ACCESS · the private landing (lib/pages.js landingPage)
   What anyone without access sees at demo.bananablueprint.com: the brand,
   one line about the private demos and the request form, inline, on the
   drafting table. Phone first; two columns from 960 px. Every motion is
   an ease-out drawing coming to life, and still when motion is reduced.
   Public on purpose (no demo names, covers or descriptions in here).
   ===================================================================== */
.ax-page{
  --navy:#172745; --navy-deep:#0D182D; --bone:#F1F1ED; --paper:#FAFAF7; --graphite:#55606F;
  --gold:#E1B443; --gold-ink:#7F6115; --gold-hi:#F0CF74; --terra:#B35F3F; --terra-ink:#96472B; --sky:#8DAEDB;
  --mist:#C9D0DC; --line:rgba(23,39,69,.14); --grid:rgba(23,39,69,.06); --grid2:rgba(23,39,69,.03);
  --err:#A3392B; --ok:#2F7A55;
  --sans:"Lato","Lato Fallback","Segoe UI","Helvetica Neue",Arial,sans-serif;
  --display:"Big Shoulders","Big Shoulders Fallback","Arial Narrow",sans-serif;
  --mono:ui-monospace,"Cascadia Mono","SFMono-Regular",Consolas,monospace;
  --ease:cubic-bezier(.2,.8,.2,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body.ax-page{
  min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;overflow-x:hidden;
  font:17px/1.6 var(--sans);color:var(--navy);-webkit-font-smoothing:antialiased;
  background-color:var(--bone);
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px),linear-gradient(var(--grid2) 1px,transparent 1px),linear-gradient(90deg,var(--grid2) 1px,transparent 1px);
  background-size:120px 120px,120px 120px,24px 24px,24px 24px;
}
.ax-page a{color:inherit}
.ax-page img,.ax-page svg{display:block}
.ax-page :focus-visible{outline:3px solid var(--gold-ink);outline-offset:3px}
.ax-wrap{width:min(1180px,100% - 32px);margin:0 auto}
.ax-page .sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.ax-page [hidden]{display:none!important}

/* ---------- the bar: his full logo, transparent on navy ---------- */
.ax-bar{background:var(--navy);border-bottom:1px solid rgba(225,180,67,.18);position:relative}
.ax-bar::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--gold);transform-origin:left}
.ax-bar .ax-wrap{display:flex;align-items:center;gap:20px;height:72px}
.ax-bar .ax-logo{display:block}
.ax-bar img{height:44px;width:auto}
.ax-grow{flex:1}
.ax-site{color:var(--mist)!important;font-size:15px;font-weight:700;text-decoration:none}
.ax-site:hover{color:#fff!important}
.ax-call{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border:1.5px solid rgba(225,180,67,.7);color:#fff!important;font-weight:700;font-size:15px;text-decoration:none;transition:background .2s,border-color .2s}
.ax-call:hover{background:rgba(225,180,67,.12);border-color:var(--gold)}
.ax-call svg{width:16px;height:16px;color:var(--gold)}
@media(max-width:700px){
  .ax-bar .ax-wrap{height:64px}
  .ax-bar img{height:36px}
  .ax-site{display:none}
  .ax-call{padding:0 12px;font-size:14px}
}
@media(max-width:400px){
  .ax-call{width:44px;justify-content:center;padding:0}
  .ax-call span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
}

/* ---------- layout ---------- */
.ax-main{flex:1;padding:clamp(26px,4.6vw,60px) 0 clamp(40px,6vw,80px)}
.ax-grid{display:grid;grid-template-areas:"head" "sheet" "more";gap:26px}
.ax-head{grid-area:head;min-width:0}
.ax-sheet{grid-area:sheet;min-width:0}
.ax-more{grid-area:more;min-width:0}
@media(min-width:960px){
  .ax-grid{grid-template-columns:minmax(0,1fr) 472px;grid-template-areas:"head sheet" "more sheet";grid-template-rows:auto 1fr;column-gap:clamp(48px,6.5vw,96px);row-gap:0}
  .ax-sheet{align-self:start}
  .ax-head{padding-top:18px}
}

/* ---------- the pitch ---------- */
.ax-eyebrow{display:flex;align-items:center;gap:8px;font:700 12.5px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--gold-ink)}
.ax-eyebrow svg{width:15px;height:15px;flex:none}
.ax-head h1{margin-top:14px;font:900 clamp(42px,5.5vw,78px)/.92 var(--display);text-transform:uppercase;letter-spacing:.005em;max-width:17ch}
.ax-head h1 em{font-style:normal;color:var(--gold-ink);position:relative;white-space:nowrap}
.ax-head h1 em::after{content:"";position:absolute;left:0;right:.08em;bottom:.02em;height:.09em;background:var(--gold);transform-origin:left}
.ax-lede{margin-top:18px;max-width:52ch;font-size:clamp(16.5px,1.7vw,19px);color:var(--graphite)}

/* how it works, before the form (2026-10-19, his pick "A · Los pasos primero"): the three steps, then why a code */
.ax-lede b{color:var(--navy)}
.ax-how{list-style:none;margin-top:22px;display:grid;gap:10px}
.ax-how li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;align-items:start;padding:12px 14px;background:var(--paper);border:1px solid var(--line)}
.ax-how .n{display:grid;place-items:center;width:40px;height:40px;background:var(--navy);color:var(--gold);font:900 23px/1 var(--display)}
.ax-how b{display:block;font:900 17px/1.3 var(--sans);color:var(--navy)}
.ax-how p span{display:block;margin-top:2px;font-size:15px;line-height:1.5;color:var(--graphite)}
.ax-why{margin-top:14px;padding:13px 16px;background:rgba(225,180,67,.13);border-left:3px solid var(--gold);font-size:15.5px;line-height:1.55;color:var(--graphite)}
.ax-why b{display:block;margin-bottom:3px;font:700 12px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--navy)}
@media(min-width:960px){.ax-how,.ax-why{max-width:560px}.ax-how{margin-top:30px}}

/* the drawing: desktop only */
.ax-draw{display:none}
@media(min-width:960px){.ax-draw{display:block;margin-top:30px;max-width:500px}}
.ax-draw svg{width:100%;height:auto;overflow:visible}
.ax-draw .ln path{fill:none;stroke:var(--navy);stroke-width:1.5;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:0}
.ax-draw .fill path{fill:var(--gold);opacity:.55}
.ax-draw .sky path{stroke:var(--sky);stroke-width:2;stroke-linecap:round;fill:none;opacity:.8}
.ax-draw .sign{font:900 21px var(--display);letter-spacing:.14em;fill:var(--navy)}
.ax-draw .knob{fill:var(--navy)}
.ax-draw .kp rect{fill:#fff;stroke:var(--gold-ink);stroke-width:1.4}
.ax-draw .kd{fill:var(--gold);stroke:var(--gold-ink);stroke-width:.8}
.ax-draw .led{fill:var(--ok)}
.ax-draw .note path{fill:none;stroke:var(--gold-ink);stroke-width:1;stroke-dasharray:3 3}
.ax-draw .note text,.ax-draw .dim text{font:700 10.5px var(--mono);letter-spacing:.1em;fill:var(--gold-ink)}
.ax-draw .dim path{fill:none;stroke:var(--graphite);stroke-width:1}
.ax-draw .dim text{fill:var(--graphite)}

/* ---------- the sheet: the form, the code, the time-up states ---------- */
.ax-sheet{position:relative;background:var(--paper);border:1.5px solid var(--navy);padding:22px 18px 14px;box-shadow:0 34px 70px -46px rgba(13,24,45,.6)}
.ax-sheet::before,.ax-sheet::after{content:"";position:absolute;width:18px;height:18px;border:2px solid var(--gold);pointer-events:none}
.ax-sheet::before{left:-8px;top:-8px;border-right:0;border-bottom:0}
.ax-sheet::after{right:-8px;bottom:-8px;border-left:0;border-top:0}
@media(min-width:700px){.ax-sheet{padding:30px 34px 18px}}

.ax-steps{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:22px}
.ax-steps li{display:flex;flex-direction:column;gap:7px;min-width:0;font:700 10.5px/1.25 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--graphite)}
.ax-steps li::before{content:"";height:3px;background:linear-gradient(var(--gold),var(--gold)) 0 0/0% 100% no-repeat,rgba(23,39,69,.14);transition:background-size .7s var(--ease)}
.ax-steps li b{font-weight:700;color:var(--gold-ink)}
.ax-steps li span{display:block}
.ax-steps li[aria-current],.ax-steps li.done{color:var(--navy)}
.ax-steps li[aria-current]::before,.ax-steps li.done::before{background-size:100% 100%,auto}

.ax-sheet h2{font:900 clamp(34px,8.4vw,44px)/.94 var(--display);text-transform:uppercase;letter-spacing:.005em}
.ax-sheet h2:focus{outline:none}
.ax-sheet .ax-eyebrow+h2{margin-top:10px}
.ax-sub{margin-top:12px;color:var(--graphite);font-size:16px}
.ax-sub b{color:var(--navy)}
.ax-sub .ax-to{display:block;margin:2px 0 8px;overflow-wrap:anywhere}
.ax-note{margin-top:14px;padding:10px 12px;border-left:4px solid var(--terra);background:#fff;font-size:15px;color:var(--navy)}
.ax-terra{color:var(--terra-ink)}

.ax-sheet form{margin-top:20px;display:grid;gap:14px}
.ax-sheet .f{min-width:0}
.ax-sheet label{display:block;margin-bottom:6px;font-weight:700;font-size:14.5px;line-height:1.3}
.ax-sheet input,.ax-sheet select{display:block;width:100%;height:50px;padding:0 14px;border:1.5px solid rgba(23,39,69,.6);border-radius:0;background:#fff;color:var(--navy);font:16px var(--sans);-webkit-appearance:none;appearance:none;transition:border-color .2s,box-shadow .2s}
.ax-sheet select{padding-right:42px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23172745' stroke-width='1.8'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 15px center;background-size:12px 8px}
.ax-sheet select:invalid{color:#6B7380}
.ax-sheet option{color:var(--navy)}
.ax-sheet input:hover,.ax-sheet select:hover{border-color:var(--navy)}
.ax-sheet input:focus-visible,.ax-sheet select:focus-visible{outline:3px solid var(--gold-ink);outline-offset:1px;border-color:var(--navy);box-shadow:5px 5px 0 rgba(225,180,67,.5)}
.ax-sheet [aria-invalid="true"]{border-color:var(--err)}
.ax-sheet .ferr{margin-top:6px;font-size:14px;font-weight:700;color:var(--err)}
.ax-sheet .ferr:empty{display:none}
.ax-err{padding:10px 12px;border-left:4px solid var(--err);background:#fff;font-size:15px;font-weight:700;color:var(--err)}
.ax-err:empty{display:none}
.ax-err.ax-info{border-left-color:var(--gold, #E1B443);color:var(--navy, #172745);font-weight:400}

.ax-btn{position:relative;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:56px;margin-top:4px;padding:0 20px;border:0;background:var(--gold);color:var(--navy)!important;font:900 17px var(--sans);text-decoration:none;cursor:pointer;transition:background .2s}
.ax-btn:hover{background:var(--gold-hi)}
.ax-btn[aria-disabled="true"]{cursor:progress;background:var(--gold-hi)}
.ax-btn .arr{font-size:19px;transition:transform .25s var(--ease)}
.ax-btn:hover .arr{transform:translateX(4px)}
.ax-btn2{margin-top:10px;background:transparent;border:1.5px solid var(--navy);font-size:16px;min-height:52px}
.ax-btn2:hover{background:rgba(23,39,69,.06)}
.ax-spin{width:18px;height:18px;border:2.5px solid rgba(23,39,69,.25);border-top-color:var(--navy);border-radius:50%;animation:axSpin .8s linear infinite}
@keyframes axSpin{to{transform:rotate(360deg)}}

.ax-fine{font-size:14px;color:var(--graphite)}
.ax-sheet [data-step] > .ax-fine{margin-top:14px}
.ax-fine a,.ax-fine b{color:var(--navy);font-weight:700}
.ax-fine a{text-underline-offset:3px}
.ax-link{display:inline;padding:0;border:0;background:none;color:var(--navy);font:inherit;font-weight:700;text-decoration:underline;text-underline-offset:3px;cursor:pointer}

.ax-have{display:grid;gap:12px;margin-top:22px;padding-top:18px;border-top:1px dashed var(--line)}
.ax-have input{font:700 20px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase}
.ax-have input::placeholder{letter-spacing:.14em;color:#8A93A3}
.ax-btn.ax-btn-line{background:#fff;box-shadow:inset 0 0 0 2px var(--navy)}
.ax-btn.ax-btn-line:hover{background:var(--gold-hi)}
.ax-code input{height:68px;padding:0 10px;text-align:center;font:800 32px/1 var(--mono);letter-spacing:.32em}

/* "Your 24 hours are up": the ledger, like the email */
.ax-ledger{display:grid;grid-template-columns:1fr 1fr;margin:20px 0 16px;border:1.5px solid var(--navy);background:#fff}
.ax-ledger div{padding:11px 14px 12px}
.ax-ledger .k{display:block;font:700 10.5px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--graphite)}
.ax-ledger b{display:block;margin-top:3px;font:900 27px/1 var(--display);text-transform:uppercase;color:var(--graphite);text-decoration:line-through;text-decoration-thickness:2px}
.ax-ledger .on{background:var(--navy);position:relative;overflow:hidden}
.ax-ledger .on .k{color:var(--gold)}
.ax-ledger .on b{color:var(--gold);text-decoration:none}
.ax-ledger .on::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(240,207,116,.2) 50%,transparent 70%);transform:translateX(-100%)}
.ax-ok{display:flex;align-items:flex-start;gap:12px;margin:4px 0 12px;padding:12px 14px;border:1.5px solid var(--navy);background:#fff;font-size:15px;color:var(--navy)}
.ax-ok svg{flex:none;width:24px;height:24px;padding:3px;background:var(--gold);color:var(--navy)}
.ax-ok b{font-weight:700}
.ax-sheet [data-step="expired"] .ax-err{margin-bottom:12px}
.ax-sheet [data-step="over"] .ax-sub{margin-bottom:22px}

/* the title block at the foot of the sheet */
.ax-tb{display:flex;justify-content:space-between;gap:12px;margin-top:22px;padding-top:12px;border-top:1px solid var(--line);font:700 10.5px var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--graphite)}
.ax-tb span:first-child{color:var(--gold-ink)}
@media(max-width:480px){.ax-tb span+span{display:none}}

.ax-sheet .hp{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}

/* ---------- footer ---------- */
.ax-foot{background:var(--navy-deep);color:#AEB7C4;padding:26px 0 30px;font-size:14px}
.ax-foot .ax-wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px 24px}
.ax-foot img{height:32px;width:auto}
.ax-foot a{color:#F1F1ED}

/* ---------- motion: a drawing coming to life, only when motion is welcome ---------- */
@media (prefers-reduced-motion:no-preference){
  .ax-bar::after{animation:axRule 1.1s var(--ease) .1s both}
  .ax-head > *{animation:axUp .7s var(--ease) both}
  .ax-head > :nth-child(2){animation-delay:.08s}
  .ax-head > :nth-child(3){animation-delay:.16s}
  .ax-head > :nth-child(4){animation-delay:.24s}
  .ax-head > :nth-child(5){animation-delay:.32s}
  /* the title slides in but is visible from the first frame (a phone counts the page as shown when it is painted) */
  .ax-head h1{animation-name:axRise}
  .ax-head h1 em::after{animation:axRule .9s var(--ease) .55s both}
  .ax-sheet{animation:axUp .8s var(--ease) .12s both}
  .ax-sheet::before,.ax-sheet::after{animation:axTick .6s var(--ease) .7s both}
  .ax-more{animation:axUp .8s var(--ease) .26s both}
  .ax-draw .ln path{stroke-dashoffset:1;animation:axDraw 1.1s cubic-bezier(.6,.05,.25,1) .2s both}
  .ax-draw .ln path:nth-child(2){animation-delay:.3s}
  .ax-draw .ln path:nth-child(3){animation-delay:.42s}
  .ax-draw .ln path:nth-child(4){animation-delay:.52s}
  .ax-draw .ln path:nth-child(5){animation-delay:.62s}
  .ax-draw .ln path:nth-child(n+6){animation-delay:.72s}
  .ax-draw .fill,.ax-draw .sky,.ax-draw .sign,.ax-draw .knob,.ax-draw .kp rect,.ax-draw .note,.ax-draw .dim{animation:axFade .6s ease-out 1.1s both}
  .ax-draw .kd{animation:axKey .26s ease-out both}
  .ax-draw .kd:nth-of-type(1){animation-delay:1.45s}
  .ax-draw .kd:nth-of-type(2){animation-delay:1.57s}
  .ax-draw .kd:nth-of-type(3){animation-delay:1.69s}
  .ax-draw .kd:nth-of-type(4){animation-delay:1.81s}
  .ax-draw .kd:nth-of-type(5){animation-delay:1.93s}
  .ax-draw .kd:nth-of-type(6){animation-delay:2.05s}
  .ax-draw .led{animation:axLed .45s ease-out 2.25s both}
  .ax-ledger .on::after{animation:axSheen 2.4s ease-in-out 1s 2 both}
  .ax-sheet [data-step]{animation:axIn .45s var(--ease) both}
}
@keyframes axUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes axRise{from{transform:translateY(14px)}to{transform:none}}
@keyframes axIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes axFade{from{opacity:0}to{opacity:1}}
@keyframes axRule{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes axTick{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}
@keyframes axDraw{to{stroke-dashoffset:0}}
@keyframes axKey{from{fill:#fff}to{fill:var(--gold)}}
@keyframes axLed{from{fill:var(--terra)}to{fill:var(--ok)}}
@keyframes axSheen{to{transform:translateX(100%)}}
@media (prefers-reduced-motion:reduce){.ax-page *,.ax-page *::before,.ax-page *::after{animation:none!important;transition:none!important}}
/* the drawn "opens somewhere else" arrow (2026-10-19): the ↗ character turned into a blue emoji on iPhones */
.ax-out{display:inline-block;vertical-align:-.04em}
