/* ==========================================================================
   Delhi Web Designer — core design system (2026 · v2 "Studio Noir")
   Dark studio canvas, coral accent, Jost + Playfair Display, left sidebar shell.
   Shared by every page. Page-specific rules live in /assets/css/pages/*.css
   ========================================================================== */

/* ---------- Fonts (self-hosted, latin subset, variable) ---------- */
@font-face{font-family:"Jost";src:url("../fonts/jost.woff2") format("woff2");font-weight:300 600;font-display:swap}
@font-face{font-family:"Playfair Display";src:url("../fonts/playfair.woff2") format("woff2");font-weight:400 500;font-display:swap}
@font-face{font-family:"Playfair Display";src:url("../fonts/playfair-italic.woff2") format("woff2");font-style:italic;font-weight:400;font-display:swap}

/* ---------- Tokens ---------- */
:root{
  color-scheme:dark;
  /* palette */
  --night:#0A0A0A;        /* page canvas */
  --night-2:#111111;      /* sidebar / recessed */
  --card:#1A1A1A;         /* raised card */
  --card-2:#232323;       /* raised card, hover / inner */
  --card-3:#2E2E2E;       /* borders on cards */
  --snow:#F4F1EE;         /* primary text */
  --ash:#A8A29D;          /* secondary text */
  --ash-2:#77716C;        /* tertiary / labels */
  --coral:#F26B5E;        /* the accent — buttons, serif words, dots */
  --coral-2:#FF8F84;      /* accent text on dark (AA) */
  --coral-glow:rgba(242,107,94,.32);

  /* legacy aliases (inner pages were written against these names) */
  --ink:var(--snow);           /* "strong" foreground */
  --ink-2:var(--card);
  --ink-3:var(--card-3);
  --ivory:var(--night);
  --paper:var(--card);
  --sand:var(--card-2);
  --cobalt:var(--coral);
  --cobalt-deep:var(--coral-2);
  --cobalt-soft:var(--coral-2);
  --champagne:var(--coral-2);
  --bronze:var(--coral-2);
  --slate:var(--ash);
  --mist:var(--ash);
  --marigold:var(--coral-2);
  --sandstone:var(--coral);

  /* semantic */
  --bg:var(--night);
  --fg:var(--snow);
  --muted:var(--ash);
  --line:rgba(255,255,255,.09);
  --line-strong:rgba(255,255,255,.2);
  --link:var(--coral-2);
  --focus:var(--coral-2);

  /* type */
  --f-display:"Jost",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-body:"Jost",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-serif:"Playfair Display",Georgia,"Times New Roman",serif;
  --f-mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;

  --t-xs:.75rem;
  --t-sm:.875rem;
  --t-base:1.0625rem;
  --t-md:clamp(1.125rem,1rem + .4vw,1.3rem);
  --t-lg:clamp(1.35rem,1.1rem + .9vw,1.85rem);
  --t-xl:clamp(1.8rem,1.3rem + 2vw,3rem);
  --t-2xl:clamp(2.3rem,1.5rem + 3.2vw,4.4rem);
  --t-3xl:clamp(2.8rem,1.6rem + 5vw,6.6rem);

  /* space & layout */
  --side:258px;
  --gutter:clamp(1rem,.6rem + 2vw,3rem);
  --section:clamp(4.5rem,3rem + 5vw,8rem);
  --max:1240px;
  --radius:12px;
  --r-card:20px;
  --r-media:14px;
  --ease:cubic-bezier(.2,.7,.1,1);
  --ease-io:cubic-bezier(.65,0,.35,1);
  --hdr:0px;
}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--hdr) + 1.5rem);background:var(--night)}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--f-body);font-size:var(--t-base);font-weight:400;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}
img,svg,video,canvas{display:block;max-width:100%}
img{height:auto}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0;padding:0}
:where(h1:not(.hx),.hx-h1):not(template),:where(h2:not(.hx),.hx-h2):not(template),:where(h3:not(.hx),.hx-h3):not(template),:where(h4:not(.hx),.hx-h4):not(template),:where(h5:not(.hx),.hx-h5):not(template),:where(h6:not(.hx),.hx-h6):not(template){font-family:var(--f-display);font-weight:400;line-height:1.08;letter-spacing:-.01em;margin:0;text-wrap:balance}
p{margin:0 0 1em;text-wrap:pretty}
ul,ol{margin:0;padding:0}
figure,blockquote{margin:0}
::selection{background:var(--coral);color:#140806}
:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:4px}
[hidden]{display:none!important}

/* ---------- Shell: fixed sidebar + content ---------- */
.shell-glow{position:absolute;inset:0 0 auto var(--side);height:140vh;pointer-events:none;z-index:0;background:radial-gradient(60% 45% at 38% -6%,var(--coral-glow),transparent 70%),radial-gradient(35% 30% at 92% 4%,rgba(242,107,94,.12),transparent 70%)}
main,.ftr{position:relative;z-index:1;margin-left:var(--side)}

.side{position:fixed;inset:0 auto 0 0;z-index:60;width:var(--side);display:flex;flex-direction:column;background:var(--night-2);border-right:1px solid var(--line)}
.side__top{padding:2rem 1.6rem 1.4rem;border-bottom:1px solid var(--line);margin-inline:0}
.side__me{display:grid;gap:.15rem;justify-items:start}
.side__ava{width:58px;height:58px;border-radius:50%;object-fit:cover;object-position:50% 18%;background:var(--card-2);box-shadow:0 0 0 2px var(--night-2),0 0 0 3px var(--card-3);margin-bottom:.9rem;transition:box-shadow .35s var(--ease)}
.side__me:hover .side__ava{box-shadow:0 0 0 2px var(--night-2),0 0 0 3px var(--coral)}
.side__me small{font-size:.72rem;color:var(--ash-2);letter-spacing:.04em}
.side__me b{display:grid;font-weight:400;font-size:1.45rem;line-height:1.1;letter-spacing:-.01em}
.side__me b em{font-family:var(--f-serif);font-style:normal;color:var(--coral)}
.side__toggle{display:none}
.side__panel{flex:1;display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none}
.side__panel::-webkit-scrollbar{display:none}
.side__nav{padding:1.4rem 1.6rem 1.6rem}
.side__nav>ul{list-style:none;display:grid;gap:.1rem}
.side__nav a{display:flex;align-items:center;justify-content:space-between;gap:.6rem;min-height:38px;font-size:.95rem;color:var(--ash);transition:color .25s}
.side__nav a .arr{width:12px;height:12px;opacity:0;transform:translate(-6px,6px);transition:opacity .3s,transform .4s var(--ease)}
.side__nav a:hover,.side__nav a[aria-current="page"]{color:var(--snow)}
.side__nav a:hover .arr,.side__nav a[aria-current="page"] .arr{opacity:1;transform:none}
.side__nav a[aria-current="page"]{font-weight:500}
.side__row{display:flex;align-items:center}
.side__row>a{flex:1}
.side__sub-btn{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;color:var(--ash);transition:background .25s,color .25s}
.side__sub-btn:hover{background:var(--card-2);color:var(--snow)}
.side__sub-btn svg{width:10px;height:10px;transition:transform .35s var(--ease)}
.side__sub-btn[aria-expanded="true"] svg{transform:rotate(180deg)}
.side__sub{list-style:none;display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s var(--ease)}
.side__sub>div{overflow:hidden}
.side__sub.is-open{grid-template-rows:1fr}
.side__sub ul{list-style:none;padding:.2rem 0 .5rem .9rem;border-left:1px solid var(--line);margin-left:.15rem}
.side__sub a{min-height:32px;font-size:.86rem}
.side__block{padding:1.2rem 1.6rem;border-top:1px solid var(--line)}
.side__block:first-of-type{margin-top:auto}
.side__label{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ash-2);margin:0 0 .8rem}
.side__status{display:flex;align-items:center;gap:.6rem;font-size:.86rem;margin:0;color:var(--snow)}
.side__status i,.status-dot{position:relative;width:8px;height:8px;border-radius:50%;background:var(--coral);flex:none}
.side__status i::after,.status-dot::after{content:"";position:absolute;inset:0;border-radius:50%;background:var(--coral);animation:ping 2.4s var(--ease) infinite}
@keyframes ping{0%{transform:scale(1);opacity:.7}80%,100%{transform:scale(2.8);opacity:0}}
.side__icons{list-style:none;display:flex;gap:.55rem}
.ico{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;box-shadow:inset 0 0 0 1px var(--line-strong);color:var(--snow);transition:background .25s,color .25s,box-shadow .25s,transform .35s var(--ease)}
.ico svg{width:15px;height:15px}
.ico:hover{background:var(--coral);color:#140806;box-shadow:none;transform:translateY(-2px)}

/* ---------- Utilities ---------- */
.wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--gutter)}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:fixed;left:1rem;top:-4rem;z-index:200;background:var(--coral);color:#140806;padding:.7rem 1rem;border-radius:999px;transition:top .2s}
.skip:focus{top:1rem}
.eyebrow{display:inline-flex;align-items:center;gap:.6rem;font-family:var(--f-display);font-size:var(--t-xs);font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--ash)}
.eyebrow::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--coral);flex:none}
.serif{font-family:var(--f-serif);font-style:normal;font-weight:400;letter-spacing:-.01em;color:var(--coral);text-transform:none}
.up .serif,.serif.up{text-transform:uppercase}
.dot{color:var(--coral)}
.lede{font-size:var(--t-md);line-height:1.6;color:var(--ash);max-width:58ch;font-weight:300}
.on-ink{background:transparent;color:var(--snow)}
.on-ink .lede{color:var(--ash)}
.mono{font-family:var(--f-mono);font-size:.78rem;letter-spacing:.02em}
.num{font-family:var(--f-display);font-feature-settings:"tnum";font-weight:500}
.up{text-transform:uppercase}

/* ---------- Buttons & links ---------- */
.btn{--b:var(--snow);--c:#111;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.6rem;min-height:46px;padding:.7rem 1.4rem;background:var(--b);color:var(--c);font-family:var(--f-display);font-weight:500;font-size:.92rem;letter-spacing:.01em;border-radius:999px;overflow:hidden;isolation:isolate;transition:color .35s var(--ease),box-shadow .35s var(--ease),transform .2s var(--ease)}
.btn::before{content:"";position:absolute;inset:0;background:var(--coral);border-radius:inherit;transform:translateY(101%);transition:transform .45s var(--ease);z-index:-1}
.btn:hover::before,.btn:focus-visible::before{transform:none}
.btn:hover,.btn:focus-visible{color:#140806}
.btn:active{transform:scale(.97)}
.btn .arr{width:14px;height:14px;transition:transform .35s var(--ease)}
.btn:hover .arr{transform:translate(2px,-2px) rotate(-45deg)}
.btn--accent{--b:var(--coral);--c:#140806}
.btn--accent::before{background:var(--snow)}
.btn--accent:hover,.btn--accent:focus-visible{color:#111}
.btn--ghost{--b:transparent;--c:var(--snow);box-shadow:inset 0 0 0 1px var(--line-strong)}
.btn--ghost:hover{box-shadow:inset 0 0 0 1px var(--coral)}
.on-ink .btn{--b:var(--snow);--c:#111}
.on-ink .btn--accent{--b:var(--coral);--c:#140806}
.on-ink .btn--ghost{--b:transparent;--c:var(--snow)}
.btn.is-busy{pointer-events:none;opacity:.7}

.link{position:relative;display:inline-flex;align-items:center;gap:.45rem;font-family:var(--f-display);font-weight:500;color:var(--fg);padding-block:.25rem}
.link::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;transform-origin:100% 50%;transition:transform .45s var(--ease)}
.link:hover{color:var(--coral-2)}
.link:hover::after{transform:scaleX(0);transform-origin:0 50%}
.link .arr{width:14px;height:14px;transition:transform .35s var(--ease)}
.link:hover .arr{transform:translate(3px,-3px)}
.prose a,.text-link{color:var(--link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;transition:text-decoration-thickness .2s}
.prose a:hover,.text-link:hover{text-decoration-thickness:2px}
.on-ink .text-link{color:var(--coral-2)}

/* ---------- Browser frame component ---------- */
.frame{position:relative;background:var(--card);border-radius:var(--r-media);box-shadow:0 0 0 1px var(--card-3),0 30px 60px -30px #000;overflow:hidden}
.frame__bar{display:flex;align-items:center;gap:.4rem;height:28px;padding:0 .8rem;background:var(--card-2);border-bottom:1px solid var(--card-3)}
.frame__bar i{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.18)}
.frame__bar i:first-child{background:var(--coral)}
.frame__bar span{margin-left:.6rem;flex:1;height:15px;border-radius:999px;background:rgba(255,255,255,.06);font:500 9px/15px var(--f-mono);color:var(--ash);padding:0 .6rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.frame__view{position:relative;aspect-ratio:var(--ar,16/11);overflow:hidden;background:var(--card-2)}
.frame__view img{width:100%;height:100%;object-fit:cover;object-position:top center}

/* ---------- Sections ---------- */
.section{padding-block:var(--section)}
.section--tight{padding-block:calc(var(--section) * .6)}
.sec-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem 4rem;align-items:end;margin-bottom:clamp(2.5rem,2rem + 2vw,4rem)}
.sec-head :where(h2:not(.hx),.hx-h2):not(template){font-size:var(--t-2xl);text-transform:uppercase;line-height:1}
.sec-head .lede{justify-self:end}
.sec-head .eyebrow{grid-column:1/-1}
.h-up{text-transform:uppercase;line-height:1}

/* Page hero (inner pages) */
.phero{padding-top:calc(var(--hdr) + clamp(3rem,2rem + 4vw,6rem));padding-bottom:clamp(3rem,2rem + 3vw,5rem);position:relative}
.phero :where(h1:not(.hx),.hx-h1):not(template){font-size:var(--t-3xl);letter-spacing:-.02em;line-height:.98;text-transform:uppercase}
.crumbs{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;font-size:var(--t-sm);color:var(--ash);margin-bottom:1.6rem}
.crumbs li+li::before{content:"/";margin-right:.4rem;opacity:.5}
.crumbs a:hover{color:var(--coral-2)}
.on-ink .crumbs{color:var(--ash)}

.gridlines{display:none}

/* Chips */
.chips{display:flex;flex-wrap:wrap;gap:.5rem}
.chip{display:inline-flex;align-items:center;gap:.4rem;min-height:38px;padding:.4rem .95rem;border-radius:999px;box-shadow:inset 0 0 0 1px var(--line-strong);font-family:var(--f-display);font-weight:400;font-size:.86rem;transition:background .25s,color .25s,box-shadow .25s}
.chip small{font-weight:500;color:var(--ash);font-size:.74rem}
.chip:hover{box-shadow:inset 0 0 0 1px var(--coral)}
.chip[aria-pressed="true"],.chip.is-on{background:var(--snow);color:#111;box-shadow:none}
.chip[aria-pressed="true"] small,.chip.is-on small{color:#555}
.tag{display:inline-block;font-family:var(--f-display);font-size:.72rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--coral-2)}

/* Prose (blog posts, case studies) */
.prose{font-size:1.08rem;line-height:1.75;max-width:68ch;color:#D9D4CF}
.prose>*+*{margin-top:1.1em}
.prose p{margin-bottom:0}
.prose :where(h2:not(.hx),.hx-h2):not(template){font-size:var(--t-xl);margin-top:2.2em;color:var(--snow)}
.prose :where(h3:not(.hx),.hx-h3):not(template){font-size:var(--t-lg);margin-top:1.8em;color:var(--snow)}
.prose :where(h4:not(.hx),.hx-h4):not(template),.prose :where(h5:not(.hx),.hx-h5):not(template),.prose :where(h6:not(.hx),.hx-h6):not(template){font-size:var(--t-md);margin-top:1.6em;color:var(--snow)}
.prose ul,.prose ol{padding-left:1.25em}
.prose li+li{margin-top:.4em}
.prose li::marker{color:var(--coral)}
.prose img{border-radius:var(--r-media);margin-block:1.6em}
.prose figure{margin:1.6em 0}
.prose hr{border:0;height:1px;background:var(--line);margin:2.4em 0}
.prose strong,.prose b{font-weight:500;color:var(--snow)}
.prose code{font-family:var(--f-mono);font-size:.9em;background:var(--card-2);padding:.1em .35em;border-radius:4px}

/* Reveal on scroll (progressive; content visible without JS) */
.js [data-reveal]{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform 1.1s var(--ease)}
.js [data-reveal].is-in{opacity:1;transform:none}
.js [data-reveal="fade"]{transform:none}
.js [data-reveal-d="1"]{transition-delay:.08s}.js [data-reveal-d="2"]{transition-delay:.16s}.js [data-reveal-d="3"]{transition-delay:.24s}

/* Work card (shared by home, portfolio, related) */
.wcard{position:relative;display:block}
.wcard__img{position:relative;overflow:hidden;background:var(--card-2);border-radius:var(--r-media);aspect-ratio:var(--ar,789/650)}
.wcard__img img{width:100%;height:100%;object-fit:cover;object-position:top center;transition:transform 1.2s var(--ease),object-position 3.5s var(--ease)}
.wcard:hover .wcard__img img{transform:scale(1.035);object-position:bottom center}
.wcard__img::after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 1px rgba(255,255,255,.07);border-radius:inherit;pointer-events:none}
.wcard__meta{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-top:.9rem}
.wcard__meta :where(h3:not(.hx),.hx-h3):not(template){font-size:1.06rem;font-weight:400;line-height:1.3}
.wcard__meta .tag{flex:none}
.wcard__go{position:absolute;right:.9rem;top:.9rem;width:46px;height:46px;border-radius:50%;background:rgba(20,20,20,.55);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.25);color:#fff;display:grid;place-items:center;transform:scale(0) rotate(-45deg);transition:transform .5s var(--ease),background .3s}
.wcard__go svg{width:16px;height:16px;transform:rotate(-45deg)}
.wcard:hover .wcard__go,.wcard:focus-visible .wcard__go{transform:scale(1) rotate(0);background:var(--coral);color:#140806}
.wcard__ph{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(140deg,var(--card-2),var(--card));color:var(--snow);font-family:var(--f-serif);font-size:clamp(2.5rem,6vw,4.5rem)}
.wcard__ph::after{content:".";color:var(--coral)}

/* ---------- CTA band ---------- */
.cta{position:relative;overflow:hidden}
.cta::before{content:"";position:absolute;inset:auto -10% -40% -10%;height:90%;background:radial-gradient(50% 60% at 50% 100%,var(--coral-glow),transparent 70%);pointer-events:none}
.cta__in{position:relative;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:3rem;align-items:end;background:var(--card);border-radius:28px;box-shadow:inset 0 0 0 1px var(--card-3);padding:clamp(2rem,1rem + 4vw,4.5rem)}
.cta :where(h2:not(.hx),.hx-h2):not(template){font-size:var(--t-3xl);letter-spacing:-.02em;line-height:.95;text-transform:uppercase}
.cta :where(h2:not(.hx),.hx-h2):not(template) .big-dot{display:inline-block;width:.18em;height:.18em;border-radius:50%;background:var(--coral);margin-left:.06em;vertical-align:baseline;animation:pulse 3.2s var(--ease-io) infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(242,107,94,.55)}60%{box-shadow:0 0 0 .35em rgba(242,107,94,0)}}
.cta__contact{display:grid;gap:0;border-top:1px solid var(--line)}
.cta__contact a{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--line);font-family:var(--f-display);font-weight:400;font-size:var(--t-md);transition:color .25s,padding .4s var(--ease)}
.cta__contact a span{font-family:var(--f-body);font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ash)}
.cta__contact a:hover{color:var(--coral-2);padding-left:.5rem}
.cta__actions{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:2rem}

/* ---------- Footer ---------- */
.ftr{color:var(--snow);padding-top:clamp(3.5rem,3rem + 3vw,6rem);overflow:hidden;border-top:1px solid var(--line);background:var(--night)}
.ftr__grid{display:grid;grid-template-columns:1.5fr 1fr 1.1fr 1.3fr 1.2fr;gap:2.5rem}
.ftr :where(h2:not(.hx),.hx-h2):not(template){font-size:.7rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--ash-2);margin-bottom:1.1rem}
.ftr ul{list-style:none;display:grid;gap:.1rem}
.ftr li a{display:inline-block;padding:.22rem 0;font-size:.92rem;color:var(--ash);transition:color .2s}
.ftr li a:hover{color:var(--coral-2)}
.ftr .brand{display:inline-grid;line-height:1.05;font-size:1.6rem}
.ftr .brand b{font-weight:400}
.ftr .brand b i{font-style:normal;color:var(--coral)}
.ftr .brand span{font-family:var(--f-serif);color:var(--coral)}
.ftr__about p{font-size:.93rem;color:var(--ash);max-width:34ch;margin-top:1.1rem}
.ftr__contact a{color:var(--snow)!important}
.ftr__contact p{font-size:.86rem;color:var(--ash);margin:.6rem 0 0}
.ftr__bar{display:flex;flex-wrap:wrap;gap:.6rem 2rem;justify-content:space-between;align-items:center;border-top:1px solid var(--line);margin-top:3rem;padding-block:1.4rem 2rem;font-size:.84rem;color:var(--ash-2)}
.ftr__bar ul{display:flex;flex-wrap:wrap;gap:.2rem 1.4rem}
.ftr__bar a:hover{color:var(--coral-2)}
.ftr__more{margin-top:2.5rem;border-top:1px solid var(--line);padding-top:1rem}
.ftr__more summary{cursor:pointer;font-family:var(--f-display);font-size:.9rem;color:var(--ash);list-style:none;display:inline-flex;align-items:center;gap:.5rem;min-height:44px}
.ftr__more summary::-webkit-details-marker{display:none}
.ftr__more summary::before{content:"+";display:grid;place-items:center;width:22px;height:22px;border-radius:50%;box-shadow:inset 0 0 0 1px var(--line-strong);transition:transform .3s var(--ease)}
.ftr__more[open] summary::before{transform:rotate(45deg)}
.ftr__more-grid{display:grid;grid-template-columns:2fr 1fr;gap:2rem;padding:1rem 0 .5rem}
.ftr__more-grid ul{columns:2 200px;column-gap:2rem;display:block}
.ftr__more-grid li{break-inside:avoid}

/* ---------- Forms ---------- */
.field{display:grid;gap:.4rem}
.field label,.field legend{font-family:var(--f-display);font-weight:500;font-size:.86rem}
.field label small,.field legend small{font-weight:400;color:var(--ash);font-family:var(--f-body)}
.input{width:100%;min-height:52px;padding:.85rem 1rem;background:var(--card);border:1px solid var(--card-3);border-radius:var(--radius);font-size:1rem;color:var(--snow);transition:border-color .2s,box-shadow .2s}
.input::placeholder{color:var(--ash-2)}
textarea.input{min-height:150px;resize:vertical;line-height:1.55}
.input:hover{border-color:var(--line-strong)}
.input:focus{outline:none;border-color:var(--coral);box-shadow:0 0 0 3px rgba(242,107,94,.2)}
.field.is-invalid .input{border-color:#FF6B6B;box-shadow:0 0 0 3px rgba(255,107,107,.15)}
.field .err{font-size:.84rem;color:#FF8A8A;min-height:0}
select.input{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23F4F1EE' stroke-width='1.6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;background-size:12px;padding-right:2.6rem}
select.input option{background:var(--card);color:var(--snow)}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.form-status{border-radius:var(--radius);padding:1rem 1.1rem;font-size:.95rem;line-height:1.5}
.form-status.is-ok{background:rgba(52,168,103,.12);color:#9BE3B8;box-shadow:inset 0 0 0 1px rgba(52,168,103,.4)}
.form-status.is-err{background:rgba(255,107,107,.1);color:#FFB3AB;box-shadow:inset 0 0 0 1px rgba(255,107,107,.35)}
.form-status a{text-decoration:underline;font-weight:500}

/* ---------- Responsive ---------- */
@media (max-width:1280px){
  .ftr__grid{grid-template-columns:1.4fr 1fr 1fr;row-gap:2.5rem}
  .ftr__about{grid-column:1/-1}
}
@media (max-width:1024px){
  :root{--side:0px;--hdr:68px}
  .shell-glow{left:0}
  .side{inset:0 0 auto 0;width:auto;height:var(--hdr);flex-direction:row;border-right:0;border-bottom:1px solid var(--line);background:transparent}
  .side::before{content:"";position:absolute;inset:0;z-index:-1;background:rgba(10,10,10,.82);backdrop-filter:saturate(1.3) blur(14px);-webkit-backdrop-filter:saturate(1.3) blur(14px)}
  .side-open .side::before{background:var(--night)}
  .side__top{flex:1;display:flex;align-items:center;justify-content:space-between;padding:0 var(--gutter);border:0}
  .side__me{grid-template-columns:auto auto;align-items:center;column-gap:.7rem}
  .side__ava{width:40px;height:40px;margin:0;grid-row:span 2}
  .side__me small{display:none}
  .side__me b{display:flex;gap:.35rem;font-size:1.15rem}
  .side__toggle{display:grid;place-items:center;position:relative;width:46px;height:46px;border-radius:50%;background:var(--coral)}
  .side__toggle i{position:absolute;width:16px;height:1.5px;background:#140806;transition:transform .4s var(--ease)}
  .side__toggle i:first-of-type{transform:translateY(-3.5px)}
  .side__toggle i:last-of-type{transform:translateY(3.5px)}
  .side-open .side__toggle i:first-of-type{transform:rotate(45deg)}
  .side-open .side__toggle i:last-of-type{transform:rotate(-45deg)}
  .side__panel{position:fixed;inset:var(--hdr) 0 0 0;background:var(--night);clip-path:inset(0 0 100% 0);visibility:hidden;transition:clip-path .55s var(--ease-io),visibility 0s .55s}
  .side-open .side__panel{clip-path:inset(0 0 0 0);visibility:visible;transition:clip-path .55s var(--ease-io),visibility 0s}
  .side-open{overflow:hidden}
  .side__nav{padding:1.5rem var(--gutter)}
  .side__nav a{font-size:1.6rem;min-height:52px;color:var(--snow)}
  .side__nav>ul>li{border-bottom:1px solid var(--line)}
  .side__sub a{font-size:1rem;min-height:40px;color:var(--ash)}
  .side__block{padding-inline:var(--gutter)}
  .sec-head{grid-template-columns:1fr}
  .sec-head .lede{justify-self:start}
  .cta__in{grid-template-columns:1fr}
}
@media (max-width:640px){
  .ftr__grid{grid-template-columns:1fr 1fr}
  .ftr__contact{grid-column:1/-1}
  .ftr__more-grid{grid-template-columns:1fr}
  .cta__in{border-radius:20px}
}
@media (max-width:380px){.ftr__grid{grid-template-columns:1fr}}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}
  .js [data-reveal]{opacity:1;transform:none}
}

/* ---------- Print ---------- */
@media print{.side,.shell-glow,.cta{display:none}main,.ftr{margin:0}body{background:#fff;color:#111}}

/* ---------- Floating WhatsApp button (every page) ---------- */
.wa-float{position:fixed;right:clamp(14px,2vw,26px);bottom:clamp(14px,2vw,26px);z-index:70;display:inline-flex;align-items:center;gap:.6rem;height:56px;padding:0 1.15rem 0 .95rem;border-radius:999px;background:#25D366;color:#06210f;font-family:var(--f-display);font-weight:500;font-size:.95rem;box-shadow:0 14px 30px -10px rgba(37,211,102,.55),0 0 0 1px rgba(255,255,255,.12) inset;transition:transform .35s var(--ease),box-shadow .35s var(--ease)}
.wa-float svg{width:26px;height:26px;flex:none}
.wa-float:hover{transform:translateY(-3px);box-shadow:0 20px 40px -12px rgba(37,211,102,.7)}
.wa-float:focus-visible{outline:2px solid #fff;outline-offset:3px}
.wa-float::before{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 0 rgba(37,211,102,.5);animation:waPulse 2.8s var(--ease) infinite;pointer-events:none}
@keyframes waPulse{0%{box-shadow:0 0 0 0 rgba(37,211,102,.45)}70%,100%{box-shadow:0 0 0 16px rgba(37,211,102,0)}}
@media (max-width:640px){.wa-float{width:56px;padding:0;justify-content:center}.wa-float span{display:none}}
@media print{.wa-float{display:none}}
.side-open .wa-float{display:none}
