:root{
  --bg:#0a0a0b;
  --bg-alt:#111113;
  --panel:#151517;
  --border:rgba(201,162,74,.18);
  --gold:#c9a24a;
  --gold-light:#e8cd85;
  --gold-dim:#8a7038;
  --text:#f3efe4;
  --text-muted:#a8a196;
  --serif:'Cormorant Garamond',serif;
  --sans:'Inter',sans-serif;
}

*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{
  background:var(--bg);
  color:var(--text);
  font-family:var(--sans);
  font-weight:300;
  line-height:1.6;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}

.container{max-width:1180px;margin:0 auto;padding:0 32px;}

.grain{
  position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.035;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;background:none;border:none;color:inherit;}

.eyebrow{
  font-family:var(--sans);
  font-size:.72rem;
  letter-spacing:.28em;
  text-transform:uppercase;
  color:var(--gold);
  margin-bottom:16px;
  font-weight:500;
}

h1,h2,h3{font-family:var(--serif);font-weight:600;color:var(--text);}

/* ---------- header ---------- */
.site-header{
  position:fixed;top:0;left:0;right:0;z-index:100;
  padding:22px 0;
  transition:padding .4s ease,background .4s ease,box-shadow .4s ease;
}
.site-header.scrolled{
  padding:14px 0;
  background:rgba(10,10,11,.78);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  box-shadow:0 1px 0 var(--border);
}
.header-inner{display:flex;align-items:center;justify-content:space-between;}

.brand{display:flex;align-items:center;gap:12px;}
.brand-crown{width:26px;height:auto;flex-shrink:0;display:block;}
.brand-name{
  font-family:var(--serif);
  font-size:1.15rem;
  letter-spacing:.03em;
  color:var(--text);
}
.brand-name em{font-style:normal;color:var(--gold);margin-left:.35em;}

.site-nav{display:flex;gap:36px;}
.site-nav a{
  font-size:.85rem;letter-spacing:.05em;color:var(--text-muted);
  transition:color .25s ease;position:relative;
}
.site-nav a:hover{color:var(--gold-light);}

.nav-toggle{
  display:none;
  flex-direction:column;
  justify-content:center;
  gap:5px;
  width:36px;height:36px;
  padding:0;
  background:none;border:none;cursor:pointer;
}
.nav-toggle span{
  display:block;width:100%;height:2px;
  background:var(--gold);
  transition:transform .25s ease,opacity .25s ease;
}
.site-header.nav-open .nav-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.site-header.nav-open .nav-toggle span:nth-child(2){opacity:0;}
.site-header.nav-open .nav-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

/* ---------- hero ---------- */
.hero{
  position:relative;
  min-height:100vh;
  display:flex;align-items:center;justify-content:center;
  text-align:center;
  padding:140px 24px 100px;
  overflow:hidden;
}
.hero-glow{
  position:absolute;inset:-20%;
  background:
    radial-gradient(circle at 50% 30%, rgba(201,162,74,.16), transparent 55%),
    radial-gradient(circle at 20% 80%, rgba(201,162,74,.07), transparent 50%),
    radial-gradient(circle at 80% 75%, rgba(201,162,74,.07), transparent 50%);
  animation:drift 18s ease-in-out infinite alternate;
  z-index:0;
}
@keyframes drift{
  0%{transform:translate(0,0) scale(1);}
  100%{transform:translate(2%,-3%) scale(1.08);}
}

.hero-content{position:relative;z-index:1;max-width:720px;}
.hero-crown{
  width:96px;height:auto;margin:0 auto 28px;display:block;
  filter:drop-shadow(0 0 22px rgba(201,162,74,.4));
  animation:float 5s ease-in-out infinite;
}
@keyframes float{
  0%,100%{transform:translateY(0);}
  50%{transform:translateY(-8px);}
}

.hero h1{
  font-size:clamp(2.6rem,7vw,4.6rem);
  letter-spacing:.05em;
  display:flex;flex-direction:column;line-height:1.05;
  margin-bottom:22px;
}
.hero h1 span{
  font-size:.42em;
  letter-spacing:.5em;
  color:var(--gold);
  font-family:var(--sans);
  font-weight:400;
  margin-top:10px;
}
.hero-sub{
  font-family:var(--serif);
  font-size:1.4rem;
  color:var(--gold-light);
  font-style:italic;
  margin-bottom:18px;
}
.hero-desc{
  color:var(--text-muted);
  font-size:1.02rem;
  max-width:560px;
  margin:0 auto 44px;
}

.scroll-cta{
  display:inline-flex;align-items:center;gap:10px;
  border:1px solid var(--border);
  padding:14px 26px;border-radius:2px;
  font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--gold-light);
  transition:border-color .3s ease,background .3s ease,transform .3s ease;
}
.scroll-cta svg{width:16px;height:16px;animation:bob 1.8s ease-in-out infinite;}
@keyframes bob{0%,100%{transform:translateY(0);}50%{transform:translateY(4px);}}
.scroll-cta:hover{border-color:var(--gold);background:rgba(201,162,74,.08);transform:translateY(-2px);}

/* ---------- ticker ---------- */
.ticker{
  border-top:1px solid var(--border);
  border-bottom:1px solid var(--border);
  overflow:hidden;
  background:var(--bg-alt);
  padding:16px 0;
  position:relative;
  z-index:1;
}
.ticker-track{
  display:flex;gap:18px;white-space:nowrap;width:max-content;
  animation:scroll-left 32s linear infinite;
  font-family:var(--serif);font-size:1.05rem;color:var(--text-muted);
  letter-spacing:.03em;
}
.ticker-track .dot{color:var(--gold-dim);font-size:.7rem;}
@keyframes scroll-left{
  0%{transform:translateX(0);}
  100%{transform:translateX(-50%);}
}

/* ---------- logo marquee ---------- */
.logo-marquee{
  position:relative;
  overflow:hidden;
  border-top:1px solid var(--border);
  border-bottom:1px solid var(--border);
  background:var(--bg-alt);
  padding:28px 0;
  z-index:1;
}
.logo-track{
  display:flex;
  align-items:center;
  gap:76px;
  width:max-content;
  animation:logo-scroll 36s linear infinite;
}
.logo-track img{
  height:54px;
  width:auto;
  flex-shrink:0;
  opacity:.95;
}
.logo-track img[alt="Cleanboys"]{height:82px;width:136px;}
.logo-track img[alt="Löwentrans"]{height:68px;width:172px;}
.logo-track img[alt="Montage Services MK"]{height:80px;width:112px;}
@keyframes logo-scroll{
  0%{transform:translateX(0);}
  100%{transform:translateX(-33.3333%);}
}
@media (prefers-reduced-motion: reduce){
  .logo-track{animation:none;}
}
@media (max-width:640px){
  .logo-marquee{padding:18px 0;}
  .logo-track{gap:50px;}
  .logo-track img{height:36px;}
  .logo-track img[alt="Cleanboys"]{height:56px;width:92px;}
  .logo-track img[alt="Löwentrans"]{height:46px;width:117px;}
  .logo-track img[alt="Montage Services MK"]{height:54px;width:76px;}
}

/* ---------- clean scene (animated banner) ---------- */
.clean-scene{
  position:relative;
  height:130px;
  overflow:hidden;
  border-top:1px solid var(--border);
  border-bottom:1px solid var(--border);
  background:var(--bg-alt);
  z-index:1;
}
.walker{
  position:absolute;
  bottom:18px;
  width:64px;height:88px;
  left:calc(100% + 30px);
  color:var(--gold);
  animation:walker-move 13s linear infinite;
}
.truck{
  position:absolute;
  bottom:8px;
  width:130px;height:70px;
  left:calc(100% + 160px);
  color:var(--gold-dim);
  opacity:0;
  animation:truck-move 13s linear infinite;
}
.walker-svg,.truck-svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;}
.w-mop-head{fill:currentColor;stroke:none;}
.t-window{fill:var(--bg-alt);}
.t-ground{stroke:var(--border);stroke-width:1.5;}

.w-leg-a{transform-origin:35px 54px;animation:leg-a .5s ease-in-out infinite;}
.w-leg-b{transform-origin:35px 54px;animation:leg-b .5s ease-in-out infinite;}
.w-arm-back{transform-origin:35px 30px;animation:leg-b .5s ease-in-out infinite;}
@keyframes leg-a{0%,100%{transform:rotate(16deg);}50%{transform:rotate(-16deg);}}
@keyframes leg-b{0%,100%{transform:rotate(-16deg);}50%{transform:rotate(16deg);}}

.w-mop-group{transform-origin:19px 46px;animation:mop-scrub .32s ease-in-out infinite;}
@keyframes mop-scrub{0%,100%{transform:rotate(-9deg);}50%{transform:rotate(11deg);}}

.w-sparkle{opacity:0;stroke-width:1.4;}
.w-sparkle--a{transform:translate(8px,84px);animation:sparkle-fade .9s ease-in-out infinite;}
.w-sparkle--b{transform:translate(13px,80px);animation:sparkle-fade .9s ease-in-out .45s infinite;}
@keyframes sparkle-fade{0%,100%{opacity:0;}50%{opacity:.9;}}

.t-wheel{animation:wheel-spin .5s linear infinite;}
@keyframes wheel-spin{to{transform:rotate(360deg);}}

@keyframes walker-move{
  0%   {left:calc(100% + 30px); opacity:1;}
  38%  {left:calc(44% + 0px); opacity:1;}
  46%  {left:calc(43% + 0px); opacity:1;}
  51%  {left:calc(42% + 0px); opacity:0;}
  100% {left:calc(42% + 0px); opacity:0;}
}
@keyframes truck-move{
  0%   {left:calc(100% + 160px); opacity:0;}
  29%  {left:calc(100% + 160px); opacity:0;}
  33%  {left:calc(100% + 160px); opacity:1;}
  47%  {left:calc(34% + 0px); opacity:1;}
  62%  {left:calc(30% + 0px); opacity:1;}
  100% {left:calc(0% + -220px); opacity:1;}
}

@media (prefers-reduced-motion: reduce){
  .walker,.truck,.w-leg-a,.w-leg-b,.w-arm-back,.w-mop-group,.w-sparkle,.t-wheel{animation:none;}
  .walker{left:44%;}
  .truck{left:-220px;opacity:0;}
}

@media (max-width:640px){
  .clean-scene{height:100px;}
  .walker{width:50px;height:68px;}
  .truck{width:100px;height:54px;}
}

/* ---------- ops scene (delivery / assembly / cleaning story) ---------- */
.ops-scene{
  position:relative;
  height:150px;
  overflow:hidden;
  border-top:1px solid var(--border);
  border-bottom:1px solid var(--border);
  background:var(--bg-alt);
  z-index:1;
}

.ops-truck{position:absolute;bottom:12px;width:176px;height:80px;}
.ops-truck-svg{width:100%;height:100%;}
.ot-box,.ot-cab{fill:var(--gold-dim);stroke:none;}
.ot-window{fill:var(--bg-alt);stroke:none;}
.ot-door,.ot-mirror{stroke:rgba(0,0,0,.4);stroke-width:2;stroke-linecap:round;fill:none;}
.ot-mirror-head{fill:var(--bg-alt);stroke:none;}
.ot-bumper{fill:var(--gold);stroke:none;}
.ot-light{fill:var(--gold-light);stroke:none;}
.ot-ground{stroke:var(--border);stroke-width:1.5;}
.ot-wheel{animation:wheel-spin .45s linear infinite;}
.ot-wheel .ot-tire{fill:var(--bg);stroke:var(--gold);stroke-width:2.5;}
.ot-wheel .ot-hub{fill:var(--gold);stroke:none;}
.ot-wheel line{stroke:var(--gold);stroke-width:2;stroke-linecap:round;}

.ops-pallet{position:absolute;bottom:11px;width:56px;height:30px;}
.ops-pallet-svg{width:100%;height:100%;fill:none;stroke:var(--gold-dim);stroke-width:2.2;}
.op-pal-top,.op-pal-base{fill:var(--gold-dim);stroke:none;}
.op-pal-box{fill:none;stroke:var(--gold);stroke-width:2;}

.ops-table{position:absolute;bottom:11px;width:46px;height:34px;transform-origin:50% 100%;}
.ops-table-svg{width:100%;height:100%;fill:none;stroke:var(--gold);stroke-width:3;stroke-linecap:round;}
.ot-tabletop{fill:var(--gold);stroke:none;}

.ops-part{position:absolute;bottom:16px;width:16px;height:16px;}
.ops-part-svg{width:100%;height:100%;}
.op-part-body{fill:var(--gold-light);stroke:none;}
.op-part-dot{fill:var(--bg-alt);}

.ops-stain{
  position:absolute;bottom:12px;width:32px;height:13px;
  left:calc(46% + 38px);
  background:radial-gradient(ellipse at center, rgba(30,20,10,.55), rgba(30,20,10,0) 75%);
  border-radius:60% 40% 55% 45% / 50% 60% 40% 50%;
  animation:stain-fade 26s linear infinite;
}

.ops-person{position:absolute;bottom:17px;width:38px;height:84px;}
.ops-person-svg{width:100%;height:100%;fill:none;stroke:var(--gold);stroke-width:6.5;stroke-linecap:round;stroke-linejoin:round;}
.op-head{fill:var(--gold);stroke:none;}
.op-leg-a{transform-origin:19px 47px;animation:leg-a .5s ease-in-out infinite;}
.op-leg-b{transform-origin:19px 47px;animation:leg-b .5s ease-in-out infinite;}
.op-arm-a{transform-origin:19px 24px;animation:tinker .6s ease-in-out infinite;}
.op-arm-b{transform-origin:19px 24px;animation:leg-b .5s ease-in-out infinite;}
@keyframes tinker{0%{transform:rotate(-10deg);}50%{transform:rotate(-10deg);}72%{transform:rotate(26deg);}100%{transform:rotate(-10deg);}}

.op-sweep{transform-origin:19px 24px;animation:mop-sweep .85s cubic-bezier(.45,.05,.15,.95) infinite;}
.op-sweep .op-arm-b{animation:none;}
@keyframes mop-sweep{0%{transform:rotate(6deg);}40%{transform:rotate(42deg);}58%{transform:rotate(42deg);}100%{transform:rotate(6deg);}}

.op-mop-handle{stroke:var(--gold);stroke-width:3.6;stroke-linecap:round;}
.op-mop-head{fill:var(--gold);stroke:none;}

.ops-driver{left:calc(46% + 20px);}
.ops-truck--a{animation:opsTruckA 26s linear infinite;}
.ops-truck--b{animation:opsTruckB 26s linear infinite;}
.ops-pallet{animation:opsPallet 26s linear infinite;}
.ops-table{animation:opsTable 26s linear infinite;}
.ops-part{animation:opsPart 26s linear infinite;}
.ops-driver{animation:opsDriver 26s linear infinite;}
.ops-worker--1{animation:opsWorker1 26s linear infinite;}
.ops-worker--2{animation:opsWorker2 26s linear infinite;}
.ops-cleaner--1{animation:opsCleaner1 26s linear infinite;}
.ops-cleaner--2{animation:opsCleaner2 26s linear infinite;}

@keyframes opsTruckA{
  0%   {left:calc(100% + 60px);}
  7%   {left:calc(46% + 0px);}
  20%  {left:calc(46% + 0px);}
  30%  {left:calc(0% + -220px);}
  100% {left:calc(0% + -220px);}
}
@keyframes opsTruckB{
  0%   {left:calc(100% + 60px);}
  53%  {left:calc(100% + 60px);}
  62%  {left:calc(46% + 0px);}
  68%  {left:calc(46% + 0px);}
  80%  {left:calc(0% + -220px);}
  100% {left:calc(0% + -220px);}
}
@keyframes opsPallet{
  0%   {left:calc(46% + 130px); opacity:0;}
  15%  {left:calc(46% + 130px); opacity:0;}
  16%  {opacity:1;}
  21%  {left:calc(46% + 55px); opacity:1;}
  68%  {left:calc(46% + 55px); opacity:1;}
  74%  {left:calc(46% + 130px); opacity:0;}
  100% {left:calc(46% + 130px); opacity:0;}
}
@keyframes opsTable{
  0%   {left:calc(46% + 45px); opacity:0; transform:scaleY(.15);}
  22%  {opacity:0; transform:scaleY(.15);}
  23%  {opacity:1;}
  26%  {transform:scaleY(1);}
  58%  {transform:scaleY(1); opacity:1;}
  61%  {transform:scaleY(.15); opacity:0;}
  100% {left:calc(46% + 45px); transform:scaleY(.15); opacity:0;}
}
@keyframes opsPart{
  0%   {left:calc(46% + 50px); opacity:0;}
  27%  {left:calc(46% + 50px); opacity:0;}
  28%  {opacity:1;}
  32%  {left:calc(46% + 45px); opacity:1;}
  50%  {left:calc(46% + 45px); opacity:1;}
  54%  {left:calc(46% + 75px); opacity:1;}
  59%  {opacity:1;}
  60%  {opacity:0;}
  100% {left:calc(46% + 75px); opacity:0;}
}
@keyframes opsDriver{
  0%   {opacity:0;}
  15%  {opacity:0;}
  16%  {opacity:1;}
  21%  {opacity:1;}
  23%  {opacity:0;}
  100% {opacity:0;}
}
@keyframes opsWorker1{
  0%   {left:calc(100% + 60px); opacity:0;}
  19%  {left:calc(100% + 60px); opacity:0;}
  20%  {left:calc(100% + 60px); opacity:1;}
  27%  {left:calc(46% + 70px); opacity:1;}
  58%  {left:calc(46% + 70px); opacity:1;}
  65%  {left:calc(0% + -220px); opacity:1;}
  100% {left:calc(0% + -220px); opacity:1;}
}
@keyframes opsWorker2{
  0%   {left:calc(100% + 90px); opacity:0;}
  20%  {left:calc(100% + 90px); opacity:0;}
  21%  {left:calc(100% + 90px); opacity:1;}
  28%  {left:calc(46% + 118px); opacity:1;}
  58%  {left:calc(46% + 118px); opacity:1;}
  66%  {left:calc(0% + -220px); opacity:1;}
  100% {left:calc(0% + -220px); opacity:1;}
}
@keyframes opsCleaner1{
  0%   {left:calc(100% + 60px); opacity:0;}
  72%  {left:calc(100% + 60px); opacity:0;}
  73%  {left:calc(100% + 60px); opacity:1;}
  80%  {left:calc(46% + 55px); opacity:1;}
  90%  {left:calc(46% + 55px); opacity:1;}
  97%  {left:calc(0% + -220px); opacity:1;}
  100% {left:calc(0% + -220px); opacity:1;}
}
@keyframes opsCleaner2{
  0%   {left:calc(100% + 90px); opacity:0;}
  73%  {left:calc(100% + 90px); opacity:0;}
  74%  {left:calc(100% + 90px); opacity:1;}
  81%  {left:calc(46% + 105px); opacity:1;}
  90%  {left:calc(46% + 105px); opacity:1;}
  98%  {left:calc(0% + -220px); opacity:1;}
  100% {left:calc(0% + -220px); opacity:1;}
}
@keyframes stain-fade{
  0%   {opacity:0;}
  33%  {opacity:0;}
  35%  {opacity:.85;}
  79%  {opacity:.85;}
  88%  {opacity:0;}
  100% {opacity:0;}
}

@media (prefers-reduced-motion: reduce){
  .ops-truck,.ops-pallet,.ops-table,.ops-part,.ops-person,.ops-stain,.op-leg-a,.op-leg-b,.op-arm-a,.op-arm-b,.op-sweep,.ot-wheel{animation:none;}
  .ops-truck,.ops-pallet,.ops-part,.ops-person{opacity:0;}
}

@media (max-width:640px){
  .ops-scene{height:120px;}
  .ops-truck{width:128px;height:58px;}
  .ops-person{width:30px;height:66px;}
  .ops-pallet{width:44px;height:24px;}
  .ops-table{width:36px;height:27px;}
}

/* ---------- about ---------- */
.about{padding:130px 0;}
.about-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:start;
}
.about h2{font-size:clamp(1.9rem,3.4vw,2.6rem);line-height:1.2;}
.about-text{color:var(--text-muted);font-size:1.02rem;max-width:480px;}

/* ---------- portfolio ---------- */
.portfolio{padding:80px 0 150px;}
.section-head{text-align:center;margin-bottom:64px;}
.section-head h2{font-size:clamp(1.9rem,3.4vw,2.6rem);}

.card-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:28px;
}

.card{
  background:linear-gradient(160deg,var(--panel),var(--bg-alt));
  border:1px solid var(--border);
  border-radius:6px;
  padding:34px 30px;
  display:flex;flex-direction:column;
  position:relative;
  transition:transform .35s ease,box-shadow .35s ease,border-color .35s ease;
  transform-style:preserve-3d;
  will-change:transform;
}
.card::before{
  content:"";position:absolute;inset:0;border-radius:6px;
  background:radial-gradient(600px circle at var(--mx,50%) var(--my,0%),rgba(201,162,74,.10),transparent 40%);
  opacity:0;transition:opacity .35s ease;pointer-events:none;
}
.card:hover{
  border-color:rgba(201,162,74,.5);
  box-shadow:0 24px 48px -20px rgba(0,0,0,.6),0 0 0 1px rgba(201,162,74,.15);
}
.card:hover::before{opacity:1;}

.card-logo{
  height:40px;display:flex;align-items:flex-start;margin-bottom:26px;
}
.card-logo img{height:100%;width:auto;max-width:170px;object-fit:contain;object-position:left top;}
.card-logo--tall{height:58px;}
.card-logo--tall img{max-width:200px;}
.card-logo--wide{height:44px;}
.card-logo--wide img{max-width:230px;}
.card-logo--xl{height:70px;}
.card-logo--xl img{max-width:210px;}

.card-tag{
  font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gold-dim);margin-bottom:10px;font-weight:500;
}
.card h3{font-size:1.5rem;margin-bottom:14px;}
.card p{color:var(--text-muted);font-size:.94rem;flex-grow:1;margin-bottom:26px;}

.card-link{
  display:inline-flex;align-items:center;gap:8px;
  font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;
  color:var(--gold-light);
  padding-top:16px;border-top:1px solid var(--border);
  transition:gap .25s ease,color .25s ease;
}
.card-link svg{width:14px;height:14px;transition:transform .25s ease;}
.card-link:hover{color:var(--gold);gap:12px;}
.card-link:hover svg{transform:translate(2px,-2px);}

/* ---------- footer ---------- */
.site-footer{padding:50px 0;}
.footer-inner{
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:20px;
}
.brand--footer .brand-name{font-size:1rem;}
.footer-copy{color:var(--text-muted);font-size:.82rem;}
.footer-links{display:flex;gap:24px;}
.footer-links button{
  font-size:.8rem;color:var(--text-muted);transition:color .25s ease;letter-spacing:.02em;
}
.footer-links button:hover{color:var(--gold-light);}

/* ---------- modal ---------- */
.modal{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;padding:24px;}
.modal.is-open{display:flex;}
.modal-backdrop{position:absolute;inset:0;background:rgba(5,5,6,.75);backdrop-filter:blur(4px);}
.modal-panel{
  position:relative;max-width:480px;width:100%;
  background:var(--panel);border:1px solid var(--border);border-radius:8px;
  padding:40px 36px;
  max-height:80vh;overflow-y:auto;
}
.modal-panel h3{font-size:1.6rem;margin-bottom:16px;color:var(--gold-light);}
.modal-panel p{color:var(--text-muted);margin-bottom:12px;font-size:.95rem;}
.modal-panel.modal-panel--wide{max-width:640px;}
.modal-panel h4{font-family:var(--serif);font-size:1.15rem;color:var(--gold-light);margin:28px 0 10px;}
.modal-panel h4:first-of-type{margin-top:8px;}
.modal-panel ul{color:var(--text-muted);font-size:.95rem;margin:0 0 12px 20px;}
.modal-panel li{margin-bottom:4px;}
.modal-panel a{color:var(--gold-light);text-decoration:underline;}
.modal-panel .modal-meta{color:var(--text-muted);font-size:.8rem;margin-top:24px;font-style:italic;}
.modal-close{
  position:absolute;top:16px;right:18px;font-size:1.5rem;color:var(--text-muted);line-height:1;
  transition:color .2s ease;
}
.modal-close:hover{color:var(--gold);}

/* ---------- reveal animation ---------- */
.reveal{opacity:0;transform:translateY(28px);transition:opacity .8s ease,transform .8s ease;}
.reveal.is-visible{opacity:1;transform:translateY(0);}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .about-grid{grid-template-columns:1fr;gap:28px;}
  .card-grid{grid-template-columns:repeat(2,1fr);}
  .site-nav{gap:22px;}
}
@media (max-width:640px){
  .container{padding:0 20px;}
  .nav-toggle{display:flex;}
  .site-nav{
    display:flex;
    position:absolute;
    top:100%;left:0;right:0;
    flex-direction:column;
    align-items:center;
    gap:0;
    background:rgba(10,10,11,.97);
    backdrop-filter:blur(14px);
    -webkit-backdrop-filter:blur(14px);
    border-bottom:1px solid var(--border);
    max-height:0;
    overflow:hidden;
    transition:max-height .3s ease;
  }
  .site-nav a{
    padding:16px 0;width:100%;text-align:center;
    border-top:1px solid var(--border);
  }
  .site-nav a:first-child{border-top:none;}
  .site-header.nav-open .site-nav{max-height:220px;}
  .card-grid{grid-template-columns:1fr;}
  .hero{padding-top:120px;}
  .footer-inner{flex-direction:column;text-align:center;}
}
