/* ============================================================
   V3 Society of Criminology — shared design & motion system
   Palette: ivory paper / deep navy / antique gold
   ============================================================ */

:root{
  /* colour */
  --ivory:#FAF7F1; --paper:#FFFFFF; --paper-2:#FCFAF5;
  --ink:#1E2532; --ink-soft:#4A5468; --ink-mute:#7A8397;
  --navy:#16294D; --navy-deep:#0F1D38; --navy-mid:#24406F; --navy-lift:#1E3A66;
  --gold:#A8842C; --gold-soft:#C9A84C; --gold-pale:#E8D9A8;
  --line:#E6E0D2; --line-soft:#EFEAE0; --wash:#F4EDDD;

  /* type */
  --serif:'Playfair Display',Georgia,'Times New Roman',serif;
  --sans:'Source Sans 3','Segoe UI',Helvetica,Arial,sans-serif;

  /* depth */
  --shadow:0 2px 6px rgba(22,41,77,.06),0 12px 32px rgba(22,41,77,.08);
  --shadow-lift:0 6px 16px rgba(22,41,77,.10),0 24px 48px rgba(22,41,77,.14);
  --shadow-deep:0 24px 60px rgba(22,41,77,.30);

  /* motion */
  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-spring:cubic-bezier(.34,1.56,.64,1);
  --dur:.7s;

  --radius:14px;
  --nav-h:0px;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:120px}
body{
  font-family:var(--sans);background:var(--ivory);color:var(--ink);
  line-height:1.65;font-size:17px;-webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:var(--navy)}
h1,h2,h3,h4{font-family:var(--serif);color:var(--navy);line-height:1.2;font-weight:700}
.container{max-width:1140px;margin:0 auto;padding:0 24px}
.container.narrow{max-width:900px}
::selection{background:var(--gold-pale);color:var(--navy-deep)}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px;border-radius:4px}

/* ============================================================
   1 · SCROLL PROGRESS
   ============================================================ */
.progressbar{
  position:fixed;top:0;left:0;height:3px;z-index:200;
  width:100%;transform:scaleX(0);transform-origin:0 50%;
  background:linear-gradient(90deg,var(--gold),var(--gold-soft),var(--gold-pale));
  box-shadow:0 0 12px rgba(201,168,76,.6);
  will-change:transform;
}

/* ============================================================
   2 · TOP BAR
   ============================================================ */
.topbar{background:var(--navy-deep);color:#CBD5E6;font-size:13.5px;letter-spacing:.04em;position:relative;overflow:hidden}
.topbar::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(100deg,transparent 20%,rgba(201,168,76,.16) 48%,transparent 76%);
  transform:translateX(-100%);animation:sheen 9s ease-in-out infinite;
}
@keyframes sheen{0%,55%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
.topbar .container{display:flex;justify-content:space-between;align-items:center;padding-top:7px;padding-bottom:7px;gap:12px;position:relative;z-index:1}
.topbar b{color:var(--gold-soft);font-weight:600}
.topbar .tb-right{white-space:nowrap}
/* rotating announcements */
.tb-rotator{position:relative;height:20px;overflow:hidden;flex:1;min-width:0}
.tb-rotator span{
  position:absolute;inset:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  opacity:0;transform:translateY(100%);transition:opacity .5s var(--ease),transform .5s var(--ease);
}
.tb-rotator span.on{opacity:1;transform:none}
.tb-rotator span.off{opacity:0;transform:translateY(-100%)}
@media(max-width:700px){.topbar .tb-right{display:none}}

/* ============================================================
   3 · HEADER / NAV
   ============================================================ */
header.site{
  position:sticky;top:0;z-index:120;background:rgba(255,255,255,.9);
  backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);
  border-bottom:1px solid var(--line);
  transition:box-shadow .35s var(--ease),background .35s var(--ease);
}
header.site.scrolled{box-shadow:0 6px 30px rgba(22,41,77,.12);background:rgba(255,255,255,.96)}
.brandbar{display:flex;align-items:center;gap:14px;padding:14px 0;transition:padding .35s var(--ease)}
header.site.scrolled .brandbar{padding:9px 0}
.crest{
  width:52px;height:52px;flex:0 0 52px;border-radius:50%;object-fit:cover;
  background:var(--navy);border:2px solid var(--gold);
  box-shadow:0 4px 14px rgba(22,41,77,.25);
  transition:transform .5s var(--ease-spring),width .35s var(--ease),height .35s var(--ease),flex-basis .35s var(--ease);
}
.brandbar:hover .crest{transform:rotate(-8deg) scale(1.06)}
header.site.scrolled .crest{width:42px;height:42px;flex-basis:42px}
.brand-name{display:block;font-family:var(--serif);font-size:21px;font-weight:800;color:var(--navy);line-height:1.15;transition:font-size .35s var(--ease)}
header.site.scrolled .brand-name{font-size:18.5px}
.brand-tag{font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);font-weight:600}
.brandlink{text-decoration:none;display:flex;align-items:center;gap:14px}

nav.main{border-top:1px solid var(--line-soft)}
nav.main ul{display:flex;list-style:none;gap:2px;flex-wrap:wrap}
nav.main a{
  display:block;padding:11px 10px;font-size:13.8px;font-weight:600;color:var(--ink-soft);
  text-decoration:none;position:relative;white-space:nowrap;transition:color .25s var(--ease)
}
nav.main a::after{
  content:"";position:absolute;left:10px;right:10px;bottom:6px;height:2px;
  background:linear-gradient(90deg,var(--gold),var(--gold-soft));border-radius:2px;
  transform:scaleX(0);transform-origin:left;transition:transform .32s var(--ease)
}
nav.main a:hover,nav.main a.active{color:var(--navy)}
nav.main a:hover::after,nav.main a.active::after{transform:scaleX(1)}

/* mobile drawer */
.navtoggle{
  display:none;background:none;border:1px solid var(--line);border-radius:10px;
  padding:9px 12px;cursor:pointer;margin-left:auto;color:var(--navy);
  transition:background .25s,border-color .25s
}
.navtoggle:hover{background:var(--wash);border-color:var(--gold-pale)}
.navtoggle .bars{display:block;width:20px;height:14px;position:relative}
.navtoggle .bars i{
  position:absolute;left:0;right:0;height:2px;background:var(--navy);border-radius:2px;
  transition:transform .35s var(--ease),opacity .25s var(--ease)
}
.navtoggle .bars i:nth-child(1){top:0}
.navtoggle .bars i:nth-child(2){top:6px}
.navtoggle .bars i:nth-child(3){top:12px}
.navtoggle[aria-expanded="true"] .bars i:nth-child(1){transform:translateY(6px) rotate(45deg)}
.navtoggle[aria-expanded="true"] .bars i:nth-child(2){opacity:0}
.navtoggle[aria-expanded="true"] .bars i:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

@media(max-width:940px){
  .navtoggle{display:block}
  nav.main{
    border-top:1px solid var(--line-soft);
    display:grid;grid-template-rows:0fr;
    transition:grid-template-rows .45s var(--ease)
  }
  nav.main.open{grid-template-rows:1fr}
  nav.main>.container{overflow:hidden}
  nav.main ul{flex-direction:column;padding:8px 0;gap:0}
  nav.main li{
    opacity:0;transform:translateX(-14px);
    transition:opacity .4s var(--ease),transform .4s var(--ease);
    transition-delay:calc(var(--i,0) * 35ms)
  }
  nav.main.open li{opacity:1;transform:none}
  nav.main a{padding:13px 4px;font-size:15px;border-bottom:1px solid var(--line-soft)}
  nav.main a::after{left:4px;bottom:9px}
}

/* ============================================================
   4 · HERO (home)
   ============================================================ */
.hero{
  position:relative;overflow:hidden;color:#EDF1F8;
  background:linear-gradient(160deg,var(--navy-deep) 0%,var(--navy) 55%,var(--navy-lift) 100%);
}
/* animated colour mesh */
.hero .mesh{position:absolute;inset:-20%;pointer-events:none}
.hero .mesh i{
  position:absolute;border-radius:50%;filter:blur(70px);opacity:.5;
  animation:meshFloat 18s ease-in-out infinite
}
.hero .mesh i:nth-child(1){width:46vw;height:46vw;left:60%;top:-6%;background:rgba(201,168,76,.30)}
.hero .mesh i:nth-child(2){width:38vw;height:38vw;left:-6%;top:48%;background:rgba(64,120,205,.30);animation-delay:-6s}
.hero .mesh i:nth-child(3){width:30vw;height:30vw;left:32%;top:62%;background:rgba(168,132,44,.22);animation-delay:-12s}
@keyframes meshFloat{
  0%,100%{transform:translate3d(0,0,0) scale(1)}
  33%{transform:translate3d(4%,-6%,0) scale(1.12)}
  66%{transform:translate3d(-5%,5%,0) scale(.94)}
}
/* drifting grid */
.hero .grid-lines{
  position:absolute;inset:0;
  background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);
  background-size:48px 48px;animation:gridDrift 40s linear infinite;
  mask-image:radial-gradient(ellipse 90% 70% at 50% 40%,#000 40%,transparent 100%);
  -webkit-mask-image:radial-gradient(ellipse 90% 70% at 50% 40%,#000 40%,transparent 100%);
}
@keyframes gridDrift{to{background-position:48px 48px}}
/* drifting motes */
.hero .motes{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.hero .motes i{
  position:absolute;width:3px;height:3px;border-radius:50%;
  background:var(--gold-soft);opacity:0;
  animation:mote linear infinite
}
@keyframes mote{
  0%{transform:translateY(30px);opacity:0}
  12%{opacity:.75}
  85%{opacity:.4}
  100%{transform:translateY(-320px);opacity:0}
}
.hero .container{position:relative;z-index:2;padding-top:104px;padding-bottom:110px;max-width:920px;text-align:center}
.hero .kicker{
  display:inline-block;font-size:13px;letter-spacing:.28em;text-transform:uppercase;
  color:var(--gold-soft);border:1px solid rgba(201,168,76,.45);
  padding:8px 18px;border-radius:999px;margin-bottom:26px;position:relative;overflow:hidden
}
.hero .kicker::before{
  content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,transparent 30%,rgba(201,168,76,.35) 50%,transparent 70%);
  transform:translateX(-100%);animation:sheen 6s ease-in-out infinite 2s
}
.hero h1{color:#fff;font-size:clamp(34px,5.6vw,60px);margin-bottom:20px;letter-spacing:-.01em}
.hero h1 .goldword{
  display:inline-block;
  background:linear-gradient(100deg,var(--gold-soft),var(--gold-pale),var(--gold-soft));
  background-size:200% auto;-webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;font-style:italic;
  animation:shimmer 6s linear infinite
}
@keyframes shimmer{to{background-position:200% center}}

/* rotating tagline */
.taglines{
  height:34px;margin:0 auto 14px;position:relative;max-width:760px;
  display:flex;align-items:center;justify-content:center
}
.taglines span{
  position:absolute;font-family:var(--serif);font-style:italic;
  font-size:clamp(17px,2.4vw,23px);color:var(--gold-pale);white-space:nowrap;
  opacity:0;transform:translateY(14px) rotateX(-40deg);
  transition:opacity .6s var(--ease),transform .6s var(--ease)
}
.taglines span.on{opacity:1;transform:none}
.taglines span.off{opacity:0;transform:translateY(-14px) rotateX(40deg)}

.hero p.lead{font-size:clamp(16px,2vw,19.5px);color:#C6D0E2;max-width:660px;margin:0 auto 36px}
.hero .cta-row{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
.hero .v3row{display:flex;justify-content:center;gap:clamp(18px,5vw,64px);margin-top:56px;flex-wrap:wrap}
.hero .v3item{text-align:center}
.hero .v3item .vword{font-family:var(--serif);font-size:20px;color:#fff;letter-spacing:.06em}
.hero .v3item .vline{width:36px;height:2px;background:var(--gold);margin:10px auto 0;transform:scaleX(0);transition:transform .9s var(--ease) .3s}
.hero .v3item.visible .vline{transform:scaleX(1)}

/* scroll cue */
.scrollcue{
  position:absolute;left:50%;bottom:22px;transform:translateX(-50%);z-index:3;
  display:flex;flex-direction:column;align-items:center;gap:8px;
  font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:rgba(201,168,76,.85);
  text-decoration:none
}
.scrollcue .mouse{width:22px;height:34px;border:1.5px solid rgba(201,168,76,.6);border-radius:12px;position:relative}
.scrollcue .mouse::after{
  content:"";position:absolute;left:50%;top:7px;width:3px;height:6px;border-radius:2px;
  background:var(--gold-soft);transform:translateX(-50%);animation:wheel 1.9s var(--ease) infinite
}
@keyframes wheel{0%{opacity:0;transform:translate(-50%,0)}30%{opacity:1}100%{opacity:0;transform:translate(-50%,12px)}}

/* ============================================================
   5 · PAGE HERO (inner pages)
   ============================================================ */
.pagehero{
  background:linear-gradient(155deg,var(--navy-deep),var(--navy) 70%,var(--navy-lift));
  color:#fff;position:relative;overflow:hidden
}
.pagehero .mesh{position:absolute;inset:-30%;pointer-events:none}
.pagehero .mesh i{position:absolute;border-radius:50%;filter:blur(70px);opacity:.45;animation:meshFloat 20s ease-in-out infinite}
.pagehero .mesh i:nth-child(1){width:40vw;height:40vw;left:66%;top:-14%;background:rgba(201,168,76,.28)}
.pagehero .mesh i:nth-child(2){width:32vw;height:32vw;left:-8%;top:34%;background:rgba(64,120,205,.26);animation-delay:-8s}
.pagehero .grid-lines{
  position:absolute;inset:0;
  background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);
  background-size:44px 44px;animation:gridDrift 44s linear infinite;
  mask-image:radial-gradient(ellipse 80% 90% at 40% 50%,#000 30%,transparent 100%);
  -webkit-mask-image:radial-gradient(ellipse 80% 90% at 40% 50%,#000 30%,transparent 100%);
}
.pagehero .container{position:relative;padding-top:72px;padding-bottom:72px;z-index:2}
.pagehero .crumb{font-size:13px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold-soft);margin-bottom:12px}
.pagehero .crumb a{color:var(--gold-soft);text-decoration:none;opacity:.8}
.pagehero .crumb a:hover{opacity:1;text-decoration:underline}
.pagehero h1{color:#fff;font-size:clamp(30px,4.6vw,46px)}
.pagehero p{color:#C6D0E2;max-width:740px;margin-top:14px;font-size:17.5px}

/* ============================================================
   6 · BUTTONS
   ============================================================ */
.btn{
  display:inline-flex;align-items:center;gap:9px;padding:13px 28px;border-radius:10px;
  font-weight:700;font-size:15.5px;text-decoration:none;letter-spacing:.03em;
  position:relative;overflow:hidden;border:none;cursor:pointer;font-family:var(--sans);
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),background .3s var(--ease),color .3s
}
.btn::before{
  content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,transparent 35%,rgba(255,255,255,.42) 50%,transparent 65%);
  transform:translateX(-120%);transition:transform .7s var(--ease)
}
.btn:hover::before{transform:translateX(120%)}
.btn>*{position:relative;z-index:1}
.btn-gold{background:linear-gradient(135deg,var(--gold-soft),var(--gold));color:#1B1608;box-shadow:0 8px 24px rgba(168,132,44,.35)}
.btn-gold:hover{transform:translateY(-3px);box-shadow:0 16px 36px rgba(168,132,44,.48)}
.btn-ghost{border:1.5px solid rgba(255,255,255,.5);color:#fff}
.btn-ghost:hover{background:rgba(255,255,255,.12);transform:translateY(-3px)}
.btn-navy{background:linear-gradient(135deg,var(--navy),var(--navy-mid));color:#fff}
.btn-navy:hover{transform:translateY(-3px);box-shadow:0 16px 36px rgba(22,41,77,.35)}
.btn-outline{border:1.5px solid var(--line);color:var(--navy);background:var(--paper)}
.btn-outline:hover{border-color:var(--gold);background:var(--wash);transform:translateY(-3px)}
.btn .arrow{transition:transform .3s var(--ease)}
.btn:hover .arrow{transform:translateX(4px)}

/* ============================================================
   7 · SECTIONS & HEADINGS
   ============================================================ */
section.block{padding:84px 0;position:relative}
section.block.tight{padding:56px 0}
section.block.alt{background:var(--paper);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
section.block.wash{background:linear-gradient(180deg,var(--wash),var(--ivory))}
.sec-head{max-width:780px;margin-bottom:44px}
.sec-head.center{margin-left:auto;margin-right:auto;text-align:center}
.eyebrow{
  font-size:12.5px;font-weight:700;letter-spacing:.26em;text-transform:uppercase;
  color:var(--gold);margin-bottom:10px;display:flex;align-items:center;gap:10px
}
.sec-head.center .eyebrow{justify-content:center}
.eyebrow::before,.eyebrow::after{content:"";height:1px;width:26px;background:linear-gradient(90deg,transparent,var(--gold))}
.eyebrow::after{background:linear-gradient(90deg,var(--gold),transparent)}
.sec-head:not(.center) .eyebrow::before{display:none}
.sec-head h2{font-size:clamp(26px,3.6vw,38px);margin-bottom:14px}
.sec-head p{color:var(--ink-soft)}
.rule{width:56px;height:3px;background:linear-gradient(90deg,var(--gold),var(--gold-soft));border-radius:2px;margin-top:16px;transform-origin:left;transform:scaleX(0);transition:transform .8s var(--ease) .15s}
.sec-head.center .rule{margin-left:auto;margin-right:auto;transform-origin:center}
.reveal.visible .rule,.visible .rule,.rule.visible{transform:scaleX(1)}
.prose p{margin-bottom:18px;color:var(--ink-soft);font-size:17.5px}
.prose p strong{color:var(--ink)}
.prose p:last-child{margin-bottom:0}
.twocol{display:grid;grid-template-columns:1.15fr .85fr;gap:56px;align-items:start}
.twocol.even{grid-template-columns:1fr 1fr}
@media(max-width:880px){.twocol{grid-template-columns:1fr;gap:44px}}

/* ============================================================
   8 · MARQUEE (trust / disciplines strip)
   ============================================================ */
.marquee{
  overflow:hidden;position:relative;padding:26px 0;
  background:var(--paper);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
}
.marquee .track{display:flex;width:max-content;animation:marquee 42s linear infinite}
.marquee:hover .track{animation-play-state:paused}
.marquee.rev .track{animation-direction:reverse}
@keyframes marquee{to{transform:translateX(-50%)}}
.marquee .item{
  display:flex;align-items:center;gap:10px;padding:9px 22px;margin:0 9px;
  border:1px solid var(--line);border-radius:999px;background:var(--paper-2);
  font-size:14px;font-weight:600;color:var(--ink-soft);white-space:nowrap;
  transition:border-color .3s,color .3s,background .3s
}
.marquee .item:hover{border-color:var(--gold-pale);color:var(--navy);background:var(--wash)}
.marquee .item .dot{width:7px;height:7px;border-radius:50%;background:linear-gradient(135deg,var(--gold-soft),var(--gold));flex:0 0 7px}
.marquee-label{
  text-align:center;font-size:11.5px;letter-spacing:.24em;text-transform:uppercase;
  color:var(--ink-mute);padding:22px 24px 16px;background:var(--paper);
  border-top:1px solid var(--line-soft)
}
.marquee-label+.marquee{border-top:none;padding-top:0}

/* ============================================================
   9 · CARDS
   ============================================================ */
.cards{display:grid;gap:22px}
.cards.c2{grid-template-columns:repeat(2,1fr)}
.cards.c3{grid-template-columns:repeat(3,1fr)}
.cards.c4{grid-template-columns:repeat(4,1fr)}
.cards.c1{grid-template-columns:1fr}
@media(max-width:940px){.cards.c3,.cards.c4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.cards.c2,.cards.c3,.cards.c4{grid-template-columns:1fr}}

.card{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:30px 28px;box-shadow:var(--shadow);position:relative;overflow:hidden;
  transition:transform .4s var(--ease),box-shadow .4s var(--ease),border-color .4s
}
/* cursor spotlight */
.card::before{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:0;
  background:radial-gradient(340px circle at var(--mx,50%) var(--my,50%),rgba(201,168,76,.13),transparent 65%);
  transition:opacity .4s var(--ease)
}
.card:hover::before{opacity:1}
/* gold top edge */
.card::after{
  content:"";position:absolute;left:0;right:0;top:0;height:3px;
  background:linear-gradient(90deg,var(--gold),var(--gold-soft));
  transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease)
}
.card:hover::after{transform:scaleX(1)}
.card:hover{transform:translateY(-7px);box-shadow:var(--shadow-lift);border-color:#D8CBA6}
.card>*{position:relative;z-index:1}
.card .icon{
  width:54px;height:54px;border-radius:13px;
  background:linear-gradient(140deg,var(--wash),#EAE0C6);
  display:flex;align-items:center;justify-content:center;margin-bottom:18px;color:var(--gold);
  transition:transform .45s var(--ease-spring),background .4s
}
.card:hover .icon{transform:translateY(-3px) rotate(-6deg) scale(1.06);background:linear-gradient(140deg,#F7F0DF,var(--gold-pale))}
.card .icon svg{width:26px;height:26px}
.card h3{font-size:20px;margin-bottom:10px}
.card p{color:var(--ink-soft);font-size:15.5px}
.card.linkcard{text-decoration:none;display:block}
.card .more{
  display:inline-flex;align-items:center;gap:6px;margin-top:16px;font-size:13.5px;
  font-weight:700;color:var(--gold);letter-spacing:.06em;text-transform:uppercase
}
.card .more::after{content:"\2192";transition:transform .3s var(--ease)}
.card:hover .more::after{transform:translateX(5px)}
/* numbered card */
.card .num-badge{
  position:absolute;right:20px;top:16px;font-family:var(--serif);font-size:46px;
  font-weight:800;color:var(--line);line-height:1;z-index:0;
  transition:color .4s var(--ease),transform .4s var(--ease)
}
.card:hover .num-badge{color:var(--gold-pale);transform:scale(1.08)}

/* pillar (why it matters) */
.pillar{
  display:flex;gap:18px;align-items:flex-start;padding:24px 26px;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);transition:transform .4s var(--ease),box-shadow .4s var(--ease),border-color .4s
}
.pillar:hover{transform:translateX(7px);box-shadow:var(--shadow-lift);border-color:#D8CBA6}
.pillar .pnum{
  flex:0 0 44px;width:44px;height:44px;border-radius:12px;
  background:linear-gradient(135deg,var(--navy),var(--navy-mid));color:var(--gold-soft);
  font-family:var(--serif);font-size:18px;font-weight:800;
  display:flex;align-items:center;justify-content:center;box-shadow:0 6px 16px rgba(22,41,77,.28)
}
.pillar h3{font-size:18px;margin-bottom:5px}
.pillar p{font-size:15px;color:var(--ink-soft)}

/* definition block */
.defblock{
  background:var(--paper);border:1px solid var(--line);border-left:5px solid var(--gold);
  border-radius:var(--radius);padding:38px 40px;box-shadow:var(--shadow);position:relative;overflow:hidden
}
.defblock::before{
  content:"\201C";position:absolute;right:22px;top:-14px;font-family:var(--serif);
  font-size:150px;color:var(--line-soft);line-height:1;pointer-events:none
}
.defblock .defterm{font-family:var(--serif);font-size:26px;color:var(--navy);margin-bottom:8px}
.defblock .defterm em{color:var(--gold);font-size:15px;font-style:italic;font-family:var(--sans);letter-spacing:.08em;text-transform:uppercase;margin-left:10px}
.defblock p{color:var(--ink-soft);font-size:17.5px;position:relative;z-index:1}
@media(max-width:620px){.defblock{padding:28px 24px}}

/* value cards */
.valuecard{text-align:center;padding:38px 28px}
.valuecard .vletter{font-family:var(--serif);font-size:44px;color:var(--gold);line-height:1;margin-bottom:12px}
.valuecard h3{font-size:22px}

/* ============================================================
   10 · STATS
   ============================================================ */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;text-align:center}
.stats.s3{grid-template-columns:repeat(3,1fr)}
@media(max-width:780px){.stats,.stats.s3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:460px){.stats,.stats.s3{grid-template-columns:1fr}}
.stat{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:32px 16px;box-shadow:var(--shadow);position:relative;overflow:hidden;
  transition:transform .4s var(--ease),box-shadow .4s var(--ease)
}
.stat::after{
  content:"";position:absolute;left:50%;bottom:0;width:0;height:3px;transform:translateX(-50%);
  background:linear-gradient(90deg,var(--gold),var(--gold-soft));transition:width .5s var(--ease)
}
.stat:hover{transform:translateY(-6px);box-shadow:var(--shadow-lift)}
.stat:hover::after{width:70%}
.stat .num{font-family:var(--serif);font-size:clamp(34px,4.4vw,46px);font-weight:800;color:var(--navy);line-height:1.1}
.stat .num .suffix{color:var(--gold);font-size:.68em}
.stat .lbl{font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin-top:8px}

/* ============================================================
   11 · LISTS
   ============================================================ */
.checklist{list-style:none;display:grid;gap:14px}
.checklist li{position:relative;padding-left:40px;color:var(--ink-soft);font-size:16.5px}
.checklist li::before{
  content:"";position:absolute;left:0;top:2px;width:24px;height:24px;border-radius:50%;
  background:linear-gradient(135deg,var(--gold-soft),var(--gold));
  box-shadow:0 3px 8px rgba(168,132,44,.35);transition:transform .35s var(--ease-spring)
}
.checklist li::after{
  content:"";position:absolute;left:8px;top:8px;width:7px;height:11px;
  border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(45deg)
}
.checklist li:hover::before{transform:scale(1.14)}
.checklist li strong{color:var(--ink)}

.objectives{list-style:none;display:grid;gap:16px;counter-reset:obj}
.objectives li{
  counter-increment:obj;background:var(--paper);border:1px solid var(--line);
  border-left:4px solid var(--gold);border-radius:12px;padding:22px 26px 22px 78px;
  position:relative;color:var(--ink-soft);box-shadow:var(--shadow);
  transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-left-color .35s
}
.objectives li:hover{transform:translateX(8px);box-shadow:var(--shadow-lift);border-left-color:var(--gold-soft)}
.objectives li::before{
  content:counter(obj,decimal-leading-zero);position:absolute;left:24px;top:50%;
  transform:translateY(-50%);font-family:var(--serif);font-size:26px;font-weight:800;color:var(--gold);
  transition:transform .35s var(--ease-spring)
}
.objectives li:hover::before{transform:translateY(-50%) scale(1.12)}

/* chips */
.chips{display:flex;flex-wrap:wrap;gap:10px}
.chips.center{justify-content:center}
.chip{
  background:var(--wash);border:1px solid #E2D8BE;color:#6B5A25;font-size:14px;font-weight:600;
  padding:8px 17px;border-radius:999px;
  transition:transform .3s var(--ease-spring),background .3s,box-shadow .3s,color .3s
}
.chip:hover{transform:translateY(-3px) scale(1.04);background:var(--gold-pale);color:var(--navy);box-shadow:0 8px 18px rgba(168,132,44,.22)}

.badges{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0}
.badge{
  font-size:12.5px;font-weight:700;letter-spacing:.06em;padding:8px 15px;border-radius:999px;
  background:var(--wash);color:#6B5A25;border:1px solid #E2D8BE;
  transition:transform .3s var(--ease-spring),background .3s
}
.badge:hover{transform:translateY(-2px);background:var(--gold-pale)}

/* ============================================================
   12 · TABLES
   ============================================================ */
.tablewrap{overflow-x:auto;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
table.styled{width:100%;border-collapse:collapse;min-width:560px}
table.styled.compact{min-width:0}
table.styled th{
  background:var(--navy);color:#EDEBDF;font-size:13px;letter-spacing:.1em;
  text-transform:uppercase;text-align:left;padding:15px 20px;position:relative
}
table.styled td{padding:16px 20px;border-top:1px solid var(--line-soft);color:var(--ink-soft);font-size:15.5px;vertical-align:top;transition:background .25s}
table.styled tbody tr{transition:background .25s}
table.styled tbody tr:nth-child(even) td{background:var(--paper-2)}
table.styled tbody tr:hover td{background:var(--wash)}
table.styled td:first-child{font-weight:700;color:var(--navy)}
.tba{color:#9A8F76;font-style:italic;font-size:14.5px}

/* ============================================================
   13 · TIMELINE / METHODOLOGY
   ============================================================ */
.flow{position:relative;display:grid;gap:20px}
.flow::before{
  content:"";position:absolute;left:27px;top:12px;bottom:12px;width:2px;background:var(--line)
}
.flow .flowline{
  position:absolute;left:27px;top:12px;width:2px;
  background:linear-gradient(180deg,var(--gold),var(--gold-soft));
  height:0;transition:height 1.4s var(--ease);border-radius:2px
}
.flow.visible .flowline{height:calc(100% - 24px)}
.flowstep{display:flex;gap:24px;align-items:flex-start;position:relative;z-index:1}
.flowstep .dot{
  flex:0 0 56px;width:56px;height:56px;border-radius:50%;
  background:linear-gradient(135deg,var(--navy),var(--navy-mid));color:var(--gold-soft);
  font-family:var(--serif);font-size:20px;font-weight:800;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 8px 20px rgba(22,41,77,.3);border:3px solid var(--ivory);
  transition:transform .45s var(--ease-spring)
}
.flowstep:hover .dot{transform:scale(1.09) rotate(-5deg)}
.flowstep .fbody{
  flex:1;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:22px 26px;box-shadow:var(--shadow);
  transition:transform .4s var(--ease),box-shadow .4s var(--ease),border-color .4s
}
.flowstep:hover .fbody{transform:translateX(6px);box-shadow:var(--shadow-lift);border-color:#D8CBA6}
.flowstep h4{font-size:19px;margin-bottom:6px}
.flowstep p{font-size:15.5px;color:var(--ink-soft)}
@media(max-width:560px){
  .flow::before,.flow .flowline{left:20px}
  .flowstep{gap:16px}
  .flowstep .dot{flex-basis:42px;width:42px;height:42px;font-size:16px}
}

/* horizontal steps */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;counter-reset:step}
@media(max-width:940px){.steps{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.steps{grid-template-columns:1fr}}
.step{
  counter-increment:step;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:28px 24px;position:relative;box-shadow:var(--shadow);overflow:hidden;
  transition:transform .4s var(--ease),box-shadow .4s var(--ease),border-color .4s
}
.step::after{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--gold),var(--gold-soft));
  transform:scaleY(0);transform-origin:top;transition:transform .45s var(--ease)
}
.step:hover::after{transform:scaleY(1)}
.step:hover{transform:translateY(-7px);box-shadow:var(--shadow-lift);border-color:#D8CBA6}
.step::before{
  content:counter(step,decimal-leading-zero);display:flex;align-items:center;justify-content:center;
  width:46px;height:46px;border-radius:50%;
  background:linear-gradient(135deg,var(--navy),var(--navy-mid));color:var(--gold-soft);
  font-family:var(--serif);font-size:18px;font-weight:800;margin-bottom:16px;
  box-shadow:0 6px 14px rgba(22,41,77,.3);transition:transform .45s var(--ease-spring)
}
.step:hover::before{transform:rotate(-8deg) scale(1.07)}
.step h4{font-size:17px;margin-bottom:8px}
.step p{font-size:14.5px;color:var(--ink-soft)}

/* ============================================================
   14 · ACCORDION (FAQ)
   ============================================================ */
.accordion{display:grid;gap:14px;max-width:880px;margin:0 auto}
.acc{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);overflow:hidden;transition:border-color .35s,box-shadow .35s
}
.acc.open{border-color:#D8CBA6;box-shadow:var(--shadow-lift)}
.acc button.acc-q{
  width:100%;display:flex;align-items:center;gap:16px;text-align:left;cursor:pointer;
  background:none;border:none;padding:22px 26px;font-family:var(--serif);font-size:18.5px;
  font-weight:700;color:var(--navy);line-height:1.35;transition:color .3s
}
.acc button.acc-q:hover{color:var(--gold)}
.acc .acc-ico{
  flex:0 0 30px;width:30px;height:30px;border-radius:50%;margin-left:auto;
  border:1.5px solid var(--gold-pale);position:relative;transition:background .35s,transform .45s var(--ease),border-color .35s
}
.acc .acc-ico::before,.acc .acc-ico::after{
  content:"";position:absolute;left:50%;top:50%;background:var(--gold);border-radius:2px;
  transform:translate(-50%,-50%);transition:transform .4s var(--ease),background .35s
}
.acc .acc-ico::before{width:12px;height:2px}
.acc .acc-ico::after{width:2px;height:12px}
.acc.open .acc-ico{background:var(--gold);border-color:var(--gold);transform:rotate(180deg)}
.acc.open .acc-ico::before,.acc.open .acc-ico::after{background:#fff}
.acc.open .acc-ico::after{transform:translate(-50%,-50%) scaleY(0)}
.acc .acc-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s var(--ease)}
.acc.open .acc-a{grid-template-rows:1fr}
.acc .acc-a>div{overflow:hidden}
.acc .acc-a p{padding:0 26px 24px;color:var(--ink-soft);font-size:16px}
.acc .acc-a p+p{padding-top:0}

/* ============================================================
   15 · INTERACTIVE PICKER
   ============================================================ */
.picker{
  background:var(--paper);border:1px solid var(--line);border-radius:18px;
  padding:38px 40px;box-shadow:var(--shadow);max-width:880px;margin:0 auto;position:relative;overflow:hidden
}
.picker::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(600px 300px at 100% 0%,rgba(201,168,76,.08),transparent 70%)
}
.picker>*{position:relative;z-index:1}
.picker .pq{font-family:var(--serif);font-size:22px;color:var(--navy);margin-bottom:6px}
.picker .pstep{font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin-bottom:14px}
.picker .popts{display:grid;gap:12px;margin-top:22px}
.picker .popt{
  display:flex;align-items:center;gap:14px;text-align:left;width:100%;cursor:pointer;
  background:var(--paper-2);border:1.5px solid var(--line);border-radius:12px;
  padding:16px 20px;font-family:var(--sans);font-size:16px;color:var(--ink);
  transition:transform .3s var(--ease),border-color .3s,background .3s,box-shadow .3s
}
.picker .popt:hover{transform:translateX(6px);border-color:var(--gold);background:var(--wash);box-shadow:0 8px 20px rgba(168,132,44,.14)}
.picker .popt .pmark{
  flex:0 0 26px;width:26px;height:26px;border-radius:50%;border:1.5px solid var(--gold-pale);
  display:flex;align-items:center;justify-content:center;color:var(--gold);
  font-size:13px;font-weight:700;transition:background .3s,color .3s
}
.picker .popt:hover .pmark{background:var(--gold);color:#fff;border-color:var(--gold)}
.picker .pprog{height:4px;background:var(--line-soft);border-radius:2px;overflow:hidden;margin-bottom:26px}
.picker .pprog i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--gold),var(--gold-soft));transition:width .5s var(--ease)}
.picker .presult{display:none;animation:pop .5s var(--ease-spring) both;text-align:center}
.picker .presult.show{display:block}
.picker .presult .rtag{
  display:inline-block;font-size:12px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--gold);border:1px solid var(--gold-pale);padding:7px 16px;border-radius:999px;margin-bottom:16px
}
.picker .presult h3{font-size:30px;margin-bottom:12px}
.picker .presult p{color:var(--ink-soft);max-width:560px;margin:0 auto 24px}
.picker .pretry{
  background:none;border:none;cursor:pointer;font-family:var(--sans);font-size:14px;
  font-weight:700;color:var(--ink-mute);text-decoration:underline;margin-top:18px;letter-spacing:.03em
}
.picker .pretry:hover{color:var(--gold)}
@keyframes pop{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
@media(max-width:620px){.picker{padding:26px 22px}}

/* ============================================================
   16 · JOURNAL FEATURE
   ============================================================ */
.journal{display:grid;grid-template-columns:300px 1fr;gap:56px;align-items:center}
@media(max-width:840px){.journal{grid-template-columns:1fr;justify-items:center}}
.jcover{
  width:280px;aspect-ratio:3/4;border-radius:10px;
  background:linear-gradient(160deg,var(--navy-deep),var(--navy) 60%,var(--navy-lift));
  color:#fff;padding:30px 26px;display:flex;flex-direction:column;
  box-shadow:var(--shadow-deep);position:relative;overflow:hidden;
  transform:rotate(-2deg);transition:transform .55s var(--ease)
}
.jcover:hover{transform:rotate(0) scale(1.04)}
.jcover::before{content:"";position:absolute;inset:0;background:radial-gradient(240px 200px at 80% 15%,rgba(201,168,76,.28),transparent 70%)}
.jcover::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,transparent 35%,rgba(255,255,255,.16) 50%,transparent 65%);
  transform:translateX(-120%);transition:transform .9s var(--ease)
}
.jcover:hover::after{transform:translateX(120%)}
.jcover>*{position:relative;z-index:1}
.jcover .jtop{font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold-soft)}
.jcover .jname{font-family:var(--serif);font-size:36px;line-height:1.1;margin-top:14px}
.jcover .jname em{color:var(--gold-soft)}
.jcover .jbar{width:44px;height:3px;background:var(--gold);margin:18px 0}
.jcover .jsub{font-size:12.5px;color:#B9C5DA;line-height:1.6}
.jcover .jfoot{margin-top:auto;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#8FA0BC}

/* ============================================================
   17 · CTA BAND
   ============================================================ */
.ctaband{
  background:linear-gradient(150deg,var(--navy-deep),var(--navy) 65%,var(--navy-lift));
  color:#fff;position:relative;overflow:hidden
}
.ctaband .mesh{position:absolute;inset:-40%;pointer-events:none}
.ctaband .mesh i{position:absolute;border-radius:50%;filter:blur(70px);opacity:.45;animation:meshFloat 22s ease-in-out infinite}
.ctaband .mesh i:nth-child(1){width:34vw;height:34vw;left:8%;top:-10%;background:rgba(201,168,76,.28)}
.ctaband .mesh i:nth-child(2){width:28vw;height:28vw;left:64%;top:36%;background:rgba(64,120,205,.26);animation-delay:-9s}
.ctaband .container{position:relative;z-index:2;padding:76px 24px;text-align:center;max-width:840px}
.ctaband h2{color:#fff;font-size:clamp(26px,3.8vw,38px);margin-bottom:14px}
.ctaband p{color:#C6D0E2;margin-bottom:30px;font-size:17.5px}
.ctaband .cta-row{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}

/* ============================================================
   18 · NOTE STRIP
   ============================================================ */
.notestrip{
  background:#FBF6E9;border:1px solid #EADFC2;border-radius:12px;padding:18px 24px;
  color:#6B5A25;font-size:14.5px;position:relative;overflow:hidden
}
.notestrip::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--gold),var(--gold-soft))
}
.notestrip a{color:#6B5A25;font-weight:700}

/* ============================================================
   19 · FOOTER
   ============================================================ */
footer.site{background:var(--navy-deep);color:#A9B6CC;font-size:14.5px;position:relative;overflow:hidden}
footer.site::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(700px 300px at 80% 0%,rgba(201,168,76,.10),transparent 70%)
}
footer.site .container{position:relative;z-index:1}
footer.site .cols{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:36px;padding:64px 0 44px}
@media(max-width:880px){footer.site .cols{grid-template-columns:1fr 1fr}}
@media(max-width:560px){footer.site .cols{grid-template-columns:1fr}}
footer.site h4{color:#fff;font-size:16px;margin-bottom:16px}
footer.site ul{list-style:none;display:grid;gap:9px}
footer.site a{color:#A9B6CC;text-decoration:none;position:relative;transition:color .28s var(--ease),padding-left .28s var(--ease)}
footer.site a::before{
  content:"\2192";position:absolute;left:-14px;opacity:0;color:var(--gold-soft);
  transition:opacity .28s var(--ease),left .28s var(--ease)
}
footer.site li>a:hover{color:var(--gold-soft);padding-left:6px}
footer.site li>a:hover::before{opacity:1;left:-10px}
footer .fbrand{font-family:var(--serif);font-size:21px;color:#fff;margin-bottom:10px}
footer .fbrand b{color:var(--gold-soft)}
footer .legal{
  border-top:1px solid rgba(255,255,255,.12);padding:18px 0;display:flex;
  justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:13px;color:#7E8CA4
}

/* ============================================================
   20 · BACK TO TOP
   ============================================================ */
.totop{
  position:fixed;right:26px;bottom:26px;width:50px;height:50px;border-radius:50%;
  border:none;cursor:pointer;background:linear-gradient(135deg,var(--navy),var(--navy-mid));
  color:var(--gold-soft);font-size:20px;box-shadow:0 10px 26px rgba(22,41,77,.38);
  opacity:0;transform:translateY(16px) scale(.9);pointer-events:none;
  transition:opacity .4s var(--ease),transform .4s var(--ease-spring);z-index:130;
  display:flex;align-items:center;justify-content:center
}
.totop.show{opacity:1;transform:none;pointer-events:auto}
.totop:hover{transform:translateY(-4px) scale(1.05)}

/* ============================================================
   21 · FORMS
   ============================================================ */
.formcard{
  background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:44px;
  box-shadow:var(--shadow);max-width:880px;margin:0 auto
}
@media(max-width:640px){.formcard{padding:26px 20px}}
.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media(max-width:640px){.formgrid{grid-template-columns:1fr}}
.field{display:flex;flex-direction:column;gap:7px;position:relative}
.field.full{grid-column:1/-1}
.field label{font-size:13.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--navy)}
.field label .req{color:#B4432F}
.field input,.field select,.field textarea{
  font-family:var(--sans);font-size:15.5px;color:var(--ink);background:var(--paper-2);
  border:1.5px solid var(--line);border-radius:10px;padding:13px 15px;outline:none;
  transition:border-color .28s var(--ease),box-shadow .28s var(--ease),background .28s,transform .28s var(--ease)
}
.field input:focus,.field select:focus,.field textarea:focus{
  border-color:var(--gold);box-shadow:0 0 0 4px rgba(168,132,44,.14);background:var(--paper);transform:translateY(-2px)
}
.field textarea{resize:vertical;min-height:100px}
.formsec{
  font-family:var(--serif);font-size:21px;color:var(--navy);margin:36px 0 20px;
  padding-bottom:12px;border-bottom:2px solid var(--line-soft);position:relative
}
.formsec::after{content:"";position:absolute;left:0;bottom:-2px;width:56px;height:2px;background:var(--gold)}
.formsec:first-child{margin-top:0}
.consent{
  display:flex;gap:12px;align-items:flex-start;background:#FBF6E9;border:1px solid #EADFC2;
  border-radius:12px;padding:18px 20px;font-size:14.5px;color:#6B5A25;cursor:pointer;
  transition:border-color .3s,background .3s
}
.consent:hover{border-color:var(--gold-pale)}
.consent input{width:18px;height:18px;margin-top:2px;accent-color:var(--gold);flex:0 0 18px}
.form-actions{display:flex;gap:14px;align-items:center;margin-top:30px;flex-wrap:wrap}
.success{display:none;text-align:center;padding:48px 24px;animation:pop .5s var(--ease-spring) both}
.success.show{display:block}
.success .tick{
  width:78px;height:78px;border-radius:50%;margin:0 auto 22px;
  background:linear-gradient(135deg,var(--gold-soft),var(--gold));
  display:flex;align-items:center;justify-content:center;box-shadow:0 14px 34px rgba(168,132,44,.4);
  animation:tickPulse 2.4s var(--ease) infinite
}
@keyframes tickPulse{0%,100%{box-shadow:0 14px 34px rgba(168,132,44,.4)}50%{box-shadow:0 14px 44px rgba(168,132,44,.62)}}
.success .tick::after{content:"";width:18px;height:32px;border:solid #fff;border-width:0 4px 4px 0;transform:rotate(45deg);margin-top:-6px}
.success h3{font-size:28px;margin-bottom:12px}
.success p{color:var(--ink-soft);max-width:540px;margin:0 auto}

/* ============================================================
   22 · MOTION PRIMITIVES
   ============================================================ */
.reveal{opacity:0;transform:translateY(30px);transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease)}
.reveal-l{opacity:0;transform:translateX(-36px);transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease)}
.reveal-r{opacity:0;transform:translateX(36px);transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease)}
.reveal-sc{opacity:0;transform:scale(.93);transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease)}
.reveal-cl{clip-path:inset(0 100% 0 0);transition:clip-path 1s var(--ease)}
.reveal.visible,.reveal-l.visible,.reveal-r.visible,.reveal-sc.visible{opacity:1;transform:none}
.reveal-cl.visible{clip-path:inset(0 0 0 0)}

/* stagger: JS sets --i on children of [data-stagger] */
[data-stagger]>*{transition-delay:calc(var(--i,0) * var(--stag,90ms))}
.d1{transition-delay:.1s}.d2{transition-delay:.2s}.d3{transition-delay:.3s}.d4{transition-delay:.4s}.d5{transition-delay:.5s}

/* split-text word reveal */
.split .w{display:inline-block;overflow:hidden;vertical-align:top}
.split .w>span{
  display:inline-block;transform:translateY(110%);opacity:0;
  transition:transform .8s var(--ease-out),opacity .8s var(--ease-out);
  transition-delay:calc(var(--i,0) * 55ms)
}
.split.visible .w>span{transform:none;opacity:1}

/* parallax: JS sets --py */
[data-parallax]{transform:translate3d(0,var(--py,0px),0);will-change:transform}

/* tilt: JS sets --rx/--ry. Hover lift must compose with the tilt, not replace it. */
[data-tilt]{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transform-style:preserve-3d}
.card[data-tilt]:hover{transform:perspective(900px) translateY(-7px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))}

/* ============================================================
   23 · REDUCED MOTION
   ============================================================ */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important
  }
  html{scroll-behavior:auto}
  .reveal,.reveal-l,.reveal-r,.reveal-sc{opacity:1!important;transform:none!important}
  .reveal-cl{clip-path:none!important}
  .split .w>span{transform:none!important;opacity:1!important}
  .rule{transform:scaleX(1)!important}
  .hero .v3item .vline{transform:scaleX(1)!important}
  .flow .flowline{height:calc(100% - 24px)!important}
  [data-parallax],[data-tilt]{transform:none!important}
  .marquee .track{animation:none!important}
  .hero .motes{display:none}
}
