/* ==========================================================
   COCOBERRY — Pre-Booking Site
   Tokens
   ========================================================== */
:root{
  --bg:            #06060a;
  --bg-elev:       #0c0d15;
  --ink-100:       #f4f3fb;
  --ink-300:       #c7c8da;
  --ink-500:       #8d8fa8;
  --ink-700:       #5c5e78;

  --violet-300:    #b6ade8;
  --violet-500:    #8b7fd6;
  --violet-700:    #59509c;
  --violet-900:    #211c40;

  --beam-blue:     #9fd4ff;
  --beam-blue-dim: #4d6fa8;

  --glass-fill:    rgba(255,255,255,0.045);
  --glass-fill-hi: rgba(255,255,255,0.09);
  --glass-border:  rgba(255,255,255,0.14);
  --glass-border-hi: rgba(200,190,255,0.35);

  --shadow-glow:   0 0 60px rgba(139,127,214,0.25);
  --shadow-soft:   0 20px 60px rgba(0,0,0,0.55);

  --font-display:  'Cormorant Garamond', serif;
  --font-label:    'Cinzel', serif;
  --font-body:     'Jost', sans-serif;

  --radius-lg: 28px;
  --radius-md: 18px;
  --radius-sm: 12px;

  --nav-h: 82px;

  --ease: cubic-bezier(.16,.8,.24,1);
}

*,*::before,*::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
html,body{ height:100%; }

body{
  margin:0;
  background: var(--bg);
  color: var(--ink-100);
  font-family: var(--font-body);
  font-weight:300;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}

a{ color:inherit; text-decoration:none; }
ul{ list-style:none; margin:0; padding:0; }
button{ font-family:inherit; }

::selection{ background: var(--violet-500); color:#fff; }

/* ---------- backdrop layers ---------- */
#starfield{
  position:fixed; inset:0; width:100%; height:100%;
  z-index:0; pointer-events:none;
}

.grain{
  position:fixed; inset:0; z-index:1; pointer-events:none;
  opacity:.035; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.nebula-glow{
  position:fixed; z-index:0; pointer-events:none; border-radius:50%;
  filter: blur(120px); opacity:.35;
}
.nebula-glow--a{
  width:640px; height:640px; top:-220px; right:-180px;
  background: radial-gradient(circle, var(--violet-700), transparent 70%);
}
.nebula-glow--b{
  width:520px; height:520px; bottom:-260px; left:-200px;
  background: radial-gradient(circle, var(--beam-blue-dim), transparent 70%);
}

main, header, footer, section{ position:relative; z-index:2; }

/* ==========================================================
   Typography helpers
   ========================================================== */
.eyebrow{
  font-family: var(--font-label);
  font-size: .72rem;
  letter-spacing: .32em;
  text-transform: uppercase;
  color: var(--violet-300);
  margin: 0 0 14px;
  text-align:center;
}

.section-title{
  font-family: var(--font-display);
  font-weight:500;
  font-size: clamp(1.9rem, 3.4vw, 3rem);
  line-height:1.15;
  margin: 0 0 16px;
  text-align:center;
  color: var(--ink-100);
}

.section-sub{
  font-size: 1rem;
  color: var(--ink-500);
  text-align:center;
  max-width: 560px;
  margin: 0 auto;
  line-height:1.7;
}

.section-head{ padding: 0 24px 56px; }

/* ==========================================================
   Glass + buttons
   ========================================================== */
.glass-card{
  background: linear-gradient(180deg, var(--glass-fill-hi), var(--glass-fill));
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-lg);
  backdrop-filter: blur(22px) saturate(140%);
  -webkit-backdrop-filter: blur(22px) saturate(140%);
  box-shadow: var(--shadow-soft), inset 0 1px 0 rgba(255,255,255,0.08);
}

.btn{
  display:inline-flex; align-items:center; gap:12px;
  padding: 15px 26px;
  border-radius: 999px;
  font-family: var(--font-body);
  font-size: .92rem;
  font-weight:500;
  letter-spacing:.01em;
  border:1px solid var(--glass-border);
  cursor:pointer;
  transition: transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease), background .35s var(--ease);
  white-space:nowrap;
}
.btn .icon{ width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0; }
.btn .icon--chev{ width:16px; height:16px; margin-left:2px; transition: transform .3s var(--ease); }
.btn:hover .icon--chev{ transform: translateX(4px); }

.btn--primary{
  background: linear-gradient(180deg, rgba(182,173,232,.16), rgba(139,127,214,.08));
  color: var(--ink-100);
  box-shadow: 0 0 0 rgba(139,127,214,0);
}
.btn--primary:hover{
  border-color: var(--glass-border-hi);
  box-shadow: 0 0 40px rgba(139,127,214,.35), inset 0 1px 0 rgba(255,255,255,.15);
  transform: translateY(-2px);
}

.btn--ghost{
  background: transparent;
  padding: 11px 22px;
  font-size:.85rem;
  color: var(--ink-300);
}
.btn--ghost:hover{ border-color: var(--glass-border-hi); color:#fff; box-shadow: 0 0 24px rgba(139,127,214,.25); }

.spark{ color: var(--violet-300); }
.spark--sm{ font-size:.8em; }

/* ==========================================================
   Nav
   ========================================================== */
.nav{
  position: fixed; top:0; left:0; right:0; z-index:200;
  padding: 18px 0;
  background: linear-gradient(180deg, rgba(6,6,10,.75), rgba(6,6,10,0));
  backdrop-filter: blur(10px);
  transition: background .4s var(--ease), border-color .4s var(--ease);
  border-bottom: 1px solid transparent;
}
.nav--scrolled{
  background: rgba(8,8,14,.82);
  border-bottom-color: var(--glass-border);
}
.nav__inner{
  max-width:1240px; margin:0 auto; padding:0 32px;
  display:flex; align-items:center; justify-content:space-between; gap:24px;
}

.brand{ display:flex; align-items:center; gap:12px; }
.brand__mark{
  width:38px; height:38px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  overflow:hidden;
  background: radial-gradient(circle at 30% 30%, rgba(182,173,232,.5), rgba(20,18,40,.6));
  border: 1px solid var(--glass-border-hi);
  box-shadow: 0 0 18px rgba(139,127,214,.4);
  flex-shrink:0;
}
.brand__logo{ width:100%; height:100%; object-fit:cover; display:block; }
.brand__text{ display:flex; flex-direction:column; line-height:1.15; }
.brand__name{ font-family: var(--font-display); font-size:1.15rem; letter-spacing:.02em; }
.brand__tag{ font-family: var(--font-label); font-size:.52rem; letter-spacing:.22em; text-transform:uppercase; color: var(--ink-500); }

.nav__links{ display:flex; gap:36px; font-size:.88rem; color: var(--ink-300); }
.nav__links a{ position:relative; transition:color .25s; }
.nav__links a:hover{ color:#fff; }
.nav__links a::after{
  content:''; position:absolute; left:0; bottom:-6px; width:0; height:1px;
  background: var(--violet-300); transition: width .3s var(--ease);
}
.nav__links a:hover::after{ width:100%; }

/* ---- hamburger (mobile) ---- */
.nav__burger{
  display:none;
  width:38px; height:38px;
  border:1px solid var(--glass-border);
  border-radius:10px;
  background: var(--glass-fill);
  flex-direction:column; align-items:center; justify-content:center; gap:5px;
  cursor:pointer;
  flex-shrink:0;
}
.nav__burger span{
  width:16px; height:1.5px; background: var(--ink-100);
  transition: transform .35s var(--ease), opacity .3s var(--ease);
}
.nav__burger.is-open span:nth-child(1){ transform: translateY(6.5px) rotate(45deg); }
.nav__burger.is-open span:nth-child(2){ opacity:0; }
.nav__burger.is-open span:nth-child(3){ transform: translateY(-6.5px) rotate(-45deg); }

.nav__mobile{
  display:none;
  position:absolute; top:100%; left:0; right:0;
  flex-direction:column;
  gap:4px;
  margin: 0 16px;
  padding: 0 18px;
  max-height:0; overflow:hidden;
  opacity:0;
  border-radius: var(--radius-md);
  background: rgba(10,10,18,.92);
  backdrop-filter: blur(20px);
  border: 1px solid transparent;
  transition: opacity .3s var(--ease), max-height .4s var(--ease), border-color .3s var(--ease);
}
.nav__mobile.is-open{
  padding: 14px 18px 20px;
  opacity:1;
  border-color: var(--glass-border);
  box-shadow: var(--shadow-soft);
}
.nav__mobile a{
  padding: 14px 4px;
  font-size:.95rem;
  color: var(--ink-300);
  border-bottom: 1px solid var(--glass-border);
}
.nav__mobile a:last-child{ border-bottom:none; }
.nav__mobile-cta{
  justify-content:center;
  margin-top: 14px;
  border-bottom:none !important;
}

/* ==========================================================
   Hero
   ========================================================== */
.hero{
  min-height: 100svh;
  display:flex; flex-direction:column; justify-content:center;
  padding: calc(var(--nav-h) + 40px) 32px 40px;
}
.hero__inner{
  max-width:1240px; margin:0 auto; width:100%;
  display:grid; grid-template-columns: 1.05fr .95fr;
  gap: 40px; align-items:center;
}

.badge{
  display:inline-flex; align-items:center; gap:10px;
  padding: 9px 20px;
  border:1px solid var(--glass-border);
  border-radius:999px;
  font-family: var(--font-label);
  font-size:.68rem; letter-spacing:.28em; text-transform:uppercase;
  color: var(--ink-300);
  background: var(--glass-fill);
  margin-bottom: 26px;
}
.badge__dot{
  width:6px; height:6px; border-radius:50%;
  background: var(--beam-blue);
  box-shadow: 0 0 10px 2px var(--beam-blue);
}

.hero__title{ margin:0 0 24px; }
.hero__title .line{
  display:block;
  font-family: var(--font-display);
  font-weight:500;
  font-size: clamp(3rem, 6.4vw, 5.6rem);
  line-height: .98;
  letter-spacing:-.01em;
  background: linear-gradient(180deg, var(--ink-100) 30%, var(--ink-500));
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.line--accent{
  background: linear-gradient(120deg, var(--violet-300), var(--ink-100) 45%, var(--violet-500));
  -webkit-background-clip:text; background-clip:text; color:transparent;
  font-style:italic;
}

.hero__sub{
  font-size:1.15rem; line-height:1.6;
  color: var(--ink-300);
  max-width: 460px;
  margin: 0 0 34px;
}

.hero__actions{ margin-bottom: 26px; }

.hero__footnote{
  font-family: var(--font-label);
  font-size:.62rem; letter-spacing:.24em; text-transform:uppercase;
  color: var(--ink-700);
}

/* ---- hero visual / signature statue ---- */
.hero__visual{
  position:relative;
  height: 560px;
  display:flex; align-items:center; justify-content:center;
}

.statue{ position:relative; width:100%; height:100%; display:flex; align-items:center; justify-content:center; }

.statue__core{
  width: 280px; height: 280px; border-radius:50%;
  background:
    radial-gradient(
      circle at 68% 72%,
      rgba(0, 0, 0, 0.95) 0%,
      transparent 52%
    ),
    radial-gradient(
      circle at 28% 22%,
      #35354d 0%,
      #202238 34%,
      #131625 65%,
      #080a12 100%
    );

}

.statue__logo{
  position:absolute; z-index:2;
  top:50%; left:50%; transform: translate(-50%, -50%);
  width: 280px; height:280px;
  object-fit: cover;
  border-radius:50%;
  border: 1px solid rgba(244,243,251,.35);
  box-shadow: 0 0 40px rgba(159,212,255,.35), 0 0 90px rgba(139,127,214,.35);
}

.statue__ring{
  position:absolute; border-radius:50%;
  border: 1px solid var(--glass-border);
}
.statue__ring--1{ width:400px; height:400px; animation: spin 40s linear infinite; }
.statue__ring--2{ width:480px; height:480px; border-style:dashed; opacity:.4; animation: spin 70s linear infinite reverse; }

@keyframes spin{ to{ transform: rotate(360deg); } }

.statue__beam{
  position:absolute; width: 130%; height: 120px; left:-15%; top:50%;
  transform: translateY(-50%);
  overflow: visible;
}
.beam-line{
  stroke: var(--beam-blue);
  stroke-width: 2;
  filter: drop-shadow(0 0 12px var(--beam-blue)) drop-shadow(0 0 26px rgba(159,212,255,.6));
  stroke-dasharray: 6 900;
  stroke-dashoffset: 0;
}

.statue__glyph-jp{
  position:absolute; right:-6%; top:38%;
  font-family: var(--font-display);
  font-size: 2.6rem; letter-spacing:.3em;
  color: rgba(244,243,251,.14);
  writing-mode: vertical-rl;
}
.statue__glyph-name{
  position:absolute; right:-2%; bottom:8%;
  font-family: var(--font-label);
  font-size:.6rem; letter-spacing:.3em; text-transform:uppercase;
  color: rgba(244,243,251,.22);
}

.window-card{
  position:absolute; right:-8px; bottom:0;
  padding: 22px 26px;
  width: 240px;
}
.window-card__eyebrow{ margin:0 0 8px; font-size:.72rem; color: var(--ink-500); }
.window-card__status{
  margin:0 0 10px; font-family: var(--font-display); font-size:1.5rem; font-weight:600;
  color: var(--ink-100); display:flex; align-items:center; gap:8px;
}
.window-card__note{ margin:0; font-size:.82rem; line-height:1.55; color: var(--ink-500); }

.scroll-cue{
  position:absolute; left:50%; bottom:26px; transform:translateX(-50%);
  display:flex; flex-direction:column; align-items:center; gap:8px;
  font-size:.65rem; letter-spacing:.24em; text-transform:uppercase; color: var(--ink-700);
}
.scroll-cue__line{ width:1px; height:34px; background: linear-gradient(180deg, var(--ink-500), transparent); }

/* ==========================================================
   Marquee
   ========================================================== */
.marquee{
  border-top: 1px solid var(--glass-border);
  border-bottom: 1px solid var(--glass-border);
  padding: 20px 0;
  overflow:hidden;
  background: linear-gradient(180deg, rgba(255,255,255,.02), transparent);
}
.marquee__track{ display:flex; width:max-content; }
.marquee__group{ display:flex; gap:16px; padding-right:16px; }
.marquee-pill{
  display:flex; align-items:center; gap:8px;
  padding: 8px 18px;
  border:1px solid var(--glass-border);
  border-radius:999px;
  font-size:.78rem; color: var(--ink-500);
  white-space:nowrap;
  background: var(--glass-fill);
}
.marquee-pill .spark{ font-size:.7rem; }

/* ==========================================================
   Plan / Pricing
   ========================================================== */
.plan{ padding: 130px 24px; }
.plan__card{
  position:relative;
  max-width: 620px; margin:0 auto;
  padding: 46px 44px 40px;
  overflow:hidden;
}
.plan__glow{
  position:absolute; top:-120px; left:50%; transform:translateX(-50%);
  width:360px; height:240px; border-radius:50%;
  background: radial-gradient(circle, rgba(139,127,214,.45), transparent 70%);
  filter: blur(40px); pointer-events:none;
}
.plan__badge{
  display:inline-block; font-family: var(--font-label); font-size:.66rem;
  letter-spacing:.24em; text-transform:uppercase; color: var(--violet-300);
  padding: 6px 14px; border:1px solid var(--glass-border); border-radius:999px;
  margin-bottom:22px;
}
.plan__price{ display:flex; align-items:baseline; gap:8px; margin-bottom:14px; }
.plan__currency{ font-size:1.1rem; color: var(--ink-500); font-family: var(--font-body); }
.plan__amount{ font-family: var(--font-display); font-size: 4.4rem; line-height:1; font-weight:600;
  background: linear-gradient(120deg, var(--ink-100), var(--violet-300));
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.plan__period{ color: var(--ink-500); font-size:.95rem; }
.plan__desc{ color: var(--ink-500); max-width:420px; line-height:1.6; margin: 0 0 30px; }

.plan__list{
  display:grid; grid-template-columns: 1fr 1fr; gap: 14px 20px;
  margin-bottom: 38px;
  padding-top: 26px; border-top:1px solid var(--glass-border);
}
.plan__list li{
  display:flex; align-items:flex-start; gap:10px;
  font-size:.9rem; color: var(--ink-300); line-height:1.4;
}
.check{ width:16px; height:16px; margin-top:2px; flex-shrink:0; fill:none; stroke: var(--beam-blue); stroke-width:2; stroke-linecap:round; stroke-linejoin:round; filter: drop-shadow(0 0 6px rgba(159,212,255,.6)); }

.plan__cta{ width:100%; justify-content:center; }

/* ==========================================================
   Features — sliding-page carousel (3-up grid per page)
   ========================================================== */
.features{ padding: 40px 24px 100px; max-width:1240px; margin:0 auto; }

.features__carousel{
  position:relative;
  display:flex; align-items:center; gap:16px;
}

.features__viewport{
  flex:1; overflow:hidden;
  cursor: grab;
  touch-action: pan-y;
}
.features__viewport.is-dragging{ cursor: grabbing; }

.features__pages{
  display:flex;
  width:100%;
  will-change: transform;
}

.features__page{
  flex:0 0 100%;
  display:flex;
  gap:18px;
  padding: 4px 4px 10px;
}
.features__page.is-partial{ justify-content:center; }

.feature-card{
  flex: 1 1 0;
  min-width:0;
  padding: 30px 26px;
  border-radius: var(--radius-md);
  background: var(--glass-fill);
  border: 1px solid var(--glass-border);
  transition: transform .4s var(--ease), border-color .4s var(--ease), box-shadow .4s var(--ease), background .4s var(--ease);
}
.features__page.is-partial .feature-card{ flex: 0 1 320px; }

.feature-card:hover{
  transform: translateY(-6px);
  border-color: var(--glass-border-hi);
  background: var(--glass-fill-hi);
  box-shadow: 0 20px 50px rgba(0,0,0,.5), 0 0 30px rgba(139,127,214,.18);
}
.feature-card__icon{
  width:42px; height:42px; margin-bottom:18px;
  display:flex; align-items:center; justify-content:center;
  border-radius:11px;
  background: linear-gradient(180deg, rgba(182,173,232,.16), rgba(139,127,214,.05));
  border: 1px solid var(--glass-border);
  flex-shrink:0;
}
.feature-card__icon svg{ width:20px; height:20px; fill:none; stroke: var(--violet-300); stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.feature-card__title{ font-size:1.05rem; font-weight:500; color: var(--ink-100); margin: 0 0 10px; }
.feature-card__desc{ font-size:.86rem; color: var(--ink-500); line-height:1.6; margin:0; }

.features__nav{
  position:relative;
  width:44px; height:44px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  border-radius:50%;
  border:1px solid var(--glass-border);
  background: rgba(12,12,20,.7);
  backdrop-filter: blur(10px);
  color: var(--ink-100);
  cursor:pointer;
  transition: border-color .3s var(--ease), box-shadow .3s var(--ease), opacity .3s var(--ease);
}
.features__nav svg{ width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.features__nav:hover{ border-color: var(--glass-border-hi); box-shadow: 0 0 24px rgba(139,127,214,.3); }
.features__nav:disabled{ opacity:.3; cursor:default; box-shadow:none; }

.features__dots{
  display:flex; align-items:center; justify-content:center; gap:10px;
  margin-top: 30px;
}
.features__dot{
  width:8px; height:8px; border-radius:50%;
  background: var(--glass-border);
  border: none;
  cursor:pointer;
  padding:0;
  transition: background .3s var(--ease), transform .3s var(--ease), width .3s var(--ease);
}
.features__dot.is-active{
  width:24px; border-radius:5px;
  background: var(--violet-300);
  box-shadow: 0 0 10px rgba(182,173,232,.6);
}

/* ==========================================================
   Section divider ornament
   ========================================================== */
.divider{
  display:flex; align-items:center; justify-content:center; gap:18px;
  max-width: 640px; margin: 0 auto; padding: 0 24px;
}
.divider span{ flex:1; height:1px; background: linear-gradient(90deg, transparent, var(--glass-border), transparent); }
.divider i{
  font-style:normal; color: var(--violet-300); font-size:.8rem;
  filter: drop-shadow(0 0 6px rgba(182,173,232,.6));
}

/* ==========================================================
   CocoBerry AI section
   ========================================================== */
.ai{ padding: 110px 24px; max-width:1240px; margin:0 auto; }
.ai__inner{
  display:grid; grid-template-columns: 1.05fr .95fr;
  gap: 60px; align-items:center;
}

.ai__eyebrow{ text-align:left; margin-bottom:14px; }
.ai__title{
  font-family: var(--font-display); font-weight:500;
  font-size: clamp(2rem, 3.6vw, 3.2rem); line-height:1.12;
  margin: 0 0 20px; color: var(--ink-100);
}
.ai__title em{
  font-style:italic;
  background: linear-gradient(120deg, var(--violet-300), var(--ink-100) 45%, var(--violet-500));
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.ai__sub{
  font-size:1.05rem; line-height:1.7; color: var(--ink-500);
  max-width: 480px; margin: 0 0 28px;
}
.ai__list{ display:flex; flex-direction:column; gap:14px; margin: 0 0 34px; }
.ai__list li{ display:flex; align-items:flex-start; gap:12px; font-size:.95rem; color: var(--ink-300); }
.ai__list .check{ margin-top:3px; }

.ai__visual{ position:relative; display:flex; align-items:center; justify-content:center; min-height: 420px; }

.ai__orb{ position:relative; width:220px; height:220px; }
.ai__orb-core{
  position:absolute; inset:0; border-radius:50%;
  background: radial-gradient(circle at 38% 32%, rgba(230,228,250,.85), rgba(150,145,200,.3) 45%, rgba(20,18,36,0) 72%);
  filter: blur(2px);
  box-shadow: 0 0 100px rgba(159,212,255,.3), 0 0 180px rgba(139,127,214,.3);
  animation: ai-pulse 3.5s ease-in-out infinite;
}
@keyframes ai-pulse{ 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.06); } }

.ai__orb-ring{ position:absolute; border-radius:50%; border:1px solid var(--glass-border); }
.ai__orb-ring--1{ inset:-30px; animation: spin 30s linear infinite; }
.ai__orb-ring--2{ inset:-60px; border-style:dashed; opacity:.4; animation: spin 50s linear infinite reverse; }

.ai__orb-particles span{
  position:absolute; width:4px; height:4px; border-radius:50%;
  background: var(--beam-blue);
  box-shadow: 0 0 8px 2px rgba(159,212,255,.7);
  top:50%; left:50%;
}
.ai__orb-particles span:nth-child(1){ transform: translate(-90px, -40px); }
.ai__orb-particles span:nth-child(2){ transform: translate(100px, -20px); }
.ai__orb-particles span:nth-child(3){ transform: translate(-60px, 90px); }
.ai__orb-particles span:nth-child(4){ transform: translate(80px, 70px); }
.ai__orb-particles span:nth-child(5){ transform: translate(10px, -110px); }
.ai__orb-particles span:nth-child(6){ transform: translate(-110px, 20px); }

.ai__chat{
  position:absolute; left:50%; bottom:-10px; transform: translateX(-50%);
  width: min(320px, 90%);
  padding: 20px 20px;
  display:flex; flex-direction:column; gap:10px;
}
.ai__chat-msg{
  font-size:.82rem; line-height:1.5; padding: 10px 14px; border-radius: 14px;
  max-width: 88%;
}
.ai__chat-msg--user{
  align-self:flex-end;
  background: rgba(255,255,255,.06);
  border: 1px solid var(--glass-border);
  color: var(--ink-300);
  border-bottom-right-radius:4px;
}
.ai__chat-msg--bot{
  align-self:flex-start;
  display:flex; align-items:flex-start; gap:8px;
  background: linear-gradient(180deg, rgba(182,173,232,.14), rgba(139,127,214,.05));
  border: 1px solid var(--glass-border-hi);
  color: var(--ink-100);
  border-bottom-left-radius:4px;
  max-width:100%;
}
.ai__chat-avatar{ color: var(--violet-300); flex-shrink:0; }
.ai__chat-cursor{
  display:inline-block; width:2px; height:12px; margin-left:2px;
  background: var(--violet-300); vertical-align:middle;
  animation: blink 1s step-start infinite;
}
@keyframes blink{ 50%{ opacity:0; } }

/* ==========================================================
   Luxury statement
   ========================================================== */
.luxury{ padding: 40px 24px 130px; }
.luxury__frame{
  position:relative;
  max-width: 780px; margin:0 auto;
  padding: 64px 40px;
  text-align:center;
}
.luxury__corner{
  position:absolute; width:26px; height:26px;
  border: 1px solid var(--glass-border-hi);
}
.luxury__corner--tl{ top:14px; left:14px; border-right:none; border-bottom:none; }
.luxury__corner--tr{ top:14px; right:14px; border-left:none; border-bottom:none; }
.luxury__corner--bl{ bottom:14px; left:14px; border-right:none; border-top:none; }
.luxury__corner--br{ bottom:14px; right:14px; border-left:none; border-top:none; }

.luxury__eyebrow{
  font-family: var(--font-label);
  font-size:.66rem; letter-spacing:.3em; text-transform:uppercase;
  color: var(--violet-300); margin: 0 0 24px;
}
.luxury__statement{
  font-family: var(--font-display); font-weight:500; font-style:italic;
  font-size: clamp(1.7rem, 3.6vw, 2.7rem);
  line-height:1.35;
  margin:0;
  color: var(--ink-100);
}
.shimmer-text{
  display:inline-block;
  background: linear-gradient(100deg, var(--ink-300) 20%, var(--violet-300) 40%, #fff 50%, var(--violet-300) 60%, var(--ink-300) 80%);
  background-size: 220% 100%;
  -webkit-background-clip:text; background-clip:text; color:transparent;
  animation: shimmer 5s linear infinite;
}
@keyframes shimmer{ 0%{ background-position: 200% 0; } 100%{ background-position: -20% 0; } }

/* ==========================================================
   Cursor-follow ambient glow
   ========================================================== */
.cursor-glow{
  position:fixed; top:0; left:0; z-index:1;
  width: 460px; height:460px; margin-left:-230px; margin-top:-230px;
  border-radius:50%;
  background: radial-gradient(circle, rgba(139,127,214,.14), transparent 70%);
  pointer-events:none;
  opacity:0;
  transition: opacity .4s var(--ease);
  will-change: transform;
}
.cursor-glow.is-active{ opacity:1; }

/* ==========================================================
   FAQ
   ========================================================== */
.faq{ padding: 20px 24px 130px; max-width: 820px; margin: 0 auto; }

.faq__list{ display:flex; flex-direction:column; gap:14px; }

.faq-item{
  border:1px solid var(--glass-border);
  border-radius: var(--radius-md);
  background: var(--glass-fill);
  overflow:hidden;
  transition: border-color .35s var(--ease), background .35s var(--ease);
}
.faq-item.is-open{
  border-color: var(--glass-border-hi);
  background: var(--glass-fill-hi);
}

.faq-item__q{
  width:100%;
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding: 20px 24px;
  background:none; border:none;
  color: var(--ink-100);
  font-family: var(--font-body);
  font-size: 1rem;
  font-weight:500;
  text-align:left;
  cursor:pointer;
}

.faq-item__icon{
  width:28px; height:28px; flex-shrink:0;
  border-radius:50%;
  border: 1px solid var(--glass-border);
  display:flex; align-items:center; justify-content:center;
  position:relative;
  transition: border-color .3s var(--ease);
}
.faq-item__icon::before,
.faq-item__icon::after{
  content:''; position:absolute;
  background: var(--violet-300);
  border-radius:2px;
  transition: transform .4s var(--ease), opacity .3s var(--ease);
}
.faq-item__icon::before{ width:11px; height:1.4px; }
.faq-item__icon::after{ width:1.4px; height:11px; }
.faq-item.is-open .faq-item__icon::after{ transform: rotate(90deg); opacity:0; }
.faq-item.is-open .faq-item__icon{ border-color: var(--glass-border-hi); }

.faq-item__a{
  height:0; overflow:hidden;
}
.faq-item__a-inner{
  padding: 0 24px 22px;
  color: var(--ink-500);
  font-size:.92rem;
  line-height:1.7;
  max-width: 620px;
}

/* ==========================================================
   Reserve form
   ========================================================== */
.reserve{ padding: 20px 24px 150px; }
.reserve__panel{
  max-width: 720px; margin:0 auto;
  padding: 50px 48px;
  position:relative;
}
.reserve__head{ margin-bottom: 34px; }
.reserve__head .section-sub{ margin-top:8px; }

.reserve__form{ display:grid; grid-template-columns: 1fr 1fr; gap: 20px 18px; }
.field{ display:flex; flex-direction:column; gap:8px; }
.field--select{ grid-column: span 1; }
label{ font-size:.76rem; letter-spacing:.06em; text-transform:uppercase; color: var(--ink-500); }
input, select{
  font-family: var(--font-body);
  font-size:.95rem;
  color: var(--ink-100);
  background: rgba(255,255,255,0.03);
  border:1px solid var(--glass-border);
  border-radius: var(--radius-sm);
  padding: 13px 16px;
  outline:none;
  transition: border-color .25s, box-shadow .25s, background .25s;
}
select{ appearance:none; -webkit-appearance:none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238d8fa8' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position: right 14px center; }
input::placeholder{ color: var(--ink-700); }
input:focus, select:focus{
  border-color: var(--glass-border-hi);
  box-shadow: 0 0 0 3px rgba(139,127,214,.15);
  background: rgba(255,255,255,0.05);
}

.reserve__submit{ grid-column: 1 / -1; justify-content:center; margin-top:8px; }
.reserve__note{ grid-column: 1 / -1; text-align:center; font-size:.78rem; color: var(--ink-700); margin: 4px 0 0; }

.reserve__success{
  display:none;
  text-align:center;
  padding: 30px 0;
}
.reserve__success-star{
  font-size:2rem; color: var(--violet-300);
  filter: drop-shadow(0 0 16px rgba(159,212,255,.7));
  margin-bottom: 14px;
}
.reserve__success h3{ font-family: var(--font-display); font-size:1.8rem; margin:0 0 10px; font-weight:500; }
.reserve__success p{ color: var(--ink-500); margin:0; }

.reserve__panel.is-success .reserve__form{ display:none; }
.reserve__panel.is-success .reserve__head{ display:none; }
.reserve__panel.is-success .reserve__success{ display:block; }

/* ==========================================================
   Footer
   ========================================================== */
.footer{ border-top:1px solid var(--glass-border); padding: 44px 32px; }
.footer__inner{
  max-width:1240px; margin:0 auto;
  display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap;
}
.footer__links{ display:flex; gap:28px; font-size:.85rem; color: var(--ink-500); }
.footer__links a:hover{ color:#fff; }
.footer__fine{ font-family: var(--font-label); font-size:.6rem; letter-spacing:.2em; text-transform:uppercase; color: var(--ink-700); width:100%; text-align:center; margin: 30px 0 0; }

/* ==========================================================
   Reveal animation base state (GSAP controls the rest)
   ========================================================== */
.reveal-up{ opacity:0; transform: translateY(26px); }

/* ==========================================================
   Responsive
   ========================================================== */

/* ---- large desktop / laptop ---- */
@media (max-width: 1240px){
  .nav__inner, .hero__inner, .features, .footer__inner, .ai{ padding-left: 26px; padding-right: 26px; }
}

/* ---- tablet landscape ---- */
@media (max-width: 1080px){
  .hero__inner{ gap: 28px; }
  .ai__inner{ gap: 40px; }
}

/* ---- tablet portrait / small laptop: nav collapses to hamburger ---- */
@media (max-width: 920px){
  .hero__inner{ grid-template-columns: 1fr; }
  .hero__visual{
    height: auto;
    flex-direction: column;
    gap: 24px;
    margin-top: 8px;
  }
  .statue{ height: 340px; }
  .window-card{ position:static; width:100%; max-width: 320px; margin: 0 auto; }

  .nav__links, .nav__cta{ display:none; }
  .nav__burger{ display:flex; }
  .nav__mobile{ display:flex; }
  .nav__mobile.is-open{ max-height: 400px; }

  .reserve__form{ grid-template-columns: 1fr; }
  .plan__list{ grid-template-columns: 1fr; }
  .statue__glyph-jp{ font-size: 2rem; }

  .ai__inner{ grid-template-columns: 1fr; }
  .ai__visual{ order:-1; min-height: 360px; }
  .ai__copy{ text-align:center; }
  .ai__eyebrow{ text-align:center; }
  .ai__sub{ margin-left:auto; margin-right:auto; }
  .ai__list{ align-items:center; }
  .ai__list li{ text-align:left; }
}

/* ---- large phones ---- */
@media (max-width: 700px){
  .hero{ padding-left:20px; padding-right:20px; }
  .hero__sub{ max-width: none; }
  .section-head{ padding: 0 12px 44px; }
  .plan{ padding: 90px 18px; }
  .features{ padding: 20px 18px 70px; }
  .ai{ padding: 70px 18px; }
  .luxury{ padding: 20px 18px 90px; }
  .faq{ padding: 20px 18px 90px; }
  .reserve{ padding: 10px 18px 100px; }
  .plan__card, .reserve__panel{ padding: 32px 24px; }
  .footer{ padding: 36px 20px; }
  .statue__glyph-jp{ display:none; }
  .statue__glyph-name{ right: 6%; }

  .features__nav{ width:36px; height:36px; }
  .luxury__frame{ padding: 48px 26px; }
  .ai__orb{ width:170px; height:170px; }
  .ai__chat{ bottom:-40px; }
}

/* ---- small phones ---- */
@media (max-width: 560px){
  .hero__title .line{ font-size: clamp(2.5rem, 14vw, 3.4rem); }
  .hero__sub{ font-size: 1.02rem; }
  .btn{ padding: 13px 18px; font-size:.82rem; }
  .btn span{ white-space: normal; }
  .nav__cta{ display:none; }
  .nav__inner{ gap: 12px; }
  .brand__tag{ font-size:.48rem; }
  .plan__amount{ font-size: 3.6rem; }
  .plan__list{ padding-top: 22px; }
  .statue{ height: 280px; }
  .statue__ring--1{ width: 230px; height:230px; }
  .statue__ring--2{ width: 280px; height:280px; }
  .statue__core{ width: 170px; height:170px; }
  .statue__logo{ width: 76px; height:76px; }
  .window-card{ padding: 18px 20px; }
  .faq-item__q{ padding: 16px 18px; font-size:.92rem; }
  .faq-item__a-inner{ padding: 0 18px 18px; }
  .reserve__panel{ padding: 28px 18px; }

  .features__carousel{ gap:10px; }
  .features__nav{ width:32px; height:32px; }
  .features__page{ gap:12px; }
  .feature-card{ padding: 22px 18px; }

  .ai__visual{ min-height: 300px; }
  .ai__chat{ width: 92%; padding: 16px 16px; }
  .luxury__statement{ font-size: 1.5rem; }
}

/* ---- very small phones ---- */
@media (max-width: 380px){
  .nav__inner{ padding-left: 16px; padding-right: 16px; }
  .brand__name{ font-size: 1rem; }
  .brand__tag{ display:none; }
  .hero__title .line{ font-size: clamp(2.1rem, 15vw, 2.8rem); }
  .badge{ font-size:.6rem; padding: 8px 14px; }
  .statue{ height: 240px; }
  .statue__ring--1{ width: 200px; height:200px; }
  .statue__ring--2{ width: 240px; height:240px; }
  .statue__core{ width: 140px; height:140px; }
  .statue__logo{ width: 62px; height:62px; }
  .plan__amount{ font-size: 3rem; }
  .features__nav{ display:none; }
}

/* ---- short viewports (landscape phones) ---- */
@media (max-height: 480px) and (orientation: landscape){
  .hero{ min-height: auto; padding-top: calc(var(--nav-h) + 24px); padding-bottom: 30px; }
  .scroll-cue{ display:none; }
  .statue{ height: 220px; }
}

@media (prefers-reduced-motion: reduce){
  *{ animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
}