:root{color-scheme:light;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}html{scroll-padding-top:env(safe-area-inset-top,0px)}body{margin:0;padding:0;font:14px -apple-system,BlinkMacSystemFont,sans-serif;background:#fff;color:#000}img{max-width:100%}[hidden]:not([hidden=until-found i]){display:none!important}
/* Layout: 한 열 목록 — 과목 묶음별 행, 행마다 시험 탭 칩 + 열기·링크 복사. 디자인 토큰은 Design_Reference(기출풀이 UI 킷) 그대로 */
:root{
  --bg:#F1F4F4; --surface:#FFFFFF; --surface-2:#EBF0EF; --raise:#F7FAF9;
  --ink:#16242A; --ink-2:#51636A; --ink-3:#7C8C91; --line:#DBE3E3;
  --accent:#0E6B63; --accent-ink:#0A4F49; --accent-soft:#DFEDEB;
  --good:#1B7A3D; --good-soft:#E1F0E7; --good-line:#AFD8BE;
  --star-soft:#FFF3C4; --star-line:#E7C258; --warn:#9C6400; --bad:#C23A2E; --bad-soft:#F8E5E2; --ev:#8A6A00; --ev-soft:#FFF3C4; --ev-line:#E7C258; --my:#2B67B0; --my-soft:#E4EEF9; --my-line:#A8C5EA;
  --shadow:0 1px 2px rgba(16,40,44,.06),0 8px 24px rgba(16,40,44,.06);
  --gothic:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic","맑은 고딕","Noto Sans KR","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]){
  --bg:#0D1416; --surface:#15201E; --surface-2:#1C2926; --raise:#1A2523;
  --ink:#E7EDEB; --ink-2:#A0B0AC; --ink-3:#7A8A86; --line:#2A3A36;
  --accent:#48B6A9; --accent-ink:#7FD6CB; --accent-soft:#12332F;
  --good:#4FB56B; --good-soft:#153021; --good-line:#2C5638;
  --star-soft:#4A3D12; --star-line:#6E5A1E; --warn:#E0A34A; --bad:#E17165; --bad-soft:#39201D; --ev:#F0CF5A; --ev-soft:#3A3212; --ev-line:#6E5A1E; --my:#82B4EE; --my-soft:#15253A; --my-line:#2E4A6E;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 28px rgba(0,0,0,.35); color-scheme:dark;
}}
:root[data-theme="dark"]{
  --bg:#0D1416; --surface:#15201E; --surface-2:#1C2926; --raise:#1A2523;
  --ink:#E7EDEB; --ink-2:#A0B0AC; --ink-3:#7A8A86; --line:#2A3A36;
  --accent:#48B6A9; --accent-ink:#7FD6CB; --accent-soft:#12332F;
  --good:#4FB56B; --good-soft:#153021; --good-line:#2C5638;
  --star-soft:#4A3D12; --star-line:#6E5A1E; --warn:#E0A34A; --bad:#E17165; --bad-soft:#39201D; --ev:#F0CF5A; --ev-soft:#3A3212; --ev-line:#6E5A1E; --my:#82B4EE; --my-soft:#15253A; --my-line:#2E4A6E;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 28px rgba(0,0,0,.35); color-scheme:dark;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0; background:var(--bg); color:var(--ink); font-family:var(--gothic); font-size:16px; line-height:1.6; letter-spacing:-.003em}
::selection{background:var(--accent-soft)}

header.top{position:sticky; top:env(safe-area-inset-top,0px); z-index:20;
  background:color-mix(in srgb,var(--surface) 88%, transparent); backdrop-filter:saturate(1.4) blur(10px);
  border-bottom:1px solid var(--line)}
.top-inner{max-width:820px; margin:0 auto; padding:12px 20px; display:flex; flex-direction:column; gap:10px}
.brand{display:flex; align-items:baseline; justify-content:space-between; gap:12px; flex-wrap:wrap}
.brand h1{margin:0; font-weight:700; font-size:19px; letter-spacing:-.01em; display:flex; align-items:baseline; gap:9px; flex-wrap:wrap}
.brand h1 .sub{font-size:12px; font-weight:500; color:var(--ink-3); letter-spacing:.02em}
.chip{font-size:12.5px; font-weight:600; padding:4px 10px; border-radius:999px; border:1px solid var(--line);
  background:var(--raise); color:var(--ink-2); white-space:nowrap; font-variant-numeric:tabular-nums}
.chip b{color:var(--ink)}
.search{width:100%; font:inherit; font-size:14.5px; padding:10px 13px; border:1.5px solid var(--line); border-radius:11px;
  background:var(--raise); color:var(--ink); outline:none}
.search:focus{border-color:var(--accent); background:var(--surface)}
.search::placeholder{color:var(--ink-3)}

main{max-width:820px; margin:0 auto; padding:22px 20px 40px; display:flex; flex-direction:column; gap:26px}
.terms{display:flex; gap:6px; overflow-x:auto; scrollbar-width:none; padding-bottom:2px}
.terms::-webkit-scrollbar{display:none}
.term{flex:0 0 auto; font:inherit; font-size:13px; font-weight:700; cursor:pointer; padding:7px 13px; border-radius:999px; border:1px solid var(--line); background:var(--raise); color:var(--ink-2); white-space:nowrap}
.term .n{font-weight:600; color:var(--ink-3); margin-left:2px; font-variant-numeric:tabular-nums}
.term.on{background:var(--accent); border-color:var(--accent); color:#fff}
.term.on .n{color:inherit; opacity:.8}
@media (hover:hover){ .term:not(.on):hover{border-color:var(--accent); color:var(--accent)} }
.termsec{display:flex; flex-direction:column; gap:22px}
.termh{margin:0; font-size:17px; font-weight:800; color:var(--ink); letter-spacing:-.01em; padding-bottom:8px; border-bottom:1.5px solid var(--line)}
.grp h2{margin:0 0 10px; font-size:11.5px; font-weight:800; letter-spacing:.1em; color:var(--accent); display:flex; align-items:center; gap:8px}
.grp h2 .n{color:var(--ink-3); font-weight:700; letter-spacing:0}
.list{background:var(--surface); border:1px solid var(--line); border-radius:16px; box-shadow:var(--shadow); overflow:hidden}
.app{display:grid; grid-template-columns:1fr auto; gap:6px 16px; align-items:center; padding:16px 18px; border-top:1px solid var(--line)}
.app:first-child{border-top:none}
.app .info{min-width:0; display:flex; flex-direction:column; gap:5px}
.app .name{font-size:16px; font-weight:700; color:var(--ink); text-decoration:none; display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.app .name:hover{color:var(--accent)}
.app .name .tag{font-size:11px; font-weight:700; padding:1px 8px; border-radius:999px; background:var(--accent-soft); color:var(--accent-ink)}
.app .name .tag.ref{background:var(--surface-2); color:var(--ink-2)}
.app .desc{font-size:13px; color:var(--ink-3)}
.tabs{display:flex; gap:5px; flex-wrap:wrap}
.tabs span{font-size:11.5px; font-weight:600; padding:2px 9px; border-radius:999px; border:1px solid var(--line); background:var(--raise); color:var(--ink-2); font-variant-numeric:tabular-nums}
.tabs span.all{border-color:var(--accent); color:var(--accent-ink); background:var(--accent-soft)}
.acts{display:flex; gap:8px; align-items:center}
.nrow{display:flex; align-items:center; gap:8px; min-width:0; flex-wrap:wrap}
.upd.old{color:var(--bad); background:var(--bad-soft); border:1px solid color-mix(in srgb, var(--bad) 45%, transparent)}
.upd{font-size:11.5px; font-weight:600; color:var(--ink-3); background:var(--surface-2); border-radius:999px; padding:1px 8px; white-space:nowrap; font-variant-numeric:tabular-nums}
.pinbtn{flex:0 0 auto; width:28px; height:28px; border-radius:8px; border:1px solid var(--line); background:transparent; color:var(--ink-3); cursor:pointer; display:inline-flex; align-items:center; justify-content:center; padding:0}
.pinbtn svg{width:15px; height:15px}
.pinbtn.on{color:var(--accent); border-color:var(--accent); background:var(--accent-soft)}
.pinbtn.on svg path:first-child{fill:currentColor}
@media (hover:hover){ .pinbtn:not(.on):hover{color:var(--accent); border-color:var(--accent)} }
.pingrip{flex:0 0 auto; width:22px; height:28px; padding:0; border:none; border-radius:7px; background:transparent; color:var(--ink-3); cursor:grab; touch-action:none; display:inline-flex; align-items:center; justify-content:center; -webkit-user-select:none; user-select:none}
.pingrip svg{width:10px; height:13px}
.pinsec .app{position:relative}
.pinsec .app>.pingrip{position:absolute; top:5px; right:5px; width:18px; height:20px; border-radius:5px}
.pinsec .app:has(>.pingrip) .acts{margin-top:8px}
@media (max-width:560px){ .pinsec .app:has(>.pingrip) .acts{margin-top:0} .pinsec .app:has(>.pingrip) .nrow{padding-right:14px} }
@media (hover:hover){ .pingrip:hover{color:var(--accent); background:var(--accent-soft)} }
.pingrip:focus-visible{outline:2px solid var(--accent); outline-offset:1px}
.pinsec .app.dragging{position:relative; z-index:6; background:var(--surface); box-shadow:0 10px 30px rgba(16,40,44,.22); border-radius:12px; outline:2px solid var(--accent); transition:none}
.pinsec .app.dragging .pingrip{cursor:grabbing; color:var(--accent)}
body.pdrag{cursor:grabbing; -webkit-user-select:none; user-select:none}
.pinsec .list{overflow:visible}
.pinsec .app:first-child{border-radius:16px 16px 0 0} .pinsec .app:last-child{border-radius:0 0 16px 16px} .pinsec .app:only-child{border-radius:16px}
.termh svg{width:17px; height:17px; vertical-align:-2px; margin-right:6px; color:var(--accent)}
.termh .n{font-size:13px; font-weight:700; color:var(--ink-3); margin-left:4px}
.gname{font-weight:700; color:var(--accent-ink)}

.btn{font:inherit; font-size:13px; font-weight:700; cursor:pointer; padding:8px 14px; border-radius:10px; border:1px solid transparent; text-decoration:none; white-space:nowrap; display:inline-flex; align-items:center; gap:6px}
.btn.primary{background:var(--accent); color:#fff}
.btn.primary:hover{filter:brightness(1.06)}
.btn.ghost{background:transparent; border-color:var(--line); color:var(--ink-2)}
.btn.ghost:hover{border-color:var(--accent); color:var(--accent)}
.btn.ghost.done{border-color:var(--good-line); color:var(--good); background:var(--good-soft)}
.btn:focus-visible,.name:focus-visible,.search:focus-visible{outline:2px solid var(--accent); outline-offset:2px}
.btn svg{width:15px; height:15px}
.last{font-size:11px; font-weight:700; color:var(--warn); background:var(--star-soft); border:1px solid var(--star-line); border-radius:999px; padding:1px 8px}
.empty{padding:28px 18px; text-align:center; color:var(--ink-3); font-size:14px; background:var(--surface); border:1px dashed var(--line); border-radius:16px}
.note{padding:12px 14px; background:var(--raise); border:1px solid var(--line); border-radius:12px; font-size:12.5px; line-height:1.7; color:var(--ink-3)}
.note b{color:var(--ink-2)}
.cband{display:flex; align-items:center; justify-content:center; gap:7px; padding:7px 16px; background:var(--bad); color:#fff; font-size:13px; font-weight:800; letter-spacing:.02em; text-align:center; line-height:1.4}
.cband[hidden]{display:none}
.cband svg{width:15px; height:15px; flex:0 0 auto}
.cband span{font-weight:600; opacity:.9}
@media (max-width:560px){ .cband span{display:none} }
.cbadge{font-size:11px; font-weight:800; color:#fff; background:var(--bad); border-radius:6px; padding:2px 8px; align-self:center}
.cbadge[hidden]{display:none}
.cnote{margin:0 0 10px; padding:10px 13px; border:1px dashed var(--bad); border-radius:12px; background:var(--surface); font-size:13px; line-height:1.6; color:var(--ink-2)}
.cnote b{color:var(--ink)}
.cacts{margin-top:8px; display:flex; gap:8px; flex-wrap:wrap}
.cacts .btn[hidden]{display:none} .cnote a{color:var(--accent-ink); font-weight:700}
.side{display:none}
body.wide .top-inner{max-width:1160px}
body.wide .shell{max-width:1160px; margin:0 auto; padding:0 20px; display:grid; grid-template-columns:minmax(0,1fr) 248px; gap:28px; align-items:start}
body.wide .col{min-width:0}
body.wide #nbWrap, body.wide main{max-width:none!important; padding-left:0!important; padding-right:0!important}
body.wide .side{display:block; position:sticky; top:calc(var(--hh,150px) + 18px); margin-top:18px; max-height:calc(100vh - var(--hh,150px) - 36px); overflow-y:auto; background:var(--surface); border:1px solid var(--line); border-radius:14px; box-shadow:var(--shadow); padding:12px 10px 14px; scrollbar-width:thin}
.side .st{font-size:11px; font-weight:800; letter-spacing:.06em; color:var(--accent-ink); margin:2px 8px 8px}
.side .sterm{font-size:12.5px; font-weight:800; color:var(--ink); margin:12px 8px 4px; padding-top:10px; border-top:1px solid var(--line)}
.side .sterm:first-of-type{border-top:none; padding-top:0; margin-top:4px}
.side .sgrp{font-size:11px; font-weight:800; color:var(--accent); margin:8px 8px 2px; letter-spacing:.04em}
.side a{display:block; font-size:13px; font-weight:600; color:var(--ink-2); text-decoration:none; padding:5px 8px; border-radius:7px; cursor:pointer; line-height:1.4}
@media (hover:hover){ .side a:hover{background:var(--accent-soft); color:var(--accent-ink)} }
.side a.pin::before{content:"📌 "; font-size:11px}
.app.flash{animation:flash 1.2s ease}
@keyframes flash{0%,40%{box-shadow:inset 0 0 0 2px var(--accent)}100%{box-shadow:inset 0 0 0 2px transparent}}
footer{text-align:center; color:var(--ink-3); font-size:12px; padding-block:6px 30px}

  .overlay{position:fixed; inset:0; z-index:50; background:rgba(8,16,18,.5);
    display:flex; align-items:center; justify-content:center; padding:22px; animation:rise .18s ease}
  .dialog{background:var(--surface); border:1px solid var(--line); border-radius:16px;
    box-shadow:var(--shadow); padding:24px; max-width:360px; width:100%}
  .dialog p{margin:0 0 20px; font-size:15px; color:var(--ink); line-height:1.65}
  .dialog p b{color:var(--bad)}
  .drow{display:flex; gap:10px; justify-content:flex-end}
  #btnHelp{font-weight:800; font-size:15px; line-height:1}
  .dialog.help{max-width:520px; padding:0; max-height:86vh; display:flex; flex-direction:column; text-align:left}
  .dialog.help .hhead{display:flex; align-items:center; justify-content:space-between;
    padding:20px 22px 14px; border-bottom:1px solid var(--line)}
  .dialog.help .hhead h2{margin:0; font-size:17px; font-weight:800; color:var(--ink)}
  .dialog.help .hclose{background:none; border:none; cursor:pointer; color:var(--ink-3);
    font-size:22px; line-height:1; padding:2px 6px; border-radius:8px}
  .dialog.help .hclose:hover{color:var(--ink); background:var(--raise)}
  .dialog.help .hbody{overflow-y:auto; padding:6px 22px 22px}
  .help-sec{margin-top:14px; padding:14px 16px; border:1px solid var(--line);
    border-radius:12px; background:var(--raise)}
  .help-sec:first-child{margin-top:4px}
  .help-sec h3{margin:0 0 8px; font-size:13.5px; font-weight:800; color:var(--accent);
    display:flex; align-items:center; gap:7px}
  .help-sec h3 .hsi{width:18px; height:18px; flex:0 0 auto}
  .help-sec p{margin:0 0 8px; font-size:13.5px; line-height:1.72; color:var(--ink-2)}
  .help-sec p b{color:var(--ink)}
  .help-sec ul{margin:0; padding-left:2px; list-style:none}
  .help-sec li{position:relative; padding:5px 0 5px 22px; font-size:13.5px; line-height:1.7; color:var(--ink-2)}
  .help-sec li::before{content:""; position:absolute; left:4px; top:12px; width:6px; height:6px;
    border-radius:50%; background:var(--accent)}
  .help-sec li b{color:var(--ink)}
  .noticebar{display:flex; gap:10px; align-items:flex-start; margin:0 0 8px; padding:10px 12px 10px 14px; box-shadow:var(--shadow); border:1px solid color-mix(in srgb, var(--accent) 40%, var(--line)); border-radius:12px; background:var(--surface); font-size:13.5px; line-height:1.6; color:var(--ink)}
  .noticebar .nb-ic{flex:0 0 auto; display:inline-flex; align-items:center; height:21.6px; box-sizing:border-box; font-size:11px; line-height:1; font-weight:800; color:#fff; background:var(--accent); border-radius:6px; padding:0 7px}
  .noticebar .nb-tx{flex:1; min-width:0; white-space:pre-wrap; word-break:break-word}
  .noticebar .nb-body{flex:1; min-width:0; display:flex; flex-direction:column; align-items:flex-start; gap:2px}
  .noticebar .nb-body .nb-tx{flex:none; width:100%}
  .noticebar .nb-tx.clip{display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden}
  .noticebar .nb-more{font:inherit; font-size:12.5px; font-weight:700; color:var(--accent-ink); background:none; border:none; padding:2px 0; cursor:pointer; display:inline-flex; align-items:center; gap:4px}
  .noticebar .nb-more[hidden]{display:none}
  button.nb-ic{border:none; cursor:pointer; font-family:inherit}
  @media (hover:hover){ button.nb-ic:hover{filter:brightness(1.1); text-decoration:underline} }
  .nh-list{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px}
  .help-sec .nh-list li::before,.nh-list li::before{display:none; content:none}
  .nh-list li{padding:11px 13px!important; border:1px solid var(--line); border-radius:11px; background:var(--surface); display:flex; flex-direction:column; gap:5px}
  .nh-list li.cur{border-color:color-mix(in srgb, var(--accent) 50%, var(--line))}
  .nh-hd{display:flex; align-items:center; gap:7px; flex-wrap:wrap; font-size:11.5px; color:var(--ink-3); font-variant-numeric:tabular-nums}
  .nh-hd b{color:var(--ink-2)}
  .nh-tag{font-size:10.5px; font-weight:800; color:#fff; background:var(--accent); border-radius:5px; padding:1px 6px}
  .nh-tag.old{background:var(--surface-2); color:var(--ink-2)}
  .nh-now{font-size:10.5px; font-weight:800; color:var(--accent-ink); background:var(--accent-soft); border-radius:5px; padding:1px 6px}
  .nh-tx{font-size:13.5px; line-height:1.65; color:var(--ink); white-space:pre-wrap; word-break:break-word}
  .nh-del{margin-left:auto; font:inherit; font-size:11.5px; font-weight:700; color:var(--ink-3); background:none; border:1px solid var(--line); border-radius:7px; padding:2px 8px; cursor:pointer}
  .nh-del.sure{color:var(--bad); border-color:var(--bad)}
  .nh-acts{margin-left:auto; display:inline-flex; gap:5px}
  .nh-acts .nh-del{margin-left:0}
  .nh-ed{display:flex; flex-direction:column; gap:6px}
  .nh-ed textarea{width:100%; box-sizing:border-box; font:inherit; font-size:13.5px; line-height:1.6; padding:8px 10px; border:1.5px solid var(--accent); border-radius:9px; background:var(--surface); color:var(--ink); resize:vertical; min-height:72px; outline:none}
  .nh-ed .r{display:flex; gap:6px; align-items:center; flex-wrap:wrap}
  .nh-ed .r button{font:inherit; font-size:12px; font-weight:700; padding:5px 11px; border-radius:8px; cursor:pointer; border:1px solid var(--line); background:var(--surface); color:var(--ink-2)}
  .nh-ed .r button.p{background:var(--accent); border-color:var(--accent); color:#fff}
  .nh-ed .r .m{font-size:12px; font-weight:700; color:var(--ink-3)} .nh-ed .r .m.no{color:var(--bad)}
  .noticebar .nb-meta{display:flex; align-items:center; gap:6px; flex-wrap:wrap}
  .nb-adm{display:inline-flex; gap:4px; margin-left:4px}
  .nb-adm button{font:inherit; font-size:11px; font-weight:700; padding:1px 8px; border-radius:6px; border:1px solid var(--line); background:var(--surface); color:var(--ink-3); cursor:pointer}
  .nb-adm button.sure{color:var(--bad); border-color:var(--bad)}
  @media (hover:hover){ .nb-adm button:hover,.nh-del:hover{color:var(--accent); border-color:var(--accent)} }
  .adm-files li.adm-fgh{background:none; border:none; padding:10px 2px 0; font-size:12.5px; font-weight:800; color:var(--accent-ink); gap:7px}
  .adm-files li.adm-fgh:first-child{padding-top:0}
  .adm-files li.adm-fgh .n{display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px; border-radius:5px; background:var(--accent); color:#fff; font-size:11px}
  .fu-list{list-style:none; margin:0 0 4px; padding:0; display:flex; flex-direction:column; gap:6px}
  .fu-list li{display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; padding:9px 12px; border:1px solid var(--line); border-radius:10px; background:var(--raise); font-size:13.5px}
  .fu-list li b{color:var(--ink)} .fu-list li small{color:var(--ink-3); font-size:12px; font-variant-numeric:tabular-nums}
  .fu-when{display:inline-block; font-size:15px; font-weight:800; color:var(--accent-ink); background:var(--accent-soft); border-radius:8px; padding:4px 10px; margin:0 0 12px; font-variant-numeric:tabular-nums}
  .nh-empty{font-size:13px; color:var(--ink-3); padding:6px 2px}
  .noticebar .nb-meta{font-size:11.5px; font-weight:600; color:var(--ink-3); font-variant-numeric:tabular-nums}
  .noticebar .nb-meta b{font-weight:700; color:var(--ink-2)}
  .adm-nick{display:flex; gap:6px; align-items:center; margin-top:6px}
  .adm-nick input{flex:1; min-width:0; font:inherit; font-size:13px; height:30px; padding:0 9px; border:1.5px solid var(--line); border-radius:7px; background:var(--raise); color:var(--ink); outline:none}
  .adm-nick input:focus{border-color:var(--accent)}
  .adm-notes li .adm-nick button{flex:0 0 auto; font:inherit; font-size:12px; font-weight:700; height:30px; padding:0 10px; border-radius:7px; border:1px solid var(--line); background:var(--surface); color:var(--ink-2); cursor:pointer}
  .adm-notes li .adm-nick button.ok{border-color:var(--good-line); color:var(--good); background:var(--good-soft)}
  .adm-notes li .nk{font-weight:800}
  .noticebar .nb-more svg{width:13px; height:13px; transition:transform .15s}
  .noticebar .nb-more.on svg{transform:rotate(180deg)}
  @media (hover:hover){ .noticebar .nb-more:hover{text-decoration:underline} }
  .noticebar .nb-x{flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; height:21.6px; background:none; border:none; color:var(--ink-3); cursor:pointer; font-size:15px; line-height:1; padding:0 4px; border-radius:6px}
  .exambar{display:flex; gap:10px; align-items:center; flex-wrap:nowrap; margin:0 0 8px; padding:10px 12px 10px 14px; border:1px solid var(--line); border-left:4px solid var(--eb,var(--accent)); border-radius:12px; background:var(--surface); box-shadow:var(--shadow); font-size:13.5px; line-height:1.55; color:var(--ink)}
  .exambar[hidden],.eb-list[hidden]{display:none}
  .eb-rows{flex:1 1 0; min-width:0; display:grid; grid-template-columns:auto auto minmax(0,1fr); column-gap:10px; row-gap:9px; align-items:center}
  .eb-row{display:contents}
  .eb-row[hidden],.eb-sep[hidden]{display:none}
  .eb-sep{grid-column:1 / -1; border-top:1px dashed var(--line)}
  .exambar .eb-row .eb-ic{justify-self:stretch; text-align:center; box-sizing:border-box}
  .exambar .eb-row .eb-d{justify-self:start}
  @media (max-width:560px){ .eb-rows{column-gap:7px} .exambar .eb-row .eb-ic{font-size:10.5px; padding:2px 5px} .exambar .eb-row .eb-d{font-size:15px} .exambar .eb-when{font-size:12px} .exambar{padding-right:10px} }
  .exambar .eb-row.ev .eb-ic{color:var(--ev); background:var(--ev-soft)}
  .exambar .eb-row.ev .eb-d{color:var(--ev)}
  .exambar .eb-row.my .eb-ic{color:var(--my); background:var(--my-soft)}
  .exambar .eb-row.my .eb-d{color:var(--my)}
  .cal-c.hasmy{background:var(--my-soft); border-color:var(--my-line)}
  .cal-ev.myt{color:var(--my)}
  .mytag{display:inline-block; font-size:10.5px; font-weight:800; color:var(--my); background:var(--my-soft); border:1px solid var(--my-line); border-radius:5px; padding:0 5px; margin-right:5px; vertical-align:1px}
  .eb-list li.my .dd,.cal-ls li.my .dd{color:var(--my)}
  .myacts{display:inline-flex; gap:4px; margin-left:6px; vertical-align:1px}
  .myacts button{font:inherit; font-size:11px; font-weight:700; padding:0 7px; height:22px; border-radius:6px; border:1px solid var(--line); background:var(--surface); color:var(--ink-3); cursor:pointer}
  .myacts button.sure{color:var(--bad); border-color:var(--bad)}
  @media (hover:hover){ .myacts button:hover{color:var(--my); border-color:var(--my)} }
  .myadd{display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:8px 14px 4px; font-size:12px; color:var(--ink-3)}
  .cal-ls+.myadd,.cal-no+.myadd{padding:10px 2px 0}
  .myadd button{font:inherit; font-size:12.5px; font-weight:700; padding:5px 11px; border-radius:8px; border:1px dashed var(--my-line); background:var(--my-soft); color:var(--my); cursor:pointer}
  .eb-list li.myadd{display:flex; border-top:1px solid var(--line)}
  .cal-c.pick{cursor:pointer} @media (hover:hover){ .cal-c.pick:hover{outline:2px dashed var(--my-line); outline-offset:-2px} }
  .myf{display:flex; flex-direction:column; gap:10px; padding-top:14px}
  .myf label{display:flex; flex-direction:column; gap:4px; font-size:12px; font-weight:700; color:var(--ink-3)}
  .myf input{font:inherit; font-size:14px; height:38px; padding:0 10px; border:1.5px solid var(--line); border-radius:9px; background:var(--raise); color:var(--ink); outline:none; width:100%; box-sizing:border-box}
  .myf input:focus{border-color:var(--my)}
  .myf .r2{display:grid; grid-template-columns:1fr 1fr; gap:8px}
  .myf .note2{font-size:12px; color:var(--ink-3); margin:0}
  .myf .msg{font-size:12px; font-weight:700; color:var(--bad); min-height:1em}
  .exambar .eb-ic{flex:0 0 auto; font-size:11px; font-weight:800; color:var(--eb,var(--accent)); background:var(--surface-2); border-radius:6px; padding:2px 7px}
  .exambar .eb-d{flex:0 0 auto; font-size:17px; font-weight:800; color:var(--eb,var(--accent)); font-variant-numeric:tabular-nums; letter-spacing:-.01em}
  .exambar .eb-tx{flex:1 1 0; min-width:0; color:var(--ink-2)}
  @media (max-width:560px){ .exambar{gap:8px; padding-left:12px} }
  .exambar .eb-tx b{color:var(--ink)}
  .eb-one{display:block} .eb-one+.eb-one{margin-top:6px}
  .eb-when{display:block; color:var(--ink-2); font-size:13px; font-variant-numeric:tabular-nums}
  .eb-list li .eb-when{font-size:12.5px}
  .exambar .eb-more{flex:0 0 auto; width:34px; height:32px; padding:0; display:inline-flex; align-items:center; justify-content:center; cursor:pointer; border-radius:9px; border:1px solid var(--line); background:transparent; color:var(--ink-2); margin-left:auto}
  .exambar .eb-more svg{width:17px; height:17px}
  .eb-btns{flex:0 0 auto; display:flex; flex-direction:column; gap:6px; margin-left:auto}
  .eb-btns .eb-more{margin-left:0}
  .exambar .eb-more.eb-add{color:var(--my); border-color:var(--my-line)}
  @media (hover:hover){ .exambar .eb-more.eb-add:hover{background:var(--my-soft); border-color:var(--my); color:var(--my)} }
  .exambar .eb-more.on{background:var(--accent-soft); border-color:var(--accent); color:var(--accent-ink)}
  @media (hover:hover){ .exambar .eb-more:hover{border-color:var(--accent); color:var(--accent)} }
  .exambar.soon{--eb:var(--warn)} .exambar.urgent{--eb:var(--bad)}
  .eb-list{list-style:none; margin:-2px 0 12px; padding:6px 0; border:1px solid var(--line); border-radius:12px; background:var(--surface); font-size:13px}
  .eb-list li{display:grid; grid-template-columns:52px 1fr; gap:2px 10px; padding:7px 14px; border-top:1px solid var(--line); color:var(--ink-2)}
  .eb-list li:first-child{border-top:none}
  .eb-list li .dd{font-weight:800; color:var(--accent); font-variant-numeric:tabular-nums}
  .eb-list li.past{opacity:.5}
  .eb-list li b{color:var(--ink)}
  .eb-cal{margin:-2px 0 12px; padding:12px; border:1px solid var(--line); border-radius:12px; background:var(--surface)}
  .eb-cal[hidden]{display:none}
  .cal-hd{display:flex; align-items:center; justify-content:center; gap:14px; margin:0 0 10px; font-size:14.5px; color:var(--ink); font-variant-numeric:tabular-nums}
  .cal-nv{width:30px; height:28px; border-radius:8px; border:1px solid var(--line); background:transparent; color:var(--ink-2); cursor:pointer; font-size:17px; line-height:1}
  @media (hover:hover){ .cal-nv:hover{border-color:var(--accent); color:var(--accent)} }
  .cal-g{display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:3px}
  .cal-w{text-align:center; font-size:11px; font-weight:800; color:var(--ink-3); padding:2px 0 4px}
  .cal-w.sun,.cal-c.sun .cal-n{color:var(--bad)} .cal-w.sat{color:var(--accent)}
  .cal-c{min-height:64px; min-width:0; border:1px solid var(--line); border-radius:8px; padding:4px; display:flex; flex-direction:column; gap:3px; background:var(--raise); overflow:hidden}
  .cal-c.empty{border:none; background:transparent}
  .cal-c.past{opacity:.5}
  .cal-c.today{border:2px solid var(--accent)}
  .cal-c.has{background:var(--accent-soft); border-color:color-mix(in srgb, var(--accent) 45%, var(--line))}
  .cal-c.hasev{background:var(--ev-soft); border-color:var(--ev-line)}
  .cal-ev.evt{color:var(--ev)}
  .evtag{display:inline-block; font-size:10.5px; font-weight:800; color:var(--ev); background:var(--ev-soft); border:1px solid var(--ev-line); border-radius:5px; padding:0 5px; margin-right:5px; vertical-align:1px}
  .eb-list li.ev .dd,.cal-ls li.ev .dd{color:var(--ev)}
  .eb-one.ev b{color:var(--ev)} .eb-one.ev .eb-when{color:var(--ink-3)}
  .cal-n{font-size:11.5px; font-weight:700; color:var(--ink-2); font-variant-numeric:tabular-nums}
  .cal-ev{font-size:11px; font-weight:700; line-height:1.3; color:var(--accent-ink); overflow:hidden; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; word-break:keep-all; overflow-wrap:anywhere}
  .cal-ls{list-style:none; margin:10px 0 0; padding:0; font-size:13px; border-top:1px solid var(--line)}
  .cal-ls li{display:grid; grid-template-columns:52px 1fr; gap:10px; padding:7px 2px; border-bottom:1px solid var(--line); color:var(--ink-2)}
  .cal-ls li:last-child{border-bottom:none}
  .cal-ls li .dd{font-weight:800; color:var(--accent); font-variant-numeric:tabular-nums}
  .cal-ls li b{color:var(--ink)} .cal-ls li.past{opacity:.5}
  .cal-no{margin:10px 2px 0; font-size:13px; color:var(--ink-3)}
  @media (max-width:560px){ .eb-cal{padding:8px} .cal-c{min-height:52px; padding:3px; border-radius:6px} .cal-ev{font-size:9.5px; -webkit-line-clamp:4} .cal-n{font-size:10.5px} .cal-g{gap:2px} }
  .adm-ex{display:flex; flex-direction:column; gap:8px}
  .adm-exrow{display:grid; grid-template-columns:76px minmax(0,1.4fr) minmax(0,1fr) minmax(0,1.3fr) minmax(0,1.3fr) 30px; grid-template-areas:"y s l d e x" "k t t t t x"; gap:6px; align-items:center; padding:8px; border:1px solid var(--line); border-radius:9px; background:var(--surface); min-width:0}
  .adm-exrow [data-k="y"]{grid-area:y} .adm-exrow [data-k="s"]{grid-area:s} .adm-exrow [data-k="l"]{grid-area:l} .adm-exrow [data-k="d"]{grid-area:d} .adm-exrow [data-k="e"]{grid-area:e} .adm-exrow [data-k="t"]{grid-area:t} .adm-exrow .x{grid-area:x} .adm-exrow [data-k="k"]{grid-area:k}
  .adm-exrow input{display:block; width:100%; min-width:0; max-width:100%; box-sizing:border-box; font:inherit; font-size:13px; height:34px; padding:0 8px; border:1.5px solid var(--line); border-radius:7px; background:var(--raise); color:var(--ink); outline:none; margin:0}
  .adm-exrow input[type="date"]{-webkit-appearance:none; appearance:none; text-align:left; line-height:32px}
  .adm-exrow input[type="date"]::-webkit-date-and-time-value{text-align:left; margin:0}
  .adm-exrow input[type="date"]::-webkit-calendar-picker-indicator{margin:0; padding:0}
  .adm-exrow select{display:block; width:100%; min-width:0; box-sizing:border-box; font:inherit; font-size:13px; height:34px; padding:0 6px; border:1.5px solid var(--line); border-radius:7px; background:var(--raise); color:var(--ink); outline:none; margin:0}
  .adm-exrow input:focus,.adm-exrow select:focus{border-color:var(--accent)}
  .adm-exrow[hidden]{display:none}
  .ap-g{border:1px solid var(--line); border-radius:11px; background:var(--surface); padding:9px; margin:0 0 10px; display:flex; flex-direction:column; gap:7px}
  .ap-gh{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) auto; gap:6px; align-items:center}
  .ap-a{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto; grid-template-areas:"t d mv" "u u mv" "tabs tabs mv" "ref ref mv"; gap:5px; align-items:center; padding:7px; border:1px dashed var(--line); border-radius:9px; background:var(--raise)}
  .ap-a [data-k="t"]{grid-area:t} .ap-a [data-k="d"]{grid-area:d} .ap-a [data-k="u"]{grid-area:u} .ap-a [data-k="tabs"]{grid-area:tabs} .ap-a .ap-ref{grid-area:ref} .ap-a .ap-mv{grid-area:mv; flex-direction:column}
  .ap-g input:not([type="checkbox"]),.ap-g select{display:block; width:100%; min-width:0; box-sizing:border-box; font:inherit; font-size:13px; height:32px; padding:0 8px; border:1.5px solid var(--line); border-radius:7px; background:var(--surface); color:var(--ink); outline:none; margin:0}
  .ap-g input:focus,.ap-g select:focus{border-color:var(--accent)}
  .ap-gh [data-k="name"]{font-weight:700}
  .ap-ref{display:flex; align-items:center; gap:5px; font-size:12px; color:var(--ink-3); flex-wrap:wrap}
  .ap-m{display:inline-flex; align-items:center; gap:5px 6px; margin-left:auto; flex-wrap:wrap; white-space:nowrap}
  .ap-m button{white-space:nowrap}
  .ap-g .ap-m input[type="datetime-local"]{width:auto; height:28px; font-size:12px; padding:0 6px}
  .ap-g .ap-m input.ap-by{width:72px; height:28px; font-size:12px; padding:0 6px}
  .upd.by{color:var(--ink-2)}
  .ap-g .ap-m input.ap-v{width:78px; height:28px; font-size:12px; padding:0 6px; font-family:ui-monospace,Menlo,Consolas,monospace}
  .ap-now,.ap-vnow{font:inherit; font-size:11.5px; font-weight:700; height:28px; padding:0 8px; border-radius:7px; border:1px solid var(--line); background:var(--surface); color:var(--ink-2); cursor:pointer}
  .ap-mv{display:flex; gap:4px}
  .ap-mv button{width:28px; height:28px; padding:0; border:1px solid var(--line); background:transparent; color:var(--ink-3); border-radius:7px; cursor:pointer; font-size:13px}
  .ap-mv button.sure{width:auto; padding:0 7px; color:var(--bad); border-color:var(--bad); font-size:11.5px; font-weight:700}
  @media (hover:hover){ .ap-mv button:hover{color:var(--accent); border-color:var(--accent)} .ap-mv button.x:hover{color:var(--bad); border-color:var(--bad)} }
  .ap-list{display:flex; flex-direction:column; gap:6px}
  .ap-add{align-self:flex-start}
  @media (max-width:560px){ .ap-gh{grid-template-columns:minmax(0,1fr) auto; } .ap-gh [data-k="name"]{grid-column:1 / 3; grid-row:2} .ap-a{grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"t mv" "d mv" "u mv" "tabs mv" "ref mv"} }
  .adm-nt{display:flex; gap:6px; margin:0 0 6px; flex-wrap:wrap}
  .adm-nt button{font:inherit; font-size:12.5px; font-weight:700; cursor:pointer; padding:6px 12px; border-radius:999px; border:1.5px solid var(--line); background:var(--surface); color:var(--ink-2)}
  .adm-nt button.on{border-color:var(--accent); background:var(--accent-soft); color:var(--accent-ink)}
  .adm-ntst{font-size:12px!important; color:var(--ink-3)!important; margin:0 0 8px!important}
  .adm-ntst .up{color:var(--accent-ink); font-weight:700}
  .adm-exall{display:flex; align-items:center; flex-wrap:wrap; gap:4px 6px; font-size:12.5px; color:var(--ink-2); margin:0 0 8px; cursor:pointer}
  .adm-exall span{color:var(--ink-3); flex-basis:100%; padding-left:22px; font-size:11.5px}
  .adm-exrow.chg{border-color:var(--accent)}
  .adm-exrow .x{align-self:stretch; width:30px; padding:0; border:1px solid var(--line); background:transparent; color:var(--ink-3); border-radius:7px; cursor:pointer}
  @media (hover:hover){ .adm-exrow .x:hover{color:var(--bad); border-color:var(--bad)} }
  .adm-exhd{display:grid; grid-template-columns:76px minmax(0,1.4fr) minmax(0,1fr) minmax(0,1.3fr) minmax(0,1.3fr) 30px; gap:6px; padding:0 9px; font-size:11px; font-weight:800; color:var(--ink-3)}
  @media (max-width:560px){
    .adm-exrow{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 30px; grid-template-areas:"y s x" "l l x" "d e x" "k t x"}
    .adm-exhd{display:none}
    .adm-exrow input[type="date"]{font-size:12.5px}
    .dialog.admin .hbody{padding-left:12px; padding-right:12px}
    .dialog.admin .help-sec{padding:12px 10px}
    .adm-exrow{padding:6px; gap:5px}
  }
  .dialog.admin .hbody{overflow-x:hidden}
  .adm-confirm{position:absolute; inset:0; z-index:5; display:flex; align-items:center; justify-content:center; padding:18px; background:color-mix(in srgb, var(--surface) 70%, transparent); border-radius:inherit}
  .adm-confirm .box{max-width:340px; width:100%; background:var(--surface); border:1px solid var(--line); border-radius:14px; box-shadow:var(--shadow); padding:18px}
  .adm-confirm p{margin:0 0 14px; font-size:14.5px; font-weight:700; color:var(--ink); line-height:1.55}
  .adm-confirm p small{display:block; font-size:12.5px; font-weight:500; color:var(--ink-3); margin-top:4px}
  .adm-confirm .row{display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap}
  .dialog.admin{max-width:660px; position:relative; min-width:0}
  .adm-who{display:grid; grid-template-columns:auto 1fr; gap:4px 14px; font-size:13.5px; color:var(--ink-2)}
  .adm-who b{color:var(--ink)}
  .adm-ta{width:100%; box-sizing:border-box; font:inherit; font-size:13.5px; padding:9px 11px; border:1.5px solid var(--line); border-radius:9px; background:var(--surface); color:var(--ink); resize:vertical; min-height:64px; outline:none}
  .adm-ta:focus{border-color:var(--accent)}
  .adm-row{display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-top:8px}
  .adm-msg{font-size:12.5px; font-weight:700; color:var(--ink-3)} .adm-msg.ok{color:var(--good,#1f7a4d)} .adm-msg.no{color:var(--bad)}
  .adm-notes{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px}
  .adm-notes li{display:flex; gap:8px; align-items:flex-start; background:var(--surface); border:1px solid var(--line); border-radius:9px; padding:8px 10px; font-size:13.5px; line-height:1.55; color:var(--ink)}
  .adm-notes li .t{flex:1; min-width:0; white-space:pre-wrap; word-break:break-word}
  .help-sec .adm-notes li::before{display:none; content:none}
  .adm-notes li small{display:block; color:var(--ink-3); font-size:11.5px}
  .adm-notes li button{flex:0 0 auto; background:none; border:none; color:var(--ink-3); cursor:pointer; font-size:13px; padding:2px 4px}
  .adm-files{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px}
  .help-sec .adm-files li::before{display:none; content:none}
  .adm-files li{display:flex; gap:10px; align-items:center; flex-wrap:wrap; background:var(--surface); border:1px solid var(--line); border-radius:9px; padding:9px 11px; font-size:13.5px; color:var(--ink)}
  .adm-files li.adm-empty{color:var(--ink-3)}
  .adm-files .fn{flex:1; min-width:0; font-weight:700; word-break:break-all}
  .adm-files .fn small{display:block; font-weight:400; color:var(--ink-3); font-size:11.5px}
  .adm-files .fb{display:flex; gap:6px}
  .adm-files .fb .btn{padding:5px 11px; font-size:12px; border-radius:8px}
  .adm-view{white-space:pre-wrap; word-break:break-word; font-family:ui-monospace,Menlo,Consolas,monospace; font-size:12.5px; line-height:1.6; color:var(--ink); background:var(--raise); border:1px solid var(--line); border-radius:10px; padding:12px 14px; margin:0}
  .adm-log{font-family:ui-monospace,Menlo,Consolas,monospace; font-size:12px; background:var(--surface); border:1px solid var(--line); border-radius:9px; padding:8px 10px; white-space:pre-wrap; word-break:break-word; color:var(--ink-2); max-height:160px; overflow:auto; margin-top:8px}
  .noticebar[hidden]{display:none}
  .admbtn{border:1px solid var(--line); background:var(--raise); color:var(--ink-2); width:34px; height:32px; border-radius:9px; cursor:pointer; display:inline-flex; align-items:center; justify-content:center}
  .admbtn[hidden]{display:none}
  .hbtn{font:inherit; font-size:13px; font-weight:700; height:32px; padding:0 11px; border-radius:9px; border:1px solid var(--line); background:var(--raise); color:var(--ink-2); cursor:pointer; display:inline-flex; align-items:center; gap:6px; white-space:nowrap}
  .hbtn[hidden]{display:none}
  .hbtn svg{width:16px; height:16px; flex:0 0 auto}
  .hbtn.primary{background:var(--accent); border-color:var(--accent); color:#fff}
  @media (hover:hover){ .hbtn:not(.primary):hover{color:var(--accent); border-color:var(--accent)} .hbtn.primary:hover{filter:brightness(1.06)} }
  @media (max-width:420px){ .hbtn span{display:none} .hbtn{width:34px; padding:0; justify-content:center} }
  .admbtn.on{background:var(--accent); border-color:var(--accent); color:#fff}
  .setwrap{position:relative; display:inline-flex}
  .setmenu{position:absolute; right:0; top:40px; z-index:40; min-width:200px; background:var(--surface); border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow); padding:6px; display:flex; flex-direction:column; gap:2px}
  .setmenu[hidden],.setmenu button[hidden]{display:none}
  .setmenu button{font:inherit; font-size:13.5px; font-weight:600; text-align:left; cursor:pointer; padding:10px 12px; border-radius:9px; border:none; background:transparent; color:var(--ink); display:flex; align-items:center; gap:10px}
  .setmenu button svg{width:16px; height:16px; flex:0 0 auto}
  @media (hover:hover){ .setmenu button:hover{background:var(--accent-soft); color:var(--accent-ink)} }
  .help-toc{margin:14px 0 2px; padding:12px 14px 13px; border:1px solid var(--accent); border-radius:13px; background:var(--accent-soft)}
  .help-toc .tt{font-size:11px; font-weight:800; color:var(--accent-ink); letter-spacing:.06em; margin:0 0 8px}
  .help-toc ol{margin:0; padding:0; list-style:none; counter-reset:toc; display:grid; grid-template-columns:1fr 1fr; gap:3px 8px}
  .help-toc li{padding:0!important}
  .help-toc li::before{display:none!important}
  .help-toc a{display:flex; align-items:baseline; gap:8px; font-size:13px; font-weight:600; color:var(--ink); text-decoration:none; padding:6px 8px; border-radius:8px; cursor:pointer}
  @media (hover:hover){ .help-toc a:hover{background:var(--surface); color:var(--accent-ink)} }
  .help-toc a::before{counter-increment:toc; content:counter(toc); font-size:11px; font-weight:800; color:#fff; background:var(--accent); min-width:17px; height:17px; border-radius:5px; display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; align-self:center}
  @media (max-width:520px){ .help-toc ol{grid-template-columns:1fr} }
  .dialog.help .hbody{position:relative}
  .setlay{padding:6px 10px 8px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); margin:4px 0}
  .setlay-lbl{font-size:10.5px; font-weight:800; letter-spacing:.04em; color:var(--ink-3); margin:0 0 6px}
  .setlay-opts{display:flex; gap:6px}
  .navrow{display:flex; gap:10px; align-items:center; min-width:0}
  .navrow .terms{flex:1; min-width:0}
  .yrseg{flex:0 0 auto; display:inline-flex; padding:3px; gap:2px; border:1px solid var(--line); border-radius:999px; background:var(--surface-2)}
  .yrseg .yropt{font:inherit; font-size:13px; font-weight:700; cursor:pointer; padding:5px 13px; border-radius:999px; border:none; background:transparent; color:var(--ink-2); white-space:nowrap}
  .yrseg .yropt.on{background:var(--surface); color:var(--accent-ink); box-shadow:0 1px 2px rgba(16,40,44,.12)}
  @media (hover:hover){ .yrseg .yropt:not(.on):hover{color:var(--accent)} }
  .yrseg .yropt:focus-visible{outline:2px solid var(--accent); outline-offset:1px}
  .setmenu .layopt{flex:1; min-width:0; flex-direction:column; align-items:center; justify-content:center; gap:4px; padding:7px 6px 6px; font-size:11.5px; font-weight:700; border:1.5px solid var(--line); background:var(--raise); color:var(--ink-2); border-radius:10px}
  .setmenu .layopt svg{width:46px; height:38px; display:block}
  .layopt svg rect{fill:var(--surface-2); stroke:var(--ink-3); stroke-width:1.3}
  .layopt svg rect.fr{fill:var(--surface); stroke-width:1.5}
  .layopt svg rect.ac{fill:color-mix(in srgb, var(--accent) 25%, var(--surface))}
  .layopt.on svg rect{stroke:var(--accent)}
  .layopt.on svg rect.ac{fill:var(--accent)}
  .setmenu .layopt.on{border-color:var(--accent); background:var(--accent-soft); color:var(--accent-ink)}
  .setmenu a.setlink{font:inherit; font-size:13.5px; font-weight:600; text-align:left; text-decoration:none; cursor:pointer; padding:10px 12px; border-radius:9px; background:transparent; color:var(--ink); display:flex; align-items:center; gap:10px}
  .setmenu a.setlink[hidden]{display:none}
  .setmenu a.setlink svg{width:16px; height:16px; flex:0 0 auto}
  .setmenu a.setlink .setext{width:13px; height:13px; margin-left:auto; color:var(--ink-3)}
  @media (hover:hover){ .setmenu a.setlink:hover{background:var(--accent-soft); color:var(--accent-ink)} }
  .setmenu #mAdmin{border-top:1px solid var(--line); border-radius:0 0 9px 9px; margin-top:4px; padding-top:12px}
  @media (hover:hover){ .admbtn:not(.on):hover{color:var(--accent); border-color:var(--accent)} }
  .admbtn svg{width:18px; height:18px}
  .hd-r{display:flex; gap:8px; align-items:center}
  .btn.sm{padding:8px 14px; font-size:13px}
  .btn.primary:disabled{opacity:.45; cursor:not-allowed; filter:none}
@media (max-width:560px){
  .top-inner,main,#nbWrap{padding-left:16px!important; padding-right:16px!important}
  .app{grid-template-columns:1fr; padding:14px 15px}
  .acts .btn{flex:1; justify-content:center}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* ===== 로컬 기출풀이 — 기출풀이 모음 스타일에 더하는 부분 (토큰은 Design_Reference 그대로) ===== */
.scr{display:none} .scr.on{display:block}
.drop{display:flex; align-items:center; gap:14px; padding:14px 16px; margin:14px 0 4px; border:1.5px dashed var(--accent); border-radius:14px; background:var(--accent-soft); color:var(--accent-ink); font-size:13.5px; line-height:1.55}
.drop svg{width:26px; height:26px; flex:0 0 auto}
.drop b{color:var(--ink)}
.drop .btn{margin-left:auto}
.sheets{display:flex; gap:5px; flex-wrap:wrap}
.sheets span{font-size:11.5px; font-weight:600; padding:2px 9px; border-radius:999px; border:1px solid var(--good-line); background:var(--good-soft); color:var(--good); font-variant-numeric:tabular-nums}
.sheets span.no{border:1px dashed var(--line); background:transparent; color:var(--ink-3)}
.sheets span.warn{border-color:var(--star-line); background:var(--star-soft); color:var(--warn)}
.sheets span.imp{border-color:var(--accent); background:var(--surface); color:var(--accent-ink)}
.meter{display:flex; align-items:center; gap:10px; font-size:12px; color:var(--ink-3); font-variant-numeric:tabular-nums}
.meter i{flex:1; max-width:220px; height:5px; border-radius:99px; background:var(--surface-2); overflow:hidden; position:relative}
.meter i b{position:absolute; inset:0 auto 0 0; background:var(--accent); border-radius:99px}
.app .name .tag.own{background:var(--star-soft); color:var(--warn)}
.back{display:inline-flex; align-items:center; gap:6px; font-size:13px; font-weight:700; color:var(--ink-2); text-decoration:none; margin:18px 0 6px}
.back:hover{color:var(--accent)}
.ptitle{margin:4px 0 2px; font-size:22px; font-weight:800; letter-spacing:-.01em}
.psub{font-size:13px; color:var(--ink-3); margin:0 0 14px}
.card2{background:var(--surface); border:1px solid var(--line); border-radius:14px; box-shadow:var(--shadow); padding:16px 18px; margin:0 0 14px}
.card2 h3{margin:0 0 10px; font-size:14px; font-weight:800; display:flex; align-items:center; gap:8px}
.card2 h3 .n{font-weight:600; color:var(--ink-3); font-size:12.5px}
.solve{display:flex; align-items:center; gap:10px; flex-wrap:wrap}
.seg{display:inline-flex; background:var(--surface-2); border:1px solid var(--line); border-radius:11px; padding:3px; gap:2px}
.seg button{font:inherit; font-size:13px; font-weight:700; border:none; background:transparent; color:var(--ink-2); padding:7px 12px; border-radius:8px; cursor:pointer; white-space:nowrap}
.seg button .n{font-weight:500; color:var(--ink-3); margin-left:3px; font-variant-numeric:tabular-nums}
.seg button.on{background:var(--surface); color:var(--accent-ink); box-shadow:0 1px 2px rgba(0,0,0,.08)}
.solve .btn.primary{padding:10px 18px; font-size:14px}
.hint2{font-size:12px; color:var(--ink-3); margin-top:8px; line-height:1.6}
table.st{width:100%; border-collapse:collapse; font-size:13px; font-variant-numeric:tabular-nums}
table.st th{font-size:11px; font-weight:700; color:var(--ink-2); text-align:left; padding:7px 8px; background:var(--surface-2); border-bottom:1px solid var(--line)}
table.st td{padding:9px 8px; border-bottom:1px solid var(--line); vertical-align:middle}
table.st tr:last-child td{border-bottom:none}
table.st td.r{text-align:right; white-space:nowrap}
.pill{display:inline-flex; align-items:center; gap:5px; font-size:11.5px; font-weight:700; padding:2px 9px; border-radius:999px; white-space:nowrap}
.pill.ok{background:var(--good-soft); color:var(--good); border:1px solid var(--good-line)}
.pill.warn{background:var(--star-soft); color:var(--warn); border:1px solid var(--star-line)}
.pill.no{background:transparent; color:var(--ink-3); border:1px dashed var(--line)}
.pill.imp{background:var(--accent-soft); color:var(--accent-ink); border:1px solid var(--accent)}
.sname{font-weight:700} .sname small{display:block; font-weight:500; color:var(--ink-3); font-size:11.5px}
.tools{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px}
.tool{display:flex; gap:12px; align-items:flex-start; padding:12px 14px; border:1px solid var(--line); border-radius:12px; background:var(--raise)}
.tool svg{width:22px; height:22px; flex:0 0 auto; color:var(--accent)}
.tool b{display:block; font-size:13.5px} .tool span{font-size:12px; color:var(--ink-3); line-height:1.5}
.steps{display:flex; gap:6px; margin:4px 0 16px; flex-wrap:wrap}
.steps span{font-size:12.5px; font-weight:700; padding:6px 12px; border-radius:999px; border:1px solid var(--line); background:var(--raise); color:var(--ink-3)}
.steps span.done{border-color:var(--good-line); background:var(--good-soft); color:var(--good)}
.steps span.cur{border-color:var(--accent); background:var(--accent); color:#fff}
.idbox{display:flex; align-items:center; gap:12px; font-size:14px}
.idbox .big{font-size:20px; font-weight:800}
.lights{display:flex; gap:10px; flex-wrap:wrap; margin-bottom:10px}
.light{display:flex; align-items:center; gap:8px; padding:8px 12px; border-radius:11px; border:1px solid var(--line); background:var(--raise); font-size:13px; font-weight:700}
.light i{width:11px; height:11px; border-radius:50%} .light b{font-size:16px}
.light.g i{background:var(--good)} .light.y i{background:#E0A100} .light.r i{background:var(--bad)}
.ylist li{font-size:13px; line-height:1.6; margin:2px 0}
.ylist{margin:0; padding-left:18px; color:var(--ink-2)}
.sample{display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); gap:14px; padding:12px 0; border-top:1px solid var(--line)}
.sample:first-of-type{border-top:none; padding-top:0}
.sample img{width:100%; border:1px solid var(--line); border-radius:10px; background:#fff}
.sample .meta{font-size:13px; line-height:1.65; color:var(--ink-2)}
.sample .meta .k{font-size:11px; font-weight:800; color:var(--ink-3); letter-spacing:.02em; display:block; margin-top:6px}
.sample .meta b{color:var(--ink)}
.sample .yn{display:flex; gap:8px; margin-top:12px}
.sample .lab{font-size:12px; font-weight:800; color:var(--accent-ink); margin-bottom:6px}
.finish{display:flex; align-items:center; gap:14px; flex-wrap:wrap; padding:14px 18px}
.finish label{display:flex; align-items:center; gap:8px; font-size:13.5px; font-weight:600; color:var(--ink-2)}
.finish input{width:17px; height:17px; accent-color:var(--accent)}
.finish .btn.primary{margin-left:auto; padding:11px 20px; font-size:14.5px}
.side .sbox{font-size:12.5px; color:var(--ink-2); line-height:1.7; padding:4px 6px}
.side .sbox b{color:var(--ink)}
.side .sbig{font-size:22px; font-weight:800; color:var(--ink); font-variant-numeric:tabular-nums}
@media (max-width:560px){
  .tools{grid-template-columns:1fr}
  .sample{grid-template-columns:1fr}
  .drop{flex-wrap:wrap} .drop .btn{margin-left:0}
  .solve .btn.primary{width:100%; justify-content:center}
  .seg{width:100%} .seg button{flex:1; padding:7px 6px}
  table.st .hm{display:none}
  .finish .btn.primary{margin-left:0; width:100%; justify-content:center}
}
.back svg{width:16px; height:16px; flex:0 0 auto}
@media (max-width:560px){
  table.st td{padding:8px 4px} table.st th{padding:6px 4px}
  table.st .sname{white-space:nowrap} table.st .sname small{white-space:normal; max-width:120px}
  table.st .btn{padding:6px 9px; font-size:12px}
  table.st .pill{font-size:11px; padding:2px 7px}
}

/* ===== 허브 카드 ===== */
.hubm{max-width:1160px; margin:0 auto; padding:0 20px 10px}
.hubm .termh{margin:22px 0 12px}
.sgrid{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px}
.scard{background:var(--surface); border:1px solid var(--line); border-radius:16px; box-shadow:var(--shadow); padding:18px 16px 16px; display:flex; flex-direction:column; align-items:center; text-align:center; gap:10px; transition:border-color .12s, transform .12s}
@media (hover:hover){ .scard:hover{border-color:var(--accent); transform:translateY(-1px)} }
.sico{width:64px; height:64px; border-radius:18px; background:var(--accent-soft); color:var(--accent); display:flex; align-items:center; justify-content:center}
.sico svg{width:38px; height:38px}
.stitle{font-size:15.5px; font-weight:800; color:var(--ink); text-decoration:none; line-height:1.35; min-height:2.7em; display:flex; flex-direction:column; justify-content:center}
.stitle small{font-size:11.5px; font-weight:600; color:var(--ink-3); margin-top:2px}
.cbtns{display:flex; gap:8px; width:100%}
.cbtn{flex:1; font-size:14px; font-weight:800; text-decoration:none; text-align:center; padding:9px 0; border-radius:11px; border:1px solid var(--accent); color:var(--accent-ink); background:var(--surface)}
.cbtn.one{background:var(--accent); color:#fff}
@media (hover:hover){ .cbtn:hover{background:var(--accent); color:#fff} }
body.wide #s-hub.on ~ * {}
body:not(.wide) .sgrid{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:560px){ body .sgrid{grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px} .scard{padding:14px 10px 12px} .sico{width:54px;height:54px;border-radius:15px} .sico svg{width:32px;height:32px} .stitle{font-size:14.5px} .cbtn{font-size:13px; padding:8px 0} }
.hbtn{font:inherit; font-size:12.5px; font-weight:700; display:inline-flex; align-items:center; gap:6px; padding:6px 12px; border-radius:999px; border:1px solid var(--line); background:var(--raise); color:var(--ink-2); cursor:pointer}
.hbtn.primary{background:var(--accent); border-color:var(--accent); color:#fff}
.hbtn svg{width:15px; height:15px}

.cprog{display:flex; align-items:center; gap:8px; width:100%; margin-top:2px}
.cprog i{flex:1; height:5px; border-radius:99px; background:var(--surface-2); overflow:hidden; position:relative}
.cprog i b{position:absolute; inset:0 auto 0 0; background:var(--accent); border-radius:99px}
.cprog span{font-size:11px; font-weight:700; color:var(--ink-3); font-variant-numeric:tabular-nums; min-width:30px; text-align:right}
body.hub .shell{grid-template-columns:minmax(0,1fr)!important}
body.hub .side{display:none!important}
body.hub #nbWrap{max-width:1120px!important; padding:18px 20px 0!important}
@media (max-width:560px){ body:not(.wide) .sgrid, body.wide .sgrid{grid-template-columns:repeat(2,minmax(0,1fr))} body.hub #nbWrap{padding:14px 16px 0!important} }

/* v3: 아이콘 왼쪽 · 과목명 오른쪽 · 버튼 한 가지 색 · 다가오는 시험 초록 점 */
.scard{align-items:stretch; text-align:left; gap:12px}
.shead{display:flex; align-items:center; gap:12px; text-decoration:none; color:inherit; min-height:52px}
.shead .sico{width:48px; height:48px; border-radius:14px; flex:0 0 auto}
.shead .sico svg{width:30px; height:30px}
.shead .stitle{min-height:0; display:flex; flex-direction:column; justify-content:center; font-size:15.5px; line-height:1.3; min-width:0}
.stitle .tn{display:inline-flex; align-items:center; gap:7px}
.soon{width:9px; height:9px; border-radius:50%; background:var(--good); box-shadow:0 0 0 3px var(--good-soft); flex:0 0 auto; display:inline-block}
@media (max-width:560px){ .shead{gap:9px; min-height:44px} .shead .sico{width:40px;height:40px;border-radius:12px} .shead .sico svg{width:25px;height:25px} .shead .stitle{font-size:13.5px} .stitle small{font-size:10.5px} }
.stitle .tn{display:inline} .stitle .soon{margin-left:6px; vertical-align:2px}

/* 지금 수업 중 · 시험 전 과목 — 풀이앱 선지 강조와 같은 테두리 (2px + 바깥 은은한 띠) */
.scard.live{border:2px solid var(--accent); box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent), 0 2px 6px color-mix(in srgb,var(--accent) 18%,transparent), 0 10px 26px color-mix(in srgb,var(--accent) 14%,transparent); padding:17px 15px 15px}
.cbtn.now{background:var(--accent); color:#fff; border-color:var(--accent)}

/* 1차 · 2차 진행률을 버튼 아래 따로 */
.cbtns2{display:flex; gap:8px; width:100%}
.ccol{flex:1; min-width:0; display:flex; flex-direction:column; gap:7px}
.ccol .cbtn{display:block}
.ccol .cprog{margin-top:0; gap:6px}
.ccol .cprog span{min-width:26px; font-size:10.5px}

/* % 는 막대에 마우스를 올리거나(터치는 누르면) 말풍선으로 */
.cprog{position:relative; padding:5px 0; cursor:default; outline:none}
.cprog i{height:6px}
.cprog .tip{position:absolute; left:50%; bottom:calc(100% + 2px); transform:translate(-50%,4px); min-width:0;
  font-size:11.5px; font-weight:800; color:#fff; background:var(--ink); padding:3px 8px; border-radius:7px; white-space:nowrap;
  opacity:0; pointer-events:none; transition:opacity .12s, transform .12s; text-align:center}
.cprog .tip::after{content:""; position:absolute; left:50%; top:100%; transform:translateX(-50%); border:5px solid transparent; border-top-color:var(--ink)}
.cprog:hover .tip, .cprog:focus .tip{opacity:1; transform:translate(-50%,0)}
.cprog .tip{bottom:auto; top:calc(100% + 3px); transform:translate(-50%,-4px)}
.cprog .tip::after{top:auto; bottom:100%; border-top-color:transparent; border-bottom-color:var(--ink)}
.cprog:hover .tip, .cprog:focus .tip{transform:translate(-50%,0)}
.scard{overflow:visible}

/* D-day → 오른쪽 메뉴 (가로) · 머리 칩 (세로 · 모바일) */
body.hub.wide .shell{grid-template-columns:minmax(0,1fr) 260px!important}
body.hub.wide .side{display:block!important}
body.hub .hubm{max-width:none; padding:0}
body.hub:not(.wide) .hubm{padding:0 20px}
body.hub.wide .sgrid{grid-template-columns:repeat(3,minmax(0,1fr))}
body.hub .hubm .termh:first-child{margin-top:18px}
.ddchip{display:none; font:inherit; font-size:12.5px; font-weight:700; align-items:center; gap:6px; padding:5px 11px; border-radius:999px; border:1px solid var(--line); background:var(--raise); color:var(--ink-2); cursor:pointer; white-space:nowrap}
.ddchip b{color:var(--accent); font-weight:800}
body:not(.wide) .ddchip{display:inline-flex}
.ddnext{display:flex; align-items:center; gap:10px; padding:10px 8px 12px; border-bottom:1px solid var(--line); margin-bottom:6px}
.ddbig{font-size:26px; font-weight:800; color:var(--accent); letter-spacing:-.02em; font-variant-numeric:tabular-nums}
.ddnext b{display:block; font-size:13.5px; color:var(--ink)} .ddnext span{font-size:12px; color:var(--ink-3)}
.ddlist{list-style:none; margin:0; padding:2px 4px}
.ddlist li{display:flex; gap:10px; align-items:baseline; padding:6px 4px; font-size:13px}
.ddlist .d{min-width:38px; font-weight:800; color:var(--ink-2); font-variant-numeric:tabular-nums}
.ddlist b{display:block; color:var(--ink); font-weight:700} .ddlist small{font-size:11.5px; color:var(--ink-3)}
.ddlist li.my .d, .ddlist li.my b{color:var(--omemo-ink)}
.ddbtns{display:flex; gap:6px; padding:8px 4px 2px} .ddbtns .btn{flex:1; justify-content:center; padding:7px 8px; font-size:12px} .ddbtns svg{width:15px;height:15px}
.ddnote{font-size:10.5px; color:var(--ink-3); padding:6px 6px 0}
@media (max-width:560px){ .ddchip{font-size:11.5px; padding:4px 9px} }

.addexam{width:100%; justify-content:center; padding:10px 0; font-size:13.5px} .addexam svg{width:16px;height:16px}
.ddbtns{display:none}
.mcal{padding:2px 4px 0}
.mch{display:flex; align-items:center; justify-content:space-between; padding:2px 2px 8px}
.mch b{font-size:13px} .mch button{font:inherit; border:1px solid var(--line); background:var(--raise); color:var(--ink-2); border-radius:7px; width:26px; height:24px; cursor:pointer}
.mcw,.mcg{display:grid; grid-template-columns:repeat(7,1fr); text-align:center}
.mcw span{font-size:10.5px; font-weight:700; color:var(--ink-3); padding-bottom:4px}
.mcw span:first-child{color:var(--bad)}
.mcg span{font-size:12px; font-variant-numeric:tabular-nums; line-height:26px; height:26px; margin:1px; border-radius:7px; color:var(--ink-2); position:relative}
.mcg span.ex{background:var(--accent); color:#fff; font-weight:800}
.mcg span.my{background:var(--my-soft,#E5EEFB); color:var(--omemo-ink); font-weight:800}
.mcg span.today{outline:1.5px solid var(--ink-2); font-weight:800; color:var(--ink)}
.mclg{display:flex; gap:10px; justify-content:center; font-size:10.5px; color:var(--ink-3); padding:8px 0 2px}
.mclg i{display:inline-block; width:8px; height:8px; border-radius:3px; margin-right:4px; vertical-align:0}
.mclg i.ex{background:var(--accent)} .mclg i.my{background:var(--omemo-ink)} .mclg i.today{outline:1.5px solid var(--ink-2)}

.ddnext .ddbig{font-size:28px; font-weight:800; color:var(--accent); letter-spacing:-.02em; font-variant-numeric:tabular-nums; flex:0 0 auto}
.mclg i.my{background:#2563C7!important} .mclg i.ex{background:var(--accent)!important}
.setmenu .setsep{height:1px; background:var(--line); margin:4px 6px}
.setmenu svg{width:16px; height:16px}
/* 세로 · 모바일: D-DAY 칩만, 시험 추가 · 달력은 ⚙ 설정으로 */
body:not(.wide) .ddchip{display:inline-flex}
body.wide .setmenu > button.mo, body.wide .setmenu .setsep.mo{display:none}

/* 메뉴바 — 풀이앱 최신 규칙: 넓은 화면 = 선 아이콘 버튼 · 모바일 = ☰ 메뉴 하나 */
.admbtn.burger{display:none}
.setmenu .mo{display:none}
@media (max-width:560px){
  .admbtn.burger{display:inline-flex} .admbtn.gear{display:none}
  .hd-r .hbtn.primary{display:none}
  .setmenu .mo{display:flex}
  .brand{flex-wrap:nowrap!important} .brand h1 .sub{display:none}
  .hd-r{margin-left:auto; display:flex; align-items:center; gap:6px}
}
.layopt{font:inherit; font-size:12px}

/* ===== 설정 ===== */
.setm{max-width:1040px;margin:0 auto;padding:0 20px 30px}
.setgrid{display:grid;grid-template-columns:1fr;gap:16px}
body.wide .setgrid{grid-template-columns:210px minmax(0,1fr)}
.setnav{display:none}
body.wide .setnav{display:flex;flex-direction:column;gap:2px;position:sticky;top:90px;align-self:start;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:8px;box-shadow:var(--shadow)}
.setnav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;font-size:13.5px;font-weight:700;color:var(--ink-2);text-decoration:none}
.setnav a svg{width:17px;height:17px;flex:0 0 auto}
.setnav a:hover{background:var(--surface-2)}
.setnav a.on{background:var(--accent-soft);color:var(--accent)}
.setnav a.dz{color:var(--bad);margin-top:6px;border-top:1px solid var(--line);border-radius:0 0 9px 9px;padding-top:12px}
.card2.sc{padding:6px 18px 4px}
.card2.sc h3{margin:12px 0 4px}
.card2.sc h3 svg{width:17px;height:17px;color:var(--accent)}
.card2.sc.danger h3 svg{color:var(--bad)}
.srow{display:flex;align-items:center;gap:14px;padding:12px 0;border-top:1px solid var(--line)}
.card2.sc h3+.srow{border-top:0}
.srow .sl{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.srow .sl b{font-size:14px;font-weight:700;color:var(--ink)}
.srow .sl span{font-size:12.5px;color:var(--ink-3);line-height:1.5}
.srow .sr{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.srow .btn{padding:7px 11px;font-size:12.5px}
.srow .btn svg{width:15px;height:15px}
.seg.sm button{padding:6px 10px;font-size:12.5px}
.tg{width:40px;height:24px;border-radius:12px;background:var(--line);position:relative;display:inline-block;transition:.15s}
.tg i{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:.15s}
.tg.on{background:var(--accent)} .tg.on i{left:19px}
.smeter{width:90px;height:6px;border-radius:3px;background:var(--surface-2);border:1px solid var(--line);overflow:hidden;display:inline-block}
.smeter i{display:block;height:100%;background:var(--accent)}
.mt{font-size:12.5px;font-weight:700;color:var(--ink-2);font-variant-numeric:tabular-nums}
.btn.dang{background:var(--bad-soft);color:var(--bad);border:1px solid var(--bad-line);font-weight:700}
.credit{text-align:center;font-size:11.5px;color:var(--ink-3);line-height:1.6;margin:18px 0 0}
@media (max-width:640px){
  .srow{flex-wrap:wrap;gap:8px}
  .srow .sr{width:100%;justify-content:flex-start}
  .srow .sr .seg{flex:1}
  .card2.sc{padding:4px 14px 2px}
}

body.set .shell{grid-template-columns:minmax(0,1fr)!important} body.set .side{display:none!important}
.setmenu a.smi{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit}
.setmenu a.smi{font-size:13.5px;font-weight:600;padding:10px 12px;border-radius:9px;color:var(--ink)} .setmenu a.smi:hover{background:var(--accent-soft);color:var(--accent-ink)} .setmenu a.smi svg{width:16px;height:16px;flex:0 0 auto}

@media (max-width:640px){ .srow:has(.tg){flex-wrap:nowrap} .srow:has(.tg) .sr{width:auto} }

/* 과목 아이콘 — 광택 철판 (B-3: 위쪽 둥근 빛 + 옅은 사선 반사) */
:root{--sico-sh:inset 0 1px 0 rgba(255,255,255,.5),inset 0 -2px 3px rgba(0,0,0,.22),0 2px 6px rgba(14,107,99,.3)}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]){--sico-sh:inset 0 1px 0 rgba(255,255,255,.35),inset 0 -1px 0 rgba(0,0,0,.35),0 2px 6px rgba(0,0,0,.5)} }
:root[data-theme="dark"]{--sico-sh:inset 0 1px 0 rgba(255,255,255,.35),inset 0 -1px 0 rgba(0,0,0,.35),0 2px 6px rgba(0,0,0,.5)}
.sico{position:relative; overflow:hidden; color:#fff; background:linear-gradient(160deg,#4fb0a4 0%,#178077 35%,#0E6B63 60%,#08443f 100%); box-shadow:var(--sico-sh)}
.sico::after{content:""; position:absolute; inset:0; pointer-events:none; background:radial-gradient(140% 62% at 22% -12%,rgba(255,255,255,.30) 0%,rgba(255,255,255,.10) 40%,transparent 60%),linear-gradient(118deg,transparent 52%,rgba(255,255,255,.09) 68%,transparent 84%)}
.sico svg{position:relative; z-index:1; filter:drop-shadow(0 1px 1px rgba(0,0,0,.3))}

/* ===== ⚙ 드롭다운 + 창 ===== */
.setmenu a.smi .win{margin-left:auto;font-size:11px;font-weight:700;color:var(--ink-3);border:1px solid var(--line);border-radius:6px;padding:1px 6px}
.lab{font-size:10.5px;font-weight:800;color:var(--accent-ink);background:var(--accent-soft);border-radius:6px;padding:1px 6px;margin-left:6px}
.setmenu .dz{color:var(--bad)!important}
.setmenu{min-width:270px}
.ov{display:none;position:fixed;inset:0;background:rgba(12,24,22,.42);z-index:50;overflow:auto;padding:56px 16px}
.ov.on{display:block}
.dlg{background:var(--surface);border-radius:16px;max-width:720px;margin:0 auto;box-shadow:0 20px 60px rgba(0,0,0,.25);border:1px solid var(--line)}
.dh{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line)}
.dh h2{margin:0;font-size:17px;font-weight:800;display:flex;align-items:center}
.tl{display:flex;gap:7px}.tl i{width:12px;height:12px;border-radius:50%;display:block}
.tl .r{background:#ff5f57}.tl .y{background:#febc2e}.tl .g{background:#28c840}
.dx{margin-left:auto;text-decoration:none;color:var(--ink-3);font-size:22px;line-height:1;display:none}
.db{padding:8px 20px 18px}
.df{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px;border-top:1px solid var(--line)}
.dsec{font-size:12.5px;font-weight:800;color:var(--ink-2);margin:16px 0 4px;display:flex;align-items:center;gap:8px}
.dsec .n{font-weight:600;color:var(--ink-3)} .dsec .allb{margin-left:auto;display:flex;gap:6px}
.dlead{font-size:13.5px;color:var(--ink-2);line-height:1.6;margin:10px 0 8px}
.db table.st{margin-top:10px}
.db .srow:first-of-type{border-top:0}
.ck{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:11px;margin:6px 0;font-size:13.5px;line-height:1.5;cursor:pointer}
.ck input{margin-top:3px;accent-color:var(--accent);width:16px;height:16px;flex:0 0 auto}
.ck small{display:block;color:var(--ink-3);font-size:12px}
.ck small.warnl{color:var(--bad)}
.sumrow{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:14px 0 4px}
.sumrow .from{margin-left:auto;font-size:12.5px;color:var(--ink-3)}
.icode{font-family:ui-monospace,Menlo,monospace;font-size:13px;font-weight:700;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:6px 10px}
.cin,.addf input{font:inherit;font-size:13px;border:1px solid var(--line);border-radius:9px;padding:7px 10px;background:var(--surface);color:var(--ink);width:140px}
.addf{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.addf label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--ink-2)}
.ddlist.big .ddi{display:flex;align-items:center;gap:14px;padding:11px 4px;border-top:1px solid var(--line)}
.ddlist.big .ddi:first-child{border-top:0}
.ddlist.big .ddi b{width:52px;font-size:16px;font-weight:800;font-variant-numeric:tabular-nums}
.ddlist.big .ddi.on b{color:var(--accent)}
.ddlist.big .ddi span{flex:1;font-size:14px;font-weight:700} .ddlist.big .ddi small{display:block;font-weight:500;color:var(--ink-3);font-size:12px}
.db .seg{margin-top:12px}
@media (max-width:640px){
  .ov{padding:0;background:var(--surface)} .dlg{border-radius:0;border:0;box-shadow:none;min-height:100vh}
  .dh{position:sticky;top:0;background:var(--surface);z-index:1}
  .db{padding:6px 14px 16px} .df{position:sticky;bottom:0;background:var(--surface)} .df .btn{flex:1;justify-content:center}
  .db table.st{font-size:12px} .db table.st .seg button{padding:5px 7px;font-size:11.5px}
  .sumrow .from{margin-left:0;width:100%} .dsec{flex-wrap:wrap} .dsec .allb{margin-left:0;width:100%}
  .addf label{flex:1 1 40%} .addf input{width:100%}
}

/* ===== 강의록앱 새 화면과 같은 메뉴 구성 ===== */
header.top{padding:0}
.appbar{max-width:1240px;margin:0 auto;padding:10px 20px;display:flex;align-items:center;gap:18px;border-bottom:1px solid var(--line)}
.logo{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink);flex:0 0 auto}
.logo b{font-size:18px;font-weight:800;letter-spacing:-.01em}
.lgi{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:#fff;position:relative;overflow:hidden;background:linear-gradient(160deg,#4fb0a4 0%,#178077 35%,#0E6B63 60%,#08443f 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 1px 3px rgba(14,107,99,.3)}
.lgi::after{content:"";position:absolute;inset:0;background:radial-gradient(140% 62% at 22% -12%,rgba(255,255,255,.30),rgba(255,255,255,.10) 40%,transparent 60%)}
.lgi svg{width:18px;height:18px;position:relative;z-index:1}
.gchip{font-size:11.5px;font-weight:800;color:var(--accent-ink);background:var(--accent-soft);border-radius:7px;padding:2px 7px}
.tabnav{display:flex;align-items:center;gap:2px;flex:1;min-width:0}
.nv{display:inline-flex;align-items:center;gap:7px;padding:8px 12px;border-radius:10px;font-size:14.5px;font-weight:700;color:var(--ink-2);text-decoration:none;white-space:nowrap;position:relative}
.nv svg{width:18px;height:18px;flex:0 0 auto}
.nv:hover{background:var(--surface-2)}
.nv.on{background:var(--accent-soft);color:var(--accent-ink)}
.tabnav .more .nv svg:last-child{width:14px;height:14px}
.bdg{font-style:normal;min-width:18px;height:18px;border-radius:9px;background:#E08600;color:#fff;font-size:11px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;padding:0 5px}
.abr{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.tbtn{font:inherit;display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:13.5px;font-weight:700;text-decoration:none;cursor:pointer;white-space:nowrap}
.tbtn svg{width:17px;height:17px}
.tbtn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.tbtn.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink)}
.abm{display:none}
body.wide .abr .ddchip{display:none}
body.set .hubonly{display:none}
.hubonly{padding-top:12px!important}
.btab{display:none}
.ov.more{background:transparent;padding:0}
.mdrop{position:absolute;top:56px;left:560px;width:340px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 14px 40px rgba(0,0,0,.16);padding:6px}
.mi{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:10px;text-decoration:none;color:var(--ink)}
.mi:hover{background:var(--surface-2)}
.mi>svg:first-child{width:20px;height:20px;color:var(--ink-2);flex:0 0 auto}
.mi>svg:last-child{width:16px;height:16px;color:var(--ink-3);margin-left:auto;flex:0 0 auto}
.mi .mt{display:flex;flex-direction:column;min-width:0}
.mi .mt b{font-size:14.5px;display:flex;align-items:center}
.mi .mt small{font-size:12px;color:var(--ink-3)}
.mi .bdg{margin-left:auto}
.mi .bdg+svg{margin-left:6px!important}
.sheetov{display:none}
.pagem{max-width:980px;margin:0 auto;padding:18px 20px 40px}
.calgrid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:14px;align-items:start}
.ck2{display:flex;align-items:center;gap:14px;padding:14px 0;border-top:1px solid var(--line)}
.ck2:first-child{border-top:0}
.ck2 .pill{flex:0 0 auto;min-width:96px;justify-content:center}
.ck2 .ckt{flex:1;min-width:0;display:flex;flex-direction:column} .ck2 .ckt b{font-size:14.5px} .ck2 .ckt small{font-size:12.5px;color:var(--ink-3)}
.ck2.done{opacity:.6}
.setm{max-width:1240px}
.setgrid{grid-template-columns:240px minmax(0,1fr)!important}
.setnav{display:flex!important;flex-direction:column;gap:2px;position:sticky;top:20px;align-self:start;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:8px;box-shadow:var(--shadow)}
.ssearch{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:7px 10px;background:var(--surface-2);margin-bottom:6px}
.ssearch svg{width:16px;height:16px;color:var(--ink-3)} .ssearch input{border:0;background:transparent;font:inherit;font-size:13px;outline:0;width:100%;color:var(--ink)}
.setnav a .lab{margin-left:auto}
.setm .ptitle{display:none}
.setm .back.mob{display:none}
#s-set .ptitle{display:block}
.slist{padding:4px 8px}
.mvf{display:flex;justify-content:flex-end;padding:12px 0 6px}
.mt2{font-size:12.5px;font-weight:700;color:var(--ink-2)}
.setbody .card2.sc h3{font-size:17px}
.setbody .db{padding:0}
@media (max-width:1000px){ .nv span{display:none} .nv{padding:9px} .tabnav .more .nv svg:last-child{display:none} .nv.on span,.tabnav .nv[data-s="s-check"] span{display:inline} }
@media (max-width:760px){ .setgrid{grid-template-columns:1fr!important} .setnav{display:none!important} .setm .back.mob{display:inline-flex} .calgrid{grid-template-columns:1fr} }
@media (max-width:640px){
  .appbar{gap:8px;padding:10px 14px}
  .logo b{font-size:17px} .logo .gchip{display:none}
  .tabnav,.abr{display:none}
  .abm{display:flex;align-items:center;gap:4px;margin-left:auto}
  .ddchip.sm{display:inline-flex!important;font-size:12px;padding:5px 9px}
  .ibt{display:flex;flex-direction:column;align-items:center;gap:1px;font-size:10.5px;font-weight:700;color:var(--ink-2);text-decoration:none;width:44px}
  .ibt svg{width:21px;height:21px}
  .btab{display:flex;position:fixed;left:12px;right:12px;bottom:14px;z-index:40;background:var(--surface);border:1px solid var(--line);border-radius:22px;box-shadow:0 6px 24px rgba(0,0,0,.14);padding:6px;justify-content:space-between}
  .btab .nv{flex:1;flex-direction:column;gap:2px;padding:7px 2px;font-size:11px;border-radius:16px}
  .btab .nv span{display:inline!important}
  .btab .nv .bdg{position:absolute;top:2px;right:calc(50% - 22px);height:16px;min-width:16px;font-size:10px}
  body{padding-bottom:96px}
  .sheetov.on{display:block;position:fixed;inset:0;background:rgba(12,24,22,.38);z-index:45}
  .sheet{position:absolute;left:0;right:0;bottom:0;background:var(--surface);border-radius:22px 22px 0 0;padding:10px 12px 104px}
  .sheet .grab{display:block;width:40px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 10px}
  .sheet h3{margin:0 6px 6px;font-size:17px}
  .sheet .mi{border-top:1px solid var(--line);border-radius:0}
  .scr-credit{font-size:11px;color:var(--ink-3);text-align:center;margin:10px 0 0}
  .pagem{padding:12px 14px 30px}
  .ck2{flex-wrap:wrap} .ck2 .btn{width:100%;justify-content:center}
}

.setm{padding-top:18px!important}
@media (max-width:1000px){ .abr .ddchip{display:none!important} .abr .tbtn:not(.primary) span{display:none} .abr .tbtn{padding:8px} .appbar{gap:10px} }
@media (max-width:640px){
  table.st.cmp tr:first-child{display:none}
  table.st.cmp tr{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;padding:12px 2px;border-bottom:1px solid var(--line)}
  table.st.cmp td{border:0!important;padding:0!important}
  table.st.cmp td.sname{grid-column:1/-1;font-size:14px}
  table.st.cmp td[data-l="무엇"]{grid-column:1/-1;color:var(--ink-3);font-size:12px}
  table.st.cmp td[data-l="내 것"]::before,table.st.cmp td[data-l="받은 것"]::before{content:attr(data-l);display:block;font-size:11px;color:var(--ink-3);font-weight:700}
  table.st.cmp td.r{grid-column:1/-1;text-align:left}
  table.st.cmp td.r .seg{width:100%} table.st.cmp td.r .seg button{flex:1}
}
@media (max-width:1000px){ .mdrop{left:400px} }

/* ===== 디자인 검토 반영 (11/05) ===== */
/* 대비 · 카드 · 제목 간격 (강의록앱처럼 테두리 카드) */
:root{--ink-3:#5F6E73}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]){--ink-3:#93A29E} }
:root[data-theme="dark"]{--ink-3:#93A29E}
.card2{box-shadow:none!important;border:1px solid var(--line)}
.scard{box-shadow:none}
.pagem .ptitle{margin:6px 0 2px} .pagem .psub{margin:0 0 14px}
.ptitle+.psub{margin-top:2px}
/* 홈 카드 */
.cscope{font-size:11.5px;font-weight:700;color:var(--ink-3);margin:10px 0 4px}
.cbtn{min-height:44px;display:flex;align-items:center;justify-content:center}
.cbtn.ins{gap:6px;color:var(--ink-2);border-style:dashed} .cbtn.ins svg{width:16px;height:16px}
.stitle .tn{word-break:keep-all}
.lab{font-style:normal}
/* 달력 칸 · 범례 모양 */
@media (max-width:640px){ .mcg span{min-height:40px;display:flex;align-items:center;justify-content:center} .mch button{min-width:44px;min-height:44px} }
.mcg span.ex{position:relative} .mcg span.my{text-decoration:underline;text-underline-offset:3px}
/* 확인할 것 */
.ck2 .pill.imp{background:#E7F1FB;color:#1E5A8C;border-color:#9CC3E6}
/* 받기 단계 */
.rstep{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 2px;font-size:13.5px}
.rstep>b{font-weight:800;color:var(--ink-2);font-size:12.5px;min-width:96px}
.rstep .fname{display:inline-flex;align-items:center;gap:6px;font-weight:700} .rstep .fname svg{width:16px;height:16px;color:var(--accent)}
.rstep .btn{padding:6px 10px;font-size:12.5px}
.onlyd{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:var(--ink-2);margin-right:6px}
.onlyd .tg{transform:scale(.8)}
/* 친구 예시 */
.frdemo{border:1px dashed var(--line);border-radius:12px;padding:12px 14px;background:var(--surface-2)}
.frq{font-size:12.5px;color:var(--ink-3);margin-bottom:8px} .frq b{color:var(--ink)}
.frq2{font-size:12px;color:var(--ink-3);margin-top:8px}
.frrow{display:flex;flex-wrap:wrap;gap:6px}
.frrow .fr{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:999px;padding:4px 10px;background:var(--surface);font-size:13px;font-weight:700}
.frrow .fr.ok b{color:var(--good,#1E7A4C)} .frrow .fr.ng b{color:var(--bad)}
.db table.st td.r .btn+.btn,.setbody table.st td.r .btn+.btn{margin-left:6px}
/* 푸터 */
footer{font-size:11.5px!important;padding:18px 16px!important}
/* 폰: 표 → 카드, 과목 · 확인 3단계 */
@media (max-width:640px){
  table.st:not(.cmp) tr:first-child{display:none}
  table.st:not(.cmp) tr{display:grid;grid-template-columns:1fr auto;gap:6px 10px;padding:12px 2px;border-bottom:1px solid var(--line);align-items:center}
  table.st:not(.cmp) td{border:0!important;padding:0!important}
  table.st:not(.cmp) td.sname{grid-column:1/2}
  table.st:not(.cmp) td.r:last-child{grid-column:1/-1;text-align:left}
  table.st:not(.cmp) td.r:last-child .btn{min-height:40px}
  .steps{display:flex;overflow-x:auto;gap:6px;scrollbar-width:none} .steps span{flex:0 0 auto}
  #s-verify .card2 .hint2{display:none}
  #s-verify .sample{grid-template-columns:1fr!important}
  #s-verify .sample img{width:100%;height:auto}
  #s-verify .finish{position:sticky;bottom:96px;z-index:5;box-shadow:0 -6px 20px rgba(0,0,0,.08)!important}
  footer{padding-bottom:110px!important}
}
.sico .soon{position:absolute;top:-3px;right:-3px;z-index:2;width:12px;height:12px;box-shadow:0 0 0 2.5px var(--surface)}
.tool.dz b{color:var(--bad)} .tool.dz svg{color:var(--bad)}
.sico{overflow:visible!important} .sico::after{border-radius:inherit}
/* ===== 디자인 검토 「중」 반영 (11/05) ===== */
/* 11. 페이지 큰 제목 없앰 — 위 메뉴 · 폰 헤더가 화면 이름. 설명은 한 줄 작게 */
.pagem>.ptitle{display:none}
.pagem>.psub{margin:2px 2px 12px;font-size:12.5px}
/* 12. 홈: 검색 · 학기 칩은 본문 맨 위 (헤더는 한 줄) */
.hubtop{display:flex;flex-direction:column;gap:10px;margin:4px 0 18px}
.hubtop .search{margin:0}
.hubtop .navrow{margin:0}
.mttl{display:none}
@media (max-width:640px){
  .logo .lgt{display:none} .logo .mttl{display:inline;font-size:17px}
  .logo .gchip{display:inline-flex!important;font-size:11px;padding:2px 7px}
  .hubtop{margin:0 0 12px}
}
/* 14. 패드 세로: 메뉴 · 버튼에 짧은 글자 */
@media (max-width:1199px) and (min-width:641px){
  .nv span[data-sh],.tbtn span[data-sh]{display:inline!important;font-size:0}
  .nv span[data-sh]::after,.tbtn span[data-sh]::after{content:attr(data-sh);font-size:13px}
  .nv{padding:8px 9px;gap:5px}
  .abr .ddchip{display:none}
  .abr .tbtn:not(.primary) span{display:none}
}
/* 16. 시험 추가: 종류 칩 · 시간 · 알림 */
.addf2{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;align-items:end;margin-bottom:6px}
.addf2 .af-k,.addf2 .af-t,.addf2 .af-go{grid-column:1/-1}
.addf2 label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:700;color:var(--ink-2)}
.addf2 input{font:inherit;font-size:14px;font-weight:600;border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-height:44px;box-sizing:border-box;background:var(--surface);color:var(--ink);width:100%}
.afl{display:block;font-size:12px;font-weight:700;color:var(--ink-2);margin-bottom:6px}
.chips2{display:flex;flex-wrap:wrap;gap:6px}
.kc{font:inherit;font-size:13px;font-weight:700;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);border-radius:999px;padding:0 14px;min-height:36px;cursor:pointer}
.kc.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}
.af-t{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
.af-t .afl{flex-basis:100%;margin:0}
.tpair{display:flex;align-items:center;gap:8px} .tpair input{width:96px!important;text-align:center}
.tpair span{color:var(--ink-3)}
.allday{flex-direction:row!important;align-items:center;gap:8px!important;min-height:44px}
.af-go{display:flex;justify-content:flex-end}
.af-go .btn{min-height:44px;padding:0 20px;display:inline-flex;align-items:center;gap:6px}
.af-go .btn svg{width:17px;height:17px}
.toast2{display:flex;align-items:center;gap:10px;margin:10px 0 4px;padding:10px 12px;border-radius:12px;background:var(--accent-soft);color:var(--accent-ink);font-size:13px;line-height:1.45}
.toast2 svg{width:18px;height:18px;flex:0 0 auto}
.toast2 span{flex:1;min-width:0}
.toast2 .tl{font:inherit;font-size:12.5px;font-weight:800;color:var(--accent-ink);background:none;border:0;padding:8px 6px;min-height:36px;cursor:pointer;white-space:nowrap}
@media (max-width:640px){ .addf2{grid-template-columns:1fr} .af-go .btn{width:100%;justify-content:center} }
.hubtop{margin:12px 0 6px}
.hubtop+.termh{margin-top:14px!important}
@media (max-width:640px){ .hubtop{margin:10px 0 4px} }
/* ===== 설정 아이콘 — 강의록앱처럼 (11/06): 맥 설정 색 네모(모서리 23%) · 위가 밝은 그라데이션 · 흰 채움 아이콘 76% ===== */
.sti{--c:#8E8E93;flex:0 0 auto;width:26px;height:26px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(180deg,color-mix(in srgb,var(--c) 78%,#fff) 0%,var(--c) 60%,var(--c) 100%);box-shadow:0 1px 1.5px rgba(16,40,44,.22)}
.sti svg{width:20px!important;height:20px!important;filter:none!important}
.sti.lg{width:30px;height:30px;border-radius:7px} .sti.lg svg{width:23px!important;height:23px!important}
.setnav a{gap:11px} .setnav a.on .sti{box-shadow:0 0 0 2px var(--surface),0 0 0 3.5px color-mix(in srgb,var(--c) 45%,transparent)}
.setnav a.dz{color:var(--ink-2)}
.slist .mi .sti{width:30px;height:30px;border-radius:7px} .slist .mi .sti svg{width:23px!important;height:23px!important}
.card2 h3 .sti{margin-right:2px}
/* 설정 줄 왼쪽 선 아이콘 */
.srow .sri{flex:0 0 auto;width:20px;height:20px;color:var(--ink-3);display:inline-flex;align-self:center}
.srow .sri svg{width:20px;height:20px}
.srow .sl{flex:1 1 200px;min-width:0}
.sti,.sti svg{color:#fff!important}
.lgi.app{background:none!important;box-shadow:none!important;padding:0!important;overflow:visible}
.lgi.app svg{width:100%!important;height:100%!important;display:block}
/* (11/06) 폰: 과목 카드 한 줄에 하나 */
@media (max-width:560px){ body .sgrid, body:not(.wide) .sgrid, body.wide .sgrid{grid-template-columns:minmax(0,1fr)!important;gap:10px} .scard{padding:14px 16px 14px} }

/* ===== 웹앱 (실제 앱) ===== */
:root{--bg:#EEF1F0;--surface-2:#F5F7F6;--line:#E0E6E4;--ink-2:#4E6066;--ink-3:#5F6E73;--accent-soft:#E2EFED;--accent-line:#B7D5D1;
 --gothic:"Apple SD Gothic Neo","Noto Sans KR",-apple-system,BlinkMacSystemFont,"Malgun Gothic",sans-serif}
body{font-family:var(--gothic);background:var(--bg)}
.card2,.scard{border:1px solid var(--line);border-radius:18px;box-shadow:none}
.ck2{border:1px solid var(--accent-line);border-radius:14px;background:#FAFCFB;padding:14px 16px;margin-bottom:10px}
:root[data-theme="dark"] .ck2{background:var(--surface-2)}
.hubm{gap:0}.hubm .termh{margin:26px 0 14px}.hubtop{margin:14px 0 0}
.side{position:sticky!important;top:76px!important;margin-top:14px!important;max-height:calc(100vh - 96px)!important;border-radius:18px!important;box-shadow:none!important}
.logo .mttl{display:none!important}.logo .lgt{display:inline!important}
.empty{padding:28px 16px;text-align:center;color:var(--ink-3);font-size:14px;line-height:1.6}
.empty b{display:block;color:var(--ink);font-size:15px;margin-bottom:4px}
.toast{position:fixed;left:50%;bottom:calc(96px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:90;background:#16242A;color:#fff;border-radius:12px;padding:10px 14px;font-size:13.5px;display:flex;gap:12px;align-items:center;box-shadow:0 8px 24px rgba(0,0,0,.2);max-width:calc(100vw - 32px)}
.toast button{font:inherit;font-weight:800;color:#7FD6CB;background:none;border:0;cursor:pointer;padding:6px 4px;min-height:36px}
@media (min-width:641px){ .toast{bottom:28px} }
.cbtn.solo{grid-column:1/-1}
.fileinp{display:none}
select.inp,input.inp{font:inherit;font-size:14px;border:1px solid var(--line);border-radius:10px;padding:9px 12px;min-height:44px;background:var(--surface);color:var(--ink)}
.addf2 select{font:inherit;font-size:14px;font-weight:600;border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-height:44px;background:var(--surface);color:var(--ink);width:100%}
.scr{display:none}.scr.on{display:block}
.soonbox{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--ink-3);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:3px 10px}
.subjh{display:flex;align-items:center;gap:14px;margin:6px 0 14px}.subjh .ptitle{margin:0}.subjh .psub{margin:2px 0 0}
.ddlist.big .ddi span{flex:1;min-width:0}
.cbtn.ins{border-style:dashed}
.btn svg{width:16px;height:16px;vertical-align:-3px;margin-right:4px}
@media (max-width:640px){ .pagem>.psub{display:none} }
a.tool{color:inherit;text-decoration:none} a.tool b{color:var(--ink)} a.tool.dz b{color:var(--bad)}
a.ddchip{text-decoration:none}
.ddlist.big .ddi b{width:auto;min-width:56px;white-space:nowrap}
.ddpick{display:flex;flex-direction:column;gap:6px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.ddpick .afl{display:flex;align-items:center;gap:6px;margin:0}.ddpick .afl svg{width:18px;height:18px;color:var(--ink-3)}
.ddpick small{font-weight:500;color:var(--ink-3)} .ddpick select{width:100%}
/* (11/06) 시험 다가온 과목 — 강의록앱 상태 점처럼 과목명 앞 작은 초록 점 */
.sdot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#1E7A4C;margin-right:7px;vertical-align:.18em;flex:0 0 auto}
.scard .sico .soon{display:none}
/* (11/06) 과목 카드 ⋯ 메뉴 · 숨긴 과목 */
.scard{position:relative}
.cmore{position:absolute;top:10px;right:10px;width:32px;height:32px;border-radius:9px;border:0;background:none;color:var(--ink-3);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:2}
.cmore svg{width:18px;height:18px} .cmore:hover,.cmore[aria-expanded="true"]{background:var(--surface-2);color:var(--ink)}
@media (pointer:coarse){ .cmore::before{content:"";position:absolute;inset:-6px} }
.cmenu{position:absolute;top:44px;right:10px;z-index:5;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(16,40,44,.14);padding:4px;min-width:170px}
.cmenu button{font:inherit;font-size:13.5px;font-weight:700;display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;min-height:44px;border:0;background:none;color:var(--ink);border-radius:8px;cursor:pointer;text-align:left}
.cmenu button:hover{background:var(--surface-2)} .cmenu svg{width:18px;height:18px;color:var(--ink-3)}
.scard.hid{opacity:.6;border-style:dashed}
.term.hidc{display:inline-flex;align-items:center;gap:5px} .term.hidc svg{width:15px;height:15px}
.hchip{font:inherit;font-size:12.5px;font-weight:700;border:1px solid var(--line);background:var(--surface-2);color:var(--ink-2);border-radius:999px;padding:4px 10px;margin:4px 6px 0 0;cursor:pointer;min-height:32px}
/* 시험지 넣기 창 */
body.modal{overflow:hidden}
.kov{position:fixed;inset:0;z-index:80;background:rgba(16,40,44,.32);display:flex;align-items:center;justify-content:center;padding:20px}
.kdlg{background:var(--surface);border-radius:18px;width:min(520px,100%);max-height:86vh;overflow:auto;box-shadow:0 2px 6px rgba(16,40,44,.06),0 24px 60px rgba(16,40,44,.18)}
.kdh{display:flex;align-items:center;gap:14px;padding:16px 20px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surface)}
.kdh h3{margin:0;font-size:16px;font-weight:800}
.tls{display:flex;gap:8px}.tl{width:13px;height:13px;border-radius:50%;border:0;padding:0;display:inline-block}
.tl.r{background:#FF5F57;cursor:pointer;position:relative}.tl.r::before{content:"";position:absolute;inset:-14px}.tl.y{background:#FEBC2E}.tl.g{background:#28C840}
.kdb{padding:16px 20px 20px}
.kopts{display:flex;flex-direction:column;gap:10px}
.kopt{font:inherit;display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:14px 16px;border:1px solid var(--accent-line);border-radius:14px;background:#FAFCFB;color:var(--ink);cursor:pointer;min-height:64px}
:root[data-theme="dark"] .kopt{background:var(--surface-2)}
.kopt:hover{border-color:var(--accent)} .kopt span:not(.kico){flex:1;min-width:0;display:flex;flex-direction:column;gap:2px} .kopt b{font-size:15px} .kopt small{font-size:12.5px;color:var(--ink-3)}
.kopt>svg{width:18px;height:18px;color:var(--ink-3)}
.kico{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(180deg,#e56b5f,#C23A2E)} .kico.alt{background:linear-gradient(180deg,#4fb0a4,#0E6B63)}
.kico svg{width:24px;height:24px}
@media (max-width:640px){ .kov{align-items:flex-end;padding:0} .kdlg{width:100%;border-radius:20px 20px 0 0;max-height:88vh;padding-bottom:env(safe-area-inset-bottom)} }
/* (11/06) 진행 막대 색: 정답 초록 · 오답 빨강 · 별표 노랑 */
.cprog i{display:flex!important;overflow:hidden}
.cprog i b{display:block;position:static!important;height:100%;border-radius:0!important;flex:0 0 auto}
.cprog i b.pok{background:var(--good)!important}.cprog i b.pno{background:var(--bad)!important}.cprog i b.pst{background:#E0A800!important}
/* (11/06) 홈 PDF 만들기 */
.cmenu a{font:inherit;font-size:13.5px;font-weight:700;display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;min-height:44px;color:var(--ink);border-radius:8px;text-decoration:none;box-sizing:border-box}
.cmenu a:hover{background:var(--surface-2)}
a.kopt{text-decoration:none}
.kico.sub{background:linear-gradient(160deg,#4fb0a4,#178077 35%,#0E6B63 60%,#08443f)} .kico.sub svg{width:22px;height:22px}
.khint{margin:12px 2px 0;font-size:12.5px;color:var(--ink-3)}
/* (11/06) 폰 헤더: 넣기 · PDF · 설정 세 개가 한 줄에 들어가게 */
@media (max-width:719px){
  .abm{gap:2px}
  .abm .ibt{width:34px;font-size:10px}
  .ddchip.sm{max-width:80px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block!important}
  .ddchip.sm b{margin-right:4px}
}
/* (11/06) 옮기기 · 보내기 */
.dsec small{font-weight:500;color:var(--ink-3);margin-left:6px;font-size:12px}
.sendall{font-size:12.5px;color:var(--ink-3);margin:2px 0 6px}
.lnk{font:inherit;border:0;background:none;color:var(--accent);font-weight:700;cursor:pointer;padding:6px 2px;min-height:32px}
.ssz{font-style:normal}
.sendfrom{display:flex;flex-direction:column;gap:6px;margin:14px 0 4px}
.sendfrom label{font-size:13px;font-weight:700} .sendfrom small{font-weight:500;color:var(--ink-3)}
.sendfrom .inp{max-width:280px}
.mvf .sendtot{margin-right:auto;align-self:center;font-size:13px;color:var(--ink-2);font-weight:600}
.mvf .btn svg{width:16px;height:16px;margin-right:6px;vertical-align:-3px}
/* (11/06) 현황 — 한 주 시간표 + 강의별 풀이 막대 (강의록앱 현황 모양) */
body.stat .shell{grid-template-columns:minmax(0,1fr)!important;max-width:1440px!important}
body.stat .side{display:none!important}
.statm{padding:18px 0 30px}
body:not(.wide) .statm{padding:14px 16px 30px}
.wbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.wnav{display:flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:4px 6px}
.wnav b{font-size:15px;min-width:118px;text-align:center}
.ib{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:0;background:none;color:var(--ink-2);border-radius:9px;cursor:pointer;position:relative}
.ib:hover{background:var(--surface-2)} .ib svg{width:18px;height:18px} .ib.nx svg{transform:scaleX(-1)}
.wpick{background:var(--surface);border:1px solid var(--line);width:44px;height:44px;border-radius:12px}
.wpick input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}
.btn.sm{min-height:40px;padding:0 14px;font-size:13px}
.wleg{margin-left:auto;display:flex;align-items:center;gap:5px;font-size:12px;color:var(--ink-3)}
.wleg i{width:10px;height:10px;border-radius:3px;display:inline-block;margin-left:8px} .wleg i.pok{background:var(--good)} .wleg i.pno{background:var(--bad)} .wleg i.pst{background:#E0A800}
.hchip.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-ink)}
.wscroll{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:14px 14px 10px}
.wtab{min-width:1080px}
.wrow{display:grid;grid-template-columns:76px minmax(0,1fr);gap:8px;padding:8px 0;border-top:1px solid var(--line)}
.wrow.whead{border:0;padding:0 0 4px}
.wcells{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:8px;grid-auto-flow:row dense;align-items:stretch}
.whead .wcells span{text-align:center;font-size:12px;color:var(--ink-3);font-weight:600}
.wday{align-self:center;font-size:13.5px;font-weight:700;color:var(--ink-2);text-align:center}
.wday small{font-weight:500;color:var(--ink-3)}
.wrow.today .wday{color:var(--accent)}
.wnone{grid-column:1/-1;min-height:40px;display:flex;align-items:center;align-self:center;font-size:12.5px;color:var(--ink-3);padding-left:6px}
.lcard{position:relative;min-width:0;border:1px solid var(--line);border-radius:14px;background:var(--surface);transition:border-color .15s}
.lcard:hover{border-color:var(--accent-line)}
.lin{display:flex;flex-direction:column;gap:2px;padding:10px 12px 10px;text-decoration:none;color:var(--ink);height:100%;box-sizing:border-box;font:inherit;text-align:left;width:100%;border:0;background:none;cursor:pointer}
div.lin{cursor:default}
.lc{font-size:11.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:18px}
.lt{font-size:14px;line-height:1.3;word-break:keep-all}
.lp{font-size:12px;color:var(--ink-3)}
.ltag{font-size:11px;color:var(--accent-ink);background:var(--accent-soft);border-radius:6px;padding:1px 6px;align-self:flex-start;margin-top:2px}
.lfoot{margin-top:auto;padding-top:8px;display:flex;flex-direction:column;gap:4px}
.lbar i{display:flex;height:8px;border-radius:5px;background:var(--surface-2);overflow:hidden;border:1px solid var(--line)}
.lbar i b{display:block;height:100%} .lbar b.pok{background:var(--good)} .lbar b.pno{background:var(--bad)} .lbar b.pst{background:#E0A800}
.lnum{font-size:12px;color:var(--ink-2)} .lnum b{color:var(--good);font-size:13px} .lnum.mute{color:var(--ink-3)} .lnum .wr{font-style:normal;color:var(--bad);margin-left:4px}
.lnone{font-size:12px;color:var(--accent);font-weight:700}
.lcard.zero{background:var(--surface-2)} .lcard.zero .lt{color:var(--ink-2)}
.lcard.hid{opacity:.45;border-style:dashed}
.lx{position:absolute;top:6px;right:6px;width:28px;height:28px;border:0;border-radius:8px;background:none;color:var(--ink-3);font-size:12px;cursor:pointer;opacity:0}
.lcard:hover .lx,.lx:focus-visible,.lcard.hid .lx{opacity:1} .lx:hover{background:var(--surface-2);color:var(--ink)}
@media (hover:none){ .lx{opacity:.7} }
/* 폰: 요일마다 세로 목록 */
@media (max-width:719px){
  .wscroll{overflow:visible;background:none;border:0;padding:0}
  .wtab{min-width:0}
  .whead{display:none!important}
  .wrow{display:block;border:0;padding:0 0 14px}
  .wcells{display:flex;flex-direction:column;gap:8px}
  .wday{text-align:left;font-size:14px;padding:4px 2px}
  .lin{padding:12px 14px}
  .wleg{margin-left:0;width:100%}
}
button.lin{justify-content:flex-start;align-items:stretch}
/* (11/06) 현황 탭이 늘어 메뉴가 길어짐: 1200 밑은 짧은 글자 · PDF 는 아이콘만, 900 밑은 메뉴 아이콘만 */
@media (max-width:1199px) and (min-width:641px){ .abr .tbtn:not(.primary) span[data-sh]{display:none!important} }
@media (max-width:900px) and (min-width:641px){ .tabnav .nv span{display:none!important} .tabnav .nv{padding:8px 11px} }
/* (11/06) 홈 카드: 시험지 넣기 버튼 hover 글자 안 보이던 것 · 줄 높이 맞춤 · 아직 시험지 없는 과목은 흐리게 + 회색 아이콘 */
@media (hover:hover){ .cbtn.ins:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink)} }
.scard>.cbtns2{margin-top:auto}
.scard.pend{background:var(--surface-2)}
.scard.pend .sico{background:linear-gradient(160deg,#C9D0D2,#A9B2B5 45%,#8E989B)!important;box-shadow:none!important}
.scard.pend .sico svg{opacity:.9}
.scard.pend .tn{color:var(--ink-2)}
.scard.pend .stitle small{color:var(--ink-3)}
.scard.pend .cbtn.ins{background:transparent;border-color:color-mix(in srgb,var(--ink-3) 40%,transparent);color:var(--ink-2)}
.scard.pend.live{background:var(--surface)}
:root[data-theme="dark"] .scard.pend .sico{background:linear-gradient(160deg,#5A6366,#454D50)!important}
/* (11/06) 현황 시험 카드 */
.lcard.exam{border:2px solid var(--bad);background:color-mix(in srgb,var(--bad) 7%,var(--surface));text-decoration:none}
.lcard.exam .lin{cursor:pointer}
.lcard.exam .lt{color:var(--bad)}
.xpill{font-style:normal;font-size:10.5px;font-weight:800;color:#fff;background:var(--bad);border-radius:5px;padding:1px 6px;margin-right:6px}
.xdd{margin-top:auto;padding-top:6px;font-size:13px;font-weight:800;color:var(--bad)}
.mi .mt{flex:1}  /* (11/06) 배지 없는 「확인할 것」 줄도 화살표가 오른쪽 끝에 */
/* (11/06) 첫 화면: 로그인 · 학교 인증 · 이어 두기 */
body.gated>*:not(#gate):not(script){display:none!important}
.gate{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px 16px;box-sizing:border-box;background:var(--bg)}
.gcard{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:30px 24px 18px;box-sizing:border-box;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}
.glogo{width:76px;height:76px} .glogo svg{width:100%;height:100%}
.gcard h1{margin:0;font-size:24px;letter-spacing:-.02em}
.gsub{margin:0;color:var(--ink-2);font-size:14px;line-height:1.6}
.gagree{display:flex;align-items:center;gap:8px;font-size:13.5px;margin-top:6px;cursor:pointer;min-height:44px}
.gagree input{width:20px;height:20px;accent-color:var(--accent)}
.gbtn{min-height:44px;display:flex;justify-content:center;width:100%} .gbtn.off{opacity:.35;pointer-events:none;filter:grayscale(1)}
.gnote{font-size:12px;color:var(--ink-3);margin:4px 0 0;line-height:1.5}
.gform{display:flex;gap:8px;align-items:flex-end;width:100%;text-align:left}
.gform label{flex:1;display:flex;flex-direction:column;gap:5px;font-size:12.5px;font-weight:700;color:var(--ink-2)}
.gform .inp{width:100%;box-sizing:border-box} .gform .inp.code{letter-spacing:.4em;font-size:18px;text-align:center}
.gform .btn{min-height:44px;white-space:nowrap}
.gerr{color:var(--bad);font-size:13px;margin:0;min-height:1em}
.gspin{width:28px;height:28px;border-radius:50%;border:3px solid var(--accent-soft);border-top-color:var(--accent);animation:gsp 1s linear infinite} @keyframes gsp{to{transform:rotate(360deg)}}
.gsync{width:100%;text-align:left;border:1px solid var(--accent-line);background:var(--accent-soft);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:4px}
.gsync b{font-size:15px} .gsync small{font-size:12.5px;color:var(--ink-2);line-height:1.55}
.btn.wide{width:100%;justify-content:center;min-height:46px}
.gcred{font-size:11px;color:var(--ink-3);margin:10px 0 0}
.wr{color:var(--bad)}
.gsub,.gnote{word-break:keep-all} .gagree a{color:var(--accent);font-weight:700}
