:root{--navy:#0B1F3A;--navy2:#16325c;--gold:#F2B705;--bg:#F6F7FB;--card:#fff;--ink:#14213d;--mut:#5b6b85;--line:#e3e8f0;--good:#12805c;--goodbg:#e4f5ee;--warn:#b45309;--warnbg:#fff3e0;--bad:#b42318;--badbg:#fdecea;--r:16px}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 "Pretendard","Apple SD Gothic Neo","Noto Sans KR",system-ui,sans-serif}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
.wrap{max-width:760px;margin:0 auto;padding:12px 16px 80px}
.wide{max-width:1180px}
header.top{background:var(--navy);color:#fff;position:sticky;top:0;z-index:20}
header.top .in{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:10px;padding:10px 16px}
.brand{display:flex;align-items:center;gap:8px;font-weight:800;letter-spacing:-.02em}
.brand i{display:inline-block;width:26px;height:26px;border-radius:7px;background:var(--gold);color:var(--navy);font-style:normal;text-align:center;line-height:26px;font-weight:900}
.grow{flex:1}
.btn{border:0;border-radius:12px;padding:11px 16px;font-weight:700;background:var(--navy);color:#fff;min-height:44px}
.btn.gold{background:var(--gold);color:var(--navy)}.btn.ghost{background:#fff;color:var(--navy);border:1.5px solid var(--line)}
.btn.sm{padding:6px 12px;min-height:34px;font-size:14px;border-radius:9px}.btn.danger{background:var(--bad)}
.btn:disabled{opacity:.5}
.card{background:var(--card);border-radius:var(--r);padding:16px;margin:12px 0;box-shadow:0 1px 2px rgba(11,31,58,.06),0 6px 20px rgba(11,31,58,.04)}
.card h2{margin:0 0 8px;font-size:18px;letter-spacing:-.02em}.card h3{margin:14px 0 6px;font-size:15px}
.mut{color:var(--mut)}.sm{font-size:14px}.xs{font-size:12.5px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}
.chip{display:inline-block;padding:3px 10px;border-radius:99px;background:#eef2f8;font-size:13px;font-weight:700;color:var(--navy)}
.chip.good{background:var(--goodbg);color:var(--good)}.chip.warn{background:var(--warnbg);color:var(--warn)}.chip.bad{background:var(--badbg);color:var(--bad)}.chip.gold{background:#fff4cc;color:#7a5b00}
input[type=text],input[type=password],input[type=number],input[type=date],input[type=datetime-local],select,textarea{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:11px 12px;background:#fff;min-height:44px}
textarea{min-height:90px}
label.f{display:block;margin:10px 0 4px;font-weight:700;font-size:14px}
.err{background:var(--badbg);color:var(--bad);padding:10px 12px;border-radius:10px;margin:10px 0;font-weight:600}
.ok{background:var(--goodbg);color:var(--good);padding:10px 12px;border-radius:10px;margin:10px 0;font-weight:600}
.hero{background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;border-radius:20px;padding:18px;margin:12px 0}
.dday{font-size:56px;font-weight:900;line-height:1;letter-spacing:-.04em;color:var(--gold)}
.phase{background:rgba(255,255,255,.1);border-radius:12px;padding:10px 12px;margin-top:12px}
.todo{display:flex;gap:10px;align-items:center;padding:12px;border-radius:12px;background:#fff;color:var(--ink);margin-top:8px;width:100%;border:0;text-align:left;font-weight:700}
.track{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.wk{border:1.5px solid var(--line);border-radius:14px;padding:10px;text-align:center;background:#fff}
.wk.now{border-color:var(--gold);box-shadow:0 0 0 3px #f2b70533}.wk b{display:block;font-size:26px;letter-spacing:-.03em}
.bar{height:10px;background:#e8edf5;border-radius:99px;overflow:hidden}.bar>i{display:block;height:100%;background:var(--gold);border-radius:99px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.stat{background:#f3f6fb;border-radius:12px;padding:10px 12px}.stat b{display:block;font-size:24px;letter-spacing:-.03em}
.list>*{padding:10px 0;border-top:1px solid var(--line)}.list>*:first-child{border-top:0}
.trait{border-left:5px solid var(--line);padding:6px 0 6px 12px;margin:10px 0}
.trait.good{border-color:var(--good)}.trait.ok{border-color:var(--gold)}.trait.warn{border-color:var(--warn)}
.tabs{display:flex;gap:6px;overflow:auto;padding:4px 0}.tabs button{border:0;background:#e9eef6;border-radius:99px;padding:8px 14px;font-weight:700;white-space:nowrap;color:var(--navy)}.tabs button.on{background:var(--navy);color:#fff}
table.t{width:100%;border-collapse:collapse;font-size:14px}table.t th,table.t td{padding:8px 6px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}table.t th{color:var(--mut);font-size:12.5px}
.scroll{overflow:auto}
/* OMR */
.omr .q{display:flex;align-items:center;gap:8px;padding:8px 4px;border-bottom:1px solid var(--line)}
.omr .q.cur{background:#fff9e0}.omr .n{width:30px;font-weight:800;text-align:right}
.omr .bub{display:flex;gap:6px;flex-wrap:wrap}
.bubble{width:44px;height:44px;border-radius:50%;border:2px solid #b8c3d6;background:#fff;font-weight:800;font-size:16px;color:var(--navy)}
.bubble.on{background:var(--navy);border-color:var(--navy);color:#fff}
.omr .tp{font-size:12px;color:var(--mut);min-width:54px}
.sticky{position:sticky;bottom:0;background:linear-gradient(0deg,var(--bg) 70%,transparent);padding:12px 0}
.mode-mid .bubble{width:50px;height:50px}.mode-mid .dday{font-size:64px}
.right{color:var(--good);font-weight:800}.wrong{color:var(--bad);font-weight:800}
.banner{position:fixed;left:12px;right:12px;bottom:12px;background:var(--navy);color:#fff;border-radius:14px;padding:12px;z-index:50;display:flex;gap:10px;align-items:center}
.ytbox{aspect-ratio:16/9;background:#000;border-radius:12px;overflow:hidden}.ytbox iframe{width:100%;height:100%}
.board{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:14px}
.bcard{background:var(--navy);color:#fff;border-radius:20px;padding:18px}.bcard .dd{font-size:72px;font-weight:900;color:var(--gold);line-height:1;letter-spacing:-.04em}
.bcard.soon{outline:4px solid var(--gold)}
@media(max-width:560px){.grid3{grid-template-columns:1fr 1fr}.dday{font-size:48px}}
@media print{header.top,.noprint{display:none}}

/* OMR 인식 쉬운 구성 */
.omr .sec{position:sticky;top:0;z-index:2;padding:10px 8px;margin:10px -4px 0;border-radius:8px;font-size:15px;color:#fff;display:flex;gap:8px;align-items:baseline}
.omr .sec span{font-size:12px;opacity:.85}.omr .smc{background:var(--navy)}.omr .ssh{background:#8a6a00}
.omr .q{align-items:flex-start}.omr .qb{flex:1;min-width:0}.omr .qh{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.tag{display:inline-block;font-size:11px;font-weight:800;padding:2px 8px;border-radius:99px}
.tmc{background:#e6ecf8;color:var(--navy)}.tsh{background:#fff1c2;color:#7a5b00}
.omr .q.done .n{color:#1a7f4b}.omr .q.done .n::after{content:"✓";font-size:11px;display:block;text-align:right}
.omr .hint{font-size:12px;color:#6b7690;margin-top:4px}
.omr input[type=text]{width:100%;max-width:none!important;font-size:17px;padding:12px;border:2px solid #d9a400;border-radius:10px;background:#fffdf3}
.omr .bubble{font-size:20px}
.blanks{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.blanks .bl{display:flex;align-items:center;gap:6px}.blanks .bl span{font-weight:800;color:#8a6a00;font-size:18px}
.blanks input{min-width:0;padding:10px!important;font-size:16px!important}

/* v7 학생 */
.sc-entry{display:flex;align-items:center;gap:12px;width:100%;text-align:left;margin:0 0 12px;padding:14px 16px;border:0;border-radius:var(--r);background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;font-size:18px;box-shadow:0 2px 8px rgba(11,31,58,.18)}
.sc-entry .ic{font-size:28px}.sc-entry b{display:block;color:var(--gold);font-size:17px}.sc-entry .xs{display:block;opacity:.85;font-size:12.5px}
.sc-empty{margin-top:10px;padding:10px 12px;border-radius:12px;background:#fff9e0;color:#7a5b00;font-size:14px}
.sc-grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.sc-grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.sc-cell{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;min-height:132px;padding:10px 4px 8px;border:1.5px solid var(--line);border-radius:14px;background:#fff;text-align:center;line-height:1.25}
.sc-cell>b{font-size:12.5px;color:var(--mut)}.sc-cell.mock{min-height:118px}
.sc-cell.empty{border:2px dashed #b8c3d6;background:#fafbfe;justify-content:center}.sc-plus{color:var(--navy);font-weight:800;font-size:13px}
.sc-cell.lock{background:#f3f7f4;border-color:#bfe3d2}.sc-lk{position:absolute;top:4px;right:5px;font-style:normal;font-size:11px}
.sc-n{font-size:30px;font-weight:900;color:var(--navy);letter-spacing:-.03em;line-height:1.1}.sc-n small{font-size:12px;font-weight:700;margin-left:1px}
.sc-g{font-size:12px;font-weight:800;color:var(--warn);background:var(--warnbg);border-radius:99px;padding:1px 8px}
.sc-lb{font-size:11px;color:var(--mut);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sc-dl{font-size:12px;font-weight:800}.sc-dl.up{color:var(--good)}.sc-dl.dn{color:var(--bad)}.sc-dl.same{color:var(--mut)}
.sc-bd{font-size:10.5px;font-weight:700;border-radius:99px;padding:1px 6px;white-space:nowrap}.sc-bd.wait{background:#fff3c4;color:#7a5b00}.sc-bd.fin{background:var(--goodbg);color:var(--good)}
.sc-svg{display:block;width:100%;max-width:520px;margin:4px auto;overflow:visible}.sc-svg circle:focus{outline:none;stroke:var(--gold)}
.sc-sum{margin:2px 0 10px;padding:8px 10px;border-radius:10px;background:#f1f4fa}
.sc-lg{display:inline-block;width:10px;height:10px;border-radius:50%;margin:0 4px 0 8px;vertical-align:middle}.sc-lg.hol{background:#fff;border:2px solid var(--gold)}
.sc-bk{position:fixed;inset:0;background:rgba(11,31,58,.55);z-index:60}
.sc-sheet{position:fixed;left:0;right:0;bottom:0;z-index:61;max-width:560px;margin:0 auto;max-height:90vh;overflow:auto;background:#fff;border-radius:20px 20px 0 0;padding:16px 16px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -6px 24px rgba(0,0,0,.25)}
.sc-big{font-size:56px;font-weight:900;color:var(--navy);line-height:1.1}.sc-big small{font-size:20px}
@media(max-width:420px){.sc-grid4{grid-template-columns:repeat(2,1fr)}.sc-n{font-size:28px}}

.omr .qh .pt{margin-left:auto;font-size:12px;font-weight:700;color:#7a5b00;background:#fff3c4;border-radius:999px;padding:1px 8px}

.vl{margin:12px 0 4px;font-size:15px;color:#14284b}
.chip.vt-concept{background:#e3f0ff;color:#14407a}.chip.vt-passage{background:#fff3c4;color:#7a5b00}.chip.vt-grammar{background:#e6f6e8;color:#1d6b2a}
.yp{position:relative;background:#000;border-radius:12px;overflow:hidden;aspect-ratio:16/9}
.yp-frame{position:absolute;left:0;right:0;top:-56px;bottom:-56px}.yp-frame iframe{width:100%;height:100%;border:0}
.yp-cover{position:absolute;inset:44px 0 48px 0;z-index:2;cursor:pointer}
.yp-top{position:absolute;left:0;right:0;top:0;height:44px;z-index:3;background:#0B1F3A;color:#fff;font-weight:700;font-size:14px;display:flex;align-items:center;padding:0 12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.yp-bar{position:absolute;left:0;right:0;bottom:0;height:48px;z-index:3;background:#0B1F3A;display:flex;align-items:center;gap:8px;padding:0 10px;color:#fff}
.yp-b{background:transparent;border:0;color:#F2B705;font-size:18px;min-width:34px;height:34px;cursor:pointer;font-weight:800}
.yp-sp{font-size:13px;border:1px solid #F2B705;border-radius:999px;padding:0 8px}
.yp-t{font-size:12px;min-width:34px;text-align:center}.yp-seek{flex:1;accent-color:#F2B705}
.yp:fullscreen{aspect-ratio:auto;width:100vw;height:100vh;border-radius:0}.yp.yp-fill{position:fixed;inset:0;z-index:9999;aspect-ratio:auto;border-radius:0}

.cert-ban{background:#fff8dc;border:2px solid #F2B705}
tr.hint td{background:#fffbea;color:#7a5b00;font-size:12px}
