:root{
  --bg:#e9eee6; --bg2:#dfe7db; --paper:#f6f8f3; --wm:.06; --ink:#14201d; --ink2:#3b4a45; --muted:#68766f; --line:rgba(20,32,29,.15);
  --green:#173431; --green-d:#10282a; --on-green:#eef1ec; --on-green-2:#b9c7c0;
  --gold:#a67c37; --gold-t:#7f5c1d; --gold-l:#d5ae68;
  --btn-bg:#173431; --btn-fg:#fff;
  --display:"Bricolage Grotesque",system-ui,sans-serif; --sans:"Geist",system-ui,sans-serif;
  --r:16px; --ease:cubic-bezier(.16,1,.3,1);
}
@media (prefers-color-scheme:dark){
  :root{--bg:#0d1a18; --bg2:#0a1513; --paper:#122421; --wm:.07; --ink:#eef1ec; --ink2:#c3cdc7; --muted:#8fa099; --line:rgba(238,241,236,.15);
    --green:#163330; --gold:#d2aa62; --gold-t:#dfbd7f; --btn-bg:#d5ae68; --btn-fg:#14201d}
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:80px}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
body{font-family:var(--sans);font-weight:400;color:var(--ink);background:var(--bg);line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit}
ul{list-style:none}
.wrap{width:min(1280px,100% - 48px);margin-inline:auto}
h1,h2,h3{font-family:var(--display);font-weight:500;line-height:1.04;letter-spacing:-.03em}
h2{font-size:clamp(2.2rem,4.8vw,4.2rem)}
em{font-style:normal;color:var(--gold)}
.eyebrow{font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-t);font-weight:500}
.green .eyebrow{color:var(--gold-l)}
i.ph,i.ph-bold{line-height:1;flex:none}

/* splash / loader */
html.splash-on{overflow:hidden}
.splash{position:fixed;inset:0;z-index:200;background:var(--bg);display:grid;place-items:center;animation:splashFail .01s 7s forwards}
.splash.done{pointer-events:none}
.splash__inner{display:grid;justify-items:center;gap:34px}
.splash__logo{width:clamp(150px,22vw,210px);height:auto;opacity:0;transform:translateY(14px) scale(.96);animation:splashIn 1s var(--ease) .15s forwards}
.splash__bar{width:min(220px,56vw);height:2px;background:var(--line);overflow:hidden;border-radius:2px}
.splash__fill{display:block;height:100%;background:var(--gold);transform:scaleX(0);transform-origin:left}
@keyframes splashIn{to{opacity:1;transform:none}}
@keyframes splashFail{to{opacity:0;visibility:hidden}}

/* split text */
.w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.14em;margin-bottom:-.14em}
.w>.i{display:inline-block;will-change:transform}
.w.plain{overflow:visible;padding:0;margin:0}

/* buttons */
.btn{position:relative;overflow:hidden;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:16px 28px;border-radius:999px;font:500 .95rem/1 var(--sans);text-decoration:none;border:1px solid transparent;white-space:nowrap;cursor:pointer;transition:color .45s var(--ease),border-color .45s var(--ease),transform .2s}
.btn i{font-size:1.15rem}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;transform:translateY(101%);transition:transform .55s var(--ease)}
.btn:hover::before{transform:none}
.btn:active{transform:scale(.97)}
.btn-fill{background:var(--btn-bg);color:var(--btn-fg)}
.btn-fill::before{background:var(--gold)}
.btn-fill:hover{color:#fff}
.btn-line{border-color:var(--ink);color:var(--ink)}
.btn-line::before{background:var(--ink)}
.btn-line:hover{color:var(--bg)}
.btn-lt{background:var(--on-green);color:var(--green-d)}
.btn-lt::before{background:var(--gold-l)}
.btn-line-lt{border-color:rgba(238,241,236,.55);color:var(--on-green)}
.btn-line-lt::before{background:var(--on-green)}
.btn-line-lt:hover{color:var(--green-d)}

/* header */
header{position:fixed;inset:0 0 auto 0;z-index:50;transition:transform .6s var(--ease),background .4s,box-shadow .4s}
header.solid{background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 1px 0 var(--line)}
header.hide{transform:translateY(-100%)}
.bar{display:flex;align-items:center;justify-content:space-between;height:72px;gap:20px}
.brand img{height:52px;width:auto}
nav ul{display:flex;gap:38px}
nav a{text-decoration:none;font-size:.92rem;position:relative;padding:6px 0}
nav a::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease)}
nav a:hover::after{transform:scaleX(1);transform-origin:left}
.right{display:flex;align-items:center;gap:12px}
.lang{position:relative}
.lang-btn{display:flex;align-items:center;gap:10px;padding:8px 14px 8px 10px;border-radius:999px;border:1px solid var(--ink);background:transparent;cursor:pointer;font:500 .8rem var(--sans);letter-spacing:.08em;color:var(--ink);transition:background .3s}
.lang-btn:hover{background:var(--paper)}
.lang-btn .chev{font-size:.7rem;transition:transform .3s}
.lang.open .chev{transform:rotate(180deg)}
.flag{width:26px;height:18px;border-radius:4px;overflow:hidden;flex:none;box-shadow:0 0 0 1px rgba(0,0,0,.2);display:block}
.flag svg{width:100%;height:100%;display:block}
.lang-menu{position:absolute;right:0;top:calc(100% + 10px);min-width:200px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:8px;box-shadow:0 24px 50px -18px rgba(0,0,0,.35);opacity:0;visibility:hidden;transform:translateY(-6px);transition:.3s var(--ease)}
.lang.open .lang-menu{opacity:1;visibility:visible;transform:none}
.lang-menu button{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;border:0;background:none;border-radius:10px;cursor:pointer;font:400 .95rem var(--sans);color:var(--ink);text-align:left}
.lang-menu button:hover,.lang-menu button[aria-current="true"]{background:color-mix(in srgb,var(--ink) 8%,transparent)}
.lang-menu button[aria-current="true"]{font-weight:600}
.burger{display:none;width:44px;height:44px;border-radius:50%;border:1px solid var(--ink);background:none;cursor:pointer;position:relative}
.burger i{position:absolute;left:12px;right:12px;height:1.5px;background:var(--ink);transition:.3s}
.burger i:nth-child(1){top:16px}.burger i:nth-child(2){top:21px}.burger i:nth-child(3){top:26px}
.burger.on i:nth-child(1){top:21px;transform:rotate(45deg)}
.burger.on i:nth-child(2){opacity:0}
.burger.on i:nth-child(3){top:21px;transform:rotate(-45deg)}

/* image helpers */
.px{position:relative;overflow:hidden;border-radius:var(--r);background:color-mix(in srgb,var(--ink) 10%,var(--bg))}
.px img{position:absolute;left:0;top:-9%;width:100%;height:118%;object-fit:cover;will-change:transform}

/* hero */
.hero{min-height:100dvh;padding:96px 0 48px;display:grid;align-items:center}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr);gap:clamp(32px,5vw,90px);align-items:center}
.hero h1{font-size:clamp(2.6rem,5.6vw,5.2rem);margin:22px 0 24px}
.hero .lead{font-size:1.1rem;color:var(--ink2);max-width:30em;margin-bottom:36px}
.cta-row{display:flex;flex-wrap:wrap;gap:12px}
.hero-media{position:relative;height:min(76vh,720px);min-height:420px}
.hero-main{position:absolute;inset:0 0 0 16%}
.hero-sub{position:absolute;left:0;bottom:-26px;width:34%;aspect-ratio:3/4;border:6px solid var(--bg)}

/* statement */
.about{padding:clamp(90px,13vw,190px) 0 clamp(60px,8vw,110px);text-align:center}
.stmt{font:500 clamp(1.9rem,4.3vw,3.9rem)/1.12 var(--display);letter-spacing:-.025em;max-width:1000px;margin-inline:auto}
.stmt-cols{display:grid;grid-template-columns:1fr 1fr;gap:34px;margin:56px auto 0;width:min(860px,100%)}
.stmt-cols p{color:var(--ink2);max-width:42ch;margin-inline:auto}
.trio{display:grid;grid-template-columns:1fr 1.25fr .9fr;gap:clamp(14px,2.2vw,32px);align-items:start;margin-top:clamp(60px,9vw,120px)}
.trio .px{aspect-ratio:3/4}
.trio .a{margin-top:70px}.trio .b{aspect-ratio:4/5}.trio .c{margin-top:140px}

/* massages */
.massages{padding:clamp(70px,10vw,140px) 0}
.massages h2{max-width:14ch;margin-bottom:clamp(40px,6vw,80px)}
.acc-wrap{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(30px,6vw,110px);align-items:start}
.acc-media{position:sticky;top:96px;aspect-ratio:4/5;max-height:76vh;width:100%;border-radius:var(--r);overflow:hidden;background:var(--green)}
.acc-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.08);transition:opacity .9s var(--ease),transform 1.4s var(--ease)}
.acc-media img.on{opacity:1;transform:none}
.acc-item{border-top:1px solid var(--line)}
.acc-item:last-child{border-bottom:1px solid var(--line)}
.acc-head{display:flex;align-items:center;justify-content:space-between;gap:20px;width:100%;padding:28px 0;background:none;border:0;cursor:pointer;color:var(--ink);text-align:left;font:500 clamp(1.5rem,2.7vw,2.4rem)/1.1 var(--display);letter-spacing:-.025em;transition:color .4s}
.acc-item:not(.open) .acc-head{color:var(--muted)}
.acc-head:hover{color:var(--ink)}
.acc-head i{font-size:1.4rem;transition:transform .6s var(--ease)}
.acc-item.open .acc-head i{transform:rotate(135deg)}
.acc-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .7s var(--ease)}
.acc-item.open .acc-panel{grid-template-rows:1fr}
.acc-panel>div{overflow:hidden}
.acc-body{padding:0 0 34px}
.acc-body .intro{color:var(--ink2);max-width:56ch;margin-bottom:24px}
.acc-body h4{font:500 .78rem var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--gold-t);margin-bottom:12px}
.acc-body ul{display:grid;gap:9px;margin-bottom:24px}
.acc-body li{display:flex;gap:12px;align-items:flex-start;color:var(--ink2)}
.acc-body li i{color:var(--gold);margin-top:.32em;font-size:1rem}
.acc-body .note{color:var(--muted);font-size:.93rem;max-width:56ch;margin-bottom:26px}

/* training */
.green{background:var(--green);color:var(--on-green)}
.training{padding:clamp(80px,11vw,160px) 0}
.train-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(30px,6vw,110px);align-items:start}
.train-media{position:sticky;top:96px;height:min(82vh,760px)}
.train-media .big{position:absolute;inset:0 0 0 0}
.train-media .small{position:absolute;right:-6%;bottom:-24px;width:42%;aspect-ratio:1/1.1;border:6px solid var(--green)}
.training h2{margin:18px 0 22px;max-width:15ch}
.training .intro{color:var(--on-green-2);max-width:52ch;margin-bottom:12px}
.course{padding:40px 0;border-top:1px solid rgba(238,241,236,.2)}
.course:first-of-type{margin-top:36px}
.course .city{font:500 .82rem var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--gold-l)}
.course .date{font:500 clamp(2rem,3.8vw,3.3rem)/1.05 var(--display);letter-spacing:-.03em;margin:12px 0 26px}
.course dl{display:grid;grid-template-columns:150px 1fr;gap:12px 20px;margin-bottom:24px}
.course dt{color:var(--on-green-2);font-size:.92rem}
.course dd{font-weight:500}
.course dd .price{font:500 2rem/1 var(--display)}
.course dd small{color:var(--on-green-2);font-weight:400;margin-left:8px}
.includes{display:grid;gap:8px;margin-bottom:30px}
.includes li{display:flex;gap:12px;align-items:center}
.includes i{color:var(--gold-l)}
.course p{color:var(--on-green-2);max-width:46ch;margin-bottom:26px}
.limited{padding-top:34px;border-top:1px solid rgba(238,241,236,.2);font:500 clamp(1.3rem,2.2vw,1.8rem)/1.25 var(--display);color:var(--gold-l);letter-spacing:-.02em;max-width:30ch}

/* prices */
.prices{padding:clamp(80px,11vw,150px) 0}
.prices h2{margin-bottom:clamp(36px,5vw,64px)}
.prices-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(30px,6vw,110px)}
.demo-tag{display:inline-block;background:color-mix(in srgb,var(--gold) 22%,transparent);color:var(--gold-t);font:500 .8rem var(--sans);padding:6px 14px;border-radius:999px;margin-bottom:26px}
.price-row{display:flex;align-items:baseline;gap:16px;padding:20px 0}
.price-row+.price-row{border-top:1px solid var(--line)}
.price-row .n{font:500 clamp(1.3rem,2vw,1.7rem) var(--display);letter-spacing:-.02em}
.price-row .d{flex:1}
.price-row .v{font:500 1.15rem var(--sans);color:var(--gold-t)}
.hours{margin-top:44px;display:grid;gap:6px;color:var(--ink2)}
.hours h4{font:500 .78rem var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--gold-t);margin-bottom:8px}
.hours p{display:flex;justify-content:space-between;gap:16px;max-width:420px}
.stats{display:grid;gap:clamp(30px,4vw,56px);align-content:start}
.stat b{display:block;font:500 clamp(4.5rem,10vw,9rem)/.9 var(--display);letter-spacing:-.05em;color:var(--gold)}
.stat span{display:block;margin-top:14px;color:var(--ink2);max-width:24ch}

/* contact */
.contact{padding:clamp(70px,9vw,130px) 0 clamp(90px,12vw,160px)}
.contact-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(30px,6vw,100px);align-items:stretch}
.contact h2{font-size:clamp(2rem,3.8vw,3.3rem);margin-bottom:22px;max-width:18ch}
.contact .sub{color:var(--ink2);max-width:44ch;margin-bottom:36px}
.info{display:grid;gap:4px;margin-bottom:36px}
.info a{display:flex;gap:18px;align-items:center;text-decoration:none;padding:15px 0;border-top:1px solid var(--line)}
.info a:last-child{border-bottom:1px solid var(--line)}
.info .ic{width:44px;height:44px;border-radius:50%;border:1px solid var(--gold);display:grid;place-items:center;color:var(--gold-t);font-size:1.2rem;transition:.4s var(--ease)}
.info a:hover .ic{background:var(--gold);color:#fff;transform:scale(1.08)}
.info small{display:block;font-size:.78rem;color:var(--muted);line-height:1.3}
.info strong{font-weight:500}
.map{border-radius:var(--r);overflow:hidden;min-height:460px;position:relative}
.map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:saturate(.8) contrast(.95)}

/* closing */
.closing{position:relative;min-height:84vh;display:grid;place-items:center;text-align:center;color:#fff;overflow:hidden;isolation:isolate}
.closing .px{position:absolute;inset:0;border-radius:0;z-index:-2}
.closing::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(rgba(11,24,22,.55),rgba(11,24,22,.62))}
.closing p{font:500 clamp(2.2rem,5.6vw,5rem)/1.06 var(--display);letter-spacing:-.035em;max-width:16ch;margin-inline:auto;padding:0 24px}
.closing p em{color:var(--gold-l)}

footer{background:var(--green-d);color:var(--on-green-2);padding:44px 0 90px;font-size:.9rem}
.foot{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.foot a{color:var(--on-green);text-decoration:none;border-bottom:1px solid rgba(213,174,104,.5)}

.wa-float{text-decoration:none;position:fixed;right:20px;bottom:20px;z-index:60;width:58px;height:58px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center;font-size:1.8rem;box-shadow:0 14px 30px -10px rgba(0,0,0,.5);border:1px solid rgba(255,255,255,.18);transition:transform .4s var(--ease),background .3s}
.wa-float:hover{transform:scale(1.1) rotate(-6deg);background:var(--gold)}

/* reveal fallback (non-split blocks) */
.js-anim .rv{opacity:0;transform:translateY(30px);transition:opacity 1s var(--ease),transform 1s var(--ease)}
.js-anim .rv.in{opacity:1;transform:none}

@media (max-width:980px){
  nav{position:fixed;inset:72px 0 auto 0;background:var(--paper);padding:6px 24px 24px;border-bottom:1px solid var(--line);transform:translateY(-130%);transition:transform .6s var(--ease);z-index:-1}
  nav.open{transform:none}
  nav ul{flex-direction:column;gap:0}
  nav a{display:block;padding:16px 0;font-size:1.1rem;border-bottom:1px solid var(--line)}
  .burger{display:block}
  .hero{padding-top:92px}
  .hero-grid,.acc-wrap,.train-grid,.prices-grid,.contact-grid{grid-template-columns:1fr}
  .hero-media{height:min(110vw,560px);min-height:0;margin-bottom:34px}
  .acc-media{position:relative;top:0;aspect-ratio:4/3;max-height:none}
  .train-media{position:relative;top:0;height:clamp(320px,90vw,520px);margin-bottom:30px}
  .stmt-cols{grid-template-columns:1fr}
  .trio{grid-template-columns:1fr 1fr}
  .trio .b{grid-column:1/-1;order:-1;aspect-ratio:4/3}
  .trio .a{margin-top:0}.trio .c{margin-top:40px}
  .map{min-height:340px}
  .course dl{grid-template-columns:1fr;gap:2px}
  .course dt{margin-top:10px}
}
@media (max-width:520px){
  .wrap{width:min(1280px,100% - 40px)}
  .lang-btn .code{display:none}
  .lang-btn{padding:8px 10px}
  .btn{padding:15px 22px}
  .cta-row .btn{flex:1 1 auto}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}}

/* teaser formacions (portada) */
.no-splash .splash{display:none}
.teaser{padding:clamp(70px,9vw,130px) 0}
.teaser-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(30px,6vw,110px);align-items:start}
.teaser-img{aspect-ratio:16/10;margin-top:44px}
.teaser h2{margin:18px 0 22px;max-width:14ch}
.teaser .intro{color:var(--on-green-2);max-width:46ch;margin-bottom:34px}
.next .course{padding-top:0;border-top:0}
.next-label{display:block;font:500 .78rem var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--on-green-2);margin-bottom:14px}
@media (max-width:980px){.teaser-grid{grid-template-columns:1fr;align-items:start}}

/* pagina formacions */
.hero.sub h1{font-size:clamp(2.4rem,5vw,4.5rem)}
.hero.sub .lead{max-width:34em}
.courses-wrap{padding:clamp(70px,10vw,140px) 0}
.courses-wrap h2{margin-bottom:clamp(30px,4vw,50px)}
.courses-wrap #courses{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,430px),1fr));column-gap:clamp(30px,5vw,80px)}
.courses-wrap .course:first-of-type{margin-top:0}
.closing-in{display:grid;justify-items:center;gap:34px;padding:0 24px}
.closing-in p{font:500 clamp(1.9rem,4.6vw,3.8rem)/1.1 var(--display);letter-spacing:-.03em;max-width:22ch;margin-inline:auto;padding:0}
nav a[aria-current="page"]::after{transform:scaleX(1)}

/* fons: to suau amb carcter (alternant) + resplendor daurat + marca d'aigua del logo */
.hero{background:
  radial-gradient(900px 620px at 82% 18%,color-mix(in srgb,var(--gold-l) 34%,transparent),transparent 62%),
  radial-gradient(760px 520px at 0% 100%,color-mix(in srgb,var(--green) 10%,transparent),transparent 62%),
  var(--bg)}
.massages,.contact{background:var(--bg2)}
.about,.contact{position:relative;overflow:hidden}
.about>.wrap,.contact>.wrap{position:relative;z-index:1}
.about::before,.contact::before{content:"";position:absolute;z-index:0;width:min(760px,90vw);aspect-ratio:1.2;background:url("../img/logo.png") center/contain no-repeat;opacity:var(--wm);pointer-events:none}
.about::before{right:-9%;top:6%}
.contact::before{left:-12%;bottom:-8%}
@media (max-width:980px){.about::before{right:-30%;top:2%}.contact::before{left:-35%;bottom:-4%}}
