:root{--nav-h:90px;--nav-ink:#35505c;--navy:#123548;--blue:#0649c8;--paper:#fffdf7;--muted:#526d77;--line:#ced5d4;--sweep-teal:#1E93A6;--sweep-violet:#5B4FA6}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:85px}
body{margin:0;color:var(--navy);background:var(--paper);font-family:'Noto Sans KR',sans-serif;-webkit-font-smoothing:antialiased;-webkit-user-select:none;-moz-user-select:none;user-select:none}
input,textarea,select,[contenteditable]{-webkit-user-select:text;-moz-user-select:text;user-select:text}
img{-webkit-user-drag:none;user-drag:none}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer}
button,a,summary{-webkit-tap-highlight-color:transparent}
button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #ed91a9;outline-offset:6px}
img{display:block;max-width:100%}
h1,h2,h3,p{margin:0}
h2{font-weight:700;font-size:clamp(32px,4.6vw,66px);line-height:1.3;letter-spacing:-.055em;word-break:keep-all}
p{font-size:17px;line-height:1.9;word-break:keep-all}
h3{font-size:24px;letter-spacing:-.04em}
.eyebrow{font:12px/1.5 'Space Mono',monospace;letter-spacing:.12em;display:block}
.section{padding:110px max(6vw,24px)}
.skip{position:fixed;top:-70px;z-index:100;background:#fff;padding:15px}
.skip:focus{top:0}

/* ── site nav (실제 사이트 골격, IP 라이트 테마로 재배색) ── */
/* 배경/구분선은 화면 끝까지 채우되, 안쪽 콘텐츠는 다른 5개 페이지(max-width:1180px 중앙정렬)와
   동일한 위치에 오도록 padding으로 맞춘다 — PC 와이드 화면에서 로고가 화면 끝에 붙지 않게. */
nav{display:flex;align-items:flex-start;justify-content:space-between;padding:26px max(32px, calc((100% - 1180px) / 2 + 32px));position:relative;z-index:20;background:var(--paper);border-bottom:1px solid #12354816}
.logo-block{display:grid;grid-template-columns:auto 1fr;row-gap:1px}
.logo{display:contents;text-decoration:none}
.logo-c,.logo-name{font-family:'Black Han Sans',sans-serif;font-size:20px;letter-spacing:1px;color:var(--navy);line-height:1;align-self:center}
.logo-name{grid-column:2}
.logo-tag{grid-column:2;justify-self:center;text-align:center;font-family:'Space Mono','Noto Sans KR',monospace;font-size:10.5px;letter-spacing:.5px;color:var(--muted);text-transform:uppercase}
.nav-right{display:flex;align-items:center;gap:16px;padding-top:2px}
.lang{display:flex;align-items:center;gap:5px}
.lang button{border:none;background:none;padding:11px 4px;margin:-11px -4px;cursor:pointer;color:var(--muted);font-family:'Space Mono','Noto Sans KR',monospace;font-size:12px;font-weight:700;letter-spacing:.5px}
.lang button:hover{color:var(--navy)}
.lang button.on{color:var(--navy)}
.lang .lang-sep{color:#12354840;font-family:'Space Mono','Noto Sans KR',monospace;font-size:12px}
.nav-menu{display:flex;gap:24px;list-style:none;margin:0 8px 0 0;padding:0;align-items:center;font-family:'Space Mono','Noto Sans KR',monospace;font-size:12px}
/* 메뉴 글자는 해변 그림 위에 얹히므로 본문 보조색(--muted)보다 한 단계 진한 --nav-ink */
.nav-menu a{font-family:'Space Mono','Noto Sans KR',monospace;font-size:12px;letter-spacing:.5px;color:var(--nav-ink);text-decoration:none}
.nav-menu a:hover,.nav-menu a.on{color:var(--navy)}
/* 메뉴 글자에 자개빛이 한 번 스치는 호버 효과 — 다른 5개 페이지와 같은 구조(site.css 참고)지만,
   밝은 배경에 맞춰 옅은 파스텔 대신 중간 명도의 청록·남보라를 쓴다(기존 헤더용 밝은 색 재사용 금지). */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion: no-preference){
  .nav-menu a:not([aria-current="page"]) .nav-sweep{
    background-image:linear-gradient(90deg,
      #0867ba 0%, #0867ba 33%,
      var(--sweep-violet) 40%, #0867ba 47%, var(--sweep-teal) 54%,
      var(--nav-ink) 67%, var(--nav-ink) 100%);
    background-size:300% 100%;
    background-position:100% 0;
    -webkit-background-clip:text; background-clip:text;
    color:var(--nav-ink); -webkit-text-fill-color:transparent;
    transition:background-position .3s ease, color .3s ease;
  }
  .nav-menu a:not([aria-current="page"]):hover .nav-sweep{
    background-position:0% 0;
    color:#0867ba;
  }
}
.nav-backdrop{position:fixed;inset:0;z-index:49;background:rgba(20,20,10,.25);opacity:0;pointer-events:none;transition:opacity .3s ease}
.nav-backdrop.open{opacity:1;pointer-events:auto}
.nav-overlay{
  position:fixed;top:0;right:0;bottom:0;z-index:50;
  width:min(420px,46vw);background:#fffdf7f7;
  display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;
  padding:96px 40px 40px;overflow-y:auto;
  transform:translateX(100%);
  /* 닫힌 패널 그림자가 밝은 배경에서 오른쪽 회색 띠로 보이던 문제 — 닫히면 숨기고 그림자도 연 뒤에만 */
  visibility:hidden;box-shadow:none;
  transition:transform .38s cubic-bezier(.32,.72,0,1),box-shadow .38s ease,visibility 0s linear .38s;
}
.nav-overlay.open{transform:translateX(0);visibility:visible;box-shadow:-24px 0 60px rgba(0,0,0,.18);transition:transform .38s cubic-bezier(.32,.72,0,1),box-shadow .38s ease,visibility 0s}
.overlay-close{position:absolute;top:22px;right:24px;font-size:20px}
/* 헤더용 nav{padding/height} 규칙이 이 안의 <nav class="overlay-links">에도 걸리므로
   메뉴 패널 안에서는 무시하고 패널 자체 padding(.nav-overlay)만 쓰도록 명시적으로 리셋 */
.overlay-links{display:flex;flex-direction:column;gap:26px;text-align:left;padding:0;height:auto}
@media(max-width:560px){ .nav-overlay{width:min(340px,84vw);padding:88px 28px 32px} }
/* 상단 메뉴는 따로 띠를 두지 않고 해변 그림 위에 얹는다. 그림은 메뉴 뒤까지 이어지고,
   글자가 읽히도록 맨 위만 종이색으로 옅게 덮었다가 풀어 준다(.hero::before). 메뉴 패널 안 nav에는 걸리지 않게 body > nav로 한정 */
body>nav{position:absolute;top:0;left:0;right:0;background:transparent;border-bottom:0}
.overlay-links a{font-family:'Black Han Sans',sans-serif;font-size:26px;color:var(--navy);text-decoration:none}
.overlay-links .overlay-ig{font-family:'Space Mono','Noto Sans KR',monospace;font-size:13px;color:var(--muted);margin-top:10px}
.icon-btn{background:none;border:none;color:var(--navy);cursor:pointer;display:flex;align-items:center;justify-content:center;width:44px;height:44px;margin:-12px;opacity:.75;font-family:'Space Mono','Noto Sans KR',monospace;font-size:13px}
.icon-btn:hover{opacity:1}
.icon-btn.menu-btn{display:none}
@media(max-width:900px){.nav-menu{display:none}.icon-btn.menu-btn{display:flex}.nav-right{gap:20px}}

.hero{position:relative;isolation:isolate;overflow:hidden;min-height:calc(760px + var(--nav-h));height:100svh;max-height:calc(1080px + var(--nav-h));background:#e7ede0}
.hero::before{content:'';position:absolute;left:0;right:0;top:0;height:calc(var(--nav-h) + 90px);background:linear-gradient(to bottom,rgba(255,253,247,.78) 0%,rgba(255,253,247,.5) 45%,rgba(255,253,247,0) 100%);z-index:-1;pointer-events:none}
/* 해변 → 이야기: 모래색(#FDEABB)과 다음 배경색을 먼저 맞추고 경계만 짧게 푼다.
   해변 그림은 스크롤에 따라 움직이므로 움직이지 않는 쪽(섹션)에 건다 */
.hero::after{content:'';position:absolute;left:0;right:0;bottom:0;height:36px;background:linear-gradient(to bottom,rgba(253,234,187,0),#fdeabb);z-index:-1;pointer-events:none}
.story{background:linear-gradient(to bottom,#fdeabb 0,var(--paper) 140px)}
.beach{position:absolute;inset:-25px;background:url('assets/beach.webp') center 44%/cover;z-index:-2;transform:translateY(var(--shore-y,0px));will-change:transform}
.hero-inner{height:100%;position:relative;padding:calc(55px + var(--nav-h)) 6% 55px}
.hero .eyebrow{margin-bottom:22px}
.hero h1{font-family:'Noto Sans KR',sans-serif;font-weight:900;font-size:clamp(64px,8.7vw,142px);line-height:.89;letter-spacing:-.05em;position:relative;z-index:2;max-width:1000px}
.title-dot{color:#dc7495}
.hero-name{font-size:26px;font-weight:700;margin-top:22px;letter-spacing:-.04em}
.hero-character{position:absolute;width:clamp(250px,29vw,445px);right:10%;bottom:68px;transform:translateY(var(--char-y,0px));z-index:1}
.hero-character img{position:relative;z-index:1;filter:drop-shadow(4px 12px 6px #58695514);animation:arrive 1.2s .25s both;transform-origin:50% 92%} /* 발끝을 축으로 기울게(마우스 반응, ip-story.js) */
html.no-hero-arrive .hero-character img{animation:none}
.character-shadow{position:absolute;bottom:-5px;left:16%;width:75%;height:26px;border-radius:50%;background:#786b5940;filter:blur(11px);transform:rotate(-8deg)}
.hero-note{position:absolute;left:6%;bottom:155px;max-width:380px}
.hero-note p{font-size:18px;line-height:1.9}
/* 주요 동선(이야기 ↓)은 그대로, 그 옆에 작은 '프로필 보기 +' */
.hero-actions{position:absolute;left:6%;bottom:48px;z-index:3;display:flex;align-items:center;gap:30px}
.profile-open{display:inline-flex;align-items:center;gap:8px;border:0;background:none;padding:10px 0 12px;font:13px 'Noto Sans KR',sans-serif;color:var(--navy);opacity:.78;cursor:pointer;transition:opacity .2s ease}
.profile-open:hover{opacity:1}
.profile-open-plus{display:inline-grid;place-items:center;width:18px;height:18px;border:1px solid currentColor;border-radius:50%;font:12px/1 'Space Mono',monospace}
.scroll-link{display:flex;align-items:center;gap:45px;border-bottom:1px solid #12354870;padding-bottom:10px;font-size:13px}
.scroll-link span:last-child{font-size:25px}
.hero-index{position:absolute;bottom:45px;right:6%;font:12px 'Space Mono',monospace}
.section-top{display:flex;justify-content:space-between;align-items:flex-start;gap:30px;margin-bottom:70px}
.section-top .eyebrow{padding-top:15px}
.section-top h2{width:64%}
.story-grid{display:grid;grid-template-columns:1fr 1fr;gap:72px 7%}
.story-piece.second{margin-top:130px}
/* 4컷이 지그재그로 이어지게: 두 번째 줄 왼쪽(03)은 어긋난 만큼 끌어올리고, 오른쪽(04)은 줄 시작에 둔다 */
.story-piece.third{margin-top:-130px}
.comic-crop{position:relative;aspect-ratio:1;overflow:hidden;background:transparent}
.comic-crop img{position:static;width:100%;height:auto;max-width:100%}
.caption{display:flex;gap:22px;padding:25px 0;border-top:1px solid var(--line);margin-top:22px}
.caption>span{font:13px 'Space Mono',monospace;padding-top:5px;color:#71828a}
.caption h3{margin-bottom:12px}
.caption p{font-size:16px;color:var(--muted);max-width:370px}
.delivery-meaning{margin:65px auto 0;text-align:center;max-width:850px;padding:40px 0 0;border-top:1px solid var(--line)}
.delivery-meaning .eyebrow{font-size:13px;letter-spacing:.07em;color:#8f4761}
.delivery-meaning p{font-size:clamp(23px,3vw,38px);line-height:1.6;font-weight:600;letter-spacing:-.04em;margin-top:18px}
/* 수영장 타일 그림을 깔되, 글자가 있는 쪽은 진한 파랑으로 덮어 흰 글자 대비(약 7:1)를 지킨다.
   PC는 글자가 왼쪽이라 오른쪽으로 갈수록, 폰은 글자가 위라 아래로 갈수록 타일이 드러난다 */
.pool{background:linear-gradient(90deg,#0847c2 0%,rgba(8,71,194,.9) 34%,rgba(8,71,194,.42) 62%,rgba(8,71,194,.28) 100%),url('assets/pool-tile-bg.webp') center/cover no-repeat,#0847c2;color:#fff;position:relative;overflow:hidden;padding-bottom:85px}
.pool-layout{display:grid;grid-template-columns:1fr 1fr;gap:8%;align-items:center}
.pool-copy .eyebrow{color:#b9d4ff;margin-bottom:35px}
.pool-copy h2{margin-bottom:28px}
.pool-copy p{color:#d6e4ff;max-width:420px}
.pool-label{font:12px/1.9 'Space Mono',monospace;color:#bfd5ff;margin-top:35px;border-left:2px solid #f2a2b9;padding-left:17px}
.pool-art{position:relative;padding:0 0 70px;max-width:550px}
/* 타일 배경 위에서 '물 위에 띄운 그림'으로 읽히게 그림자를 두 겹(넓게 퍼지는 것 + 가까운 것)으로 */
.swim-image{width:100%;box-shadow:0 34px 80px rgba(3,28,90,.5),0 10px 24px rgba(3,28,90,.28)}
.membership{position:absolute;width:46%;right:-5%;bottom:-8px;transform:rotate(9deg);filter:drop-shadow(0 18px 22px #042f7a45)}
.pool-quote{text-align:center;margin-top:100px;padding-top:65px;border-top:1px solid #ffffff40}
.pool-quote h2{font-size:clamp(40px,7vw,100px);line-height:1.2;letter-spacing:-.065em;color:#eff7ff}
.pool-quote span{font:12px 'Space Mono',monospace;letter-spacing:.18em;display:block;margin-top:28px}
.slogan-break{display:none}
.identity{background:#f7f9fa}
.identity-head .eyebrow{margin-bottom:22px}
.identity-subtitle{max-width:800px;color:var(--muted);margin-top:25px}
/* 이름 풀이: 정보 카드 두 장이 아니라 '얼빵'과 '해달'을 크게 펼쳐 보여주는 2단 구성.
   이름 → 영문 풀이 → 그림 → 설명 순서. 그림 칸 높이를 맞춰 두 설명의 시작선이 나란하다.
   테두리·호버 없이 차분하게, 배경은 거의 느껴지지 않을 만큼만 */
.naming{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:56px}
.name-part{display:flex;flex-direction:column;padding:44px 40px 40px;background:rgba(18,53,72,.02);border-radius:7px}
.name-word{margin:0;font-size:clamp(44px,4.4vw,62px);font-weight:900;line-height:1;letter-spacing:-.05em;color:var(--navy)}
.name-gloss{margin:16px 0 0;font:13px/1.4 'Space Mono',monospace;letter-spacing:.12em;color:var(--muted)}
.name-art{height:200px;margin:30px 0;display:flex;align-items:center}
.name-art img{width:auto;height:auto;max-height:100%;max-width:100%}
.name-art--symbol img{max-width:min(100%,420px)}
.name-desc{font-size:16px;color:var(--muted);max-width:460px}

/* 캐릭터 프로필: 화면 가운데에 세로 카드 한 장(PC·폰 같은 구성).
   위는 캐릭터를 좋아하게 만드는 공간(큰 전신·이름·직업·배달하는 것), 아래는 정보를 확인하는 공간(2열).
   얇은 선·배지 같은 장식 없이 따뜻한 아이보리 한 장. 아래 전역 dialog 규칙(사진 크게 보기용)을 이 요소에서만 덮어쓴다 */
dialog.profile-sheet{position:fixed;inset:0;margin:auto;width:min(380px,calc(100vw - 32px));height:fit-content;max-width:none;max-height:calc(100dvh - 32px);padding:0;border:0;border-radius:14px;background:#fffaf0;color:var(--navy);box-shadow:0 30px 80px rgba(18,35,40,.28);overflow-y:auto;opacity:0;transform:translateY(22px);transition:opacity .3s ease,transform .45s cubic-bezier(.22,1,.36,1)}
dialog.profile-sheet.is-open{opacity:1;transform:none}
dialog.profile-sheet::backdrop{background:rgba(20,30,35,.36)}
.profile-inner{position:relative;padding:34px 30px 30px}
.profile-close{position:absolute;top:12px;right:12px;width:44px;height:44px;border:0;background:none;color:var(--navy);font-size:17px;opacity:.7;cursor:pointer}
.profile-close:hover{opacity:1}
.profile-figure{position:relative;height:250px;display:flex;justify-content:center;align-items:flex-end;margin-bottom:22px}
.profile-sheet .profile-figure img{position:relative;z-index:1;width:auto;height:100%;object-fit:contain}
.profile-figure-shadow{position:absolute;bottom:-4px;left:50%;width:150px;height:18px;margin-left:-75px;border-radius:50%;background:#786b5930;filter:blur(8px)}
.profile-intro{text-align:center}
.profile-name{margin:0;font-size:32px;font-weight:900;line-height:1.15;letter-spacing:-.04em}
.profile-sheet .profile-name-sub{margin:8px 0 0;padding:0;text-align:center;font:11px/1.5 'Space Mono',monospace;letter-spacing:.14em;color:var(--muted)}
html[lang="en"] .profile-sheet .profile-name-sub{font:13px/1.5 'Noto Sans KR',sans-serif;letter-spacing:0}
.profile-sheet .profile-job{margin:12px 0 0;padding:0;font:500 16px/1.5 'Noto Sans KR',sans-serif;text-align:center;color:var(--navy)}
.profile-delivers{margin:26px 0 0;padding:20px 16px 22px;border-radius:10px;background:rgba(236,190,110,.16);text-align:center}
.profile-label{display:block;font:11px/1.5 'Space Mono',monospace;letter-spacing:.14em;color:var(--muted)}
.profile-sheet .profile-delivers-text{margin:8px 0 0;padding:0;font:700 22px/1.4 'Noto Sans KR',sans-serif;letter-spacing:-.02em;text-align:center;color:var(--navy)}
.profile-facts{display:grid;grid-template-columns:1fr 1fr;gap:18px 20px;margin:26px 4px 0}
.profile-facts div{min-width:0}
.profile-facts dt{font:10.5px/1.6 'Space Mono',monospace;letter-spacing:.14em;color:var(--muted)}
.profile-facts dd{margin:3px 0 0;font-size:15px;font-weight:500}
@media(prefers-reduced-motion:reduce){dialog.profile-sheet{transition:none;transform:none}}
.toy{background:#F7F8FA;color:#172D3B;display:grid;grid-template-columns:1fr 1fr;gap:60px 9%;align-items:center}
.toy-heading h2{margin:30px 0;color:#172D3B}
.toy-heading p{color:#4D606C}
.toy-link{display:inline-flex;align-items:center;gap:10px;margin-top:26px;font:13px 'Space Mono','Noto Sans KR',monospace;color:#245B73;border-bottom:1px solid #245B7370;padding-bottom:6px}
.toy-link span:last-child{font-size:15px}
.toy-link:hover{color:#173E52;border-color:#173E52}
.toy-main{max-width:530px}
.photo-open{position:relative;border:0;background:none;padding:0;width:100%;display:block}
.photo-open>span{position:absolute;bottom:20px;right:22px;font:12px 'Space Mono',monospace;background:#101a26d9;color:white;padding:12px 15px}
.toy-main img{width:100%;max-height:650px;object-fit:contain}
.toy-bottom{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:40px;border-top:1px solid #D8E0E5;padding-top:35px}
.toy-spec>span{font:12px 'Space Mono',monospace;letter-spacing:.1em;color:#647580}
.toy-spec p{font-size:14px;color:#647580;margin-top:12px}
.toy-spec p+p{color:#4D606C}
.toy-thumbs{display:flex;gap:14px;width:45%}
.toy-thumbs button{flex:1;min-width:0}
.toy-thumbs img{width:100%;height:175px;object-fit:cover}
/* 일월오봉도는 섹션 끝까지 보이게 두고(해·달이 잘리지 않는 위치 26% 유지), 아래 라이선싱의 밝은 회청색으로
   넘어가는 곳만 그라데이션으로 잇는다. 가운데가 탁한 회색 띠로 보이지 않게 처음엔 천천히, 끝에서 빠르게 밝아진다.
   그라데이션이 캐릭터 이름 글자에 걸리지 않도록 그만큼 아래 여백을 늘렸다 */
.friends{
  --fade:320px;
  padding-bottom:calc(110px + 170px);
  background:
    linear-gradient(180deg, rgba(234,240,242,0) calc(100% - var(--fade)), rgba(234,240,242,.02) calc(100% - var(--fade) * .8), rgba(234,240,242,.08) calc(100% - var(--fade) * .65), rgba(234,240,242,.2) calc(100% - var(--fade) * .5), rgba(234,240,242,.4) calc(100% - var(--fade) * .35), rgba(234,240,242,.66) calc(100% - var(--fade) * .2), rgba(234,240,242,.88) calc(100% - var(--fade) * .08), #EAF0F2 100%),
    linear-gradient(180deg, rgba(11,20,22,.82) 0, rgba(11,20,22,.82) calc(100% - var(--fade)), rgba(11,20,22,.5) 100%),
    url('assets/friends-bg.webp') center 26%/cover no-repeat,
    #0B1416;
  color:#BDCBCD;
}
.friends .eyebrow{color:#A9D6CE}
.friends-top{display:grid;grid-template-columns:1fr 1fr;gap:10%;align-items:center}
.friends h2{margin:30px 0;color:#F1F5F2}
.friends-lead{font-size:27px;line-height:1.65;margin-bottom:25px;color:#F1F5F2}
.friends-top p:not(.friends-lead){color:#BDCBCD}
.friends-top p:not(.friends-lead) + p{margin-top:16px}
.group-art{max-width:510px;transform:rotate(2deg)}
.group-art img{width:100%;box-shadow:20px 25px 0 #080D0F}
.member-controls{display:flex;justify-content:space-between;align-items:center;margin:90px 0 25px;font:12px 'Space Mono',monospace;color:#99B0B4}
.member-controls>div{display:flex;gap:18px;align-items:center}
.member-controls button{background:none;border:1px solid #30464B;color:#BDCBCD;width:40px;height:40px;border-radius:50%;font-size:20px}
.members{display:flex;gap:22px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:thin;padding-bottom:25px}
.member{flex:0 0 calc((100% - 88px)/5);scroll-snap-align:start;min-width:160px}
.member .eyebrow{color:#A9D6CE}
.member img{object-fit:contain;object-position:center bottom;height:260px;width:100%;margin:15px 0 20px}
.member h3{font-size:20px;color:#F1F5F2;text-align:center}
.member p{font-size:14px;margin:7px 0;color:#99B0B4;text-align:center}
.member small{font:12px/1.6 'Space Mono','Noto Sans KR',sans-serif;color:#99B0B4;text-align:center;display:block}
.closing{background:#EAF0F2;text-align:center}
.closing h2{margin:27px 0;font-size:clamp(40px,6vw,80px);color:#183544}
.closing p{font-size:15px;color:#4D6570}
.contact-link{margin:40px auto 0;display:flex;justify-content:space-between;align-items:center;gap:70px;width:max-content;max-width:100%;font-size:20px;border-bottom:1px solid;padding-bottom:15px;color:#245B73}
.contact-link span:last-child{font-size:30px}
footer{display:flex;justify-content:space-between;gap:25px;padding:30px 6%;font:12px/1.6 'Space Mono',monospace;background:#EAF0F2} /* 바로 위 라이선싱과 같은 색으로 이어지게 */
dialog{border:0;background:#10151bf5;color:white;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:60px 5vw 25px}
dialog::backdrop{background:#10151b}
dialog img{width:100%;height:calc(100% - 45px);object-fit:contain}
dialog p{text-align:center;font:12px 'Space Mono',monospace;padding-top:20px}
#close-viewer{position:absolute;top:15px;right:20px;border:0;background:none;color:white;font-size:24px;width:44px;height:44px;z-index:2}
/* 아트토이 사진 4장을 뷰어 안에서 넘겨 본다: 좌우 버튼·←→ 키·스와이프, 아래 작은 사진 줄로 바로 이동 */
#viewer #viewer-image{height:calc(100% - 45px - 64px)}
/* 가로 스와이프는 사진 넘기기로만 쓰고, 브라우저의 뒤로가기 제스처로 번지지 않게 */
#viewer{touch-action:pan-y pinch-zoom;overscroll-behavior:contain}
html:has(#viewer[open]){overscroll-behavior-x:none}
.viewer-nav{position:absolute;top:calc(50% - 30px);transform:translateY(-50%);z-index:2;width:52px;height:52px;border:0;border-radius:50%;background:rgba(255,255,255,.1);color:#fff;font-size:32px;line-height:1;display:grid;place-items:center;padding:0 0 4px;cursor:pointer;transition:background .2s ease}
.viewer-nav:hover{background:rgba(255,255,255,.22)}
.viewer-prev{left:max(12px,2vw)}
.viewer-next{right:max(12px,2vw)}
.viewer-rail{display:flex;justify-content:center;gap:8px;margin-top:12px}
.viewer-rail button{width:52px;height:52px;padding:0;border:2px solid transparent;border-radius:6px;overflow:hidden;background:none;opacity:.5;cursor:pointer;transition:opacity .2s ease,border-color .2s ease}
.viewer-rail button:hover{opacity:.8}
.viewer-rail button[aria-current="true"]{opacity:1;border-color:#fff}
#viewer .viewer-rail img{width:100%;height:100%;object-fit:cover}
#viewer p{padding-top:12px}
@media(max-width:580px){
  .viewer-nav{width:40px;height:40px;font-size:26px;background:rgba(0,0,0,.35)}
  .viewer-prev{left:8px}
  .viewer-next{right:8px}
  .viewer-rail button{width:44px;height:44px}
  #viewer #viewer-image{height:calc(100% - 45px - 56px)}
}
.reveal{opacity:1;transform:none}
.motion-ready .reveal:not(.seen){opacity:0;transform:translateY(28px)}
.motion-ready .reveal{transition:opacity .8s,transform .8s}
@keyframes arrive{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
@media(hover:hover) and (pointer:fine){
  .photo-open:hover>span{background:#fff;color:#123548}
  .nav-menu a:hover{color:#0867ba}
  .contact-link:hover{color:#173E52}
  .member img{transition:transform .35s}
  .member:hover img{transform:translateY(-5px)}
}
@media(min-width:1600px){.section{padding-left:max(6vw,calc((100vw - 1380px)/2));padding-right:max(6vw,calc((100vw - 1380px)/2))}}
@media(max-width:850px){
  .section{padding:75px 6%}
  .name-part{padding:34px 28px 30px}
  .name-art{height:160px}
  .friends{--fade:240px;padding-bottom:calc(75px + 130px)}
  .hero{min-height:calc(750px + var(--nav-h));max-height:calc(950px + var(--nav-h))}
  .hero h1{font-size:10vw}
  .hero-character{width:35%;right:8%;bottom:90px}
  .hero-note{max-width:44%}
  .story-grid{gap:56px 5%}
  .story-piece.second{margin-top:80px}
  .story-piece.third{margin-top:-80px}
  .pool-layout{gap:6%}
  .pool-copy p{font-size:16px}
  .toy{gap:40px}
  .members .member{flex-basis:27%}
  .member img{height:240px}
  .toy-thumbs img{height:130px}
}
@media(max-width:580px){
  .pool{background:linear-gradient(180deg,#0847c2 0%,rgba(8,71,194,.9) 36%,rgba(8,71,194,.38) 56%,rgba(8,71,194,.5) 100%),url('assets/pool-tile-bg.webp') center/cover no-repeat,#0847c2}
  .nav-menu{display:none}
  .lang{gap:3px}
  /* 폰에서 섹션 제목은 한 크기로(마무리 표어 두 개는 따로 크게) */
  h2{font-size:34px}
  .hero{height:100svh;min-height:calc(710px + var(--nav-h));max-height:calc(900px + var(--nav-h))}
  .hero-inner{padding-top:calc(34px + var(--nav-h))}
  .hero .eyebrow{font-size:10px;letter-spacing:.075em;margin-bottom:20px}
  .hero h1{font-size:12.5vw;letter-spacing:-.065em;line-height:.96}
  .hero-name{font-size:22px;margin-top:17px}
  .beach{background-position:42% center}
  .hero-character{width:53%;right:8%;bottom:88px}
  .hero-note{bottom:170px;max-width:35%}
  .hero-note p{font-size:14px;line-height:1.8}
  .hero-actions{bottom:33px;flex-direction:column;align-items:flex-start;gap:8px}
  .profile-open{order:-1;padding:6px 0;font-size:12px}
  .scroll-link{gap:28px;font-size:12px}
  .hero-index{font-size:10px;bottom:37px}
  .section-top{display:block;margin-bottom:35px}
  .section-top .eyebrow{padding-top:0;margin-bottom:22px}
  .section-top h2{width:100%}
  .story-grid{grid-template-columns:1fr;gap:40px}
  .story-piece.second,.story-piece.third{margin-top:0}
  .caption{margin-top:14px;padding-top:20px;gap:15px}
  .caption h3{font-size:22px}
  .caption p{font-size:15px}
  .delivery-meaning{margin-top:38px;padding-top:30px}
  .delivery-meaning .eyebrow{font-size:12px;letter-spacing:0}
  .pool-layout{grid-template-columns:1fr;gap:42px}
  .pool-copy h2{font-size:34px}
  .pool-art{width:85%;margin:0 auto}
  .membership{width:52%;right:-7%}
  .pool-quote{margin-top:50px;padding-top:40px}
  .pool-quote h2{font-size:42px}
  .slogan-break{display:block}
  .identity-subtitle{font-size:16px}
  /* 폰: 두 영역을 세로로 쌓고, 각 영역 안에서 이름과 그림을 한 줄에 나란히 둔 뒤 설명은 아래로 */
  .naming{grid-template-columns:1fr;gap:14px;margin-top:32px}
  .name-part{display:grid;grid-template-columns:auto 1fr;column-gap:14px;padding:26px 22px 24px}
  .name-word{grid-column:1;grid-row:1;font-size:44px;align-self:end}
  .name-gloss{grid-column:1;grid-row:2;margin-top:10px;font-size:12px;align-self:start}
  .name-art{grid-column:2;grid-row:1/3;height:150px;margin:0;justify-content:flex-end}
  .name-desc{grid-column:1/-1;grid-row:3;margin-top:20px;font-size:15px}
  .profile-inner{padding:30px 22px 24px}
  .profile-figure{height:210px;margin-bottom:18px}
  .profile-name{font-size:28px}
  .profile-sheet .profile-delivers-text{font-size:20px}
  .toy{grid-template-columns:1fr}
  .toy-heading h2{font-size:34px}
  .toy-bottom{display:block}
  .toy-thumbs{width:100%;margin-top:25px}
  .toy-thumbs img{height:170px}
  .friends-top{grid-template-columns:1fr;gap:40px}
  .friends-lead{font-size:24px}
  .group-art{width:86%;margin:auto;transform:rotate(1deg)}
  .group-art img{box-shadow:10px 12px 0 #080D0F}
  .member-controls{margin-top:55px}
  .members .member{flex-basis:65%;min-width:0}
  .member img{height:310px;object-fit:contain;object-position:center bottom}
  .closing p{max-width:290px;margin:auto}
  .contact-link{font-size:18px}
  footer{flex-wrap:wrap;font-size:10px}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .motion-ready .reveal:not(.seen){opacity:1;transform:none}
  .beach,.hero-character{transform:none!important}
}
