/* ============================================================
   ILITE (일라이트) — 실링팬 · 간접조명 시공 브랜드 사이트
   Tokens
   ============================================================ */
:root{
  --ink-900:#1B1815;
  --ink-800:#242019;
  --paper-50:#FAF5EC;
  --paper-100:#F2EADA;
  --glow-400:#FFB871;
  --glow-200:#FFE3BB;
  --stone-400:#9C9284;
  --stone-600:#5f584c;
  --walnut-700:#5B4433;

  --font-body:'PretendardVariable', 'Pretendard', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-display: var(--font-body);
  --font-latin: var(--font-body);
  --font-mono: var(--font-body);

  --container: 1180px;
  --section-pad: clamp(64px, 9vw, 128px);
  --ease: cubic-bezier(.22,.68,.35,1);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--paper-50);
  color:var(--ink-900);
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul{ list-style:none; margin:0; padding:0; }
h1,h2,h3,p{ margin:0; }
button{ font-family:inherit; }

::selection{ background:var(--glow-400); color:var(--ink-900); }

:focus-visible{
  outline:2px solid var(--glow-400);
  outline-offset:3px;
  border-radius:2px;
}

.grain-overlay{
  position:fixed; inset:0; z-index:9999; pointer-events:none;
  opacity:.025; 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");
}

.eyebrow{
  font-family:var(--font-mono);
  font-weight:700;
  font-size:.74rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--walnut-700);
  margin-bottom:14px;
  display:block;
}
.eyebrow--light{ color:#E89144; font-size:.85rem; }

.section-title{
  font-family:var(--font-display);
  font-weight:800;
  font-size:clamp(1.8rem, 3.4vw, 2.7rem);
  line-height:1.25;
  letter-spacing:-.02em;
}

.section__head{
  max-width:640px;
  margin:0 auto 56px;
  text-align:center;
}
.section__desc{
  margin-top:16px;
  color:var(--stone-600);
  font-size:1rem;
}

.section{
  padding:var(--section-pad) 24px;
  max-width:var(--container);
  margin:0 auto;
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center;
  padding:15px 30px;
  font-size:.95rem;
  font-weight:600;
  letter-spacing:.01em;
  border-radius:999px;
  border:1px solid transparent;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease), background .35s var(--ease), color .35s var(--ease);
  white-space:nowrap;
}
.btn--glow{
  background:linear-gradient(180deg, var(--glow-400), #f59a44);
  color:var(--ink-900);
  box-shadow:0 8px 24px -8px rgba(255,184,113,.55);
}
.btn--glow:hover{ transform:translateY(-2px); box-shadow:0 12px 30px -8px rgba(255,184,113,.7); }
.btn--ghost{
  border-color:rgba(250,245,236,.4);
  color:var(--paper-50);
}
.btn--ghost:hover{ border-color:var(--glow-400); color:var(--glow-400); }
.btn--outline{
  border-color:rgba(27,24,21,.18);
  color:var(--ink-900);
  width:100%;
}
.btn--outline:hover{ border-color:var(--walnut-700); background:var(--ink-900); color:var(--paper-50); }
.btn--block{ width:100%; }

/* ============================================================
   NAV
   ============================================================ */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:1000;
  display:flex; align-items:center; justify-content:space-between;
  padding:22px clamp(20px,4vw,48px);
  transition:background .4s var(--ease), padding .4s var(--ease), box-shadow .4s var(--ease);
}
.nav.is-scrolled,
.subpage .nav{
  background:rgba(250,245,236,.86);
  backdrop-filter:blur(14px);
  padding:14px clamp(20px,4vw,48px);
  box-shadow:0 1px 0 rgba(27,24,21,.06);
}
.nav__brand{
  display:flex; align-items:baseline; gap:2px;
  font-family:var(--font-latin);
  font-size:1.4rem; font-weight:800; letter-spacing:-.01em;
  color:var(--paper-50);
}
.nav.is-scrolled .nav__brand,
.subpage .nav__brand{ color:var(--ink-900); }
.brand-mark{
  font-family:var(--font-latin);
  font-weight:900;
  color:var(--glow-400);
  text-shadow:0 0 16px rgba(255,184,113,.7);
  margin-right:1px;
}
.nav__links{ display:flex; align-items:center; gap:clamp(14px,2vw,32px); }
.nav__links a{
  font-size:.9rem; font-weight:500;
  color:rgba(250,245,236,.85);
  transition:color .3s;
  position:relative;
}
.nav.is-scrolled .nav__links a,
.subpage .nav__links a{ color:var(--ink-900); }
.nav__links a:not(.nav__cta)::after{
  content:''; position:absolute; left:0; bottom:-6px; width:0; height:1px;
  background:var(--glow-400); transition:width .3s var(--ease);
}
.nav__links a:not(.nav__cta):hover::after{ width:100%; }
.nav__cta{
  padding:10px 20px; border-radius:999px;
  background:var(--glow-400); color:var(--ink-900) !important;
  font-weight:600;
}
.nav__toggle{ display:none; }
.nav__backdrop{ display:none; }

/* ---------- nav package dropdown ---------- */
.nav__dropdown{ position:relative; }
.nav__dropdown-menu{
  position:absolute; top:100%; left:50%; transform:translateX(-50%) translateY(8px);
  min-width:220px; padding:10px;
  background:#fff; border-radius:10px;
  box-shadow:0 24px 48px -16px rgba(27,24,21,.28);
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .25s var(--ease), transform .25s var(--ease), visibility .25s;
}
.nav__dropdown:hover .nav__dropdown-menu,
.nav__dropdown:focus-within .nav__dropdown-menu{
  opacity:1; visibility:visible; pointer-events:auto; transform:translateX(-50%) translateY(4px);
}
.nav__dropdown-menu a{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:11px 14px; border-radius:6px;
  color:var(--ink-900) !important; font-size:.86rem; font-weight:500;
}
.nav__dropdown-menu a:hover{ background:var(--paper-100); }
.nav__dropdown-menu a::after{ display:none; }
.nav__dropdown-menu small{
  font-family:var(--font-mono); font-size:.76rem; color:#c97a2e; font-weight:600;
}

/* ============================================================
   HERO
   ============================================================ */
.hero{
  position:relative;
  min-height:100svh;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  overflow:hidden;
  background:var(--ink-900);
}
.hero__media{ position:absolute; inset:0; }
.hero__video{
  width:100%; height:100%; object-fit:cover;
  object-position:center 5%;
  filter:brightness(.74) saturate(1.05);
  transform:scale(1.3);
  transform-origin:center 15%;
}
.hero__scrim{
  position:absolute; inset:0;
  background:
    linear-gradient(180deg, rgba(27,24,21,.42) 0%, rgba(27,24,21,.14) 38%, rgba(27,24,21,.42) 78%, rgba(27,24,21,.85) 100%);
}
.hero__glow{
  position:absolute; left:0; right:0; bottom:0; height:40%;
  background:radial-gradient(60% 100% at 50% 100%, rgba(255,184,113,.35), transparent 70%);
  pointer-events:none;
}
.hero__content{
  position:relative; z-index:2;
  max-width:760px; padding:0 24px;
  margin-top:clamp(40px, 8vw, 100px);
  text-align:center; color:var(--paper-50);
}
.hero__title{
  font-family:var(--font-display);
  font-weight:700;
  font-size:clamp(1.9rem, 5vw, 3.3rem);
  line-height:1.28;
  letter-spacing:-.02em;
}
.hero__title span{ display:block; }
.hero__title em{
  font-style:normal;
  color:var(--glow-400);
  text-shadow:0 0 28px rgba(255,184,113,.55);
}
.hero__desc{
  margin:26px auto 0; max-width:520px;
  color:rgba(250,245,236,.8);
  font-size:1.02rem;
}
.hero__actions{
  margin-top:40px;
  display:flex; gap:16px; justify-content:center; flex-wrap:wrap;
}
.hero__scroll{
  position:absolute; bottom:28px; left:50%; transform:translateX(-50%);
  z-index:2; color:rgba(250,245,236,.6);
  font-family:var(--font-mono); font-size:.68rem; letter-spacing:.28em;
  display:flex; flex-direction:column; align-items:center; gap:10px;
}
.hero__scroll span{
  width:1px; height:34px;
  background:linear-gradient(180deg, rgba(250,245,236,.05), var(--glow-400));
  animation:scrollpulse 2.2s ease-in-out infinite;
}
@keyframes scrollpulse{
  0%,100%{ opacity:.3; transform:scaleY(.7); transform-origin:top; }
  50%{ opacity:1; transform:scaleY(1); transform-origin:top; }
}

/* reveal-up (page load + scroll) */
.reveal-up{
  opacity:0; transform:translateY(22px);
  animation:revealUp .9s var(--ease) forwards;
  animation-delay:calc(var(--d, 0) * .12s + .1s);
}
@keyframes revealUp{ to{ opacity:1; transform:translateY(0); } }

/* [data-reveal] is visible by default; only hides/animates once js-ready
   confirms the reveal script actually ran, so a JS failure never leaves
   content permanently invisible. */
.js-ready [data-reveal]{
  opacity:0; transform:translateY(28px);
  transition:opacity .8s var(--ease), transform .8s var(--ease);
}
.js-ready [data-reveal].is-visible{ opacity:1; transform:none; }

/* ============================================================
   ABOUT
   ============================================================ */
.about__grid{
  display:grid; grid-template-columns:1fr 1fr; gap:clamp(32px,6vw,80px);
  align-items:center;
}
.about__lead{
  margin-top:22px; color:var(--stone-600); font-size:1.05rem; max-width:46ch;
}
.about__stats{
  display:flex; gap:clamp(24px,4vw,48px); margin-top:44px;
  border-top:1px solid rgba(27,24,21,.1); padding-top:28px;
}
.about__stats li{ display:flex; flex-direction:column; gap:6px; }
.about__stats .num{
  font-family:var(--font-mono); font-size:1.6rem; font-weight:500; color:var(--ink-900);
}
.about__stats .num small{ font-size:.9rem; color:var(--stone-400); }
.about__stats .label{ font-size:.8rem; color:var(--stone-400); }

.about__figure{ margin:0; position:relative; }
.about__figure img{
  width:100%; aspect-ratio:4/3; object-fit:cover;
  border-radius:6px;
}
.about__figure::before{
  content:''; position:absolute; top:-2px; left:8%; right:8%; height:3px;
  background:linear-gradient(90deg, transparent, var(--glow-400), transparent);
  filter:blur(3px);
}
.about__figure figcaption{
  margin-top:14px; font-size:.82rem; color:var(--stone-400); font-family:var(--font-mono);
}

/* ============================================================
   PILLARS
   ============================================================ */
.pillars{ background:var(--paper-50); color:var(--ink-900); }
.pillar{
  display:grid; grid-template-columns:1.1fr 1fr;
  max-width:var(--container); margin:0 auto;
  align-items:center; gap:clamp(32px,6vw,90px);
  padding:var(--section-pad) 24px;
}
.pillar--light{ grid-template-columns:1fr 1.1fr; }
.pillar--light .pillar__media{ order:2; }
.pillar--light .pillar__content{ order:1; }
.pillar__media{ position:relative; }
.pillar__media img{
  width:100%; aspect-ratio:5/4; object-fit:cover; border-radius:6px;
}
.pillar__media::after{
  content:''; position:absolute; inset:0; border-radius:6px;
  box-shadow:inset 0 -40px 60px -30px rgba(0,0,0,.5);
  pointer-events:none;
}
.pillar h3{
  font-family:var(--font-display); font-weight:800;
  font-size:clamp(1.5rem, 2.6vw, 2.1rem); line-height:1.35; letter-spacing:-.02em; margin-bottom:24px;
}
.pillar__list li{
  position:relative; padding-left:22px; margin-bottom:14px;
  color:var(--stone-600); font-size:.96rem; line-height:1.6;
}
.pillar__list li::before{
  content:''; position:absolute; left:0; top:.6em; width:8px; height:1px;
  background:var(--glow-400);
}

/* ============================================================
   PACKAGES
   ============================================================ */
.section.packages{ max-width:1920px; }
.package-badges{
  display:flex; flex-wrap:wrap; justify-content:center; gap:12px;
  max-width:760px; margin:0 auto 48px;
}
.package-badges li{
  font-family:var(--font-mono); font-size:.78rem; color:var(--walnut-700);
  border:1px solid rgba(27,24,21,.14); border-radius:999px;
  padding:8px 18px;
}
.package-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:28px;
  align-items:stretch;
}
.package-grid--four{ grid-template-columns:repeat(4,1fr); gap:34px; }
.package-card{
  position:relative;
  background:#fff;
  border:1px solid rgba(27,24,21,.08);
  border-radius:10px;
  padding:0;
  display:flex; flex-direction:column;
  color:inherit; text-decoration:none;
  transition:transform .4s var(--ease), box-shadow .4s var(--ease);
  overflow:hidden;
}
.package-card:hover{ transform:translateY(-6px); box-shadow:0 24px 48px -24px rgba(27,24,21,.22); }
.package-card:hover .package-card__media img{ transform:scale(1.04); }
.package-card__media{ position:relative; overflow:hidden; }
.package-card__media img{
  width:100%; aspect-ratio:1/1; object-fit:cover; display:block;
  transition:transform .5s var(--ease);
}
.package-card__body{
  position:relative;
  padding:28px 30px 30px;
  display:flex; flex-direction:column; flex:1;
}
.package-card__glow{
  position:absolute; top:0; left:10%; right:10%; height:2px;
  background:linear-gradient(90deg, transparent, var(--glow-400), transparent);
  opacity:.55;
}
.package-card--featured{
  background:#fff; color:var(--ink-900);
  border:2px solid var(--glow-400);
  box-shadow:0 24px 48px -20px rgba(255,184,113,.45);
}
.package-card--featured .package-card__glow{ opacity:1; height:3px; filter:blur(1px); }
.package-card__badge{
  position:absolute; top:18px; right:18px; z-index:2;
  font-family:var(--font-mono); font-size:.66rem; letter-spacing:.05em;
  background:var(--glow-400); color:var(--ink-900);
  padding:6px 12px; border-radius:999px;
  box-shadow:0 4px 14px -4px rgba(0,0,0,.35);
}
.package-card__id{
  font-family:var(--font-mono); font-size:.72rem; letter-spacing:.18em;
  color:var(--stone-400);
}
.package-card__name{
  font-family:var(--font-display); font-weight:800; letter-spacing:-.01em; font-size:1.7rem; margin:10px 0 6px;
}
.package-card__desc{ color:var(--stone-400); font-size:.9rem; margin-bottom:22px; min-height:2.4em; }
.package-card__features{ flex:1; margin-bottom:24px; }
.package-card__features li{
  padding:10px 0; font-size:.9rem;
  border-top:1px solid rgba(27,24,21,.08);
}
.package-card__features li.package-card__note{
  border-top:none; padding-top:4px; font-size:.78rem; color:var(--stone-400);
}
.package-card__price{
  font-family:var(--font-mono); font-size:1.7rem; font-weight:600;
  margin-bottom:16px; line-height:1.5;
  padding-top:16px; border-top:1px solid rgba(27,24,21,.08);
}
.package-card__price del{
  display:block; font-size:.85rem; font-weight:400; color:var(--stone-400); text-decoration-color:var(--stone-400);
}
.package-card__price span{ font-size:.95rem; color:var(--stone-400); font-family:var(--font-body); margin-left:2px; }

.package-note{
  text-align:center; margin-top:32px; font-size:.82rem; color:var(--stone-400);
}

.packages__estimate-cta{ text-align:center; margin-top:24px; }
.packages__estimate-btn{
  display:inline-flex; align-items:center; gap:6px;
  padding:14px 28px; border-radius:999px; border:1px solid rgba(27,24,21,.18);
  color:var(--ink-900); font-size:.92rem; font-weight:600;
  transition:border-color .3s var(--ease), background .3s var(--ease), color .3s var(--ease), transform .3s var(--ease);
}
.packages__estimate-btn:hover{
  border-color:var(--walnut-700); background:var(--ink-900); color:var(--paper-50); transform:translateY(-2px);
}

/* ============================================================
   GALLERY
   ============================================================ */
.gallery__grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:18px;
}
.gallery__item{ position:relative; overflow:hidden; border-radius:8px; margin:0; }
.gallery__item--wide{ grid-column:span 2; }
.gallery__item img{
  width:100%; height:100%; aspect-ratio:4/3; object-fit:cover;
  transition:transform .6s var(--ease);
}
.gallery__item--wide img{ aspect-ratio:16/9; }
.gallery__item:hover img{ transform:scale(1.06); }
.gallery__item figcaption{
  position:absolute; left:0; right:0; bottom:0; padding:20px;
  background:linear-gradient(0deg, rgba(27,24,21,.82), transparent);
  color:var(--paper-50); font-size:.85rem;
  opacity:0; transform:translateY(6px);
  transition:opacity .4s var(--ease), transform .4s var(--ease);
}
.gallery__item:hover figcaption{ opacity:1; transform:translateY(0); }
.gallery__item figcaption span{
  display:block; font-family:var(--font-mono); font-size:.66rem;
  letter-spacing:.14em; color:var(--glow-400); margin-bottom:4px; text-transform:uppercase;
}
.gallery-page .gallery__item{ cursor:pointer; }
.gallery-page .gallery__item:focus-visible{ outline:2px solid var(--glow-400); outline-offset:3px; }

/* ---------- lightbox ---------- */
.lightbox{
  position:fixed; inset:0; z-index:3000;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px;
  background:rgba(12,10,9,.94);
  opacity:0; visibility:hidden;
  transition:opacity .3s var(--ease), visibility .3s;
}
.lightbox.is-open{ opacity:1; visibility:visible; }
.lightbox__stage{
  max-width:92vw; max-height:78vh; overflow:auto;
  display:flex; align-items:center; justify-content:center;
}
.lightbox__stage img{
  max-width:92vw; max-height:78vh; width:auto; height:auto;
  object-fit:contain; cursor:zoom-in; user-select:none;
  border-radius:4px;
}
.lightbox__stage.is-zoomed{ align-items:flex-start; justify-content:flex-start; cursor:zoom-out; }
.lightbox__stage.is-zoomed img{
  max-width:none; max-height:none; width:1600px; cursor:zoom-out;
}
.lightbox__caption{
  color:rgba(250,245,236,.85); font-size:.86rem; text-align:center; max-width:80vw;
}
.lightbox__hint{
  color:rgba(250,245,236,.4); font-size:.72rem; text-align:center;
}
.lightbox__close{
  position:absolute; top:20px; right:20px; z-index:2;
  width:40px; height:40px; border-radius:50%; border:none; cursor:pointer;
  background:rgba(255,255,255,.12); color:#fff; font-size:1rem;
  display:flex; align-items:center; justify-content:center;
  transition:background .2s var(--ease);
}
.lightbox__close:hover{ background:var(--glow-400); color:var(--ink-900); }
.lightbox__nav{
  position:absolute; top:50%; transform:translateY(-50%); z-index:2;
  width:48px; height:48px; border-radius:50%; border:none; cursor:pointer;
  background:rgba(255,255,255,.12); color:#fff; font-size:1.6rem; line-height:1;
  display:flex; align-items:center; justify-content:center;
  transition:background .2s var(--ease);
}
.lightbox__nav:hover{ background:var(--glow-400); color:var(--ink-900); }
.lightbox__nav--prev{ left:20px; }
.lightbox__nav--next{ right:20px; }

@media (max-width:640px){
  .lightbox__nav{ width:38px; height:38px; font-size:1.3rem; }
  .lightbox__nav--prev{ left:8px; }
  .lightbox__nav--next{ right:8px; }
  .lightbox__close{ top:10px; right:10px; }
}

/* ============================================================
   BLOG
   ============================================================ */
.blog__grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:20px;
}
.blog-card{
  display:block; background:#fff; border:1px solid rgba(27,24,21,.08); border-radius:10px;
  overflow:hidden; transition:transform .3s var(--ease), box-shadow .3s var(--ease);
}
.blog-card:hover{ transform:translateY(-4px); box-shadow:0 20px 40px -24px rgba(27,24,21,.3); }
.blog-card__media{ aspect-ratio:4/3; overflow:hidden; }
.blog-card__media img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s var(--ease); }
.blog-card:hover .blog-card__media img{ transform:scale(1.05); }
.blog-card__title{
  padding:16px 18px; font-size:.88rem; line-height:1.55; color:var(--ink-900);
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}

@media (max-width:860px){
  .blog__grid{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:560px){
  .blog__grid{ grid-template-columns:1fr; }
}

.gallery__more{ text-align:center; margin-top:32px; }
.gallery__more-btn{
  display:inline-flex; align-items:center; gap:6px;
  padding:14px 28px; border-radius:999px; border:1px solid rgba(27,24,21,.18);
  color:var(--ink-900); font-size:.92rem; font-weight:600;
  transition:border-color .3s var(--ease), background .3s var(--ease), color .3s var(--ease), transform .3s var(--ease);
}
.gallery__more-btn:hover{
  border-color:var(--walnut-700); background:var(--ink-900); color:var(--paper-50); transform:translateY(-2px);
}

/* ============================================================
   EVENT
   ============================================================ */
.event{
  position:relative;
  background:var(--glow-200); color:var(--ink-900);
  padding:var(--section-pad) 24px;
  text-align:center; overflow:hidden;
}
.event__glow{
  position:absolute; top:0; left:50%; transform:translateX(-50%);
  width:140%; height:280px;
  background:radial-gradient(50% 100% at 50% 0%, rgba(255,184,113,.35), transparent 70%);
  pointer-events:none;
}
.event__gift{
  position:relative; width:180px; height:180px; margin:0 auto 28px;
  border-radius:50%; overflow:hidden;
  background:#fff; border:1px solid rgba(27,24,21,.08);
  box-shadow:0 24px 48px -20px rgba(255,184,113,.55), 0 0 0 8px rgba(255,255,255,.5);
}
.event__gift img{
  width:100%; height:100%; object-fit:cover; object-position:center 42%;
  transform:scale(1.15);
}
.event__title{
  position:relative; font-family:var(--font-display); font-weight:800; letter-spacing:-.02em;
  font-size:clamp(1.7rem, 3.6vw, 2.6rem); line-height:1.35; max-width:680px; margin:0 auto;
}
.event__desc{
  position:relative; margin:22px auto 0; max-width:520px; color:var(--stone-600);
}
.event__badge{
  position:relative; display:inline-flex; gap:14px; align-items:center;
  margin:32px 0; padding:12px 24px; border:1px solid rgba(27,24,21,.14); border-radius:999px;
  background:rgba(255,255,255,.5);
}
.event__badge-label{
  font-family:var(--font-mono); font-size:.68rem; letter-spacing:.12em; color:var(--walnut-700);
}
.event__badge-value{ font-size:.92rem; }
.event__fine{
  position:relative; margin-top:18px; font-size:.78rem; color:rgba(27,24,21,.45);
}

/* ============================================================
   REVIEWS
   ============================================================ */
.reviews__track-wrap{ overflow:hidden; margin:0 -24px; padding:0 24px; }
.reviews__track{
  display:flex; gap:22px; overflow-x:auto; scroll-snap-type:x proximity;
  padding-bottom:12px;
  scrollbar-width:thin; scrollbar-color:var(--glow-400) transparent;
}
.review-card{
  scroll-snap-align:start;
  flex:0 0 clamp(260px, 32vw, 340px);
  background:#fff; border:1px solid rgba(27,24,21,.08); border-radius:10px;
  padding:0; position:relative; overflow:hidden;
}
.review-card__media img{
  width:100%; aspect-ratio:4/3; object-fit:cover; display:block;
}
.review-card__body{ padding:22px 26px 26px; position:relative; }
.review-card__body::before{
  content:''; position:absolute; top:0; left:0; right:0; height:2px;
  background:linear-gradient(90deg, transparent, var(--glow-400), transparent); opacity:.5;
}
.review-card__stars{ color:var(--glow-400); letter-spacing:2px; font-size:.9rem; margin-bottom:14px; }
.review-card__quote{ font-size:.95rem; line-height:1.7; color:var(--ink-900); min-height:5.5em; }
.review-card__meta{
  margin-top:18px; padding-top:16px; border-top:1px solid rgba(27,24,21,.08);
  font-family:var(--font-mono); font-size:.76rem; color:var(--stone-400);
}
.review-card--user .review-card__body{ padding-top:26px; }
.reviews__footer{ display:flex; justify-content:flex-end; margin-top:24px; }
.reviews__write-btn{
  display:inline-flex; align-items:center; justify-content:center;
  padding:12px 24px; border-radius:999px; border:1px solid rgba(27,24,21,.18);
  background:transparent; color:var(--ink-900); font-size:.86rem; font-weight:600;
  cursor:pointer; transition:border-color .3s var(--ease), background .3s var(--ease), color .3s var(--ease);
}
.reviews__write-btn:hover{ border-color:var(--walnut-700); background:var(--ink-900); color:var(--paper-50); }

/* ---------- review write modal ---------- */
.review-modal{
  position:fixed; inset:0; z-index:2000;
  display:flex; align-items:center; justify-content:center; padding:24px;
  opacity:0; visibility:hidden; transition:opacity .3s var(--ease), visibility .3s;
}
.review-modal.is-open{ opacity:1; visibility:visible; }
.review-modal__overlay{
  position:absolute; inset:0; background:rgba(27,24,21,.55); backdrop-filter:blur(2px);
}
.review-modal__box{
  position:relative; width:100%; max-width:440px; max-height:88vh; overflow-y:auto;
  background:var(--paper-50); border-radius:14px; padding:32px 28px;
  box-shadow:0 32px 64px -20px rgba(27,24,21,.4);
  transform:translateY(12px); transition:transform .3s var(--ease);
}
.review-modal.is-open .review-modal__box{ transform:translateY(0); }
.review-modal__close{
  position:absolute; top:16px; right:16px; width:32px; height:32px; border-radius:50%;
  border:none; background:var(--paper-100); color:var(--ink-900); font-size:.9rem; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
}
.review-modal__title{
  font-family:var(--font-display); font-weight:800; font-size:1.4rem; letter-spacing:-.01em;
}
.review-modal__desc{ margin-top:10px; color:var(--stone-600); font-size:.86rem; }

/* ---------- event winner popup ---------- */
.event-popup{
  position:fixed; inset:0; z-index:2500;
  display:flex; align-items:center; justify-content:center; padding:24px;
  opacity:0; visibility:hidden; transition:opacity .3s var(--ease), visibility .3s;
}
.event-popup.is-open{ opacity:1; visibility:visible; }
.event-popup__overlay{
  position:absolute; inset:0; background:rgba(27,24,21,.55); backdrop-filter:blur(2px);
}
.event-popup__box{
  position:relative; width:100%; max-width:380px; max-height:90vh; overflow-y:auto;
  background:var(--paper-50); border-radius:16px; padding:36px 28px 28px;
  box-shadow:0 32px 64px -20px rgba(27,24,21,.4);
  text-align:center;
  transform:translateY(12px); transition:transform .3s var(--ease);
}
.event-popup.is-open .event-popup__box{ transform:translateY(0); }
.event-popup__close{
  position:absolute; top:14px; right:14px; width:30px; height:30px; border-radius:50%;
  border:none; background:var(--paper-100); color:var(--ink-900); font-size:.85rem; cursor:pointer;
  display:flex; align-items:center; justify-content:center; z-index:2;
}
.event-popup__media{
  width:120px; height:120px; margin:0 auto 18px; border-radius:50%; overflow:hidden;
  border:1px solid rgba(27,24,21,.08);
  box-shadow:0 16px 32px -16px rgba(255,184,113,.6), 0 0 0 6px rgba(255,255,255,.5);
}
.event-popup__media img{ width:100%; height:100%; object-fit:cover; object-position:center 42%; transform:scale(1.15); }
.event-popup__title{
  font-family:var(--font-display); font-weight:800; font-size:1.3rem; letter-spacing:-.01em;
  margin-top:2px;
}
.event-popup__desc{ margin-top:14px; color:var(--stone-600); font-size:.86rem; line-height:1.7; }
.event-popup__winners{
  margin-top:14px; padding:14px 16px; border-radius:10px;
  background:var(--glow-200); border:1px solid rgba(27,24,21,.06);
}
.event-popup__winners-label{
  font-family:var(--font-mono); font-size:.68rem; letter-spacing:.12em; text-transform:uppercase;
  color:var(--walnut-700); margin-bottom:8px;
}
.event-popup__winners-name{
  font-weight:700; font-size:.9rem; color:var(--ink-900);
  padding:4px 0;
}
.event-popup__winners-name span{
  font-weight:400; font-size:.8rem; color:var(--stone-600); margin-left:2px;
}
.event-popup__sub{
  margin-top:16px; padding-top:16px; border-top:1px solid rgba(27,24,21,.1);
  color:var(--ink-900); font-size:.86rem; line-height:1.6; font-weight:600;
}
.event-popup__cta{ width:100%; margin-top:18px; }
.event-popup__hide{
  display:flex; align-items:center; justify-content:center; gap:6px;
  margin-top:14px; font-size:.78rem; color:var(--stone-400); cursor:pointer;
}
.event-popup__hide input{ width:14px; height:14px; cursor:pointer; }

.review-form{ margin-top:24px; display:flex; flex-direction:column; gap:16px; }
.review-form__row{ display:flex; flex-direction:column; gap:8px; }
.review-form__row label{ font-size:.82rem; font-weight:600; color:var(--walnut-700); }
.review-form__row input[type="text"],
.review-form__row select,
.review-form__row textarea{
  width:100%; padding:12px 14px; border-radius:8px; border:1px solid rgba(27,24,21,.16);
  background:#fff; color:var(--ink-900); font-family:var(--font-body); font-size:.92rem;
  resize:vertical;
}
.review-form__row input[type="text"]:focus,
.review-form__row select:focus,
.review-form__row textarea:focus{ outline:2px solid var(--glow-400); outline-offset:1px; }
.review-form__stars{ display:flex; gap:6px; }
.review-form__star{
  width:36px; height:36px; border:none; background:none; cursor:pointer;
  font-size:1.5rem; line-height:1; color:rgba(27,24,21,.18); transition:color .2s var(--ease), transform .2s var(--ease);
}
.review-form__star.is-active{ color:var(--glow-400); }
.review-form__star:hover{ transform:scale(1.12); }
.review-form__row input[type="file"]{
  font-size:.84rem; color:var(--stone-600);
}
.review-form__preview{ display:none; }
.review-form__preview.has-image{
  display:block; margin-top:4px; position:relative; width:100px;
}
.review-form__preview img{
  width:100px; height:100px; object-fit:cover; border-radius:8px; border:1px solid rgba(27,24,21,.12);
}
.review-form__preview-remove{
  position:absolute; top:-8px; right:-8px; width:22px; height:22px; border-radius:50%;
  border:none; background:var(--ink-900); color:var(--paper-50); font-size:.7rem; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
}
.review-form__hp{ position:absolute; left:-9999px; top:auto; width:1px; height:1px; overflow:hidden; }
.review-form__status{
  margin:0; font-size:.82rem; min-height:1.2em;
}
.review-form__status.is-error{ color:#c0392b; }
.review-form__status.is-success{ color:#3a7d44; }
.review-form__submit{ width:100%; margin-top:4px; }
.review-form__submit:disabled{ opacity:.6; cursor:not-allowed; }

/* ============================================================
   CONTACT
   ============================================================ */
.contact__single{
  max-width:520px; margin:0 auto; text-align:center;
}
.contact__desc{ margin-top:20px; color:var(--stone-600); }
.contact__phone{
  display:flex; flex-direction:column; gap:2px; margin-top:36px;
  padding:22px 26px; border-radius:10px; background:var(--glow-400); color:var(--ink-900);
  border:1px solid transparent;
  box-shadow:0 12px 30px -14px rgba(255,184,113,.7);
  transition:transform .3s var(--ease), box-shadow .3s var(--ease);
}
.contact__phone:hover{ transform:translateY(-2px); box-shadow:0 16px 34px -14px rgba(255,184,113,.85); }
.contact__phone-label{ font-family:var(--font-mono); font-size:.68rem; letter-spacing:.14em; color:var(--walnut-700); }
.contact__phone-number{ font-family:var(--font-mono); font-size:1.6rem; margin-top:4px; }
.contact__kakao{
  display:block; margin-top:14px; padding:18px 26px; border-radius:10px;
  border:1px solid rgba(27,24,21,.14); font-weight:600; text-align:center;
  transition:border-color .3s, background .3s;
}
.contact__kakao:hover{ border-color:var(--glow-400); background:var(--glow-200); }
.contact__hours{ margin-top:20px; font-size:.85rem; color:var(--stone-400); }

/* ============================================================
   FOOTER
   ============================================================ */
.footer{
  background:var(--paper-100); color:var(--stone-600);
  border-top:1px solid rgba(27,24,21,.08);
  padding:52px 24px 32px;
}
.footer__top{
  max-width:var(--container); margin:0 auto 28px;
  display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px;
  border-bottom:1px solid rgba(27,24,21,.1); padding-bottom:28px;
}
.footer .nav__brand{ color:var(--ink-900); }
.footer .nav__brand .brand-mark{ color:var(--glow-400); }
.footer__contact{ display:flex; gap:22px; font-family:var(--font-mono); font-size:.85rem; }
.footer__legal, .footer__copy{
  max-width:var(--container); margin:0 auto; font-size:.78rem; line-height:1.8;
}
.footer__copy{ margin-top:18px; color:var(--stone-400); }

/* ============================================================
   PACKAGE DETAIL PAGE
   ============================================================ */
.pd-breadcrumb{
  max-width:var(--container); margin:120px auto 0; padding:0 24px;
}
.pd-breadcrumb a{
  font-family:var(--font-mono); font-size:.8rem; color:var(--stone-400);
  display:inline-flex; align-items:center; gap:8px;
  transition:color .3s;
}
.pd-breadcrumb a:hover{ color:var(--walnut-700); }

/* ---------- package hub (tabbed) ---------- */
.pkg-hub-head{
  max-width:560px; margin:32px auto 0; padding:0 24px; text-align:center;
}
.pkg-tabs{
  max-width:var(--container); margin:36px auto 0; padding:0 24px 8px;
  display:flex; gap:12px; flex-wrap:wrap; justify-content:center;
  border-bottom:1px solid rgba(27,24,21,.1);
}
.pkg-tab{
  display:flex; flex-direction:column; align-items:center; gap:4px;
  padding:14px 22px; border:none; background:none; cursor:pointer;
  font-family:var(--font-body); color:var(--stone-400);
  border-bottom:2px solid transparent; margin-bottom:-1px;
  transition:color .3s, border-color .3s;
}
.pkg-tab span{ font-weight:700; font-size:.98rem; }
.pkg-tab small{ font-family:var(--font-mono); font-size:.76rem; color:var(--stone-400); }
.pkg-tab:hover{ color:var(--ink-900); }
.pkg-tab.is-active{ color:var(--ink-900); border-color:var(--glow-400); }
.pkg-tab.is-active small{ color:#c97a2e; }

.pkg-panel{ display:none; }
.pkg-panel.is-active{ display:block; }

.pd-hero{
  max-width:var(--container); margin:0 auto; padding:40px 24px 0;
  display:grid; grid-template-columns:1fr 1fr; gap:clamp(32px,6vw,80px);
  align-items:center;
}
.pd-hero__media{ position:relative; }
.pd-hero__media img{
  width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:10px;
}
.pd-hero__media::before{
  content:''; position:absolute; top:-2px; left:8%; right:8%; height:3px;
  background:linear-gradient(90deg, transparent, var(--glow-400), transparent);
  filter:blur(3px);
}
.pd-hero__name{
  font-family:var(--font-display); font-weight:800; letter-spacing:-.02em;
  font-size:clamp(2rem, 4vw, 2.8rem); margin:12px 0 14px;
}
.pd-hero__desc{ color:var(--stone-600); font-size:1.02rem; max-width:44ch; margin-bottom:26px; }
.pd-hero__price{
  font-family:var(--font-mono); font-weight:600; font-size:2.2rem;
  margin-bottom:26px;
}
.pd-hero__price del{
  display:block; font-size:1rem; font-weight:400; color:var(--stone-400);
}
.pd-hero__price span{ font-size:1.05rem; color:var(--stone-400); font-family:var(--font-body); margin-left:2px; }
.pd-hero__actions{ display:flex; gap:14px; flex-wrap:wrap; margin-bottom:28px; }
.pd-hero__note{ font-size:.82rem; color:var(--stone-400); }

.pd-items{
  max-width:var(--container); margin:0 auto; padding:var(--section-pad) 24px;
}
.pd-items__head{ text-align:center; max-width:560px; margin:0 auto 56px; }
.pd-item{
  display:grid; grid-template-columns:1fr 1fr; gap:clamp(32px,6vw,80px);
  align-items:center;
  padding:48px 0; border-top:1px solid rgba(27,24,21,.08);
}
.pd-item:first-of-type{ border-top:none; padding-top:0; }
.pd-item--reverse .pd-item__media{ order:2; }
.pd-item--reverse .pd-item__content{ order:1; }
.pd-item__media img{
  width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:10px;
}
.pd-item__num{
  font-family:var(--font-mono); font-size:.72rem; letter-spacing:.18em; color:var(--stone-400);
  margin-bottom:10px; display:block;
}
.pd-item__content h3{
  font-family:var(--font-display); font-weight:800; letter-spacing:-.02em;
  font-size:clamp(1.3rem, 2.2vw, 1.7rem); margin-bottom:14px;
}
.pd-item__content p{ color:var(--stone-600); line-height:1.7; }

.pd-feature{
  background:var(--paper-100);
  border:1px solid rgba(27,24,21,.08);
  border-radius:14px;
  padding:clamp(28px,4vw,44px);
  margin:0 0 48px;
}
.pd-feature__title{
  font-family:var(--font-display); font-weight:800; letter-spacing:-.02em;
  font-size:clamp(1.35rem, 2.4vw, 1.8rem); margin-bottom:16px;
}
.pd-feature__desc{
  color:var(--stone-600); line-height:1.8; max-width:68ch;
  margin-bottom:20px;
}
.pd-feature__desc strong{ color:var(--ink-900); }
.pd-feature__badge{
  display:inline-block; font-family:var(--font-mono); font-size:.8rem; font-weight:600;
  color:var(--ink-900); background:var(--glow-400);
  padding:9px 18px; border-radius:999px;
}
.pd-feature__gallery{
  display:grid; grid-template-columns:repeat(3,1fr); gap:18px;
  margin-top:28px;
}
.pd-feature__gallery img{
  width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:10px; display:block;
}
.pd-feature__gallery figcaption{
  margin-top:10px; text-align:center; font-size:.8rem; color:var(--stone-400);
}

.pd-addons{
  max-width:var(--container); margin:0 auto; padding:0 24px var(--section-pad);
}
.pd-addons__box{
  background:#fff; border:1px solid rgba(27,24,21,.08); border-radius:14px;
  padding:clamp(26px,4vw,38px) clamp(26px,4vw,40px);
}
.pd-addons__title{
  font-family:var(--font-display); font-weight:800; letter-spacing:-.01em;
  font-size:1.3rem; margin-bottom:6px;
}
.pd-addons__note{ color:var(--stone-400); font-size:.85rem; margin-bottom:22px; }
.pd-addons__list li{
  display:flex; justify-content:space-between; align-items:baseline; gap:16px;
  padding:15px 0; border-top:1px solid rgba(27,24,21,.08);
  font-size:.95rem; color:var(--ink-900);
}
.pd-addons__list li:first-child{ border-top:none; padding-top:0; }
.pd-addons__list strong{
  font-family:var(--font-mono); font-weight:600; color:var(--walnut-700); white-space:nowrap;
}

.pd-fanoptions{
  padding:44px 0 8px; margin-bottom:8px;
  border-top:1px solid rgba(27,24,21,.08);
}
.pd-fanoptions__title{
  font-family:var(--font-display); font-weight:800; letter-spacing:-.01em;
  font-size:1.3rem; margin-bottom:6px;
}
.pd-fanoptions__note{ color:var(--stone-400); font-size:.85rem; margin-bottom:28px; }
.pd-fanoptions__grid{
  display:grid; grid-template-columns:repeat(5,1fr); gap:16px;
}
.pd-fanoption{
  background:#fff; border:1px solid rgba(27,24,21,.08); border-radius:12px;
  padding:18px 14px 20px; text-align:center;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease);
}
.pd-fanoption:hover{ transform:translateY(-4px); box-shadow:0 16px 32px -20px rgba(27,24,21,.25); }
.pd-fanoption__media{
  aspect-ratio:1/1; display:flex; align-items:center; justify-content:center;
  margin-bottom:14px;
}
.pd-fanoption__media img{ width:100%; height:100%; object-fit:contain; }
.pd-fanoption__name{ font-weight:700; font-size:.86rem; margin-bottom:6px; line-height:1.35; }
.pd-fanoption__price{ font-family:var(--font-mono); font-size:.82rem; color:var(--walnut-700); font-weight:600; }
.pd-fanoption--included .pd-fanoption__price{ color:var(--stone-400); }

.pd-final{
  background:var(--ink-900); color:var(--paper-50);
  text-align:center; padding:var(--section-pad) 24px;
}
.pd-final h2{
  font-family:var(--font-display); font-weight:800; letter-spacing:-.02em;
  font-size:clamp(1.6rem, 3.2vw, 2.3rem); margin-bottom:18px;
}
.pd-final p{ color:rgba(250,245,236,.7); margin-bottom:32px; }

@media (max-width:960px){
  .pd-hero{ grid-template-columns:1fr; }
  .pd-item, .pd-item--reverse{ grid-template-columns:1fr; }
  .pd-item--reverse .pd-item__media, .pd-item--reverse .pd-item__content{ order:initial; }
  .pd-feature__gallery{ grid-template-columns:1fr; }
  .pd-fanoptions__grid{ grid-template-columns:repeat(3,1fr); }
}

@media (max-width:560px){
  .pd-fanoptions__grid{ grid-template-columns:repeat(2,1fr); }
}

/* ============================================================
   SELF ESTIMATE
   ============================================================ */
.estimate-head{
  max-width:640px; margin:32px auto 0; padding:0 24px; text-align:center;
}
.estimate-layout{
  max-width:960px; margin:0 auto; padding:var(--section-pad) 24px 40px;
}
.estimate-group{ margin-bottom:52px; }
.estimate-group__title{
  font-family:var(--font-display); font-weight:800; letter-spacing:-.01em;
  font-size:1.2rem; margin-bottom:20px; padding-bottom:12px;
  border-bottom:1px solid rgba(27,24,21,.1);
}

/* ---------- card grid ---------- */
.estimate-cards{
  display:grid; grid-template-columns:repeat(3,1fr); gap:20px;
}
.estimate-card{
  background:#fff; border:1px solid rgba(27,24,21,.08); border-radius:14px;
  transition:border-color .3s var(--ease), box-shadow .3s var(--ease);
}
.estimate-card.is-selected{ border-color:var(--glow-400); box-shadow:0 0 0 2px var(--glow-200) inset; }
.estimate-card__media{ position:relative; aspect-ratio:4/3; background:var(--paper-100); border-radius:14px 14px 0 0; }
.estimate-card__media img{
  width:100%; height:100%; object-fit:cover; display:block; object-position:center;
  border-radius:14px 14px 0 0;
}
.estimate-card__media--top img{ object-position:center 15%; }

/* ---------- info icon + hover popup ---------- */
.estimate-info{
  position:absolute; top:10px; right:10px; z-index:3;
  width:24px; height:24px; border-radius:50%; border:none; cursor:pointer; padding:0;
  background:rgba(27,24,21,.55); color:#fff; backdrop-filter:blur(2px);
  display:flex; align-items:center; justify-content:center;
  transition:background .2s var(--ease), color .2s var(--ease);
}
.estimate-info__icon{
  font-family:var(--font-display); font-size:.75rem; font-weight:800; font-style:italic; line-height:1;
}
.estimate-info:hover, .estimate-info:focus-visible{ background:var(--glow-400); color:var(--ink-900); z-index:100; }
.estimate-info__popup{
  position:absolute; top:32px; right:0; width:300px;
  background:#fff; border:1px solid rgba(27,24,21,.1); border-radius:14px;
  box-shadow:0 24px 48px -16px rgba(27,24,21,.45);
  overflow:hidden; text-align:left;
  opacity:0; visibility:hidden; transform:translateY(6px);
  transition:opacity .2s var(--ease), transform .2s var(--ease), visibility .2s;
}
.estimate-info:hover .estimate-info__popup,
.estimate-info:focus-visible .estimate-info__popup{
  opacity:1; visibility:visible; transform:translateY(0);
}
.estimate-info__popup img{ width:100%; aspect-ratio:4/3; object-fit:cover; display:block; }
.estimate-info__popup p{
  margin:0; padding:16px 18px; font-size:.86rem; line-height:1.7; color:var(--stone-600); font-weight:400;
}
.estimate-card__body{ padding:16px 18px 18px; }
.estimate-card__name{ font-weight:600; font-size:.95rem; margin-bottom:14px; }
.estimate-card__name em{ font-style:normal; color:var(--stone-400); font-size:.85rem; }
.estimate-card__row{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.estimate-card__pricebox{ display:flex; flex-direction:column; gap:2px; }
.estimate-card__price{ font-family:var(--font-mono); font-size:.92rem; color:var(--ink-900); font-weight:600; }
.estimate-card__subtotal{
  display:none; font-family:var(--font-mono); font-size:.78rem; color:var(--walnut-700); font-weight:600;
}
.estimate-card__subtotal.is-visible{ display:block; }

/* ---------- plus button that expands into a stepper ---------- */
.estimate-card__qty{ display:flex; align-items:center; flex-shrink:0; }
.estimate-card__minus, .estimate-card__qtyvalue{ display:none; }
.estimate-card__qty.has-qty{
  border:1px solid rgba(27,24,21,.16); border-radius:999px; background:var(--paper-50);
}
.estimate-card__qty.has-qty .estimate-card__minus{ display:flex; align-items:center; justify-content:center; }
.estimate-card__qty.has-qty .estimate-card__qtyvalue{ display:block; }
.estimate-card__plus{
  width:36px; height:36px; border-radius:50%; border:none; cursor:pointer;
  background:var(--glow-400); color:var(--ink-900); font-size:1.2rem; font-weight:700; line-height:1;
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
  transition:background .2s var(--ease), transform .2s var(--ease);
}
.estimate-card__plus:hover{ transform:scale(1.08); }
.estimate-card__qty.has-qty .estimate-card__plus{
  width:32px; height:32px; border-radius:50%; background:none; color:var(--ink-900); font-size:1.05rem;
}
.estimate-card__minus{
  width:32px; height:32px; border:none; background:none; cursor:pointer;
  font-size:1.05rem; font-weight:700; color:var(--ink-900); line-height:1;
}
.estimate-card__qtyvalue{
  width:32px; height:32px; padding:0; border:none; background:transparent;
  text-align:center; font-family:var(--font-mono); font-weight:600; font-size:.9rem; color:var(--ink-900);
  -moz-appearance:textfield;
}
.estimate-card__qtyvalue::-webkit-outer-spin-button,
.estimate-card__qtyvalue::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.estimate-card__qtyvalue:focus{ outline:none; background:var(--glow-200); border-radius:8px; }

/* ---------- custom checkbox (reused by sub-option) ---------- */
.estimate-check{ position:relative; display:inline-flex; flex-shrink:0; cursor:pointer; }
.estimate-check input{
  position:absolute; inset:0; opacity:0; width:22px; height:22px; margin:0; cursor:pointer;
}
.estimate-check__box{
  width:22px; height:22px; border-radius:6px; border:1.5px solid rgba(27,24,21,.25);
  background:#fff; display:inline-flex; align-items:center; justify-content:center;
  transition:background .2s var(--ease), border-color .2s var(--ease);
}
.estimate-check__box::after{
  content:''; width:10px; height:6px; margin-top:-2px;
  border-left:2px solid var(--ink-900); border-bottom:2px solid var(--ink-900);
  transform:rotate(-45deg); opacity:0; transition:opacity .15s;
}
.estimate-check input:checked + .estimate-check__box{ background:var(--glow-400); border-color:var(--glow-400); }
.estimate-check input:checked + .estimate-check__box::after{ opacity:1; }
.estimate-check input:focus-visible + .estimate-check__box{ outline:2px solid var(--glow-400); outline-offset:2px; }
.estimate-check--sm input{ width:18px; height:18px; }
.estimate-check__box--sm{ width:18px; height:18px; border-radius:5px; }
.estimate-check__box--sm::after{ width:8px; height:5px; }

/* ---------- nested sub-option (shown once card is selected) ---------- */
.estimate-card__suboption{
  position:relative;
  display:none; align-items:center; gap:8px;
  margin-top:14px; padding:9px 10px;
  border-radius:8px; background:var(--paper-100);
  font-size:.82rem; cursor:pointer;
}
.estimate-card.is-selected .estimate-card__suboption{ display:flex; }
.estimate-suboption__label{ flex:1; }
.estimate-suboption__label em{ font-style:normal; color:var(--stone-400); }
.estimate-suboption__subtotal{ font-family:var(--font-mono); font-weight:600; font-size:.78rem; }

/* ---------- info icon inline variant (used inside sub-option rows) ---------- */
.estimate-info--inline{
  position:relative; top:auto; right:auto; width:16px; height:16px; flex-shrink:0;
  background:rgba(27,24,21,.35);
}
.estimate-info--inline .estimate-info__icon{ font-size:.6rem; }
.estimate-info--inline .estimate-info__popup{
  top:calc(100% + 8px); right:0; width:260px; z-index:20;
}

@media (max-width:860px){
  .estimate-cards{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:560px){
  .estimate-cards{ grid-template-columns:1fr; }
}

.estimate-summary{
  position:sticky; bottom:0; z-index:200;
  background:rgba(250,245,236,.92); backdrop-filter:blur(8px);
  border-top:1px solid rgba(27,24,21,.1);
  padding:16px 24px calc(16px + env(safe-area-inset-bottom));
}
.estimate-summary__inner{
  max-width:760px; margin:0 auto;
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
}
.estimate-summary__total{
  display:flex; align-items:baseline; gap:10px;
}
.estimate-summary__total span{ font-size:.85rem; color:var(--stone-400); }
.estimate-summary__total strong{
  font-family:var(--font-mono); font-size:1.5rem; font-weight:700; color:var(--ink-900);
}
.estimate-summary__actions{ display:flex; gap:10px; }
.estimate-summary__btn{ padding:12px 20px; font-size:.86rem; }
.estimate-summary__note{
  max-width:760px; margin:10px auto 0; font-size:.74rem; color:var(--stone-400); text-align:center;
}

.estimate-final{
  background:var(--ink-900); color:var(--paper-50);
  text-align:center; padding:var(--section-pad) 24px;
}
.estimate-final h2{
  font-family:var(--font-display); font-weight:800; letter-spacing:-.02em;
  font-size:clamp(1.6rem, 3.2vw, 2.3rem); margin-bottom:18px;
}
.estimate-final p{ color:rgba(250,245,236,.7); margin-bottom:32px; }
.estimate-final__actions{
  display:inline-flex; gap:14px; flex-wrap:wrap; justify-content:center;
}

/* off-screen card rendered to image via html2canvas */
.estimate-export{
  position:fixed; top:0; left:-4000px; z-index:-1;
  width:480px; padding:44px 38px; background:var(--paper-50); color:var(--ink-900);
  font-family:var(--font-body);
}
.estimate-export__eyebrow{
  font-family:var(--font-mono); font-weight:700; font-size:.72rem; letter-spacing:.14em;
  text-transform:uppercase; color:var(--walnut-700); margin-bottom:10px;
}
.estimate-export__title{
  font-family:var(--font-display); font-weight:800; font-size:1.5rem; letter-spacing:-.01em; margin-bottom:6px;
}
.estimate-export__date{ font-size:.8rem; color:var(--stone-400); margin-bottom:24px; }
.estimate-export__list{ border-top:1px solid rgba(27,24,21,.12); }
.estimate-export__row{
  display:flex; justify-content:space-between; gap:16px;
  padding:12px 0; border-bottom:1px solid rgba(27,24,21,.08);
  font-size:.88rem;
}
.estimate-export__row-price{ font-family:var(--font-mono); font-weight:600; white-space:nowrap; }
.estimate-export__total{
  display:flex; justify-content:space-between; align-items:baseline;
  margin-top:20px; padding-top:18px; border-top:2px solid var(--ink-900);
}
.estimate-export__total span{ font-size:.9rem; color:var(--stone-600); }
.estimate-export__total strong{ font-family:var(--font-mono); font-size:1.5rem; color:var(--ink-900); }
.estimate-export__footer{
  margin-top:26px; padding-top:18px; border-top:1px solid rgba(27,24,21,.1);
  font-size:.72rem; color:var(--stone-400); line-height:1.7;
}

@media (max-width:640px){
  .estimate-summary__inner{ justify-content:center; text-align:center; }
}

/* ============================================================
   FLOATING CTA
   ============================================================ */
.fab-wrap{
  position:fixed; right:24px; bottom:24px; z-index:900;
  opacity:0; transform:translateY(12px); pointer-events:none;
  transition:opacity .4s var(--ease), transform .4s var(--ease);
}
.fab-wrap.is-visible{ opacity:1; transform:translateY(0); pointer-events:auto; }

.fab-track{
  position:relative;
  transition:transform .6s cubic-bezier(.22,1.5,.36,1);
  will-change:transform;
}

.fab-cta{
  position:relative; z-index:2;
  display:inline-flex; align-items:center; justify-content:center;
  padding:14px 22px; border-radius:999px;
  background:var(--glow-400); color:var(--ink-900);
  font-family:inherit; font-size:.85rem; font-weight:600;
  box-shadow:0 12px 30px -10px rgba(27,24,21,.3);
  border:1px solid transparent; cursor:pointer;
  transition:background .3s, color .3s;
}
.fab-cta:hover{ background:var(--ink-900); color:var(--paper-50); }
.fab-wrap.is-open .fab-cta{ background:var(--ink-900); color:var(--paper-50); }

.fab-option{
  position:absolute; right:0; bottom:0; z-index:1;
  display:inline-flex; align-items:center; justify-content:center;
  padding:12px 20px; border-radius:999px; white-space:nowrap;
  background:#fff; color:var(--ink-900);
  font-size:.82rem; font-weight:600;
  border:1px solid rgba(27,24,21,.12);
  box-shadow:0 10px 24px -10px rgba(27,24,21,.28);
  opacity:0; transform:translateY(0) scale(.9); pointer-events:none;
  transition:opacity .25s var(--ease), transform .25s var(--ease);
}
.fab-option--kakao{ transition-delay:0s; }
.fab-option--phone{ transition-delay:.04s; }
.fab-wrap.is-open .fab-option--kakao{
  opacity:1; transform:translateY(-64px) scale(1); pointer-events:auto;
}
.fab-wrap.is-open .fab-option--phone{
  opacity:1; transform:translateY(-124px) scale(1); pointer-events:auto;
}
.fab-option:hover{ border-color:var(--glow-400); background:var(--glow-200); }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1360px){
  .package-grid--four{ grid-template-columns:repeat(2,1fr); }
}

@media (max-width:960px){
  .about__grid{ grid-template-columns:1fr; }
  .pillar, .pillar--light{ grid-template-columns:1fr; }
  .pillar--light .pillar__media, .pillar--light .pillar__content{ order:initial; }
  .package-grid{ grid-template-columns:1fr; }
  .gallery__grid{ grid-template-columns:repeat(2,1fr); }
  .gallery__item--wide{ grid-column:span 2; }
}

.package-tabs-mobile{ display:none; }

@media (max-width:640px){
  .package-tabs-mobile{
    display:flex; gap:8px; margin:0 0 20px; padding:0 24px;
    overflow-x:auto; scrollbar-width:none;
  }
  .package-tabs-mobile::-webkit-scrollbar{ display:none; }
  .package-tabs-mobile__btn{
    flex:0 0 auto; padding:9px 18px; border-radius:999px; border:1px solid rgba(27,24,21,.16);
    background:#fff; color:var(--stone-600); font-size:.84rem; font-weight:600; white-space:nowrap;
    transition:background .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease);
  }
  .package-tabs-mobile__btn.is-active{
    background:var(--ink-900); color:var(--paper-50); border-color:var(--ink-900);
  }

  .package-grid--four{
    display:flex; grid-template-columns:none;
    overflow-x:auto; scroll-snap-type:x mandatory; gap:16px;
    margin:0 -24px; padding:4px 24px 12px; scrollbar-width:none;
  }
  .package-grid--four::-webkit-scrollbar{ display:none; }
  .package-grid--four .package-card{
    flex:0 0 84%; scroll-snap-align:start; scroll-snap-stop:always;
  }
}

@media (max-width:720px){
  .nav__links{
    position:fixed; inset:0 0 auto auto; top:0; height:100svh; width:min(78vw,320px);
    background:#fff; flex-direction:column; align-items:flex-start;
    justify-content:center; gap:28px; padding:24px 32px; z-index:1000;
    box-shadow:-12px 0 40px -12px rgba(27,24,21,.2);
    transform:translateX(100%); transition:transform .45s var(--ease);
    touch-action:pan-y;
  }
  .nav__links.is-open{ transform:translateX(0); }
  .nav__backdrop{
    display:block; position:fixed; inset:0; z-index:999;
    background:rgba(27,24,21,.4);
    opacity:0; visibility:hidden; transition:opacity .3s var(--ease), visibility .3s;
  }
  .nav__backdrop.is-open{ opacity:1; visibility:visible; }
  .nav__links a{ color:var(--ink-900) !important; font-size:1.1rem; }
  .nav__toggle{
    display:flex; flex-direction:column; gap:5px; width:26px;
    background:none; border:none; cursor:pointer; z-index:1001; padding:6px;
  }
  .nav__toggle span{
    height:2px; background:var(--paper-50); border-radius:2px; transition:transform .3s, opacity .3s;
  }
  .nav.is-scrolled .nav__toggle span,
  .subpage .nav__toggle span{ background:var(--ink-900); }
  .nav__toggle.is-open span{ background:var(--paper-50) !important; }
  .nav__toggle.is-open span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
  .nav__toggle.is-open span:nth-child(2){ opacity:0; }
  .nav__toggle.is-open span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

  .gallery__grid{ grid-template-columns:1fr; }
  .gallery__item--wide{ grid-column:span 1; }
  .about__stats{ flex-wrap:wrap; gap:24px; }
  .fab-wrap{ right:16px; bottom:16px; }
  .fab-cta{ padding:12px 18px; font-size:.8rem; }
  .fab-option{ padding:10px 16px; font-size:.78rem; }
  .fab-wrap.is-open .fab-option--kakao{ transform:translateY(-58px) scale(1); }
  .fab-wrap.is-open .fab-option--phone{ transform:translateY(-112px) scale(1); }

  .nav__dropdown{ width:100%; }
  .nav__dropdown-menu{
    position:static; transform:none; opacity:1; visibility:visible; pointer-events:auto;
    box-shadow:none; padding:6px 0 0 4px; margin-top:10px; min-width:0;
    display:flex; flex-direction:column; gap:2px;
  }
  .nav__dropdown-menu a{ color:var(--stone-600) !important; font-size:.92rem; padding:7px 0; }
}

/* ============================================================
   REDUCED MOTION
   ============================================================ */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  .reveal-up, [data-reveal]{ animation:none !important; transition:none !important; opacity:1 !important; transform:none !important; }
  .hero__scroll span{ animation:none; }
  *{ transition-duration:.01ms !important; animation-duration:.01ms !important; }
}
