/* Willow Street Partners — industrial loft theme
   Concrete, exposed brick, black steel, exposed ductwork, Edison light. */
:root{
  --ink:#0f1011;
  --steel:#17191b;
  --steel-2:#202326;
  --steel-3:#2b2f33;
  --rivet:#3b4045;
  --concrete:#8e8b85;
  --concrete-2:#b9b5ad;
  --concrete-3:#d9d5cd;
  --paper:#f1ede6;
  --brick:#9b4a31;
  --brick-2:#7c3a27;
  --amber:#ffb547;
  --amber-2:#f39a25;
  --glow:rgba(255,181,71,.55);
  --text:#ece8e1;
  --muted:#a9a59e;
  --line:rgba(255,255,255,.1);
  --display:"Big Shoulders Display","Oswald",Impact,sans-serif;
  --stencil:"Big Shoulders Stencil Display","Big Shoulders Display",Impact,sans-serif;
  --body:"Archivo",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
  --noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .5 0 0 0 0 .5 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  --blotch:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='600' height='600'%3E%3Cfilter id='b'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012' numOctaves='4' seed='7'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .44 0 0 0 0 .42 0 0 0 .9 -.35'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23b)'/%3E%3C/svg%3E");
  --brickwall:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='120'%3E%3Crect width='240' height='120' fill='%23d8cfc2'/%3E%3Cg%3E%3Crect x='2' y='2' width='76' height='26' fill='%23934530'/%3E%3Crect x='82' y='2' width='76' height='26' fill='%23a5533a'/%3E%3Crect x='162' y='2' width='76' height='26' fill='%238a3f2b'/%3E%3Crect x='-38' y='32' width='76' height='26' fill='%23a14d34'/%3E%3Crect x='42' y='32' width='76' height='26' fill='%23863d29'/%3E%3Crect x='122' y='32' width='76' height='26' fill='%239d4a33'/%3E%3Crect x='202' y='32' width='76' height='26' fill='%23a14d34'/%3E%3Crect x='2' y='62' width='76' height='26' fill='%23a85a3f'/%3E%3Crect x='82' y='62' width='76' height='26' fill='%238f432e'/%3E%3Crect x='162' y='62' width='76' height='26' fill='%239a4931'/%3E%3Crect x='-38' y='92' width='76' height='26' fill='%23894029'/%3E%3Crect x='42' y='92' width='76' height='26' fill='%23a05038'/%3E%3Crect x='122' y='92' width='76' height='26' fill='%23934631'/%3E%3Crect x='202' y='92' width='76' height='26' fill='%23894029'/%3E%3C/g%3E%3C/svg%3E");
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;overflow-x:clip}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
body{margin:0;background:var(--steel);color:var(--text);font-family:var(--body);font-size:16px;line-height:1.6}
img{max-width:100%;display:block}
a{color:inherit}
button{font:inherit;color:inherit}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.wrap{width:min(1240px,100% - 40px);margin-inline:auto}

/* ---------- textures ---------- */
.concrete{position:relative;background-color:#7d7a75;background-image:var(--noise),var(--blotch),linear-gradient(180deg,#8f8c86,#76736e);background-blend-mode:overlay,multiply,normal;color:#141414}
.concrete-dark{position:relative;background-color:#1d1f21;background-image:var(--noise),var(--blotch),radial-gradient(1200px 600px at 70% -10%,rgba(255,181,71,.07),transparent 60%),linear-gradient(180deg,#232527,#18191b);background-blend-mode:soft-light,multiply,normal,normal}
.brick{position:relative;background-color:#8f442e;background-image:linear-gradient(180deg,rgba(15,10,8,.55),rgba(15,10,8,.78)),var(--noise),var(--brickwall);background-size:auto,220px,240px 120px;background-blend-mode:normal,overlay,normal}

/* ---------- steel beam divider ---------- */
.beam{height:26px;position:relative;background:linear-gradient(180deg,#3d4246 0,#2a2e31 22%,#1a1c1e 23%,#25292c 50%,#1a1c1e 77%,#2a2e31 78%,#111213 100%);box-shadow:0 6px 14px rgba(0,0,0,.45);z-index:2}
.beam::after{content:"";position:absolute;inset:3px 0 auto;height:5px;background:radial-gradient(circle at 50% 50%,#5c6267 0 1.6px,#1b1d1f 2.2px,transparent 2.8px) 0 0/34px 5px repeat-x;opacity:.9}
.beam::before{content:"";position:absolute;inset:auto 0 3px;height:5px;background:radial-gradient(circle at 50% 50%,#5c6267 0 1.6px,#1b1d1f 2.2px,transparent 2.8px) 17px 0/34px 5px repeat-x;opacity:.9}

/* ---------- exposed duct + pendants ---------- */
.ceiling{position:absolute;left:0;right:0;top:0;height:200px;pointer-events:none;z-index:3;overflow:hidden}
.duct{position:absolute;left:-30px;right:-30px;top:18px;height:46px;border-radius:23px;background:linear-gradient(180deg,#53585c 0%,#a7adb1 22%,#e3e6e8 34%,#9aa0a4 52%,#5d6266 74%,#2d3033 100%);box-shadow:0 10px 18px rgba(0,0,0,.5)}
.duct::before{content:"";position:absolute;inset:0;border-radius:inherit;background:repeating-linear-gradient(90deg,transparent 0 118px,rgba(0,0,0,.28) 118px 121px,rgba(255,255,255,.35) 121px 123px,transparent 123px 240px)}
.duct::after{content:"";position:absolute;inset:0;border-radius:inherit;background:repeating-linear-gradient(90deg,transparent 0 10px,rgba(0,0,0,.05) 10px 12px)}
.pendants{position:absolute;inset:0}
.pendant{position:absolute;top:0;width:2px;background:linear-gradient(#111,#333);transform-origin:top center;animation:sway 7s ease-in-out infinite}
.pendant::after{content:"";position:absolute;left:50%;bottom:-30px;width:22px;height:30px;transform:translateX(-50%);border-radius:44% 44% 50% 50%/36% 36% 64% 64%;background:radial-gradient(circle at 50% 62%,#fff9e8 0 14%,#ffd67a 30%,rgba(255,181,71,.65) 55%,rgba(255,181,71,.15) 75%,transparent 76%);box-shadow:0 0 18px 6px var(--glow),0 0 60px 22px rgba(255,170,60,.22)}
.pendant::before{content:"";position:absolute;left:50%;bottom:-3px;width:12px;height:9px;transform:translateX(-50%);background:linear-gradient(90deg,#2a2621,#5a5146 40%,#2a2621);border-radius:2px}
.pendant.flicker::after{animation:flicker 6s infinite}
@keyframes sway{0%,100%{transform:rotate(-1.2deg)}50%{transform:rotate(1.2deg)}}
@keyframes flicker{0%,7%,9%,40%,42%,100%{opacity:1}8%,41%{opacity:.55}}

/* ---------- header ---------- */
.site-head{position:fixed;inset:0 0 auto;z-index:50;transition:background .3s,box-shadow .3s,backdrop-filter .3s}
.site-head.solid{background:rgba(16,17,18,.86);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 1px 0 var(--line),0 10px 30px rgba(0,0,0,.35)}
.head-in{display:flex;align-items:center;gap:28px;height:78px}
.logo{display:inline-flex;flex-direction:column;justify-content:center;border:2px solid currentColor;padding:6px 9px 5px;line-height:.92;font-family:var(--display);font-weight:800;letter-spacing:.16em;font-size:13px;text-decoration:none;color:#fff;text-transform:uppercase}
.logo span:nth-child(2){letter-spacing:.21em}
.logo small{font-family:var(--body);font-weight:500;font-size:6.5px;letter-spacing:.32em;margin-top:2px}
.nav{display:flex;gap:26px;margin-left:auto;align-items:center}
.nav a{font-family:var(--display);text-transform:uppercase;letter-spacing:.14em;font-weight:700;font-size:15px;text-decoration:none;color:#e9e5de;opacity:.85;transition:opacity .2s,color .2s}
.nav a:hover{opacity:1;color:var(--amber)}
.btn{display:inline-flex;align-items:center;gap:10px;border:0;cursor:pointer;text-decoration:none;font-family:var(--display);font-weight:800;text-transform:uppercase;letter-spacing:.13em;font-size:15px;padding:13px 20px;border-radius:2px;transition:transform .15s,box-shadow .2s,background .2s,color .2s;white-space:nowrap}
.btn svg{width:18px;height:18px;flex:0 0 auto}
.btn-amber{background:linear-gradient(180deg,#ffc76a,#f39a25);color:#1a1206;box-shadow:0 0 0 1px rgba(0,0,0,.25) inset,0 8px 26px -6px rgba(255,170,60,.7)}
.btn-amber:hover{transform:translateY(-1px);box-shadow:0 0 0 1px rgba(0,0,0,.25) inset,0 12px 34px -6px rgba(255,170,60,.9)}
.btn-steel{background:linear-gradient(180deg,#3a3f43,#24272a);color:#f2efe9;box-shadow:inset 0 1px 0 rgba(255,255,255,.14),inset 0 -1px 0 rgba(0,0,0,.6),0 6px 16px rgba(0,0,0,.35)}
.btn-steel:hover{background:linear-gradient(180deg,#464c51,#2b2f32)}
.btn-ghost{background:transparent;color:#fff;box-shadow:inset 0 0 0 2px rgba(255,255,255,.55)}
.btn-ghost:hover{box-shadow:inset 0 0 0 2px var(--amber);color:var(--amber)}
.btn-ink{background:#151617;color:#fff}
.btn-ink:hover{background:#000}
.btn-sm{font-size:13px;padding:10px 14px}
.nav-cta{margin-left:6px}
.menu-btn{display:none;margin-left:auto;background:none;border:0;padding:8px;cursor:pointer;color:#fff}
.menu-btn svg{width:28px;height:28px}

/* ---------- hero ---------- */
.hero{position:relative;min-height:100vh;min-height:100svh;display:flex;align-items:flex-end;overflow:hidden;background:#0c0c0d}
.hero-slides{position:absolute;inset:0}
.hero-slides img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.08);transition:opacity 1.6s ease,transform 9s ease-out}
.hero-slides img.on{opacity:1;transform:scale(1)}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,8,9,.82) 0%,rgba(8,8,9,.2) 30%,rgba(8,8,9,.35) 55%,rgba(8,8,9,.92) 100%),radial-gradient(1000px 500px at 18% 78%,rgba(0,0,0,.55),transparent 70%)}
.hero .ceiling{top:78px}
.hero-in{position:relative;z-index:4;padding:180px 0 64px}
.kicker{text-shadow:0 1px 10px rgba(0,0,0,.95),0 0 2px rgba(0,0,0,.9);font-family:var(--mono);font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:var(--amber);display:flex;align-items:center;gap:12px}
.kicker::before{content:"";width:34px;height:2px;background:currentColor}
.hero h1{font-family:var(--display);font-weight:900;text-transform:uppercase;line-height:.86;letter-spacing:.005em;font-size:clamp(56px,10.5vw,148px);margin:18px 0 22px;color:#f5f1ea;text-shadow:0 4px 30px rgba(0,0,0,.45)}
.hero h1 em{font-style:normal;font-family:var(--stencil);color:var(--amber);text-shadow:0 0 28px rgba(255,170,60,.45)}
.hero p.lead{max-width:600px;font-size:clamp(16px,1.6vw,19px);color:#ddd8d0;margin:0 0 30px}
.hero-ctas{display:flex;flex-wrap:wrap;gap:12px}
.hero-meta{display:flex;flex-wrap:wrap;gap:0;margin-top:46px;border-top:1px solid rgba(255,255,255,.18)}
.hero-meta div{padding:18px 30px 0 0;margin-right:30px;border-right:1px solid rgba(255,255,255,.12)}
.hero-meta div:last-child{border-right:0}
.hero-meta b{display:block;font-family:var(--display);font-weight:800;font-size:40px;line-height:1;color:#fff}
.hero-meta span{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.hero-dots{position:absolute;right:24px;bottom:30px;z-index:5;display:flex;gap:8px}
.hero-dots button{width:26px;height:3px;border:0;padding:0;background:rgba(255,255,255,.35);cursor:pointer}
.hero-dots button.on{background:var(--amber)}
.hero-cap{position:absolute;right:24px;bottom:44px;z-index:5;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.7)}

/* ---------- sections ---------- */
section{position:relative}
.sec{padding:110px 0}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:42px;flex-wrap:wrap}
.sec-num{font-family:var(--stencil);font-size:15px;letter-spacing:.3em;color:var(--amber)}
.sec-title{font-family:var(--display);font-weight:900;text-transform:uppercase;line-height:.9;font-size:clamp(44px,6.4vw,86px);margin:10px 0 0;letter-spacing:.005em}
.sec-sub{max-width:520px;color:var(--muted);margin:0}
.concrete .sec-sub{color:#2a2a28}
.concrete .sec-num{color:#7c3a1f}

/* ---------- filter chips ---------- */
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:0;cursor:pointer;font-family:var(--display);font-weight:700;text-transform:uppercase;letter-spacing:.12em;font-size:14px;padding:10px 16px;border-radius:2px;background:rgba(255,255,255,.06);color:#dcd8d1;box-shadow:inset 0 0 0 1px rgba(255,255,255,.14);transition:.2s}
.chip:hover{background:rgba(255,255,255,.12)}
.chip[aria-pressed="true"]{background:var(--amber);color:#1a1206;box-shadow:0 0 22px -4px var(--glow)}
.chip .ct{font-family:var(--mono);font-size:11px;opacity:.7;margin-left:6px}
.concrete .chip{background:rgba(20,20,20,.12);color:#1b1b1a;box-shadow:inset 0 0 0 1px rgba(0,0,0,.25)}
.concrete .chip:hover{background:rgba(20,20,20,.2)}
.concrete .chip[aria-pressed="true"]{background:#151617;color:var(--amber);box-shadow:0 8px 20px -8px rgba(0,0,0,.6)}

/* ---------- listings ---------- */
#listings{padding-top:190px}
#listings .ceiling .duct{top:22px}
.listing-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:26px}
.lcard{position:relative;display:flex;flex-direction:column;background:#141516;color:var(--text);border-radius:3px;overflow:hidden;box-shadow:0 30px 60px -30px rgba(0,0,0,.75),0 0 0 1px rgba(0,0,0,.5);transition:transform .25s,box-shadow .25s}
.lcard:hover{transform:translateY(-4px);box-shadow:0 40px 70px -30px rgba(0,0,0,.85),0 0 0 1px rgba(255,181,71,.35)}
.lcard .ph{position:relative;aspect-ratio:16/10;overflow:hidden;cursor:pointer;background:#222}
.lcard .ph img{width:100%;height:100%;object-fit:cover;transition:transform .8s}
.lcard:hover .ph img{transform:scale(1.05)}
.lcard .ph::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(0,0,0,.65))}
.tag{position:absolute;top:14px;left:14px;z-index:2;font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;padding:6px 10px;border-radius:2px;background:#e9e5de;color:#141414;box-shadow:0 4px 10px rgba(0,0,0,.35)}
.tag.kind-commercial{background:#151617;color:var(--amber);box-shadow:inset 0 0 0 1px rgba(255,181,71,.5),0 4px 10px rgba(0,0,0,.35)}
.tag.kind-residential{background:var(--brick);color:#fff}
.status{position:absolute;left:14px;bottom:12px;z-index:2;display:flex;align-items:center;gap:8px;font-family:var(--display);font-weight:700;text-transform:uppercase;letter-spacing:.1em;font-size:14px;color:#fff}
.status i{width:9px;height:9px;border-radius:50%;background:#4ade80;box-shadow:0 0 0 0 rgba(74,222,128,.6);animation:ping 2.2s infinite}
.status.tone-hot i{background:var(--amber);box-shadow:0 0 0 0 rgba(255,181,71,.6)}
.status.tone-new i{background:#7dd3fc}
@keyframes ping{0%{box-shadow:0 0 0 0 rgba(255,255,255,.5)}70%{box-shadow:0 0 0 8px rgba(255,255,255,0)}100%{box-shadow:0 0 0 0 rgba(255,255,255,0)}}
.photo-count{position:absolute;right:12px;bottom:12px;z-index:2;font-family:var(--mono);font-size:11px;color:#fff;background:rgba(0,0,0,.55);padding:4px 8px;border-radius:2px;display:flex;align-items:center;gap:6px}
.photo-count svg{width:13px;height:13px}
.lbody{padding:22px 22px 20px;display:flex;flex-direction:column;flex:1}
.ltype{font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.ltitle{font-family:var(--display);font-weight:800;text-transform:uppercase;font-size:30px;line-height:1;margin:8px 0 4px;letter-spacing:.01em}
.ltown{color:#bdb8b0;font-size:14px}
.lsize{display:flex;align-items:baseline;gap:10px;margin:16px 0 14px;padding:12px 0;border-top:1px dashed rgba(255,255,255,.14);border-bottom:1px dashed rgba(255,255,255,.14)}
.lsize b{font-family:var(--display);font-weight:800;font-size:26px;color:var(--amber);line-height:1}
.lsize span{font-family:var(--mono);font-size:11.5px;color:var(--muted)}
.lhl{list-style:none;margin:0 0 18px;padding:0;display:grid;gap:7px;font-size:14px;color:#d6d2ca}
.lhl li{position:relative;padding-left:18px}
.lhl li::before{content:"";position:absolute;left:0;top:.6em;width:8px;height:2px;background:var(--amber)}
.lactions{margin-top:auto;display:flex;gap:10px;flex-wrap:wrap}
.lactions .btn{flex:1;justify-content:center}
.res-note{display:flex;flex-direction:column;justify-content:center;gap:14px;padding:30px;border-radius:3px;background:rgba(15,15,16,.86);color:var(--text);box-shadow:0 0 0 1px rgba(255,255,255,.08),0 30px 60px -30px rgba(0,0,0,.75)}
.res-note h3{font-family:var(--display);font-weight:800;text-transform:uppercase;font-size:30px;line-height:1;margin:0}
.res-note p{margin:0;color:#c9c4bc;font-size:15px}
.res-note ul{margin:0;padding:0;list-style:none;display:grid;gap:6px;font-family:var(--mono);font-size:12px;color:var(--muted);letter-spacing:.04em}
.res-note ul li::before{content:"▸ ";color:var(--amber)}
.listing-foot{margin-top:34px;display:flex;align-items:center;gap:18px;flex-wrap:wrap;font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:#2a2a28}
.listing-foot a{font-weight:700}

/* ---------- Meet Willow ---------- */
.willow-sec{padding:120px 0;overflow:hidden}
.marquee{font-family:var(--display);font-weight:900;text-transform:uppercase;font-size:clamp(70px,13vw,190px);line-height:.8;letter-spacing:.06em;color:#fff6e3;text-shadow:0 0 6px #ffe4ad,0 0 22px rgba(255,190,90,.95),0 0 60px rgba(255,160,50,.7),0 0 120px rgba(255,140,30,.45);animation:neon 7s infinite;margin:0 0 6px}
@keyframes neon{0%,18%,20%,54%,56%,100%{opacity:1}19%,55%{opacity:.78}}
.willow-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:56px;align-items:center}
.monitor{position:relative;border-radius:6px;padding:14px;background:linear-gradient(180deg,#2b2f33,#141516);box-shadow:0 0 0 1px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.15),0 50px 80px -30px rgba(0,0,0,.9);cursor:pointer}
.monitor::before{content:"";position:absolute;inset:6px;border:1px dashed rgba(255,255,255,.08);border-radius:4px;pointer-events:none}
.monitor .scr{position:relative;aspect-ratio:16/10;overflow:hidden;border-radius:3px;background:#000}
.monitor .scr img{width:100%;height:100%;object-fit:cover;object-position:50% 30%;transition:transform .8s}
.monitor:hover .scr img{transform:scale(1.03)}
.monitor .scr::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 50%,rgba(0,0,0,.75))}
.monitor .live{position:absolute;top:14px;left:14px;z-index:2;display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:#fff;background:rgba(0,0,0,.55);padding:5px 10px 5px 8px;border-radius:2px}
.monitor .live i{width:8px;height:8px;border-radius:50%;background:#ef4444;animation:ping 2s infinite}
.monitor .play{position:absolute;z-index:2;left:50%;top:50%;transform:translate(-50%,-50%);width:86px;height:86px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#ffc76a,#f39a25);box-shadow:0 0 0 10px rgba(255,181,71,.18),0 0 50px var(--glow);transition:transform .2s}
.monitor:hover .play{transform:translate(-50%,-50%) scale(1.07)}
.monitor .play svg{width:32px;height:32px;margin-left:5px}
.monitor .cap{position:absolute;left:20px;bottom:16px;z-index:2;color:#fff}
.monitor .cap b{display:block;font-family:var(--display);font-weight:800;text-transform:uppercase;font-size:28px;letter-spacing:.06em;line-height:1}
.monitor .cap span{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;opacity:.85}
.willow-copy h2{font-family:var(--display);font-weight:900;text-transform:uppercase;font-size:clamp(36px,4.4vw,58px);line-height:.92;margin:0 0 16px}
.willow-copy p{color:#ddd6cc;margin:0 0 26px;font-size:17px}
.abilities{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:0 0 30px;padding:0;list-style:none}
.abilities li{background:rgba(10,10,10,.55);border:1px solid rgba(255,255,255,.1);border-left:3px solid var(--amber);padding:14px 16px;border-radius:2px;backdrop-filter:blur(2px)}
.abilities b{display:block;font-family:var(--display);font-weight:800;text-transform:uppercase;letter-spacing:.06em;font-size:17px;color:#fff;margin-bottom:2px}
.abilities span{font-size:13.5px;color:#cfc8bd;line-height:1.45;display:block}
.fine{font-family:var(--mono);font-size:11px;color:rgba(255,255,255,.55);letter-spacing:.04em;margin-top:16px}

/* ---------- portfolio ---------- */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:16px}
.pcard{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:2px;cursor:pointer;background:#222;border:0;padding:0;text-align:left;box-shadow:0 0 0 1px rgba(0,0,0,.6)}
.pcard img{width:100%;height:100%;object-fit:cover;transition:transform .9s,filter .4s;filter:saturate(.85) contrast(1.04)}
.pcard:hover img,.pcard:focus-visible img{transform:scale(1.07);filter:saturate(1.05)}
.pcard::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 40%,rgba(0,0,0,.85))}
.pcard .pc{position:absolute;left:16px;right:16px;bottom:14px;z-index:2;color:#fff}
.pcard .pc small{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--amber);margin-bottom:4px}
.pcard .pc b{display:block;font-family:var(--display);font-weight:800;text-transform:uppercase;font-size:23px;line-height:1;letter-spacing:.02em}
.pcard .pc span{display:block;font-size:13px;color:#cfcac2;margin-top:3px}
.pcard .pn{position:absolute;top:12px;right:12px;z-index:2;font-family:var(--mono);font-size:10.5px;color:#fff;background:rgba(0,0,0,.5);padding:3px 7px;border-radius:2px}
.pcard.wide{grid-column:span 2;aspect-ratio:auto}
.pgrid .empty{grid-column:1/-1;color:var(--muted);font-family:var(--mono)}

/* ---------- about ---------- */
.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}
.about-copy h2{font-family:var(--display);font-weight:900;text-transform:uppercase;font-size:clamp(40px,5vw,68px);line-height:.9;margin:10px 0 20px}
.about-copy p{color:#c9c4bb;font-size:17px;margin:0 0 16px}
.pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:28px 0}
.pillar{padding:18px 16px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.09);border-top:3px solid var(--brick)}
.pillar b{font-family:var(--display);font-weight:800;text-transform:uppercase;letter-spacing:.06em;font-size:18px;display:block;line-height:1.05;margin-bottom:6px}
.pillar span{font-size:13.5px;color:var(--muted);display:block;line-height:1.45}
.collage{display:grid;grid-template-columns:1.2fr 1fr;grid-template-rows:220px 220px;gap:12px}
.collage img{width:100%;height:100%;object-fit:cover;border-radius:2px;box-shadow:0 20px 40px -20px rgba(0,0,0,.8)}
.collage img:first-child{grid-row:span 2}
.sites{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px}
.sites a{display:flex;align-items:center;gap:12px;padding:10px 14px 10px 10px;background:#f2eee7;color:#151515;text-decoration:none;border-radius:2px;font-family:var(--display);font-weight:800;text-transform:uppercase;letter-spacing:.08em;font-size:15px;transition:transform .2s}
.sites a:hover{transform:translateY(-2px)}
.sites img{width:44px;height:44px;object-fit:contain;background:#fff}

/* ---------- feed ---------- */
.feed{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.post{position:relative;display:block;aspect-ratio:1;overflow:hidden;border-radius:2px;text-decoration:none;background:#111}
.post img{width:100%;height:100%;object-fit:cover;transition:transform .7s}
.post:hover img{transform:scale(1.06)}
.post::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 35%,rgba(0,0,0,.88))}
.post .pt{position:absolute;left:10px;right:10px;bottom:9px;z-index:2;color:#fff;font-size:12px;line-height:1.35}
.post .pt time{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--amber);text-transform:uppercase;margin-bottom:3px}
.post .reel{position:absolute;top:8px;right:8px;z-index:2;width:22px;height:22px;color:#fff}

/* ---------- contact ---------- */
.contact-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:40px;align-items:stretch}
.plates{display:grid;gap:14px}
.plate{position:relative;padding:22px 26px;background:linear-gradient(180deg,#2c3034,#1c1f22);border-radius:3px;box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 16px 30px -18px rgba(0,0,0,.9)}
.plate::before,.plate::after{content:"";position:absolute;top:10px;width:8px;height:8px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#7b8287,#2a2d30 70%)}
.plate::before{left:10px}.plate::after{right:10px}
.plate small{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--amber)}
.plate a.ph{display:block;font-family:var(--display);font-weight:800;font-size:30px;letter-spacing:.03em;text-decoration:none;margin:6px 0 2px;color:#fff}
.plate a.ph:hover{color:var(--amber)}
.plate a.em{font-size:14.5px;color:#cfc9c0;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.2)}
.plate a.em:hover{color:#fff;border-color:var(--amber)}
.map{position:relative;min-height:380px;border-radius:3px;overflow:hidden;box-shadow:0 0 0 1px rgba(255,255,255,.08)}
.map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:grayscale(1) contrast(1.1) brightness(.85)}
.map .addr{position:absolute;left:16px;bottom:16px;z-index:2;background:#151617;color:#fff;padding:14px 18px;border-left:3px solid var(--amber);font-size:14px;line-height:1.45;box-shadow:0 10px 26px rgba(0,0,0,.5)}
.map .addr b{font-family:var(--display);font-weight:800;text-transform:uppercase;letter-spacing:.06em;font-size:18px;display:block}
.socials{display:flex;gap:10px;margin-top:6px}
.socials a{width:44px;height:44px;display:grid;place-items:center;border-radius:2px;background:rgba(255,255,255,.07);box-shadow:inset 0 0 0 1px rgba(255,255,255,.14);transition:.2s}
.socials a:hover{background:var(--amber);color:#1a1206}
.socials svg{width:20px;height:20px}

/* ---------- footer ---------- */
.foot{background:#0d0e0f;padding:46px 0 120px;color:#8d8983;font-size:13px}
.foot-in{display:flex;gap:30px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.foot .logo{color:#d9d4cc}
.foot a{color:#bdb8b0}

/* ---------- modal: listing detail ---------- */
.lm{position:fixed;inset:0;z-index:8000;display:none;background:rgba(6,6,7,.92);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.lm.open{display:block;animation:fade .25s}
@keyframes fade{from{opacity:0}to{opacity:1}}
.lm-in{position:absolute;inset:18px;display:grid;grid-template-columns:minmax(0,1.55fr) minmax(340px,1fr);background:#121314;border-radius:4px;overflow:hidden;box-shadow:0 50px 120px rgba(0,0,0,.8),0 0 0 1px rgba(255,255,255,.06)}
.lm-gal{position:relative;display:flex;flex-direction:column;background:#070708;min-height:0;min-width:0}
.lm-main{position:relative;flex:1;min-height:0}
.lm-main img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.lm-nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;border:0;cursor:pointer;background:rgba(20,20,20,.7);color:#fff;display:grid;place-items:center;transition:.2s;z-index:2}
.lm-nav:hover{background:var(--amber);color:#1a1206}
.lm-nav.prev{left:14px}.lm-nav.next{right:14px}
.lm-nav svg{width:22px;height:22px}
.lm-count{position:absolute;left:14px;top:14px;font-family:var(--mono);font-size:12px;background:rgba(0,0,0,.6);padding:5px 9px;border-radius:2px;z-index:2}
.lm-thumbs{display:flex;gap:6px;padding:8px;overflow-x:auto;background:#0b0b0c;scrollbar-width:thin}
.lm-thumbs button{flex:0 0 auto;width:92px;height:62px;padding:0;border:2px solid transparent;border-radius:2px;overflow:hidden;cursor:pointer;opacity:.6;background:#222}
.lm-thumbs button.on{border-color:var(--amber);opacity:1}
.lm-thumbs img{width:100%;height:100%;object-fit:cover}
.lm-info{overflow-y:auto;padding:34px 34px 30px;position:relative;min-width:0}
.lm-close{position:absolute;top:26px;right:26px;width:42px;height:42px;z-index:12;border:0;border-radius:50%;cursor:pointer;background:rgba(255,255,255,.08);color:#fff;display:grid;place-items:center;transition:.2s}
.lm-close:hover{background:#dc2626;transform:rotate(90deg)}
.lm-close svg{width:20px;height:20px}
.lm-info .tag{position:static;display:inline-block;margin-right:8px}
.lm-info h2{font-family:var(--display);font-weight:900;text-transform:uppercase;font-size:44px;line-height:.92;margin:16px 0 4px}
.lm-info .ltown{font-size:15px}
.lm-info .status{position:static;margin:16px 0 4px}
.lm-info .snote{font-family:var(--mono);font-size:12px;color:var(--muted);letter-spacing:.04em}
.lm-info p.sum{color:#d6d0c7;margin:18px 0}
.specs{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.08);margin:18px 0 22px}
.specs div{background:#171819;padding:11px 13px}
.specs dt{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.specs dd{margin:3px 0 0;font-family:var(--display);font-weight:700;font-size:18px;letter-spacing:.02em;color:#f1ede6;line-height:1.15}
.lm-info h3{font-family:var(--display);font-weight:800;text-transform:uppercase;letter-spacing:.1em;font-size:16px;color:var(--amber);margin:22px 0 10px}
.lm-info .lhl{font-size:14.5px}
.plans{display:flex;gap:8px;flex-wrap:wrap}
.plans button{width:110px;height:80px;padding:0;border:1px solid rgba(255,255,255,.15);background:#fff;border-radius:2px;cursor:pointer;overflow:hidden}
.plans img{width:100%;height:100%;object-fit:contain}
.lm-cta{display:grid;gap:10px;margin-top:24px;position:sticky;bottom:-30px;padding:16px 0 30px;background:linear-gradient(180deg,rgba(18,19,20,0),#121314 22%)}
.lm-cta .row{display:flex;gap:10px}
.lm-cta .row .btn{flex:1;justify-content:center}
.lm-src{font-family:var(--mono);font-size:10.5px;color:#77736d;letter-spacing:.04em;margin-top:16px}

/* ---------- lightbox (portfolio) ---------- */
.lb{position:fixed;inset:0;z-index:8100;display:none;background:rgba(5,5,6,.95)}
.lb.open{display:block;animation:fade .25s}
.lb-main{position:absolute;inset:70px 70px 110px}
.lb-main img{width:100%;height:100%;object-fit:contain}
.lb-top{position:absolute;left:24px;right:24px;top:18px;display:flex;align-items:center;gap:16px}
.lb-top b{font-family:var(--display);font-weight:800;text-transform:uppercase;font-size:24px;letter-spacing:.04em}
.lb-top span{font-family:var(--mono);font-size:12px;color:var(--muted)}
.lb-top .lm-close{position:static;margin-left:auto}
.lb .lm-nav.prev{left:16px}.lb .lm-nav.next{right:16px}
.lb-thumbs{position:absolute;left:0;right:0;bottom:14px;display:flex;justify-content:center;gap:6px;padding:0 16px;overflow-x:auto}
.lb-thumbs button{flex:0 0 auto;width:84px;height:58px;padding:0;border:2px solid transparent;border-radius:2px;overflow:hidden;cursor:pointer;opacity:.55;background:#222}
.lb-thumbs button.on{border-color:var(--amber);opacity:1}
.lb-thumbs img{width:100%;height:100%;object-fit:cover}
.lb-extra{position:absolute;left:24px;top:56px;font-size:13px;color:#cfcac2;max-width:640px}

/* ---------- responsive ---------- */
@media (max-width:1080px){
  .willow-grid,.about-grid,.contact-grid{grid-template-columns:1fr}
  .feed{grid-template-columns:repeat(3,1fr)}
  .lm-in{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(260px,46vh) minmax(0,1fr)}
}
@media (max-width:860px){
  .nav{display:none}
  .menu-btn{display:block}
  .nav.open{display:flex;position:fixed;inset:78px 0 auto;flex-direction:column;align-items:stretch;gap:0;background:rgba(14,15,16,.97);padding:10px 20px 22px;box-shadow:0 20px 40px rgba(0,0,0,.5)}
  .nav.open a{padding:14px 0;border-bottom:1px solid var(--line);font-size:18px}
  .nav.open .nav-cta{margin:14px 0 0;justify-content:center}
}
@media (max-width:700px){
  .wrap{width:calc(100% - 32px)}
  .head-in{height:68px}
  .hero .ceiling{top:68px}
  .nav.open{inset:68px 0 auto}
  .sec{padding:80px 0}
  #listings{padding-top:170px}
  .hero-in{padding:150px 0 44px}
  .hero-meta div{padding:14px 18px 0 0;margin-right:18px}
  .hero-meta b{font-size:30px}
  .hero-dots,.hero-cap{display:none}
  .listing-grid{grid-template-columns:1fr}
  .abilities{grid-template-columns:1fr}
  .pillars{grid-template-columns:1fr}
  .pgrid{grid-template-columns:1fr 1fr;gap:10px}
  .pcard .pc b{font-size:17px}
  .pcard .pc span{display:none}
  .pcard.wide{grid-column:span 2}
  .collage{grid-template-rows:150px 150px}
  .feed{grid-template-columns:repeat(2,1fr)}
  .lm-in{inset:0;border-radius:0;grid-template-rows:minmax(240px,40vh) minmax(0,1fr)}
  .lm-info{padding:24px 18px 0}
  .lm-close{top:12px;right:12px;position:fixed;background:rgba(0,0,0,.6)}
  .lm-info h2{font-size:34px}
  .lm-thumbs button{width:70px;height:48px}
  .lb-main{inset:60px 8px 100px}
  .lb .lm-nav{display:none}
  .plate a.ph{font-size:24px}
  .map{min-height:300px}
  .duct{height:34px;top:14px}
  .ltitle{font-size:26px}
}

/* hide the floating concierge launcher while a gallery/listing is open */
body.modal-open #wlw-launch,body.modal-open #wlw-mini{display:none!important}
