/* Virio website UI kit — component styles (uses tokens from ../../colors_and_type.css) */
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--cream);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased}
.mono{font-family:var(--font-mono);letter-spacing:.13em;text-transform:uppercase}
.grain{position:absolute;inset:0;background:url(../../assets/grain-texture.png);opacity:.5;mix-blend-mode:overlay;pointer-events:none;z-index:1}
.glow{position:absolute;border-radius:50%;filter:blur(60px);pointer-events:none}

/* ---------- layout ---------- */
.site{width:100%;overflow-x:hidden}
.wrap{max-width:1280px;margin:0 auto;padding:0 48px}
section{position:relative}

/* ---------- nav ---------- */
.nav-fixed{position:fixed;left:0;right:0;bottom:28px;z-index:50;display:flex;justify-content:center;pointer-events:none}
.nav{pointer-events:auto;display:flex;align-items:center;gap:22px;height:54px;padding:0 12px;border-radius:var(--r-pill);
     background:var(--glass-nav);backdrop-filter:blur(28px);-webkit-backdrop-filter:blur(28px);border:1px solid var(--hairline-light);
     box-shadow:0 10px 40px rgba(0,0,0,.25)}
.nav-mark{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.07);display:flex;align-items:center;justify-content:center}
.nav-mark img{width:21px}
.nav-links{display:flex;align-items:center;gap:18px}
.nav-link{background:none;border:none;cursor:pointer;color:var(--cream);font-family:var(--font-display);font-size:14px;letter-spacing:-0.01em;padding:0;opacity:.92}
.nav-link:hover{opacity:1}
.nav-link sup{opacity:.55;margin-left:1px}
.nav-sep{width:1px;height:14px;background:rgba(255,249,237,.28)}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:9px;border:none;cursor:pointer;font-family:var(--font-display);
     font-weight:500;letter-spacing:-0.02em;border-radius:var(--r-pill);white-space:nowrap;transition:transform .15s ease,filter .15s ease,background .15s ease}
.btn:active{transform:scale(.97)}
.btn-gold{background:var(--gold);color:var(--ink)}
.btn-gold:hover{filter:brightness(1.05)}
.btn-lg{height:54px;padding:0 26px;font-size:18px}
.btn-md{height:34px;padding:0 16px;font-size:14px}
.btn .plus{font-weight:400;line-height:0;font-size:1.15em}
.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--ink)}
.btn-ghost:hover{background:rgba(27,27,24,.04)}

/* ---------- eyebrow / accents ---------- */
.eyebrow{font-family:var(--font-mono);font-size:13px;letter-spacing:.13em;text-transform:uppercase;color:var(--fg3)}
.eyebrow.on-dark{color:rgba(255,249,237,.7)}
.corner{display:flex;justify-content:space-between;align-items:center}
.corner .gl{display:flex;align-items:center;gap:7px}
.dotsq{display:inline-flex;gap:5px;align-items:center}
.dotsq i{width:9px;height:10px;border-radius:2px;background:currentColor;display:inline-block;opacity:.9}
.dotsq i.c{border-radius:50%;background:transparent;border:1.4px solid currentColor;width:9px;height:9px}

/* ---------- hero ---------- */
.hero{background:var(--olive);min-height:760px;padding-top:74px;overflow:hidden}
.hero .grid{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;gap:30px;align-items:center;padding:60px 0 40px}
.hero h1{font-family:var(--font-display);font-weight:500;font-size:64px;line-height:.96;letter-spacing:-0.03em;color:var(--cream);margin:0}
.hero .sub{font-size:16px;line-height:1.35;letter-spacing:-0.02em;color:rgba(255,255,255,.92);margin:26px 0 0;white-space:pre-line}
.hero .cta-row{margin-top:34px}
.logos{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:64px;opacity:.62}
.logos .lg{font-family:var(--font-display);font-weight:600;font-size:17px;letter-spacing:-0.01em;color:var(--cream);white-space:nowrap}
.logos .lg.mono{font-family:var(--font-mono);font-size:12px;font-weight:400}
.hero-fade{position:absolute;left:0;right:0;bottom:-1px;height:240px;z-index:2;
           background:linear-gradient(rgba(255,249,237,0),var(--cream) 78%)}

/* stage (right side floating UI) */
.stage{position:relative;height:480px}
.glass-card{position:absolute;border-radius:var(--r-md);background:var(--glass-dark);
            backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
            box-shadow:7.8px 19.5px 48px rgba(0,0,0,.10),32.5px 80.5px 87px rgba(0,0,0,.09),74px 180.6px 117px rgba(0,0,0,.05);
            overflow:hidden}
.note{position:absolute;display:flex;align-items:flex-start;gap:10px;width:300px;padding:13px 15px;border-radius:var(--r-md);
      background:rgba(255,249,237,.95);box-shadow:3px 8px 18px rgba(0,0,0,.12),22px 55px 44px rgba(0,0,0,.06);z-index:6}
.note .nd{width:7px;height:7px;border-radius:50%;background:var(--teal);margin-top:7px;flex:none}
.note .av{width:34px;height:34px;border-radius:50%;flex:none;background:radial-gradient(circle at 32% 28%,#cdb89a,#857f6d)}
.note .tx{font-size:13.5px;line-height:1.34;letter-spacing:-0.01em;color:var(--ink)}
.note .tx b{font-weight:700}
.note .tm{font-family:var(--font-mono);font-size:10px;color:var(--fg3);margin-left:auto;flex:none}

/* post card */
.postcard{width:300px;height:430px;padding:8px}
.postcard .media{height:250px;border-radius:12px;background:linear-gradient(135deg,#6f7259,#4a4d3f);position:relative;overflow:hidden}
.postcard .media .selfie{position:absolute;right:10px;top:10px;width:74px;height:48px;border-radius:5px;background:linear-gradient(135deg,#b9a98c,#6d6a58)}
.postcard .media .ctrls{position:absolute;left:50%;transform:translateX(-50%);bottom:12px;display:flex;gap:12px}
.postcard .media .cbtn{width:30px;height:30px;border-radius:50%;background:rgba(51,52,47,.7);display:flex;align-items:center;justify-content:center;color:var(--cream)}
.postcard .media .cbtn.end{background:var(--red)}
.postcard .body{padding:14px 6px 4px}
.postcard .goal-h{font-size:15px;color:var(--cream);font-weight:500}
.goal{display:flex;align-items:center;gap:10px;margin-top:12px}
.goal .ico{color:var(--gold);font-size:14px}
.goal .v{font-family:var(--font-display);font-weight:500;color:var(--gold);font-size:18px;min-width:48px}
.goal .l{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,249,237,.7)}

/* ---------- how it works ---------- */
.how{background:var(--olive);padding:90px 0 110px;overflow:hidden}
.how-head{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;margin-bottom:60px}
.how-head h2{font-family:var(--font-display);font-weight:500;font-size:52px;letter-spacing:-0.04em;color:var(--cream);margin:0}
.steps{position:relative;z-index:2;display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.step{cursor:pointer}
.step .card{position:relative;border-radius:var(--r-md);background:var(--glass-dark);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
            border:1px solid var(--hairline-light);height:300px;padding:18px;overflow:hidden;transition:transform .25s ease,box-shadow .25s ease}
.step:hover .card,.step.active .card{transform:translateY(-6px);box-shadow:0 30px 60px rgba(0,0,0,.28)}
.step .tgt{position:absolute;right:14px;top:14px;width:22px;height:22px;border-radius:50%;border:2px solid var(--gold);display:flex;align-items:center;justify-content:center}
.step .tgt::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--gold);opacity:0}
.step.active .tgt::after{opacity:1}
.step .illo{height:170px;border-radius:12px;background:rgba(255,249,237,.06);border:1px solid var(--hairline-light);display:flex;align-items:center;justify-content:center;color:rgba(255,249,237,.5);font-family:var(--font-mono);font-size:11px;letter-spacing:.1em}
.step .meta{margin-top:auto}
.step .num{font-family:var(--font-mono);font-size:12px;letter-spacing:.1em;color:rgba(255,249,237,.65);margin-top:14px}
.step .stitle{font-family:var(--font-display);font-weight:500;font-size:21px;letter-spacing:-0.03em;color:var(--cream);margin-top:8px;line-height:1.05}
.step .sbody{font-size:13.5px;font-weight:300;line-height:1.4;color:rgba(255,249,237,.78);margin-top:8px;
             max-height:0;opacity:0;overflow:hidden;transition:max-height .3s ease,opacity .3s ease,margin .3s ease}
.step.active .sbody{max-height:120px;opacity:1}

/* ---------- proof band ---------- */
.proof{background:var(--cream);padding:90px 0}
.pullquote{font-family:var(--font-display);font-weight:500;font-size:64px;line-height:1;letter-spacing:-0.03em;text-align:right;color:var(--ink);margin:0}
.pull-tag{text-align:right;margin-top:18px}
.statbar{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:70px}
.stat{border:1px solid var(--border);border-radius:var(--r-md);padding:26px 28px;background:var(--cream-2)}
.stat .v{font-family:var(--font-display);font-weight:500;font-size:56px;letter-spacing:-0.04em;line-height:1}
.stat .l{font-family:var(--font-mono);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--fg3);margin-top:14px}

/* ---------- reviews / philosophies ---------- */
.rev{background:var(--olive);padding:90px 0;overflow:hidden}
.rev .grid{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;gap:30px;align-items:center}
.phil h2{font-family:var(--font-display);font-weight:500;font-size:52px;letter-spacing:-0.04em;color:var(--cream);margin:0 0 26px}
.qrow{display:flex;align-items:center;justify-content:space-between;padding:18px 0;border-bottom:1px solid rgba(255,249,237,.18);cursor:pointer}
.qrow span{font-size:18px;color:var(--cream)}
.qrow .pl{color:var(--gold);font-size:22px;transition:transform .2s}
.qrow.open .pl{transform:rotate(45deg)}
.qans{font-size:14px;font-weight:300;color:rgba(255,249,237,.75);line-height:1.5;max-height:0;overflow:hidden;transition:max-height .3s ease;padding-right:30px}
.qrow.open + .qans{max-height:100px;padding-top:0;padding-bottom:6px}
.reviewcard{position:relative;border-radius:12px;background:var(--glass-dark);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
            border:1px solid var(--hairline-light);padding:26px;color:var(--cream);
            box-shadow:0 30px 70px rgba(0,0,0,.3)}
.reviewcard .top{display:flex;align-items:center;gap:12px;padding-bottom:18px;border-bottom:1px solid rgba(255,249,237,.18)}
.reviewcard .av{width:44px;height:44px;border-radius:50%;background:radial-gradient(circle at 30% 28%,#cdbb9c,#7d7768)}
.reviewcard .nm{font-size:16px;font-weight:500}
.reviewcard .fol{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;color:rgba(255,249,237,.6);margin-top:3px}
.reviewcard .stars{margin-left:auto;color:var(--gold);font-size:14px;letter-spacing:2px}
.reviewcard .quote{font-size:22px;font-weight:500;letter-spacing:-0.02em;line-height:1.25;margin-top:20px}
.reviewcard .handle{font-family:var(--font-mono);font-size:11px;color:rgba(255,249,237,.55);margin-top:18px}

/* ---------- footer CTA ---------- */
.foot{background:var(--ink);color:var(--cream);padding:100px 0 40px;overflow:hidden;position:relative}
.foot h2{font-family:var(--font-display);font-weight:500;font-size:92px;line-height:.95;letter-spacing:-0.04em;margin:0;text-align:center}
.foot .fsub{text-align:center;color:rgba(255,249,237,.7);font-size:17px;margin:24px 0 0}
.foot .fcta{display:flex;justify-content:center;margin-top:38px}
.foot .frow{display:flex;align-items:center;justify-content:space-between;margin-top:90px;padding-top:26px;border-top:1px solid rgba(255,249,237,.16)}
.foot .frow img{width:96px}
.foot .fnav{display:flex;gap:26px;font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,249,237,.6)}

/* ---------- modal ---------- */
.modal-bg{position:fixed;inset:0;z-index:100;background:rgba(27,27,24,.55);backdrop-filter:blur(6px);
          display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .25s}
.modal-bg.show{opacity:1;pointer-events:auto}
.modal{width:440px;max-width:92vw;background:var(--cream);border-radius:var(--r-lg);padding:34px;position:relative;
       box-shadow:0 50px 120px rgba(0,0,0,.4);transform:translateY(12px);transition:transform .25s}
.modal-bg.show .modal{transform:none}
.modal h3{font-family:var(--font-display);font-weight:500;font-size:30px;letter-spacing:-0.04em;margin:0}
.modal p{font-size:15px;font-weight:300;color:var(--fg2);margin:10px 0 24px}
.field{display:flex;align-items:center;height:52px;padding:0 20px;background:var(--white);border:1px solid var(--border);
       border-radius:var(--r-pill);font-family:var(--font-body);font-size:15px;width:100%;margin-bottom:12px;color:var(--ink)}
.field:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px rgba(27,27,24,.06)}
.field::placeholder{color:var(--fg3)}
.modal .close{position:absolute;right:18px;top:16px;background:none;border:none;font-size:22px;color:var(--fg3);cursor:pointer;line-height:1}
.modal .done{text-align:center;padding:14px 0}
.modal .done .tick{width:54px;height:54px;border-radius:50%;background:var(--gold);color:var(--ink);display:flex;align-items:center;justify-content:center;font-size:26px;margin:0 auto 18px}

/* reveal — content is visible by default (entrance handled by a transform-only
   animation that rests in the visible state, so it never gets stuck hidden) */
.reveal{opacity:1;transform:none}
@media (prefers-reduced-motion:no-preference){
  .reveal{animation:vrise .6s cubic-bezier(.2,.7,.2,1) both}
}
@keyframes vrise{from{transform:translateY(14px)}to{transform:none}}
