/* SARKIN skins demo — shared design system.
   Two themes on <body>: .theme-editorial (warm ivory) and .theme-dark (space luxury).
   Tokens follow the Polsia design language (ivory/ink/taupe, Cormorant Garamond + Inter)
   with the red chrysanthemum as the sole hot accent. */

:root {
  --ivory: #fafaf8;
  --ink: #1a1a1a;
  --taupe: #8b7355;
  --taupe-soft: #e0ddd7;
  --chrys: #c34235;            /* red chrysanthemum */
  --space: #04060a;
  --space-ink: #f4f1ea;
  --gold: #c9a24b;
  --gold-2: #e8cf94;
  --serif: "Cormorant Garamond", ui-serif, Georgia, serif;
  --sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { font-family: var(--sans); line-height: 1.6; -webkit-font-smoothing: antialiased; }
img { max-width: 100%; display: block; }
a { color: inherit; }

/* ---------- theme: editorial (warm) ---------- */
body.theme-editorial { background: var(--ivory); color: var(--ink); }
.theme-editorial .section-label { color: var(--taupe); }
.theme-editorial .rule { background: linear-gradient(90deg, var(--taupe), transparent); }
.theme-editorial .card { border: 1px solid var(--taupe-soft); background: #fff; }
.theme-editorial .band { background: var(--ink); color: var(--ivory); }
.theme-editorial .accent { color: var(--chrys); }

/* ---------- theme: dark (space luxury) ---------- */
body.theme-dark { background: var(--space); color: var(--space-ink); }
.theme-dark .section-label { color: var(--gold-2); }
.theme-dark .rule { background: linear-gradient(90deg, var(--gold), transparent); }
.theme-dark .card { border: 1px solid rgba(201, 162, 75, .22); background: rgba(255, 255, 255, .02); }
.theme-dark .band { background: rgba(201, 162, 75, .07); color: var(--gold-2); }
.theme-dark .accent { color: var(--gold-2); }
.theme-dark .content-sections { position: relative; z-index: 2; background: var(--space); }

/* ---------- shared layout primitives ---------- */
.container { max-width: 1120px; margin: 0 auto; padding: 0 clamp(20px, 4vw, 48px); }
section { padding: clamp(56px, 9vw, 128px) 0; }
.section-label { font-size: 11px; letter-spacing: .34em; text-transform: uppercase; margin-bottom: 18px; }
.section-title { font-family: var(--serif); font-weight: 500; font-size: clamp(30px, 4.2vw, 52px); line-height: 1.12; letter-spacing: -.01em; max-width: 21em; }
.rule { height: 1px; width: 64px; margin: 26px 0; }
.grid-2 { display: grid; grid-template-columns: minmax(160px, 1fr) 2.6fr; gap: clamp(24px, 5vw, 72px); align-items: start; }

/* nav */
.demo-nav { position: fixed; top: 0; left: 0; right: 0; z-index: 60; display: flex; align-items: center; justify-content: space-between; padding: 18px clamp(20px, 4vw, 44px); backdrop-filter: blur(10px); transition: background .4s; }
.theme-editorial .demo-nav { background: rgba(250, 250, 248, .82); border-bottom: 1px solid var(--taupe-soft); }
.theme-dark .demo-nav { background: rgba(4, 6, 10, .55); border-bottom: 1px solid rgba(201, 162, 75, .15); }
.demo-nav .wm { display: flex; align-items: center; gap: 10px; font-family: var(--serif); font-weight: 600; letter-spacing: .3em; font-size: 15px; text-decoration: none; }
.demo-nav .wm img { width: 26px; height: auto; }
.demo-nav .links { display: flex; gap: clamp(12px, 2.5vw, 28px); font-size: 11px; letter-spacing: .18em; text-transform: uppercase; }
.demo-nav .links a { text-decoration: none; opacity: .75; } .demo-nav .links a:hover { opacity: 1; }
@media (max-width: 720px) { .demo-nav .links { display: none; } }

/* editorial hero */
.ed-hero { min-height: 92vh; display: flex; flex-direction: column; justify-content: center; padding-top: 120px; }
.ed-hero .h-title { font-family: var(--serif); font-weight: 500; font-size: clamp(56px, 11vw, 150px); line-height: .95; letter-spacing: -.02em; }
.ed-hero .h-title .accent-dot { color: var(--chrys); }
.ed-hero .h-tag { margin-top: 34px; font-family: var(--serif); font-style: italic; font-size: clamp(19px, 2.4vw, 27px); color: var(--taupe); }
.ed-hero .h-sub { margin-top: 22px; max-width: 620px; font-size: 15.5px; color: #444; }
.ed-hero .h-quote { margin-top: 38px; max-width: 560px; font-family: var(--serif); font-size: clamp(18px, 2vw, 22px); line-height: 1.45; border-left: 2px solid var(--chrys); padding-left: 22px; }
.ed-hero .h-cats { margin-top: 44px; font-size: 11px; letter-spacing: .22em; text-transform: uppercase; color: var(--taupe); display: flex; flex-wrap: wrap; gap: 8px 14px; }
.ed-hero .h-proof { margin-top: 30px; max-width: 560px; font-size: 13.5px; color: #666; border-top: 1px solid var(--taupe-soft); padding-top: 18px; }

/* about */
.about-grid img { width: min(240px, 60vw); border-radius: 2px; filter: saturate(.92); }
.about-copy p { max-width: 640px; font-size: 16.5px; margin-top: 18px; color: inherit; }
.theme-editorial .about-copy p { color: #3a352e; }

/* marquee */
.marquee { overflow: hidden; white-space: nowrap; padding: 22px 0; }
.marquee .track { display: inline-block; animation: marq 46s linear infinite; font-family: var(--serif); font-size: clamp(20px, 2.6vw, 30px); letter-spacing: .06em; }
.marquee .track span { margin: 0 18px; }
.marquee .dot { color: var(--chrys); }
.theme-dark .marquee .dot { color: var(--gold); }
@keyframes marq { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .marquee .track { animation: none; } }

/* services */
.services-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); gap: 22px; margin-top: 44px; }
.service-card { padding: 30px 28px 26px; position: relative; }
.service-card .n { font-family: var(--serif); font-size: 15px; color: var(--chrys); letter-spacing: .1em; }
.theme-dark .service-card .n { color: var(--gold); }
.service-card h3 { font-family: var(--serif); font-weight: 600; font-size: 23px; line-height: 1.2; margin: 12px 0 10px; }
.service-card .d { font-size: 13.5px; opacity: .82; }
.service-card ul { margin-top: 14px; list-style: none; font-size: 12.5px; opacity: .66; }
.service-card ul li { padding: 3px 0 3px 14px; position: relative; }
.service-card ul li::before { content: "·"; position: absolute; left: 0; color: var(--chrys); }
.theme-dark .service-card ul li::before { color: var(--gold); }
.panel-quote { display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; position: relative; overflow: hidden; min-height: 260px; padding: 30px; }
.panel-quote .wm-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .13; }
.panel-quote p { position: relative; }
.panel-quote .jp { font-size: 19px; letter-spacing: .2em; }
.panel-quote .ro { font-family: var(--serif); font-style: italic; font-size: 14px; margin-top: 12px; opacity: .75; }
.panel-quote .en { font-size: 12.5px; margin-top: 10px; opacity: .6; }
.panel-quote .by { font-size: 11px; letter-spacing: .18em; margin-top: 12px; opacity: .5; }

/* difference band */
.difference { text-align: center; }
.difference .lines p { font-family: var(--serif); font-size: clamp(19px, 2.6vw, 27px); line-height: 1.5; margin-top: 20px; max-width: 34em; margin-left: auto; margin-right: auto; }
.difference .lines p:first-child { font-weight: 600; }

/* work */
.work-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 22px; margin-top: 44px; }
.work-item { padding: 28px 26px 24px; }
.work-item .tag { font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase; color: var(--taupe); }
.theme-dark .work-item .tag { color: var(--gold-2); }
.work-item h3 { font-family: var(--serif); font-weight: 600; font-size: 21.5px; line-height: 1.25; margin: 12px 0 10px; }
.work-item p { font-size: 13.5px; opacity: .8; }
.work-item.hl { outline: 2px solid var(--chrys); outline-offset: 3px; }
.theme-dark .work-item.hl { outline-color: var(--gold); }

/* clients band */
.clients-band { padding: 34px 0; }
.clients-band .label { text-align: center; font-size: 10.5px; letter-spacing: .3em; text-transform: uppercase; opacity: .65; margin-bottom: 14px; }
.clients-band .marquee .track { font-family: var(--sans); font-size: 13.5px; letter-spacing: .12em; text-transform: uppercase; opacity: .85; }

/* publication */
.publication { display: flex; flex-wrap: wrap; gap: 20px 46px; align-items: baseline; padding: 34px 30px; }
.publication .year { font-family: var(--serif); font-size: 40px; color: var(--taupe); }
.theme-dark .publication .year { color: var(--gold); }
.publication .pi { flex: 1 1 380px; }
.publication h3 { font-family: var(--serif); font-size: 26px; font-weight: 600; }
.publication p { font-size: 13.5px; margin-top: 8px; opacity: .8; }
.publication a { display: inline-block; margin-top: 14px; font-size: 12px; letter-spacing: .16em; text-transform: uppercase; text-decoration: none; border-bottom: 1px solid var(--chrys); padding-bottom: 2px; }

/* approach */
.approach-title { font-family: var(--serif); font-size: clamp(44px, 6.5vw, 84px); font-weight: 500; }
.approach-sub { font-family: var(--serif); font-style: italic; font-size: clamp(18px, 2.4vw, 24px); color: var(--taupe); margin-top: 6px; }
.theme-dark .approach-sub { color: var(--gold-2); }
.approach-copy p { max-width: 620px; font-size: 16px; margin-top: 18px; }

/* experiences */
.exp-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 22px; margin-top: 44px; }
.exp-card { text-decoration: none; overflow: hidden; display: flex; flex-direction: column; transition: transform .35s; }
.exp-card:hover { transform: translateY(-4px); }
.exp-card .img { aspect-ratio: 16/10; background: linear-gradient(140deg, #1c2c4a, #04060a); overflow: hidden; }
.exp-card .img img { width: 100%; height: 100%; object-fit: cover; }
.exp-card .body { padding: 18px 20px 22px; }
.exp-card .status { font-size: 10px; letter-spacing: .24em; text-transform: uppercase; color: var(--chrys); }
.theme-dark .exp-card .status { color: var(--gold); }
.exp-card h3 { font-family: var(--serif); font-size: 22px; font-weight: 600; margin-top: 8px; }
.exp-card .city { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; opacity: .6; margin-top: 2px; }
.exp-card p { font-size: 13px; opacity: .75; margin-top: 10px; }

/* philanthropy */
.phil-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 22px; margin-top: 44px; }
.phil-item { padding: 26px 24px; }
.phil-item .loc { font-size: 10.5px; letter-spacing: .2em; text-transform: uppercase; opacity: .6; }
.phil-item h3 { font-family: var(--serif); font-size: 21px; font-weight: 600; margin: 10px 0 8px; }
.phil-item p { font-size: 13.5px; opacity: .8; }
.film-block { margin-top: 48px; }
.film-block .cap { font-size: 13px; opacity: .7; margin: 6px 0 16px; max-width: 560px; }
.yt-facade { position: relative; aspect-ratio: 16/9; max-width: 760px; cursor: pointer; background: #000; }
.yt-facade img { width: 100%; height: 100%; object-fit: cover; opacity: .85; }
.yt-facade .play { position: absolute; inset: 0; margin: auto; width: 68px; height: 48px; background: rgba(195, 66, 53, .92); border-radius: 10px; display: flex; align-items: center; justify-content: center; }
.yt-facade .play::after { content: ""; border-style: solid; border-width: 10px 0 10px 18px; border-color: transparent transparent transparent #fff; }
.yt-facade iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* insights */
.insight-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 22px; margin-top: 44px; }
.insight-card { padding: 26px 24px; }
.insight-card .tag { font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase; color: var(--taupe); }
.theme-dark .insight-card .tag { color: var(--gold-2); }
.insight-card h3 { font-family: var(--serif); font-size: 21px; font-weight: 600; margin: 12px 0 8px; line-height: 1.3; }
.insight-card p { font-size: 13.5px; opacity: .78; }

/* contact + footer */
.contact-title { font-family: var(--serif); font-size: clamp(34px, 5vw, 58px); font-weight: 600; }
.contact-copy p { max-width: 560px; font-size: 16px; margin-top: 16px; }
.contact-details { margin-top: 30px; display: flex; flex-direction: column; gap: 8px; font-family: var(--serif); font-size: clamp(20px, 2.6vw, 27px); }
.contact-details a { text-decoration: none; border-bottom: 1px solid var(--chrys); width: fit-content; }
.contact-locs { margin-top: 26px; display: flex; gap: 22px; flex-wrap: wrap; font-size: 11px; letter-spacing: .22em; text-transform: uppercase; opacity: .65; }
.demo-footer { padding: 40px 0 56px; font-size: 11px; letter-spacing: .18em; text-transform: uppercase; opacity: .6; display: flex; flex-wrap: wrap; gap: 12px 30px; }
.demo-footer a { text-decoration: none; }

/* ---------- globe front-door shared ---------- */
.globe-stage { position: relative; height: 100vh; overflow: hidden; background: var(--space); }
.globe-stage .cesium-holder, .globe-stage .poster { position: absolute; inset: 0; }
.globe-stage .poster img { width: 100%; height: 100%; object-fit: cover; opacity: .9; }
.globe-vignette { position: absolute; inset: 0; pointer-events: none; z-index: 3;
  background: radial-gradient(120% 90% at 50% 45%, transparent 55%, rgba(0,0,0,.6) 100%),
              linear-gradient(to bottom, rgba(0,0,0,.5), transparent 24%, transparent 70%, rgba(4,6,10,1)); }
.globe-ui { position: absolute; inset: 0; z-index: 4; display: flex; flex-direction: column; justify-content: flex-end; padding: 0 clamp(20px, 4vw, 48px) 46px; pointer-events: none; }
.globe-ui .gtitle { font-family: var(--serif); font-weight: 600; letter-spacing: .1em; font-size: clamp(30px, 5vw, 54px); background: linear-gradient(180deg, var(--gold-2), var(--gold)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.globe-ui .gsub { font-size: 11px; letter-spacing: .34em; text-transform: uppercase; color: var(--gold-2); margin-top: 8px; }
.city-menu { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; pointer-events: auto; }
.city-menu button { font: 11px/1 var(--sans); letter-spacing: .2em; text-transform: uppercase; color: var(--gold-2); background: rgba(4,6,10,.55); border: 1px solid rgba(201,162,75,.4); padding: 12px 18px; cursor: pointer; transition: all .3s; }
.city-menu button:hover, .city-menu button.active { background: rgba(201,162,75,.16); border-color: var(--gold); color: #fff; }
.globe-loading { position: absolute; inset: 0; z-index: 5; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 20px; background: var(--space); transition: opacity 1.2s; }
.globe-loading.gone { opacity: 0; pointer-events: none; }
.globe-loading img { width: 64px; filter: drop-shadow(0 4px 22px rgba(201,162,75,.35)); animation: pulse 2.4s ease-in-out infinite; }
.globe-loading .gl-brand { font-family: var(--serif); font-weight: 600; letter-spacing: .4em; font-size: clamp(22px, 4vw, 34px); color: var(--space-ink); padding-left: .4em; }
.globe-loading .gl-note { font-size: 10.5px; letter-spacing: .3em; text-transform: uppercase; color: #8a857b; }
@keyframes pulse { 0%, 100% { opacity: .75; transform: scale(1); } 50% { opacity: 1; transform: scale(1.06); } }
.city-panel { position: absolute; right: clamp(16px, 3vw, 40px); top: 90px; z-index: 6; width: min(400px, 86vw); max-height: calc(100vh - 170px); overflow: auto; background: rgba(6, 9, 15, .92); border: 1px solid rgba(201,162,75,.35); padding: 26px 26px 22px; backdrop-filter: blur(8px); transform: translateX(24px); opacity: 0; pointer-events: none; transition: all .5s; }
.city-panel.open { transform: none; opacity: 1; pointer-events: auto; }
.city-panel h3 { font-family: var(--serif); font-size: 27px; font-weight: 600; color: var(--gold-2); }
.city-panel .sub { font-size: 10.5px; letter-spacing: .3em; text-transform: uppercase; color: var(--gold); margin-top: 4px; }
.city-panel .case { margin-top: 18px; padding-top: 16px; border-top: 1px solid rgba(201,162,75,.2); }
.city-panel .case h4 { font-family: var(--serif); font-size: 17px; font-weight: 600; }
.city-panel .case p { font-size: 12.5px; opacity: .75; margin-top: 6px; }
.city-panel .exp-link { display: inline-block; margin-top: 16px; font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--gold-2); text-decoration: none; border-bottom: 1px solid var(--gold); padding-bottom: 2px; }
.city-panel .close { position: absolute; top: 12px; right: 14px; background: none; border: none; color: var(--gold-2); font-size: 18px; cursor: pointer; }
.scroll-cue { position: absolute; bottom: 14px; left: 50%; transform: translateX(-50%); z-index: 4; font-size: 10px; letter-spacing: .3em; text-transform: uppercase; color: #b9b2a4; animation: pulse 3s infinite; }

/* globe-intro overlay */
.intro-overlay { position: fixed; inset: 0; z-index: 80; background: var(--space); transition: opacity 1.4s; }
.intro-overlay.gone { opacity: 0; pointer-events: none; }
.intro-skip { position: absolute; right: clamp(18px, 3vw, 40px); bottom: 32px; z-index: 85; font: 11px/1 var(--sans); letter-spacing: .26em; text-transform: uppercase; color: var(--gold-2); background: rgba(4,6,10,.5); border: 1px solid rgba(201,162,75,.5); padding: 13px 22px; cursor: pointer; }
.intro-skip:hover { background: rgba(201,162,75,.18); }
.intro-title { position: absolute; left: 0; right: 0; top: 44%; z-index: 84; text-align: center; pointer-events: none; }
.intro-title .t1 { font-family: var(--serif); font-weight: 700; text-transform: uppercase; font-size: clamp(34px, 7.5vw, 92px); letter-spacing: .12em; line-height: 1; background: linear-gradient(180deg, var(--gold-2), var(--gold)); -webkit-background-clip: text; background-clip: text; color: transparent; filter: drop-shadow(0 2px 30px rgba(201,162,75,.35)); }
.intro-title .t2 { margin-top: 14px; font-size: 11px; letter-spacing: .5em; text-transform: uppercase; color: var(--gold-2); opacity: .85; }

@media (max-width: 720px) {
  .grid-2 { grid-template-columns: 1fr; }
  .city-panel { top: auto; bottom: 0; right: 0; left: 0; width: auto; max-height: 60vh; transform: translateY(24px); }
  .city-panel.open { transform: none; }
}
