:root {
  --res-ink: #0d1715;
  --res-ink-soft: #15251f;
  --res-paper: #e5e1d4;
  --res-gold: #cfab6c;
  --res-gold-pale: #ead5a9;
  --res-line: rgba(225, 196, 137, .38);
  --res-copy: rgba(237, 239, 229, .72);
  --res-serif: "Songti TC", "STSong", "Noto Serif TC", Georgia, serif;
}

.residences-section {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding: clamp(116px, 14vh, 168px) 0 clamp(94px, 12vh, 146px);
  background:
    radial-gradient(circle at 96% 8%, rgba(190, 153, 91, .14), transparent 26%),
    radial-gradient(circle at 6% 50%, rgba(135, 163, 141, .14), transparent 30%),
    linear-gradient(145deg, #0c1512, #15221d 52%, #0b1411);
  color: #fbf7ec;
}
.residences-section::before {
  position: absolute;
  z-index: -2;
  inset: 0;
  background-image:
    linear-gradient(rgba(236, 218, 173, .038) 1px, transparent 1px),
    linear-gradient(90deg, rgba(236, 218, 173, .038) 1px, transparent 1px),
    radial-gradient(ellipse at 45% 46%, transparent 0 26%, rgba(211, 181, 116, .07) 26.12% 26.3%, transparent 26.42% 38%, rgba(211, 181, 116, .045) 38.12% 38.3%, transparent 38.42%);
  background-size: 46px 46px, 46px 46px, 100% 100%;
  content: "";
  opacity: .75;
  pointer-events: none;
}
.residences-section::after {
  position: absolute;
  z-index: -1;
  top: 13%;
  right: -20vw;
  width: 74vw;
  height: 74vw;
  border: 1px solid rgba(221, 191, 126, .08);
  border-radius: 50%;
  box-shadow: 0 0 0 52px rgba(221, 191, 126, .025), 0 0 0 130px rgba(221, 191, 126, .018);
  content: "";
}

.residences-inner { width: min(1440px, calc(100% - 12vw)); margin: 0 auto; }
.residences-header { display: grid; grid-template-columns: minmax(0, .88fr) minmax(280px, .45fr); gap: clamp(36px, 10vw, 172px); align-items: end; max-width: 1180px; }
.residences-eyebrow { display: flex; align-items: center; gap: 12px; margin: 0 0 22px; color: rgba(231, 207, 154, .9); font-size: 10px; font-weight: 600; letter-spacing: .22em; }
.residences-eyebrow > span:first-child { display: grid; width: 28px; height: 20px; place-items: center; border: 1px solid rgba(226, 192, 120, .7); color: rgba(248, 227, 177, .9); font-size: 9px; }
.residences-title { margin: 0; color: #f5f0e3; font-family: var(--res-serif); font-size: clamp(44px, 5.15vw, 82px); font-weight: 500; letter-spacing: .07em; line-height: 1.13; }
.residences-title-line { display: block; overflow: hidden; padding-bottom: .08em; }
.residences-title-line span { display: block; opacity: 0; transform: translateY(110%); transition: transform 840ms cubic-bezier(.16,1,.3,1), opacity 480ms ease; }
.residences-section.is-revealed .residences-title-line span { opacity: 1; transform: translateY(0); }
.residences-section.is-revealed .residences-title-line:nth-child(2) span { transition-delay: 130ms; }
.residences-intro { max-width: 350px; margin: 0 0 4px; color: var(--res-copy); font-size: 13px; font-weight: 300; letter-spacing: .045em; line-height: 1.86; }

.residences-layout { display: grid; grid-template-columns: 78px minmax(0, 1fr); gap: clamp(22px, 4vw, 68px); margin-top: clamp(50px, 8vh, 98px); }
.residence-index-nav { position: sticky; top: 38vh; align-self: start; display: grid; gap: 22px; padding: 7px 0; }
.residence-index-nav::before { position: absolute; top: 0; bottom: 0; left: 5px; width: 1px; background: linear-gradient(transparent, rgba(222, 191, 125, .42) 13%, rgba(222, 191, 125, .42) 87%, transparent); content: ""; }
.residence-index { position: relative; z-index: 1; display: inline-flex; align-items: center; gap: 12px; width: max-content; padding: 0; border: 0; background: transparent; color: rgba(235, 238, 222, .44); font-size: 10px; letter-spacing: .16em; text-align: left; transition: color 230ms ease, transform 230ms ease; }
.residence-index::before { width: 11px; height: 11px; border: 1px solid rgba(234, 207, 147, .58); border-radius: 50%; background: var(--res-ink); content: ""; transition: background 230ms ease, box-shadow 230ms ease, transform 230ms ease; }
.residence-index:hover, .residence-index.is-active { color: #f6e3b4; transform: translateX(4px); }
.residence-index.is-active::before { background: #f2d082; box-shadow: 0 0 0 5px rgba(241, 206, 130, .13), 0 0 15px rgba(245, 211, 135, .62); transform: scale(1.12); }
.residence-index strong { min-width: 18px; font-family: var(--res-serif); font-size: 17px; font-weight: 500; letter-spacing: .08em; }

.residence-dossiers { display: grid; gap: clamp(62px, 12vh, 150px); }
.residence-dossier { position: relative; display: grid; grid-template-columns: minmax(0, 1.32fr) minmax(280px, .68fr); align-items: stretch; min-height: clamp(500px, 55vw, 650px); border-top: 1px solid var(--res-line); border-bottom: 1px solid rgba(222, 191, 126, .18); }
.residence-dossier::before { position: absolute; top: -1px; left: 0; width: 0; height: 1px; background: linear-gradient(90deg, #f1d389, transparent); content: ""; transition: width 980ms cubic-bezier(.16,1,.3,1); }
.residence-dossier.is-visible::before { width: 100%; }
.residence-plan-shell { position: relative; display: grid; min-height: 100%; place-items: center; overflow: hidden; padding: clamp(23px, 4vw, 66px); background: linear-gradient(135deg, rgba(236, 228, 203, .97), rgba(208, 211, 196, .92)); }
.residence-plan-shell::before { position: absolute; inset: 17px; border: 1px solid rgba(116, 101, 68, .3); content: ""; pointer-events: none; }
.residence-plan-shell::after { position: absolute; inset: 0; background: linear-gradient(112deg, rgba(255,255,255,.22), transparent 25%, transparent 74%, rgba(32,48,39,.12)); content: ""; pointer-events: none; }
.residence-plan-meta { position: absolute; z-index: 3; top: 25px; left: 27px; display: flex; align-items: center; gap: 10px; color: rgba(45, 61, 50, .76); font-size: 9px; font-weight: 600; letter-spacing: .18em; }
.residence-plan-meta::before { width: 22px; height: 1px; background: currentColor; content: ""; }
.residence-plan-frame { position: relative; z-index: 1; display: grid; width: 100%; max-width: 800px; place-items: center; cursor: zoom-in; outline: none; }
.residence-plan-frame:focus-visible { outline: 2px solid #96703f; outline-offset: 6px; }
.residence-plan-image { display: block; width: 100%; max-height: 568px; object-fit: contain; opacity: 0; transform: translateY(38px) scale(1.02); transition: opacity 640ms ease, transform 980ms cubic-bezier(.16,1,.3,1); }
.residence-dossier.is-visible .residence-plan-image { opacity: 1; transform: translateY(0) scale(1); }
.residence-plan-zoom { position: absolute; z-index: 4; right: 28px; bottom: 27px; display: grid; width: 49px; height: 49px; padding: 0; place-items: center; border: 1px solid rgba(244, 222, 168, .96); border-radius: 50%; background: rgba(13, 30, 23, .84); color: #f0cf81; box-shadow: 0 0 0 5px rgba(213, 175, 101, .16), 0 10px 25px rgba(0,0,0,.24); backdrop-filter: blur(10px); transition: transform 180ms ease, background 180ms ease, box-shadow 180ms ease; }
.residence-plan-zoom:hover, .residence-plan-zoom:focus-visible { outline: 0; background: #31483b; box-shadow: 0 0 0 8px rgba(213, 175, 101, .16), 0 13px 27px rgba(0,0,0,.27); transform: scale(1.08); }
.residence-plan-zoom svg { width: 21px; height: 21px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-width: 1.7; }
.residence-dimension-note { position: absolute; z-index: 3; bottom: 26px; left: 27px; margin: 0; color: rgba(48, 58, 45, .72); font-size: 8px; letter-spacing: .14em; }
.residence-dimension-note span { display: inline-block; width: 9px; height: 9px; margin-right: 7px; border: 1px solid #b66c55; vertical-align: -1px; }

.residence-copy { display: flex; flex-direction: column; justify-content: center; padding: clamp(34px, 5vw, 76px) clamp(27px, 4vw, 65px); background: linear-gradient(155deg, rgba(54, 78, 63, .7), rgba(13, 25, 20, .95) 64%); }
.residence-index-label { display: flex; align-items: center; gap: 12px; margin: 0 0 21px; color: rgba(228, 199, 139, .9); font-size: 10px; letter-spacing: .2em; }
.residence-index-label strong { font-family: var(--res-serif); font-size: 20px; font-weight: 500; letter-spacing: .1em; }
.residence-index-label::after { flex: 1; height: 1px; background: rgba(224, 192, 127, .37); content: ""; }
.residence-unit-meta { margin: 0; color: rgba(222, 231, 217, .66); font-size: 10px; letter-spacing: .09em; line-height: 1.65; }
.residence-copy h3 { margin: 11px 0 0; color: #fbf5e6; font-family: var(--res-serif); font-size: clamp(26px, 2.8vw, 42px); font-weight: 500; letter-spacing: .07em; line-height: 1.28; }
.residence-area { display: flex; align-items: baseline; gap: 10px; margin: 21px 0 0; color: #e6c47d; }
.residence-area::before { width: 24px; height: 20px; border: 1px solid currentColor; box-shadow: inset 0 0 0 4px rgba(230, 196, 125, .08); content: ""; }
.residence-area strong { font-family: var(--res-serif); font-size: clamp(44px, 4.8vw, 68px); font-weight: 500; letter-spacing: .02em; line-height: .85; }
.residence-area span { color: rgba(246, 232, 199, .83); font-size: 12px; letter-spacing: .12em; }
.residence-theme { margin: 24px 0 0; color: #f7ecd3; font-family: var(--res-serif); font-size: clamp(20px, 1.72vw, 26px); font-weight: 500; letter-spacing: .06em; line-height: 1.48; }
.residence-description { margin: 17px 0 0; padding-top: 18px; border-top: 1px solid rgba(232, 205, 149, .2); color: rgba(238, 239, 229, .72); font-size: 13px; font-weight: 300; letter-spacing: .04em; line-height: 1.9; }
.residence-specs { display: grid; grid-template-columns: 1fr 1fr; gap: 0; margin: 24px 0 0; border-top: 1px solid rgba(232, 205, 149, .2); border-bottom: 1px solid rgba(232, 205, 149, .2); }
.residence-spec { padding: 13px 0; border-right: 1px solid rgba(232, 205, 149, .14); }
.residence-spec:nth-child(even) { padding-left: 15px; border-right: 0; }
.residence-spec span { display: block; color: rgba(218, 203, 168, .56); font-size: 8px; letter-spacing: .15em; }
.residence-spec strong { display: block; margin-top: 5px; color: rgba(248, 244, 231, .9); font-size: 12px; font-weight: 400; letter-spacing: .04em; }
.residence-disclaimer { margin: 18px 0 0; color: rgba(220, 216, 197, .46); font-size: 9px; line-height: 1.7; }
.residence-reveal { opacity: 0; transform: translateY(20px); transition: opacity 620ms cubic-bezier(.16,1,.3,1) var(--res-delay, 0ms), transform 620ms cubic-bezier(.16,1,.3,1) var(--res-delay, 0ms); }
.residence-dossier.is-visible .residence-reveal { opacity: 1; transform: translateY(0); }

.residences-cta { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 28px; margin-top: clamp(68px, 11vh, 130px); padding: clamp(28px, 4.4vw, 62px); border: 1px solid var(--res-line); background: linear-gradient(120deg, rgba(232, 224, 198, .08), rgba(116, 142, 119, .11)); }
.residences-cta-kicker { margin: 0 0 10px; color: rgba(227, 204, 155, .78); font-size: 9px; letter-spacing: .2em; }
.residences-cta h3 { margin: 0; color: #f5f0e2; font-family: var(--res-serif); font-size: clamp(25px, 2.5vw, 38px); font-weight: 500; letter-spacing: .07em; }
.residences-cta-actions { display: flex; flex-wrap: wrap; gap: 11px; }
.residences-cta-button { display: inline-flex; min-width: 151px; align-items: center; justify-content: space-between; gap: 24px; padding: 13px 16px; border: 1px solid rgba(233, 205, 146, .62); color: #f6e7bf; font-size: 12px; letter-spacing: .08em; transition: background 200ms ease, color 200ms ease, transform 200ms ease; }
.residences-cta-button:hover { background: rgba(236, 203, 131, .14); color: #fff7e5; transform: translateY(-2px); }
.residences-cta-button.primary { border-color: rgba(255, 231, 168, .92); background: linear-gradient(105deg, rgba(238, 207, 146, .95), rgba(193, 148, 76, .92)); color: #2e2419; box-shadow: inset 0 1px 0 rgba(255,255,255,.6), 0 10px 22px rgba(0,0,0,.17); }
.residences-cta-button.primary:hover { background: linear-gradient(105deg, #f8dda3, #d3a45a); color: #21170c; }

.residence-reader { position: fixed; z-index: 95; inset: 0; display: grid; place-items: center; padding: 5vw; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity 280ms ease, visibility 280ms ease; }
.residence-reader.is-open { opacity: 1; visibility: visible; pointer-events: auto; }
.residence-reader-backdrop { position: absolute; inset: 0; border: 0; background: rgba(4, 12, 9, .88); backdrop-filter: blur(13px); }
.residence-reader-panel { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(275px, .55fr); width: min(1350px, 100%); max-height: 89svh; overflow: hidden; border: 1px solid rgba(224, 191, 119, .7); background: #e5e2d6; box-shadow: 0 35px 100px rgba(0,0,0,.46); opacity: .96; transform: translateY(18px) scale(.985); transition: transform 410ms cubic-bezier(.16,1,.3,1), opacity 280ms ease; }
.residence-reader.is-open .residence-reader-panel { opacity: 1; transform: translateY(0) scale(1); }
.residence-reader-canvas { position: relative; min-height: 0; height: min(76svh, 820px); overflow: hidden; background: linear-gradient(135deg, #c8d0c4, #e5e5d8); cursor: grab; touch-action: none; user-select: none; }
.residence-reader-canvas.is-panning { cursor: grabbing; }
.residence-reader-canvas img { position: absolute; top: 50%; left: 50%; display: block; max-width: calc(100% - 30px); max-height: calc(100% - 30px); object-fit: contain; transform: translate3d(-50%, -50%, 0) scale(1); transform-origin: center; will-change: transform; }
.residence-reader-controls { position: absolute; z-index: 3; right: 16px; bottom: 16px; display: grid; gap: 7px; }
.residence-reader-controls button { display: grid; width: 37px; height: 37px; padding: 0; place-items: center; border: 1px solid rgba(246, 225, 172, .9); border-radius: 50%; background: rgba(15, 32, 24, .84); color: #f0d087; font-size: 20px; line-height: 1; box-shadow: 0 6px 16px rgba(0,0,0,.22); backdrop-filter: blur(8px); }
.residence-reader-controls button:last-child { font-size: 14px; }
.residence-reader-content { display: flex; flex-direction: column; justify-content: center; padding: clamp(32px, 4vw, 62px) clamp(26px, 3.7vw, 55px); overflow-y: auto; border-left: 1px solid rgba(111, 102, 72, .26); background: linear-gradient(150deg, rgba(137, 164, 143, .18), transparent 36%), repeating-radial-gradient(ellipse at 95% 7%, transparent 0 17px, rgba(171, 134, 73, .07) 18px 19px, transparent 20px 36px); color: #3e4639; }
.residence-reader-kicker { margin: 0 0 13px; color: rgba(75, 105, 89, .84); font-size: 9px; font-weight: 600; letter-spacing: .2em; }
.residence-reader-content h2 { margin: 0; color: #384031; font-family: var(--res-serif); font-size: clamp(30px, 3vw, 50px); font-weight: 500; letter-spacing: .08em; line-height: 1.22; }
.residence-reader-meta { margin: 14px 0 0; color: rgba(60, 71, 56, .68); font-size: 11px; letter-spacing: .06em; line-height: 1.65; }
.residence-reader-area { margin: 19px 0 0; color: #a67b3e; font-family: var(--res-serif); font-size: 42px; line-height: 1; }
.residence-reader-area small { padding-left: 7px; color: #706047; font-family: var(--sans); font-size: 11px; letter-spacing: .1em; }
.residence-reader-theme { margin: 20px 0 0; color: #4a513f; font-family: var(--res-serif); font-size: 20px; letter-spacing: .06em; line-height: 1.45; }
.residence-reader-description { margin: 12px 0 0; color: rgba(59, 67, 55, .78); font-size: 13px; font-weight: 300; letter-spacing: .045em; line-height: 1.85; }
.residence-reader-reference { display: flex; align-items: flex-start; gap: 10px; margin: 25px 0 0; padding-top: 14px; border-top: 1px solid rgba(95, 91, 68, .26); color: rgba(119, 94, 52, .78); font-size: 8px; letter-spacing: .12em; line-height: 1.68; }
.residence-reader-reference .reference-mark { flex: 0 0 auto; margin-top: 2px; border-color: var(--res-gold); }
.residence-reader-close { position: absolute; z-index: 4; top: 13px; right: 14px; display: inline-flex; align-items: center; gap: 9px; padding: 9px 10px; border: 1px solid rgba(172, 139, 79, .68); background: rgba(245, 244, 233, .89); color: #46503f; font-size: 10px; letter-spacing: .12em; transition: color 180ms ease, background 180ms ease; }
.residence-reader-close:hover { background: rgba(145, 178, 154, .28); color: #254638; }
.residence-reader-close span:last-child { font-size: 20px; font-weight: 300; line-height: .7; }
body.residence-reader-open { overflow: hidden; }

@media (max-width: 880px) {
  .residences-section { padding: 112px 0 76px; }
  .residences-inner { width: min(100% - 40px, 640px); }
  .residences-header { display: block; }
  .residences-eyebrow { margin-bottom: 16px; font-size: 9px; letter-spacing: .18em; }
  .residences-title { font-size: clamp(38px, 12vw, 57px); }
  .residences-intro { margin-top: 20px; font-size: 13px; }
  .residences-layout { display: block; margin-top: 39px; }
  .residence-index-nav { position: relative; top: auto; display: flex; gap: 0; width: calc(100% + 40px); margin: 0 0 29px -20px; overflow-x: auto; border-top: 1px solid var(--res-line); border-bottom: 1px solid var(--res-line); scrollbar-width: none; }
  .residence-index-nav::-webkit-scrollbar { display: none; }
  .residence-index-nav::before { display: none; }
  .residence-index { flex: 0 0 94px; min-height: 67px; justify-content: center; gap: 8px; border-right: 1px solid rgba(225, 196, 137, .2); }
  .residence-index:hover, .residence-index.is-active { transform: none; box-shadow: inset 0 3px 0 #edcf85; }
  .residence-index strong { font-size: 16px; }
  .residence-dossiers { gap: 72px; }
  .residence-dossier { display: block; min-height: 0; border: 1px solid var(--res-line); }
  .residence-plan-shell { min-height: 0; padding: 44px 18px 55px; }
  .residence-plan-shell::before { inset: 11px; }
  .residence-plan-meta { top: 19px; left: 20px; font-size: 8px; }
  .residence-plan-image { max-height: 440px; }
  .residence-plan-zoom { right: 18px; bottom: 16px; width: 43px; height: 43px; }
  .residence-dimension-note { bottom: 18px; left: 20px; font-size: 7px; }
  .residence-copy { min-height: 0; padding: 29px 23px 31px; }
  .residence-index-label { margin-bottom: 14px; }
  .residence-copy h3 { font-size: 27px; }
  .residence-area { margin-top: 17px; }
  .residence-area strong { font-size: 51px; }
  .residence-theme { margin-top: 20px; font-size: 20px; }
  .residence-description { font-size: 12px; line-height: 1.82; }
  .residences-cta { display: block; margin-top: 70px; padding: 29px 23px; }
  .residences-cta h3 { font-size: 27px; }
  .residences-cta-actions { display: grid; grid-template-columns: 1fr; margin-top: 22px; }
  .residences-cta-button { min-width: 0; }
  .residence-reader { padding: 20px; }
  .residence-reader-panel { display: block; max-height: 90svh; overflow-y: auto; }
  .residence-reader-canvas { height: min(54svh, 510px); }
  .residence-reader-content { padding: 28px 22px 25px; border-top: 1px solid rgba(95,91,68,.27); border-left: 0; }
  .residence-reader-content h2 { font-size: 30px; }
  .residence-reader-description { font-size: 12px; line-height: 1.78; }
  .residence-reader-reference { margin-top: 20px; }
  .residence-reader-close { top: 9px; right: 9px; }
  .residence-reader-controls { right: 10px; bottom: 10px; }
}

@media (prefers-reduced-motion: reduce) {
  .residence-reveal, .residences-title-line span { opacity: 1; transform: none; transition: none; }
  .residence-plan-image, .residence-reader, .residence-reader-panel { transition: none; }
}
