/* 학급 보드 — 앱 전용 스타일 (색은 공용 테마 변수) */

.topbar h1{color:var(--ink)}
.eyebrow{color:var(--primary)}
.chip{background:var(--sage-soft); color:var(--ink); border-color:transparent}
.hidden{display:none !important}

.hint-bar{
  background:var(--paper-2); border:1px solid var(--line); border-radius:12px;
  padding:12px 16px; font-size:13px; color:var(--ink); margin-bottom:20px; line-height:1.7;
}
.help{font-size:12px; color:var(--ink-soft); margin-top:10px; line-height:1.6}
.actions{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.row-links{display:flex; gap:12px; flex-wrap:wrap; margin-bottom:10px}
.row-inline{display:flex; gap:8px; flex-wrap:wrap; margin:8px 0}
.row-inline input{flex:1; min-width:200px}
.mini{
  background:var(--paper-2); border:1px solid var(--line); color:var(--ink-soft);
  border-radius:9px; padding:6px 12px; font:inherit; font-size:12.5px; cursor:pointer; transition:.14s;
}
.mini:hover{border-color:var(--primary); color:var(--ink)}
.link.danger{color:var(--rose)}
.badge{background:var(--rose); color:#fff; border-radius:999px; padding:1px 7px; font-size:11px; margin-left:4px}
.setup-sub{margin-top:20px; padding-top:16px; border-top:1px solid var(--line-soft)}
.reg-box{margin:10px 0}
.reg-box summary{font-size:12.5px; color:var(--ink-soft); cursor:pointer}
.setup-sub h3{font-size:14px; margin-bottom:6px; color:var(--ink)}
.hint{font-size:12px; color:var(--ink-soft); margin-top:6px}

/* 미션 */
.mission-list{display:grid; gap:9px}
.mission-row{
  display:flex; align-items:center; gap:9px;
  background:var(--paper-2); border:1px solid var(--line); border-radius:12px; padding:9px 12px;
}
.mission-row .ico{font-size:1.1rem}
.mission-row input[type=text]{
  flex:1; min-width:0; background:transparent; border:1px solid transparent; border-radius:8px;
  padding:6px 8px; font:inherit; font-size:14px; color:var(--ink);
}
.mission-row input[type=text]:hover{border-color:var(--line)}
.mission-row input[type=text]:focus{border-color:var(--primary); background:var(--paper); outline:none}
.mission-row .pt{display:flex; align-items:center; gap:4px}
.mission-row .pt button{
  width:24px; height:24px; border-radius:7px; border:1px solid var(--line);
  background:var(--paper); color:var(--ink); cursor:pointer; font:inherit; line-height:1;
}
.mission-row .pt b{min-width:34px; text-align:center; font-size:13px; color:var(--primary)}
.mission-row .del{background:none; border:none; color:var(--ink-soft); cursor:pointer; padding:4px}
.mission-row .del:hover{color:var(--rose)}

/* 점수 주기 */
.give-row{display:flex; gap:12px; flex-wrap:wrap; align-items:flex-start; margin-bottom:14px}
.give-reasons{display:flex; gap:6px; flex-wrap:wrap; flex:1}
.reason{
  background:var(--paper-2); border:1px solid var(--line); border-radius:999px;
  padding:6px 13px; font:inherit; font-size:13px; color:var(--ink-soft); cursor:pointer; transition:.14s;
}
.reason:hover{border-color:var(--sage); color:var(--ink)}
.reason.on{background:var(--sage-soft); border-color:var(--sage); color:var(--ink); font-weight:700}
.give-amount{display:flex; gap:5px}
.amt{
  width:44px; height:36px; border-radius:10px; border:1.5px solid var(--line);
  background:var(--paper-2); color:var(--ink); font:inherit; font-size:14px; font-weight:700; cursor:pointer;
}
.amt.on{background:var(--primary); border-color:transparent; color:#fff}
.amt.minus{color:var(--rose)}
.amt.minus.on{background:var(--rose); color:#fff}

.student-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(112px,1fr)); gap:8px}
.stu-btn{
  background:var(--paper); border:1px solid var(--line); border-radius:12px; padding:10px 8px;
  cursor:pointer; font:inherit; text-align:center; transition:.12s; position:relative;
}
.stu-btn:hover{border-color:var(--primary); transform:translateY(-2px); box-shadow:var(--shadow)}
.stu-btn .nm{font-size:13.5px; color:var(--ink); display:block}
.stu-btn .pt{font-size:12px; color:var(--primary); font-weight:700}
.stu-btn .gp{position:absolute; top:5px; right:7px; font-size:10px; color:var(--ink-soft)}
.stu-btn.pop{animation:pop .35s ease}
@keyframes pop{0%{transform:scale(1)}45%{transform:scale(1.12)}100%{transform:scale(1)}}

/* 순위 */
.rank-wrap{display:grid; grid-template-columns:1fr 1fr; gap:18px}
@media(max-width:700px){.rank-wrap{grid-template-columns:1fr}}
.rank-col h3{font-size:13px; color:var(--ink-soft); margin-bottom:8px}
.rank-list{list-style:none; display:grid; gap:5px}
.rank-list li{
  display:flex; align-items:center; gap:9px; background:var(--paper-2);
  border:1px solid var(--line-soft); border-radius:10px; padding:7px 12px; font-size:13.5px;
}
.rank-list li .r{width:22px; font-weight:700; color:var(--ink-soft); font-family:'Space Grotesk',sans-serif}
.rank-list li .n{flex:1}
.rank-list li .p{font-weight:700; color:var(--primary)}
.rank-list li.top1{background:var(--butter); border-color:transparent}
.rank-list li.top2, .rank-list li.top3{background:var(--sage-soft); border-color:transparent}

/* 모둠 편집 */
.group-edit{display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:10px; margin-top:12px}
.group-box{background:var(--paper-2); border:1px solid var(--line); border-radius:12px; padding:10px 12px}
.group-box h4{font-size:13px; margin-bottom:7px; color:var(--ink)}
.group-box .mem{display:flex; flex-wrap:wrap; gap:5px}
.group-box .mem button{
  background:var(--paper); border:1px solid var(--line); border-radius:999px;
  padding:4px 10px; font:inherit; font-size:12px; cursor:pointer; color:var(--ink);
}
.group-box .mem button:hover{border-color:var(--primary)}

/* 교무실 학생 호출 */
.chip.call{border:none; background:var(--rose); color:#fff; font-weight:700; cursor:pointer;
  animation:callPulse 1.4s infinite}
@keyframes callPulse{50%{opacity:.55}}
.call-bar{
  background:var(--rose); color:#fff; border-radius:16px; padding:16px 22px; margin-bottom:18px;
  display:flex; align-items:center; gap:16px; flex-wrap:wrap; box-shadow:var(--shadow);
  animation:callIn .35s ease;
}
@keyframes callIn{0%{transform:translateY(-14px); opacity:0}100%{transform:none; opacity:1}}
.call-bar .ico{font-size:clamp(26px,3vw,40px); flex:none}
.call-bar .body{flex:1; min-width:200px}
.call-bar .who{font-family:'Gowun Dodum',sans-serif; font-size:clamp(22px,3.2vw,42px); line-height:1.25}
.call-bar .sub{font-size:clamp(13px,1.4vw,17px); opacity:.92; margin-top:4px}
.call-bar button{
  border:none; border-radius:12px; background:rgba(255,255,255,.95); color:var(--ink);
  padding:11px 20px; font:inherit; font-size:15px; font-weight:700; cursor:pointer; flex:none;
}
.call-bar button:hover{background:#fff}
.call-list{display:grid; gap:8px; margin-top:6px}
.call-item{
  display:flex; align-items:center; gap:10px; background:var(--paper-2);
  border:1px solid var(--line); border-radius:12px; padding:10px 14px; font-size:14px;
}
.call-item .nm{font-weight:700; color:var(--ink)}
.call-item .rs{flex:1; color:var(--ink-soft); font-size:13px}
.call-item .tm{font-size:12px; color:var(--ink-soft)}

/* ── 보드 화면 (교실 TV) ─────────────────────────── */
.board{
  position:fixed; inset:0; z-index:80; overflow:auto; padding:34px 40px 40px;
  display:flex; flex-direction:column;
  background:
    radial-gradient(900px 520px at 8% -8%, var(--bg-radial-1), transparent 62%),
    linear-gradient(160deg, var(--bg-1), var(--bg-2));
  color:var(--ink);
}
.board-close{
  position:fixed; top:18px; right:22px; z-index:2; border:1px solid var(--line);
  background:var(--paper); color:var(--ink-soft); border-radius:10px;
  width:38px; height:38px; font-size:15px; cursor:pointer;
}
.board-close:hover{color:var(--ink); border-color:var(--primary)}
.sound-hint{
  display:block; margin:0 0 14px; padding:9px 18px; border-radius:999px; cursor:pointer;
  background:var(--butter); border:1px solid var(--line); color:var(--ink);
  font:inherit; font-size:14px; font-weight:700;
}
.sound-hint:hover{border-color:var(--primary)}
.board-head{display:flex; align-items:flex-end; gap:24px; margin-bottom:26px; flex-wrap:wrap; padding-right:52px}
.board-date{font-size:clamp(15px,1.5vw,20px); color:var(--ink-soft); letter-spacing:.02em}
.board-word{
  font-family:'Gowun Dodum',sans-serif; font-weight:400; line-height:1.2;
  font-size:clamp(30px,4.4vw,64px); color:var(--ink); margin-top:6px;
}
.board-qr{margin-left:auto; text-align:center; font-size:13px; color:var(--ink-soft)}
.qr-box{
  background:#fff; border-radius:12px; padding:8px; width:150px; height:150px;
  display:flex; align-items:center; justify-content:center; margin-bottom:6px;
  box-shadow:0 4px 14px rgba(80,55,25,.12);
}
.qr-box svg{width:100%; height:100%; display:block; shape-rendering:crispEdges}
.qr-fallback{font-size:11px; color:#4A3F33; line-height:1.4; word-break:break-all}
#bCls{
  display:inline-block; margin-right:12px; font-weight:700; color:var(--primary);
  background:var(--primary-soft); border-radius:999px; padding:2px 14px;
}
.board-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:16px; flex:1; min-height:0}
@media(max-width:1100px){.board-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.board-grid{grid-template-columns:1fr}}
.b-card{
  background:var(--paper); border:1px solid var(--line); border-radius:18px;
  padding:20px 22px; box-shadow:var(--shadow); min-height:220px;
}
.b-card h2{font-size:clamp(15px,1.5vw,20px); margin-bottom:14px; color:var(--ink-soft); font-weight:700}
.b-card ul, .b-card ol{list-style:none; display:grid; gap:9px}
.b-card li{font-size:clamp(15px,1.5vw,22px); line-height:1.45; display:flex; gap:9px; align-items:baseline}
.b-card li .pt{margin-left:auto; color:var(--primary); font-weight:700; font-size:.92em}
.b-card li .rk{color:var(--ink-soft); font-family:'Space Grotesk',sans-serif; min-width:1.6em}
.b-card li.gold .rk{color:var(--butter)}
.b-mission li .ico{font-size:.95em; flex:none}
.b-mission li.b-empty::before{content:'🎯'; font-size:.9em}
.b-notice li::before{content:'•'; color:var(--primary)}
.b-empty{color:var(--ink-soft); font-size:15px}

/* 조종례 */
.meet-inner{max-width:900px; margin:6vh auto 0; text-align:center}
.meet-step{font-family:'Space Grotesk',sans-serif; color:var(--ink-soft); letter-spacing:.2em; font-size:14px}
.meet-title{font-family:'Gowun Dodum',sans-serif; font-weight:400; font-size:clamp(28px,4vw,52px); margin:10px 0 26px}
.meet-body{
  background:var(--paper); border:1px solid var(--line); border-radius:20px; padding:26px 28px;
  box-shadow:var(--shadow); text-align:left; font-size:clamp(15px,1.7vw,22px); line-height:1.7; min-height:180px;
}
.meet-body ul{list-style:none; display:grid; gap:10px}
.meet-body li{display:flex; gap:10px; align-items:baseline}
.meet-body li::before{content:'✓'; color:var(--sage); font-weight:700}
.meet-nav{display:flex; gap:10px; justify-content:center; margin-top:22px}

/* 학생 화면 */
.stu-app{max-width:560px}
.stu-missions{display:grid; gap:10px}
.stu-mission{
  display:flex; align-items:center; gap:10px; background:var(--paper-2);
  border:1px solid var(--line); border-radius:14px; padding:13px 15px;
}
.stu-mission .t{flex:1; font-size:15px}
.stu-mission .p{font-size:13px; color:var(--primary); font-weight:700}
.stu-mission button{
  border:none; border-radius:10px; background:var(--primary); color:#fff;
  padding:9px 15px; font:inherit; font-size:13.5px; font-weight:700; cursor:pointer;
}
.stu-mission button:disabled{background:var(--line); color:var(--ink-soft); cursor:default}

/* 토스트 */
.toast{
  position:fixed; left:50%; bottom:30px; transform:translateX(-50%); z-index:120;
  background:var(--ink); color:var(--paper); border:1px solid var(--line);
  padding:11px 20px; border-radius:12px; font-size:14px;
  opacity:0; transition:opacity .2s; pointer-events:none;
}
.toast.show{opacity:1}

/* 지난 시즌 기록 */
.season-list{display:grid; gap:9px}
.sea-card{
  background:var(--paper-2); border:1px solid var(--line-soft); border-radius:13px; padding:12px 14px;
}
.sea-head{display:flex; align-items:center; gap:9px; flex-wrap:wrap; font-size:13px; color:var(--ink)}
.sea-head b{font-family:'Gowun Dodum',sans-serif; font-weight:400; font-size:1.15rem}
.sea-cn{font-size:11.5px; font-weight:700; color:var(--primary); background:var(--primary-soft);
  border-radius:999px; padding:2px 10px}
.sea-when{font-size:11.5px; color:var(--ink-soft)}
.sea-total{margin-left:auto; font-size:12px; font-weight:700; color:var(--ink-soft)}
.sea-units{display:flex; flex-wrap:wrap; gap:5px; margin-top:9px}
.su{
  display:inline-flex; align-items:baseline; gap:5px; background:var(--paper);
  border:1px solid var(--line-soft); border-radius:999px; padding:3px 11px; font-size:12.5px; color:var(--ink);
}
.su.win{background:var(--butter); border-color:transparent; font-weight:700}
.su b{font-family:'Space Grotesk',sans-serif; color:var(--primary)}
.su.win b{color:var(--ink)}
.su i{font-style:normal; font-size:10.5px; color:var(--ink-soft)}
.sea-top{margin-top:8px; display:flex; flex-wrap:wrap; gap:4px 12px; font-size:12px; color:var(--ink-soft)}
.st b{font-family:'Space Grotesk',sans-serif; color:var(--ink)}
.st.win{color:var(--ink); font-weight:700}

/* 설정은 교사 보드에 있다는 안내 */
.from-teacher{
  background:var(--primary-soft); border:1px solid var(--line-soft); border-radius:14px;
  padding:14px 16px; margin-bottom:14px;
}
.from-teacher b{display:block; font-size:14px; color:var(--ink); margin-bottom:5px}
.from-teacher p{font-size:12.5px; color:var(--ink-soft); line-height:1.65; margin-bottom:10px}
