*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
:root{
  --bg:#030403;--s1:#0f110f;--s2:#141614;--s3:#1a1d1a;
  --green:#6ee089;--green-soft:rgba(110,224,137,0.12);--green-faint:rgba(110,224,137,0.06);--green-line:rgba(110,224,137,0.22);
  --t:#f4f7f4;--t2:#a7ada7;--t3:#767e76;
  --line:rgba(255,255,255,0.07);--line2:rgba(255,255,255,0.12);
  --btn-text:#06120a;--nav-bg:rgba(3,4,3,0.72);--particle:110,224,137;--chip:#ffffff;--grain:.032;
  --serif:'Cormorant Garamond',Georgia,serif;--sans:'DM Sans',system-ui,sans-serif;--mono:'DM Mono',ui-monospace,monospace;
}
html.light{
  --bg:#fbfcfb;--s1:#f2f4f2;--s2:#eef1ee;--s3:#e6eae6;
  --green:#15803d;--green-soft:rgba(21,128,61,0.10);--green-faint:rgba(21,128,61,0.05);--green-line:rgba(21,128,61,0.30);
  --t:#10140f;--t2:#566156;--t3:#6d766d;
  --line:rgba(0,0,0,0.08);--line2:rgba(0,0,0,0.14);
  --btn-text:#ffffff;--nav-bg:rgba(251,252,251,0.78);--particle:22,140,66;--chip:#ffffff;--grain:.02;
}
html{font-size:16px;scroll-behavior:smooth;scroll-padding-top:4.875rem;}
@media(min-width:681px){html{font-size:clamp(12.8px,1.0667vw,16px);}}
html,body{width:100%;max-width:100%;overflow-x:hidden;}
body{background:var(--bg);color:var(--t);font-family:var(--sans);font-weight:300;line-height:1.65;font-size:1rem;transition:background .4s ease,color .4s ease;}
a{text-decoration:none;color:inherit;}
img{max-width:100%;height:auto;display:block;}
button{font-family:inherit;}
a,button{-webkit-tap-highlight-color:transparent;}
button{cursor:pointer;}
::selection{background:var(--green);color:var(--btn-text);}
body::after{content:'';position:fixed;inset:0;z-index:1500;pointer-events:none;opacity:var(--grain,.032);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:13.75rem;}
::-webkit-scrollbar{width:0.25rem;}::-webkit-scrollbar-track{background:var(--bg);}::-webkit-scrollbar-thumb{background:var(--t3);border-radius:2px;}

.skip-link{position:absolute;left:-624.9375rem;top:0;z-index:999;background:var(--green);color:var(--btn-text);padding:0.625rem 1.125rem;font-size:0.875rem;}
.skip-link:focus{left:0.75rem;top:0.75rem;}
:focus-visible{outline:2px solid var(--green);outline-offset:0.1875rem;border-radius:2px;}

#progress{position:fixed;top:0;left:0;height:2px;width:100%;background:var(--green);z-index:300;transform:scaleX(0);transform-origin:0 50%;}
@supports (animation-timeline: scroll()){
  #progress{animation:progressGrow linear both;animation-timeline:scroll(root);}
  @keyframes progressGrow{to{transform:scaleX(1);}}
}
.wrap{max-width:77.5rem;margin:0 auto;}

/* ============ NAV ============ */
.nav{position:sticky;top:0;z-index:200;background:var(--nav-bg);backdrop-filter:blur(1.875rem) saturate(150%);-webkit-backdrop-filter:blur(1.875rem) saturate(150%);border-bottom:1px solid var(--line);transition:background .4s ease;}
.nav-in{display:flex;align-items:center;justify-content:space-between;padding:1rem 2.75rem;gap:1.25rem;}
.nav-left{display:flex;align-items:center;gap:1.375rem;}
.theme-toggle{background:none;border:none;padding:0.625rem 0;min-height:2.75rem;display:flex;align-items:center;}
.tt-track{width:2.875rem;height:1.5rem;border-radius:6.25rem;border:1px solid var(--line2);background:var(--s2);display:flex;align-items:center;padding:2px;transition:background .3s,border-color .3s;position:relative;}
.tt-thumb{width:1.125rem;height:1.125rem;border-radius:50%;background:var(--green);transition:transform .35s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center;}
html.light .tt-thumb{transform:translateX(1.375rem);}
.tt-icon{width:0.625rem;height:0.625rem;color:var(--btn-text);}
.logo{display:flex;align-items:flex-end;gap:2px;font-size:1.125rem;font-weight:500;color:var(--t);letter-spacing:-0.01em;}
.logo-dot{width:0.375rem;height:0.375rem;background:var(--green);border-radius:50%;margin-bottom:0.3125rem;animation:breathe 3s ease-in-out infinite;}
@keyframes breathe{0%,100%{opacity:1;}50%{opacity:.4;}}
.nav-links{display:flex;align-items:center;gap:1.75rem;}
.nlink{position:relative;font-size:0.875rem;color:var(--t2);letter-spacing:.03em;transition:color .25s;padding-bottom:0.1875rem;background:none;border:none;}
.nlink::after{content:'';position:absolute;left:0;bottom:0;width:0;height:1px;background:var(--green);transition:width .28s cubic-bezier(.4,0,.2,1);}
.nlink:hover,.nlink.active{color:var(--t);}
.nlink:hover::after,.nlink.active::after{width:100%;}
.nav-cta{font-size:0.875rem;font-weight:400;padding:0.625rem 1.5rem;border-radius:1px;border:1px solid var(--green-line);background:transparent;color:var(--green);transition:background .25s,letter-spacing .25s;letter-spacing:.03em;}
.nav-cta:hover{background:var(--green-soft);letter-spacing:.1em;}
.burger{display:none;background:none;border:none;width:2.5rem;height:2.5rem;flex-direction:column;justify-content:center;align-items:center;gap:0.3125rem;}
.burger span{display:block;width:1.25rem;height:1.5px;background:var(--t);transition:transform .3s,opacity .3s;}
.burger.open span:nth-child(1){transform:translateY(0.4063rem) rotate(45deg);}
.burger.open span:nth-child(2){opacity:0;}
.burger.open span:nth-child(3){transform:translateY(-0.4063rem) rotate(-45deg);}
.mobile-menu{display:none;flex-direction:column;border-top:1px solid var(--line);background:var(--bg);padding:0.5rem 1.5rem 1.25rem;}
.mobile-menu.open{display:flex;}
.mlink{font-size:1rem;color:var(--t2);padding:0.875rem 0;border-bottom:1px solid var(--line);background:none;border-left:none;border-right:none;border-top:none;text-align:left;}
.mlink:last-child{border-bottom:none;}

/* ============ HERO ============ */
.hero{position:relative;padding:7.75rem 2.75rem 6.25rem;border-bottom:1px solid var(--line);overflow:hidden;}
#mesh{position:absolute;inset:-25%;z-index:0;pointer-events:none;overflow:hidden;transform:translate3d(calc(var(--mx,0)*1px),calc(var(--my,0)*1px),0);transition:transform .6s cubic-bezier(.22,1,.36,1);}
#mesh i{position:absolute;display:block;border-radius:50%;mix-blend-mode:screen;will-change:transform;}
#mesh i:nth-child(1){width:64vw;height:64vw;left:-20%;top:-24%;background:radial-gradient(circle,rgba(var(--particle),.11),transparent 62%);animation:meshA 17s ease-in-out infinite;}
#mesh i:nth-child(2){width:54vw;height:54vw;right:-10%;top:2%;background:radial-gradient(circle,rgba(var(--particle),.12),transparent 62%);animation:meshB 21s ease-in-out infinite;}
#mesh i:nth-child(3){width:46vw;height:46vw;left:24%;bottom:-22%;background:radial-gradient(circle,rgba(var(--particle),.06),transparent 66%);animation:meshC 25s ease-in-out infinite;}
#mesh i:nth-child(4){width:30vw;height:30vw;right:10%;bottom:-2%;background:radial-gradient(circle,rgba(var(--particle),.13),transparent 58%);animation:meshD 14s ease-in-out infinite;}
@keyframes meshA{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(8%,6%) scale(1.12);}}
@keyframes meshB{0%,100%{transform:translate(0,0) scale(1.05);}50%{transform:translate(-7%,4%) scale(.92);}}
@keyframes meshC{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(5%,-6%) scale(1.1);}}
@keyframes meshD{0%,100%{transform:translate(0,0) scale(.95);}50%{transform:translate(-6%,-5%) scale(1.15);}}
html.light #mesh i{mix-blend-mode:multiply;}
html.light #mesh i:nth-child(1){background:radial-gradient(circle,rgba(var(--particle),.22),transparent 66%);}
html.light #mesh i:nth-child(2){background:radial-gradient(circle,rgba(var(--particle),.17),transparent 64%);}
html.light #mesh i:nth-child(3){background:radial-gradient(circle,rgba(var(--particle),.12),transparent 68%);}
html.light #mesh i:nth-child(4){background:radial-gradient(circle,rgba(var(--particle),.18),transparent 60%);}
body.shader-on #mesh{display:none;}
.hero-grain{position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='hn'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23hn)'/%3E%3C/svg%3E");background-size:10.625rem;}
html.light .hero-grain{opacity:.05;}
#particles{position:absolute;inset:0;z-index:0;opacity:.95;}
.hero-in{position:relative;z-index:1;max-width:60rem;}
h1{font-family:var(--serif);font-size:clamp(2.6rem,6.4vw,5.6rem);font-weight:400;line-height:1.05;letter-spacing:-0.03em;color:var(--t);margin-bottom:2.625rem;}
h1 .ln{display:block;overflow-y:clip;overflow-x:visible;padding-right:2px;padding-bottom:.14em;margin-bottom:-.14em;white-space:nowrap;}
h1 .ln span{display:block;transform:translateY(105%);animation:rise .9s cubic-bezier(.22,1,.36,1) forwards;}
h1 .ln:nth-child(2) span{animation-delay:.1s;}
h1 .ln:nth-child(3) span{animation-delay:.2s;}
h1 .ln:nth-child(4) span{animation-delay:.3s;}
h1 .ln:nth-child(5) span{animation-delay:.4s;}
@keyframes rise{to{transform:translateY(0);}}
h1 em{font-style:italic;color:var(--green);}
h1 .thin{color:var(--t2);}
/* Typewriter cycling word — caret is a thin inline bar sized to the text, can't wrap away; period is typed as part of the text */
.tw-line{white-space:nowrap;}
.tw-word{font-style:italic;color:var(--green);white-space:nowrap;text-shadow:0 0 2.375rem rgba(110,224,137,.28);display:inline-block;min-width:5.4ch;}
.tw-word::after{content:'';display:inline-block;width:0.05em;height:0.8em;margin-left:0.09em;background:var(--green);vertical-align:-0.04em;animation:twBlink 1s step-end infinite;}
.tw-typing .tw-word::after{animation:none;opacity:1;}
.tw-line.tw-typing::after{animation:none;opacity:1;}
@keyframes twBlink{0%,49%{opacity:1;}50%,100%{opacity:0;}}
h1 .ln:last-child{overflow-y:visible;}
.hero-sub{font-size:1.1563rem;color:var(--t2);max-width:31.25rem;line-height:1.78;margin-bottom:3.5rem;opacity:0;animation:fadeUp .8s ease forwards .55s;}
.hero-btns{display:flex;align-items:center;gap:1.625rem;margin-bottom:4.25rem;opacity:0;animation:fadeUp .8s ease forwards .65s;flex-wrap:wrap;}
@keyframes fadeUp{from{opacity:0;transform:translateY(0.875rem);}to{opacity:1;transform:translateY(0);}}
.btn{display:inline-block;font-size:0.875rem;font-weight:400;padding:1rem 2.5rem;border-radius:1px;background:var(--green);color:var(--btn-text);border:none;letter-spacing:.05em;transition:transform .2s cubic-bezier(.3,1,.5,1),filter .2s,box-shadow .28s ease;will-change:transform;}
.btn:hover{filter:brightness(1.06);box-shadow:0 1rem 2.375rem -0.875rem rgba(110,224,137,.5);}
.btn-ghost{font-size:0.9375rem;color:var(--t2);display:flex;align-items:center;gap:0.5625rem;transition:color .25s;background:none;border:none;}
.btn-ghost:hover{color:var(--t);}
.btn-ghost .arr{display:inline-block;transition:transform .25s;}
.btn-ghost:hover .arr{transform:translateX(0.3125rem);}
.hero-meta{display:flex;gap:0;border-top:1px solid var(--line);padding-top:2.625rem;flex-wrap:wrap;opacity:0;animation:fadeUp .8s ease forwards .8s;}
.hero-meta>div{padding-right:clamp(2.125rem,5vw,4.5rem);margin-right:clamp(2.125rem,5vw,4.5rem);border-right:1px solid var(--line);}
.hero-meta>div:last-child{border-right:none;margin-right:0;padding-right:0;}
.hm-n{font-family:var(--serif);font-size:3.4rem;font-weight:400;color:var(--t);line-height:1;margin-bottom:0.75rem;letter-spacing:-0.03em;}
.hm-n em{font-style:normal;color:var(--green);}
.hm-l{font-family:var(--mono);font-size:0.6875rem;color:var(--t3);text-transform:uppercase;letter-spacing:.16em;}

/* ============ TICKER ============ */
.ticker{padding:1.375rem 0;border-bottom:1px solid var(--line);overflow:hidden;background:var(--s1);}
.tk-track{display:flex;width:max-content;animation:tick 46s linear infinite;}
.tk-track:hover{animation-play-state:paused;}
.tk{font-family:var(--mono);font-size:0.75rem;color:var(--t3);letter-spacing:.16em;text-transform:uppercase;padding:0 2.75rem;border-right:1px solid var(--line);white-space:nowrap;display:flex;align-items:center;transition:color .3s;}
.tk:hover{color:var(--green);}
.tk-live{color:var(--t2);border-color:var(--green-line);}
@keyframes tick{from{transform:translateX(0);}to{transform:translateX(-50%);}}

/* ============ SECTIONS ============ */
.sec{padding:8rem 2.75rem;border-bottom:1px solid var(--line);scroll-margin-top:4.875rem;}
.sec-hd{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:4.5rem;flex-wrap:wrap;gap:0.875rem;}
.sec-label{font-family:var(--mono);font-size:0.75rem;letter-spacing:.2em;text-transform:uppercase;color:var(--t3);display:flex;align-items:center;gap:0.8125rem;}
.sec-label::before{content:'';width:1.125rem;height:1px;background:var(--green);opacity:.7;}
.sec-num{font-family:var(--mono);font-size:0.75rem;color:var(--t3);letter-spacing:.1em;}
a.sec-num:hover{color:var(--green);}
.sec-intro{font-family:var(--serif);font-size:clamp(2.1rem,3.6vw,3.1rem);font-weight:400;line-height:1.18;letter-spacing:-0.022em;color:var(--t);max-width:57.5rem;}
.sec-intro em{font-style:italic;color:var(--green);}
/* Line-by-line reveal on sec-intro paragraphs */
.sec-intro .sr-line{display:block;overflow:hidden;padding-bottom:0.12em;margin-bottom:-0.12em;}
.sec-intro .sr-line > span{display:block;transform:translateY(102%);transition:transform .75s cubic-bezier(.22,1,.36,1);text-wrap:balance;}
html.js-reveal .sec-intro.in .sr-line > span,html.sda .sec-intro .sr-line > span{transform:translateY(0);}
html.sda .sec-intro .sr-line:nth-child(2) > span{transition-delay:.09s;}
html.sda .sec-intro .sr-line:nth-child(3) > span{transition-delay:.18s;}
html.js-reveal .sec-intro.in .sr-line:nth-child(2) > span{transition-delay:.09s;}
html.js-reveal .sec-intro.in .sr-line:nth-child(3) > span{transition-delay:.18s;}
/* Locked single-line label: stays unbroken on desktop, allowed to overflow x past the 57.5rem cap without the y-mask clipping it; reverts to normal wrap on phones */
.sec-intro .sr-nowrap span{white-space:nowrap !important;text-wrap:nowrap !important;}
.sec-intro .sr-nowrap{overflow-x:visible !important;overflow-y:clip !important;}
.sec-intro .sr-nowrap > span{width:max-content !important;max-width:none !important;}
@media (max-width:560px){ .sec-intro .sr-nowrap span{white-space:normal !important;text-wrap:wrap !important;} .sec-intro .sr-nowrap{overflow:hidden !important;} .sec-intro .sr-nowrap > span{width:auto !important;} }

/* ============ SERVICES ============ */
.svc{display:grid;grid-template-columns:3.75rem 1fr 2.125rem;align-items:start;padding:2.125rem 0;border-top:1px solid var(--line);cursor:pointer;transition:padding-left .3s cubic-bezier(.4,0,.2,1);gap:0 1.5rem;position:relative;}
.svc::before{content:'';position:absolute;left:-2.75rem;top:0;width:2px;height:100%;background:var(--green);transform:scaleY(0);transform-origin:top;transition:transform .35s cubic-bezier(.4,0,.2,1);}
.svc:last-child{border-bottom:1px solid var(--line);}
.svc:hover{padding-left:0.875rem;}
.svc.open::before,.svc:hover::before{transform:scaleY(1);}
.svc-n{font-family:var(--mono);font-size:0.8125rem;color:var(--t3);padding-top:0.625rem;}
.svc h3{font-family:var(--serif);font-size:clamp(1.5rem,3.4vw,2.375rem);font-weight:400;color:var(--t);letter-spacing:-0.01em;transition:color .25s;line-height:1.2;}
.svc:hover h3,.svc.open h3{color:var(--green);}
.svc-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .42s cubic-bezier(.4,0,.2,1);}
.svc.open .svc-body{grid-template-rows:1fr;}
.svc-desc{font-size:1rem;color:var(--t2);line-height:1.8;padding-top:1.125rem;max-width:42.5rem;overflow:hidden;min-height:0;}
.svc-plus{font-size:1.625rem;color:var(--t3);transition:transform .35s,color .25s;padding-top:0.5rem;font-weight:300;}
.svc.open .svc-plus{transform:rotate(135deg);color:var(--green);}

/* ============ PROCESS ============ */
.proc{display:flex;flex-direction:column;max-width:51.25rem;}
.pstep{display:grid;grid-template-columns:3.875rem 1fr;}
.pleft{display:flex;flex-direction:column;align-items:center;padding-top:2.125rem;}
.pdot{width:0.6875rem;height:0.6875rem;border-radius:50%;border:1.5px solid var(--t3);flex-shrink:0;z-index:1;transition:border-color .4s,background .4s,box-shadow .4s;}
.pstep.lit .pdot{border-color:var(--green);background:var(--green);box-shadow:0 0 0 0.375rem var(--green-faint);}
.pline{width:1px;flex:1;background:var(--line2);margin-top:0.5rem;position:relative;}
.pline::after{content:'';position:absolute;inset:0;background:var(--green);transform:scaleY(0);transform-origin:top;transition:transform .5s ease;}
.pstep.lit .pline::after{transform:scaleY(1);}
.pstep:last-child .pline{display:none;}
.pbody{padding:1.75rem 0 3.75rem 0.625rem;}
.ptag{font-family:var(--mono);font-size:0.6875rem;color:var(--t3);letter-spacing:.16em;text-transform:uppercase;margin-bottom:0.75rem;}
.pstep h3{font-family:var(--serif);font-size:clamp(1.625rem,3.4vw,2.375rem);font-weight:400;color:var(--t);letter-spacing:-0.01em;margin-bottom:0.75rem;transition:color .4s;}
.pstep.lit h3{color:var(--green);}
.pdesc{font-size:1rem;color:var(--t2);line-height:1.75;max-width:32.5rem;}

/* ============ FLIP CARDS ============ */
.flip-g{display:grid;grid-template-columns:repeat(2,1fr);gap:1.25rem;counter-reset:fc;}
.flip{display:block;perspective:100rem;height:18.75rem;counter-increment:fc;}
.flip-inner{position:relative;width:100%;height:100%;transition:transform .7s cubic-bezier(.4,0,.2,1);transform-style:preserve-3d;}
.flip:hover .flip-inner,.flip.flipped .flip-inner,.flip:focus-visible .flip-inner,.flip:focus-within .flip-inner{transform:rotateY(180deg);}
.flip-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border:1px solid var(--line);border-radius:0.375rem;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:2.25rem 1.875rem;text-align:center;background:linear-gradient(180deg,var(--s2),var(--s1));gap:1.25rem;transition:border-color .4s ease;}
.flip-face::before{content:counter(fc,decimal-leading-zero);position:absolute;top:1.125rem;left:1.375rem;font-family:var(--mono);font-size:0.625rem;letter-spacing:.14em;color:var(--t3);}
.flip-logo{width:10.75rem;height:7.25rem;object-fit:contain;background:#fbfbfa;border-radius:0.5rem;padding:1.125rem 1.5rem;box-shadow:0 1.125rem 2.625rem -0.875rem rgba(0,0,0,.65);}
.flip-name{font-family:var(--serif);font-size:1.625rem;font-weight:400;color:var(--t);letter-spacing:-0.015em;}
.flip-tags{display:flex;gap:0.875rem;}
.tag{font-family:var(--mono);font-size:0.6875rem;color:var(--t3);text-transform:uppercase;letter-spacing:.12em;}
.flip-back{transform:rotateY(180deg);background:var(--bg);border-color:var(--green-line);align-items:flex-start;text-align:left;justify-content:flex-start;gap:0;}
.flip-back::before{color:var(--green);}
.fb-label{font-family:var(--mono);font-size:0.625rem;letter-spacing:.16em;text-transform:uppercase;color:var(--green);margin-bottom:1rem;}
.fb-text{font-size:0.875rem;color:var(--t2);line-height:1.7;flex:1;}
.fb-cta{font-family:var(--mono);font-size:0.6875rem;letter-spacing:.08em;text-transform:uppercase;color:var(--green);margin-top:1.125rem;}
.flip:hover .fb-cta{text-decoration:underline;text-underline-offset:0.25rem;}
.fb-note{font-family:var(--mono);font-size:0.6875rem;letter-spacing:.08em;text-transform:uppercase;color:var(--t3);margin-top:1.125rem;}

/* ============ ABOUT ============ */
.about-g{display:grid;grid-template-columns:1.05fr .95fr;gap:4.375rem;align-items:start;}
.about-g h2{font-family:var(--serif);font-size:clamp(2.5rem,4.5vw,4.2rem);font-weight:400;line-height:1.06;letter-spacing:-0.028em;color:var(--t);margin-bottom:2rem;}
.about-g h2 em{font-style:italic;color:var(--green);}
.about-p{font-size:1rem;color:var(--t2);line-height:1.95;margin-bottom:1.5rem;max-width:31.25rem;}
.team{display:flex;flex-direction:column;gap:1rem;}
.tm{display:flex;align-items:center;gap:1.25rem;border:1px solid var(--line);border-radius:2px;padding:1.5rem 1.625rem;transition:border-color .3s,background .3s,transform .3s;}
.tm:hover{border-color:var(--green-line);background:var(--green-faint);transform:translateX(0.3125rem);}
.tm-av{width:3.25rem;height:3.25rem;border-radius:50%;background:radial-gradient(circle at 35% 35%,var(--green-faint),transparent 70%),var(--s2);border:1px solid var(--green-line);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:1.125rem;font-weight:400;color:var(--green);flex-shrink:0;position:relative;transition:border-color .4s;}
.tm-av::after{content:'';position:absolute;inset:-0.1875rem;border-radius:50%;border:1.5px solid var(--green);opacity:0;transform:scale(.85);transition:opacity .4s ease,transform .45s cubic-bezier(.22,1,.36,1);}
.tm:hover .tm-av::after{opacity:.7;transform:scale(1);}
.tm:hover .tm-av{border-color:transparent;}
.tm-name{font-size:1.0625rem;font-weight:400;color:var(--t);margin-bottom:0.25rem;}
.tm-role{font-family:var(--mono);font-size:0.6875rem;color:var(--t3);text-transform:uppercase;letter-spacing:.1em;}

/* ============ VALUES ============ */
.vals{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);}
.val{background:var(--bg);padding:4rem 2.5rem;position:relative;overflow:hidden;transition:background .3s;}
.val::after{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:var(--green);transform:scaleX(0);transition:transform .4s;transform-origin:left;}
.val:hover{background:var(--s1);}
.val:hover::after{transform:scaleX(1);}
.val-ch{font-family:var(--serif);font-size:4rem;font-weight:400;font-style:italic;color:var(--green);opacity:.22;margin-bottom:1.875rem;line-height:1;transition:opacity .4s,transform .4s;will-change:transform;}
.val:hover .val-ch{opacity:.65;transform:translateY(-0.1875rem);}
/* Idle shimmer on flip card front faces */
.flip-face::after{content:'';position:absolute;inset:0;border-radius:0.375rem;background:linear-gradient(115deg,transparent 30%,rgba(110,224,137,0.06) 50%,transparent 70%);background-size:200% 100%;animation:cardShimmer 5s ease-in-out infinite;pointer-events:none;}
html.light .flip-face::after{background:linear-gradient(115deg,transparent 30%,rgba(31,157,77,0.05) 50%,transparent 70%);background-size:200% 100%;}
@keyframes cardShimmer{0%{background-position:200% 0;}60%,100%{background-position:-200% 0;}}
.val h3{font-family:var(--serif);font-size:1.5rem;font-weight:500;color:var(--t);margin-bottom:0.75rem;letter-spacing:-0.01em;}
.val-d{font-size:0.9375rem;color:var(--t2);line-height:1.7;max-width:16.25rem;}

/* ============ TESTIMONIALS ============ */
.tst-g{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;align-items:stretch;}
.tst{display:flex;flex-direction:column;position:relative;margin:0;border:1px solid var(--line);border-radius:0.375rem;padding:2.875rem 2.625rem 2.125rem;background:linear-gradient(180deg,var(--s1),transparent 80%);transition:border-color .35s ease,transform .35s ease;}
.tst:hover{border-color:var(--green-line);transform:translateY(-0.1875rem);}
.tst-mark{font-family:var(--serif);font-style:italic;font-size:4.6rem;line-height:.6;color:var(--green);opacity:.28;margin-bottom:1.375rem;user-select:none;transition:opacity .35s ease;}
.tst:hover .tst-mark{opacity:.6;}
.tst-q{font-family:var(--serif);font-size:1.2188rem;font-weight:400;line-height:1.72;letter-spacing:.002em;color:var(--t2);margin:0 0 1.875rem;}
.tst-q::after{content:'”';color:var(--t3);}
.tst-by{display:flex;align-items:center;gap:1rem;margin-top:auto;padding-top:1.5rem;border-top:1px solid var(--line);}
.tst-logo{width:2.875rem;height:2.875rem;object-fit:contain;background:#fbfbfa;border-radius:50%;padding:0.375rem;flex-shrink:0;}
.tst-by b{display:block;font-family:var(--sans);font-size:0.9375rem;font-weight:500;color:var(--t);margin-bottom:0.1875rem;}
.tst-by span{font-family:var(--mono);font-size:0.625rem;letter-spacing:.14em;text-transform:uppercase;color:var(--t3);}
@media(max-width:900px){.tst-g{grid-template-columns:1fr;}}
@media(max-width:680px){.tst{padding:2.125rem 1.625rem 1.625rem;}.tst-q{font-size:1.0938rem;}}

/* ============ FAQ ============ */
.faq{border-top:1px solid var(--line);cursor:pointer;max-width:55rem;}
.faq:last-child{border-bottom:1px solid var(--line);}
.faq-q{display:flex;justify-content:space-between;align-items:center;padding:1.875rem 0;font-size:1.1875rem;color:var(--t2);transition:color .25s;gap:1.5rem;}
.faq:hover .faq-q,.faq.open .faq-q{color:var(--t);}
.faq-ic{font-size:1.375rem;color:var(--t3);transition:transform .35s,color .25s;flex-shrink:0;}
.faq.open .faq-ic{transform:rotate(135deg);color:var(--green);}
.faq-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .38s cubic-bezier(.4,0,.2,1);}
.faq.open .faq-a{grid-template-rows:1fr;}
.faq-ans{font-size:1rem;color:var(--t2);line-height:1.8;padding-bottom:1.875rem;max-width:42.5rem;overflow:hidden;min-height:0;}

/* ============ CTA ============ */
.cta{padding:9.375rem 2.75rem;text-align:center;border-bottom:1px solid var(--line);background:radial-gradient(circle at 50% 40%,rgba(110,224,137,0.075),transparent 52%),var(--s1);position:relative;overflow:hidden;scroll-margin-top:4.875rem;}
.ring{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:50%;border:1px solid var(--line2);animation:ringPulse 9s ease-in-out infinite;}
.ring:nth-child(1){border-color:var(--green-line);background:radial-gradient(circle,rgba(110,224,137,0.05),transparent 68%);}
.ring:nth-child(2){animation-delay:1.5s;}
.ring:nth-child(3){animation-delay:3s;}
@keyframes ringPulse{0%,100%{transform:translate(-50%,-50%) scale(1);box-shadow:0 0 1.75rem -0.5rem rgba(110,224,137,0.08);}50%{transform:translate(-50%,-50%) scale(1.05);box-shadow:0 0 3.25rem -0.25rem rgba(110,224,137,0.18);}}
.cta-label{font-family:var(--mono);font-size:0.75rem;letter-spacing:.2em;text-transform:uppercase;color:var(--green);margin-bottom:1.75rem;}
.cta h2{font-family:var(--serif);font-size:clamp(2.7rem,5.6vw,5rem);font-weight:400;letter-spacing:-0.028em;line-height:1.02;color:var(--t);margin-bottom:1.5rem;}
.cta h2 em{font-style:italic;color:var(--green);}
.cta-sub{font-size:1.0625rem;color:var(--t2);margin-bottom:3.25rem;}
.cta-contact{display:grid;grid-template-columns:auto auto;justify-content:center;align-items:start;column-gap:clamp(4rem,7vw,7.5rem);row-gap:2.125rem;margin:4.5rem auto 0;padding-top:2.875rem;border-top:1px solid var(--line);max-width:35rem;position:relative;z-index:1;}
.ci{font-family:var(--mono);font-size:0.8125rem;color:var(--t2);letter-spacing:.04em;text-align:center;}
.ci span{color:var(--green);display:block;font-size:0.625rem;letter-spacing:.16em;text-transform:uppercase;margin-bottom:0.5625rem;}
.ci:nth-child(3){grid-column:1 / -1;}
.ci a:hover{color:var(--green);}

/* ============ FOOTER ============ */
footer{padding:4rem 2.75rem;}
.ft{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:3.375rem;flex-wrap:wrap;gap:2.25rem;}
.ft-sub{font-family:var(--mono);font-size:0.6875rem;color:var(--t3);margin-top:0.75rem;letter-spacing:.12em;text-transform:uppercase;}
.ft-links{display:grid;grid-template-columns:1fr 1fr;gap:0.75rem 3rem;}
.ftl{position:relative;font-size:0.9375rem;color:var(--t3);transition:color .25s;background:none;border:none;text-align:left;padding-bottom:2px;}
.ftl::after{content:'';position:absolute;left:0;bottom:0;width:0;height:1px;background:var(--green);transition:width .28s cubic-bezier(.4,0,.2,1);}
.ftl:hover::after{width:100%;}
.ftl:hover{color:var(--green);}
.ft-bot{display:flex;flex-direction:column;gap:0.875rem;padding-top:2.125rem;border-top:1px solid var(--line);}
.ft-bot-row{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:0.875rem;}
.ft-copy{font-family:var(--mono);font-size:0.6875rem;color:var(--t3);letter-spacing:.06em;}
.ft-ops{font-family:var(--mono);font-size:0.6875rem;color:var(--t3);letter-spacing:.04em;line-height:1.7;grid-column:1/-1;margin-bottom:1.125rem;width:100%;}
.ft-ops strong{color:var(--green);font-weight:400;}
.ft-ops-dot{display:inline-block;width:0.3125rem;height:0.3125rem;border-radius:50%;background:var(--green);margin-right:0.5rem;vertical-align:middle;animation:breathe 2.5s ease-in-out infinite;}
.ft-soc{display:flex;gap:1.25rem;}
.ft-soc a{font-family:var(--mono);font-size:0.6875rem;color:var(--t3);letter-spacing:.12em;text-transform:uppercase;transition:color .25s;}
.ft-soc a:hover{color:var(--green);}

/* ============ MODAL ============ */
.overlay{position:fixed;inset:0;z-index:1000;background:rgba(4,6,4,.72);backdrop-filter:blur(0.375rem);-webkit-backdrop-filter:blur(0.375rem);display:flex;align-items:center;justify-content:center;padding:1.5rem;opacity:0;visibility:hidden;transition:opacity .35s ease,visibility .35s ease;}
.overlay.show{opacity:1;visibility:visible;}
html.light .overlay{background:rgba(20,30,20,.45);}
.modal{position:relative;width:100%;max-width:32.5rem;max-height:92vh;max-height:90dvh;overflow-y:auto;background:var(--bg);border:1px solid var(--line2);border-radius:0.25rem;padding:2.75rem 2.5rem;transform:translateY(1.5rem) scale(.98);opacity:0;transition:transform .4s cubic-bezier(.22,1,.36,1),opacity .4s ease;}
.overlay.show .modal{transform:translateY(0) scale(1);opacity:1;}
.modal-close{position:absolute;top:1.25rem;right:1.25rem;width:2.125rem;height:2.125rem;border:1px solid var(--line2);border-radius:50%;background:transparent;color:var(--t2);font-size:1.125rem;display:flex;align-items:center;justify-content:center;transition:border-color .25s,color .25s,transform .25s;}
.modal-close:hover{border-color:var(--green-line);color:var(--green);transform:rotate(90deg);}
.m-label{font-family:var(--mono);font-size:0.6875rem;letter-spacing:.2em;text-transform:uppercase;color:var(--green);margin-bottom:0.875rem;}
.modal h2{font-family:var(--serif);font-size:2rem;font-weight:400;letter-spacing:-0.02em;line-height:1.1;color:var(--t);margin-bottom:0.625rem;}
.m-sub{font-size:0.875rem;color:var(--t2);margin-bottom:1.875rem;line-height:1.6;}
.field{margin-bottom:1.25rem;}
.field label{display:block;font-family:var(--mono);font-size:0.625rem;letter-spacing:.12em;text-transform:uppercase;color:var(--t3);margin-bottom:0.5625rem;}
.field input,.field textarea,.field select{width:100%;background:var(--s1);border:1px solid var(--line);border-radius:2px;padding:0.8125rem 0.9375rem;color:var(--t);font-family:var(--sans);font-size:1rem;font-weight:300;transition:border-color .25s,background .25s;outline:none;}
.field input::placeholder,.field textarea::placeholder{color:var(--t3);}
.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--green-line);background:var(--s2);}
.field textarea{resize:vertical;min-height:6rem;line-height:1.6;}
.field select{cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236ee089' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 0.9375rem center;padding-right:2.375rem;}
.f-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
.m-submit{width:100%;background:var(--green);color:var(--btn-text);border:none;border-radius:2px;padding:0.9375rem;font-size:0.875rem;font-weight:400;letter-spacing:.04em;transition:opacity .2s,transform .15s;margin-top:0.375rem;}
.m-submit:hover{opacity:.9;transform:translateY(-1px);}
.m-submit:disabled{opacity:.5;transform:none;}
.m-alt{text-align:center;font-size:0.75rem;color:var(--t3);margin-top:1.125rem;line-height:1.6;}
.form-err{display:none;font-family:var(--mono);font-size:0.75rem;color:var(--t2);letter-spacing:.03em;line-height:1.6;border:1px solid var(--line);border-left:2px solid #d06a5a;border-radius:2px;padding:0.8125rem 1rem;margin-top:0.875rem;}
.form-err.show{display:block;}
.form-err a{color:var(--green);border-bottom:1px solid var(--green-line);}
.m-alt a{color:var(--green);border-bottom:1px solid var(--green-line);}
.m-success{text-align:center;padding:1.25rem 0;}
.m-success .tick{width:3.375rem;height:3.375rem;border-radius:50%;border:1.5px solid var(--green-line);color:var(--green);display:flex;align-items:center;justify-content:center;font-size:1.625rem;margin:0 auto 1.375rem;}
.m-success h3{font-family:var(--serif);font-size:1.7rem;font-weight:400;color:var(--t);margin-bottom:0.625rem;}
.m-success p{font-size:0.875rem;color:var(--t2);line-height:1.6;}

/* ============ STAGGERED CARD REVEALS ============ */
/* Containers marked .stagger reveal their children one-by-one instead of as a block. */
html.js-reveal .stagger.rv{opacity:1;transform:none;}
html.js-reveal .stagger.rv>*{opacity:0;transform:translateY(26px);transition:opacity .65s cubic-bezier(.22,1,.36,1),transform .65s cubic-bezier(.22,1,.36,1);}
html.js-reveal .stagger.rv.in>*{opacity:1;transform:none;}
html.js-reveal .stagger.rv.in>*:nth-child(2){transition-delay:.1s;}
html.js-reveal .stagger.rv.in>*:nth-child(3){transition-delay:.2s;}
html.js-reveal .stagger.rv.in>*:nth-child(4){transition-delay:.3s;}
@supports (animation-timeline: view()){
  html.sda .stagger.rv{animation:none;opacity:1;transform:none;}
  html.sda .stagger.rv>*{opacity:0;transform:translateY(26px);animation:rvReveal both;animation-timeline:view();animation-range:entry 5% cover 24%;}
  html.sda .stagger.rv>*:nth-child(2){animation-range:entry 12% cover 31%;}
  html.sda .stagger.rv>*:nth-child(3){animation-range:entry 19% cover 38%;}
  html.sda .stagger.rv>*:nth-child(4){animation-range:entry 26% cover 45%;}
}

/* ============ PREMIUM MICRO-MOTION ============ */
/* primary CTA: light sheen sweeps across on hover */
.btn{position:relative;overflow:hidden;}
.btn::after{content:'';position:absolute;top:0;left:-70%;width:45%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.38),transparent);transform:skewX(-18deg);opacity:0;pointer-events:none;}
.btn:hover::after{animation:btnSheen .8s cubic-bezier(.4,0,.2,1);}
@keyframes btnSheen{0%{left:-70%;opacity:0;}15%{opacity:1;}100%{left:130%;opacity:0;}}
/* nav gains depth once the page scrolls */
.nav{transition:background .4s ease,box-shadow .45s ease,border-color .45s ease;}
.nav.scrolled{box-shadow:0 14px 34px -22px rgba(0,0,0,.6);border-bottom-color:var(--line2);}
html.light .nav.scrolled{box-shadow:0 14px 30px -22px rgba(20,30,20,.25);}
/* ticker: content dissolves at the edges instead of clipping */
.ticker{position:relative;}
.ticker::before,.ticker::after{content:'';position:absolute;top:0;bottom:0;width:clamp(3rem,8vw,7.5rem);z-index:1;pointer-events:none;}
.ticker::before{left:0;background:linear-gradient(to right,var(--s1),transparent);}
.ticker::after{right:0;background:linear-gradient(to left,var(--s1),transparent);}
/* accordion content eases into place rather than just unclipping */
.svc-desc,.faq-ans{opacity:0;transform:translateY(-4px);transition:opacity .4s ease,transform .4s cubic-bezier(.22,1,.36,1);}
.svc.open .svc-desc,.faq.open .faq-ans{opacity:1;transform:none;transition-delay:.08s;}
/* project rows: expanding detail eases in the same way */
.mw-more{transform:translateY(-4px);transition:color .3s,transform .4s cubic-bezier(.22,1,.36,1);}
.mw.open .mw-more{transform:none;}

/* ============ REVEAL ============ */
/* Reveal-on-scroll. Default is visible (safe if JS fails / no support).
   Strategy class on <html> decides how it animates in. */
.rv{opacity:1;transform:none;}
/* JS fallback path (no native scroll-driven support) */
html.js-reveal .rv{opacity:0;transform:translateY(1.875rem);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1);}
html.js-reveal .rv.in{opacity:1;transform:none;}
/* Native scroll-driven path: runs on the compositor, no main-thread JS */
@supports (animation-timeline: view()){
  html.sda .rv{opacity:0;transform:translateY(1.875rem);animation:rvReveal both;animation-timeline:view();animation-range:entry 5% cover 22%;}
  @keyframes rvReveal{to{opacity:1;transform:none;}}
}

/* ============ RESPONSIVE ============ */
@media(max-width:900px){
  .about-g{grid-template-columns:1fr;gap:3.125rem;}
  .vals{grid-template-columns:1fr;}
  /* laptop/tablet: dial back the oversized hero padding so the motif sits higher and tighter */
  .hero{padding:6.5rem 2.5rem 5.5rem;}
  .hero-in{max-width:47.5rem;}
  h1{margin-bottom:2.125rem;}
  .hero-sub{margin-bottom:2.875rem;}
}
@media(max-width:680px){
  .nav-in{padding:calc(0.875rem + env(safe-area-inset-top,0px)) max(1.25rem,env(safe-area-inset-left)) 0.875rem max(1.25rem,env(safe-area-inset-right));}
  .nav-links,.nav-cta{display:none;}
  .burger{display:flex;}
  .hero,.sec,.cta,footer{padding-left:max(1.25rem,env(safe-area-inset-left));padding-right:max(1.25rem,env(safe-area-inset-right));}
  .hero{padding-top:4.75rem;padding-bottom:4rem;}
  .pill{margin-bottom:1.625rem;}
  h1{font-size:clamp(2.7rem,11vw,3.7rem);line-height:1.04;letter-spacing:-.025em;margin-bottom:1.875rem;}
  .hero-sub{font-size:1.0313rem;line-height:1.7;margin-bottom:2.5rem;}
  /* refined inline primary CTA — sized to its label, not a full-width slab */
  .hero-btns{flex-direction:column;align-items:flex-start;gap:1.125rem;margin-bottom:3.625rem;}
  .hero-btns .btn{width:auto;text-align:center;padding:0.9375rem 1.875rem;font-size:0.875rem;letter-spacing:.01em;}
  .btn-ghost{justify-content:flex-start;font-size:0.875rem;padding:2px 0;}
  /* three stats as an even, divided row — lines up cleanly instead of wrapping */
  .hero-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:0;padding-top:2.125rem;}
  .hero-meta>div{border-right:1px solid var(--line);margin:0;padding:0 0.375rem;}
  .hero-meta>div:first-child{padding-left:0;}
  .hero-meta>div:last-child{border-right:none;padding-right:0;}
  .hm-n{font-size:2.1rem;margin-bottom:0.5rem;}
  .hm-l{font-size:0.5938rem;letter-spacing:.1em;}
  .sec{padding:4rem 1.25rem;}
  .sec-hd{flex-direction:column;align-items:flex-start;margin-bottom:2.5rem;}
  .sec-intro{font-size:clamp(1.7rem,6.4vw,2.2rem);}
  .cta{padding:5.25rem 1.25rem;}
  .cta h2 br{display:none;}
  .svc{grid-template-columns:1.875rem 1fr 1.5rem;gap:0 0.75rem;padding:1.75rem 0;}
  .svc:hover{padding-left:0;}
  .svc h3{font-size:clamp(1.3125rem,5.4vw,1.75rem);}
  .pstep{grid-template-columns:2.875rem 1fr;}
  .ft{flex-direction:column;gap:1.75rem;}
  .cta-contact{display:flex;flex-direction:column;align-items:center;gap:1.75rem;}
  .ci{text-align:center;}
  .ci span{margin-left:auto;margin-right:auto;}
  .ring{display:none;}
  .flip-g{grid-template-columns:1fr;gap:0.875rem;}
  .flip{height:15.5rem;}
  .flip-face{padding:1.875rem 1.625rem;gap:1rem;}
  .flip-logo{width:9.375rem;height:6.375rem;}
  .f-row{grid-template-columns:1fr;gap:0;}
  .modal{padding:2.125rem 1.375rem 1.875rem;border-radius:0.875rem 0.875rem 0.25rem 0.25rem;}
}
@media(max-width:380px){
  .hero-meta>div{padding:0 0.25rem;}
  .hm-n{font-size:1.8rem;}
  .hm-l{font-size:0.5625rem;}
}



/* ============ MANIFESTO ============ */
.manifesto{padding:9.375rem 2.75rem;border-bottom:1px solid var(--line);}
.manifesto p{font-family:var(--serif);font-size:clamp(2rem,4.6vw,3.8rem);font-weight:400;line-height:1.25;letter-spacing:-0.015em;max-width:61.25rem;}
.manifesto .w{color:var(--t3);transition:color .35s ease;}
.manifesto .w.lit{color:var(--t);}
.manifesto .w.acc.lit{color:var(--green);font-style:italic;}
@media(max-width:680px){.manifesto{padding:5.625rem 1.25rem;}}

/* ============ MORE PROJECTS ============ */
.mw{display:grid;grid-template-columns:2.75rem 1fr auto;gap:0 1.5rem;align-items:start;padding:1.75rem 0;border-top:1px solid var(--line);transition:padding-left .3s cubic-bezier(.4,0,.2,1);}
.mw:last-child{border-bottom:1px solid var(--line);}
.mw:hover{padding-left:0.75rem;}
.mw-n{font-family:var(--serif);font-style:italic;font-size:1.25rem;color:var(--t3);padding-top:2px;transition:color .25s;}
.mw:hover .mw-n{color:var(--green);}
.mw-name{font-family:var(--serif);font-size:clamp(1.25rem,2.6vw,1.625rem);font-weight:400;color:var(--t);letter-spacing:-.01em;margin-bottom:0.375rem;transition:color .25s;}
.mw:hover .mw-name{color:var(--green);}
.mw-d{font-size:0.875rem;color:var(--t2);line-height:1.7;max-width:35rem;}
.mw .tag{padding-top:0.5rem;}
.mw-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .42s cubic-bezier(.4,0,.2,1);}
.mw.open .mw-body{grid-template-rows:1fr;}
.mw-more{font-size:0.875rem;color:var(--t3);line-height:1.75;padding-top:0.75rem;max-width:35rem;overflow:hidden;min-height:0;transition:color .3s;}
.mw.open .mw-more{color:var(--t2);}
.mw.open .mw-name{color:var(--green);}

/* ============ FOOTER MARK + TIMES ============ */
.ft-mark{font-family:var(--sans);font-weight:700;font-size:clamp(2.4rem,8vw,6rem);line-height:1;letter-spacing:-0.03em;color:transparent;-webkit-text-fill-color:transparent;background-image:radial-gradient(circle 18.75rem at var(--mx,-37.5rem) var(--my,-37.5rem),var(--green) 0%,transparent 42%),linear-gradient(var(--t),var(--t));-webkit-background-clip:text;background-clip:text;user-select:none;margin-bottom:0.875rem;display:flex;align-items:flex-end;gap:0.5rem;}
.ft-tag{font-family:var(--mono);font-size:clamp(0.625rem,1.05vw,0.75rem);color:var(--t2);letter-spacing:.22em;text-transform:uppercase;margin-bottom:2.875rem;}
@media (hover:none){.ft-mark{background:none;-webkit-text-fill-color:var(--t);}}
.ft-mark-dot{width:clamp(0.75rem,1.8vw,1.375rem);height:clamp(0.75rem,1.8vw,1.375rem);border-radius:50%;background:var(--green);margin-bottom:clamp(2px,0.4vw,0.3125rem);}
.tz-row{display:flex;gap:2.875rem;flex-wrap:wrap;padding-bottom:2.75rem;margin-bottom:3rem;border-bottom:1px solid var(--line);}
.tz{font-family:var(--mono);font-size:0.875rem;color:var(--t2);letter-spacing:.04em;}
.tz span{display:block;font-size:0.625rem;letter-spacing:.16em;text-transform:uppercase;color:var(--t3);margin-bottom:0.4375rem;}

/* ============ WHATSAPP ============ */
.wa{position:fixed;right:1.375rem;bottom:calc(1.375rem + env(safe-area-inset-bottom,0px));z-index:150;width:3.25rem;height:3.25rem;border-radius:50%;background:var(--green);color:var(--btn-text);display:flex;align-items:center;justify-content:center;box-shadow:0 0.625rem 1.875rem rgba(0,0,0,.35);transition:transform .2s cubic-bezier(.3,1,.5,1);}
.wa:hover{transform:scale(1.08) translateY(-2px);}
html.light .wa{box-shadow:0 0.625rem 1.875rem rgba(0,0,0,.18);}

/* ============ BACK TO TOP ============ */
/* a long, thin silver arrow — minimal & premium, no button chrome */
.totop{position:fixed;left:1.875rem;bottom:calc(2.125rem + env(safe-area-inset-bottom,0px));z-index:150;width:1.625rem;height:4.5rem;display:flex;align-items:flex-end;justify-content:center;background:none;border:none;padding:0;cursor:pointer;opacity:0;visibility:hidden;transform:translateY(0.75rem);transition:opacity .45s ease,transform .5s cubic-bezier(.22,1,.36,1);}
.totop.show{opacity:1;visibility:visible;transform:translateY(0);}
.totop svg{width:1.5rem;height:4.5rem;display:block;filter:drop-shadow(0 1px 0.1875rem rgba(0,0,0,.45));transition:transform .4s cubic-bezier(.22,1,.36,1),filter .3s ease;}
.totop:hover svg{transform:translateY(-0.375rem);filter:drop-shadow(0 0.1875rem 0.4375rem rgba(0,0,0,.55)) brightness(1.12);}
html.light .totop svg{filter:brightness(.5) drop-shadow(0 1px 2px rgba(0,0,0,.18));}
html.light .totop:hover svg{filter:brightness(.42) drop-shadow(0 0.1875rem 0.375rem rgba(0,0,0,.22));}

/* ============ PRELOADER ============ */
.preloader{position:fixed;inset:0;z-index:2000;background:var(--bg);display:flex;align-items:center;justify-content:center;transition:opacity .55s ease,visibility .55s;}
.preloader.done{opacity:0;visibility:hidden;}
.pre-logo{font-family:var(--sans);font-weight:500;letter-spacing:-0.01em;font-size:clamp(1.8rem,5.5vw,2.8rem);color:var(--t);display:flex;align-items:flex-end;gap:0.25rem;opacity:0;transition:opacity .5s ease;}
.preloader.fonts-ready .pre-logo{opacity:1;}
.pre-dot{width:0.5625rem;height:0.5625rem;border-radius:50%;background:var(--green);margin-bottom:0.4375rem;animation:breathe 1.1s ease-in-out infinite;}
body.loading{overflow:hidden;}
body.loading .hero-in *{animation-play-state:paused !important;}

@media(max-width:680px){
  .mw{grid-template-columns:1.875rem 1fr;}
  .mw .tag{grid-column:2;padding-top:0.625rem;}
  .mw:hover{padding-left:0;}
  .tz-row{gap:1.75rem;}
  .wa{right:1rem;bottom:calc(1rem + env(safe-area-inset-bottom,0px));width:3rem;height:3rem;}
  /* phone: arrow sits on the right, centered above the WhatsApp button */
  .totop{left:auto;right:1.75rem;bottom:calc(4.875rem + env(safe-area-inset-bottom,0px));height:3.75rem;}
  .totop svg{height:3.75rem;}
}


/* ============ BOOKING ============ */
.pill{display:inline-flex;align-items:center;gap:0.5625rem;font-family:var(--mono);font-size:0.6875rem;letter-spacing:.14em;text-transform:uppercase;color:var(--t2);border:1px solid var(--line2);border-radius:6.25rem;padding:0.4375rem 1rem;margin-bottom:1.625rem;opacity:0;animation:fadeUp .7s ease forwards .05s;}
.pill i{width:0.375rem;height:0.375rem;border-radius:50%;background:var(--green);animation:breathe 2s ease-in-out infinite;}
.bk-dates{display:flex;gap:0.5rem;overflow-x:auto;padding-bottom:0.5rem;margin-bottom:1.375rem;scrollbar-width:none;-webkit-overflow-scrolling:touch;mask-image:linear-gradient(to right,#000 92%,transparent);-webkit-mask-image:linear-gradient(to right,#000 92%,transparent);}
.bk-dates::-webkit-scrollbar{display:none;}
.bk-date{flex:0 0 auto;width:4rem;padding:0.625rem 0 0.75rem;border:1px solid var(--line);border-radius:0.1875rem;background:var(--s1);text-align:center;transition:border-color .2s,background .2s;}
.bk-date span{display:block;font-family:var(--mono);font-size:0.5625rem;letter-spacing:.12em;text-transform:uppercase;color:var(--t3);margin-bottom:0.3125rem;}
.bk-date b{font-family:var(--serif);font-size:1.25rem;font-weight:400;color:var(--t);}
.bk-date small{display:block;font-family:var(--mono);font-size:0.5625rem;color:var(--t3);margin-top:0.1875rem;text-transform:uppercase;letter-spacing:.08em;}
.bk-date:hover{border-color:var(--green-line);}
.bk-date.sel{border-color:var(--green);background:var(--green-faint);}
.bk-date.sel b{color:var(--green);}
.bk-slots{display:grid;grid-template-columns:repeat(3,1fr);gap:0.5rem;margin-bottom:1.375rem;}
.bk-slot{padding:0.6875rem 0;border:1px solid var(--line);border-radius:0.1875rem;background:var(--s1);font-family:var(--mono);font-size:0.8125rem;color:var(--t2);text-align:center;transition:border-color .2s,color .2s,background .2s;}
.bk-slot:hover{border-color:var(--green-line);color:var(--t);}
.bk-slot.sel{border-color:var(--green);background:var(--green-faint);color:var(--green);}
/* already booked: scratched out — real calendar activity, not clickable */
.bk-slot.taken{position:relative;color:var(--t3);background:transparent;border-style:dashed;cursor:not-allowed;text-decoration:line-through;text-decoration-color:var(--t3);text-decoration-thickness:1px;opacity:.55;}
.bk-slot.taken::after{content:'';position:absolute;left:12%;right:12%;top:50%;height:1px;background:var(--green);opacity:.35;transform:rotate(-6deg);}
.bk-slot.taken:hover{border-color:var(--line);color:var(--t3);}
.bk-sum{display:flex;align-items:center;gap:0.625rem;font-family:var(--mono);font-size:0.75rem;color:var(--t2);letter-spacing:.04em;border:1px solid var(--line);border-left:2px solid var(--green);border-radius:2px;padding:0.8125rem 1rem;margin-bottom:1.375rem;min-height:2.875rem;}
.bk-sum i{width:0.3125rem;height:0.3125rem;border-radius:50%;background:var(--green);flex-shrink:0;}
.bk-tz{font-family:var(--mono);font-size:0.625rem;letter-spacing:.1em;text-transform:uppercase;color:var(--t3);margin:-0.875rem 0 1.375rem;}
.m-switch{text-align:center;font-size:0.75rem;color:var(--t3);margin-top:0.875rem;}
.m-switch button{background:none;border:none;color:var(--green);font-size:0.75rem;border-bottom:1px solid var(--green-line);padding:0 0 1px;}
/* Cal.com embed — fallback only, when /api availability is unreachable */
.modal-cal{max-width:57.5rem;}
.cal-wrap{position:relative;height:min(66vh,38.75rem);border:1px solid var(--line);border-radius:0.25rem;background:var(--s1);overflow:hidden;}
.cal-wrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.cal-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:0.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--t3);}
@media(max-width:680px){.bk-slots{grid-template-columns:repeat(3,1fr);gap:0.5625rem;}.bk-slot{padding:0.875rem 0;}.bk-date{width:3.75rem;padding:0.75rem 0 0.875rem;}.modal-cal{padding:1.75rem 0.875rem 1.25rem;}.cal-wrap{height:min(70vh,40rem);}}

/* ============ VIEW TRANSITION (theme cross-fade) ============ */
::view-transition-old(root),::view-transition-new(root){animation-duration:.45s;}

/* ============ REDUCED MOTION ============ */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;}
  html{scroll-behavior:auto;}
  h1 .ln span{transform:none;animation:none;}
  .hero-sub,.hero-btns,.hero-meta{opacity:1;animation:none;}
  .rv{opacity:1;transform:none;}
  #particles{display:none;}
  #mesh{transform:none;}
  #mesh i{animation:none;}
  .tk-track{animation:none;}
}
