/* Oriel Residences: concept launch site by Maquette
   "A Day in Dubai": each section takes the light of one hour (data-time);
   the sky and the 3D lighting blend between them as you scroll. */

/* ---------- Fonts (self-hosted, OFL) ---------- */
@font-face { font-family: 'Cormorant Garamond'; font-style: normal; font-weight: 400 600; font-display: swap;
  src: url('../assets/fonts/cormorant-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Cormorant Garamond'; font-style: italic; font-weight: 400; font-display: swap;
  src: url('../assets/fonts/cormorant-italic-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 400 700; font-display: swap;
  src: url('../assets/fonts/manrope-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Noto Naskh Arabic'; font-style: normal; font-weight: 500 600; font-display: swap;
  src: url('../assets/fonts/naskh-arabic.woff2') format('woff2');
  unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC; }
@font-face { font-family: 'IBM Plex Sans Arabic'; font-style: normal; font-weight: 400; font-display: swap;
  src: url('../assets/fonts/plex-ar-400-arabic.woff2') format('woff2');
  unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC; }
@font-face { font-family: 'IBM Plex Sans Arabic'; font-style: normal; font-weight: 500 700; font-display: swap;
  src: url('../assets/fonts/plex-ar-500-arabic.woff2') format('woff2');
  unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC; }

/* ---------- Tokens ---------- */
:root {
  --serif: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --sans: 'Manrope', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --gutter: clamp(20px, 5vw, 80px);
  --header-h: 96px;
  --ease: cubic-bezier(.22, .8, .24, 1);
  --wa-bg: rgba(13, 27, 52, .9);
  --toast-bg: rgba(13, 27, 52, .96);
  --toast-fg: #eaf1fb;
}
:root:lang(ar) {
  --serif: 'Noto Naskh Arabic', 'Cormorant Garamond', Georgia, serif;
  --sans: 'IBM Plex Sans Arabic', 'Manrope', system-ui, sans-serif;
}

/* one palette per hour; applies to <html> (header, scrim) and to each section */
:root, [data-time="night"] {
  --sky-1: #060d1f; --sky-2: #0c1a33; --sky-3: #20345a; --scrim: #0a1428;
  --fg: #eaf1fb; --fg-2: #c6d2e5; --muted: #91a3bf;
  --accent: #ffb86b; --accent-ink: #0d1b34; --accent-2: #ffc98e;
  --line: rgba(234, 241, 251, .15); --field: rgba(10, 20, 40, .55); --field-line: rgba(234, 241, 251, .22);
  --btn-line: rgba(234, 241, 251, .36); --header: rgba(10, 20, 40, .8);
  color-scheme: dark;
}
[data-time="dawn"] {
  --sky-1: #232a52; --sky-2: #7c6897; --sky-3: #efbd9f; --scrim: #262b52;
  --fg: #fff6ef; --fg-2: #efdcd4; --muted: #cdb8c0;
  --accent: #f4a259; --accent-ink: #2a1c2c; --accent-2: #ffc995;
  --line: rgba(255, 246, 239, .2); --field: rgba(38, 43, 82, .42); --field-line: rgba(255, 246, 239, .3);
  --btn-line: rgba(255, 246, 239, .42); --header: rgba(38, 43, 82, .74);
  color-scheme: dark;
}
[data-time="morning"] {
  --sky-1: #5f97c0; --sky-2: #b3d1e3; --sky-3: #f1e1cd; --scrim: #eef3f3;
  --fg: #13303a; --fg-2: #2f4c57; --muted: #5a727c;
  --accent: #0f7b84; --accent-ink: #f6f1e7; --accent-2: #0f7b84;
  --line: rgba(19, 48, 58, .16); --field: rgba(255, 255, 255, .6); --field-line: rgba(19, 48, 58, .22);
  --btn-line: rgba(19, 48, 58, .3); --header: rgba(238, 243, 243, .84);
  color-scheme: light;
}
[data-time="noon"] {
  --sky-1: #9fcbe2; --sky-2: #d8eaf0; --sky-3: #f6f1e7; --scrim: #f5f2eb;
  --fg: #13303a; --fg-2: #2f4c57; --muted: #5a727c;
  --accent: #0f7b84; --accent-ink: #f6f1e7; --accent-2: #0f7b84;
  --line: rgba(19, 48, 58, .16); --field: rgba(255, 255, 255, .62); --field-line: rgba(19, 48, 58, .22);
  --btn-line: rgba(19, 48, 58, .3); --header: rgba(245, 242, 235, .86);
  color-scheme: light;
}
[data-time="golden"] {
  --sky-1: #f6d79c; --sky-2: #efa96c; --sky-3: #e2835a; --scrim: #f7d9ab;
  --fg: #2b1b12; --fg-2: #4a2f20; --muted: #74503b;
  --accent: #8a3b1e; --accent-ink: #fbe6c5; --accent-2: #8a3b1e;
  --line: rgba(43, 27, 18, .18); --field: rgba(255, 244, 226, .55); --field-line: rgba(43, 27, 18, .25);
  --btn-line: rgba(43, 27, 18, .34); --header: rgba(247, 217, 171, .86);
  color-scheme: light;
}
[data-time="dusk"] {
  --sky-1: #262050; --sky-2: #75497a; --sky-3: #d48a80; --scrim: #2a2452;
  --fg: #fff0e6; --fg-2: #ead2cb; --muted: #c6aab4;
  --accent: #ffb38a; --accent-ink: #2a1d2e; --accent-2: #ffc9a6;
  --line: rgba(255, 240, 230, .2); --field: rgba(42, 36, 82, .45); --field-line: rgba(255, 240, 230, .28);
  --btn-line: rgba(255, 240, 230, .42); --header: rgba(42, 36, 82, .78);
  color-scheme: dark;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
body {
  margin: 0;
  min-height: 100vh;
  background: #0c1a33;
  color: var(--fg);
  font: 400 16px/1.6 var(--sans);
  -webkit-font-smoothing: antialiased;
  overflow-x: clip;
}
:root:lang(ar) body { line-height: 1.75; }
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, select { font: inherit; color: inherit; }
button { cursor: pointer; }
h1, h2, h3, p, dl, dd, ol, ul { margin: 0; }
ol, ul { padding: 0; list-style: none; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 4px; }
[hidden] { display: none !important; }

.skip {
  position: fixed; top: 8px; inset-inline-start: 8px; z-index: 50;
  padding: 10px 16px; border-radius: 999px; background: var(--accent); color: var(--accent-ink); font-weight: 600;
  transform: translateY(-150%); transition: transform .2s;
}
.skip:focus { transform: none; }

/* ---------- Sky + scrim: two layers each, cross-faded by main.js ---------- */
.sky, .scrim { position: fixed; inset: 0; pointer-events: none; }
.sky { z-index: -1; }
.scrim { z-index: 1; }
.sky > i, .scrim > i { position: absolute; inset: 0; display: block; }
.sky > i { background: linear-gradient(180deg, var(--sky-1) 0%, var(--sky-2) 52%, var(--sky-3) 100%); }
.scrim > i { background: linear-gradient(90deg, color-mix(in srgb, var(--scrim) 92%, transparent) 0%, color-mix(in srgb, var(--scrim) 76%, transparent) 34%, transparent 60%); }
[dir="rtl"] .scrim > i { background: linear-gradient(270deg, color-mix(in srgb, var(--scrim) 92%, transparent) 0%, color-mix(in srgb, var(--scrim) 76%, transparent) 34%, transparent 60%); }
.sky > i + i, .scrim > i + i { opacity: 0; }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 50px; padding: 0 26px;
  border: 1px solid transparent; border-radius: 999px;
  font: 600 14px/1 var(--sans); letter-spacing: .02em; white-space: nowrap;
  transition: transform .4s var(--ease), background-color .3s, border-color .3s, color .3s, box-shadow .4s var(--ease);
}
.btn--primary { background: var(--accent); color: var(--accent-ink); box-shadow: 0 12px 30px -16px color-mix(in srgb, var(--accent) 85%, transparent); }
.btn--primary:hover { transform: translateY(-2px); box-shadow: 0 18px 40px -18px color-mix(in srgb, var(--accent) 95%, transparent); }
.btn--line { border-color: var(--btn-line); color: var(--fg); background: var(--field); }
.btn--line:hover { border-color: var(--accent); color: var(--accent); }
.btn--sm { min-height: 40px; padding: 0 18px; font-size: 13px; }
:root:lang(ar) .btn { letter-spacing: 0; font-size: 15px; }

/* ---------- Header (takes the palette of the section in view) ---------- */
.header { position: fixed; inset: 0 0 auto; z-index: 20; color: var(--fg); transition: background-color .5s, color .5s; }
.header.is-scrolled { background: var(--header); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); }
.demo-bar {
  display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 4px 14px;
  padding: 7px var(--gutter);
  background: color-mix(in srgb, var(--accent) 13%, transparent); border-bottom: 1px solid color-mix(in srgb, var(--accent) 24%, transparent);
  font-size: 12px; line-height: 1.4; color: var(--fg-2); text-align: center;
  transition: background-color .5s, color .5s;
}
.header__row { display: flex; align-items: center; gap: 24px; height: 64px; padding: 0 var(--gutter); border-bottom: 1px solid transparent; }
.header.is-scrolled .header__row { border-bottom-color: var(--line); }
.brand { display: flex; align-items: baseline; gap: 12px; }
.brand__mark { font: 500 26px/1 'Cormorant Garamond', Georgia, serif; letter-spacing: .32em; }
.brand__sub { font-size: 11px; letter-spacing: .22em; text-transform: uppercase; color: var(--muted); }
:root:lang(ar) .brand__sub { font-size: 13px; letter-spacing: 0; text-transform: none; }
.nav { display: flex; gap: 4px; margin-inline: auto; }
.nav a { padding: 10px 14px; border-radius: 999px; font-size: 14px; color: var(--fg-2); transition: color .3s; }
.nav a:hover { color: var(--accent); }
.header__end { display: flex; align-items: center; gap: 14px; }
.lang { padding: 8px 6px; font-size: 14px; color: var(--fg-2); border-bottom: 1px solid var(--line); }
.lang:hover { color: var(--accent); }
.lang:lang(ar) { font-family: 'IBM Plex Sans Arabic', var(--sans); font-size: 15px; }

/* ---------- Scene layers ---------- */
.scene { position: fixed; inset: 0; z-index: 0; display: block; width: 100%; height: 100vh; height: 100lvh; pointer-events: none; }
.over-floor, .over-floor body { cursor: pointer; }
/* a still of the opening view shows at once and fades out when the live 3D is ready underneath it.
   Desktop: a wide render, as tall as the screen, centred where the camera puts the tower (70% across, 30% in Arabic).
   Phones: a portrait render, centred. The narrower the screen, the more of its sides is cut off, like the live view. */
.poster {
  position: fixed; top: 0; left: 70%; z-index: 0; display: block;
  width: auto; max-width: none; height: 100vh; height: 100lvh; translate: -50% 0; pointer-events: none;
  transition: opacity .9s ease, visibility 0s .9s;
}
[dir="rtl"] .poster { left: 30%; }
.is-live .poster { opacity: 0; visibility: hidden; }
.no-gl .poster { opacity: 1; visibility: visible; transition: none; }
.no-gl .scene { display: none; }
.tip {
  position: fixed; left: 0; top: 0; z-index: 15; pointer-events: none;
  padding: 8px 12px; border-radius: 999px;
  background: var(--accent); color: var(--accent-ink);
  font-size: 12px; font-weight: 600; letter-spacing: .02em; white-space: nowrap;
  box-shadow: 0 10px 24px -12px rgba(0, 0, 0, .5);
  opacity: 0; transform: translate(14px, -50%); transition: opacity .2s;
}
.tip.is-on { opacity: 1; }
:root:lang(ar) .tip { letter-spacing: 0; font-size: 13px; }

/* ---------- Sections ---------- */
main { position: relative; z-index: 2; }
main > section {
  position: relative;
  display: flex; align-items: center;
  min-height: 100vh;
  padding: calc(var(--header-h) + 40px) var(--gutter) 80px;
  color: var(--fg);
}
.col { width: min(540px, 46vw); margin-inline-end: auto; }
.eyebrow { font-size: 12px; font-weight: 600; letter-spacing: .24em; text-transform: uppercase; color: var(--accent); }
:root:lang(ar) .eyebrow { font-size: 14px; letter-spacing: 0; text-transform: none; }
.h2 { font: 400 clamp(40px, 4.4vw, 70px)/1.02 var(--serif); letter-spacing: -.01em; text-wrap: balance; }
:root:lang(ar) .h2 { font-weight: 600; font-size: clamp(34px, 3.6vw, 56px); line-height: 1.35; letter-spacing: 0; }
.lede { margin-top: 18px; font-size: 18px; line-height: 1.65; color: var(--fg-2); text-wrap: pretty; max-width: 34em; }
.note { margin-top: 18px; font-size: 12.5px; color: var(--muted); }

/* hero */
.hero { flex-direction: column; justify-content: center; align-items: stretch !important; }
.hero .col { margin-top: auto; margin-bottom: auto; }
.hero__title { margin-top: 18px; }
.hero__name { display: block; font: 400 clamp(92px, 12.5vw, 196px)/.84 var(--serif); letter-spacing: -.015em; }
.hero__sub { display: block; margin-top: 14px; font: 500 14px/1 var(--sans); letter-spacing: .52em; text-transform: uppercase; color: var(--accent-2); padding-inline-start: .2em; }
:root:lang(ar) .hero__name { font-weight: 600; font-size: clamp(76px, 10vw, 150px); line-height: 1.1; letter-spacing: 0; }
:root:lang(ar) .hero__sub { margin-top: 4px; font: 500 clamp(26px, 2.6vw, 38px)/1.3 var(--serif); letter-spacing: 0; text-transform: none; padding: 0; }
.hero__lead { margin-top: 26px; font-size: 19px; line-height: 1.6; color: var(--fg-2); max-width: 30em; text-wrap: pretty; }
.ctas { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 32px; }
.hero__meta { margin-top: 22px; font-size: 13px; color: var(--muted); letter-spacing: .04em; }
:root:lang(ar) .hero__meta { letter-spacing: 0; font-size: 14px; }
.scroll-hint {
  position: absolute; bottom: 28px; inset-inline-start: var(--gutter);
  display: flex; align-items: center; gap: 12px;
  font-size: 11px; letter-spacing: .24em; text-transform: uppercase; color: var(--muted);
}
.scroll-hint span { position: relative; width: 44px; height: 1px; background: var(--line); overflow: hidden; }
.scroll-hint span::after { content: ''; position: absolute; inset: 0; background: var(--accent); transform: translateX(-100%); animation: hint 2.4s var(--ease) infinite; }
[dir="rtl"] .scroll-hint span::after { animation-name: hint-rtl; }
:root:lang(ar) .scroll-hint { letter-spacing: 0; font-size: 13px; }
@keyframes hint { 60%, 100% { transform: translateX(100%); } }
@keyframes hint-rtl { 0% { transform: translateX(100%); } 60%, 100% { transform: translateX(-100%); } }

/* hero: key facts strip */
.strip { display: flex; flex-wrap: wrap; gap: 14px 28px; margin-top: 28px; padding-top: 18px; border-top: 1px solid var(--line); }
.strip dt { font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.strip dd { margin-top: 4px; font-size: 14.5px; font-weight: 600; color: var(--fg); white-space: nowrap; font-feature-settings: 'lnum' 1; }
:root:lang(ar) .strip dt { font-size: 12.5px; letter-spacing: 0; }

/* hero: the motion switch (only on devices set to reduce motion) */
.motion { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; margin-top: 18px; }
.motion__btn {
  display: inline-flex; align-items: center; gap: 10px; min-height: 42px; padding-inline: 7px 18px;
  border: 1px solid var(--btn-line); border-radius: 999px; background: var(--field);
  font: 600 13px/1 var(--sans); letter-spacing: .02em; color: var(--fg); white-space: nowrap;
  transition: border-color .3s, color .3s;
}
.motion__btn:hover { border-color: var(--accent); color: var(--accent); }
.motion__icon { flex: none; width: 28px; height: 28px; padding: 7px; border-radius: 50%; background: var(--accent); fill: var(--accent-ink); }
.motion__pause, .motion.is-on .motion__play { display: none; }
.motion.is-on .motion__pause { display: inline; }
.motion__note { flex: 1 1 16em; font-size: 12.5px; line-height: 1.5; color: var(--muted); }
:root:lang(ar) .motion__btn { letter-spacing: 0; font-size: 14px; }
:root:lang(ar) .motion__note { font-size: 13.5px; }

/* overview: stats and key facts */
.stats { display: grid; grid-template-columns: repeat(3, minmax(0, auto)); justify-content: start; gap: 22px 44px; margin-top: 34px; padding-top: 26px; border-top: 1px solid var(--line); }
.stats div { display: flex; flex-direction: column-reverse; gap: 4px; }
.stats dd { font: 400 clamp(40px, 4vw, 58px)/1 var(--serif); color: var(--accent-2); }
.stats dt { font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
:root:lang(ar) .stats dd { font-family: 'Cormorant Garamond', Georgia, serif; }
:root:lang(ar) .stats div:last-child dd { font: 600 clamp(22px, 2.2vw, 30px)/1.3 var(--serif); }
:root:lang(ar) .stats dt { font-size: 14px; letter-spacing: 0; }
.facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; margin-top: 26px; }
.facts div { padding: 11px 0; border-bottom: 1px solid var(--line); }
.facts dt { font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.facts dd { margin-top: 3px; font-size: 14.5px; color: var(--fg); }
:root:lang(ar) .facts dt { font-size: 12.5px; letter-spacing: 0; }

/* design: materials and notes */
.swatches { display: flex; flex-wrap: wrap; gap: 18px 20px; margin-top: 32px; }
.swatches li { display: flex; flex-direction: column; align-items: center; gap: 10px; width: 86px; text-align: center; font-size: 12.5px; line-height: 1.35; color: var(--fg-2); }
.sw { display: block; width: 62px; height: 62px; border-radius: 50%; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .08), 0 12px 26px -14px rgba(0, 0, 0, .55); }
.sw--glass { background: linear-gradient(140deg, #d9ecef 0%, #93b9c1 42%, #eef7f8 58%, #7aa3ac 100%); }
.sw--champagne { background: linear-gradient(140deg, #eadbbd 0%, #b8a079 50%, #f1e5cc 70%, #a88f68 100%); }
.sw--travertine { background: repeating-linear-gradient(172deg, rgba(160, 136, 100, .18) 0 2px, transparent 2px 9px), radial-gradient(circle at 30% 30%, #f1e8d8, #dccbad 60%, #cdb994); }
.sw--oak { background: repeating-linear-gradient(98deg, #5d4a38 0 3px, #6e5843 3px 7px, #54432f 7px 9px, #6a5440 9px 13px); }
.sw--bronze { background: linear-gradient(140deg, #9b7a52 0%, #5f4631 48%, #b08d64 68%, #6c5037 100%); }
.notes { margin-top: 30px; border-top: 1px solid var(--line); }
.notes li { display: grid; grid-template-columns: minmax(0, 200px) minmax(0, 1fr); gap: 6px 20px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.notes b { font-weight: 600; font-size: 15px; }
.notes span { font-size: 14.5px; color: var(--fg-2); }

/* residences */
.prefs { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 22px; margin-top: 22px; font-size: 13px; color: var(--muted); }
.pref { display: inline-flex; align-items: center; gap: 8px; }
.pref select {
  min-height: 34px; padding: 0 30px 0 12px; border: 1px solid var(--field-line); border-radius: 999px;
  background: var(--field) linear-gradient(45deg, transparent 50%, var(--accent) 50%) no-repeat calc(100% - 16px) 15px / 5px 5px;
  appearance: none; color: var(--fg); font-weight: 600; font-size: 13px;
}
[dir="rtl"] .pref select { padding: 0 12px 0 30px; background-position: 12px 15px; }
.pref select option { color: #13303a; background: #fff; }
.pref--seg button { min-height: 34px; padding: 0 12px; border: 1px solid var(--field-line); background: var(--field); color: var(--fg-2); font-size: 13px; }
.pref--seg button:first-of-type { border-radius: 999px 0 0 999px; }
.pref--seg button:last-of-type { border-radius: 0 999px 999px 0; margin-inline-start: -1px; }
[dir="rtl"] .pref--seg button:first-of-type { border-radius: 0 999px 999px 0; }
[dir="rtl"] .pref--seg button:last-of-type { border-radius: 999px 0 0 999px; }
.pref--seg button[aria-pressed="true"] { background: var(--accent); border-color: transparent; color: var(--accent-ink); font-weight: 600; }
.tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px; }
.tab {
  min-height: 42px; padding: 0 18px; border-radius: 999px;
  border: 1px solid var(--btn-line); background: var(--field);
  font-size: 14px; font-weight: 500; color: var(--fg-2);
  transition: background-color .3s, border-color .3s, color .3s;
}
.tab:hover { border-color: var(--accent); color: var(--fg); }
.tab[aria-selected="true"] { background: var(--accent); border-color: transparent; color: var(--accent-ink); font-weight: 600; }
.panel { margin-top: 22px; }
.plan-wrap { max-width: 460px; }
.specs { display: grid; grid-template-columns: repeat(3, minmax(0, auto)); justify-content: start; gap: 14px 32px; margin-top: 14px; padding: 16px 0; border-block: 1px solid var(--line); }
.specs dt { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.specs dd { margin-top: 5px; font-size: 15px; font-weight: 600; }
.specs .price { font: 500 26px/1.1 'Cormorant Garamond', Georgia, serif; color: var(--accent-2); }
:root:lang(ar) .specs dt { font-size: 13px; letter-spacing: 0; }
:root:lang(ar) .specs .price { font: 600 19px/1.4 var(--serif); }
.features { display: grid; gap: 8px; margin: 16px 0 20px; color: var(--fg-2); }
.features li { position: relative; padding-inline-start: 20px; }
.features li::before { content: ''; position: absolute; inset-inline-start: 0; top: .72em; width: 8px; height: 1px; background: var(--accent); }
.panel__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; }
.linkbtn { padding: 0; border: 0; background: none; color: var(--accent); font-weight: 600; font-size: 14px; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 5px; }
.linkbtn:hover { color: var(--fg); }
.hint { margin-top: 22px; font-size: 13px; color: var(--muted); }

/* floor plans (drawn by js/plans.js, themed by the hour) */
.plan { display: block; width: 100%; height: auto; }
.plan .bal { fill: color-mix(in srgb, var(--accent) 10%, transparent); stroke: color-mix(in srgb, var(--accent) 60%, transparent); stroke-dasharray: 4 3; stroke-width: 1; }
.plan .room { fill: color-mix(in srgb, var(--field) 85%, transparent); stroke: color-mix(in srgb, var(--fg) 70%, transparent); stroke-width: 1.1; }
.plan .room--wet { fill: color-mix(in srgb, var(--fg) 6%, transparent); }
.plan .room--open { stroke-dasharray: 3 3; }
.plan .core { fill: color-mix(in srgb, var(--fg) 12%, transparent); stroke: var(--fg); stroke-width: 1; }
.plan .wall { fill: none; stroke: var(--fg); stroke-width: 3; stroke-linejoin: round; }
.plan .glaze { fill: none; stroke: var(--accent); stroke-width: 1.8; }
.plan .door, .plan .fur path, .plan .fur rect, .plan .fur circle { fill: none; stroke: color-mix(in srgb, var(--fg) 55%, transparent); stroke-width: .8; }
.plan .entry { fill: var(--accent); }
.plan .north circle { fill: none; stroke: var(--fg); }
.plan .north path { fill: var(--fg); }
.plan .scale path { fill: none; stroke: var(--fg); stroke-width: 1.2; }
.plan .lbl { font: 600 14px var(--sans); fill: var(--fg); text-anchor: middle; letter-spacing: .01em; }
.plan .lbl--small { font-size: 11.5px; font-weight: 500; fill: var(--fg-2); }
.plan .lbl--area { font-size: 12px; font-weight: 400; fill: var(--muted); }
:root:lang(ar) .plan .lbl { letter-spacing: 0; }

/* availability explorer */
.legend { display: flex; flex-wrap: wrap; gap: 8px 18px; margin-top: 16px; font-size: 13px; color: var(--fg-2); }
.legend b { font-weight: 700; color: var(--fg); font-feature-settings: 'lnum' 1; }
.dot { display: inline-block; flex: none; width: 10px; height: 10px; border-radius: 50%; margin-inline-end: 7px; vertical-align: -1px; }
.dot--available { background: var(--accent); }
.dot--reserved { background: #d9973b; }
.dot--sold { background: #a4a8ad; }
.floorbar { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 8px 12px; margin-top: 18px; padding: 10px 12px; border: 1px solid var(--field-line); border-radius: 16px; background: var(--field); }
.round { display: grid; place-items: center; width: 42px; height: 42px; padding: 0; border-radius: 50%; border: 1px solid var(--btn-line); background: transparent; color: var(--fg); }
.round:hover { border-color: var(--accent); color: var(--accent); }
.round svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.round:disabled { opacity: .35; cursor: default; }
.floorbar__label { display: flex; flex-direction: column; align-items: center; text-align: center; }
.floorbar__label b { font: 500 24px/1.1 var(--serif); font-feature-settings: 'lnum' 1; }
.floorbar__label span { font-size: 12.5px; color: var(--muted); }
.floorbar__hint { grid-column: 1 / -1; font-size: 12px; color: var(--muted); text-align: center; }
/* "click" with a mouse, "tap" on a touch screen */
.on-touch { display: none; }
@media (pointer: coarse) { .on-mouse { display: none; } .on-touch { display: inline; } }
.card { margin-top: 12px; padding: 18px; border: 1px solid var(--field-line); border-radius: 18px; background: color-mix(in srgb, var(--scrim) 78%, transparent); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
.card__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.card__title { font: 500 28px/1.1 'Cormorant Garamond', Georgia, serif; font-feature-settings: 'lnum' 1; }
.card__title span { font: 500 13px var(--sans); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); vertical-align: middle; }
:root:lang(ar) .card__title span { letter-spacing: 0; font-size: 14px; }
.chip { display: inline-flex; align-items: center; min-height: 26px; padding: 0 11px; border-radius: 999px; font-size: 12px; font-weight: 700; letter-spacing: .02em; }
.chip--available { background: color-mix(in srgb, var(--accent) 16%, transparent); color: var(--accent); }
.chip--reserved { background: rgba(217, 151, 59, .18); color: #a86a1f; }
.chip--sold { background: rgba(120, 126, 134, .18); color: #62686f; }
.card__body { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; margin-top: 10px; }
.card__plan { max-width: 420px; }
.card__specs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 14px; }
.card__specs dt { font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.card__specs dd { margin-top: 2px; font-size: 14px; font-weight: 600; }
:root:lang(ar) .card__specs dt { font-size: 12px; letter-spacing: 0; }
.card__price { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.card__price span { display: block; font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
:root:lang(ar) .card__price span { font-size: 12px; letter-spacing: 0; }
.card__price b { display: block; margin-top: 4px; font: 500 25px/1.1 'Cormorant Garamond', Georgia, serif; color: var(--accent-2); font-feature-settings: 'lnum' 1; }
:root:lang(ar) .card__price b { font: 600 18px/1.4 var(--serif); }
.card__price small { display: block; margin-top: 2px; font-size: 12px; color: var(--muted); }
.card__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.card__actions .btn[disabled] { opacity: .45; cursor: not-allowed; transform: none; }
.filters { display: grid; gap: 14px; margin-top: 22px; }
.chips { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; padding: 0; border: 0; min-width: 0; }
.chips legend { float: left; width: 100%; margin-bottom: 6px; padding: 0; font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
:root:lang(ar) .chips legend { font-size: 12.5px; letter-spacing: 0; }
.chips label, .field--seg label, .days label { position: relative; }
.chips input, .field--seg input, .days input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.chips span { display: inline-flex; align-items: center; min-height: 36px; padding: 0 14px; border: 1px solid var(--btn-line); border-radius: 999px; background: var(--field); font-size: 13.5px; color: var(--fg-2); transition: background-color .25s, color .25s, border-color .25s; }
.chips input:checked + span { background: var(--accent); border-color: transparent; color: var(--accent-ink); font-weight: 600; }
.chips input:focus-visible + span, .field--seg input:focus-visible + span, .days input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }
.field--inline { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.field--inline select { width: auto; min-width: 190px; min-height: 40px; }
.results { margin-top: 18px; }
.results__count { font-size: 13px; color: var(--muted); }
.results__list { margin-top: 8px; border-top: 1px solid var(--line); }
.results__list button { display: grid; grid-template-columns: 52px minmax(0, 1fr) auto 12px; align-items: center; gap: 12px; width: 100%; padding: 10px 6px; border: 0; border-bottom: 1px solid var(--line); background: none; color: var(--fg); text-align: start; transition: background-color .2s; }
.results__list button:hover, .results__list button[aria-pressed="true"] { background: color-mix(in srgb, var(--accent) 10%, transparent); }
.results__list b { font: 700 14.5px var(--sans); font-feature-settings: 'lnum' 1, 'tnum' 1; }
.results__list span { font-size: 13px; color: var(--fg-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.results__list em { font-style: normal; font-weight: 600; font-size: 14px; white-space: nowrap; }
.results .btn { margin-top: 12px; }

/* specifications */
.speclist { margin-top: 26px; border-top: 1px solid var(--line); }
.speclist div { display: grid; grid-template-columns: 130px minmax(0, 1fr); gap: 4px 18px; padding: 13px 0; border-bottom: 1px solid var(--line); }
.speclist dt { font-weight: 600; font-size: 14.5px; }
.speclist dd { font-size: 14.5px; color: var(--fg-2); }

/* amenities, level by level */
.levels { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 26px; }
.lvl { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; min-height: 54px; padding: 8px 16px; border: 1px solid var(--btn-line); border-radius: 14px; background: var(--field); color: var(--fg-2); font-weight: 600; font-size: 14px; text-align: start; transition: background-color .3s, color .3s, border-color .3s; }
.lvl small { font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); font-weight: 500; }
:root:lang(ar) .lvl small { font-size: 12px; letter-spacing: 0; }
.lvl:hover { border-color: var(--accent); }
.lvl[aria-selected="true"] { background: var(--accent); border-color: transparent; color: var(--accent-ink); }
.lvl[aria-selected="true"] small { color: inherit; opacity: .8; }
.amen-panel { margin-top: 18px; }
.amen-panel > p { color: var(--fg-2); font-size: 16px; }
.amen-img, .figure { position: relative; margin: 0 0 16px; overflow: hidden; border-radius: 16px; aspect-ratio: 3 / 2; background: color-mix(in srgb, var(--fg) 8%, transparent); box-shadow: 0 26px 50px -32px rgba(0, 0, 0, .65); }
.amen-img img { width: 100%; height: 100%; object-fit: cover; }
.amen-img figcaption { position: absolute; bottom: 12px; inset-inline-start: 12px; padding: 4px 10px; border-radius: 999px; background: rgba(10, 14, 20, .55); color: #fff; font-size: 11px; letter-spacing: .06em; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.services { margin-top: 26px; padding-top: 18px; border-top: 1px solid var(--line); }
.h3 { font: 500 23px/1.25 var(--serif); }
:root:lang(ar) .h3 { font-weight: 600; font-size: 21px; line-height: 1.5; }
.services ul { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.services li { padding: 7px 13px; border: 1px solid var(--line); border-radius: 999px; font-size: 13px; color: var(--fg-2); background: var(--field); }

/* location */
.times { margin-top: 32px; border-top: 1px solid var(--line); }
.times li { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.times span { font-size: 16px; }
.times b { font: 500 22px/1 'Cormorant Garamond', Georgia, serif; color: var(--accent-2); white-space: nowrap; }
:root:lang(ar) .times b { font: 500 17px/1.4 var(--sans); }

/* payment plan */
.steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin-top: 34px; }
.steps li { display: flex; flex-direction: column; gap: 6px; padding-top: 16px; border-top: 1px solid var(--accent); }
.steps b { font: 400 clamp(46px, 4.6vw, 68px)/1 'Cormorant Garamond', Georgia, serif; color: var(--accent-2); }
.steps span { font-weight: 600; font-size: 15px; }
.steps small { font-size: 13px; color: var(--muted); }
.progress { display: grid; grid-template-columns: 1fr auto; align-items: baseline; gap: 10px; margin-top: 34px; }
.progress span { font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
.progress b { font: 500 26px/1 'Cormorant Garamond', Georgia, serif; color: var(--accent-2); font-variant-numeric: tabular-nums; }
.progress__track { grid-column: 1 / -1; position: relative; display: block; height: 2px; background: var(--line); overflow: hidden; border-radius: 2px; }
.progress__fill { position: absolute; inset: 0; display: block; background: linear-gradient(90deg, var(--accent), var(--accent-2)); transform-origin: left center; transform: scaleX(0); }
[dir="rtl"] .progress__fill { transform-origin: right center; }
:root:lang(ar) .progress span { letter-spacing: 0; font-size: 14px; }

/* Cormorant defaults to old-style figures; prices and numbers read better lining.
   font-feature-settings, because the font shorthand above resets font-variant-numeric */
.specs .price, .times b, .steps b, .progress b, .stats dd { font-feature-settings: 'lnum' 1; }

/* register */
.form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 20px; margin-top: 30px; }
.field { display: flex; flex-direction: column; gap: 8px; min-width: 0; margin: 0; padding: 0; border: 0; }
.field > span, .field legend { font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
:root:lang(ar) .field > span, :root:lang(ar) .field legend { font-size: 13.5px; letter-spacing: 0; }
.field input, .field select, .phone {
  width: 100%; min-height: 48px; padding: 0 14px;
  border: 1px solid var(--field-line); border-radius: 12px;
  background: var(--field); color: var(--fg);
  transition: border-color .3s;
}
.field select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--accent) 50%), linear-gradient(135deg, var(--accent) 50%, transparent 50%); background-position: calc(100% - 20px) 21px, calc(100% - 15px) 21px; background-size: 5px 5px; background-repeat: no-repeat; }
.field select option { color: #13303a; background: #ffffff; }
[dir="rtl"] .field select { background-position: 15px 21px, 20px 21px; }
.field input:focus, .field select:focus, .phone:focus-within { outline: none; border-color: var(--accent); }
.phone { display: flex; align-items: center; gap: 10px; padding: 0 0 0 14px; }
.phone i { font-style: normal; color: var(--muted); }
.phone input { border: 0; padding-inline: 0 14px; background: transparent; min-height: 46px; }
.field--radios { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 10px 18px; grid-column: 1 / -1; }
.field--radios legend { width: 100%; margin-bottom: 4px; float: left; }
.field--radios label, .check { display: inline-flex; align-items: center; gap: 10px; font-size: 15px; cursor: pointer; }
.field--radios input, .check input { width: 18px; height: 18px; accent-color: var(--accent); }
.check { grid-column: 1 / -1; color: var(--fg-2); font-size: 14px; }
.form .btn { grid-column: 1 / -1; justify-self: start; }
.form__legal { grid-column: 1 / -1; font-size: 12.5px; color: var(--muted); }
.done { margin-top: 30px; padding: 26px; border: 1px solid color-mix(in srgb, var(--accent) 50%, transparent); border-radius: 18px; background: var(--field); }
.done__title { font: 500 28px/1.2 var(--serif); color: var(--accent-2); outline: none; }
.done p { margin: 12px 0 20px; color: var(--fg-2); }

/* payment calculator and timeline */
.calc { margin-top: 28px; padding: 18px; border: 1px solid var(--field-line); border-radius: 18px; background: var(--field); }
.calc .field > span { white-space: nowrap; }
.calc select { max-width: 100%; }
.calc__table { width: 100%; margin-top: 12px; border-collapse: collapse; font-size: 14px; }
.calc__table th { padding: 9px 0; font-weight: 500; text-align: start; color: var(--fg-2); }
.calc__table td { padding: 9px 0; text-align: end; font-weight: 600; white-space: nowrap; font-feature-settings: 'lnum' 1, 'tnum' 1; }
.calc__table td.pct { padding-inline: 12px; color: var(--muted); font-weight: 500; }
.calc__table tbody tr + tr > * { border-top: 1px solid var(--line); }
.calc__table tfoot > tr > * { padding-top: 12px; border-top: 1px solid color-mix(in srgb, var(--fg) 45%, transparent); font-weight: 700; color: var(--fg); }
.calc .linkbtn { margin-top: 10px; }
.timeline { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: 30px; }
.timeline li { position: relative; padding-top: 16px; border-top: 2px solid var(--line); }
.timeline li::before { content: ''; position: absolute; top: -6px; inset-inline-start: 0; width: 10px; height: 10px; border-radius: 50%; background: var(--accent); }
.timeline b { display: block; font-size: 13px; font-weight: 700; color: var(--accent-2); }
.timeline span { display: block; margin-top: 2px; font-size: 13.5px; color: var(--fg-2); }

/* buying at Oriel + FAQ */
.why { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 28px; }
.why li { padding: 16px; border: 1px solid var(--field-line); border-radius: 16px; background: var(--field); }
.why b { display: block; font: 500 21px/1.2 var(--serif); color: var(--accent-2); }
:root:lang(ar) .why b { font-weight: 600; font-size: 18px; line-height: 1.5; }
.why span { display: block; margin-top: 6px; font-size: 14px; color: var(--fg-2); }
.buy .h3 { margin-top: 34px; }
.faq { margin-top: 12px; border-top: 1px solid var(--line); }
.faq details { border-bottom: 1px solid var(--line); }
.faq summary { position: relative; padding: 15px 0; padding-inline-end: 34px; cursor: pointer; font-weight: 600; font-size: 15.5px; list-style: none; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: '+'; position: absolute; inset-inline-end: 4px; top: 50%; transform: translateY(-50%); font-size: 22px; font-weight: 300; color: var(--accent); }
.faq details[open] summary::after { content: '\2013'; }
.faq p { padding: 0 0 16px; color: var(--fg-2); font-size: 15px; }

/* gallery: a full-width panel over the scene */
main > section.gallery { display: block; }
.gallery .wide { width: 100%; padding: clamp(22px, 3vw, 44px); border-radius: 28px; background: color-mix(in srgb, var(--scrim) 90%, transparent); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); box-shadow: 0 40px 80px -50px rgba(0, 0, 0, .5); }
.gallery__head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 18px 30px; margin-bottom: 24px; }
.gal-filters { display: flex; flex-wrap: wrap; gap: 8px; }
.gal-filters button { min-height: 38px; padding: 0 16px; border: 1px solid var(--btn-line); border-radius: 999px; background: var(--field); color: var(--fg-2); font-size: 13.5px; }
.gal-filters button[aria-pressed="true"] { background: var(--accent); border-color: transparent; color: var(--accent-ink); font-weight: 600; }
.gal { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: minmax(0, auto); grid-auto-flow: dense; gap: 12px; }
.gal__cell { position: relative; aspect-ratio: 3 / 2; }
.gal__cell--wide { grid-column: span 2; grid-row: span 2; aspect-ratio: auto; }
.gal__item { position: absolute; inset: 0; display: block; width: 100%; height: 100%; padding: 0; border: 0; border-radius: 14px; overflow: hidden; background: color-mix(in srgb, var(--fg) 10%, transparent); cursor: zoom-in; }
.gal__item img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.gal__item:hover img { transform: scale(1.04); }
.gal__cap { position: absolute; inset: auto 0 0 0; padding: 30px 12px 10px; background: linear-gradient(0deg, rgba(8, 12, 18, .75), transparent); color: #fff; font-size: 12.5px; text-align: start; opacity: 0; transition: opacity .3s; }
.gal__item:hover .gal__cap, .gal__item:focus-visible .gal__cap { opacity: 1; }
.gallery .note { margin-top: 16px; }

/* booking form: segmented choices, days, country code */
.field--seg, .field--days { grid-column: 1 / -1; flex-direction: row; flex-wrap: wrap; gap: 8px; }
.field--seg legend, .field--days legend { float: left; width: 100%; margin-bottom: 2px; }
.field--seg span, .days span { display: inline-flex; align-items: center; min-height: 40px; padding: 0 15px; border: 1px solid var(--field-line); border-radius: 12px; background: var(--field); font-size: 14px; color: var(--fg-2); transition: background-color .25s, border-color .25s, color .25s; }
.field--seg input:checked + span, .days input:checked + span { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 18%, var(--field)); color: var(--fg); font-weight: 600; }
.days { display: flex; flex-wrap: wrap; gap: 8px; }
.phone { padding-inline-start: 4px; }
.phone select { width: auto; min-height: 44px; padding: 0 6px; border: 0; background: transparent; color: var(--fg); font-weight: 600; }
.phone select option { color: #13303a; background: #fff; }

/* ---------- Footer ---------- */
.footer {
  position: relative; z-index: 2;
  padding: clamp(64px, 10vh, 110px) var(--gutter) 40px;
  color: var(--fg);
  background: linear-gradient(180deg, transparent 0%, var(--scrim) 22%);
}
.footer__pitch { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 24px 40px; padding-bottom: 36px; border-bottom: 1px solid var(--line); }
.footer__lead { max-width: 36em; font: 400 clamp(22px, 2.2vw, 30px)/1.35 var(--serif); }
:root:lang(ar) .footer__lead { font-size: clamp(20px, 1.9vw, 26px); line-height: 1.7; }
.footer__grid { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 24px 40px; align-items: start; padding: 28px 0; }
.footer__legal { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px 40px; }
.qr { display: grid; justify-items: center; align-content: start; gap: 8px; width: 128px; margin: 0; text-align: center; }
.qr__code { width: 112px; height: 112px; border-radius: 10px; overflow: hidden; box-shadow: 0 12px 26px -16px rgba(0, 0, 0, .7); }
.qr figcaption { font-size: 11px; line-height: 1.4; color: var(--muted); }
:root:lang(ar) .qr figcaption { font-size: 12.5px; }
.footer__legal dt { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
:root:lang(ar) .footer__legal dt { font-size: 13px; letter-spacing: 0; }
.footer__legal dd { margin-top: 6px; color: var(--fg-2); }
.footer__legal small { display: block; margin-top: 2px; font-size: 12.5px; color: var(--muted); font-feature-settings: 'tnum' 1; }
.footer__small { font-size: 12px; color: var(--muted); max-width: 60em; }

/* ---------- WhatsApp + toast (same look at every hour) ---------- */
.wa {
  position: fixed; bottom: calc(20px + env(safe-area-inset-bottom, 0px)); inset-inline-end: 20px; z-index: 18;
  display: grid; place-items: center; width: 56px; height: 56px; padding: 0;
  border: 1px solid rgba(37, 211, 102, .5); border-radius: 50%;
  background: var(--wa-bg); color: #25d366;
  box-shadow: 0 12px 30px -12px rgba(0, 0, 0, .55);
  transition: transform .4s var(--ease);
}
.wa:hover { transform: translateY(-3px); }
.wa svg { width: 26px; height: 26px; fill: currentColor; }
.toast {
  position: fixed; left: 50%; bottom: calc(92px + env(safe-area-inset-bottom, 0px)); z-index: 30;
  width: max-content; max-width: min(92vw, 460px);
  padding: 14px 18px; border-radius: 14px;
  background: var(--toast-bg); border: 1px solid rgba(255, 184, 107, .45);
  font-size: 14px; line-height: 1.5; color: var(--toast-fg);
  opacity: 0; pointer-events: none; transform: translate(-50%, 10px);
  transition: opacity .3s, transform .4s var(--ease);
}
.toast.is-on { opacity: 1; transform: translate(-50%, 0); }

/* ---------- Labels over the scene ---------- */
.labels { position: fixed; inset: 0; z-index: 3; pointer-events: none; overflow: hidden; }
.label { position: absolute; left: 0; top: 0; white-space: nowrap; opacity: 0; transition: opacity .35s; will-change: transform; }
.label.is-on { opacity: 1; }
.label--place { translate: -50% calc(-100% - 10px); padding: 6px 11px; border-radius: 999px; background: rgba(12, 16, 24, .74); color: #fff; font-size: 12px; font-weight: 600; box-shadow: 0 8px 20px -10px rgba(0, 0, 0, .6); }
.label--place::after { content: ''; position: absolute; left: 50%; top: 100%; width: 1px; height: 10px; background: rgba(12, 16, 24, .74); }
.label--place.is-edge { translate: -50% -50%; }
.label--place.is-edge::after { display: none; }
.label--place.is-edge::before { content: '\2192'; display: inline-block; margin-inline-end: 7px; transform: rotate(var(--ang, 0rad)); }
.label--unit { translate: -50% -50%; padding: 3px 7px; border-radius: 7px; background: rgba(255, 255, 255, .92); color: #13303a; font: 700 11px/1.2 var(--sans); box-shadow: 0 4px 12px -6px rgba(0, 0, 0, .45); }
.label--unit[data-status="sold"], .label--unit[data-status="reserved"] { opacity: .72; }
.label--unit.is-sel { background: var(--accent); color: var(--accent-ink); opacity: 1; }
.label--unit:not(.is-on) { opacity: 0; }

/* ---------- Phone dock ---------- */
.dock { display: none; }

/* ---------- Sales offer (print or save as PDF) ---------- */
.offer {
  --fg: #1d2226; --fg-2: #3b454d; --muted: #6b757d; --accent: #0f7b84; --accent-ink: #f6f1e7; --accent-2: #0f7b84;
  --line: rgba(29, 34, 38, .14); --field: #ffffff; --field-line: rgba(29, 34, 38, .2); --btn-line: rgba(29, 34, 38, .3); --scrim: #fbfaf7;
  width: min(900px, 94vw); max-height: 92vh; padding: 0; border: 0; border-radius: 20px; background: #fbfaf7; color: var(--fg);
  box-shadow: 0 40px 100px -30px rgba(0, 0, 0, .6);
}
.offer::backdrop, .lightbox::backdrop { background: rgba(6, 10, 18, .66); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.offer__sheet { max-height: calc(92vh - 78px); overflow: auto; padding: 28px 32px 8px; }
.offer__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.offer__brand span { display: block; font: 500 28px/1 'Cormorant Garamond', Georgia, serif; letter-spacing: .32em; }
.offer__brand small { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); white-space: nowrap; }
.offer__meta { text-align: end; }
.offer__meta h2 { font: 500 30px/1.1 var(--serif); }
.offer__meta p { font-size: 13px; color: var(--muted); }
.offer__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px; margin-top: 20px; }
.offer h3 { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; font: 500 22px/1.2 var(--serif); }
.offer__dl div { display: flex; justify-content: space-between; gap: 16px; padding: 8px 0; border-bottom: 1px solid var(--line); font-size: 14px; }
.offer__dl dt { color: var(--muted); }
.offer__dl dd { font-weight: 600; text-align: end; }
.offer__price { color: var(--accent); font-size: 16px; }
.offer__table { width: 100%; margin-top: 4px; border-collapse: collapse; font-size: 13.5px; }
.offer__table th { padding: 7px 0; font-weight: 500; text-align: start; color: var(--fg-2); }
.offer__table td { padding: 7px 0; text-align: end; font-weight: 600; white-space: nowrap; font-feature-settings: 'tnum' 1; }
.offer__table td.pct { padding-inline: 12px; color: var(--muted); font-weight: 500; }
.offer__table tbody tr + tr > * { border-top: 1px solid var(--line); }
.offer__table tfoot > tr > * { padding-top: 10px; border-top: 1.5px solid var(--fg); font-weight: 700; }
.offer section + section { margin-top: 20px; }
.offer__next { margin-top: 18px; font-weight: 600; }
.offer__valid { margin: 8px 0 20px; font-size: 12px; color: var(--muted); }
.offer__actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 10px; padding: 14px 32px 20px; border-top: 1px solid var(--line); }
@media print {
  html.printing-offer body > *:not(.offer) { display: none !important; }
  html.printing-offer body { background: #fff; }
  html.printing-offer .offer { position: static; width: auto; max-height: none; margin: 0; box-shadow: none; border-radius: 0; }
  html.printing-offer .offer__sheet { max-height: none; overflow: visible; padding: 0; }
  html.printing-offer .offer__actions { display: none; }
}

/* ---------- Gallery lightbox ---------- */
.lightbox { width: 100vw; max-width: 100vw; height: 100vh; height: 100dvh; max-height: none; margin: 0; padding: 0; border: 0; background: transparent; overflow: hidden; }
.lightbox figure { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; margin: 0; padding: 64px 84px 40px; }
.lightbox img { max-width: 100%; max-height: calc(100vh - 150px); border-radius: 12px; box-shadow: 0 30px 80px -30px rgba(0, 0, 0, .8); }
.lightbox figcaption { margin-top: 14px; color: #fff; font-size: 14px; text-align: center; }
.lightbox__nav, .lightbox__close { position: fixed; display: grid; place-items: center; width: 48px; height: 48px; padding: 0; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .35); background: rgba(10, 14, 20, .5); color: #fff; }
.lightbox__nav { top: 50%; transform: translateY(-50%); }
.lightbox__nav--prev { left: 20px; }
.lightbox__nav--next { right: 20px; }
.lightbox__close { top: 18px; right: 18px; }
[dir="rtl"] .lightbox__nav--prev { left: auto; right: 20px; }
[dir="rtl"] .lightbox__nav--next { right: auto; left: 20px; }
[dir="rtl"] .lightbox__nav svg { transform: scaleX(-1); }
[dir="rtl"] .lightbox__close { right: auto; left: 18px; }
.lightbox svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

/* ---------- Photographing the scene for the gallery (?shoot) ---------- */
.shoot .header, .shoot main, .shoot .footer, .shoot .scrim, .shoot .labels, .shoot .tip, .shoot .wa, .shoot .dock, .shoot .toast, .shoot .skip { visibility: hidden !important; }

.visually-hidden { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* ---------- Intro state ---------- */
.js:not(.reduced) [data-rise] { opacity: 0; transform: translateY(24px); }
.js.ready:not(.reduced) [data-rise] { opacity: 1; transform: none; transition: opacity 1.1s var(--ease), transform 1.2s var(--ease); }

/* ---------- Tablet + phone ---------- */
@media (max-width: 1080px) {
  .nav { display: none; }
  .header__end { margin-inline-start: auto; }
}
@media (max-width: 820px) {
  :root { --header-h: 104px; }
  .demo-bar { font-size: 11px; padding-block: 6px; }
  .demo-bar span { display: none; }
  .demo-bar::before { content: 'Concept demo · not a real project'; }
  :root:lang(ar) .demo-bar::before { content: 'عرض توضيحي · ليس مشروعاً حقيقياً'; }
  .header__row { height: 58px; gap: 12px; }
  .brand__mark { font-size: 22px; letter-spacing: .26em; }
  .brand__sub { display: none; }
  .scrim > i, [dir="rtl"] .scrim > i { background: linear-gradient(0deg, color-mix(in srgb, var(--scrim) 96%, transparent) 0%, color-mix(in srgb, var(--scrim) 86%, transparent) 42%, transparent 68%); }
  main > section { align-items: flex-end; min-height: 100vh; min-height: 100svh; padding: 48vh 20px 76px; }
  .hero { padding-top: 46vh; }
  .col { width: 100%; }
  /* the text scrolls up over the 3D, so it sits on a soft sheet of its hour's colour and stays readable;
     the 3D shows clear in the space above each section's text */
  main > section > .col { position: relative; }
  main > section > .col::before {
    content: ''; position: absolute; z-index: -1; inset: -64px -20px -76px; pointer-events: none;
    background: linear-gradient(180deg, transparent 0, color-mix(in srgb, var(--scrim) 90%, transparent) 64px, color-mix(in srgb, var(--scrim) 90%, transparent) calc(100% - 56px), transparent 100%);
  }
  /* the hero keeps the tower's base in view around the name; the sheet starts under it */
  .hero > .col::before { top: 30%; }
  .hero__name { font-size: clamp(72px, 22vw, 120px); }
  :root:lang(ar) .hero__name { font-size: clamp(60px, 18vw, 96px); }
  .hero__lead { font-size: 16.5px; margin-top: 18px; }
  .ctas { margin-top: 24px; }
  .ctas .btn { flex: 1 1 auto; }
  .scroll-hint { display: none; }
  .poster, [dir="rtl"] .poster { left: 50%; }
  .h2 { font-size: clamp(34px, 10vw, 48px); }
  :root:lang(ar) .h2 { font-size: clamp(28px, 8.4vw, 40px); }
  .lede { font-size: 16px; }
  .stats { gap: 16px 26px; margin-top: 26px; padding-top: 20px; }
  .strip { gap: 12px 22px; }
  .facts { grid-template-columns: minmax(0, 1fr); }
  .notes li { grid-template-columns: minmax(0, 1fr); }
  .swatches { gap: 14px; }
  .swatches li { width: 74px; }
  .sw { width: 54px; height: 54px; }
  .card { padding: 14px; }
  .card__body { grid-template-columns: minmax(0, 1fr); }
  .results__list button { grid-template-columns: 48px minmax(0, 1fr) auto 10px; gap: 10px; }
  .field--inline select { min-width: 0; flex: 1; }
  .speclist div { grid-template-columns: minmax(0, 1fr); }
  .why { grid-template-columns: minmax(0, 1fr); }
  .timeline { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 22px; }
  .gallery .wide { padding: 20px 16px; border-radius: 20px; }
  .gal { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .gal__cell--wide { grid-row: span 1; aspect-ratio: 16 / 10; }
  .gal__cap { opacity: 1; padding-top: 22px; font-size: 11.5px; }
  .footer__grid { grid-template-columns: minmax(0, 1fr); }
  .offer__sheet { padding: 20px 18px 6px; }
  .offer__grid { grid-template-columns: minmax(0, 1fr); }
  .offer__actions { padding: 12px 18px 16px; }
  .lightbox figure { padding: 60px 12px 90px; }
  .lightbox__nav { top: auto; bottom: 24px; transform: none; }
  .dock {
    position: fixed; inset: auto 0 0; z-index: 17; display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 10px 84px 10px 16px; padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px));
    background: var(--header); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); border-top: 1px solid var(--line); color: var(--fg);
    transform: translateY(110%); transition: transform .45s var(--ease);
  }
  [dir="rtl"] .dock { padding: 10px 16px 10px 84px; padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px)); }
  .dock.is-on { transform: none; }
  .dock__price small { display: block; font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
  :root:lang(ar) .dock__price small { letter-spacing: 0; font-size: 12px; }
  .dock__price b { font: 600 16px/1.2 var(--sans); }
  .dock.is-on ~ .wa { bottom: calc(10px + env(safe-area-inset-bottom, 0px)); }
  .tab { min-height: 40px; padding: 0 14px; font-size: 13.5px; }
  .plan-svg { max-width: 320px; }
  .specs { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 20px; }
  .specs div:last-child { grid-column: 1 / -1; }
  .amen { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .steps { gap: 10px; }
  .steps b { font-size: 40px; }
  .form { grid-template-columns: minmax(0, 1fr); }
  .form .btn { width: 100%; }
  .footer__legal { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 20px; }
  .wa { width: 52px; height: 52px; right: 16px; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); }
  [dir="rtl"] .wa { right: auto; left: 16px; }
}
@media (max-width: 380px) {
  .header .btn--sm { padding: 0 12px; font-size: 12px; }
  .lang { font-size: 13px; }
}

/* ---------- Reduced motion ---------- */
.reduced *, .reduced *::before, .reduced *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
/* calm mode: the 3D view changes behind a quick fade instead of a camera flight */
.reduced .scene, .reduced .labels { transition: opacity .4s ease !important; }
.reduced .poster { transition: opacity .5s ease, visibility 0s .5s !important; }
.reduced.is-cut .scene, .reduced.is-cut .labels { opacity: 0; transition-duration: .18s !important; }
@media (prefers-reduced-motion: reduce) {
  html:not(.js) *, html:not(.js) *::before, html:not(.js) *::after { animation: none !important; transition-duration: .001ms !important; }
}
