
:root{
  --oar:#f97316;--oar-deep:#e85b05;--oar-dark:#c94400;
  --ink:#171717;--muted:#7b7975;--line:#e9e2d9;--white:#fff;
}
*{box-sizing:border-box}
body.access-locked{overflow:hidden;background:var(--oar);font-family:"Cairo",Arial,sans-serif}
body.access-locked #viewportFrame{display:none!important}
.access-gate[hidden]{display:none!important}
.access-gate{
  position:fixed;z-index:9999;inset:0;overflow:hidden;
  display:grid;place-items:center;padding:24px;
  background:
    radial-gradient(circle at 50% 44%,rgba(255,255,255,.08),transparent 33%),
    linear-gradient(145deg,#ff7b18 0%,#f56808 51%,#df4b00 100%);
  font-family:"Cairo",Arial,sans-serif;
}

/* New Cairo line-art background */
.access-map-art{
  position:absolute;inset:-2%;pointer-events:none;opacity:.48;
  mask-image:linear-gradient(to bottom,rgba(0,0,0,.96),rgba(0,0,0,.72) 74%,rgba(0,0,0,.18));
}
.new-cairo-map{width:100%;height:100%;display:block;overflow:visible}
.nc-road,.nc-blocks path{
  fill:none;stroke:#fff;vector-effect:non-scaling-stroke;
  stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:1;stroke-dashoffset:1;
  animation:ncDraw 3.6s cubic-bezier(.2,.8,.2,1) forwards;
}
.nc-road--trunk{stroke-width:2.15;opacity:.30}
.nc-road--primary{stroke-width:2.7;opacity:.58}
.nc-road--connector{stroke-width:1.55;opacity:.35}
.nc-road--local{stroke-width:1.05;opacity:.24}
.nc-road--delay1{animation-delay:.35s}.nc-road--delay2{animation-delay:.7s}.nc-road--delay3{animation-delay:1.05s}
.nc-blocks path{stroke-width:.8;opacity:.16;animation-duration:4.5s;animation-delay:1.15s}
.nc-nodes circle{fill:#fff;opacity:0;animation:ncNode 1s ease 2.7s forwards}
.nc-labels text{
  fill:rgba(255,255,255,.34);font:700 11px "Cairo",Arial,sans-serif;
  letter-spacing:.18em;opacity:0;animation:ncLabel 1.4s ease 3s forwards;
}
.nc-route-dot{fill:#fff;opacity:.78}
@keyframes ncDraw{to{stroke-dashoffset:0}}
@keyframes ncNode{to{opacity:.42}}
@keyframes ncLabel{to{opacity:1}}

/* Compact unified brand lockup */
.access-brandmark{
  position:absolute;top:26px;left:50%;transform:translateX(-50%);
  z-index:4;display:flex;align-items:center;gap:12px;
  min-width:238px;padding:8px 12px 8px 9px;
  border:1px solid rgba(255,255,255,.19);border-radius:20px;
  background:rgba(255,255,255,.075);
  box-shadow:0 14px 34px rgba(111,35,0,.12);
  backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);
  color:#fff;
}
.access-brandmark__logo{
  width:48px;height:48px;display:grid;place-items:center;flex:0 0 48px;
  border-radius:15px;overflow:hidden;background:rgba(255,255,255,.11);
  box-shadow:0 9px 24px rgba(115,30,0,.17);
}
.access-brandmark img{width:100%;height:100%;object-fit:cover;display:block}
.access-brandmark__copy{display:grid;gap:1px;line-height:1}
.access-brandmark strong{display:block;font-size:19px;font-weight:900;letter-spacing:.055em}
.access-brandmark span{display:block;margin-top:5px;font-size:7px;font-weight:700;opacity:.72;letter-spacing:.12em;white-space:nowrap}

/* Smaller, cleaner access card */
.join-card{
  position:relative;z-index:3;width:min(390px,calc(100vw - 34px));
  min-height:0;padding:23px 24px 21px;
  border:1px solid rgba(255,255,255,.72);
  border-radius:24px;background:rgba(255,255,255,.985);color:var(--ink);
  box-shadow:0 26px 78px rgba(105,30,0,.22);
  transition:width .4s cubic-bezier(.22,1,.36,1),padding .26s ease,transform .26s ease;
}
.join-card.is-expanded{width:min(465px,calc(100vw - 34px))}
.join-card__head{text-align:center;margin-bottom:17px}
.join-card__eyebrow{
  display:inline-flex;align-items:center;min-height:22px;padding:0 9px;margin-bottom:7px;
  border-radius:999px;background:#fff3ea;color:var(--oar);
  font-size:7px;font-weight:900;letter-spacing:.15em;
}
.join-card__head h1{margin:0;font-size:29px;line-height:1.2;font-weight:900;letter-spacing:-.035em}
.join-card__head p{margin:6px auto 0;max-width:320px;color:var(--muted);font-size:9.5px;line-height:1.75}
.join-form{display:grid;gap:10px;animation:joinReveal .3s cubic-bezier(.22,1,.36,1)}
.join-form[hidden],.join-state[hidden]{display:none!important}
@keyframes joinReveal{from{opacity:0;transform:translateY(8px) scale(.988)}to{opacity:1;transform:none}}
.join-field{display:grid;gap:5px}
.join-field span{font-size:7.5px;font-weight:900;color:#696965}
.join-field input{
  width:100%;height:47px;border:1px solid var(--line);border-radius:14px;
  padding:0 13px;background:#fff;color:#1e1e1c;outline:0;
  font:700 11px "Cairo",Arial,sans-serif;
  transition:border-color .18s,box-shadow .18s,background .18s;
}
.join-field input:focus{border-color:rgba(249,115,22,.65);box-shadow:0 0 0 4px rgba(249,115,22,.10)}
.join-field input[readonly]{background:#f7f6f3;color:#888}
.join-submit{
  min-height:48px;margin-top:2px;border:0;border-radius:14px;background:var(--oar);color:#fff;
  font:900 10.5px "Cairo",Arial,sans-serif;cursor:pointer;
  box-shadow:0 10px 22px rgba(249,115,22,.17);
  transition:transform .16s,background .16s,opacity .16s;
}
.join-submit:hover{background:var(--oar-deep);transform:translateY(-1px)}
.join-submit:disabled{opacity:.55;cursor:wait;transform:none}
.join-secondary{
  min-height:43px;border:1px solid var(--line);border-radius:13px;background:#fff;color:#555;
  font:800 9px "Cairo",Arial,sans-serif;cursor:pointer;
}
.join-inline{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.join-message{min-height:16px;margin-top:7px;text-align:center;color:#8a8a84;font-size:8px;line-height:1.7}
.join-message.is-error{color:#b42318}.join-message.is-success{color:#087443}
.join-state{padding:4px 0 0;text-align:center;animation:joinReveal .3s cubic-bezier(.22,1,.36,1)}
.join-state__icon{width:54px;height:54px;margin:0 auto 10px;border-radius:17px;display:grid;place-items:center;background:#fff2e8;color:var(--oar);font-size:23px;font-weight:900}
.join-state strong{display:block;font-size:15px}.join-state p{margin:6px auto 13px;max-width:340px;color:#777;font-size:8.5px;line-height:1.8}
.join-change{border:0;background:transparent;color:var(--oar-dark);font:900 8px "Cairo";cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.access-foot{
  position:absolute;z-index:2;bottom:17px;left:50%;transform:translateX(-50%);
  color:rgba(255,255,255,.63);font-size:6.5px;font-weight:700;letter-spacing:.09em;white-space:nowrap;
}

@media(max-width:760px){
  .access-gate{padding:14px;align-items:center}
  .access-brandmark{top:18px;min-width:220px;padding:7px 10px 7px 8px;border-radius:18px}
  .access-brandmark__logo{width:43px;height:43px;flex-basis:43px;border-radius:13px}
  .access-brandmark strong{font-size:17px}.access-brandmark span{font-size:6.5px}
  .join-card,.join-card.is-expanded{width:min(368px,100%);max-width:100%;padding:21px 18px 19px;border-radius:22px}
  .join-card__head h1{font-size:26px}.join-inline{grid-template-columns:1fr}
  .access-foot{bottom:10px}
  .access-map-art{inset:-5%;opacity:.42}
}
@media(max-height:680px){
  .access-brandmark{top:10px;transform:translateX(-50%) scale(.9)}
  .join-card{transform:translateY(10px)}
  .access-foot{display:none}
}
@media(prefers-reduced-motion:reduce){
  .nc-road,.nc-blocks path,.nc-nodes circle,.nc-labels text,.nc-route-dot{animation:none!important}
  .nc-road,.nc-blocks path{stroke-dashoffset:0!important}.nc-nodes circle{opacity:.35!important}.nc-labels text{opacity:1!important}
  .join-card,.join-form,.join-state{transition:none!important;animation:none!important}
}


/* Access refinement v4 — brand inside card + calmer looping map animation */
.access-map-art{
  inset:-1%!important;
  opacity:.34!important;
  filter:saturate(.92);
  mask-image:radial-gradient(circle at 50% 48%,rgba(0,0,0,.9) 0 34%,rgba(0,0,0,.68) 58%,rgba(0,0,0,.22) 100%)!important;
  -webkit-mask-image:radial-gradient(circle at 50% 48%,rgba(0,0,0,.9) 0 34%,rgba(0,0,0,.68) 58%,rgba(0,0,0,.22) 100%)!important;
}
.nc-road,.nc-blocks path{
  stroke-dasharray:1!important;
  stroke-dashoffset:1;
  animation:ncTraceLoop 10s cubic-bezier(.22,.74,.24,1) infinite!important;
}
.nc-road--trunk{opacity:.22!important;stroke-width:1.65!important}
.nc-road--primary{opacity:.38!important;stroke-width:1.9!important}
.nc-road--connector{opacity:.22!important;stroke-width:1.15!important}
.nc-road--local{opacity:.13!important;stroke-width:.82!important}
.nc-road--delay1{animation-delay:-1.8s!important}
.nc-road--delay2{animation-delay:-3.6s!important}
.nc-road--delay3{animation-delay:-5.4s!important}
.nc-blocks path{
  opacity:.09!important;
  stroke-width:.62!important;
  animation-duration:14s!important;
  animation-delay:-4s!important;
}
.nc-nodes circle{
  opacity:.18!important;
  animation:ncNodePulse 4.8s ease-in-out infinite!important;
}
.nc-nodes circle:nth-child(2n){animation-delay:-1.6s!important}
.nc-nodes circle:nth-child(3n){animation-delay:-3.2s!important}
.nc-labels text{
  fill:rgba(255,255,255,.19)!important;
  opacity:.35!important;
  animation:ncLabelDrift 7s ease-in-out infinite!important;
}
.nc-route-dot{
  fill:#fff!important;
  opacity:.55!important;
  filter:drop-shadow(0 0 5px rgba(255,255,255,.55));
}
@keyframes ncTraceLoop{
  0%{stroke-dashoffset:1}
  38%{stroke-dashoffset:0}
  76%{stroke-dashoffset:0}
  100%{stroke-dashoffset:-1}
}
@keyframes ncNodePulse{
  0%,100%{opacity:.08;transform:scale(.82);transform-origin:center}
  50%{opacity:.34;transform:scale(1.12);transform-origin:center}
}
@keyframes ncLabelDrift{
  0%,100%{opacity:.12;transform:translateY(0)}
  50%{opacity:.27;transform:translateY(-3px)}
}

/* Brand now lives inside the white access card */
.join-card{
  padding-top:20px!important;
}
.access-brandmark{
  position:static!important;
  top:auto!important;left:auto!important;
  transform:none!important;
  min-width:0!important;width:100%!important;
  margin:0 0 18px!important;padding:0 0 16px!important;
  display:flex!important;align-items:center!important;justify-content:center!important;gap:11px!important;
  border:0!important;border-bottom:1px solid #f0ebe4!important;border-radius:0!important;
  background:transparent!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  color:var(--ink)!important;
}
.access-brandmark__logo{
  width:46px!important;height:46px!important;flex:0 0 46px!important;
  border-radius:14px!important;background:#fff3ea!important;
  box-shadow:0 8px 20px rgba(249,115,22,.14)!important;
}
.access-brandmark__copy{
  display:grid!important;gap:2px!important;line-height:1.05!important;text-align:left!important;direction:ltr!important;
}
.access-brandmark strong{
  color:#1a1a19!important;font-size:18px!important;font-weight:900!important;letter-spacing:.055em!important;
}
.access-brandmark span{
  margin-top:4px!important;color:var(--oar)!important;opacity:.88!important;
  font-size:6.6px!important;font-weight:900!important;letter-spacing:.115em!important;
}
.join-card__head{margin-bottom:16px!important}
.join-card__eyebrow{margin-bottom:6px!important}

@media(max-width:760px){
  .access-brandmark{
    margin-bottom:15px!important;padding-bottom:14px!important;
  }
  .access-brandmark__logo{width:42px!important;height:42px!important;flex-basis:42px!important}
  .access-brandmark strong{font-size:16px!important}
  .access-brandmark span{font-size:6px!important}
  .access-map-art{opacity:.28!important;inset:-3%!important}
}
@media(max-height:680px){
  .access-brandmark{
    transform:none!important;
    margin-bottom:12px!important;padding-bottom:11px!important;
  }
  .join-card{transform:none!important}
}
@media(prefers-reduced-motion:reduce){
  .nc-road,.nc-blocks path{animation:none!important;stroke-dashoffset:0!important}
  .nc-nodes circle,.nc-labels text{animation:none!important}
}


/* Brand lockup physical alignment — logo left, copy right */
.access-brandmark{
  direction:ltr!important;
  flex-direction:row!important;
}
.access-brandmark__logo{
  order:1!important;
}
.access-brandmark__copy{
  order:2!important;
  direction:ltr!important;
  text-align:right!important;
  align-items:end!important;
}
.access-brandmark__copy strong,
.access-brandmark__copy span{
  width:100%!important;
  text-align:right!important;
}


/* Waiting state — structured review message */
.join-state{
  padding-top:6px!important;
}
.join-state__loader{
  width:58px;
  height:58px;
  margin:0 auto 14px;
  border-radius:18px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:5px;
  background:#fff2e8;
  box-shadow:inset 0 0 0 1px rgba(249,115,22,.08);
}
.join-state__loader span{
  width:6px;
  height:6px;
  border-radius:999px;
  background:var(--oar);
  animation:joinWaitingDot 1.15s ease-in-out infinite;
}
.join-state__loader span:nth-child(2){animation-delay:.16s}
.join-state__loader span:nth-child(3){animation-delay:.32s}
@keyframes joinWaitingDot{
  0%,80%,100%{transform:translateY(0) scale(.82);opacity:.34}
  40%{transform:translateY(-5px) scale(1);opacity:1}
}
.join-state>strong{
  font-size:17px!important;
  line-height:1.5!important;
  margin-bottom:6px;
}
.join-state>p{
  max-width:380px!important;
  margin:0 auto 15px!important;
  color:#777!important;
  font-size:9px!important;
  line-height:1.95!important;
}
.join-state__notice{
  display:grid;
  gap:8px;
  margin:0 auto 15px;
  max-width:390px;
  text-align:right;
}
.join-state__notice>div{
  padding:11px 12px;
  border:1px solid #efe7de;
  border-radius:13px;
  background:#fffaf6;
}
.join-state__notice b{
  display:block;
  margin-bottom:3px;
  color:#2d2b29;
  font-size:8.5px;
  font-weight:900;
}
.join-state__notice span{
  display:block;
  color:#85817d;
  font-size:8px;
  line-height:1.8;
}
.join-state .join-secondary{
  min-width:92px;
  padding:0 18px;
}
@media(max-width:760px){
  .join-state__notice{gap:7px}
  .join-state__notice>div{padding:10px}
}
@media(prefers-reduced-motion:reduce){
  .join-state__loader span{animation:none!important;opacity:.7!important}
}


/* Brand copy left-aligned with logo */
.access-brandmark{
  direction:ltr!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:12px!important;
}
.access-brandmark__logo{order:1!important;flex:0 0 auto!important}
.access-brandmark__copy{
  order:2!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:flex-start!important;
  justify-content:center!important;
  text-align:left!important;
  direction:ltr!important;
}
.access-brandmark__copy strong,
.access-brandmark__copy span{
  width:auto!important;
  text-align:left!important;
  align-self:flex-start!important;
}
