/* CoreStruct Widgets — shared tokens and components (scoped to .csw). */
html{scroll-behavior:smooth;scroll-padding-top:100px}
.csw{
  --forest:#283A2B; --sage:#5A7C6C; --sage-dk:#4A6A5B; --mint:#E8F4F1; --gold:#D4B81D;
  --header:#E9EBEB; --text:#1D1E20; --ink:#0D141A; --white:#FFFFFF; --muted:#B8C0CC;
  --f-head:"Rubik",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;
  --f-accent:"Lato","Segoe UI",Arial,sans-serif;
  --f-nav:"Open Sans","Segoe UI",Arial,sans-serif;
  --fs-h1:clamp(33.6px,4.6vw,56px); --fs-h2:clamp(28px,3.2vw,40px); --fs-h3:22px; --fs-body:17px; --fs-small:14px;
  --pad-section:clamp(64px,9vw,112px); --gutter:clamp(16px,4vw,40px); --max:1200px;
  --radius:12px; --radius-btn:8px;
  color-scheme:light;
  position:relative;margin:0;
  background-color:var(--white);color:var(--text);
  font:400 var(--fs-body)/1.65 var(--f-head);letter-spacing:normal;text-transform:none;text-align:left;
  -webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;
}
.csw,.csw *,.csw *::before,.csw *::after{box-sizing:border-box}
/* Slide-in reveals and edge decorations must never widen the page on phones (clip keeps sticky children working). */
.csw:not(.csw-header){overflow-x:clip}
.csw img{max-width:100%;display:block}
.csw h1,.csw h2,.csw h3{margin:0;padding:0;text-wrap:balance;color:var(--text)}
.csw p{margin:0}
/* Selectable tags: h4-h6 / div / span behave like the element they replace (class rules set the look). */
.csw h4,.csw h5,.csw h6{margin:0;padding:0;text-wrap:balance;color:var(--text);font-size:inherit;font-weight:inherit;line-height:inherit;font-family:inherit;text-transform:none;letter-spacing:normal}
.csw figure{margin:0}
.csw a{color:inherit}
.csw :focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.csw .wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--gutter)}
.csw-sec{padding-block:var(--pad-section)}

/* eyebrow + section heading */
.csw .eyebrow{font:700 var(--fs-small)/1 var(--f-accent);letter-spacing:.12em;text-transform:uppercase;color:var(--sage);display:inline-flex;align-items:center;gap:10px;padding:10px 16px;border-radius:999px;background:var(--white);border:1px solid rgba(90,124,108,.25)}
.csw .eyebrow::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--gold)}
.csw .h2{font:400 clamp(32px,4vw,52px)/1.15 var(--f-head);letter-spacing:-.01em}
.csw .h2 .gold{font-style:normal;color:var(--gold)}
.csw .sec-head{display:flex;flex-direction:column;gap:14px;align-items:center;text-align:center;margin-bottom:clamp(40px,6vw,72px)}
.csw .sec-intro{display:block;max-width:60ch;color:var(--text);font:400 18px/1.65 var(--f-head)}
.csw .h2{display:block}
.csw .sec-head .h2::after,.csw .gal-head .h2::after{content:"";display:block;width:56px;height:3px;background:var(--gold);margin:18px auto 0}

/* buttons */
.csw .btn{display:inline-flex;align-items:center;gap:10px;background:var(--sage);color:var(--white);font:400 16px/1 var(--f-head);padding:15px 26px;border-radius:var(--radius-btn);border:0;text-decoration:none;cursor:pointer;text-transform:none;letter-spacing:normal;min-height:0;transition:background .25s,color .25s,transform .25s,box-shadow .25s,border-color .25s}
.csw .btn:hover,.csw .btn:focus{color:var(--white)}
.csw .btn:hover{background:var(--forest);transform:translateY(-2px);box-shadow:0 10px 22px -10px rgba(40,58,43,.6),0 0 0 3px rgba(212,184,29,.35)}
.csw .btn svg{width:18px;height:18px}
.csw .pill{display:inline-flex;align-items:center;text-decoration:none;gap:2px;transition:transform .25s}
.csw .pill > span{display:inline-flex;align-items:center;gap:10px;background:var(--sage);color:var(--white);font:400 16px/1 var(--f-head);padding:15px 24px;border-radius:999px;white-space:nowrap;font-variant-numeric:tabular-nums;transition:background .25s,color .25s,transform .25s,box-shadow .25s,border-color .25s}
.csw .pill > i{width:48px;height:48px;border-radius:50%;background:var(--sage);color:var(--white);display:grid;place-items:center;font-style:normal;transition:background .25s,color .25s,transform .25s,box-shadow .25s,border-color .25s}
.csw .pill svg{width:18px;height:18px}
.csw .pill:hover{transform:translateY(-2px)}
.csw .pill:hover > span{background:var(--forest);color:var(--white);box-shadow:0 10px 22px -10px rgba(40,58,43,.6)}
.csw .pill:hover > i{background:var(--gold);color:var(--ink);transform:translateX(4px) rotate(-45deg)}
.csw .pill.light > span,.csw .pill.light > i{background:var(--white);color:var(--ink)}
.csw .pill.light:hover > span{background:var(--gold);color:var(--ink)}
.csw .pill.light:hover > i{background:var(--white);color:var(--ink)}
.csw .pill.dark > span,.csw .pill.dark > i{background:var(--ink);color:var(--white)}
.csw .pill.dark:hover > span{background:var(--forest);color:var(--white)}
.csw .pill.dark:hover > i{background:var(--gold);color:var(--ink)}
.csw .ghost{display:inline-flex;align-items:center;padding:15px 26px;border-radius:999px;background:transparent;border:1.5px solid rgba(255,255,255,.6);color:var(--white);text-decoration:none;font:400 16px/1 var(--f-head);transition:background .25s,color .25s,transform .25s,box-shadow .25s,border-color .25s}
.csw .ghost:hover{background:var(--white);color:var(--ink);border-color:var(--white);transform:translateY(-2px)}
.csw .cta-btn{display:inline-flex;align-items:center;margin-top:14px;text-decoration:none;transition:transform .25s}
.csw .cta-btn:hover{transform:translateY(-2px)}
.csw .cta-btn > span{background:var(--white);color:var(--ink);font:400 16px/1 var(--f-head);padding:16px 26px;border-radius:999px;transition:background .25s,color .25s,transform .25s,box-shadow .25s,border-color .25s}
.csw .cta-btn > i{width:48px;height:48px;border-radius:50%;background:var(--white);color:var(--ink);display:grid;place-items:center;font-style:normal;transition:background .25s,color .25s,transform .25s,box-shadow .25s,border-color .25s}
.csw .cta-btn svg{width:20px;height:20px}
.csw .cta-btn:hover > span{background:var(--gold);color:var(--ink)}
.csw .cta-btn:hover > i{background:var(--gold);color:var(--ink);transform:translateX(4px) rotate(-45deg)}
.csw .btn:active,.csw .pill:active,.csw .cta-btn:active,.csw .ghost:active{transform:translateY(0)}
@media (max-width:480px){.csw .pill > span{padding:13px 16px}.csw .pill > i{display:none}}

/* pixel-square motif at section edges */
.csw .deco{--s:36px;position:absolute;width:calc(var(--s)*3);height:calc(var(--s)*2);pointer-events:none;z-index:1}
.csw .deco i{position:absolute;width:var(--s);height:var(--s);transition:opacity .4s,scale .5s cubic-bezier(.3,1.6,.5,1)}
.csw .deco i:nth-child(1){top:0;left:0}
.csw .deco i:nth-child(2){top:0;left:calc(var(--s)*2);transition-delay:.08s}
.csw .deco i:nth-child(3){top:var(--s);left:var(--s);transition-delay:.16s}
.csw .deco.tl{top:0;left:0}.csw .deco.tr{top:0;right:0;transform:scaleX(-1)}.csw .deco.bl{bottom:0;left:0;transform:scaleY(-1)}.csw .deco.br{bottom:0;right:0;transform:scale(-1)}
@media (max-width:560px){.csw .deco{--s:20px}}

/* scroll reveal (classes added by reveal.js) */
.csw .r-hide{opacity:0;translate:0 40px}
.csw .r-hide.r-zoom{translate:0 0;scale:.94}
.csw .r-anim.r-anim{transition:opacity .8s cubic-bezier(.2,.7,.2,1),translate .8s cubic-bezier(.2,.7,.2,1),scale .8s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d,0s)}
.csw .deco.r-hide{opacity:1;translate:none}
.csw .deco.r-hide i{opacity:0;scale:.2}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .csw *{transition:none!important;scroll-behavior:auto!important}
  .csw .btn:hover,.csw .pill:hover,.csw .cta-btn:hover,.csw .ghost:hover,.csw .pill:hover > i,.csw .cta-btn:hover > i{transform:none}
  .csw .r-hide{opacity:1;translate:none;scale:none}.csw .deco.r-hide i{opacity:1;scale:none}
}

/* AJAX forms: honeypot + status message */
.csw .csw-hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.csw .csw-form-msg{margin:0;padding:12px 16px;border-radius:var(--radius-btn);background:var(--white);border:1.5px solid var(--sage);color:var(--forest);font:400 15px/1.45 var(--f-head)}
.csw .csw-form-msg.is-err{border-color:#B3261E;color:#B3261E}
.csw .csw-form-msg[hidden]{display:none}
.csw form[aria-busy="true"] [type="submit"],.csw form[aria-busy="true"] .kf-send{opacity:.6;pointer-events:none}

/* Astra scroll-to-top: brand gold */
#ast-scroll-top{background-color:#D4B81D !important;color:#0D141A !important;border-radius:8px;box-shadow:0 10px 24px -10px rgba(0,0,0,.45);transition:background-color .25s,transform .25s}
#ast-scroll-top:hover,#ast-scroll-top:focus{background-color:#B89E12 !important;color:#0D141A !important;transform:translateY(-2px)}
#ast-scroll-top .ast-icon svg,#ast-scroll-top svg{fill:#0D141A !important;color:#0D141A !important}
