
/* Layout: full-bleed video hero, then alternating black / burgundy-black bands; light mode swaps to ivory and stone with burgundy ink.
   Palette pulled from the logo: gold #B58320 / #E1B95A / #FFE5B3, burgundy #2D0810 / #530F1E, black #13090B. */
:root{
  color-scheme:dark;
  --bg:#0E0A0B; --bg-2:#150C0F; --bg-3:#1B0F13;
  --surface:#1C1215; --surface-2:#26161B;
  --fg:#F4EADA; --fg-2:#DCCDB8; --muted:#A8978A;
  --line:rgba(225,185,90,.16); --line-2:rgba(244,234,218,.10);
  --gold:#E1B95A; --gold-hi:#FFE5B3; --gold-deep:#B58320; --gold-ink:#E1B95A;
  --wine:#530F1E; --wine-2:#8E2A40; --wine-soft:rgba(122,28,48,.30); --rose:#C2687C;
  --field:#170E11; --card:rgba(255,240,220,.03); --glow:rgba(225,185,90,.45); --shadow:rgba(0,0,0,.5);
  --btn-bg:linear-gradient(135deg,#B58320,#E1B95A 55%,#C9962F); --btn-bg-hover:linear-gradient(135deg,#C4912A,#F0CC75 55%,#D6A33C); --btn-fg:#1A0B0E;
  --chip-on-bg:#E1B95A; --chip-on-fg:#1A0B0E;
  --nav-solid:rgba(14,10,11,.86);
  --glow-a:rgba(122,28,48,.42); --glow-b:rgba(225,185,90,.16); --glow-c:rgba(83,15,30,.5); --rings:rgba(225,185,90,.07);
  --map-sea:#160C10; --map-land:#2A141B; --map-wave:rgba(225,185,90,.13); --map-coast:#B58320; --map-text:#F3E9D8; --map-halo:#0E0A0B; --map-road:#B58320; --map-label:#A8978A; --map-isle:#3A1C25;
  --foot-bg:#0B0708; --foot-fg:#A8978A; --foot-hi:#F4EADA; --foot-glow:rgba(83,15,30,.45);
  --display:"Marcellus", "Cormorant", Georgia, "Times New Roman", serif;
  --body:"Instrument Sans", "Helvetica Neue", Arial, system-ui, sans-serif;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
:root[data-mode="light"]{
  color-scheme:light;
  --bg:#FBF8F3; --bg-2:#F5EEE5; --bg-3:#F1E6DD;
  --surface:#FFFFFF; --surface-2:#F8F1E8;
  --fg:#2B1217; --fg-2:#4D3135; --muted:#7B6560;
  --line:rgba(83,15,30,.15); --line-2:rgba(83,15,30,.08);
  --gold:#B58320; --gold-hi:#D9AE4F; --gold-deep:#8C6418; --gold-ink:#8A6216;
  --wine:#530F1E; --wine-2:#7A1C30; --wine-soft:rgba(122,28,48,.09); --rose:#A8475C;
  --field:#FFFFFF; --card:#FFFFFF; --glow:rgba(181,131,32,.38); --shadow:rgba(83,15,30,.14);
  --btn-bg:linear-gradient(135deg,#5E1222,#7A1C30); --btn-bg-hover:linear-gradient(135deg,#6E1829,#8E2A40); --btn-fg:#FBEFD9;
  --chip-on-bg:#530F1E; --chip-on-fg:#FBEFD9;
  --nav-solid:rgba(251,248,243,.92);
  --glow-a:rgba(122,28,48,.10); --glow-b:rgba(225,185,90,.18); --glow-c:rgba(122,28,48,.07); --rings:rgba(83,15,30,.06);
  --foot-bg:#FBF8F3; --foot-fg:#7B6560; --foot-hi:#2B1217; --foot-glow:rgba(122,28,48,.07);
  --map-sea:#EDE2D4; --map-land:#FBF6EF; --map-wave:rgba(83,15,30,.10); --map-coast:#B58320; --map-text:#2B1217; --map-halo:#FBF6EF; --map-road:#B58320; --map-label:#7B6560; --map-isle:#F3E9DC;
}
html{ scroll-padding-top:calc(env(safe-area-inset-top,0px) + 72px); }
*,*::before,*::after{ box-sizing:inherit; }
body{ margin:0; background:var(--bg); color:var(--fg); font-family:var(--body); font-size:17px; line-height:1.6; -webkit-font-smoothing:antialiased; overflow-x:hidden; transition:background .4s, color .4s; }
img,svg,video{ max-width:100%; }
a{ color:inherit; }
button,input,select,textarea{ font:inherit; color:inherit; }
:focus-visible{ outline:2px solid var(--gold); outline-offset:3px; border-radius:4px; }
h1,h2,h3{ font-family:var(--display); font-weight:400; line-height:1.08; margin:0; letter-spacing:-.005em; text-wrap:balance; }
h2{ font-size:clamp(2rem,4.2vw,3.5rem); }
h3{ font-size:1.45rem; line-height:1.2; }
p{ margin:0; }
.wrap{ width:min(1240px, 100% - 48px); margin-inline:auto; }
.eyebrow{ font-family:"Montserrat", var(--body); font-size:.72rem; letter-spacing:.32em; text-transform:uppercase; color:var(--gold-ink); }

/* ---------- nav ---------- */
.nav{ position:fixed; z-index:50; top:0; left:0; right:0; padding-top:env(safe-area-inset-top,0px); transition:background .4s, backdrop-filter .4s, box-shadow .4s; color:#F4EADA; }
.nav.solid{ background:var(--nav-solid); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); color:var(--fg); box-shadow:0 1px 0 var(--line); }
.nav-in{ display:flex; align-items:center; justify-content:space-between; height:72px; gap:16px; }
.mark{ display:inline-flex; align-items:center; gap:12px; text-decoration:none; }
.mark img{ width:46px; height:46px; flex:none; object-fit:contain; }
.mark img.logo-d{ border-radius:9px; box-shadow:0 0 0 1px rgba(225,185,90,.35); }
.logo-l{ display:none; }
:root[data-mode="light"] .nav.solid .mark .logo-d{ display:none; }
:root[data-mode="light"] .nav.solid .mark .logo-l{ display:block; }

.mark .wm{ display:flex; flex-direction:column; line-height:1; gap:6px; }
.mark .wm b{ font-family:"Cinzel", var(--display); font-weight:700; font-size:1.2rem; letter-spacing:.07em; background:linear-gradient(180deg,#FFE5B3,#E1B95A 45%,#B58320); -webkit-background-clip:text; background-clip:text; color:transparent; }
.nav.solid .mark .wm b{ background:none; -webkit-background-clip:border-box; background-clip:border-box; color:var(--fg); }
:root:not([data-mode="light"]) .nav.solid .mark .wm b{ background:linear-gradient(180deg,#FFE5B3,#E1B95A 45%,#B58320); -webkit-background-clip:text; background-clip:text; color:transparent; }
:root[data-mode="light"] .nav.solid .mark .wm b{ color:var(--wine); }
.mark .wm small{ font-family:"Montserrat", var(--body); font-weight:500; font-size:.54rem; letter-spacing:.56em; color:#E1B95A; padding-left:1px; }
.nav.solid .mark .wm small{ color:var(--gold-ink); }
.nav-links{ display:flex; gap:28px; align-items:center; }
.nav-links a{ text-decoration:none; font-size:.95rem; opacity:.85; }
.nav-links a:hover{ opacity:1; }
.nav-tools{ display:flex; align-items:center; gap:10px; }
.mode{ width:40px; height:40px; border-radius:50%; border:1px solid currentColor; background:transparent; display:grid; place-items:center; cursor:pointer; opacity:.85; transition:opacity .2s, border-color .2s; }
.mode:hover{ opacity:1; border-color:var(--gold); }
.mode svg{ width:18px; height:18px; }
.mode .sun{ display:none; } :root[data-mode="light"] .mode .sun{ display:block; } :root[data-mode="light"] .mode .moon{ display:none; }
.btn{ display:inline-flex; align-items:center; justify-content:center; gap:8px; border:0; cursor:pointer; text-decoration:none; padding:12px 22px; border-radius:999px; font-weight:500; font-size:.95rem; transition:background .2s, color .2s, transform .15s, box-shadow .2s; }
.btn:active{ transform:scale(.98); }
.btn-brass{ background:var(--btn-bg); color:var(--btn-fg); }
.btn-brass:hover{ background:var(--btn-bg-hover); box-shadow:0 6px 24px var(--glow); }
.hero .btn-brass, .nav:not(.solid) .btn-brass{ background:linear-gradient(135deg,#B58320,#E1B95A 55%,#C9962F); color:#1A0B0E; }
.btn-line{ background:transparent; border:1px solid currentColor; }
.btn-line:hover{ background:var(--wine-soft); }
.hero .btn-line:hover{ background:rgba(255,255,255,.08); }
.btn-dark{ background:var(--fg); color:var(--bg); }
.btn-dark:hover{ box-shadow:0 6px 24px var(--shadow); }
.menu-btn{ display:none; background:none; border:1px solid currentColor; border-radius:999px; padding:8px 16px; cursor:pointer; opacity:.85; }
@media (max-width:960px){
  .nav-links{ display:none; position:absolute; top:calc(72px + env(safe-area-inset-top,0px)); left:0; right:0; flex-direction:column; align-items:stretch; gap:0; background:var(--nav-solid); color:var(--fg); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); padding:10px 24px 24px; border-bottom:1px solid var(--line); }
  .nav-links.open{ display:flex; }
  .nav-links a{ padding:12px 0; width:100%; border-bottom:1px solid var(--line-2); }
  .nav-links .btn{ margin-top:14px; }
  .menu-btn{ display:inline-flex; }
}
@media (max-width:420px){ .mark .wm small{ letter-spacing:.42em; } .mark img{ width:40px; height:40px; } }

/* ---------- hero ---------- */
.hero{ position:relative; min-height:100vh; min-height:100svh; display:flex; align-items:flex-end; overflow:hidden; background:#0B0708; color:#F4EADA; isolation:isolate; }
.hero-vid{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-3; }
.hero-fallback{ position:absolute; inset:0; z-index:-4; background:radial-gradient(70% 60% at 70% 30%, #3A0D17 0%, #1A080C 45%, #0B0708 80%); }
.hero-fallback svg{ position:absolute; left:0; right:0; bottom:0; width:100%; height:62%; }
.hero-fallback .sky-glow{ animation:breathe 9s ease-in-out infinite alternate; transform-origin:70% 60%; }
@keyframes breathe{ from{ opacity:.55; transform:scale(1); } to{ opacity:1; transform:scale(1.08); } }
.hero-shade{ position:absolute; inset:0; z-index:-2; pointer-events:none;
  background:
    linear-gradient(90deg, rgba(11,7,8,.88) 0%, rgba(11,7,8,.62) 34%, rgba(11,7,8,.18) 62%, rgba(11,7,8,.05) 100%),
    linear-gradient(0deg, rgba(11,7,8,.85) 0%, rgba(11,7,8,0) 42%),
    radial-gradient(60% 50% at 18% 70%, rgba(83,15,30,.45), transparent 70%); }
@media (max-width:760px){ .hero-shade{ background: linear-gradient(180deg, rgba(11,7,8,.55) 0%, rgba(11,7,8,.35) 35%, rgba(11,7,8,.9) 100%), radial-gradient(80% 50% at 30% 80%, rgba(83,15,30,.45), transparent 70%); } }
.hero-in{ width:min(1240px, 100% - 48px); margin-inline:auto; padding:calc(140px + env(safe-area-inset-top,0px)) 0 calc(110px + env(safe-area-inset-bottom,0px)); }
.hero h1{ font-size:clamp(2.7rem,6.6vw,6rem); color:#FBF4E8; max-width:12em; text-shadow:0 2px 24px rgba(0,0,0,.5); margin-top:18px; }
.hero h1 em{ font-style:normal; background:linear-gradient(180deg,#FFE5B3,#E1B95A 50%,#B58320); -webkit-background-clip:text; background-clip:text; color:transparent; }
.hero p.lede{ margin-top:22px; font-size:1.12rem; max-width:34em; color:#E9DCC6; text-shadow:0 1px 12px rgba(0,0,0,.7); }
.hero .row{ display:flex; gap:12px; margin-top:30px; flex-wrap:wrap; }
.hero .eyebrow{ color:#E1B95A; }
.hero-foot{ position:absolute; left:0; right:0; bottom:calc(24px + env(safe-area-inset-bottom,0px)); }
.hero-foot .wrap{ display:flex; justify-content:space-between; align-items:center; gap:16px; }
.hint{ font-size:.85rem; color:#F3E9D8; display:flex; align-items:center; gap:12px; opacity:.85; text-decoration:none; }
.hint i{ width:1px; height:36px; background:linear-gradient(#E1B95A, transparent); animation:drip 2.2s ease-in-out infinite; transform-origin:top; }
@keyframes drip{ 0%{ transform:scaleY(0); } 50%{ transform:scaleY(1); } 100%{ transform:scaleY(1); opacity:0; } }
.vid-btn{ display:inline-flex; align-items:center; gap:8px; background:rgba(11,7,8,.55); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); border:1px solid rgba(225,185,90,.4); color:#F4EADA; border-radius:999px; padding:8px 14px; font-size:.85rem; cursor:pointer; }
.vid-btn svg{ width:12px; height:12px; }
.vid-btn:hover{ border-color:#E1B95A; }
.vid-credit{ font-size:.75rem; color:rgba(244,234,218,.6); }

/* ---------- living backgrounds ---------- */
.glow-bg{ position:relative; isolation:isolate; overflow:hidden; }
.glow-bg::before{ content:""; position:absolute; inset:-25%; z-index:-1; pointer-events:none;
  background:
    radial-gradient(38% 46% at 14% 18%, var(--glow-a), transparent 70%),
    radial-gradient(34% 42% at 86% 26%, var(--glow-b), transparent 70%),
    radial-gradient(44% 52% at 62% 92%, var(--glow-c), transparent 70%);
  animation:drift 28s ease-in-out infinite alternate; }
.glow-bg::after{ content:""; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background:repeating-radial-gradient(ellipse at 92% 8%, var(--rings) 0 1px, transparent 1px 34px);
  -webkit-mask-image:radial-gradient(ellipse at 92% 8%, #000 0%, transparent 65%); mask-image:radial-gradient(ellipse at 92% 8%, #000 0%, transparent 65%); }
.glow-bg.alt::before{ animation-duration:34s; animation-direction:alternate-reverse;
  background:
    radial-gradient(40% 48% at 82% 16%, var(--glow-a), transparent 70%),
    radial-gradient(36% 44% at 12% 40%, var(--glow-c), transparent 70%),
    radial-gradient(42% 50% at 50% 100%, var(--glow-b), transparent 70%); }
.glow-bg.alt::after{ background:repeating-radial-gradient(ellipse at 6% 96%, var(--rings) 0 1px, transparent 1px 34px);
  -webkit-mask-image:radial-gradient(ellipse at 6% 96%, #000 0%, transparent 60%); mask-image:radial-gradient(ellipse at 6% 96%, #000 0%, transparent 60%); }
@keyframes drift{ 0%{ transform:translate3d(0,0,0) rotate(0) scale(1); } 50%{ transform:translate3d(5%,-4%,0) rotate(7deg) scale(1.08); } 100%{ transform:translate3d(-4%,5%,0) rotate(-6deg) scale(1.03); } }

/* ---------- card hover glow ---------- */
.lift{ border:1px solid var(--line); background:var(--card); border-radius:16px; transition:transform .35s cubic-bezier(.2,.7,.2,1), box-shadow .35s, border-color .35s, background .4s; }
:root[data-mode="light"] .lift{ box-shadow:0 1px 2px var(--shadow); }
.lift:hover, .lift:focus-visible{ transform:translateY(-6px); border-color:var(--gold); box-shadow:0 0 0 1px var(--glow), 0 0 26px var(--glow), 0 22px 46px var(--shadow); outline:none; }

/* ---------- diagrams ---------- */
.diagram{ margin-top:64px; padding:30px; }
.diagram h3{ margin-bottom:6px; }
.diagram > p{ color:var(--muted); font-size:.95rem; margin-bottom:20px; }
.amort svg{ width:100%; height:auto; display:block; }
.amort .axis{ font-size:12px; fill:var(--muted); font-family:var(--body); }
.amort-legend{ display:flex; gap:20px; flex-wrap:wrap; font-size:.9rem; color:var(--muted); margin-top:10px; }
.amort-legend i{ display:inline-block; width:10px; height:10px; border-radius:2px; margin-right:6px; vertical-align:-1px; }
.diag-row{ display:grid; grid-template-columns:1.5fr 1fr; gap:28px; margin-top:28px; }
.diag-row > *{ min-width:0; }
.donut{ display:flex; align-items:center; justify-content:center; padding:24px; }
.donut svg{ width:min(260px,100%); height:auto; }
.journey{ list-style:none; margin:28px 0 0; padding:0; display:grid; grid-template-columns:repeat(4,1fr); gap:18px; position:relative; }
.journey::before{ content:""; position:absolute; left:20px; right:20px; top:20px; height:2px; background:linear-gradient(90deg, var(--gold), var(--wine-2)); opacity:.7; }
.journey li{ position:relative; padding:58px 18px 20px; }
.journey .n{ position:absolute; top:4px; left:18px; width:34px; height:34px; border-radius:50%; display:grid; place-items:center; background:var(--bg-2); border:2px solid var(--gold); font-family:var(--display); font-size:1rem; }
.journey b{ display:block; font-weight:600; margin-bottom:4px; }
.journey small{ color:var(--muted); display:block; }
.journey .t{ display:inline-block; margin-top:10px; font-size:.82rem; padding:3px 10px; border-radius:999px; background:var(--wine-soft); color:var(--fg); }
.travel{ position:absolute; top:15px; left:20px; width:12px; height:12px; border-radius:50%; background:var(--gold); box-shadow:0 0 14px var(--gold); animation:travel 7s ease-in-out infinite; }
@keyframes travel{ 0%{ left:20px; opacity:0; } 8%{ opacity:1; } 92%{ opacity:1; } 100%{ left:calc(100% - 32px); opacity:0; } }
@media (max-width:900px){ .diag-row{ grid-template-columns:1fr; } .journey{ grid-template-columns:1fr 1fr; } .journey::before, .travel{ display:none; } }
@media (max-width:520px){ .journey{ grid-template-columns:1fr; } }
.flow svg{ width:100%; height:auto; display:block; }
.flow .dash{ stroke-dasharray:6 8; animation:dash 1.4s linear infinite; }
@keyframes dash{ to{ stroke-dashoffset:-28; } }
.flow.busy .core{ animation:pulse 1.2s infinite; }
.flow .fl-node{ fill:var(--surface-2); stroke:var(--line); }
.flow .fl-node.on{ stroke:var(--gold); }
.flow .fl-hub{ fill:var(--surface); stroke:var(--gold); stroke-width:1.5; }
.flow .fl-text{ fill:var(--fg); }
.flow .fl-muted{ fill:var(--muted); }
.flow .fl-wire{ stroke:var(--gold); }
.flow .fl-thumb{ fill:var(--wine-2); }
.flow-cap{ color:var(--muted); font-size:.95rem; margin-top:14px; }

/* ---------- after the hero ---------- */
.after{ background:var(--bg); padding:120px 0 110px; }
.after-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:64px; align-items:end; }
.after h2{ font-size:clamp(2.2rem,4.6vw,4rem); }
.after .lede{ font-size:1.15rem; color:var(--fg-2); max-width:32em; }
.facts{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; margin-top:56px; padding-top:28px; border-top:1px solid var(--line); }
.facts div{ padding:22px 22px 24px; display:flex; flex-direction:column; gap:8px; }
.facts b{ display:block; font-family:var(--display); font-weight:400; font-size:1.65rem; color:var(--gold-ink); line-height:1.15; }
@media (max-width:980px){ .facts{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:520px){ .facts{ grid-template-columns:1fr; } }
.facts span{ color:var(--muted); font-size:.92rem; }
@media (max-width:860px){ .after-grid{ grid-template-columns:1fr; gap:24px; } }

/* ---------- section bands ---------- */
.panel{ background:var(--bg-2); color:var(--fg); }
.dark{ background:var(--bg); color:var(--fg); }
:root[data-mode="light"] .dark{ background:var(--bg-3); }
.sec{ padding:110px 0; }
.sec-head{ display:grid; grid-template-columns:1fr 1fr; gap:40px; align-items:end; margin-bottom:48px; }
.sec-head p{ color:var(--muted); max-width:32em; justify-self:end; }
@media (max-width:860px){ .sec-head{ grid-template-columns:1fr; gap:16px; } .sec-head p{ justify-self:start; } }

/* listings */
.filters{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-bottom:34px; }
.chip{ border:1px solid var(--line); background:transparent; border-radius:999px; padding:8px 16px; cursor:pointer; font-size:.92rem; transition:background .2s, border-color .2s; }
.chip:hover{ border-color:var(--gold); }
.chip[aria-pressed="true"]{ background:var(--chip-on-bg); color:var(--chip-on-fg); border-color:var(--chip-on-bg); }
.filters select{ border:1px solid var(--line); background:var(--field); border-radius:999px; padding:8px 14px; }
.filters .grow{ flex:1; }
.count{ color:var(--muted); font-size:.92rem; }
.grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:44px 28px; }
.home{ cursor:pointer; padding:12px 12px 18px; text-align:left; display:flex; flex-direction:column; gap:14px; color:inherit; min-width:0; }
.home .top, .home .meta{ padding:0 6px; }
.home .art{ aspect-ratio:4/3; max-width:100%; border-radius:10px; overflow:hidden; position:relative; background:var(--surface-2); }
.home .art svg, .home .art img, .dr-art img, .pick .art img{ width:100%; height:100%; display:block; object-fit:cover; transition:transform .6s cubic-bezier(.2,.7,.2,1); }
.home:hover .art svg, .home:hover .art img{ transform:scale(1.04); }
.home .badge{ position:absolute; left:12px; top:12px; background:rgba(14,10,11,.78); color:#F4EADA; font-size:.78rem; padding:4px 10px; border-radius:999px; backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); }
.home .dev{ position:absolute; right:12px; bottom:12px; background:rgba(14,10,11,.7); color:#E1B95A; font-size:.72rem; letter-spacing:.08em; padding:3px 9px; border-radius:999px; }
.home .top{ display:flex; justify-content:space-between; gap:12px; align-items:baseline; }
.home h3{ font-size:1.35rem; min-width:0; }
.home .price{ font-family:var(--display); font-size:1.15rem; white-space:nowrap; color:var(--gold-ink); }
.home .meta{ color:var(--muted); font-size:.92rem; margin-top:-8px; }
.grid .home:first-child{ grid-column:span 2; }
.grid .home:first-child .art{ aspect-ratio:16/9; }
.grid .home:first-child h3{ font-size:1.8rem; }
.empty{ grid-column:1/-1; padding:60px 0; text-align:center; color:var(--muted); }
@media (max-width:980px){ .grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:620px){ .grid{ grid-template-columns:1fr; } .grid .home:first-child{ grid-column:auto; } }

/* drawer */
dialog.drawer{ border:0; padding:0; margin:0 0 0 auto; height:100%; max-height:100%; width:min(620px,100%); background:var(--surface); color:var(--fg); }
dialog.drawer::backdrop{ background:rgba(11,7,8,.6); backdrop-filter:blur(3px); }
dialog.drawer[open]{ animation:slidein .35s cubic-bezier(.2,.7,.2,1); }
@keyframes slidein{ from{ transform:translateX(40px); opacity:0; } }
.dr-in{ padding:calc(24px + env(safe-area-inset-top,0px)) 32px calc(40px + env(safe-area-inset-bottom,0px)); }
.dr-close{ float:right; background:none; border:1px solid var(--line); border-radius:999px; padding:6px 14px; cursor:pointer; }
.dr-art{ clear:both; margin-top:18px; border-radius:6px; overflow:hidden; aspect-ratio:16/10; background:var(--surface-2); }
.dr-art svg{ width:100%; height:100%; display:block; }
.dr-in h3{ font-size:2rem; margin-top:22px; }
.dr-in .sub{ color:var(--muted); margin-top:4px; }
.spec{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:10px; overflow:hidden; margin:24px 0; }
.spec div{ background:var(--surface); padding:14px 16px; }
.spec small{ display:block; color:var(--muted); font-size:.8rem; }
.spec b{ font-family:var(--display); font-weight:400; font-size:1.2rem; }
.plan{ margin:8px 0 22px; }
.plan .bar{ display:flex; height:10px; border-radius:999px; overflow:hidden; margin:10px 0 8px; }
.plan .legend{ display:flex; gap:18px; flex-wrap:wrap; font-size:.88rem; color:var(--muted); }
.plan .legend i{ display:inline-block; width:10px; height:10px; border-radius:2px; margin-right:6px; vertical-align:-1px; }
.feat{ display:flex; flex-wrap:wrap; gap:8px; margin:6px 0 26px; padding:0; list-style:none; }
.feat li{ border:1px solid var(--line); border-radius:999px; padding:5px 12px; font-size:.88rem; }
.dr-actions{ display:flex; gap:10px; flex-wrap:wrap; }
.img-note{ font-size:.78rem; color:var(--muted); margin-top:8px; }

/* places */
.places-grid{ display:grid; grid-template-columns:1.45fr 1fr; gap:40px; align-items:start; }
.places-grid > *{ min-width:0; }
.map{ position:relative; border-radius:16px; overflow:hidden; background:var(--map-sea); border:1px solid var(--line); transition:box-shadow .35s, border-color .35s; }
.map:hover{ border-color:var(--gold); box-shadow:0 0 30px var(--glow); }
.map svg{ display:block; width:100%; height:auto; }
.map .sea{ fill:var(--map-sea); } .map .wave{ stroke:var(--map-wave); } .map .land{ fill:var(--map-land); } .map .coast{ stroke:var(--map-coast); }
.map .creek{ stroke:var(--map-sea); } .map .isle{ fill:var(--map-isle); stroke:var(--map-coast); } .map .road{ stroke:var(--map-road); } .map .lbl{ fill:var(--map-label); } .map .gulf{ fill:var(--map-label); opacity:.8; }
.spot{ cursor:pointer; }
.spot circle.ring{ fill:none; stroke:var(--gold); stroke-width:1.5; opacity:0; transition:opacity .3s, r .3s; }
.spot.on circle.ring{ opacity:1; }
.spot circle.dot{ fill:var(--gold); transition:r .25s, filter .25s; }
.spot text{ font-family:var(--body); font-size:14px; fill:var(--map-text); paint-order:stroke; stroke:var(--map-halo); stroke-width:4px; }
.spot:focus{ outline:none; }
.spot:focus-visible circle.dot{ stroke:var(--fg); stroke-width:3; }
.spot:hover circle.dot, .spot.on circle.dot{ r:9; filter:drop-shadow(0 0 6px var(--gold)); }
.spot:hover circle.ring{ opacity:.6; }
.place-card{ background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:30px; position:sticky; top:96px; transition:transform .35s cubic-bezier(.2,.7,.2,1), box-shadow .35s, border-color .35s; }
.place-card:hover{ transform:translateY(-4px); border-color:var(--gold); box-shadow:0 0 0 1px var(--glow), 0 0 30px var(--glow); }
.place-card h3{ font-size:2rem; }
.place-card p.blurb{ color:var(--fg-2); margin:14px 0 22px; }
.kv{ display:grid; grid-template-columns:1fr 1fr; gap:18px 20px; margin-bottom:26px; }
.kv small{ display:block; color:var(--muted); font-size:.82rem; }
.kv b{ font-family:var(--display); font-weight:400; font-size:1.45rem; }
.note{ font-size:.82rem; color:var(--muted); margin-top:14px; }
@media (max-width:900px){ .places-grid{ grid-template-columns:1fr; } .place-card{ position:static; } }

/* calculator */
.calc{ display:grid; grid-template-columns:1fr 1fr; gap:56px; }
.calc > *{ min-width:0; }
.field{ display:flex; flex-direction:column; gap:8px; margin-bottom:24px; }
.field label, .field .lbl{ font-size:.92rem; color:var(--muted); display:flex; justify-content:space-between; gap:12px; }
.field label output{ color:var(--fg); font-weight:500; }
.field input[type=number], .field input[type=text], .field input[type=email], .field input[type=tel], .field select, .field textarea{ border:1px solid var(--line); background:var(--field); border-radius:10px; padding:12px 14px; width:100%; }
.field textarea{ resize:vertical; min-height:96px; }
input[type=range]{ width:100%; accent-color:var(--gold); }
:root[data-mode="light"] input[type=range]{ accent-color:var(--wine-2); }
.seg{ display:flex; border:1px solid var(--line); border-radius:999px; padding:4px; gap:4px; flex-wrap:wrap; }
.seg button{ flex:1; border:0; background:transparent; border-radius:999px; padding:8px 10px; cursor:pointer; font-size:.9rem; white-space:nowrap; }
.seg button[aria-pressed="true"]{ background:var(--chip-on-bg); color:var(--chip-on-fg); }
.result{ padding:34px; }
.result .big{ font-family:var(--display); font-size:clamp(2.6rem,5vw,4.2rem); line-height:1; margin:6px 0 4px; color:var(--gold-ink); }
.result .muted{ color:var(--muted); }
.stack{ display:flex; height:14px; border-radius:999px; overflow:hidden; margin:30px 0 14px; background:var(--line); }
.stack i{ display:block; height:100%; transition:width .4s; }
.rows{ margin:0; }
.rows div{ display:flex; justify-content:space-between; padding:9px 0; border-bottom:1px solid var(--line); font-size:.95rem; gap:16px; }
.rows dt{ display:flex; align-items:center; gap:8px; }
.rows dt i{ width:9px; height:9px; border-radius:2px; display:inline-block; flex:none; }
.rows dd{ margin:0; font-variant-numeric:tabular-nums; }
.rows .total{ font-weight:600; border-bottom:0; }
.visa{ margin-top:24px; padding:16px 18px; border-radius:10px; background:var(--wine-soft); border:1px solid var(--line); font-size:.95rem; }
.visa.no{ background:transparent; border-style:dashed; color:var(--muted); }
@media (max-width:900px){ .calc{ grid-template-columns:1fr; gap:24px; } .result{ padding:24px; } }

/* concierge */
.conc{ display:grid; grid-template-columns:.9fr 1.1fr; gap:56px; align-items:start; }
.conc > *{ min-width:0; }
.ask p.intro{ color:var(--fg-2); margin:18px 0 24px; max-width:30em; }
.ask textarea{ width:100%; min-height:150px; background:var(--field); border:1px solid var(--line); border-radius:14px; padding:18px; font-size:1.05rem; resize:vertical; }
.ask .ideas{ display:flex; flex-wrap:wrap; gap:8px; margin:14px 0 20px; }
.ask .ideas button{ background:none; border:1px solid var(--line); border-radius:999px; padding:6px 13px; font-size:.86rem; cursor:pointer; color:var(--fg-2); text-align:left; }
.ask .ideas button:hover{ border-color:var(--gold); color:var(--fg); }
.answer{ min-height:260px; }
.answer .summary{ font-family:var(--display); font-size:1.5rem; line-height:1.35; margin-bottom:26px; }
.picks{ display:flex; flex-direction:column; gap:14px; }
.pick{ display:grid; grid-template-columns:140px 1fr; gap:18px; align-items:center; background:var(--surface); border-radius:14px; padding:12px; cursor:pointer; border:1px solid var(--line); text-align:left; width:100%; transition:transform .35s cubic-bezier(.2,.7,.2,1), box-shadow .35s, border-color .35s; }
.pick:hover, .pick:focus-visible{ transform:translateY(-5px); border-color:var(--gold); box-shadow:0 0 0 1px var(--glow), 0 0 26px var(--glow); outline:none; }
.pick .art{ border-radius:6px; overflow:hidden; aspect-ratio:4/3; background:var(--surface-2); }
.pick .art svg{ width:100%; height:100%; display:block; }
.pick b{ font-family:var(--display); font-weight:400; font-size:1.2rem; display:block; }
.pick small{ color:var(--muted); display:block; }
.pick p{ font-size:.93rem; margin-top:6px; color:var(--fg-2); }
@keyframes pulse{ 0%,100%{ opacity:.25; } 50%{ opacity:1; } }
.engine{ font-size:.82rem; color:var(--muted); margin-top:12px; }
@media (max-width:900px){ .conc{ grid-template-columns:1fr; } .pick{ grid-template-columns:96px 1fr; } }

/* contact + desk */
.contact-grid{ display:grid; grid-template-columns:1fr 1fr; gap:56px; }
.contact-grid > *{ min-width:0; }
.two{ display:grid; grid-template-columns:1fr 1fr; gap:0 18px; }
.form-msg{ margin-top:14px; font-size:.95rem; min-height:1.4em; }
.desk{ padding:26px; }
.desk:hover{ transform:none; }
.desk-head{ display:flex; justify-content:space-between; align-items:baseline; gap:12px; margin-bottom:6px; }
.live{ display:inline-flex; align-items:center; gap:8px; font-size:.85rem; color:var(--muted); }
.live i{ width:8px; height:8px; border-radius:50%; background:#3F9E7A; box-shadow:0 0 0 4px rgba(63,158,122,.2); }
.live.local i{ background:var(--gold); box-shadow:0 0 0 4px var(--glow); }
.live.lock i{ background:var(--muted); box-shadow:none; }
.leads{ margin-top:18px; display:flex; flex-direction:column; }
.lead{ display:grid; grid-template-columns:1fr auto; gap:4px 14px; padding:14px 0; border-top:1px solid var(--line); }
.lead b{ font-weight:600; }
.lead small{ color:var(--muted); grid-column:1; }
.lead select{ grid-row:1 / span 2; grid-column:2; align-self:center; border:1px solid var(--line); background:var(--field); border-radius:999px; padding:6px 10px; font-size:.85rem; }
.desk-empty{ color:var(--muted); padding:26px 0 6px; }
@media (max-width:900px){ .contact-grid{ grid-template-columns:1fr; } }
@media (max-width:520px){ .two{ grid-template-columns:1fr; } .spec{ grid-template-columns:1fr 1fr; } }

/* office + map */
.visit{ display:grid; grid-template-columns:.8fr 1.4fr; gap:28px; margin-top:64px; align-items:stretch; }
.visit > *{ min-width:0; }
.visit-info{ padding:30px; display:flex; flex-direction:column; gap:12px; align-items:flex-start; }
.visit-info h3{ font-size:2rem; }
.visit-addr{ color:var(--fg-2); max-width:24em; }
.visit-meta{ color:var(--muted); font-size:.95rem; }
.visit-info .btn{ margin-top:auto; }
.visit-map{ position:relative; min-height:340px; border-radius:16px; overflow:hidden; border:1px solid var(--line); background:var(--surface-2); }
.visit-map iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }
:root:not([data-mode="light"]) .visit-map iframe{ filter:invert(.92) hue-rotate(180deg) saturate(.6) contrast(.92); }
.map-ph{ position:absolute; inset:0; display:grid; place-items:center; text-align:center; color:var(--muted); font-size:.92rem; padding:24px;
  background:repeating-linear-gradient(0deg, transparent 0 38px, var(--line-2) 38px 39px), repeating-linear-gradient(90deg, transparent 0 38px, var(--line-2) 38px 39px); }
.map-ph svg{ width:34px; height:34px; color:var(--gold); display:block; margin:0 auto 10px; }
@media (max-width:860px){ .visit{ grid-template-columns:1fr; } .visit-map{ min-height:280px; } }

/* footer: black-burgundy in dark mode, ivory in light mode */
footer{ background:var(--foot-bg); color:var(--foot-fg); padding:70px 0 calc(40px + env(safe-area-inset-bottom,0px)); font-size:.92rem; position:relative; isolation:isolate; overflow:hidden; }
footer::before{ content:""; position:absolute; inset:0; z-index:-1; background:radial-gradient(50% 70% at 12% 30%, var(--foot-glow), transparent 70%); }
:root[data-mode="light"] footer{ border-top:1px solid var(--line); }
.foot{ display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:40px; }
.foot-logo{ display:block; width:min(280px,100%); }
.foot-logo img{ width:100%; height:auto; display:block; }
.foot-logo img.logo-d{ border-radius:14px; box-shadow:0 0 0 1px rgba(225,185,90,.18), 0 18px 40px rgba(0,0,0,.35); }
.foot-logo img.logo-l{ display:none; }
:root[data-mode="light"] .foot-logo img.logo-d{ display:none; }
:root[data-mode="light"] .foot-logo img.logo-l{ display:block; }
.foot h4{ font-weight:500; color:var(--foot-hi); margin:0 0 10px; font-size:.95rem; }
.foot a{ text-decoration:none; display:block; padding:3px 0; }
.foot a:hover{ color:var(--gold-ink); }
.legal{ margin-top:50px; padding-top:22px; border-top:1px solid rgba(225,185,90,.14); display:flex; justify-content:space-between; gap:20px; flex-wrap:wrap; font-size:.84rem; }
@media (max-width:800px){ .foot{ grid-template-columns:1fr; } }

.toast{ position:fixed; left:50%; bottom:calc(24px + env(safe-area-inset-bottom,0px)); transform:translate(-50%, 20px); background:var(--fg); color:var(--bg); padding:12px 20px; border-radius:999px; opacity:0; transition:.3s; z-index:80; font-size:.95rem; pointer-events:none; }
.toast.on{ opacity:1; transform:translate(-50%,0); }
.sr{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

@media (prefers-reduced-motion: reduce){
  .hint i, .hero-fallback .sky-glow{ animation:none; }
  .home .art svg, .home .art img{ transition:none; }
  .glow-bg::before, .travel, .flow .dash, .flow.busy .core{ animation:none; }
  .lift:hover, .pick:hover, .place-card:hover{ transform:none; }
}

.visit-meta a{ color:inherit; text-decoration:none; border-bottom:1px solid var(--line); }
.visit-meta a:hover{ color:var(--gold-ink); }
.hours{ display:grid; grid-template-columns:auto auto; gap:4px 22px; margin:2px 0 6px; font-size:.93rem; }
.hours dt{ color:var(--muted); } .hours dd{ margin:0; color:var(--fg-2); }
.sec-head p a{ color:var(--gold-ink); text-decoration:none; white-space:nowrap; }
.social{ display:flex; gap:10px; margin-top:6px; }
.social a{ width:38px; height:38px; display:grid !important; place-items:center; padding:0 !important; border-radius:50%; border:1px solid var(--line); color:var(--gold-ink); transition:background .2s, color .2s; }
.social a:hover{ background:var(--gold); color:#160b0d; }
.social svg{ width:17px; height:17px; }
footer .social{ margin-top:18px; } footer .social a{ border-color:rgba(225,185,90,.3); color:#E1B95A; }
.foot a.inl{ display:inline; padding:0; }

.form-note{ font-size:.82rem; color:var(--muted); margin-top:10px; }
.form-msg .wa-link{ color:var(--gold-ink); font-weight:600; }
.reach{ display:flex; flex-direction:column; gap:14px; align-items:flex-start; }
.reach h3{ font-family:var(--display); font-weight:400; font-size:1.6rem; }
.btn-wa{ display:inline-flex; align-items:center; gap:10px; background:#1FAF5B; color:#fff !important; border:0; }
.btn-wa:hover{ background:#178f4a; }
.btn-wa svg{ width:20px; height:20px; }
.reach-list{ list-style:none; margin:6px 0 0; padding:0; width:100%; }
.reach-list li{ display:grid; grid-template-columns:70px 1fr; gap:12px; padding:12px 0; border-top:1px solid var(--line); font-size:.95rem; }
.reach-list span{ color:var(--muted); }
.reach-list a{ color:var(--fg-2); text-decoration:none; } .reach-list a:hover{ color:var(--gold-ink); }
.reach-list b{ font-weight:400; color:var(--fg-2); }

/* ================= multi-page additions ================= */
.nav-links a[aria-current="page"]{ opacity:1; color:var(--gold-ink); }
.nav:not(.solid) .nav-links a[aria-current="page"]{ color:#E1B95A; }

/* page banners: a photo version of the home hero */
.page-hero{ min-height:100vh; min-height:100svh; }
.page-hero .ph-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; transform-origin:60% 40%; animation:kenburns 26s ease-in-out infinite alternate; }
@keyframes kenburns{ from{ transform:scale(1.04); } to{ transform:scale(1.14) translate(-1.5%, -1%); } }
.page-hero .hero-shade{ z-index:-1; }
.page-hero .hero-in{ padding-bottom:calc(110px + env(safe-area-inset-bottom,0px)); }
.page-hero h1{ font-size:clamp(2.5rem,5.6vw,5.2rem); max-width:13em; }
.crumbs{ font-size:.85rem; color:#D9CBB5; margin-bottom:18px; letter-spacing:.02em; }
.crumbs a{ color:#E1B95A; text-decoration:none; }
.crumbs a:hover{ text-decoration:underline; }
.ph-credit{ position:absolute; right:20px; bottom:16px; font-size:.72rem; color:rgba(244,234,218,.55); z-index:1; }

/* explore cards (home) */
.explore{ display:grid; grid-template-columns:repeat(6,1fr); gap:22px; }
.explore a{ grid-column:span 2; position:relative; display:flex; flex-direction:column; justify-content:flex-end; min-height:360px; border-radius:16px; overflow:hidden; text-decoration:none; color:#F4EADA; isolation:isolate; border:1px solid var(--line); }
.explore a:nth-child(-n+2){ grid-column:span 3; min-height:420px; }
.explore img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; transition:transform .9s cubic-bezier(.2,.7,.2,1); }
.explore a::before{ content:""; position:absolute; inset:0; z-index:-1; background:linear-gradient(180deg, rgba(11,7,8,.05) 20%, rgba(11,7,8,.92) 88%), radial-gradient(70% 60% at 20% 100%, rgba(83,15,30,.55), transparent 70%); }
.explore a:hover img{ transform:scale(1.07); }
.explore a:hover{ border-color:var(--gold); box-shadow:0 0 0 1px var(--glow), 0 0 30px var(--glow); }
.explore .ex-in{ padding:26px; }
.explore .ex-n{ font-family:"Montserrat", var(--body); font-size:.7rem; letter-spacing:.3em; color:#E1B95A; }
.explore h3{ font-size:1.9rem; margin:8px 0 6px; color:#FBF4E8; }
.explore p{ color:#DCCDB8; font-size:.95rem; max-width:26em; }
.explore .go{ display:inline-flex; gap:8px; align-items:center; margin-top:14px; font-size:.9rem; color:#E1B95A; }
.explore .go svg{ width:16px; height:16px; transition:transform .3s; }
.explore a:hover .go svg{ transform:translateX(4px); }
@media (max-width:980px){ .explore{ grid-template-columns:1fr 1fr; } .explore a, .explore a:nth-child(-n+2){ grid-column:span 1; min-height:320px; } .explore a:last-child{ grid-column:1 / -1; } }
@media (max-width:620px){ .explore{ grid-template-columns:1fr; } .explore a:last-child{ grid-column:auto; } }

/* featured homes on the home page */
.feat3 .home:first-child{ grid-column:auto; }
.feat3 .home:first-child h3{ font-size:1.35rem; }
.feat3 .home:first-child .art{ aspect-ratio:4/3; }
a.home{ text-decoration:none; }
.sec-foot{ margin-top:40px; display:flex; justify-content:center; }

/* photo + text split */
.split{ display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center; }
.split.rev .split-media{ order:2; }
.split-media{ position:relative; }
.photo{ position:relative; border-radius:18px; overflow:hidden; border:1px solid var(--line); background:var(--surface-2); }
.photo img{ display:block; width:100%; height:100%; object-fit:cover; transition:transform 1s cubic-bezier(.2,.7,.2,1); }
.photo:hover img{ transform:scale(1.04); }
.photo.tall{ aspect-ratio:4/5; } .photo.wide{ aspect-ratio:4/3; }
.photo-tag{ position:absolute; left:16px; bottom:16px; display:inline-flex; align-items:center; gap:8px; padding:8px 14px; border-radius:999px; background:rgba(14,10,11,.72); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); color:#F4EADA; font-size:.85rem; border:1px solid rgba(225,185,90,.35); }
.photo-tag i{ width:8px; height:8px; border-radius:50%; background:#E1B95A; box-shadow:0 0 10px #E1B95A; }
.split-copy h2{ margin-bottom:18px; }
.split-copy > p{ color:var(--fg-2); font-size:1.05rem; }
.ticks{ list-style:none; padding:0; margin:26px 0 0; display:grid; gap:14px; }
.ticks li{ display:grid; grid-template-columns:26px 1fr; gap:12px; color:var(--fg-2); }
.ticks li::before{ content:""; width:22px; height:22px; border-radius:50%; margin-top:1px; background:radial-gradient(circle, var(--gold) 0 4px, transparent 5px), var(--wine-soft); border:1px solid var(--line); }
.ticks b{ color:var(--fg); font-weight:600; }
.photo-stack{ position:relative; }
.photo-stack .photo.inset{ position:absolute; width:46%; right:-18px; bottom:-34px; aspect-ratio:1; box-shadow:0 22px 50px var(--shadow); border:4px solid var(--bg-2); }
@media (max-width:900px){ .split{ grid-template-columns:1fr; gap:36px; } .split.rev .split-media{ order:0; } .photo-stack .photo.inset{ right:10px; bottom:-24px; width:40%; } }

/* photo mosaic */
.mosaic{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.mosaic figure{ margin:0; }
.mosaic .photo{ aspect-ratio:3/4; }
.mosaic figure:nth-child(even){ margin-top:46px; }
.mosaic figcaption{ margin-top:14px; }
.mosaic figcaption b{ display:block; font-family:var(--display); font-weight:400; font-size:1.3rem; }
.mosaic figcaption span{ color:var(--muted); font-size:.92rem; }
@media (max-width:900px){ .mosaic{ grid-template-columns:1fr 1fr; } .mosaic figure:nth-child(even){ margin-top:0; } }
@media (max-width:480px){ .mosaic{ grid-template-columns:1fr; } .mosaic .photo{ aspect-ratio:4/3; } }

/* comparison cards */
.compare{ display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.compare > div{ padding:30px; }
.compare h3{ font-size:1.7rem; margin:10px 0 14px; }
.compare dl{ display:grid; grid-template-columns:auto 1fr; gap:10px 18px; margin:0; font-size:.95rem; }
.compare dt{ color:var(--muted); } .compare dd{ margin:0; color:var(--fg-2); }
.pill{ display:inline-block; font-size:.75rem; letter-spacing:.14em; text-transform:uppercase; padding:5px 12px; border-radius:999px; background:var(--wine-soft); color:var(--gold-ink); border:1px solid var(--line); }
@media (max-width:860px){ .compare{ grid-template-columns:1fr; } }

/* payment plan timeline diagram */
.ptl svg{ width:100%; height:auto; display:block; }
.ptl .seg-a{ fill:var(--gold); } .ptl .seg-b{ fill:var(--wine-2); } .ptl .seg-c{ fill:var(--muted); opacity:.7; }
.ptl .t-lbl{ fill:var(--fg); font:500 14px var(--body); } .ptl .t-sub{ fill:var(--muted); font:13px var(--body); }
.ptl .t-axis{ stroke:var(--line); } .ptl .t-tick{ fill:var(--gold); }
.ptl .t-big{ fill:var(--fg); font:400 26px var(--display); }

/* community chart */
.chart-wrap svg{ width:100%; height:auto; display:block; }
.ch-axis{ fill:var(--muted); font:12px var(--body); }
.ch-grid{ stroke:var(--line-2); stroke-dasharray:3 5; }
.ch-lbl{ fill:var(--fg); font:14px var(--body); }
.ch-val{ fill:var(--fg-2); font:600 13px var(--body); }
.ch-track{ fill:var(--wine-soft); }
.ch-bar{ fill:url(#none); fill:var(--gold); transform-box:fill-box; transform-origin:left; animation:grow 1s cubic-bezier(.2,.7,.2,1) both; }
.ch-sq{ fill:var(--rose); opacity:.75; }
.ch-row:hover .ch-bar{ fill:var(--gold-hi); }
@keyframes grow{ from{ transform:scaleX(0); } }
.chart-legend{ display:flex; gap:22px; flex-wrap:wrap; margin-top:14px; font-size:.85rem; color:var(--muted); }
.chart-legend i{ display:inline-block; width:12px; height:12px; border-radius:3px; margin-right:7px; vertical-align:-1px; }

/* brief parsing diagram (concierge) */
.brief{ padding:30px; }
.brief p.q{ font-family:var(--display); font-size:1.5rem; line-height:1.4; color:var(--fg); }
.brief mark{ background:none; color:inherit; border-bottom:2px solid var(--c); padding:0 2px; }
.brief .tags{ display:flex; flex-wrap:wrap; gap:10px; margin-top:22px; }
.brief .tags span{ font-size:.85rem; padding:6px 12px; border-radius:999px; border:1px solid var(--c); color:var(--fg-2); }
.brief .tags span::before{ content:""; display:inline-block; width:8px; height:8px; border-radius:50%; background:var(--c); margin-right:8px; }

/* FAQ */
.faq{ display:grid; gap:14px; max-width:880px; }
.faq details{ padding:4px 24px; }
.faq summary{ cursor:pointer; list-style:none; padding:18px 0; font-size:1.08rem; display:flex; justify-content:space-between; gap:20px; }
.faq summary::-webkit-details-marker{ display:none; }
.faq summary::after{ content:"+"; font-family:var(--display); font-size:1.5rem; line-height:1; color:var(--gold-ink); transition:transform .3s; }
.faq details[open] summary::after{ transform:rotate(45deg); }
.faq details p{ color:var(--fg-2); padding:0 0 20px; max-width:46em; }
.faq details:hover{ transform:none; }

/* call-to-action band */
.cta-band .cta-in{ display:grid; grid-template-columns:1.2fr .8fr; gap:40px; align-items:center; padding:48px; border-radius:22px; border:1px solid var(--line); background:linear-gradient(135deg, var(--wine-soft), transparent 70%), var(--card); }
.cta-band h2{ font-size:clamp(2rem,3.6vw,3rem); }
.cta-band p{ color:var(--fg-2); margin-top:12px; }
.cta-band .row{ display:flex; gap:14px; flex-wrap:wrap; justify-content:flex-end; }
.cta-band .row .btn{ margin-top:0; }
@media (max-width:860px){ .cta-band .cta-in{ grid-template-columns:1fr; padding:30px; } .cta-band .row{ justify-content:flex-start; } }
.sec.tight{ padding:90px 0; }

/* ================= satellite map ================= */
.map{ min-height:520px; aspect-ratio:5/4; background:#0B0708; }
.map.leaflet-container{ font-family:var(--body); background:#0B0708; }
@media (max-width:900px){ .map{ min-height:420px; aspect-ratio:auto; } }
.map .leaflet-control-attribution{ background:rgba(14,10,11,.7); color:#bba98f; font-size:10px; }
.map .leaflet-control-attribution a{ color:#E1B95A; }
.map .leaflet-bar a{ background:rgba(14,10,11,.85); color:#E1B95A; border-color:rgba(225,185,90,.25); }
.map .leaflet-bar a:hover{ background:#2A141B; }
.map-reset{ font:500 .82rem var(--body); padding:8px 14px; border-radius:999px; border:1px solid rgba(225,185,90,.45); background:rgba(14,10,11,.82); color:#F4EADA; cursor:pointer; backdrop-filter:blur(6px); }
.map-reset:hover{ background:#2A141B; }
.gpin{ background:none; border:0; }
.gpin .gpin-dot{ position:absolute; left:8px; top:8px; width:14px; height:14px; border-radius:50%; background:radial-gradient(circle at 35% 30%, #FFE5B3, #E1B95A 45%, #B58320); border:2px solid #1A0B0E; box-shadow:0 0 0 2px rgba(225,185,90,.55), 0 0 14px rgba(225,185,90,.9); transition:transform .25s; }
.gpin .gpin-ring{ position:absolute; inset:0; border-radius:50%; border:2px solid rgba(225,185,90,.75); animation:ping 2.4s cubic-bezier(.2,.7,.2,1) infinite; }
.gpin:hover .gpin-dot, .gpin.on .gpin-dot{ transform:scale(1.35); }
.gpin.on .gpin-ring{ border-color:#FFE5B3; animation-duration:1.4s; }
@keyframes ping{ 0%{ transform:scale(.5); opacity:1; } 100%{ transform:scale(1.6); opacity:0; } }
.opin{ background:none; border:0; }
.opin span{ display:block; width:34px; height:40px; color:#8E2A40; filter:drop-shadow(0 4px 8px rgba(0,0,0,.6)); }
.opin svg{ width:100%; height:100%; }
.opin svg path{ stroke:#E1B95A; stroke-width:1.2; }
.leaflet-tooltip.ptip-wrap{ padding:0; border:1px solid rgba(225,185,90,.5); border-radius:14px; background:#140C0F; color:#F4EADA; box-shadow:0 18px 40px rgba(0,0,0,.55), 0 0 22px rgba(225,185,90,.25); overflow:hidden; white-space:normal; }
.leaflet-tooltip-top.ptip-wrap::before{ border-top-color:rgba(225,185,90,.5); }
.ptip{ width:220px; padding-bottom:12px; animation:tipin .25s ease-out; }
@keyframes tipin{ from{ opacity:0; transform:translateY(6px); } }
.ptip-img{ position:relative; height:118px; overflow:hidden; }
.ptip-img img{ width:100%; height:100%; object-fit:cover; display:block; }
.ptip-img::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg, transparent 45%, rgba(20,12,15,.9)); }
.ptip-pin{ position:absolute; left:10px; top:10px; width:26px; height:26px; color:#E1B95A; z-index:1; filter:drop-shadow(0 2px 4px rgba(0,0,0,.7)); }
.ptip-pin svg{ width:100%; height:100%; }
.ptip b{ display:block; font-family:var(--display); font-weight:400; font-size:1.2rem; padding:10px 14px 2px; }
.ptip small{ display:block; padding:0 14px; color:#DCCDB8; font-size:.8rem; }
.ptip em{ display:block; padding:6px 14px 0; font-style:normal; color:#E1B95A; font-size:.76rem; letter-spacing:.04em; }
.ptip.office{ padding-top:4px; }
.pc-img{ position:relative; margin:-30px -30px 22px; height:190px; border-radius:16px 16px 0 0; overflow:hidden; }
.pc-img img{ width:100%; height:100%; object-fit:cover; display:block; animation:pcin .6s ease-out; }
@keyframes pcin{ from{ opacity:0; transform:scale(1.06); } }
.pc-pin{ position:absolute; left:14px; bottom:14px; display:inline-flex; align-items:center; gap:6px; padding:6px 12px 6px 8px; border-radius:999px; background:rgba(14,10,11,.75); color:#F4EADA; font-size:.82rem; backdrop-filter:blur(6px); }
.pc-pin svg{ width:16px; height:16px; color:#E1B95A; }
.map-list{ margin-top:14px; }

@media (prefers-reduced-motion: reduce){ .page-hero .ph-img, .gpin .gpin-ring, .ch-bar{ animation:none; } }
.page-hero .lede{ color:#E9DCC6; text-shadow:0 1px 12px rgba(0,0,0,.7); max-width:36em; }
.page-hero .eyebrow{ color:#E1B95A; }
.page-hero .row{ display:flex; gap:14px; flex-wrap:wrap; margin-top:30px; }

.map .leaflet-control-attribution svg{ display:inline !important; width:12px !important; height:8px !important; }

.ptl-legend{ display:grid; grid-template-columns:20fr 50fr 30fr; gap:14px; margin-top:16px; }
.ptl-legend div{ padding-top:12px; border-top:2px solid var(--gold); }
.ptl-legend div:nth-child(2){ border-color:var(--wine-2); } .ptl-legend div:nth-child(3){ border-color:var(--muted); }
.ptl-legend b{ display:block; font-weight:600; } .ptl-legend small{ color:var(--muted); font-size:.88rem; }
@media (max-width:700px){ .ptl-legend{ grid-template-columns:1fr; } }
.leaflet-container img{ max-width:none !important; max-height:none !important; }
.map .leaflet-tile{ border:0; }

/* ---------- about ---------- */
.svc-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.svc{ padding:30px 26px 28px; }
.svc-n{ font-family:"Montserrat", var(--body); font-size:.78rem; letter-spacing:.24em; color:var(--gold-ink); }
.svc h3{ margin:14px 0 10px; }
.svc p{ color:var(--muted); font-size:.95rem; }
.team-label{ display:block; margin:0 0 18px; text-align:center; }
.team-lead{ display:flex; flex-wrap:wrap; justify-content:center; gap:28px; max-width:1120px; margin:0 auto 64px; }
.team-lead .person{ flex:0 0 calc((100% - 56px) / 3); }
.team-grid{ display:flex; flex-wrap:wrap; justify-content:center; gap:20px; }
.team-grid .person{ flex:0 0 calc((100% - 60px) / 4); }
.person{ margin:0; overflow:hidden; display:flex; flex-direction:column; }
.person .p-img{ aspect-ratio:4/5; overflow:hidden; background:var(--surface-2); }
.person img{ display:block; width:100%; height:100%; object-fit:cover; transition:transform 1s cubic-bezier(.2,.7,.2,1); }
.person:hover img{ transform:scale(1.04); }
.person figcaption{ padding:16px 18px 18px; display:grid; gap:4px; border-top:1px solid var(--line); }
.person figcaption b{ font-family:var(--display); font-weight:400; font-size:1.2rem; line-height:1.2; color:var(--fg); }
.person figcaption span{ font-family:"Montserrat", var(--body); font-size:.68rem; letter-spacing:.22em; text-transform:uppercase; color:var(--muted); }
.person.lead figcaption{ padding:20px 22px 22px; }
.person.lead figcaption b{ font-size:1.5rem; }
.person.lead figcaption span{ color:var(--gold-ink); }
@media (max-width:980px){ .team-grid .person{ flex-basis:calc((100% - 40px) / 3); } }
@media (max-width:760px){ .team-lead{ gap:14px; margin-bottom:44px; } .team-lead .person{ flex-basis:calc((100% - 14px) / 2); } .team-grid{ gap:14px; } .team-grid .person{ flex-basis:calc((100% - 14px) / 2); } .person figcaption{ padding:12px 14px 14px; } .person figcaption b{ font-size:1.05rem; } .person figcaption span{ font-size:.6rem; letter-spacing:.16em; } }
@media (max-width:760px){ .svc-grid{ grid-template-columns:1fr; } }

/* ---------- developers ---------- */
:root{ --dev-ink:var(--gold); }
:root[data-mode="light"]{ --dev-ink:var(--wine); }
.dev-grid{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(5,1fr); gap:18px; }
.dev-card{ display:flex; flex-direction:column; align-items:center; justify-content:space-between; gap:18px; padding:30px 18px 20px; min-height:212px; text-align:center; }
.dev-logo{ display:block; width:var(--lw); max-width:100%; aspect-ratio:var(--ar); margin:auto 0; background:var(--dev-ink); -webkit-mask-position:center; mask-position:center; -webkit-mask-size:contain; mask-size:contain; -webkit-mask-repeat:no-repeat; mask-repeat:no-repeat; transition:background .35s, transform .35s cubic-bezier(.2,.7,.2,1); }
.dev-card:hover .dev-logo{ background:var(--gold-hi); transform:scale(1.04); }
:root[data-mode="light"] .dev-card:hover .dev-logo{ background:var(--wine-2); }
.dev-name{ font-family:var(--display); font-size:1.02rem; line-height:1.25; color:var(--fg-2); padding-top:14px; border-top:1px solid var(--line); width:100%; }
@media (max-width:1100px){ .dev-grid{ grid-template-columns:repeat(4,1fr); } }
@media (max-width:860px){ .dev-grid{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:560px){ .dev-grid{ grid-template-columns:1fr 1fr; gap:12px; } .dev-card{ min-height:168px; padding:22px 12px 14px; gap:12px; } .dev-name{ font-size:.92rem; } }
