/* Hotel DADA — 해 질 녘의 종이 같은 색, 가는 세리프, 넓은 여백. 애니메이션은 html.anim 일 때만 숨김 상태에서 시작한다. */
:root {
  --paper: #ece6da; --paper-2: #e2dac9; --ink: #26221d; --muted: #6f685c; --line: rgba(38,34,29,.18);
  --amber: #c79a5b; --night: #16120d; --dusk: #2a313c;
  --serif: 'Cormorant Garamond', 'Noto Serif KR', 'Noto Serif JP', 'Noto Serif SC', serif;
  --sans: 'Noto Sans KR', 'Noto Sans JP', 'Noto Sans SC', system-ui, sans-serif;
  --ease: cubic-bezier(.44,.45,.32,1);
  --pad: clamp(20px, 5vw, 72px);
}
:lang(ko) { --serif: 'Cormorant Garamond', 'Noto Serif KR', serif; --sans: 'Noto Sans KR', system-ui, sans-serif; }
:lang(ja) { --serif: 'Cormorant Garamond', 'Noto Serif JP', serif; --sans: 'Noto Sans JP', system-ui, sans-serif; }
:lang(zh-CN) { --serif: 'Cormorant Garamond', 'Noto Serif SC', serif; --sans: 'Noto Sans SC', system-ui, sans-serif; }

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: var(--sans); font-weight: 300; font-size: 16px; line-height: 1.9; -webkit-font-smoothing: antialiased; overflow-x: hidden; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
h1, h2, h3, p, ul, dl, dd, figure { margin: 0; padding: 0; }
ul { list-style: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; padding: 0; }
:focus-visible { outline: 1px solid var(--amber); outline-offset: 4px; }
.wrap { width: min(1280px, 100% - var(--pad) * 2); margin-inline: auto; }
.narrow { width: min(760px, 100% - var(--pad) * 2); }
.center { text-align: center; }
.kicker { font-family: var(--serif); font-size: 15px; letter-spacing: .28em; text-transform: uppercase; color: var(--amber); margin-bottom: 18px; }
.display { font-family: var(--serif); font-weight: 400; font-size: clamp(34px, 5.2vw, 70px); line-height: 1.22; letter-spacing: -.01em; }
.display.small { font-size: clamp(26px, 3.2vw, 40px); }
.display.light, .lead.light { color: #f3ecdf; }
.lead { font-size: clamp(15px, 1.25vw, 17px); line-height: 2.05; color: var(--muted); margin-top: 26px; max-width: 640px; }
.center .lead { margin-inline: auto; }
.btn { display: inline-block; margin-top: 34px; padding: 16px 38px; border: 1px solid currentColor; font-size: 13px; letter-spacing: .22em; text-transform: uppercase; transition: background .4s var(--ease), color .4s var(--ease), border-color .4s; }
.btn:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.btn--light { color: #f3ecdf; }
.btn--light:hover { background: #f3ecdf; color: var(--night); border-color: #f3ecdf; }
.more { display: inline-block; margin-top: 10px; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; border-bottom: 1px solid currentColor; padding-bottom: 3px; }

/* 필름 그레인 — 8프레임씩 끊어 움직이는 작은 입자 */
.grain { position: fixed; inset: -50%; z-index: 90; pointer-events: none; opacity: .09; mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 .9 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"); }
.anim .grain { animation: grain 7.6s steps(8) infinite; }
@keyframes grain { 0%{transform:translate(0,0)} 12%{transform:translate(-6%,4%)} 25%{transform:translate(5%,-7%)} 37%{transform:translate(-4%,8%)} 50%{transform:translate(7%,3%)} 62%{transform:translate(-8%,-4%)} 75%{transform:translate(3%,6%)} 87%{transform:translate(-5%,-8%)} 100%{transform:translate(0,0)} }

/* 로더 */
#loader { display: none; position: fixed; inset: 0; z-index: 200; background: var(--night); color: #efe7d8; align-items: center; justify-content: center; }
.anim #loader { display: flex; animation: loaderFail 0s 6s forwards; }
@keyframes loaderFail { to { visibility: hidden; } }
.loader-inner { text-align: center; display: grid; gap: 10px; justify-items: center; }
.loader-inner img { width: 84px; height: 84px; opacity: 0; }
.loader-name { font-family: var(--serif); font-size: 30px; letter-spacing: .3em; text-transform: uppercase; opacity: 0; }
.loader-sub { font-family: var(--serif); font-style: italic; font-size: 16px; letter-spacing: .2em; opacity: 0; color: var(--amber); }

/* 커서 */
.cursor { position: fixed; left: 0; top: 0; width: 34px; height: 34px; margin: -17px 0 0 -17px; border: 1px solid #fff; border-radius: 50%; z-index: 150; pointer-events: none; mix-blend-mode: difference; opacity: 0; transition: width .3s var(--ease), height .3s var(--ease), margin .3s var(--ease), opacity .3s; }
.cursor.on { opacity: 1; }
.cursor.big { width: 74px; height: 74px; margin: -37px 0 0 -37px; }
@media (pointer: coarse) { .cursor { display: none; } }

/* 헤더 */
.site-header { position: fixed; inset: 0 0 auto 0; z-index: 100; display: flex; align-items: center; justify-content: space-between; padding: 22px var(--pad); color: #f3ecdf; transition: background .5s, color .5s, padding .5s; }
.site-header.is-solid, body:not(.page-home):not(.page-room) .site-header { background: rgba(236,230,218,.88); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); color: var(--ink); padding-block: 14px; }
.menu-open .site-header { background: transparent !important; backdrop-filter: none; color: #f3ecdf !important; }
.brand img { width: 56px; height: 56px; transition: width .4s, height .4s; }
.is-solid .brand img { width: 46px; height: 46px; }
.header-right { display: flex; align-items: center; gap: 26px; }
.book-link { font-size: 12px; letter-spacing: .28em; text-transform: uppercase; border-bottom: 1px solid currentColor; padding-bottom: 3px; }
.menu-btn { position: relative; width: 62px; height: 62px; border: 1px solid currentColor; border-radius: 50%; transition: transform .5s var(--ease); }
.menu-btn:hover { transform: scale(1.08); }
.menu-btn span { position: absolute; left: 19px; right: 19px; height: 1px; background: currentColor; transition: transform .5s var(--ease), top .5s var(--ease); }
.menu-btn span:first-child { top: 26px; } .menu-btn span:last-child { top: 34px; }
.menu-open .menu-btn span:first-child { top: 30px; transform: rotate(20deg); }
.menu-open .menu-btn span:last-child { top: 30px; transform: rotate(-20deg); }

/* 전체 메뉴 */
.menu { position: fixed; inset: 0; z-index: 95; background: var(--night); color: #efe7d8; display: flex; align-items: center; clip-path: circle(0 at calc(100% - 60px) 52px); visibility: hidden; transition: clip-path .9s var(--ease), visibility 0s .9s; }
.menu-open .menu { clip-path: circle(150% at calc(100% - 60px) 52px); visibility: visible; transition: clip-path .9s var(--ease), visibility 0s; }
.menu-inner { width: min(1280px, 100% - var(--pad) * 2); margin-inline: auto; display: grid; gap: 48px; }
.menu-list a { display: inline-block; font-family: var(--serif); font-size: clamp(34px, 6.4vw, 84px); line-height: 1.3; opacity: .85; transition: opacity .3s, transform .5s var(--ease), color .3s; }
.menu-list a:hover { opacity: 1; color: var(--amber); transform: translateX(14px); }
.menu-foot { display: flex; align-items: center; gap: 36px; flex-wrap: wrap; }
.menu-foot .btn { margin-top: 0; }
.lang-switch { display: flex; gap: 18px; flex-wrap: wrap; font-size: 14px; letter-spacing: .08em; }
.lang-switch a { opacity: .55; transition: opacity .3s; }
.lang-switch a:hover, .lang-switch a.on { opacity: 1; }
.lang-switch a.on { border-bottom: 1px solid var(--amber); }

/* 히어로 */
.hero { position: relative; height: min(100svh, 1100px); min-height: 620px; overflow: hidden; color: #f3ecdf; background: var(--night); }
.hero-media, .hero-media img { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-media img { object-fit: cover; }
.hero-shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(22,18,13,.35) 0%, rgba(22,18,13,.05) 30%, rgba(22,18,13,.5) 60%, rgba(22,18,13,.78) 100%); }
.hero-copy { position: absolute; left: var(--pad); right: var(--pad); bottom: 13vh; }
.hero-title { font-family: var(--serif); font-weight: 300; font-size: clamp(64px, 13vw, 190px); line-height: .95; letter-spacing: -.02em; }
.hero-sub { margin-top: 28px; max-width: 560px; font-size: clamp(14px, 1.2vw, 17px); line-height: 2; opacity: .92; }
.hero .kicker { color: #e4c590; }
.scroll-cue { position: absolute; right: var(--pad); bottom: 7vh; display: grid; justify-items: center; gap: 12px; font-size: 11px; letter-spacing: .3em; text-transform: uppercase; writing-mode: vertical-rl; }
.scroll-cue i { width: 1px; height: 64px; background: rgba(243,236,223,.35); position: relative; overflow: hidden; }
.scroll-cue i::after { content: ''; position: absolute; left: 0; top: -40%; width: 1px; height: 40%; background: #f3ecdf; animation: cue 2.2s var(--ease) infinite; }
@keyframes cue { to { top: 100%; } }

/* 소개 */
.intro { padding: clamp(110px, 20vh, 220px) 0 clamp(60px, 10vh, 120px); }
.intro .display { margin-bottom: 14px; }
.intro .lead { max-width: 600px; }

/* 흩어진 사진 */
.scatter { position: relative; height: clamp(760px, 96vw, 1500px); margin-bottom: 4vh; }
.sc { position: absolute; will-change: transform; }
.sc img { width: 100%; height: 100%; object-fit: cover; }
.sc-a { left: 7%; top: 0; width: 36%; aspect-ratio: 4/3; }
.sc-b { right: 11%; top: 16%; width: 22%; aspect-ratio: 2/3; }
.sc-c { left: 30%; top: 55%; width: 32%; aspect-ratio: 3/2; }

/* 이미지 와이프 */
.wipe { overflow: hidden; }
.wipe img { transition: transform 1.2s var(--ease); }
.anim .wipe:not(.in) { clip-path: inset(0 100% 0 0); }
a:hover > .wipe img, .room-card:hover .wipe img { transform: scale(1.045); }

/* 옥상 */
.roof { background: var(--night); }
.roof-stage { position: relative; min-height: clamp(640px, 100svh, 1100px); overflow: hidden; color: #f3ecdf; display: flex; align-items: flex-end; }
.roof-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transform: scale(1.06); transition: opacity 1.6s ease, transform 6s ease; }
.roof-img.is-on { opacity: 1; transform: scale(1); }
.roof-shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(22,18,13,.25), rgba(22,18,13,.7)); }
.roof-copy { position: relative; z-index: 2; width: min(1280px, 100% - var(--pad) * 2); margin: 0 auto 12vh; }
.roof-copy .lead { max-width: 520px; }
.roof-tabs { display: flex; gap: 10px; margin-top: 36px; flex-wrap: wrap; }
.roof-tabs button { padding: 10px 26px; border: 1px solid rgba(243,236,223,.45); border-radius: 40px; font-size: 13px; letter-spacing: .14em; transition: background .4s, color .4s, border-color .4s; }
.roof-tabs button.is-on, .roof-tabs button:hover { background: #f3ecdf; color: var(--night); border-color: #f3ecdf; }

/* 객실 */
.rooms-sec { padding: clamp(90px, 16vh, 180px) 0; }
.room-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(28px, 3.4vw, 56px) clamp(20px, 2.4vw, 40px); margin-top: clamp(40px, 7vh, 80px); }
.room-card { display: block; }
.room-card .wipe { aspect-ratio: 4/5; background: var(--paper-2); }
.room-card .wipe img { width: 100%; height: 100%; object-fit: cover; }
.room-card h3 { font-family: var(--serif); font-weight: 400; font-size: clamp(22px, 2vw, 30px); margin-top: 20px; line-height: 1.3; }
.room-card p { color: var(--muted); font-size: 14px; margin-top: 4px; }
.room-grid--mini { grid-template-columns: repeat(5, 1fr); }
.room-grid--mini .room-card h3 { font-size: 18px; }
.rooms-sec--list { padding-top: 0; }

/* 주변 */
.area { padding: 0 0 clamp(90px, 16vh, 180px); }
.area-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 90px); margin-top: clamp(40px, 7vh, 80px); }
.area-grid .wipe { aspect-ratio: 3/2; }
.area-grid .wipe img { width: 100%; height: 100%; object-fit: cover; }
.area-grid h3 { font-family: var(--serif); font-weight: 400; font-size: clamp(24px, 2.4vw, 34px); margin-top: 22px; }
.area-grid p { color: var(--muted); margin-top: 8px; font-size: 15px; max-width: 480px; }

/* 예약 유도 */
.cta { padding: clamp(110px, 22vh, 240px) 0; background: radial-gradient(120% 120% at 50% 110%, #5a3f26 0%, var(--dusk) 38%, var(--night) 80%); }
.cta .lead { margin-inline: auto; }

/* 서브 페이지 */
.page-head { padding: clamp(150px, 24vh, 260px) 0 clamp(40px, 7vh, 80px); }
.info-sec { padding-bottom: clamp(90px, 16vh, 180px); }
.info-list { display: grid; grid-template-columns: 1fr 1fr; gap: 0 clamp(30px, 6vw, 110px); }
.info-list article { padding: 34px 0 38px; border-top: 1px solid var(--line); }
.info-list h2 { font-family: var(--serif); font-weight: 400; font-size: 26px; margin-bottom: 10px; }
.info-list p { color: var(--muted); font-size: 15px; line-height: 2; }
.info-list a { border-bottom: 1px solid currentColor; }

/* 객실 상세 */
.room-hero { height: min(78svh, 900px); min-height: 460px; position: relative; overflow: hidden; background: var(--night); }
.room-hero-media, .room-hero-media img { width: 100%; height: 100%; object-fit: cover; }
.room-body { padding: clamp(70px, 12vh, 140px) 0 clamp(50px, 8vh, 90px); }
.room-cols { display: grid; grid-template-columns: 1.2fr 1fr; gap: clamp(40px, 8vw, 140px); align-items: start; }
.spec div { padding: 18px 0; border-top: 1px solid var(--line); display: flex; justify-content: space-between; gap: 24px; }
.spec dt { font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--amber); padding-top: 3px; }
.spec dd { text-align: right; }
.spec .spec-note { display: block; font-size: 14px; color: var(--muted); text-align: left; }
.spec .spec-note dd { text-align: left; line-height: 1.9; }
.gallery-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(16px, 2vw, 32px); }
.gallery-grid .wipe { aspect-ratio: 4/5; }
.gallery-grid img { width: 100%; height: 100%; object-fit: cover; }

/* 푸터 */
.site-footer { background: var(--night); color: #d9d0bf; padding-top: clamp(70px, 12vh, 130px); }
.footer-grid { width: min(1280px, 100% - var(--pad) * 2); margin-inline: auto; display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 48px; padding-bottom: 70px; }
.footer-logo { width: 72px; height: 72px; margin-bottom: 22px; }
.footer-addr { font-size: 14px; line-height: 1.9; opacity: .85; max-width: 380px; }
.footer-addr span { opacity: .7; font-size: 13px; }
.footer-links { display: grid; gap: 6px; font-size: 14px; align-content: start; }
.footer-links a { opacity: .8; transition: opacity .3s, color .3s; width: max-content; }
.footer-links a:hover { opacity: 1; color: var(--amber); }
.lang-switch--footer { flex-direction: column; gap: 6px; align-content: start; }
.status-bar { border-top: 1px solid rgba(217,208,191,.2); padding: 18px var(--pad); display: flex; justify-content: space-between; gap: 20px; flex-wrap: wrap; font-size: 12px; letter-spacing: .08em; opacity: .85; }
.status-clock { font-variant-numeric: tabular-nums; }

/* 스크롤 애니메이션 시작 상태 */
.anim [data-fade] { opacity: 0; transform: translateY(26px); }
.anim [data-reveal-text] { opacity: 0; transform: translateY(40px); }
.anim [data-lines] .ch { display: inline-block; transform: translateY(105%); }
.anim [data-lines] { overflow: hidden; padding-bottom: .1em; }

@media (max-width: 1000px) {
  .room-grid { grid-template-columns: repeat(2, 1fr); }
  .room-grid--mini { grid-template-columns: repeat(2, 1fr); }
  .room-cols { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 700px) {
  .book-link { display: none; }
  .menu-btn { width: 52px; height: 52px; } .menu-btn span { left: 15px; right: 15px; } .menu-btn span:first-child { top: 22px; } .menu-btn span:last-child { top: 28px; }
  .menu-open .menu-btn span:first-child, .menu-open .menu-btn span:last-child { top: 25px; }
  .brand img { width: 46px; height: 46px; }
  .scroll-cue { display: none; }
  .hero-copy { bottom: 9vh; }
  .scatter { height: auto; display: grid; gap: 26px; padding: 0 var(--pad); }
  .sc { position: static; width: 100% !important; transform: none !important; }
  .sc-b { width: 70% !important; margin-left: auto; }
  .room-grid, .room-grid--mini { grid-template-columns: 1fr 1fr; gap: 26px 14px; }
  .area-grid, .info-list, .gallery-grid { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr; }
  .roof-copy { margin-bottom: 9vh; }
}
@media (prefers-reduced-motion: reduce) { * { animation: none !important; transition-duration: .01ms !important; } html { scroll-behavior: auto; } }
