/* 우리반 허브 사이트 공통 스타일 — index.html·ppobgi.html이 함께 쓴다. 페이지 전용은 home.css·ppobgi.css */
/* ═══ shared: tokens — 우리반 허브·뽑기 시간 두 페이지 공통. 색·글꼴·간격은 여기서만 바꾼다 ═══ */
:root{
  --canvas:#f5f2ec;--paper:#fffdf9;--paper-2:#ede7dc;--line:#ddd6ca;--line-strong:#c9c0b1;
  --text:#20201d;--muted:#625f59;
  --teacher:#2c63b8;--teacher-deep:#1f4c93;--teacher-soft:#e6eefa;
  --student:#0f7064;--student-soft:#dff1ec;
  --notice:#a3345f;--notice-soft:#f9e6ee;
  --supplies:#3f7a3a;--supplies-soft:#e6f1e1;
  --note:#fff2b8;--note-edge:#d9a93a;--note-ink:#4e3f12;
  --board:#24433a;--board-2:#2f5548;--chalk:#f4f1e8;--magnet-yellow:#fbe39a;
  --device:#1c1b19;
  --font-display:"Jua","Pretendard Variable",Pretendard,"Malgun Gothic",sans-serif;
  --font-body:"Pretendard Variable",Pretendard,system-ui,-apple-system,"Malgun Gothic","맑은 고딕",sans-serif;
  --gutter:16px;--container:1160px;--section-y:clamp(72px,9vw,120px);--header-h:64px;
  --r-sm:10px;--r:18px;--r-lg:28px;
  --shadow-card:0 1px 0 #fff inset,0 1px 2px rgba(32,32,29,.06),0 8px 24px -12px rgba(32,32,29,.18);
  --ease:cubic-bezier(.2,.7,.2,1);
}
@media (min-width:600px){:root{--gutter:clamp(24px,5vw,56px)}}
@media (max-width:599px){:root{--header-h:60px}}

/* ═══ shared: base ═══ */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--canvas);color:var(--text);font-family:var(--font-body);font-size:17px;line-height:1.7;word-break:keep-all;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;overflow-x:hidden}
@media (max-width:599px){body{font-size:16px}}
h1,h2,h3,p{margin:0}
h1,h2{font-family:var(--font-display);font-weight:400;letter-spacing:-.01em;text-wrap:balance}
h3{font-weight:800;letter-spacing:-.02em;line-height:1.4;text-wrap:balance}
p{text-wrap:pretty}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-underline-offset:3px}
:focus-visible{outline:3px solid var(--teacher);outline-offset:3px;border-radius:6px}
.wrap{max-width:calc(var(--container) + var(--gutter)*2);margin:0 auto;padding:0 var(--gutter)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.nowrap{white-space:nowrap}
.skip{position:absolute;left:16px;top:-100px;z-index:100;background:var(--text);color:#fff;padding:12px 18px;border-radius:var(--r-sm);font-weight:700;text-decoration:none}
.skip:focus{top:12px}
/* 고정 상단 막대 높이만큼 비켜서 멈춘다 */
section[id]{scroll-margin-top:calc(var(--header-h) + 12px)}

/* ═══ shared: header — 마크업과 함께 그대로 복사해서 쓴다 ═══
   header.bar > .wrap.bar__in > a.brand + nav.nav(button.nav__toggle + ul.menu) + a.btn.bar__cta
   넓은 화면: 한 줄. 좁은 화면(≤1023px): 스크립트가 있으면 '메뉴' 버튼으로 접고, 없으면 메뉴를 둘째 줄에 펼친다. */
.bar{position:sticky;top:0;z-index:40;background:rgba(245,242,236,.94);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
.bar__in{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-height:calc(var(--header-h) - 1px);padding-block:6px}
.brand{display:flex;align-items:center;gap:10px;min-height:44px;margin-right:auto;color:var(--text);text-decoration:none}
.brand img{width:34px;height:34px;border-radius:9px}
.brand span{font-family:var(--font-display);font-size:23px;line-height:1}
.menu{list-style:none;margin:0;padding:0;display:flex;gap:2px}
.menu a{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border-radius:10px;color:var(--muted);font-weight:700;font-size:15px;text-decoration:none;white-space:nowrap}
.menu a:hover{color:var(--text);background:var(--paper-2)}
.menu a[aria-current="page"]{color:var(--text)}
/* 다른 페이지(뽑기 시간)로 가는 항목: 구분선 + 노란 자석 점 */
.menu .menu__other{margin-left:6px;padding-left:8px;border-left:1px solid var(--line)}
.menu__other a::before{content:"";flex:none;width:12px;height:12px;border-radius:50%;background:var(--magnet-yellow);box-shadow:inset 2px 2px 0 #fff8,inset -2px -3px 0 #0002,0 0 0 1px #d8b95a}
.menu__other small{font-size:12px;font-weight:600;color:var(--muted)}
.nav__toggle{display:none;align-items:center;justify-content:center;gap:6px;min-width:44px;min-height:44px;padding:0 10px;border:1px solid var(--line-strong);border-radius:12px;background:var(--paper);color:var(--text);font:inherit;font-size:15px;font-weight:800;cursor:pointer}
.btn.bar__cta{gap:0;min-height:44px;padding:8px 16px;font-size:15px;box-shadow:0 3px 0 var(--teacher-deep)}
@media (min-width:1024px){.menu__other small{display:none}}
@media (max-width:1023px){
  .nav{order:3;flex:0 0 100%;min-width:0}
  .menu{overflow-x:auto;scrollbar-width:none}
  .menu::-webkit-scrollbar{display:none}
  .menu a{padding:0 10px;font-size:14.5px}
  .menu .menu__other{margin-left:0;padding-left:0;border-left:0}
  .menu__other small{display:none}
  /* 스크립트가 있을 때: 한 줄 막대(≤64px) + '메뉴' 버튼으로 여닫는 판 */
  .has-js .nav{order:2;flex:none}
  .has-js .nav__toggle{display:inline-flex}
  .has-js .menu{display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;gap:0;padding:8px var(--gutter) 16px;background:var(--paper);border-bottom:1px solid var(--line);box-shadow:0 18px 30px -18px rgba(32,32,29,.35)}
  .has-js .nav.is-open .menu{display:flex}
  .has-js .menu a{min-height:52px;padding:0 4px;font-size:17px;color:var(--text);border-bottom:1px solid var(--line);border-radius:0}
  .has-js .menu li:last-child a{border-bottom:0}
  .has-js .menu__other small{display:inline}
  .has-js .bar__cta{order:1}
}
@media (max-width:399px){.bar__cta .hide-xs{display:none}}

/* 휴대폰(≤599px)과 PC에서 서로 다른 링크를 보여 줄 때 */
@media (max-width:599px){.pc-only{display:none!important}}
@media (min-width:600px){.phone-only{display:none!important}}

/* ═══ shared: buttons ═══ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:12px 24px;border-radius:14px;font-weight:800;font-size:17px;line-height:1.2;text-decoration:none;border:1.5px solid transparent;transition:background .15s,transform .15s var(--ease),box-shadow .15s}
.btn--primary{background:var(--teacher);color:#fff;box-shadow:0 1px 0 #ffffff40 inset,0 4px 0 var(--teacher-deep),0 10px 20px -8px rgba(44,99,184,.55)}
.btn--primary:hover{background:#2757a6}
.btn--primary:active{transform:translateY(3px);box-shadow:0 1px 0 var(--teacher-deep)}
.btn--ghost{background:var(--paper);color:var(--text);border-color:var(--line-strong)}
.btn--ghost:hover{border-color:var(--text)}
.btn svg{flex:none}

/* ═══ shared: section headings ═══ */
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:800;letter-spacing:.02em;color:var(--teacher)}
.eyebrow::before{content:"";width:10px;height:10px;border-radius:50%;background:currentColor;box-shadow:inset 2px 2px 0 #fff6}
.h2{font-size:clamp(30px,4.2vw,48px);line-height:1.22;margin-top:12px}
.lead{font-size:clamp(17px,1.6vw,20px);line-height:1.65;color:var(--muted);margin-top:16px;max-width:36em}
.head{max-width:760px;margin-bottom:clamp(40px,5vw,64px)}
.head--center{margin-left:auto;margin-right:auto;text-align:center}
.head--center .lead{margin-left:auto;margin-right:auto}
.section{padding:var(--section-y) 0}
.section--paper{background:var(--paper);border-block:1px solid var(--line)}
.tag{display:inline-flex;align-items:center;min-height:26px;padding:2px 10px;border-radius:999px;font-size:13px;font-weight:800;line-height:1.3;vertical-align:1px}
.tag--teacher{background:var(--teacher-soft);color:var(--teacher)}
.tag--student{background:var(--student-soft);color:var(--student)}

/* ═══ shared: device frame — 캡처(390×844) 비율을 지킨다. 이미지는 width 100% + height auto 만 쓴다 ═══ */
.device{--w:260px;position:relative;margin:0;width:var(--w);flex:none}
.device__body{position:relative;padding:calc(var(--w)*.034);border-radius:calc(var(--w)*.15);background:var(--device);box-shadow:inset 0 0 0 1.5px #45423c,inset 0 0 0 3px #0d0d0c,0 2px 4px rgba(32,32,29,.12),0 26px 50px -18px rgba(32,32,29,.45)}
.device__body img{width:100%;height:auto;aspect-ratio:390/844;object-fit:cover;object-position:top;border-radius:calc(var(--w)*.118);background:#fff}
.device figcaption{margin-top:14px;text-align:center;font-size:15px;font-weight:700;color:var(--muted)}

/* ═══ shared: footer ═══ */
.foot{border-top:1px solid var(--line);background:var(--paper-2);padding:48px 0 56px;font-size:15px;color:var(--muted)}
.foot__grid{display:grid;gap:24px}
.foot .brand{display:inline-flex;color:var(--text)}
.foot ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:0 20px}
.foot ul a,.foot .mail{display:inline-flex;align-items:center;min-height:44px;font-weight:700;color:var(--text)}
.foot p+p{margin-top:2px}
@media (min-width:900px){.foot__grid{grid-template-columns:1fr auto;align-items:start}}

/* ═══ shared: 등장 효과(한 번, 짧게). 움직임 줄이기 설정이면 끈다 ── */
.js .reveal{opacity:0;transform:translateY(16px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.js .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important}
  .js .reveal{opacity:1;transform:none}
}
@media print{.js .reveal{opacity:1!important;transform:none!important}.bar{position:static}}
