/* =====================================================================
   SOLARIS — v3
   Dark + paper palette · Fraunces (headings) + Space Grotesk (body)

   TYPE SCALE (phone → desktop)
   --fs-hero   42 → 84px   hero title only
   --fs-h1     34 → 48px   page titles (login / signup / admin)
   --fs-h2     30 → 46px   every section heading
   --fs-h3     19 → 22px   card / step titles
   --fs-lead   17 → 19px   intro line under a heading, hero subtitle
   --fs-body   16px        normal paragraphs
   --fs-sm     14px        captions, labels, footer links
   --fs-xs     12px        eyebrows (UPPERCASE, letter-spaced)

   SPACING RULE
   Paragraphs have NO default margin. Only a paragraph that follows
   another paragraph gets a gap (0.75em). Heading → text gap is fixed
   per component, so every section looks the same.
   ===================================================================== */
:root{
  --ink:#0a0a0a;
  --panel:#121212;
  --panel-2:#1a1a1a;
  --paper:#f4f2ec;
  --paper-2:#ebe8df;
  --white:#fff;
  --grey:#a8a8a0;
  --grey-dim:#83837c;
  --ink-2:#45453f;
  --ink-3:#6d6d66;
  --line:rgba(244,242,236,.12);
  --line-strong:rgba(244,242,236,.22);
  --line-ink:rgba(10,10,10,.14);
  --sun:#f2b544;
  --sun-hover:#f7c766;
  --ok:#2f7d4f;
  --err:#b3261e;

  --serif:'Fraunces', Georgia, 'Times New Roman', serif;
  --sans:'Space Grotesk', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;

  --fs-hero:clamp(2.625rem, 1.5rem + 5vw, 5.25rem);
  --fs-h1:clamp(2.125rem, 1.7rem + 2vw, 3rem);
  --fs-h2:clamp(1.875rem, 1.3rem + 2.2vw, 2.875rem);
  --fs-h3:clamp(1.1875rem, 1.1rem + .4vw, 1.375rem);
  --fs-lead:clamp(1.0625rem, 1rem + .3vw, 1.1875rem);
  --fs-body:1rem;
  --fs-sm:.875rem;
  --fs-xs:.75rem;

  --wrap:1200px;
  --gutter:clamp(1rem, 4vw, 2.5rem);
  --section:clamp(2.5rem, 2rem + 2.5vw, 4rem);
  --head-gap:clamp(1.75rem, 1.5rem + 1vw, 2.5rem);   /* section heading → content */
  --nav-h:72px;
  --radius:6px;
  --ease:cubic-bezier(.2,.7,.2,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
}

/* ============ BASE ============ */
*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; scroll-padding-top:var(--nav-h); -webkit-text-size-adjust:100%; }
body{ background:var(--ink); color:var(--paper); font-family:var(--sans); font-size:var(--fs-body); line-height:1.6; -webkit-font-smoothing:antialiased; overflow-x:hidden; overflow-wrap:break-word; }
body.no-scroll{ overflow:hidden; }
img,svg,video{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
ul,ol{ list-style:none; }
button,input,select,textarea{ font:inherit; color:inherit; }
h1,h2,h3,h4{ font-family:var(--serif); font-weight:500; line-height:1.12; letter-spacing:-.015em; text-wrap:balance; }
p{ color:var(--grey); max-width:62ch; text-wrap:pretty; }
p + p{ margin-top:.75em; }
strong{ color:var(--paper); font-weight:600; }
:focus-visible{ outline:2px solid var(--sun); outline-offset:3px; }
::selection{ background:var(--sun); color:var(--ink); }
[hidden]{ display:none !important; }
.sr{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

.container{ width:100%; max-width:var(--wrap); margin:0 auto; padding-inline:var(--gutter); }
.skip-link{ position:absolute; left:-999px; top:0; z-index:200; background:var(--sun); color:var(--ink); padding:.6rem 1rem; font-weight:600; }
.skip-link:focus{ left:1rem; top:1rem; }

/* ============ SECTIONS ============ */
.section{ padding-block:var(--section); }
.section--panel{ background:var(--panel); border-block:1px solid var(--line); }
.section--paper{ background:var(--paper); color:var(--ink); }
.section--paper p{ color:var(--ink-2); }
.section--paper strong{ color:var(--ink); }

.eyebrow{ display:inline-flex; align-items:center; gap:.6rem; font-family:var(--sans); font-size:var(--fs-xs); font-weight:600; letter-spacing:.14em; line-height:1.4; text-transform:uppercase; color:var(--grey); margin-bottom:.875rem; }
.eyebrow::before{ content:""; width:18px; height:1px; background:currentColor; opacity:.7; }
p.eyebrow{ max-width:none; }
.eyebrow--sun,.section--paper .eyebrow--sun{ color:var(--sun); }
.section--paper p.eyebrow{ color:var(--ink-3); }

.section-head{ max-width:720px; margin-bottom:var(--head-gap); }
.section-head h2{ font-size:var(--fs-h2); color:var(--paper); }
.section-head h2 + p{ margin-top:.875rem; font-size:var(--fs-lead); }
.section--paper .section-head h2{ color:var(--ink); }
.section-head--row{ max-width:none; display:flex; justify-content:space-between; align-items:flex-end; gap:1rem 4rem; flex-wrap:wrap; }
.section-head--row > p{ max-width:42ch; margin:0; }

/* ============ BUTTONS ============ */
.btn{ position:relative; display:inline-flex; align-items:center; justify-content:center; gap:.5rem; min-height:48px; padding:.8rem 1.6rem; font-family:var(--sans); font-size:1rem; font-weight:600; line-height:1.2; border:1px solid transparent; border-radius:var(--radius); cursor:pointer; white-space:nowrap; overflow:hidden; isolation:isolate;
  transition:background .25s, color .25s, border-color .25s, transform .3s var(--ease-out), box-shadow .3s; }
.btn:hover{ transform:translateY(-2px); }
.btn:active{ transform:translateY(0); }
.btn-sm{ min-height:40px; padding:.55rem 1.1rem; font-size:.9375rem; }
.btn-sun{ background:var(--sun); color:var(--ink); }
.hero-actions .btn-sun,.hero-actions .btn-sun:hover{ background:#fff; }
.btn-sun:hover{ background:var(--sun-hover); box-shadow:0 10px 28px -10px rgba(242,181,68,.6); }
.btn-sun::after{ content:""; position:absolute; inset:0; z-index:-1; background:linear-gradient(110deg, transparent 30%, rgba(255,255,255,.45) 50%, transparent 70%); transform:translateX(-120%); transition:transform .7s var(--ease); }
.btn-sun:hover::after{ transform:translateX(120%); }
.btn-line{ background:transparent; color:var(--paper); border-color:var(--line-strong); }
.btn-line:hover{ border-color:var(--paper); background:rgba(244,242,236,.06); }
.btn-ink{ background:var(--ink); color:var(--paper); }
.btn-ink:hover{ background:#262626; box-shadow:0 10px 24px -12px rgba(0,0,0,.6); }
.btn-wide{ width:100%; }

/* ============ NAV ============ */
.nav{ position:fixed; inset:0 0 auto 0; z-index:100; height:var(--nav-h); background:linear-gradient(180deg, rgba(10,10,10,.7), rgba(10,10,10,0)); border-bottom:1px solid transparent; transition:background .35s, border-color .35s, height .35s var(--ease); }
.nav.is-scrolled,.nav--solid{ background:rgba(10,10,10,.88); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); border-bottom-color:var(--line); }
.nav-inner{ max-width:var(--wrap); height:100%; margin:0 auto; padding-inline:var(--gutter); display:flex; align-items:center; justify-content:space-between; gap:1.5rem; }
.logo{ display:inline-flex; align-items:center; gap:.55rem; font-family:var(--serif); font-size:1.25rem; font-weight:600; letter-spacing:.14em; color:var(--paper); flex-shrink:0; }
.logo-mark{ width:22px; height:22px; color:var(--sun); transition:transform .8s var(--ease-out); }
.logo:hover .logo-mark{ transform:rotate(90deg); }
.logo-img{ display:block; height:52px; width:auto; transition:opacity .2s; }
.logo:hover .logo-img{ opacity:.88; }
.logo-img--footer{ height:64px; }
@media (max-width:720px){ .logo-img{ height:42px; } .logo-img--footer{ height:56px; } }
.nav-links{ display:flex; align-items:center; gap:1.5rem; font-size:.9375rem; }
.nav-links > a:not(.btn){ position:relative; color:var(--grey); padding-block:.4rem; transition:color .2s; }
.nav-links > a:not(.btn):not(.nav-signup)::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:1px; background:var(--sun); transform:scaleX(0); transform-origin:right; transition:transform .35s var(--ease-out); }
.nav-links > a:not(.btn):hover{ color:var(--paper); }
.nav-links > a:not(.btn):not(.nav-signup):hover::after,.nav-links > a.is-active::after{ transform:scaleX(1); transform-origin:left; }
.nav-links > a.is-active{ color:var(--paper); }
.nav-divider{ width:1px; height:18px; background:var(--line-strong); }
.nav-links .nav-login{ color:var(--paper); }
.nav-links .nav-signup{ color:var(--paper); border:1px solid var(--line-strong); padding:.45rem 1rem; border-radius:var(--radius); transition:border-color .2s; }
.nav-links .nav-signup:hover{ border-color:var(--paper); }
.nav-toggle{ display:none; width:44px; height:44px; margin-right:-10px; background:none; border:0; cursor:pointer; position:relative; }
.nav-toggle span{ position:absolute; left:11px; width:22px; height:1.5px; background:var(--paper); transition:transform .35s var(--ease-out), opacity .2s; }
.nav-toggle span:nth-child(1){ top:15px; } .nav-toggle span:nth-child(2){ top:21px; } .nav-toggle span:nth-child(3){ top:27px; }
.nav-toggle.is-open span:nth-child(1){ transform:translateY(6px) rotate(45deg); }
.nav-toggle.is-open span:nth-child(2){ opacity:0; }
.nav-toggle.is-open span:nth-child(3){ transform:translateY(-6px) rotate(-45deg); }

/* ============ HERO ============ */
.hero{ position:relative; min-height:100vh; min-height:100svh; display:flex; align-items:center; padding:calc(var(--nav-h) + 3rem) 0 6rem; overflow:hidden; isolation:isolate; }
.hero-video{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:grayscale(80%) contrast(1.05) brightness(.8); z-index:-2; animation:heroZoom 14s var(--ease) both; }
@keyframes heroZoom{ from{ transform:scale(1.12); } to{ transform:scale(1); } }
.hero-overlay{ position:absolute; inset:0; z-index:-1; background:
  radial-gradient(ellipse at 50% 45%, rgba(10,10,10,.25), rgba(10,10,10,.65) 70%),
  linear-gradient(180deg, rgba(10,10,10,.35) 0%, rgba(10,10,10,.15) 40%, rgba(10,10,10,.92) 100%); }
.hero-content{ text-align:center; display:flex; flex-direction:column; align-items:center; }
.hero-title{ font-size:var(--fs-hero); font-weight:400; line-height:1.04; letter-spacing:-.03em; color:var(--white); margin-bottom:1.25rem; }
.hero-sub{ font-size:var(--fs-lead); color:rgba(244,242,236,.85); max-width:36rem; margin-bottom:2rem; }
.hero-actions{ display:flex; gap:.875rem; flex-wrap:wrap; justify-content:center; }
.hero-trust{ display:flex; flex-wrap:wrap; justify-content:center; gap:.5rem 1.75rem; margin-top:2.25rem; font-size:var(--fs-sm); color:rgba(244,242,236,.78); }
.hero-trust li{ display:flex; align-items:center; gap:.5rem; }
.hero-trust li::before{ content:"✓"; display:inline-flex; align-items:center; justify-content:center; width:1rem; height:1rem; flex:0 0 1rem; border:1px solid var(--sun); border-radius:50%; color:var(--sun); font-size:.65rem; font-weight:700; line-height:1; }
@keyframes dotPulse{ 0%{ box-shadow:0 0 0 0 rgba(242,181,68,.55); } 70%,100%{ box-shadow:0 0 0 7px rgba(242,181,68,0); } }
.hero-in{ opacity:0; transform:translateY(22px); animation:heroIn .9s var(--ease-out) forwards; animation-delay:calc(.15s + var(--i, 0) * .12s); }
@keyframes heroIn{ to{ opacity:1; transform:none; } }
.scroll-cue{ position:absolute; bottom:1.75rem; left:50%; transform:translateX(-50%); padding:.5rem; }
.scroll-cue span{ display:block; width:1px; height:40px; background:linear-gradient(var(--paper), transparent); animation:scrollPulse 2.2s ease-in-out infinite; }
@keyframes scrollPulse{ 0%,100%{ opacity:.25; transform:scaleY(.7); transform-origin:top; } 50%{ opacity:1; transform:scaleY(1); } }

/* ============ STATS ============ */
.stats{ border-bottom:1px solid var(--line); }
.stats-grid{ display:grid; grid-template-columns:repeat(4,1fr); padding-block:clamp(3rem, 2rem + 3vw, 4.5rem); }
.stat{ text-align:center; padding:0 1rem; border-left:1px solid var(--line); }
.stat:first-child{ border-left:0; }
.stat-num{ display:block; font-family:var(--serif); font-size:clamp(2.5rem, 1.8rem + 2.4vw, 3.5rem); line-height:1; color:var(--paper); letter-spacing:-.02em; font-variant-numeric:tabular-nums; }
.stat-num i{ font-style:normal; font-size:.5em; color:var(--sun); margin-left:.1em; }
.stat-label{ display:block; margin-top:.75rem; font-size:var(--fs-sm); line-height:1.4; color:var(--grey); }

/* ============ SERVICES ============ */
.service-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1.25rem; }
.service{ display:flex; flex-direction:column; background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; transition:transform .45s var(--ease-out), border-color .3s, box-shadow .45s; }
.service:hover{ transform:translateY(-6px); border-color:var(--line-strong); box-shadow:0 24px 50px -28px rgba(0,0,0,.9); }
.service-art{ position:relative; aspect-ratio:16/10; background:
  linear-gradient(var(--line) 1px, transparent 1px) 0 0/22px 22px,
  linear-gradient(90deg, var(--line) 1px, transparent 1px) 0 0/22px 22px, var(--panel-2);
  border-bottom:1px solid var(--line); overflow:hidden; }
.service-art::after{ content:""; position:absolute; inset:0; background:radial-gradient(ellipse at 50% 120%, rgba(10,10,10,0), rgba(18,18,18,.65) 85%); pointer-events:none; }
.service-art img{ position:relative; z-index:1; width:100%; height:100%; object-fit:contain; padding:.5rem; transition:transform .6s var(--ease-out); }
.service:hover .service-art img{ transform:scale(1.06); }
.service-body{ display:flex; flex-direction:column; flex:1; padding:1.5rem 1.5rem 1.375rem; }
.service h3{ font-size:var(--fs-h3); color:var(--paper); margin-bottom:.5rem; }
.service p{ font-size:.9375rem; line-height:1.55; }
.service-tag{ margin-top:auto; padding-top:1.25rem; font-size:var(--fs-xs); font-weight:600; letter-spacing:.08em; line-height:1.4; text-transform:uppercase; color:var(--sun); }

/* ============ BRANDS ============ */
.brands{ margin-top:clamp(3.5rem, 3rem + 2vw, 5rem); text-align:center; }
.brands-label{ font-family:var(--serif); font-size:clamp(1.7rem, 1.35rem + 1.25vw, 2.35rem); font-weight:500; line-height:1.12; color:var(--paper); margin:0 auto 1.25rem; max-width:24ch; }
.brands-track{ overflow:hidden; border-block:1px solid var(--line); -webkit-mask-image:linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); mask-image:linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }
.brands-row{ display:flex; width:max-content; gap:3.5rem; padding:1.6rem 1.75rem; font-family:var(--serif); font-size:clamp(1.0625rem, 1rem + .4vw, 1.3125rem); color:var(--grey); white-space:nowrap; animation:marquee 32s linear infinite; }
.brands-track:hover .brands-row{ animation-play-state:paused; }
@keyframes marquee{ to{ transform:translateX(-50%); } }
.brands-note{ margin:1.25rem auto 0; font-size:var(--fs-sm); color:var(--grey-dim); max-width:none; }

/* ============ PROCESS ============ */
.process-list{ position:relative; display:grid; grid-template-columns:repeat(4,1fr); gap:1.25rem; }
.process-step{ display:flex; flex-direction:column; background:var(--white); border:1px solid var(--line-ink); border-radius:var(--radius); overflow:hidden; transition:transform .45s var(--ease-out), box-shadow .45s; }
.process-step:hover{ transform:translateY(-6px); box-shadow:0 24px 40px -26px rgba(10,10,10,.35); }
.step-art{ position:relative; aspect-ratio:5/3; background:var(--paper-2); border-bottom:1px solid var(--line-ink); }
.step-art img{ width:100%; height:100%; object-fit:contain; padding:.75rem; transition:transform .6s var(--ease-out); }
.process-step:hover .step-art img{ transform:scale(1.05); }
.step-no{ position:absolute; top:.75rem; left:.75rem; display:grid; place-items:center; width:38px; height:38px; border-radius:50%; background:var(--ink); color:var(--paper); font-family:var(--sans); font-size:.8125rem; font-weight:700; letter-spacing:.02em; }
.process-step h3{ font-size:var(--fs-h3); color:var(--ink); padding:1.375rem 1.375rem 0; }
.process-step p{ font-size:.9375rem; line-height:1.55; color:var(--ink-2); padding:.5rem 1.375rem 1.5rem; }

/* ============ SUBSIDY ============ */
.subsidy{ display:grid; grid-template-columns:1.05fr 1fr; gap:clamp(2.5rem, 2rem + 4vw, 6rem); align-items:center; }
.subsidy-text h2{ font-size:var(--fs-h2); margin-bottom:1rem; }
.subsidy-text h2 + p{ font-size:var(--fs-lead); color:rgba(244,242,236,.85); }
.subsidy-text .btn{ margin-top:1.75rem; }
.subsidy-table{ background:var(--ink); border:1px solid var(--line-strong); border-radius:var(--radius); overflow:hidden; }
.subsidy-row{ display:grid; grid-template-columns:1.1fr .9fr 1.2fr; gap:1rem; padding:1.15rem 1.5rem; font-size:.9375rem; color:var(--paper); border-bottom:1px solid var(--line); transition:background .25s; }
.subsidy-row:not(.subsidy-row--head):hover{ background:var(--panel-2); }
.subsidy-row span:last-child{ text-align:right; color:var(--paper); font-weight:600; }
.subsidy-row--head{ font-size:var(--fs-xs); font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--sun); background:var(--panel-2); }
.subsidy-row--head span:last-child{ color:var(--sun); }
.subsidy-row--hi span:last-child{ color:var(--sun); }
.subsidy-foot{ padding:1rem 1.5rem 1.2rem; font-size:.8125rem; color:var(--grey); max-width:none; }

/* ============ WORK ============ */
.work-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.5rem; }
.work-card{ display:flex; flex-direction:column; }
.work-visual{ position:relative; overflow:hidden; aspect-ratio:4/3; background:var(--panel); border-radius:var(--radius); }
.work-visual img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:grayscale(25%); transition:transform .8s var(--ease-out), filter .5s; }
.work-card:hover img{ transform:scale(1.05); filter:none; }
.work-card--hidden{ display:none; }
.work-meta{ display:flex; justify-content:space-between; align-items:baseline; gap:1rem; padding-top:.875rem; }
.work-meta span{ font-size:.9375rem; font-weight:500; color:var(--paper); }
.work-meta small{ font-size:var(--fs-sm); color:var(--grey-dim); text-align:right; }
.work-more{ display:flex; justify-content:center; margin-top:2rem; }
.work-more-note{ color:var(--grey); margin:0; text-align:center; }

.projects-page h1{ color:var(--paper); }
.projects-list{ display:grid; gap:3rem; }
.project-detail{ border-top:1px solid var(--line); padding-top:1.5rem; }
.project-detail-head{ display:flex; justify-content:space-between; gap:2rem; margin-bottom:1.25rem; }
.project-detail-head h2{ color:var(--paper); font-size:var(--fs-h3); }
.project-detail-head p{ margin:0; max-width:42ch; }
.project-photos{ display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; }
.project-photos img{ width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:var(--radius); }
.pagination{ display:flex; justify-content:center; gap:.4rem; margin-top:3rem; }
.pagination a{ display:grid; place-items:center; min-width:2.5rem; height:2.5rem; border:1px solid var(--line-strong); border-radius:var(--radius); color:var(--grey); }
.pagination a:hover,.pagination a.on{ background:var(--sun); border-color:var(--sun); color:var(--ink); }

/* ============ REVIEWS ============ */
.review-thanks{ margin-bottom:2rem; }
.reviews-layout{ display:grid; grid-template-columns:320px 1fr; gap:2rem; align-items:start; }
.rating-card{ position:sticky; top:calc(var(--nav-h) + 1.5rem); background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:2rem 1.75rem; text-align:center; display:flex; flex-direction:column; align-items:center; }
.rating-big{ font-family:var(--serif); font-size:4rem; line-height:1; color:var(--paper); letter-spacing:-.03em; }
.rating-big small{ font-size:1.25rem; color:var(--grey-dim); margin-left:.15em; }
.stars{ display:inline-flex; gap:2px; color:var(--sun); }
.stars svg{ width:16px; height:16px; }
.stars--lg{ margin:.75rem 0 .5rem; gap:4px; }
.stars--lg svg{ width:24px; height:24px; }
.rating-empty-title{ font-size:var(--fs-h3); color:var(--paper); margin-top:.25rem; }
.rating-count{ font-size:var(--fs-sm); margin-top:.375rem; }
.rating-bars{ width:100%; margin:1.5rem 0 .25rem; display:flex; flex-direction:column; gap:.5rem; }
.rating-bars li{ display:grid; grid-template-columns:2.25rem 1fr 1.5rem; align-items:center; gap:.625rem; font-size:.8125rem; color:var(--grey); }
.rating-bars li span:last-child{ text-align:right; }
.bar{ height:6px; border-radius:6px; background:var(--panel-2); overflow:hidden; }
.bar i{ display:block; height:100%; width:0; border-radius:inherit; background:var(--sun); transition:width 1.2s var(--ease-out) .2s; }
.rating-card.in .bar i,.rating-card:not(.reveal) .bar i{ width:var(--w); }
.rating-card .btn{ margin-top:1.5rem; }
.rating-note{ margin-top:.875rem; font-size:.8125rem; color:var(--grey-dim); }

.reviews-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:1.25rem; align-items:stretch; }
.review-card{ display:flex; flex-direction:column; background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; transition:transform .45s var(--ease-out), border-color .3s; }
.review-card:hover{ transform:translateY(-4px); border-color:var(--line-strong); }
.review-card.is-extra{ display:none; }
.reviews-grid.show-all .review-card.is-extra{ display:flex; }
.review-photo{ display:block; width:100%; aspect-ratio:16/10; padding:0; border:0; background:var(--panel-2); cursor:zoom-in; overflow:hidden; }
.review-photo img{ width:100%; height:100%; object-fit:cover; transition:transform .7s var(--ease-out); }
.review-photo:hover img{ transform:scale(1.05); }
.review-body{ display:flex; flex-direction:column; flex:1; padding:1.375rem 1.5rem 1.5rem; }
.review-text{ margin-top:.875rem; color:var(--paper); font-size:.9688rem; line-height:1.6; display:-webkit-box; -webkit-line-clamp:5; -webkit-box-orient:vertical; overflow:hidden; }
.review-text.open{ -webkit-line-clamp:unset; }
.review-more{ align-self:flex-start; margin-top:.375rem; background:none; border:0; padding:0; font-size:var(--fs-sm); font-weight:600; color:var(--sun); cursor:pointer; }
.review-author{ display:flex; align-items:center; gap:.75rem; margin-top:auto; padding-top:1.25rem; }
.avatar{ flex-shrink:0; width:40px; height:40px; border-radius:50%; display:grid; place-items:center; background:var(--panel-2); border:1px solid var(--line-strong); font-size:.8125rem; font-weight:700; color:var(--sun); }
.review-author b{ display:block; font-size:.9375rem; font-weight:600; color:var(--paper); line-height:1.3; }
.review-author small{ display:block; font-size:.8125rem; color:var(--grey-dim); line-height:1.4; }
.reviews-empty{ grid-column:1 / -1; min-height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1rem; padding:2.5rem 1.5rem; text-align:center; border:1px dashed var(--line-strong); border-radius:var(--radius); }
.reviews-empty img{ width:min(260px, 80%); opacity:.85; }
.reviews-empty p{ max-width:32ch; }
.reviews-more{ margin-top:2rem; text-align:center; }

/* ============ MODAL + LIGHTBOX ============ */
dialog{ border:0; padding:0; background:none; color:inherit; max-width:none; max-height:none; }
dialog::backdrop{ background:rgba(5,5,5,.72); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); }
.modal{ width:min(620px, calc(100% - 2rem)); margin:auto; max-height:calc(100dvh - 2rem); overflow:auto; border-radius:calc(var(--radius) + 4px); }
.modal[open]{ animation:modalIn .45s var(--ease-out); }
.modal[open]::backdrop{ animation:fadeIn .3s ease; }
@keyframes modalIn{ from{ opacity:0; transform:translateY(24px) scale(.98); } to{ opacity:1; transform:none; } }
@keyframes fadeIn{ from{ opacity:0; } }
.modal .contact-form{ border:0; box-shadow:none; border-radius:0; }
.modal-head{ display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; margin-bottom:1.5rem; }
.modal-head h2{ font-size:clamp(1.625rem, 1.4rem + 1vw, 2rem); color:var(--ink); }
.modal-head .eyebrow{ color:var(--ink-3); }
.modal-close{ flex-shrink:0; width:40px; height:40px; display:grid; place-items:center; border:1px solid var(--line-ink); border-radius:50%; background:transparent; color:var(--ink); cursor:pointer; transition:background .2s, transform .3s var(--ease-out); }
.modal-close:hover{ background:var(--paper); transform:rotate(90deg); }
.modal-close svg{ width:18px; height:18px; }

.lightbox{ width:100%; height:100%; margin:0; display:none; place-items:center; padding:clamp(1rem, 4vw, 3rem); }
.lightbox[open]{ display:grid; animation:fadeIn .3s ease; }
.lightbox img{ max-width:100%; max-height:calc(100dvh - 6rem); border-radius:var(--radius); box-shadow:0 30px 80px rgba(0,0,0,.6); animation:modalIn .45s var(--ease-out); }
.lightbox .modal-close{ position:fixed; top:1rem; right:1rem; color:var(--paper); border-color:var(--line-strong); background:rgba(10,10,10,.6); }
.lightbox .modal-close:hover{ background:var(--ink); }

/* star picker */
.star-input{ display:flex; flex-direction:row-reverse; justify-content:flex-end; align-items:center; gap:.25rem; }
.star-input input{ position:absolute; opacity:0; pointer-events:none; }
.field .star-input > label{ cursor:pointer; color:#d6d3c8; transition:color .15s, transform .25s var(--ease-out); }
.field .star-input > label svg{ width:34px; height:34px; fill:currentColor; }
.field .star-input > label:hover,.field .star-input > label:hover ~ label,.field .star-input > input:checked ~ label{ color:var(--sun); }
.field .star-input > label:hover{ transform:scale(1.15); }
.star-input input:focus-visible + label{ outline:2px solid var(--sun); outline-offset:2px; border-radius:4px; }
.star-word{ order:-1; margin-left:.75rem; font-size:var(--fs-sm); color:var(--ink-3); }

/* photo drop zone */
.field-label{ font-size:var(--fs-sm); font-weight:500; color:var(--ink); }
.drop{ position:relative; display:block; border:1.5px dashed rgba(10,10,10,.25); border-radius:var(--radius); background:var(--paper); cursor:pointer; overflow:hidden; transition:border-color .2s, background .2s; }
.drop:hover,.drop.is-drag{ border-color:var(--ink); background:#efece4; }
.drop input{ position:absolute; inset:0; opacity:0; cursor:pointer; }
.drop-empty{ display:flex; flex-direction:column; align-items:center; gap:.25rem; padding:1.5rem 1rem; text-align:center; color:var(--ink-2); }
.drop-empty svg{ width:30px; height:30px; margin-bottom:.25rem; color:var(--ink); }
.field .drop-empty b{ font-weight:600; color:var(--ink); }
.field .drop-empty small{ font-size:.8125rem; color:var(--ink-3); }
.drop-preview{ width:100%; max-height:240px; object-fit:cover; }
.drop.has-file .drop-empty{ display:none; }
.drop-remove{ align-self:flex-start; background:none; border:0; padding:0; font-size:var(--fs-sm); font-weight:600; color:var(--err); cursor:pointer; text-decoration:underline; text-underline-offset:3px; }

/* ============ QUOTE (kept for reuse) ============ */
.quote-mark{ width:40px; color:var(--sun); }

/* ============ CALCULATOR ============ */
.calc{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(2.5rem, 2rem + 4vw, 6rem); align-items:center; }
.calc-text h2{ font-size:var(--fs-h2); margin-bottom:1rem; }
.calc-text h2 + p{ font-size:var(--fs-lead); }
.calc-text .calc-note{ margin-top:1.25rem; font-size:var(--fs-sm); color:var(--grey-dim); }
.calc-card{ background:var(--ink); border:1px solid var(--line-strong); border-radius:var(--radius); padding:clamp(1.5rem, 1rem + 2vw, 2.5rem); }
.calc-label{ display:block; font-size:var(--fs-sm); color:var(--grey); margin-bottom:.5rem; }
.calc-input{ display:flex; align-items:baseline; gap:.35rem; border-bottom:1px solid var(--line-strong); padding-bottom:.5rem; margin-bottom:1.5rem; transition:border-color .2s; }
.calc-input span{ font-family:var(--serif); font-size:2rem; color:var(--grey); }
.calc-input input{ width:100%; min-width:0; background:none; border:0; outline:0; font-family:var(--serif); font-size:clamp(2.25rem, 1.8rem + 2vw, 3rem); line-height:1.1; color:var(--paper); -moz-appearance:textfield; }
.calc-input input::-webkit-outer-spin-button,.calc-input input::-webkit-inner-spin-button{ -webkit-appearance:none; }
.calc-input:focus-within{ border-color:var(--sun); }
input[type=range]{ --fill:20%; width:100%; height:28px; background:none; -webkit-appearance:none; appearance:none; cursor:pointer; }
input[type=range]::-webkit-slider-runnable-track{ height:4px; border-radius:4px; background:linear-gradient(90deg, var(--sun) var(--fill), var(--line-strong) var(--fill)); }
input[type=range]::-moz-range-track{ height:4px; border-radius:4px; background:linear-gradient(90deg, var(--sun) var(--fill), var(--line-strong) var(--fill)); }
input[type=range]::-webkit-slider-thumb{ -webkit-appearance:none; width:22px; height:22px; margin-top:-9px; border-radius:50%; background:var(--paper); border:3px solid var(--sun); transition:transform .2s var(--ease-out); }
input[type=range]:active::-webkit-slider-thumb{ transform:scale(1.2); }
input[type=range]::-moz-range-thumb{ width:16px; height:16px; border-radius:50%; background:var(--paper); border:3px solid var(--sun); }
.calc-range-labels{ display:flex; justify-content:space-between; font-size:var(--fs-xs); color:var(--grey-dim); margin-top:.25rem; }
.calc-results{ display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--line); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; margin:1.75rem 0; }
.calc-results div{ background:var(--ink); padding:1rem 1.1rem; }
.calc-results dt{ font-size:var(--fs-xs); font-weight:600; letter-spacing:.08em; line-height:1.35; text-transform:uppercase; color:var(--grey-dim); margin-bottom:.4rem; }
.calc-results dd{ font-family:var(--serif); font-size:1.5rem; line-height:1.2; color:var(--paper); transition:color .3s; }
.calc-results dd.bump{ animation:bump .4s var(--ease-out); }
@keyframes bump{ 40%{ transform:translateY(-3px); } }
.calc-results dd.hl{ color:var(--sun); }

/* ============ CONTACT + FORMS ============ */
.contact{ display:grid; grid-template-columns:.9fr 1.1fr; gap:clamp(2rem, 1.5rem + 3vw, 4rem); align-items:start; }
.contact-info h2{ font-size:var(--fs-h2); color:var(--ink); margin-bottom:1rem; }
.contact-info h2 + p{ font-size:var(--fs-lead); }
.contact-direct{ margin-top:2.25rem; border-top:1px solid var(--line-ink); }
.contact-direct li{ display:grid; grid-template-columns:7rem 1fr; gap:1rem; padding:1rem 0; border-bottom:1px solid var(--line-ink); font-size:.9375rem; }
.contact-direct span{ font-size:var(--fs-xs); font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3); padding-top:.2rem; }
.contact-direct a{ color:var(--ink); font-weight:500; text-decoration:underline; text-decoration-color:var(--line-ink); text-underline-offset:4px; transition:text-decoration-color .2s; }
.contact-direct a:hover{ text-decoration-color:var(--ink); }

.contact-form{ background:var(--white); color:var(--ink); border:1px solid var(--line-ink); border-radius:var(--radius); padding:clamp(1.5rem, 1rem + 1.5vw, 2rem); box-shadow:0 20px 50px -30px rgba(10,10,10,.35); }
.form-row{ display:grid; grid-template-columns:1fr 1fr; gap:1.25rem; }
.field{ display:flex; flex-direction:column; gap:.4rem; margin-bottom:1.25rem; border:0; min-width:0; }
.field label,.field legend{ font-size:var(--fs-sm); font-weight:500; color:var(--ink); }
.field legend{ margin-bottom:.5rem; }
.field label b,.field legend b{ color:var(--err); font-weight:500; }
.contact-form .opt{ color:var(--ink-3); font-weight:400; }
.contact-form input[type=text],.contact-form input[type=tel],.contact-form select,.contact-form textarea{ width:100%; min-height:50px; padding:.75rem 1rem; font-size:1rem; line-height:1.5; background:var(--paper); border:1px solid transparent; border-radius:var(--radius); color:var(--ink); transition:border-color .2s, background .2s, box-shadow .2s; }
.contact-form textarea{ resize:vertical; min-height:110px; }
.contact-form select{ appearance:none; -webkit-appearance:none; cursor:pointer; 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='%230a0a0a' stroke-width='1.5'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 1rem center; background-size:12px; padding-right:2.5rem; }
.contact-form input::placeholder,.contact-form textarea::placeholder{ color:#9b9a93; }
.contact-form input:focus,.contact-form select:focus,.contact-form textarea:focus{ outline:none; background:var(--white); border-color:var(--ink); box-shadow:0 0 0 4px rgba(242,181,68,.25); }
.field.has-error input,.field.has-error textarea{ border-color:var(--err); background:#fdf3f2; }
.contact-form .hint{ align-self:flex-end; font-size:.75rem; color:var(--ink-3); }
.err{ font-size:.8125rem; color:var(--err); }
.err--block{ display:block; margin:-.75rem 0 1rem; }
.choices{ display:flex; flex-wrap:wrap; gap:.5rem; }
.choice input{ position:absolute; opacity:0; pointer-events:none; }
.choice span{ display:inline-flex; align-items:center; min-height:42px; padding:.5rem 1.1rem; font-size:.9375rem; border:1px solid var(--line-ink); border-radius:999px; color:var(--ink-2); cursor:pointer; transition:all .25s var(--ease-out); }
.choice span:hover{ border-color:var(--ink); }
.choice input:checked + span{ background:var(--ink); border-color:var(--ink); color:var(--paper); }
.choice input:focus-visible + span{ outline:2px solid var(--sun); outline-offset:2px; }
.contact-form .btn{ margin-top:.5rem; }
.form-fine{ margin-top:1rem; font-size:.8125rem; color:var(--ink-3) !important; text-align:center; max-width:none; }
.hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

.check{ display:flex; align-items:flex-start; gap:.65rem; font-size:var(--fs-sm); color:var(--grey); cursor:pointer; margin-bottom:1.25rem; line-height:1.45; }
.check input{ width:18px; height:18px; margin-top:.1rem; accent-color:var(--sun); flex-shrink:0; }
.check--ink{ color:var(--ink-2); }
.check--ink input{ accent-color:var(--ink); }
.check.has-error span{ color:var(--err); }

.form-alert{ padding:1rem 1.15rem; margin-bottom:1.5rem; font-size:.9375rem; line-height:1.5; border-radius:var(--radius); border-left:3px solid; animation:modalIn .5s var(--ease-out); }
.form-alert strong{ display:block; margin-bottom:.15rem; }
.form-alert--ok{ background:#eef6f0; border-color:var(--ok); color:#1d4d31; }
.form-alert--ok strong{ color:#1d4d31; }
.form-alert--err{ background:#fdf3f2; border-color:var(--err); color:var(--err); }
.form-alert--info{ background:rgba(242,181,68,.1); border-color:var(--sun); color:var(--paper); }
.form-alert--info a{ color:var(--sun); text-decoration:underline; }

/* ============ FOOTER ============ */
.footer{ padding:clamp(3.5rem, 3rem + 2vw, 5rem) 0 2rem; border-top:1px solid var(--line); }
.footer-grid{ display:grid; grid-template-columns:1.4fr 1.3fr .9fr .9fr; gap:2.5rem; padding-bottom:3rem; border-bottom:1px solid var(--line); }
.footer-brand p{ font-size:.9375rem; margin-top:1.25rem; max-width:32ch; }
.footer-col h4{ font-family:var(--sans); font-size:var(--fs-xs); font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--paper); margin-bottom:1.25rem; }
.footer-col ul{ display:flex; flex-direction:column; gap:.85rem; font-size:.9375rem; color:var(--grey); }
.footer-col ul li{ display:flex; align-items:flex-start; gap:.7rem; line-height:1.5; }
.footer-col ul a{ color:var(--grey); transition:color .2s, padding .3s var(--ease-out); }
.footer-col ul.plain a:hover{ padding-left:.35rem; }
.footer-col ul a:hover{ color:var(--paper); }
.f-icon{ width:18px; height:18px; flex-shrink:0; margin-top:.1rem; color:var(--sun); }
.socials{ display:flex; gap:.6rem; }
.socials a{ width:42px; height:42px; display:grid; place-items:center; border:1px solid var(--line-strong); border-radius:50%; color:var(--paper); transition:background .25s, border-color .25s, transform .3s var(--ease-out); }
.socials a:hover{ background:var(--sun); border-color:var(--sun); color:var(--ink); transform:translateY(-3px); }
.socials svg{ width:18px; height:18px; }
.footer-hours{ margin-top:1.25rem; font-size:var(--fs-sm); color:var(--grey-dim); }
.footer-bottom{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:.75rem 2rem; padding-top:1.75rem; font-size:.8125rem; color:var(--grey-dim); }

/* ============ WHATSAPP FAB ============ */
.whatsapp-fab{ position:fixed; right:1.25rem; bottom:1.25rem; z-index:90; width:56px; height:56px; display:grid; place-items:center; border-radius:50%; background:#25d366; color:#fff; box-shadow:0 10px 30px -8px rgba(0,0,0,.6); transition:transform .3s var(--ease-out); animation:fabIn .6s var(--ease-out) 1.2s both; }
.whatsapp-fab::before{ content:""; position:absolute; inset:0; border-radius:50%; border:2px solid #25d366; animation:ring 2.8s ease-out 2s infinite; }
@keyframes ring{ 0%{ transform:scale(1); opacity:.7; } 80%,100%{ transform:scale(1.6); opacity:0; } }
@keyframes fabIn{ from{ transform:scale(0); } }
.whatsapp-fab:hover{ transform:scale(1.08); }
.whatsapp-fab svg{ width:28px; height:28px; }
body.no-scroll .whatsapp-fab{ display:none; }
.back-to-top{ position:fixed; left:1.25rem; bottom:1.25rem; z-index:90; width:46px; height:46px; display:grid; place-items:center; border:1px solid var(--line-strong); border-radius:50%; background:var(--panel); color:var(--paper); font-size:1.4rem; cursor:pointer; opacity:0; visibility:hidden; transform:translateY(10px); transition:opacity .25s, visibility .25s, transform .25s, background .25s; }
.back-to-top.is-visible{ opacity:1; visibility:visible; transform:none; }
.back-to-top:hover{ background:var(--sun); border-color:var(--sun); color:var(--ink); }
body.no-scroll .back-to-top{ display:none; }

/* ============ AUTH PAGES ============ */
.auth{ min-height:100vh; min-height:100svh; display:flex; align-items:center; justify-content:center; padding:calc(var(--nav-h) + 3rem) var(--gutter) 4rem;
  background:radial-gradient(ellipse 80% 60% at 50% 0%, rgba(242,181,68,.08), transparent 70%); }
.auth-card{ width:100%; max-width:440px; background:var(--panel); border:1px solid var(--line-strong); border-radius:var(--radius); padding:clamp(1.75rem, 1.2rem + 2vw, 2.75rem); animation:modalIn .7s var(--ease-out); }
.auth-card h1{ font-size:var(--fs-h1); color:var(--paper); margin-bottom:.5rem; }
.auth-lead{ font-size:.9375rem; margin-bottom:1.75rem; }
.auth-form .field label{ color:var(--paper); }
.auth-form .opt{ color:var(--grey-dim); font-weight:400; }
.auth-form input[type=text],.auth-form input[type=tel],.auth-form input[type=email],.auth-form input[type=password]{ width:100%; min-height:50px; padding:.75rem 1rem; font-size:1rem; background:var(--ink); border:1px solid var(--line-strong); border-radius:var(--radius); color:var(--paper); transition:border-color .2s, box-shadow .2s; }
.auth-form input::placeholder{ color:var(--grey-dim); }
.auth-form input:focus{ outline:none; border-color:var(--sun); box-shadow:0 0 0 4px rgba(242,181,68,.15); }
.auth-form .hint{ font-size:.8125rem; color:var(--grey-dim); }
.pass-wrap{ position:relative; }
.pass-wrap input{ padding-right:4.5rem !important; }
.pass-toggle{ position:absolute; right:.5rem; top:50%; transform:translateY(-50%); background:none; border:0; padding:.4rem .6rem; font-size:.8125rem; font-weight:600; color:var(--grey); cursor:pointer; }
.pass-toggle:hover{ color:var(--paper); }
.auth-row{ display:flex; justify-content:space-between; align-items:center; gap:1rem; margin:-.25rem 0 1.5rem; font-size:var(--fs-sm); }
.auth-row a{ color:var(--grey); text-decoration:underline; text-underline-offset:3px; }
.auth-row a:hover{ color:var(--paper); }
.auth-row .check{ margin:0; }
.auth-switch{ margin-top:1.75rem; padding-top:1.5rem; border-top:1px solid var(--line); font-size:.9375rem; text-align:center; max-width:none; }
.auth-switch a{ color:var(--sun); font-weight:600; }

/* ============ ADMIN ============ */
.admin-body{ background:var(--ink); }
.admin-top{ position:sticky; top:0; z-index:10; background:rgba(10,10,10,.92); backdrop-filter:blur(10px); border-bottom:1px solid var(--line); }
.admin-top-inner{ display:flex; align-items:center; justify-content:space-between; gap:1rem; min-height:64px; flex-wrap:wrap; padding-block:.5rem; }
.admin-tabs{ display:flex; gap:.25rem; flex-wrap:wrap; }
.admin-tabs a{ padding:.5rem .9rem; border-radius:999px; font-size:var(--fs-sm); color:var(--grey); transition:background .2s, color .2s; }
.admin-tabs a b{ margin-left:.3rem; color:var(--sun); }
.admin-tabs a.on,.admin-tabs a:hover{ background:var(--panel-2); color:var(--paper); }
.admin-logout{ font-size:var(--fs-sm); color:var(--grey); text-decoration:underline; }
.admin-main{ padding-block:2.5rem 4rem; }
.admin-h{ font-size:var(--fs-h2); margin-bottom:1.5rem; }
.admin-heading-row{ display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.admin-empty{ padding:2rem; border:1px dashed var(--line-strong); border-radius:var(--radius); text-align:center; max-width:none; }
.admin-list{ display:grid; gap:1rem; }
.admin-review{ display:grid; grid-template-columns:200px 1fr; gap:1.25rem; background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:1rem; }
.admin-review:not(:has(.admin-photo)){ grid-template-columns:1fr; }
.admin-photo img{ width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:4px; }
.admin-text{ color:var(--paper); margin:.6rem 0; max-width:none; }
.admin-meta{ font-size:var(--fs-sm); max-width:none; }
.admin-meta b{ color:var(--paper); }
.admin-meta a{ color:var(--sun); }
.admin-actions{ display:flex; gap:.5rem; flex-wrap:wrap; margin-top:1rem; }
.admin-del:hover{ border-color:var(--err); color:#ff8a80; }
.admin-table-wrap{ overflow-x:auto; border:1px solid var(--line); border-radius:var(--radius); }
.admin-table{ width:100%; border-collapse:collapse; font-size:var(--fs-sm); }
.admin-table th,.admin-table td{ padding:.75rem 1rem; text-align:left; border-bottom:1px solid var(--line); white-space:nowrap; }
.admin-table th{ font-size:var(--fs-xs); letter-spacing:.08em; text-transform:uppercase; color:var(--grey-dim); background:var(--panel); }
.admin-table td{ color:var(--paper); }
.admin-table a{ color:var(--sun); }
.admin-body code{ background:rgba(255,255,255,.08); padding:.1rem .35rem; border-radius:3px; }
.project-admin-form{ background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:1.5rem; margin-bottom:2rem; }
.project-admin-form input[type=file]{ width:100%; padding:.8rem; border:1px dashed var(--line-strong); color:var(--grey); }
.admin-hint{ display:block; margin-top:.4rem; color:var(--grey-dim); font-size:.75rem; }
.project-admin-list{ display:grid; gap:1rem; }
.project-admin-card{ display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:1rem; background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); }
.project-admin-card h2{ color:var(--paper); font-size:1.25rem; }
.project-admin-card p{ margin:0; font-size:var(--fs-sm); }
.project-admin-card form{ display:flex; align-items:center; gap:.5rem; }
.admin-upload{ display:flex; align-items:center; gap:.5rem; font-size:var(--fs-sm); color:var(--grey); }
.admin-upload input{ max-width:190px; }

/* ============ PROJECT GALLERY (all photos of one project) ============ */
.work-open{ display:flex; flex-direction:column; width:100%; padding:0; border:0; background:none; color:inherit; text-align:left; cursor:zoom-in; }
.work-open .work-visual{ display:block; }
.work-open:focus-visible{ outline:2px solid var(--sun); outline-offset:4px; border-radius:var(--radius); }
.work-count{ position:absolute; top:.75rem; right:.75rem; z-index:1; display:inline-flex; align-items:center; gap:.35rem; padding:.3rem .65rem; border-radius:999px; background:rgba(10,10,10,.7); backdrop-filter:blur(6px); color:var(--paper); font-size:.8125rem; font-weight:600; }
.work-count svg{ width:14px; height:14px; }
.gallery{ width:100%; height:100%; max-width:none; max-height:none; margin:0; padding:clamp(1rem, 3vw, 2.5rem); display:none; flex-direction:column; gap:1rem; background:rgba(8,8,8,.96); border:0; color:var(--paper); }
.gallery[open]{ display:flex; animation:fadeIn .3s ease; }
.gallery::backdrop{ background:rgba(0,0,0,.8); }
.gallery .modal-close{ position:fixed; top:1rem; right:1rem; z-index:2; color:var(--paper); border-color:var(--line-strong); background:rgba(10,10,10,.6); }
.gallery .modal-close:hover{ background:var(--ink); }
.gallery-stage{ position:relative; flex:1; min-height:0; display:flex; align-items:center; justify-content:center; margin:0; }
.gallery-img{ max-width:100%; max-height:100%; object-fit:contain; border-radius:var(--radius); box-shadow:0 30px 80px rgba(0,0,0,.6); }
.gallery-img.is-in{ animation:galleryIn .4s var(--ease-out); }
@keyframes galleryIn{ from{ opacity:0; transform:scale(.98); } to{ opacity:1; transform:none; } }
.gallery-nav{ position:absolute; top:50%; z-index:1; width:48px; height:48px; display:grid; place-items:center; margin-top:-24px; border:1px solid var(--line-strong); border-radius:50%; background:rgba(10,10,10,.65); color:var(--paper); cursor:pointer; backdrop-filter:blur(6px); transition:background .2s, color .2s, border-color .2s; }
.gallery-nav svg{ width:22px; height:22px; }
.gallery-nav:hover{ background:var(--sun); border-color:var(--sun); color:var(--ink); }
.gallery-prev{ left:0; } .gallery-next{ right:0; }
.gallery.is-single .gallery-nav,.gallery.is-single .gallery-thumbs{ display:none; }
.gallery-info{ display:flex; justify-content:space-between; align-items:flex-end; gap:1rem; width:100%; max-width:1100px; margin:0 auto; }
.gallery-title{ font-size:var(--fs-h3); color:var(--paper); }
.gallery-meta{ margin-top:.2rem; font-size:var(--fs-sm); color:var(--grey); }
.gallery-desc{ margin-top:.35rem; font-size:.9375rem; color:var(--grey); }
.gallery-desc:empty,.gallery-meta:empty{ display:none; }
.gallery-counter{ flex-shrink:0; font-size:var(--fs-sm); color:var(--grey); font-variant-numeric:tabular-nums; }
.gallery-thumbs{ display:flex; gap:.5rem; justify-content:center; overflow-x:auto; padding-bottom:.25rem; }
.gallery-thumbs button{ flex-shrink:0; width:72px; height:54px; padding:0; border:2px solid transparent; border-radius:6px; overflow:hidden; background:var(--panel); cursor:pointer; opacity:.55; transition:opacity .2s, border-color .2s; }
.gallery-thumbs button img{ width:100%; height:100%; object-fit:cover; }
.gallery-thumbs button:hover{ opacity:1; }
.gallery-thumbs button.on{ opacity:1; border-color:var(--sun); }
@media (max-width:720px){
  .gallery{ padding:4rem .75rem 1rem; }
  .gallery-nav{ width:40px; height:40px; margin-top:-20px; }
  .gallery-thumbs button{ width:58px; height:44px; }
}

/* ============ CONTACT MAP (Map / Satellite) ============ */
/* desktop: heading on top, then form + map side by side at the same height */
.contact{ grid-template-columns:1fr 1fr; grid-template-areas:"info info" "form map"; row-gap:0; align-items:stretch; }
.contact-info{ margin-bottom:clamp(1.5rem, 1rem + 1.5vw, 2.25rem); }
.contact-map{ display:flex; }
.contact-map .map-card{ display:flex; flex-direction:column; width:100%; }
.contact-map .map-frame{ flex:1; aspect-ratio:auto; min-height:340px; }
.contact-info{ grid-area:info; } .contact > .contact-form{ grid-area:form; } .contact-map{ grid-area:map; }
.map-card{ background:var(--white); border:1px solid var(--line-ink); border-radius:calc(var(--radius) + 4px); overflow:hidden; box-shadow:0 20px 50px -30px rgba(10,10,10,.35); }
.map-bar{ display:flex; justify-content:space-between; align-items:center; gap:.75rem; padding:.65rem; border-bottom:1px solid var(--line-ink); }
.map-switch{ display:inline-flex; padding:3px; background:var(--paper); border-radius:999px; }
.map-switch button{ border:0; background:transparent; padding:.45rem 1rem; border-radius:999px; font-size:.875rem; font-weight:600; color:var(--ink-3); cursor:pointer; transition:background .2s, color .2s, box-shadow .2s; }
.map-switch button.on{ background:var(--ink); color:var(--paper); box-shadow:0 2px 8px rgba(0,0,0,.15); }
.map-switch button:not(.on):hover{ color:var(--ink); }
.map-dir{ display:inline-flex; align-items:center; gap:.4rem; padding:.5rem .95rem; border-radius:999px; background:var(--sun); color:var(--ink); font-size:.875rem; font-weight:600; transition:background .2s, transform .2s; }
.map-dir:hover{ background:var(--sun-hover); transform:translateY(-1px); }
.map-dir svg{ width:16px; height:16px; }
.map-frame{ position:relative; aspect-ratio:4/3; background:#e9e6dd; }
.map-frame iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }
.map-address{ display:flex; align-items:flex-start; gap:.7rem; padding:.9rem 1rem; color:var(--ink-2); font-size:.9375rem; line-height:1.45; border-top:1px solid var(--line-ink); transition:background .2s; }
.map-address:hover{ background:var(--paper); }
.map-address svg{ width:20px; height:20px; flex-shrink:0; color:var(--ink); margin-top:.1rem; }
.map-address b{ display:block; color:var(--ink); font-weight:600; }
@media (max-width:900px){
  .contact{ grid-template-columns:1fr; grid-template-areas:"info" "form" "map"; row-gap:1.25rem; }
  .contact-info{ margin-bottom:0; }
  .contact-map .map-frame{ flex:none; aspect-ratio:4/3; min-height:0; }
}
@media (max-width:720px){ .contact-map .map-frame{ aspect-ratio:1/1; } }

/* ============ PRIVACY POLICY ============ */
.legal{ padding:calc(var(--nav-h) + 3rem) 0 var(--section); background:radial-gradient(ellipse 70% 40% at 50% 0%, rgba(242,181,68,.06), transparent 70%); }
.legal-wrap{ max-width:780px; }
.legal h1{ font-size:var(--fs-h1); color:var(--paper); }
.legal-updated{ margin-top:.5rem; font-size:var(--fs-sm); color:var(--grey-dim); }
.legal-lead{ margin-top:1.5rem; font-size:var(--fs-lead); color:var(--paper); max-width:none; }
.legal-toc{ display:flex; flex-wrap:wrap; gap:.5rem; margin:2rem 0 .5rem; }
.legal-toc a{ padding:.4rem .85rem; border:1px solid var(--line); border-radius:999px; font-size:var(--fs-sm); color:var(--grey); transition:border-color .2s, color .2s; }
.legal-toc a:hover{ border-color:var(--sun); color:var(--paper); }
.legal section{ padding-top:2.25rem; scroll-margin-top:var(--nav-h); }
.legal h2{ font-size:var(--fs-h3); color:var(--paper); margin-bottom:.85rem; }
.legal ul{ display:grid; gap:.6rem; margin:.25rem 0 .9rem; }
.legal li{ position:relative; padding-left:1.25rem; color:var(--grey); line-height:1.6; }
.legal li::before{ content:""; position:absolute; left:0; top:.68em; width:6px; height:6px; border-radius:50%; background:var(--sun); }
.legal li b{ color:var(--paper); font-weight:600; }
.legal p{ max-width:none; }
.legal a{ color:var(--sun); }
.legal a:hover{ text-decoration:underline; }
.legal-contact{ padding:1.25rem 1.25rem 1.25rem 1.5rem; background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); }
.legal-small{ margin-top:1.5rem; font-size:var(--fs-sm); color:var(--grey-dim); }
.footer-bottom a{ color:inherit; text-decoration:underline; text-underline-offset:3px; }
.footer-bottom a:hover{ color:var(--paper); }
.form-fine a{ color:inherit; text-decoration:underline; text-underline-offset:2px; }

/* ============ SCROLL REVEAL ============ */
.reveal{ opacity:0; transform:translateY(28px); transition:opacity .8s var(--ease-out), transform .8s var(--ease-out); transition-delay:var(--d, 0s); }
.reveal.in{ opacity:1; transform:none; }
.reveal-zoom{ transform:scale(.96); }
.reveal-zoom.in{ transform:none; }

/* ============ RESPONSIVE ============ */
@media (max-width:1180px){
  .nav-toggle{ display:block; }
  .nav-links{ position:fixed; top:var(--nav-h); left:0; right:0; height:calc(100dvh - var(--nav-h)); overflow-y:auto; flex-direction:column; align-items:stretch; gap:0; padding:.5rem var(--gutter) 2rem; background:var(--ink); border-top:1px solid var(--line); font-size:1.25rem; visibility:hidden; opacity:0; transition:opacity .3s, visibility .3s; }
  .nav-links.open{ visibility:visible; opacity:1; }
  .nav-links > a{ opacity:0; transform:translateY(12px); transition:opacity .4s var(--ease-out), transform .4s var(--ease-out); }
  .nav-links.open > a{ opacity:1; transform:none; }
  .nav-links.open > a:nth-child(1){ transition-delay:.04s; } .nav-links.open > a:nth-child(2){ transition-delay:.08s; }
  .nav-links.open > a:nth-child(3){ transition-delay:.12s; } .nav-links.open > a:nth-child(4){ transition-delay:.16s; }
  .nav-links.open > a:nth-child(5){ transition-delay:.20s; } .nav-links.open > a:nth-child(6){ transition-delay:.24s; }
  .nav-links.open > a:nth-child(8){ transition-delay:.28s; } .nav-links.open > a:nth-child(9){ transition-delay:.32s; } .nav-links.open > a:nth-child(10){ transition-delay:.36s; }
  .nav-links > a:not(.btn):not(.nav-login):not(.nav-signup){ font-family:var(--serif); color:var(--paper); padding:.95rem 0; border-bottom:1px solid var(--line); }
  .nav-links > a:not(.btn)::after{ display:none; }
  .nav-divider{ display:none; }
  .nav-links .nav-login{ margin-top:1rem; padding:.5rem 0; font-size:1rem; }
  .nav-links .nav-signup{ font-size:1rem; text-align:center; padding:.8rem 1rem; margin-top:.5rem; }
  .nav-cta{ margin-top:.75rem; min-height:50px; font-size:1rem; }
  body.no-scroll .nav{ background:var(--ink); }
}
@media (max-width:1040px){
  .service-grid{ grid-template-columns:repeat(2,1fr); }
  .process-list{ grid-template-columns:repeat(2,1fr); }
  .footer-grid{ grid-template-columns:1fr 1fr; }
  .reviews-layout{ grid-template-columns:1fr; }
  .rating-card{ position:static; display:grid; grid-template-columns:auto 1fr; grid-template-areas:"big bars" "stars bars" "count bars" "btn btn" "note note"; text-align:left; align-items:start; column-gap:2.5rem; }
  .rating-card > .rating-big{ grid-area:big; } .rating-card > .stars{ grid-area:stars; } .rating-card > .rating-count{ grid-area:count; }
  .rating-card > .rating-bars{ grid-area:bars; margin:0; align-self:center; } .rating-card > .btn{ grid-area:btn; } .rating-card > .rating-note{ grid-area:note; text-align:center; }
  .rating-card > .rating-empty-title{ grid-area:bars; align-self:center; }
}
@media (max-width:900px){
  .subsidy,.calc,.contact{ grid-template-columns:1fr; }
  .work-grid{ grid-template-columns:1fr 1fr; }
  .project-photos{ grid-template-columns:repeat(2,1fr); }
  .project-detail-head{ flex-direction:column; gap:.5rem; }
  .project-admin-card{ align-items:flex-start; flex-direction:column; }
}
@media (max-width:720px){
  :root{ --nav-h:64px; --head-gap:1.5rem; --section:2.75rem; }
  .hero{ min-height:auto; padding:calc(var(--nav-h) + 2rem) 0 1.75rem; }
  .hero-content{ text-align:center; align-items:center; }
  .hero-title br{ display:none; }
  .hero-video{ object-position:62% 30%; }
  .hero-title{ margin-bottom:.9rem; }
  .hero-sub{ margin-bottom:1.25rem; }
  .hero-actions{ width:100%; justify-content:center; }
  .hero-actions .btn{ flex:1 1 180px; }
  .hero-trust{ flex-direction:column; align-items:center; justify-content:center; gap:.4rem; margin-top:1.25rem; }
  .scroll-cue{ display:none; }
  .stats-grid{ grid-template-columns:repeat(2,1fr); padding-block:1.5rem; row-gap:1.25rem; }
  .stats{ padding-bottom:1.5rem; }
  #process .section-head{ width:100%; max-width:none; margin-bottom:1.5rem; }
  #process .section-head h2{ width:100%; font-size:clamp(1.75rem, 6vw, 2.25rem); }
  .stat{ padding:0 .5rem; }
  .stat-label{ margin-top:.45rem; font-size:.8rem; }
  .contact{ gap:1.5rem; }
  .contact-info h2{ margin-bottom:0; }
  .contact-form{ padding:1.5rem; }
  .subsidy{ gap:1.25rem; }
  .subsidy-text .btn{ margin-top:1rem; }
  .stat:nth-child(3){ border-left:0; }
  .service-grid{ grid-template-columns:1fr; gap:1rem; }
  .service{ display:grid; grid-template-columns:42% 1fr; }
  .service-art{ aspect-ratio:auto; min-height:100%; border-bottom:0; border-right:1px solid var(--line); }
  .service-body{ padding:1.125rem 1.125rem 1rem; }
  .service p{ font-size:.875rem; }
  .service-tag{ padding-top:.875rem; font-size:.6875rem; }
  .brands-label{ max-width:16ch; font-size:clamp(1.55rem, 6vw, 2rem); }
  .process-list{ grid-template-columns:1fr; gap:1rem; }
  .process-step{ display:grid; grid-template-columns:42% 1fr; grid-template-rows:auto 1fr; }
  .step-art{ grid-row:span 2; aspect-ratio:auto; border-bottom:0; border-right:1px solid var(--line-ink); }
  .step-no{ width:32px; height:32px; font-size:.75rem; top:.5rem; left:.5rem; }
  .process-step h3{ padding:1.125rem 1.125rem 0; }
  .process-step p{ padding:.375rem 1.125rem 1.125rem; font-size:.875rem; }
  .subsidy-text .btn{ width:100%; }
  .work-grid{ grid-template-columns:1fr; }
  .project-photos{ grid-template-columns:1fr; }
  .project-admin-card form{ flex-wrap:wrap; }
  .admin-upload{ flex-wrap:wrap; }
  .reviews-grid{ grid-template-columns:1fr; }
  .rating-card{ grid-template-columns:1fr; grid-template-areas:"big" "stars" "count" "bars" "btn" "note"; text-align:center; justify-items:center; }
  .rating-card > .rating-bars{ margin-top:1.25rem; width:100%; }
  .rating-card > .rating-empty-title{ grid-area:auto; }
  .form-row{ grid-template-columns:1fr; gap:0; }
  .contact-direct li{ grid-template-columns:1fr; gap:.2rem; }
  .modal{ width:100%; max-height:92dvh; margin:auto 0 0; border-radius:16px 16px 0 0; }
  .modal[open]{ animation:sheetUp .45s var(--ease-out); }
  @keyframes sheetUp{ from{ transform:translateY(100%); } }
  .field .star-input > label svg{ width:38px; height:38px; }
  .footer-grid{ grid-template-columns:1fr; gap:2.25rem; }
  .footer-bottom{ flex-direction:column; }
  .admin-review{ grid-template-columns:1fr; }
}
@media (max-width:420px){
  .service,.process-step{ grid-template-columns:38% 1fr; }
  .subsidy-row{ grid-template-columns:1fr .85fr 1.15fr; gap:.4rem; padding:.9rem .7rem; font-size:.75rem; }
  .calc-results dd{ font-size:1.25rem; }
  .auth-row{ flex-direction:column; align-items:flex-start; }
  .star-word{ display:none; }
}
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
  .hero-in,.reveal{ opacity:1; transform:none; }
}


/* ============ MY ACCOUNT ============ */
.account{ min-height:100vh; padding:calc(var(--nav-h) + 2.5rem) 0 4rem; background:radial-gradient(ellipse 80% 50% at 50% 0%, rgba(242,181,68,.07), transparent 70%); }
.account-wrap{ max-width:860px; }
.account-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:1rem; flex-wrap:wrap; margin-bottom:2rem; }
.account-head h1{ font-size:var(--fs-h1); color:var(--paper); }
.account-meta{ margin-top:.5rem; font-size:var(--fs-sm); }
.account-card{ background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:1.5rem; margin-bottom:1.25rem; }
.account-card-head{ display:flex; justify-content:space-between; align-items:center; gap:1rem; flex-wrap:wrap; margin-bottom:1rem; }
.account-card-head h2{ font-size:var(--fs-h3); color:var(--paper); }
.account-empty{ font-size:var(--fs-sm); padding:1rem; border:1px dashed var(--line-strong); border-radius:var(--radius); max-width:none; }
.account-list li{ display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; padding:1rem 0; border-top:1px solid var(--line); font-size:.9375rem; color:var(--paper); }
.account-list li small{ display:block; margin-top:.25rem; font-size:.8125rem; color:var(--grey-dim); }
.account-review-text{ margin-top:.4rem; color:var(--paper); font-size:.9375rem; }
.status-pill{ flex-shrink:0; padding:.3rem .7rem; border-radius:999px; font-size:.75rem; font-weight:600; background:var(--panel-2); color:var(--grey); border:1px solid var(--line-strong); white-space:nowrap; }
.status-pill--new,.status-pill--pending{ color:var(--sun); border-color:rgba(242,181,68,.4); }
.status-pill--contacted,.status-pill--qualified{ color:#8ec5ff; border-color:rgba(142,197,255,.4); }
.status-pill--approved{ color:#7fd6a0; border-color:rgba(127,214,160,.4); }
.nav-links .nav-account{ color:var(--sun) !important; border-color:rgba(242,181,68,.5) !important; }

/* ============ ADMIN EXTRAS ============ */
.admin-sub{ font-size:var(--fs-h3); margin:2.5rem 0 1rem; }
.admin-badge{ display:inline-block; vertical-align:middle; margin-left:.4rem; padding:.15rem .55rem; border-radius:999px; font-family:var(--sans); font-size:.6875rem; font-weight:600; letter-spacing:.04em; }
.admin-badge--published{ background:rgba(127,214,160,.15); color:#7fd6a0; }
.admin-badge--hidden{ background:rgba(255,255,255,.08); color:var(--grey); }
.project-admin-info{ min-width:0; }
.admin-thumbs{ display:flex; flex-wrap:wrap; gap:.5rem; margin-top:.75rem; }
.admin-thumb{ position:relative; }
.admin-thumb img{ width:84px; height:64px; object-fit:cover; border-radius:4px; border:1px solid var(--line); }
.admin-thumb button{ position:absolute; top:-6px; right:-6px; width:22px; height:22px; border-radius:50%; border:0; background:var(--err); color:#fff; font-size:.9rem; line-height:1; cursor:pointer; opacity:.85; }
.admin-thumb button:hover{ opacity:1; }
.admin-filter{ display:flex; flex-wrap:wrap; gap:.25rem; }
.admin-filter a{ padding:.35rem .75rem; border-radius:999px; font-size:.8125rem; color:var(--grey); border:1px solid var(--line); }
.admin-filter a.on,.admin-filter a:hover{ color:var(--ink); background:var(--sun); border-color:var(--sun); }
.admin-select{ padding:.35rem .5rem; border-radius:4px; background:var(--panel-2); color:var(--paper); border:1px solid var(--line-strong); font-size:.8125rem; cursor:pointer; }
.admin-select--new{ border-color:var(--sun); color:var(--sun); }
.admin-select--qualified{ border-color:#8ec5ff; color:#8ec5ff; }
.admin-select--closed{ color:var(--grey-dim); }
.project-admin-form input[type=text]{ width:100%; min-height:46px; padding:.65rem .9rem; background:var(--ink); border:1px solid var(--line-strong); border-radius:var(--radius); color:var(--paper); }
.project-admin-form .field label{ color:var(--paper); }
@media (max-width:720px){
  .account-list li{ flex-direction:column; }
}


/* ============ OTP SIGNUP / LOGIN ============ */
.auth-card--wide{ max-width:520px; }
.verify-block{ border:1px solid var(--line-strong); border-radius:var(--radius); padding:1.25rem; margin-bottom:1rem; background:var(--ink); transition:border-color .3s; }
.verify-block.is-done{ border-color:rgba(127,214,160,.45); background:rgba(127,214,160,.05); }
.verify-head{ display:flex; gap:.875rem; align-items:flex-start; margin-bottom:1rem; }
.verify-block.is-done .verify-head{ margin-bottom:0; }
.verify-head h2{ font-size:1.125rem; color:var(--paper); margin-bottom:.2rem; }
.verify-step{ flex-shrink:0; display:grid; place-items:center; width:30px; height:30px; border-radius:50%; border:1px solid var(--line-strong); font-size:.8125rem; font-weight:700; color:var(--sun); }
.verify-block.is-done .verify-step{ background:#7fd6a0; border-color:#7fd6a0; color:var(--ink); }
.verify-sub{ font-size:var(--fs-sm); max-width:none; }
.verify-sub b{ color:var(--paper); font-weight:600; }
.verify-sub--ok{ color:#7fd6a0; }
.verify-locked{ font-size:var(--fs-sm); padding:.75rem 1rem; border:1px dashed var(--line-strong); border-radius:var(--radius); max-width:none; }
.otp-form{ display:flex; flex-direction:column; gap:.625rem; }
.otp-input{ flex:1; min-width:0; min-height:54px; padding:.5rem 1rem; text-align:center; font-family:var(--sans); font-size:1.5rem; font-weight:600; letter-spacing:.55em; text-indent:.55em;
  background:var(--ink); color:var(--paper); border:1px solid var(--line-strong); border-radius:var(--radius); font-variant-numeric:tabular-nums; }
.otp-input::placeholder{ color:var(--grey-dim); letter-spacing:.55em; }
.otp-input:focus{ outline:none; border-color:var(--sun); box-shadow:0 0 0 4px rgba(242,181,68,.15); }
.otp-form .btn{ width:100%; min-height:52px; }
.resend-row{ display:flex; align-items:center; gap:.5rem; margin-top:.875rem; font-size:var(--fs-sm); color:var(--grey); flex-wrap:wrap; }
.link-btn{ background:none; border:0; padding:0; font:inherit; font-weight:600; color:var(--sun); cursor:pointer; text-decoration:underline; text-underline-offset:3px; }
.link-btn:disabled{ color:var(--grey-dim); cursor:default; text-decoration:none; }
.form-alert--ok{ background:rgba(127,214,160,.1); color:#9fe3b9; border-color:#7fd6a0; }
.form-alert--ok strong{ color:#9fe3b9; }
.section--paper .form-alert--ok,.contact-form .form-alert--ok{ background:#eef6f0; color:#1d4d31; border-color:var(--ok); }
.section--paper .form-alert--ok strong,.contact-form .form-alert--ok strong{ color:#1d4d31; }
.auth .form-alert--err{ background:rgba(179,38,30,.12); color:#ff9a92; border-color:#e5534b; }
.auth .form-alert a{ color:inherit; font-weight:600; text-decoration:underline; }
.auth .field .err a{ color:inherit; font-weight:600; text-decoration:underline; }
.verified-tag{ font-size:.75rem; color:#7fd6a0; white-space:nowrap; }
@media (max-width:420px){
  .otp-input{ letter-spacing:.4em; text-indent:.4em; }
}


/* ============ PASSWORD LOGIN / RESET ============ */
.auth-row--end{ justify-content:flex-end; margin-top:-.5rem; }
.turnstile-box{ margin:.25rem 0 1.25rem; min-height:65px; }
.account-actions{ display:flex; gap:.5rem; flex-wrap:wrap; }

/* ============ "log in next" note under the forms (guests only) ============ */
.form-login-note{ margin:.85rem 0 0; font-size:.8125rem; color:var(--ink-2); text-align:center; max-width:none; }

/* small message after coming back from login */
.toast{ position:fixed; left:50%; bottom:1.25rem; z-index:60; transform:translateX(-50%); padding:.7rem 1.1rem; border-radius:999px; background:var(--ink); color:var(--paper); border:1px solid var(--line-strong); font-size:.9rem; box-shadow:0 12px 30px -10px rgba(0,0,0,.5); pointer-events:none; animation:toast 4.5s ease forwards; }
@keyframes toast{ 0%{ opacity:0; transform:translate(-50%, 10px); } 8%,80%{ opacity:1; transform:translate(-50%, 0); } 100%{ opacity:0; transform:translate(-50%, 10px); visibility:hidden; } }
@media (prefers-reduced-motion:reduce){ .toast{ animation:none; } }

/* ============ FAQ ============ */
.faq{ display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1.6fr); gap:clamp(1.5rem, 4vw, 4rem); align-items:start; }
.faq .section-head{ margin-bottom:0; position:sticky; top:calc(var(--nav-h) + 1.5rem); }
.faq-list{ border-top:1px solid var(--line); }
.faq-item{ border-bottom:1px solid var(--line); }
.faq-item summary{ display:flex; align-items:center; justify-content:space-between; gap:1.25rem; padding:1.25rem 0; cursor:pointer; list-style:none; font-size:1.0625rem; font-weight:500; color:var(--paper); line-height:1.4; }
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary:hover{ color:var(--sun); }
.faq-item summary:focus-visible{ outline:2px solid var(--sun); outline-offset:4px; border-radius:2px; }
.faq-item summary i{ position:relative; flex-shrink:0; width:28px; height:28px; border:1px solid var(--line-strong); border-radius:50%; }
.faq-item summary i::before,.faq-item summary i::after{ content:""; position:absolute; left:50%; top:50%; width:11px; height:1.5px; background:currentColor; transform:translate(-50%, -50%); transition:transform .25s; }
.faq-item summary i::after{ transform:translate(-50%, -50%) rotate(90deg); }
.faq-item[open] summary i::after{ transform:translate(-50%, -50%) rotate(0deg); }
.faq-item p{ margin:0 0 1.35rem; padding-right:2.5rem; color:var(--grey); max-width:62ch; }
@media (max-width:900px){
  .faq{ grid-template-columns:1fr; }
  .faq .section-head{ position:static; margin-bottom:.5rem; }
  .faq-item p{ padding-right:0; }
}
