/* =====================================================================
   ioi-iooi · 공통 디자인 파일 (site.css)
   ---------------------------------------------------------------------
   사이트 전체(첫 화면 + 모든 게시판)가 이 파일 하나를 함께 씁니다.
   색·글꼴·크기·간격·움직임을 바꾸고 싶으면 ① DESIGN TOKENS 부분의
   값만 고치세요. 나머지는 그 값을 따라 자동으로 바뀝니다.

   목차
   ① DESIGN TOKENS  — 색, 글꼴, 글자 크기, 간격, 모서리, 움직임
   ② SECTION THEMES — 섹션(챕터)마다 다른 색 묶음
   ③ BASE           — 기본 바탕
   ④ TYPE           — 손글씨/본문 글꼴 규칙 (한·영 짝)
   ⑤ NAV            — 위쪽 메뉴
   ⑥ LINKS          — 더 보기 링크 (버튼 대신 글자 + 화살표)
   ⑦ CHAPTER HEAD   — 섹션 머리 (01 · 붕어빵 / 큰 제목 / 설명)
   ⑧ SEAM           — 섹션 사이 사선 + 색 띠
   ⑨ PICTOGRAM      — 섹션 모서리의 큰 선 그림 (Phosphor Icons, MIT)
   ⑩ MOTION         — 스크롤하면 나타나는 움직임 (섹션마다 다름)
   ⑪ FOOTER
   ===================================================================== */


/* ① DESIGN TOKENS ---------------------------------------------------- */
:root{
  /* 글꼴
     · 중요한 글자(제목, 메뉴, 링크, 동화책 문장) = 손글씨
         한국어 → 나눔손글씨 펜   /   영어 → Caveat
     · 그 밖의 글자(설명, 날짜, 카드 제목, 본문) = Pretendard (한·영 공통 고딕) */
  --f-hand-ko:'Nanum Pen Script',cursive;
  --f-hand-en:'Caveat',cursive;
  --f-sans:'Pretendard',-apple-system,'Apple SD Gothic Neo','Noto Sans KR',sans-serif;

  /* 손글씨 크기 보정: 나눔손글씨 펜은 Caveat보다 작아 보여서 한국어를 조금 키움 */
  --hand-ko-scale:1.18;

  /* 글자 크기 (clamp = 화면이 작으면 작게, 크면 크게) */
  --fs-display:clamp(3.4rem,8vw,7rem);     /* 섹션 큰 제목 */
  --fs-h1:clamp(2.4rem,5vw,4rem);          /* 게시판 제목 */
  --fs-h2:clamp(1.6rem,2.6vw,2.2rem);
  --fs-nav:1.45rem;                        /* 메뉴 (손글씨) */
  --fs-body:1rem;                          /* 본문 */
  --fs-small:.875rem;                      /* 설명, 날짜 */
  --fs-tiny:.75rem;                        /* 번호, KR/EN */
  --lh-body:1.75;

  /* 기본 색 (섹션 테마가 없을 때) */
  --paper:#F1EBE0;      /* 종이 */
  --paper-2:#EFE6D6;    /* 조금 진한 종이 */
  --card:#FFFCF6;       /* 카드 */
  --ink:#2B2622;        /* 글자 */
  --muted:#7A6F66;      /* 흐린 글자 */
  --line:rgba(43,38,34,.16);
  --accent:#C8643B;     /* 포인트 (테라코타) */
  --accent-2:#E9B44C;   /* 보조 포인트 (호박색) */

  /* 간격 */
  --pad-1:4px;--pad-2:8px;--pad-3:16px;--pad-4:24px;--pad-5:40px;--pad-6:64px;--pad-7:96px;--pad-8:160px;
  --max-w:1160px;
  --gutter:clamp(16px,4vw,40px);

  /* 모서리 · 그림자 */
  --r-sm:10px;--r-md:16px;--r-lg:24px;
  --shadow-soft:0 1px 0 rgba(255,255,255,.6) inset,0 12px 30px -12px rgba(43,38,34,.28);
  --shadow-lift:0 22px 40px -18px rgba(43,38,34,.38);


  /* 움직임 */
  --t-fast:180ms;--t-base:420ms;--t-slow:900ms;
  --ease-out:cubic-bezier(.16,1,.3,1);        /* 부드럽게 멈춤 */
  --ease-spring:cubic-bezier(.34,1.45,.64,1); /* 살짝 튕김 */

  /* 예전 이름 호환 (지우지 마세요) */
  --bg:var(--paper);--surface:var(--paper-2);--f-body:var(--f-sans);--f-title:var(--f-sans);
  --f-pen:var(--f-hand-ko);--f-en:var(--f-hand-en);--r:var(--r-md);--shadow:var(--shadow-soft);
}


/* ② SECTION THEMES --------------------------------------------------
   규칙 · 첫 화면 섹션 = 선명한 색  /  메뉴로 들어간 목록·상세 페이지 = 같은 색을 채도 낮춰 연하게
   변수 뜻
     --bg     바탕            --ink    큰 글자(제목)
     --accent 작은 글자(번호·장 이름·링크) — 바탕과 대비 4.5 이상으로 맞춤
     --thread 파랑 실(장식 선·밑줄·픽토그램) — 사이트 전체를 잇는 포인트
     --muted  설명 글자       --card   카드 바탕      --line 가는 선
   ---------------------------------------------------------------- */
/* 첫 화면 섹션 (선명) */
.ch-cover {--bg:#F1EBE0;--paper-2:#E6DED0;--card:#FAF6EF;--ink:#1E1A17;--accent:#2B44B8;--thread:#3352D6;--muted:#4A4036;--accent-2:#B9785F;--line:rgba(30,26,23,.14)}
.ch-porch {--bg:#B9785F;--paper-2:#A96B54;--card:#C88B73;--ink:#FFF6EC;--accent:#2A1E12;--thread:#1F2E86;--muted:#2A1E12;--accent-2:#F2D9A0;--line:rgba(42,30,18,.22)}   /* 01 툇마루 · 이사벨라 */
.ch-bungeo{--bg:#D7BC72;--paper-2:#CBAE60;--card:#E6D29A;--ink:#2A1E12;--accent:#1F2E86;--thread:#3352D6;--muted:#3A2E14;--accent-2:#8E4B33;--line:rgba(42,30,18,.18)}   /* 02 붕어빵 · 보통의 하루 */
.ch-creek {--bg:#5A6A44;--paper-2:#4E5D3B;--card:#67784F;--ink:#F3EFDA;--accent:#FFE9A8;--thread:#AFC1FF;--muted:#F3EFDA;--accent-2:#E2C677;--line:rgba(243,239,218,.2)}  /* 03 개울가 · 플레이리스트 */
.ch-hangul{--bg:#4A63C9;--paper-2:#4158B8;--card:#5A72D2;--ink:#FFFFFF;--accent:#FFE9A8;--thread:#F2D27A;--muted:#FFF6EC;--accent-2:#EFC7CF;--line:rgba(255,255,255,.22)}  /* 04 한글 · 한국어 */
.ch-hoian {--bg:#D9A9B0;--paper-2:#CD9AA2;--card:#E5BEC3;--ink:#2E1B20;--accent:#1F2E86;--thread:#3352D6;--muted:#3A2328;--accent-2:#4A63C9;--line:rgba(46,27,32,.18)}   /* 05 호이안 · 기록 */
.ch-moon  {--bg:#2A2A3E;--paper-2:#34344A;--card:#3A3A52;--ink:#F6F0E2;--accent:#B8C6FF;--thread:#7F98FF;--muted:#D9D7E6;--accent-2:#EBD08F;--line:rgba(246,240,226,.16)}  /* 06 소원달 · 말 걸기 */

/* 내용 페이지 (메뉴 → 목록·상세) : body class="board ch-..." */
body.board.ch-cover {--bg:#F1ECE2;--card:#F9F5EF;--paper-2:#E6DED0;--ink:#3A3024;--accent:#3B55C4;--thread:#3B55C4;--muted:#6A5E50;--line:rgba(58,48,36,.14)}
body.board.ch-porch {--bg:#ECDCD3;--card:#F7F1EC;--paper-2:#DFC9BE;--ink:#3A2419;--accent:#2E3F9E;--thread:#2E3F9E;--muted:#6E5348;--line:rgba(58,36,25,.14)}
body.board.ch-bungeo{--bg:#EFE7CF;--card:#F8F4EA;--paper-2:#E3D7B4;--ink:#3A2E14;--accent:#3349B8;--thread:#3349B8;--muted:#6B5D3C;--line:rgba(58,46,20,.14)}
body.board.ch-creek {--bg:#DEE0D2;--card:#F4F4ED;--paper-2:#CDD1BE;--ink:#262C1C;--accent:#3B55C4;--thread:#3B55C4;--muted:#535B45;--line:rgba(38,44,28,.14)}
body.board.ch-hangul{--bg:#E0E2EE;--card:#F4F4F6;--paper-2:#CDD2E6;--ink:#1E2650;--accent:#2E44A8;--thread:#2E44A8;--muted:#4D5578;--line:rgba(30,38,80,.14)}
body.board.ch-hoian {--bg:#F0E1E1;--card:#F9F3F1;--paper-2:#E4CDCF;--ink:#3A2328;--accent:#3B55C4;--thread:#3B55C4;--muted:#6E5056;--line:rgba(58,35,40,.14)}
body.board.ch-moon  {--bg:#E3E2E6;--card:#F5F4F4;--paper-2:#D2D1DA;--ink:#22223A;--accent:#3B4FB0;--thread:#3B4FB0;--muted:#55556E;--line:rgba(34,34,58,.14)}


/* ③ BASE ------------------------------------------------------------ */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--f-sans);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink);background:var(--bg);
  word-break:keep-all;overflow-x:hidden;-webkit-font-smoothing:antialiased}
section,header,footer{background:var(--bg);color:var(--ink)}
a{color:inherit}
img{display:block;max-width:100%}
button{font:inherit;color:inherit}
::selection{background:var(--accent-2);color:#2B2622}


/* ④ TYPE — 손글씨는 언어에 따라 글꼴이 자동으로 바뀜 ---------------------
   class="hand"  → 한국어면 나눔손글씨 펜, 영어면 Caveat                    */
.hand{font-family:var(--f-hand-ko);font-weight:400;letter-spacing:0}
html[lang="en"] .hand{font-family:var(--f-hand-en);font-weight:700}
.sans{font-family:var(--f-sans)}
.num{font-family:var(--f-sans);font-variant-numeric:tabular-nums;letter-spacing:.08em}


/* ⑤ NAV ------------------------------------------------------------- */
.site-nav{position:fixed;inset:0 0 auto 0;z-index:1000;height:68px;color:var(--ink);
  background:color-mix(in srgb,var(--bg) 78%,transparent);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);
  border-bottom:1px solid var(--line);transition:background var(--t-base),color var(--t-base)}
.site-nav .in{max-width:var(--max-w);height:100%;margin:0 auto;padding:0 var(--gutter);display:flex;align-items:center;gap:var(--pad-4)}
.logo{display:flex;align-items:center;gap:6px;text-decoration:none;font-family:var(--f-hand-en);font-weight:700;font-size:1.65rem;letter-spacing:.02em}
.logo i{font-style:normal;color:var(--accent-2);display:inline-block;transform:rotate(12deg)}
.menu{display:flex;gap:clamp(14px,2.2vw,30px);margin-left:auto;align-items:center}
.menu a{position:relative;text-decoration:none;font-size:var(--fs-nav);line-height:1;opacity:.82;transition:opacity var(--t-fast)}
html[lang="ko"] .menu a{font-size:calc(var(--fs-nav) * var(--hand-ko-scale))}
.menu a:hover,.menu a.on{opacity:1}
/* 메뉴 밑줄: 손으로 그은 선이 그려지듯 나타남 */
.menu a::after{content:'';position:absolute;left:-2%;right:-2%;bottom:-8px;height:8px;opacity:0;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 8' preserveAspectRatio='none'%3E%3Cpath d='M2 5 C 20 2, 40 7, 60 4 S 90 3, 98 5' fill='none' stroke='%233352D6' stroke-width='2.4' stroke-linecap='round'/%3E%3C/svg%3E") center/100% 100% no-repeat;
  clip-path:inset(0 100% 0 0);transition:clip-path var(--t-base) var(--ease-out),opacity var(--t-fast)}
.menu a:hover::after,.menu a.on::after{opacity:1;clip-path:inset(0 0 0 0)}
.nav-tools{display:flex;align-items:center;gap:var(--pad-3);margin-left:var(--pad-3)}
/* KR / EN — 메뉴보다 작은 고딕, 상자 없음 */
.lang-toggle{background:none;border:0;cursor:pointer;font-family:var(--f-sans);font-size:var(--fs-tiny);font-weight:600;letter-spacing:.12em;color:var(--muted);padding:6px 2px}
.lang-toggle b{font-weight:600;transition:color var(--t-fast)}
.lang-toggle b.on{color:var(--ink);text-decoration:underline;text-decoration-color:var(--accent-2);text-decoration-thickness:2px;text-underline-offset:5px}
.lang-toggle i{font-style:normal;opacity:.4;margin:0 4px}
.nav-hello{display:inline-flex;align-items:center;gap:6px;text-decoration:none;font-size:1.25rem;line-height:1}
html[lang="ko"] .nav-hello{font-size:calc(1.25rem * var(--hand-ko-scale))}
.nav-hello svg{width:20px;height:20px;transition:transform var(--t-base) var(--ease-spring)}
.nav-hello:hover svg{transform:rotate(-12deg) translateY(-2px)}
.burger{display:none;background:none;border:0;cursor:pointer;width:40px;height:40px;margin-left:auto}
.burger svg{width:26px;height:26px;stroke:currentColor;stroke-width:2.2;fill:none;stroke-linecap:round}
@media (max-width:1023px){
  .burger{display:block}
  .nav-tools{margin-left:0}
  .nav-hello{display:none}
  .menu{position:fixed;inset:68px 0 auto 0;flex-direction:column;align-items:flex-start;gap:var(--pad-4);margin:0;
    padding:var(--pad-5) var(--gutter);background:var(--bg);border-bottom:1px solid var(--line);
    transform:translateY(-130%);transition:transform var(--t-slow) var(--ease-out)}
  .site-nav.open .menu{transform:none}
  .menu a{font-size:2rem}
  html[lang="ko"] .menu a{font-size:2.3rem}
}


/* ⑥ LINKS — class="more-link" "전체 보기 →" 같은 링크. 알약 버튼 대신 글자 + 손그림 화살표 ---- */
.more-link{display:inline-flex;align-items:center;gap:10px;text-decoration:none;font-size:1.6rem;line-height:1;position:relative;padding-bottom:6px}
html[lang="ko"] .more-link{font-size:calc(1.6rem * var(--hand-ko-scale))}
.more-link svg{width:34px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--t-base) var(--ease-spring)}
.more-link::after{content:'';position:absolute;left:0;right:44px;bottom:0;height:2px;background:var(--thread);opacity:.7;transform-origin:left;transition:transform var(--t-base) var(--ease-out),opacity var(--t-fast)}
.more-link:hover svg{transform:translateX(8px)}
.more-link:hover::after{opacity:.9}


/* ⑦ CHAPTER HEAD — 섹션 머리 ------------------------------------------
   <div class="kicker"><span class="num">01</span><i></i><span class="hand">붕어빵</span></div>
   <h2 class="display hand">보통의 하루</h2>
   <p class="lead">설명</p>                                                 */
.kicker{display:flex;align-items:center;gap:12px;color:var(--accent);margin-bottom:var(--pad-3)}
.kicker .num{font-size:.8rem;font-weight:800;color:var(--accent)}
.kicker i{width:36px;height:2px;background:var(--thread)}
.kicker .hand{font-size:1.7rem;line-height:1}
html[lang="ko"] .kicker .hand{font-size:calc(1.7rem * var(--hand-ko-scale))}
.display{font-size:var(--fs-display);line-height:.95;letter-spacing:-.01em}
html[lang="ko"] .display{font-size:calc(var(--fs-display) * var(--hand-ko-scale));line-height:.9}
.lead{font-size:var(--fs-small);font-weight:500;color:var(--muted);max-width:440px;margin-top:var(--pad-3)}
.head-right{text-align:right}.head-right .kicker{justify-content:flex-end}.head-right .lead{margin-left:auto}
.head-center{text-align:center}.head-center .kicker{justify-content:center}.head-center .lead{margin-inline:auto}


/* ⑧ EDGE — 섹션 사이 경계 모양 (사선·곡선만 사용)
   섹션 맨 위에 <svg class="edge" data-shape="..."> 를 넣으면 그 모양으로 앞 섹션 위에 겹쳐져요.
   모양: arch(창틀 아치) · slant-up(오른쪽이 높은 사선) · slant-down(왼쪽이 높은 사선)
         wave(흐르는 물결, 천천히 움직임) · dip(가운데가 내려간 곡선) · moon(크게 떠오르는 달 곡선)
   높이는 --edge-h 로 조절                                                      */
.chapter{position:relative;padding:var(--pad-8) var(--gutter)}
.chapter>.wrap{max-width:var(--max-w);margin:0 auto;position:relative;z-index:2}
:root{--edge-h:clamp(48px,7vw,110px)}
.edge{position:absolute;left:0;width:100%;top:calc(var(--edge-h) * -1 + 1px);height:var(--edge-h);display:block;fill:var(--bg);z-index:3;pointer-events:none;overflow:visible}
.edge path{transition:d 1.4s var(--ease-out)}

/* ⑨ PICTOGRAM — 섹션 구석의 큰 선 그림 (스크롤에 따라 천천히 움직임) ------ */
.picto{position:absolute;z-index:1;width:clamp(120px,18vw,240px);height:auto;color:var(--thread);opacity:.22;pointer-events:none;
  transform:translate3d(0,var(--py,0px),0) rotate(var(--pr,0deg));will-change:transform}
.picto svg{width:100%;height:auto;display:block}


/* ⑩ MOTION — 스크롤하면 등장. data-motion 값으로 섹션마다 다르게 ---------
   rise  : 아래에서 올라옴 (기본)
   left/right : 옆에서 들어옴
   flip  : 카드가 세워지듯 돌아옴
   draw  : 왼쪽에서 오른쪽으로 그려짐
   pop   : 작게 시작해 통통                                                  */
.reveal{opacity:0;transition:opacity var(--t-slow) var(--ease-out),transform var(--t-slow) var(--ease-out),clip-path 1.1s var(--ease-out);
  transition-delay:calc(var(--i,0) * 90ms)}
.reveal,.reveal[data-motion="rise"]{transform:translateY(40px)}
.reveal[data-motion="left"]{transform:translateX(-60px)}
.reveal[data-motion="right"]{transform:translateX(80px)}
.reveal[data-motion="flip"]{transform:perspective(900px) rotateY(-70deg);transform-origin:left center}
.reveal[data-motion="draw"]{opacity:1;transform:none;clip-path:inset(0 100% 0 0)}
.reveal[data-motion="pop"]{transform:scale(.86) rotate(-2deg);transition-timing-function:var(--ease-spring)}
.reveal.in{opacity:1;transform:none}
.reveal[data-motion="draw"].in{clip-path:inset(0 -10% 0 0)}


/* ⑪ FOOTER ---------------------------------------------------------- */
.site-foot{padding:var(--pad-5) var(--gutter);font-size:var(--fs-small);border-top:1px solid var(--line)}
.site-foot .in{max-width:var(--max-w);margin:0 auto;display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--pad-3);color:var(--muted)}
.site-foot a{text-decoration:none;margin-left:var(--pad-4)}
.site-foot a:hover{color:var(--accent)}


/* 움직임 줄이기 설정을 켠 사람에게는 움직임 없이 보여줌 */
@media (prefers-reduced-motion:reduce){
  *,::before,::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .reveal{opacity:1!important;transform:none!important;clip-path:none!important}
}

/* ⑪-2 FOOTER 자세히 — 로고·소개 / 둘러보기 / 안내 / 채널 */
.site-foot{padding:var(--pad-7) var(--gutter) var(--pad-5);border-top:0;background:var(--bg);color:var(--ink)}
.site-foot .foot-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:var(--pad-5);color:var(--ink)}
.foot-brand .logo{font-size:1.9rem}
.foot-tag{margin-top:var(--pad-3);font-size:1.5rem;line-height:1.3;color:var(--muted);max-width:280px}
html[lang="ko"] .foot-tag{font-size:1.7rem}
.site-foot h4{font-size:var(--fs-tiny);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:var(--pad-3)}
.site-foot ul{list-style:none;display:grid;gap:10px}
.site-foot ul a{margin:0;font-size:var(--fs-small);color:var(--muted);text-decoration:none;transition:color var(--t-fast)}
.site-foot ul a:hover{color:var(--ink)}
.foot-yt{display:inline-flex;align-items:center;gap:12px;margin:0!important;text-decoration:none;color:var(--ink)}
.foot-yt svg{width:34px;height:34px;fill:var(--accent);transition:transform var(--t-base) var(--ease-spring)}
.foot-yt:hover svg{transform:scale(1.1) rotate(-6deg)}
.foot-yt span{display:flex;flex-direction:column;font-weight:600;font-size:.95rem;line-height:1.2}
.foot-yt small{font-weight:400;color:var(--muted);font-size:var(--fs-tiny)}
.site-foot .foot-bottom{margin-top:var(--pad-6);padding-top:var(--pad-4);border-top:1px solid var(--line);font-size:var(--fs-tiny);color:var(--muted);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}
@media (max-width:760px){.site-foot .foot-grid{grid-template-columns:1fr 1fr}.foot-brand{grid-column:1/-1}}

/* 한·영 따로 쓴 글: 고른 언어만 보여줌 */
html[lang="ko"] .only-en,html[lang="en"] .only-ko{display:none}
.legal .body h2{font-size:1.05rem;font-weight:700;margin:28px 0 8px}
.legal .body p,.legal .body li{font-size:.95rem;line-height:1.85;color:var(--ink)}
.legal .body ul{margin:6px 0 6px 1.2em}
