/* =========================================================
   RAPVILLE (US) — additions on top of site.css
   accessibility · opt-in form · legal pages · contact · apply section
   ========================================================= */

/* ---------- accessibility ---------- */
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{
  position:fixed;left:1rem;top:-100px;z-index:10000;
  background:var(--white);color:#0A0A0B;font-weight:700;padding:.8em 1.2em;border-radius:10px;transition:top .2s;
}
.skip-link:focus{top:1rem}
:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:4px}
.btn:focus-visible{outline-offset:4px;border-radius:100px}
main{display:block}
[hidden]{display:none!important}

/* sub-pages (no hero): header is always in its "scrolled" state, content clears the fixed bar */
body.subpage header{background:rgba(10,10,11,.92);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line-2)}
@media(max-width:900px),(pointer:coarse){body.subpage header{-webkit-backdrop-filter:none;backdrop-filter:none;background:#0A0A0B}}
body.subpage main{padding-top:78px}
body.subpage main.legal{padding-top:calc(78px + clamp(2rem,5vw,3.5rem))}
body.subpage main.center-page{padding-top:calc(78px + clamp(2rem,6vw,4rem))}
@media(max-width:560px){body.subpage main{padding-top:66px}body.subpage main.legal{padding-top:calc(66px + 1.8rem)}body.subpage main.center-page{padding-top:calc(66px + 2rem)}}

/* footer additions */
.foot-entity{margin-top:1.4rem;font-size:.9rem;line-height:1.6;color:var(--dim)}
.foot-entity strong{color:var(--white);font-weight:700}
.foot-sms{margin-top:1.6rem;max-width:84ch;font-size:.82rem;line-height:1.6;color:var(--dim)}
.foot-sms a{color:var(--white);text-decoration:underline;text-underline-offset:3px}
.foot-bottom span{font-size:.8125rem;letter-spacing:.04em;color:rgba(246,245,241,.72)}
.foot-bottom .foot-dba{font-size:.875rem;color:var(--white)}
.mm-contact span{color:var(--dimmer)}

/* ---------- apply section (homepage) ---------- */
.apply{background:var(--bg);border-top:1px solid var(--line-2);position:relative;overflow:hidden}
.apply .glow{position:absolute;width:80vw;height:60vh;left:50%;top:35%;transform:translate(-50%,-50%);background:radial-gradient(ellipse,rgba(45,125,255,.20),transparent 65%);filter:blur(50px);pointer-events:none}
.apply-grid{position:relative;z-index:2;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);gap:clamp(2rem,5vw,4.5rem);align-items:start}
.apply-copy h2{font-weight:900;font-size:clamp(2.2rem,5.6vw,4.6rem);line-height:.95;text-transform:uppercase;letter-spacing:-.025em;margin:1.2rem 0 1.4rem}
.apply-copy h2 em{font-style:normal;color:var(--blue)}
.apply-copy p{color:var(--dim);font-size:1.12rem;line-height:1.65;max-width:44ch}
.apply-copy .micro,.apply-more .micro{display:block;margin-top:1.4rem;font-family:"Space Mono",monospace;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
.apply-steps{list-style:none;margin-top:2.2rem;border-top:1px solid var(--line);counter-reset:s}
.apply-steps li{counter-increment:s;display:flex;gap:1rem;padding:1.05rem 0;border-bottom:1px solid var(--line);color:var(--dim);font-size:1rem;line-height:1.55}
.apply-steps li::before{content:"0" counter(s);font-family:"Space Mono",monospace;font-size:.76rem;color:var(--blue);letter-spacing:.14em;padding-top:.2em;flex:0 0 auto}
.apply-steps b{color:var(--white);font-weight:700}
.apply-sms-note{margin-top:1.6rem;padding:1.1rem 1.2rem;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.02);font-size:1rem;line-height:1.6;color:var(--dim)}
.apply-sms-note b{color:var(--white)}
.apply-sms-note a{color:var(--white);text-decoration:underline;text-underline-offset:3px}
@media(max-width:900px){.apply-grid{grid-template-columns:1fr}}
@media(max-width:900px),(pointer:coarse){.apply .glow{filter:none}}

/* ---------- opt-in form ---------- */
/* The form is the visitor's reply inside the chat window (chat.css draws the window); it never sits on its own. */
.optin{
  border:1px solid rgba(45,125,255,.32);border-radius:18px 18px 6px 18px;padding:clamp(1rem,3vw,1.4rem);
  background:rgba(45,125,255,.05);
}
.optin-sub{color:var(--dim);font-size:.9rem;line-height:1.5}
.req{color:var(--blue);font-weight:700}
.opt{color:var(--dim);font-weight:400;font-size:.88em}
.optin-error{
  margin-top:1.1rem;padding:.95rem 1.1rem;border-radius:12px;border:1px solid var(--hot);
  background:rgba(255,42,42,.1);color:#ffd9d9;font-size:.95rem;line-height:1.5;
}
.optin-error a{color:#fff;text-decoration:underline}
.optin-error.optin-err-static{display:none;scroll-margin-top:96px}
.optin-error.optin-err-static:target{display:block}
.field{margin-top:1.05rem}
.field label{display:block;font-weight:600;font-size:.92rem;letter-spacing:.01em;margin-bottom:.45rem;color:var(--white)}
.field input,.field textarea{
  width:100%;font:inherit;font-size:1rem;color:var(--white);min-height:48px;
  background:var(--bg-3);border:1px solid rgba(255,255,255,.2);border-radius:12px;padding:.85em 1em;
  transition:border-color .25s,box-shadow .25s;touch-action:manipulation;
}
.field textarea{resize:vertical;min-height:112px;line-height:1.5}
.field input::placeholder{color:var(--dimmer)}
@media(hover:hover){.field input:hover,.field textarea:hover{border-color:rgba(255,255,255,.34)}}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(45,125,255,.28)}
.field input[aria-invalid="true"],.field textarea[aria-invalid="true"]{border-color:var(--hot);box-shadow:0 0 0 3px rgba(255,42,42,.2)}
.field-hint{margin-top:.4rem;font-size:.82rem;color:var(--dim);line-height:1.5}
.field-err{margin-top:.45rem;font-size:.86rem;color:#ff8f8f;line-height:1.45}
.hp{position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}

/* SMS consent block — deliberately large, high-contrast and un-styled-away so reviewers can read it */
.sms-consent{margin-top:1.5rem;padding:1.1rem 1rem 1rem;border:1px solid rgba(45,125,255,.5);border-radius:16px;background:rgba(10,10,11,.45);min-inline-size:0}
.sms-consent legend .opt{font-size:1em}
.sms-consent legend{padding:0 .5rem;font-family:"Space Mono",monospace;font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;color:var(--white)}
.sms-intro{font-size:.94rem;line-height:1.6;color:rgba(246,245,241,.82);margin-bottom:.4rem}
/* Checkbox: a 24px visible box inside a 44px hit area (transparent 10px border), so it is easy to tap and the whole label also toggles it. */
.consent-row{display:flex;align-items:flex-start;gap:.25rem;margin-top:.5rem}
.consent-row input[type="checkbox"]{
  -webkit-appearance:none;appearance:none;flex:0 0 44px;width:44px;height:44px;margin:0 0 0 -10px;
  border:10px solid transparent;border-radius:16px;background:var(--bg-3);background-clip:padding-box;
  box-shadow:inset 0 0 0 2px rgba(246,245,241,.72);cursor:pointer;touch-action:manipulation;
  background-repeat:no-repeat;background-position:center;background-size:100% 100%;
}
.consent-row input[type="checkbox"]:checked{
  background-color:var(--blue-deep);box-shadow:inset 0 0 0 2px var(--blue);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5.5 12.5l4.2 4.2L18.5 7.8'/%3E%3C/svg%3E");
}
.consent-row input[type="checkbox"]:focus-visible{outline:2px solid var(--blue);outline-offset:-8px;border-radius:16px}
.consent-row label{flex:1 1 auto;min-width:0;padding:.65rem 0 .65rem .15rem;font-size:.94rem;line-height:1.55;color:rgba(246,245,241,.94);cursor:pointer;font-weight:400;touch-action:manipulation}
@media(forced-colors:active){.consent-row input[type="checkbox"]{-webkit-appearance:auto;appearance:auto;border:0;width:24px;height:24px;flex-basis:24px;margin:.7rem 0 0}}
.sms-fine{margin-top:1rem;font-size:.84rem;line-height:1.6;color:rgba(246,245,241,.78)}
.sms-fine a,.optin-legal a{color:var(--white);text-decoration:underline;text-underline-offset:3px}
.optin-btn{margin-top:1.3rem;width:100%;min-height:52px;justify-content:center;font-size:1rem;padding:1em 1.6em;touch-action:manipulation}
.optin-btn[disabled]{opacity:.6;cursor:progress;transform:none}
.optin-note{margin-top:.7rem;text-align:center;font-size:.86rem;line-height:1.5;color:rgba(246,245,241,.78);text-wrap:balance}
.optin-legal{margin-top:.4rem;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;font-size:.86rem;color:rgba(246,245,241,.78)}
.optin-legal a{display:inline-flex;align-items:center;min-height:44px;padding:0 .575rem}
.optin-status{text-align:center;font-size:.9rem;color:var(--dim)}

/* ---------- legal + content pages ---------- */
.legal{padding:clamp(2.6rem,6vw,4.5rem) 0 clamp(4rem,9vw,7rem)}
.legal .doc{max-width:820px}
.legal h1{font-weight:900;font-size:clamp(2.2rem,5.4vw,4rem);line-height:.98;letter-spacing:-.02em;text-transform:uppercase;margin:1rem 0 .6rem}
.legal .meta{font-family:"Space Mono",monospace;font-size:.76rem;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin-bottom:2rem}
.legal .notice{
  margin:1.6rem 0 2.2rem;padding:1.25rem 1.4rem;border:1px solid rgba(45,125,255,.45);border-radius:16px;background:rgba(45,125,255,.06);
  color:rgba(246,245,241,.92);font-size:1.02rem;line-height:1.65;
}
.legal .notice strong{color:var(--white)}
.legal [id]{scroll-margin-top:100px}
.legal h2{font-weight:800;font-size:clamp(1.25rem,2.4vw,1.6rem);letter-spacing:-.01em;margin:2.6rem 0 .8rem;line-height:1.2}
.legal h2.part{font-weight:900;font-size:clamp(1.5rem,3.2vw,2.2rem);letter-spacing:-.015em;text-transform:uppercase;margin:3.4rem 0 1rem;padding-top:1.6rem;border-top:1px solid var(--line)}
.legal h2.part:first-of-type{margin-top:2.4rem}
.legal h3{font-weight:700;font-size:1.05rem;margin:1.8rem 0 .5rem;color:var(--white)}
.legal .intro{font-size:1.14rem;line-height:1.7;color:rgba(246,245,241,.9)}
.legal .meta+.intro{margin-top:0}
.legal blockquote{margin:1rem 0;padding:1rem 1.2rem;border-left:3px solid var(--blue);border-radius:0 12px 12px 0;background:rgba(45,125,255,.06)}
.legal blockquote p{margin:0;font-size:.98rem;line-height:1.65;color:rgba(246,245,241,.9)}
.legal blockquote+blockquote{margin-top:.8rem}
.legal p,.legal li{color:rgba(246,245,241,.8);font-size:1.02rem;line-height:1.75}
.legal p{margin:.8rem 0}
.legal ul,.legal ol{margin:.6rem 0 .6rem 1.3rem}
.legal li{margin:.35rem 0}
.legal a{color:var(--white);text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(45,125,255,.8)}
@media(hover:hover){.legal a:hover{color:var(--blue)}}
.legal strong{color:var(--white);font-weight:700}
.legal hr{border:0;border-top:1px solid var(--line);margin:2.4rem 0}
.legal address{font-style:normal;color:rgba(246,245,241,.8);line-height:1.75;margin:.8rem 0;padding-left:1.1rem;border-left:3px solid var(--blue)}
.legal nav.toc{display:block;height:auto;margin:1.4rem 0 2rem;padding:1.1rem 1.3rem;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.02)}
.legal .toc b{display:block;font-family:"Space Mono",monospace;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin-bottom:.5rem}
.legal .toc ol{margin:0 0 0 1.2rem}
.legal .toc a{text-decoration:none}
@media(hover:hover){.legal .toc a:hover{text-decoration:underline}}
.legal .toc li{margin:.28rem 0;font-size:.98rem;line-height:1.5}
.legal .toc-parts>ol{list-style:none;margin-left:0}
.legal .toc-parts>ol>li>a{font-weight:700;color:var(--white)}
.legal .toc-parts ol ol{list-style:none;margin:.3rem 0 .7rem 1rem}
.legal table{width:100%;border-collapse:collapse;margin:1rem 0;font-size:.95rem}
.legal th,.legal td{text-align:left;padding:.7rem .8rem;border:1px solid var(--line);color:rgba(246,245,241,.82);vertical-align:top;line-height:1.55}
.legal th{background:rgba(255,255,255,.04);color:var(--white);font-weight:700}
.legal tbody th{width:28%;min-width:7.5rem}

.legal .doc.doc-wide{max-width:1040px}
.legal a.btn{text-decoration:none;color:#0A0A0B}
@media(hover:hover){.legal a.btn:hover{color:#fff}}
.legal a.btn.ghost{color:var(--white)}
.legal .actions{margin-top:1.4rem}
.contact-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-flow:dense;gap:1.2rem;margin:2rem 0}
@media(max-width:900px){.contact-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.contact-grid{grid-template-columns:minmax(0,1fr)}}
.contact-card{border:1px solid var(--line);border-radius:16px;padding:1.4rem 1.4rem 1.5rem;background:linear-gradient(180deg,rgba(255,255,255,.02),transparent)}
.contact-card h2{margin:0 0 .6rem!important;font-family:"Space Mono",monospace;font-size:.76rem!important;letter-spacing:.18em;text-transform:uppercase;font-weight:400!important;color:var(--blue)}
.contact-card p{margin:.3rem 0;font-size:1.02rem}
.contact-card .note{font-size:1rem;color:var(--dim)}
.contact-card address{margin:.3rem 0;padding:0;border:0}
.contact-card ul{margin:.4rem 0 .4rem 1.1rem}
.contact-card-wide{grid-column:span 2}
@media(max-width:560px){.contact-card-wide{grid-column:auto}}

.center-page{min-height:calc(100vh - 78px);min-height:calc(100svh - 78px);display:flex;align-items:center;padding:clamp(3rem,8vw,6rem) 0}
.center-page .box{max-width:680px}
.center-page h1{font-weight:900;font-size:clamp(2.4rem,7vw,5rem);line-height:.95;letter-spacing:-.025em;text-transform:uppercase;margin:1rem 0 1.2rem}
.center-page h1 em{font-style:normal;color:var(--blue)}
.center-page p{color:rgba(246,245,241,.74);font-size:1.1rem;line-height:1.65;margin:.8rem 0}
.center-page p a{color:var(--white);text-decoration:underline;text-underline-offset:3px}
.center-page .actions{display:flex;flex-wrap:wrap;gap:1rem;margin-top:1.8rem}
.center-page ul{margin:1rem 0 1rem 1.2rem;color:var(--dim);font-size:1.05rem;line-height:1.7}
.center-page h2{font-weight:800;font-size:clamp(1.15rem,2.2vw,1.45rem);letter-spacing:-.01em;line-height:1.2;margin:2.4rem 0 .6rem;color:var(--white)}
.center-page p strong{color:var(--white);font-weight:700}
.center-page .apply-steps{margin-top:.6rem}
.center-page .apply-steps a{color:var(--white);text-decoration:underline;text-underline-offset:3px}
.center-page .apply-steps b{color:var(--white)}

@media(max-width:560px){
  .field input,.field textarea{font-size:16px}
  .legal th,.legal td{padding:.55rem .5rem;font-size:.88rem}
}
@media print{
  header,.mobile-menu,.spotlight,footer .foot-cols,body::after,.skip-link,.chat-dock,.chat-backdrop{display:none!important}
  body{background:#fff;color:#000}
  body.subpage main,body.subpage main.legal,body.subpage main.center-page{padding-top:0!important}
  .legal *,.legal a,.legal th,.legal td,.legal .meta,.legal .intro,.legal .toc a,.legal strong,.legal h2,footer,footer *{color:#000!important;text-shadow:none!important}
  .legal th{background:#eee!important}
  .legal th,.legal td{border-color:#999!important}
  .legal blockquote,.legal .notice{background:none!important;border-color:#000!important}
  footer{padding:1rem 0!important}
}

/* ---------- phones / touch: hit areas, readable small print ---------- */
@media(max-width:900px),(pointer:coarse){
  /* inline links inside sentences keep a >=24px line box (WCAG 2.5.8 inline-link exception) */
  .sms-fine,.foot-sms{font-size:.875rem;line-height:1.75}
  .apply-copy .micro,.apply-more .micro,.legal .toc b{font-size:.75rem}

  /* table of contents: every entry is a 44px row, rows 8px apart */
  .legal .toc a{display:flex;align-items:center;min-height:44px}
  .legal .toc li{margin:0 0 8px}
  .legal .toc-parts ol ol{margin:8px 0 8px 1rem}

  /* contact page: standalone links get the same hit area */
  .contact-card .link-list{list-style:none;margin-left:0}
  .contact-card .link-list li{margin:0 0 8px}
  .contact-card .link-list a,.contact-card .contact-line a{display:inline-flex;align-items:center;min-height:44px}
  .contact-card .contact-line{margin:8px 0}

  /* when the browser scrolls a focused field into view on the homepage, keep it clear of the fixed header */
  .apply .field input,.apply .field textarea{scroll-margin-top:88px;scroll-margin-bottom:32px}
}
/* touch screens: keep prose to a comfortable measure even on wide landscape phones/tablets */
@media(pointer:coarse){.legal .doc>p,.legal .doc li{max-width:75ch}}

/* wide tables scroll inside their own box instead of widening the page */
.table-wrap{margin:1rem 0;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.table-wrap table{margin:0}
@media(max-width:560px){.legal tbody th{min-width:6.5rem}}

