/* ============================================================
   하루연산 UI — claude.ai/design 목업(.dc.html) 직역 스타일시트.
   목업의 인라인 스타일 값을 그대로 클래스화한 것으로, 값 변경 시
   반드시 해당 목업(.dc.html)과 대조할 것.
   (구 app.css는 admin 콘솔·paper.html 인쇄물 전용으로만 유지)
   ============================================================ */
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:#F5F7FA;font-family:Pretendard,-apple-system,BlinkMacSystemFont,"Segoe UI","Apple SD Gothic Neo","Malgun Gothic",sans-serif;
  letter-spacing:-.02em;color:#152434;font-size:16px;line-height:1.55;word-break:keep-all}
a{color:inherit;text-decoration:none}
img{max-width:100%}
button,input,select,textarea{font-family:inherit;letter-spacing:inherit}
details summary{list-style:none;cursor:pointer}
details summary::-webkit-details-marker{display:none}

/* ── 앱 셸(로그인 후 화면 + 정보 페이지) ── */
.shell{min-height:100vh;display:flex;flex-direction:column}
.appbar{height:64px;background:linear-gradient(120deg,#4DAAF7,#7ED5C2);display:flex;align-items:center;padding:0 28px;flex:none;position:sticky;top:0;z-index:15}
.appbar .logo{display:flex}
.appbar .logo img{height:22px;display:block}
.main{flex:1;max-width:760px;width:100%;margin:0 auto;min-width:0;padding:32px 28px 40px}

/* 프로필 드롭다운(헤더 우측) */
.pmenu{margin-left:auto;position:relative}
.pmenu summary{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.35);border-radius:99px;
  padding:5px 14px 5px 5px;color:#fff;font-weight:700;font-size:13px;white-space:nowrap}
.pmenu .pi{width:26px;height:26px;flex:none;border-radius:99px;background:#fff;color:#326FAD;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px}
.pmenu .menu{position:absolute;right:0;top:calc(100% + 8px);background:#fff;border:1px solid #E2E8EF;border-radius:12px;box-shadow:0 12px 30px rgba(21,36,52,.15);padding:6px;min-width:160px;z-index:20}
.pmenu .mi{display:block;width:100%;text-align:left;padding:10px 12px;border-radius:8px;color:#152434;font-weight:700;font-size:13px;white-space:nowrap;background:none;border:0;cursor:pointer}
.pmenu .mi:hover{background:#F5F7FA}
.pmenu .mi.danger{color:#D14B45}
.pmenu .sep{height:1px;background:#E2E8EF;margin:4px 6px}

/* ── 푸터(전 페이지 공통, 폭 변형 클래스) ── */
.foot{flex:none;max-width:760px;width:100%;margin:0 auto;min-width:0;padding:0 28px 32px;font-size:11.5px;font-weight:600;color:#94A1AA;line-height:1.8}
.foot .in{border-top:1px solid #E2E8EF;padding-top:16px}
.foot .links{margin-bottom:8px;color:#708092;font-weight:700}
.foot .links a:hover{color:#326FAD}
.foot b{color:#708092}
.foot.w640{max-width:640px} .foot.w820{max-width:820px} .foot.w860{max-width:860px} .foot.w1120{max-width:1120px}
.foot.center{text-align:center}

/* ── 타이포/페이지 헤더 ── */
.h1{font-weight:850;font-size:24px;color:#152434;margin:0;line-height:1.3}
.h1.lg{font-size:26px}
.sub{font-weight:600;font-size:14px;color:#708092;margin:6px 0 0;line-height:1.6}
.sub b{color:#152434}
.pagehead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.stud{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.stud .av{width:48px;height:48px;border-radius:99px;background:#EAF3FC;color:#326FAD;font-weight:800;font-size:19px;display:flex;align-items:center;justify-content:center;flex:none}
.stud .nm{font-weight:800;font-size:18px;color:#152434;line-height:1.3}
.stud .mt{font-weight:600;font-size:13px;color:#708092;margin-top:2px;white-space:nowrap}

/* ── 카드 ── */
.card{background:#fff;border:1px solid #E2E8EF;border-radius:16px;padding:22px;margin-bottom:16px}
.card.c14{border-radius:14px;padding:18px 20px}

/* ── KPI 3열 ── */
.kpi3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:24px}
.kpi3 .box{padding:16px;border-radius:14px;background:#fff;border:1px solid #E2E8EF}
.kpi3 .k{display:block;color:#708092;font-weight:700;font-size:11px}
.kpi3 .v{display:block;margin-top:6px;font-size:24px;font-weight:850;color:#152434;line-height:1.2}
.kpi3 .v.blue{color:#326FAD} .kpi3 .v.green{color:#2B987F} .kpi3 .v.red{color:#D14B45}
@media(max-width:480px){.kpi3{gap:8px}.kpi3 .box{padding:12px}.kpi3 .v{font-size:19px}}

/* ── 버튼 ──
   목업은 `font:800 13px Pretendard` 축약형이라 line-height가 normal(≈1.2)로 리셋됨 —
   body의 1.55를 그대로 물려받으면 버튼/제목이 목업보다 두꺼워지므로 명시적으로 좁힌다. */
.btn,.navbtn,.icbtn,.obtn,.pill,.tabs button,.badge{line-height:1.2}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:9px;padding:11px 16px;
  font-weight:800;font-size:13.5px;cursor:pointer;white-space:nowrap;text-align:center;transition:.12s}
.btn.pri{background:#4DAAF7;color:#fff}
.btn.pri:hover{background:#3D9AE8}
.btn.gho{background:#fff;border:1px solid #E2E8EF;color:#152434}
.btn.gho:hover{border-color:#4DAAF7;color:#326FAD}
.btn.gho.blue{color:#326FAD}
.btn.sm{padding:9px 14px;font-size:12.5px}
.btn.lg{padding:14px 22px;font-size:15px;border-radius:10px}
.btn.blk{display:flex;width:100%}
.btn:disabled,.btn.dis{background:#E6EBF0;color:#A5B1BB;cursor:not-allowed;pointer-events:none;border:0}
.btn.busy{opacity:.72;pointer-events:none;cursor:wait}
/* 우상단 이동 버튼(학습현황 › 등) */
.navbtn{background:#fff;border:1px solid #E2E8EF;color:#152434;border-radius:10px;padding:10px 14px;font-weight:800;font-size:13px;white-space:nowrap;flex:none}
/* 아이콘 정사각 버튼(접기/삭제 등) */
.icbtn{width:34px;height:34px;flex:none;border-radius:9px;border:1px solid #E2E8EF;background:#fff;color:#546677;font-weight:800;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.icbtn:hover{border-color:#4DAAF7;color:#326FAD}
.icbtn.del:hover{border-color:#D14B45;color:#D14B45}

/* ── 밑줄 탭 ── */
.tabs{display:flex;gap:6px;border-bottom:1px solid #E2E8EF;margin-bottom:14px}
.tabs button{padding:11px 13px;font-weight:750;font-size:13px;background:none;border:0;border-bottom:2px solid transparent;color:#708092;cursor:pointer;white-space:nowrap;flex:none}
.tabs button.on{border-bottom-color:#4DAAF7;color:#326FAD}
.tabs button:disabled{opacity:.4;cursor:not-allowed}
.tabs .cnt{opacity:.6}

/* ── pill 세그먼트(학습량·학년탭·토글) ── */
.pills{display:flex;gap:8px;flex-wrap:wrap}
.pills.scroll{flex-wrap:nowrap;overflow-x:auto}
.pill{padding:10px 16px;border-radius:9px;font-weight:800;font-size:12.5px;cursor:pointer;border:1px solid #E2E8EF;background:#fff;color:#152434;white-space:nowrap;flex:none}
.pill.on{border-color:#4DAAF7;background:#4DAAF7;color:#fff}
.pill:disabled{opacity:.4;cursor:not-allowed}

/* ── 상태 배지 ── */
.badge{display:inline-block;font-weight:800;font-size:11px;padding:4px 9px;border-radius:20px;white-space:nowrap}
.badge.blue{background:#EAF3FC;color:#326FAD}
.badge.green{background:#E6F7F1;color:#2B987F}
.badge.gold{background:#FFF3E5;color:#D78432}
.badge.red{background:#FBE9E8;color:#D14B45}
.badge.gray{background:#F2F4F7;color:#546677}

/* ── 폼 ── */
.fld{display:block;font-weight:700;font-size:13px;color:#152434;margin:14px 0 6px}
.fld .opt{color:#94A1AA;font-weight:600;font-size:12px;margin-left:4px}
.inp{width:100%;padding:12px 14px;border:1px solid #E2E8EF;border-radius:10px;font-size:14px;background:#fff;color:#152434}
.inp:focus{outline:none;border-color:#4DAAF7;box-shadow:0 0 0 3px #EAF3FC}
.inp.err{border-color:#D14B45;box-shadow:0 0 0 3px #FBE9E8}
textarea.inp{resize:vertical}
.hint{font-size:12.5px;font-weight:600;color:#94A1AA;margin-top:6px}

/* ── 알림 박스 ── */
.errbox{background:#FBE9E8;border:1px solid #F1B9B5;color:#991b1b;padding:12px 15px;border-radius:11px;font-size:13.5px;font-weight:700;margin-bottom:14px}
.errbox a{color:#991b1b;font-weight:800;text-decoration:underline}
.infobox{background:#EAF3FC;border:1px solid #B7D3ED;border-radius:11px;padding:13px 16px;font-size:13.5px;font-weight:600;color:#152434;margin-bottom:16px}
.infobox b{font-weight:800}
.okbox{background:#E6F7F1;border:1px solid #9DD3C4;color:#166534;border-radius:11px;padding:13px 16px;font-size:13.5px;font-weight:700;margin-bottom:16px}
.warnbox{background:#FFF3E5;border:1px solid #F1C897;border-radius:11px;padding:13px 16px;font-size:13.5px;font-weight:600;color:#152434;margin-bottom:16px}

/* ── 문항 행(오답체크/리포트 리뷰) ── */
.qrow{display:flex;align-items:center;gap:12px;padding:10px 4px;border-top:1px solid #F2F4F7}
.qrow .no{width:22px;text-align:center;font-weight:800;font-size:12.5px;color:#94A1AA;flex:none}
.qrow .q{flex:1;font-weight:600;font-size:14.5px;color:#152434;min-width:0}
.qrow .q .ans{color:#94A1AA;font-size:12px}
.oxbtn{width:34px;height:34px;border-radius:9px;border:0;font-weight:800;font-size:13px;cursor:pointer;background:#F2F4F7;color:#A5B1BB;flex:none}
.oxbtn.o.on{background:#E6F7F1;color:#2B987F}
.oxbtn.x.on{background:#FBE9E8;color:#D14B45}
.qgroup{font-weight:800;font-size:11.5px;color:#94A1AA;letter-spacing:.02em;margin:12px 0 6px}

/* ── 회차/숙련도 카드행(학습현황) ── */
.srow{padding:12px;border-radius:11px;border:1px solid #E2E8EF;margin-bottom:8px;background:#fff}
.srow .top{display:flex;align-items:center;gap:11px}
.srow .nb{width:39px;height:39px;flex:none;border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px}
.srow .nb.green{background:#E6F7F1;color:#2B987F}
.srow .nb.gold{background:#FFF3E5;color:#D78432}
.srow .ti{font-weight:750;font-size:13.5px;color:#152434}
.srow .mt{font-weight:600;font-size:11.5px;color:#94A1AA;margin-top:2px}
.srow .acts{display:flex;gap:8px;margin-top:10px;padding-left:50px}
/* 액션 버튼 두께 = 우측 ✕(icbtn 34px)와 동일 — 사용자 피드백 */
.srow .acts .btn{flex:1;height:34px;padding:0 12px;font-size:13px}
.srow .acts form{margin:0;flex:none}
/* 모바일에서만 노출되는 상단 ✕(.top 안, 배지 옆) — 데스크톱 기본은 숨김 */
.srow .top .xmobile{display:none}
@media(max-width:520px){
  .srow .acts{padding-left:0}
  /* .acts의 ✕는 .top의 xmobile로 대체 — 숨겨서 두 버튼이 폭 전체를 채우게 함 */
  .srow .acts .xdesktop{display:none}
  .srow .top .xmobile{display:flex;margin:0 0 0 2px}
}
.mrow{border:1px solid #E2E8EF;border-radius:11px;padding:12px 14px;margin-bottom:8px;background:#fff}
.mrow .top{display:flex;justify-content:space-between;gap:10px;font-weight:750;font-size:13px;color:#152434;margin-bottom:7px}
.mrow .key{color:#94A1AA;font-weight:600}
.mrow .sc{white-space:nowrap;flex:none;font-weight:800}
.mrow .sc.green{color:#2B987F} .mrow .sc.amber{color:#D78432} .mrow .sc.red{color:#D14B45}
.mrow .bar{height:6px;border-radius:99px;background:#EAF0F4;overflow:hidden}
.mrow .bar i{display:block;height:100%;border-radius:99px}
.mrow .bar i.green{background:#2B987F} .mrow .bar i.amber{background:#D78432} .mrow .bar i.red{background:#D14B45}

/* ── 공개(마케팅/SEO) 상단 nav — 햄버거는 CSS 미디어쿼리로 전환 ── */
.pnav{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.92);backdrop-filter:blur(6px);border-bottom:1px solid #E2E8EF}
.pnav .in{max-width:1120px;width:100%;margin:0 auto;padding:14px 28px;display:flex;align-items:center;gap:16px}
.pnav .logo{display:flex;flex:none}
.pnav .logo img{height:24px;display:block}
.pnav .links{display:flex;gap:22px;flex:1}
.pnav .links a{color:#546677;font-weight:700;font-size:14px;white-space:nowrap}
.pnav .links a:hover{color:#326FAD}
.pnav .cta{display:flex;gap:10px;flex:none;margin-left:auto}
.pnav .cta .lgn{background:#fff;border:1px solid #E2E8EF;color:#152434;border-radius:9px;padding:10px 16px;font-weight:800;font-size:13.5px;white-space:nowrap}
.pnav .cta .go{background:#4DAAF7;color:#fff;border-radius:9px;padding:10px 18px;font-weight:800;font-size:13.5px;white-space:nowrap}
.pnav .burger{display:none;margin-left:auto;width:40px;height:40px;flex:none;border-radius:9px;border:1px solid #E2E8EF;background:#fff;align-items:center;justify-content:center;cursor:pointer;padding:0}
.pnav .mnav{display:none;border-top:1px solid #E2E8EF;padding:14px 28px 20px;flex-direction:column;gap:2px;background:#fff}
.pnav .mnav a{padding:11px 4px;color:#546677;font-weight:700;font-size:14px}
.pnav .mnav .sep{height:1px;background:#E2E8EF;margin:8px 0}
.pnav .mnav .lgn{display:block;text-align:center;background:#fff;border:1px solid #E2E8EF;color:#152434;border-radius:9px;padding:12px;font-weight:800;font-size:13.5px}
.pnav .mnav .go{display:block;text-align:center;background:#4DAAF7;color:#fff;border-radius:9px;padding:12px;font-weight:800;font-size:13.5px;margin-top:8px}
@media(max-width:760px){
  .pnav .links,.pnav .cta{display:none}
  .pnav .burger{display:flex}
  .pnav.open .mnav{display:flex}
}

/* ── 인증(로그인/가입) 2패널 카드 ── */
.awrap{flex:1;display:flex;align-items:center;justify-content:center;padding:40px 20px}
.agrid{display:flex;flex-wrap:wrap;max-width:820px;width:100%;background:#fff;border:1px solid #E2E8EF;border-radius:16px;box-shadow:0 10px 30px rgba(21,36,52,.08);overflow:hidden}
.apanel{display:flex;flex:1 1 320px;min-width:260px;background:linear-gradient(135deg,#EAF3FC,#E6F7F1);padding:40px 32px;flex-direction:column;justify-content:space-between;gap:40px}
.apanel .lg img{height:26px;object-fit:contain;display:block}
.apanel .tt{font-weight:800;font-size:22px;line-height:1.4;color:#152434;margin-bottom:14px}
.apanel .st{display:flex;align-items:center;gap:9px;color:#546677;font-weight:600;font-size:12.5px}
.apanel .st i{width:6px;height:6px;border-radius:99px;background:#2B987F;flex:none}
.apanel .cp{color:#94A1AA;font-weight:600;font-size:11px}
.aform{flex:1 1 320px;min-width:260px;padding:40px;box-sizing:border-box}
.aform .tt{font-weight:800;font-size:20px;color:#152434;margin-bottom:4px}
.aform .st{font-weight:600;font-size:13px;color:#708092;margin-bottom:18px}
.adiv{display:flex;align-items:center;gap:10px;margin:14px 0;color:#94A1AA;font-weight:600;font-size:11px}
.adiv::before,.adiv::after{content:"";flex:1;height:1px;background:#E2E8EF}
.obtn{flex:1;padding:10px;border-radius:9px;border:1px solid #E2E8EF;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;font-weight:800;font-size:12.5px;color:#152434}
.obtn.kakao{background:#FEE500;border-color:#FEE500;color:#191600}
.afoot{text-align:center;margin-top:18px;font-weight:600;font-size:13px;color:#546677}
.afoot a{color:#326FAD;font-weight:800}
.aflink{text-align:center;margin-top:8px}
.aflink a{color:#94A1AA;font-weight:600;font-size:12.5px}

/* ── 정보 문서(약관/개인정보) — Terms/Privacy.dc.html: 흰 카드 + 본문 타이포 ── */
.doc{background:#fff;border:1px solid #E2E8EF;border-radius:16px;padding:32px 34px}
.doc-title{font-weight:850;font-size:26px;color:#152434;margin:0 0 6px}
.doc-updated{font-weight:600;font-size:13px;color:#94A1AA;margin:0 0 22px}
.doc h2{font-weight:800;font-size:15.5px;color:#152434;margin:20px 0 8px}
.doc h2:first-of-type{margin-top:0}
.doc p{font-weight:600;font-size:14px;color:#334155;line-height:1.8;margin:0 0 10px}
.doc ul{font-weight:600;font-size:14px;color:#334155;line-height:1.8;margin:0 0 12px;padding-left:20px}
.doc li{margin:4px 0}
.doc b{color:#152434}
.doc-note{font-weight:600;font-size:12.5px;color:#94A1AA;margin-top:8px}
.doc-company{background:#F5F7FA;border-radius:10px;padding:13px 15px;font-weight:600;font-size:13.5px;color:#546677;line-height:1.7}
/* FAQ/공지(bare main) 페이지 제목 — 목업: 카드 밖 26px 제목 + faint 서브 */
.bare-title{font-weight:850;font-size:26px;color:#152434;margin:0}
.bare-sub{font-weight:600;font-size:13.5px;color:#94A1AA;margin:6px 0 22px}
/* FAQ 아코디언(개별 카드) */
.faq{background:#fff;border:1px solid #E2E8EF;border-radius:12px;padding:16px 18px;margin-bottom:10px}
.faq summary{font-weight:800;font-size:14.5px;color:#152434}
.faq .faq-a{font-weight:600;font-size:13.5px;color:#546677;line-height:1.7;margin-top:10px}
.faq .faq-a b{color:#152434}
/* 공지 카드 */
.notice{background:#fff;border:1px solid #E2E8EF;border-radius:14px;padding:18px 20px;margin-bottom:12px}
.notice-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.notice-tag{background:#EAF3FC;color:#326FAD;font-weight:800;font-size:11px;padding:3px 9px;border-radius:20px}
.notice-title{font-weight:800;font-size:14.5px;color:#152434}
.notice-date{margin-left:auto;color:#94A1AA;font-weight:600;font-size:12px}
.notice-body{font-weight:600;font-size:13.5px;color:#546677;line-height:1.7}

/* ── 분수 세로 표기(문항 수식 expr_html) ── */
.frac{display:inline-flex;flex-direction:column;text-align:center;vertical-align:middle;margin:0 3px;line-height:1.02}
.frac .fn{border-bottom:1px solid currentColor;padding:0 5px}
.frac .fd{padding:0 5px}

/* ── 토스트 ── */
.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);background:#152434;color:#fff;padding:12px 20px;border-radius:30px;font-weight:700;font-size:14px;opacity:0;transition:.25s;z-index:70;box-shadow:0 8px 24px rgba(21,36,52,.3);pointer-events:none}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ── 모달 오버레이 ── */
.overlay{position:fixed;inset:0;background:rgba(21,36,52,.5);display:none;align-items:center;justify-content:center;padding:20px;z-index:60}
.overlay.show{display:flex}
.overlay .box{background:#fff;border-radius:16px;max-width:420px;width:100%;padding:26px 24px 22px}
