:root{--bg:#F4F0E6;--surface:#FFFDF7;--sunk:#EAE4D4;--line:#CFC6AF;--contour:#DDD4BF;--ink:#1F211C;--ink2:#4C4F46;--ink3:#5C5F55;--accent:#1F211C;--on-accent:#FFFDF7;--trail:#B5361F;--on-trail:#FFFFFF;--sign:#E8DEC3;--sign-ink:#3A3424;--g1:#1F5AA6;--g2:#93378A;--g3:#2C6E42;--ok:#1E6B3A;--ok-bg:#E2F0E5;--warn:#80560A;--warn-bg:#F7EBD0;--far:#4C4F46;--far-bg:#EAE4D4;--err:#A3311E;--err-bg:#F7E3DC;--font:"Pretendard Variable",Pretendard,-apple-system,"Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR",sans-serif;--ease:cubic-bezier(.2,.7,.2,1);--t-fast:120ms;--t-base:220ms;--t-slow:360ms;--r-sm:4px;--r-md:8px;--r-lg:12px;--touch:44px;--touch-main:48px;color-scheme:light}:root[data-theme=dark]{--bg:#13171A;--surface:#1B2125;--sunk:#232A2E;--line:#323C41;--contour:#232C30;--ink:#ECE8DC;--ink2:#B9B5A8;--ink3:#A6A397;--accent:#ECE8DC;--on-accent:#13171A;--trail:#FF6B4E;--on-trail:#1A0B07;--sign:#2A2A22;--sign-ink:#E7DDBF;--g1:#76A8F2;--g2:#DB8CD0;--g3:#71C78E;--ok:#6CCB92;--ok-bg:#16291E;--warn:#E9B44C;--warn-bg:#2E2612;--far:#B9B5A8;--far-bg:#232A2E;--err:#FF8A73;--err-bg:#331A14;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#13171A;--surface:#1B2125;--sunk:#232A2E;--line:#323C41;--contour:#232C30;--ink:#ECE8DC;--ink2:#B9B5A8;--ink3:#A6A397;--accent:#ECE8DC;--on-accent:#13171A;--trail:#FF6B4E;--on-trail:#1A0B07;--sign:#2A2A22;--sign-ink:#E7DDBF;--g1:#76A8F2;--g2:#DB8CD0;--g3:#71C78E;--ok:#6CCB92;--ok-bg:#16291E;--warn:#E9B44C;--warn-bg:#2E2612;--far:#B9B5A8;--far-bg:#232A2E;--err:#FF8A73;--err-bg:#331A14;color-scheme:dark}}@media (prefers-reduced-motion:reduce){:root{--t-fast:0ms;--t-base:0ms;--t-slow:0ms}}*{box-sizing:border-box;margin:0}body{font:15px/1.5 var(--font);color:var(--ink);word-break:keep-all;font-feature-settings:"tnum";-webkit-font-smoothing:antialiased}button{font:inherit;background:none;border:0;cursor:pointer}a,button{color:inherit}.contour:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 260px 180px at 82% 6%,transparent 0 30px,var(--contour) 31px 32px,transparent 33px 58px,var(--contour) 59px 60px,transparent 61px 88px,var(--contour) 89px 90px,transparent 91px 120px,var(--contour) 121px 122px,transparent 123px),radial-gradient(ellipse 300px 220px at 6% 70%,transparent 0 40px,var(--contour) 41px 42px,transparent 43px 76px,var(--contour) 77px 78px,transparent 79px 114px,var(--contour) 115px 116px,transparent 117px)}.app>*{position:relative}.pad{padding:0 18px}.scroll{flex:1 1;padding-bottom:24px}.bar{padding:10px 10px 4px 18px;min-height:56px;font-weight:700}.bar,.bar .kid{display:flex;align-items:center;gap:6px}.bar .kid{font-size:17px;min-height:44px}.bar .kid small{font-weight:500;color:var(--ink2);font-size:14px}.bar .back{width:44px;height:44px;display:grid;place-items:center;margin-left:-12px}.bar h1{font-size:17px;font-weight:800}.bar .sp{flex:1 1}.ic{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;color:var(--ink2)}.title{font-size:22px;font-weight:800;letter-spacing:-.02em;line-height:1.3}.title em{font-style:normal;color:var(--trail)}.lead{font-size:14px;color:var(--ink2);margin-top:4px}.m{display:inline-block;font-style:normal;font-size:11px;line-height:1;vertical-align:1px}.m.g1{color:var(--g1)}.m.g2{color:var(--g2)}.m.g3{color:var(--g3)}.chkt,.est,.tag{display:inline-block;font-size:11px;font-weight:700;border-radius:3px;padding:0 4px;line-height:16px;vertical-align:1px;white-space:nowrap}.est{border:1px solid var(--ink2);color:var(--ink2)}.chkt{border:1px dashed var(--ink3);color:var(--ink3)}.tag{background:var(--sunk)}.src,.tag{color:var(--ink2)}.src{display:inline-flex;gap:4px;align-items:center;font-size:12px;border:1px solid var(--line);background:var(--surface);border-radius:99px;padding:0 10px;margin:8px 4px 0 0;min-height:44px;text-decoration:none}.src:after{content:"›";font-size:14px;color:var(--ink3)}.ridge{display:block;width:100%;height:84px}.peaks{display:grid;grid-gap:6px;gap:6px;margin-top:-2px}.pk{font-size:12px;line-height:1.35;color:var(--ink2);border-top:2px solid;padding-top:5px;min-width:0}.pk b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pk .v,.pk b{display:block;color:var(--ink);font-size:13px}.pk .v{font-weight:700}.pk .v.q{color:var(--ink3)}.pk.g1{border-color:var(--g1)}.pk.g2{border-color:var(--g2)}.pk.g3{border-color:var(--g3)}.trail{padding:6px 18px 0 0}.st{display:grid;grid-template-columns:62px 1fr;min-height:48px}.gut{position:relative}.gut i{position:absolute;top:0;bottom:0;width:0;border-left:3px dashed var(--trail);left:30px}.gut.fork i.g1,.gut.split i.g1{left:22px;border-color:var(--g1)}.gut.fork i.g2,.gut.split i.g2{left:30px;border-color:var(--g2)}.gut.fork i.g3,.gut.split i.g3{left:38px;border-color:var(--g3)}.gut.fork i.a{top:50%}.gut.fork i.g1,.gut.fork i.g2,.gut.fork i.g3{bottom:50%}.gut.past i{border-left-style:dotted;border-color:var(--ink3)}.gut.end i{bottom:50%}.post{position:absolute;left:21px;top:13px;width:22px;height:22px;background:var(--bg);border:2.5px solid var(--ink);border-radius:4px;transform:rotate(45deg)}.gut.past .post{border-color:var(--ink3);width:16px;height:16px;left:24px}.body{padding:9px 0 8px;min-width:0}.sign{display:inline-flex;align-items:center;gap:6px;background:var(--sign);color:var(--sign-ink);font-weight:800;font-size:14px;padding:3px 16px 3px 9px;-webkit-clip-path:polygon(0 0,calc(100% - 9px) 0,100% 50%,calc(100% - 9px) 100%,0 100%);clip-path:polygon(0 0,calc(100% - 9px) 0,100% 50%,calc(100% - 9px) 100%,0 100%)}.sign small{font-weight:600;font-size:12px}.st.top .sign{background:var(--ink);color:var(--bg)}.st.past .sign{background:transparent;color:var(--ink3);padding-left:0}.it{font-size:14px;color:var(--ink2);margin-top:4px;line-height:1.45}.it.fk,.st.past .it{font-size:13px;color:var(--ink3)}.more{color:var(--ink);font-weight:700;text-decoration:underline;text-underline-offset:3px;display:inline-flex;align-items:center;min-height:44px;min-width:44px;padding:0 6px;margin:-12px 0}.pin{position:absolute;left:14px;top:12px;width:34px;height:34px;border-radius:50%;background:var(--trail);border:4px solid var(--surface);box-shadow:0 0 0 2px var(--trail),0 0 0 12px color-mix(in srgb,var(--trail) 16%,transparent)}.here{font-size:12px;color:var(--trail);letter-spacing:.03em}.here,.now h3{font-weight:800}.now h3{font-size:22px;letter-spacing:-.02em}.card,.now h3{margin:0 0 8px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:10px 12px;box-shadow:0 1px 0 var(--line)}.card .k{font-size:12px;font-weight:700;color:var(--ink2);display:flex;gap:6px;align-items:center}.card .t{font-size:15px;font-weight:700;margin-top:2px;line-height:1.4}.card .w{font-size:13px;color:var(--ink2);margin-top:2px}.card.done .t{color:var(--ink3);text-decoration:line-through}.chk{display:flex;gap:10px;align-items:flex-start}.box{flex:none;width:44px;height:44px;margin:-8px -8px -8px -10px;display:grid;place-items:center}.box i{width:22px;height:22px;border:2px solid var(--ink);border-radius:5px;background:var(--surface)}.box i.on{background:var(--ink);box-shadow:inset 0 0 0 3px var(--surface)}.due{display:inline-block;margin-top:6px;font-size:12.5px;font-weight:700;color:var(--trail);border:1.5px solid var(--trail);border-radius:99px;padding:1px 9px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:48px;padding:0 18px;border-radius:var(--r-md);font-weight:800;font-size:15px;border:1.5px solid var(--ink);color:var(--ink);background:var(--surface);text-decoration:none}.btn.p{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.btn.w{width:100%}.btn.s{min-height:44px;font-size:14px;padding:0 14px}.seg{display:flex;gap:6px}.seg .btn{flex:1 1;padding:0 6px}.field{display:block;margin-top:14px}.field>span{display:block;font-size:13px;font-weight:700;color:var(--ink2);margin-bottom:6px}.inp{display:flex;align-items:center;gap:8px;min-height:48px;border:1.5px solid var(--line);background:var(--surface);border-radius:var(--r-md);padding:0 14px;font-size:15px;color:var(--ink)}.inp.ph{color:var(--ink2)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{text-decoration:none;display:inline-flex;align-items:center;gap:5px;min-height:44px;padding:0 13px;border-radius:99px;border:1.5px solid var(--line);background:var(--surface);font-size:14px;font-weight:600;color:var(--ink)}.chip.on{border-color:var(--ink);background:var(--ink);color:var(--bg)}.lastyr{background:var(--sign);color:var(--sign-ink);font-weight:800;font-size:14px;padding:9px 12px;border-left:5px solid var(--trail)}.sec{margin:0 0 12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:12px 14px}.sec.chk-state{border-style:dashed}.sec h4{font-size:13px;font-weight:800;color:var(--ink2);display:flex;align-items:center;gap:6px;margin-bottom:4px}.sec h4 .x{margin-left:auto;font-weight:600}.big{font-size:28px;font-weight:800;letter-spacing:-.02em;line-height:1.2}.big.q{color:var(--ink3)}.sub{font-size:13.5px;color:var(--ink2);margin-top:3px}.alt{position:relative;height:48px;margin:8px 0 2px}.alt .ax{position:absolute;left:0;right:0;top:22px;border-top:1.5px solid var(--ink2)}.alt .tk{position:absolute;top:17px;height:10px;border-left:1px solid var(--ink3)}.alt .tl{position:absolute;top:30px;font-size:11px;color:var(--ink2);transform:translateX(-50%)}.alt .tl.l{transform:none}.alt .tl.r{transform:translateX(-100%)}.alt .band{position:absolute;top:10px;height:24px;border-radius:4px;background:var(--g1)}.alt .band.g2{background:var(--g2)}.alt .band.g3{background:var(--g3)}.alt .band.chk{background:repeating-linear-gradient(135deg,var(--g2) 0 3px,transparent 3px 7px);border:1.5px dashed var(--g2)}.alt .me{top:0;width:2px;height:40px}.alt .me,.alt .me:after{position:absolute;background:var(--ink)}.alt .me:after{content:"내 위치";left:4px;top:-1px;font-size:11px;font-weight:800;color:var(--bg);padding:0 4px;border-radius:2px;white-space:nowrap}.note{font-size:13px;color:var(--ink2);background:var(--sunk);border-radius:6px;padding:7px 10px}.kv,.note{margin-top:8px}.kv{display:grid;grid-template-columns:84px 1fr;grid-gap:5px 8px;gap:5px 8px;font-size:14px}.kv dt{color:var(--ink2);font-weight:600}.kv dd{margin:0}.term{display:block;font-size:12.5px;color:var(--ink2);margin-top:1px}.dist{display:inline-flex;align-items:center;gap:5px;font-weight:800;font-size:13px;border-radius:99px;padding:2px 9px 2px 6px}.dist i{width:12px;height:12px;border-radius:50%;border:2px solid;display:inline-block}.dist.ok{color:var(--ok);background:var(--ok-bg)}.dist.ok i{background:currentColor}.dist.warn{color:var(--warn);background:var(--warn-bg)}.dist.warn i{background:linear-gradient(90deg,currentColor 50%,transparent 0)}.dist.far{color:var(--far);background:var(--far-bg)}.tabs{position:-webkit-sticky;position:sticky;bottom:0;margin-top:auto;flex:none;height:72px;background:var(--surface);border-top:1px solid var(--line);display:flex;padding-bottom:14px;z-index:5}.tabs a{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:12px;color:var(--ink2);text-decoration:none;font-weight:600}.tabs a.on{color:var(--ink);font-weight:800}.tabs a.on svg{color:var(--trail)}.dim{inset:0;background:color-mix(in srgb,#000 42%,transparent);z-index:8}.dim,.sheet{position:absolute}.sheet{left:0;right:0;bottom:0;background:var(--surface);border-radius:18px 18px 0 0;z-index:9;padding:8px 18px 28px;box-shadow:0 -8px 30px rgba(0,0,0,.18)}.sheet .grab{width:40px;height:5px;border-radius:3px;background:var(--line);margin:0 auto 12px}.pdf{background:#fff;border:1px solid var(--line);border-radius:8px;height:300px;position:relative;overflow:hidden;color:#222;font-size:10px;padding:14px}.pdf .row{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;border-bottom:1px solid #ddd;padding:5px 0}.pdf .hl{outline:2.5px solid var(--trail);outline-offset:1px;background:#FFF3C4}.room{display:flex;gap:8px}.lock,.room{align-items:center}.lock{display:inline-flex;gap:4px;font-size:12px;font-weight:700;color:var(--ink2);background:var(--sunk);border-radius:99px;padding:3px 10px}.file{display:flex;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--line);min-height:56px}.file .fi{width:36px;height:42px;border-radius:4px;background:var(--sunk);display:grid;place-items:center;font-size:10px;font-weight:800;color:var(--ink2);flex:none}.file .fn{font-size:14.5px;font-weight:700;line-height:1.35}.file .fm{font-size:12.5px;color:var(--ink2)}.warnbox{background:var(--warn-bg);padding:9px 12px;font-size:13.5px}.errbox,.warnbox{color:var(--ink);border-radius:8px}.errbox{background:var(--err-bg);padding:10px 12px;font-size:14px;border-left:4px solid var(--err)}.errbox b{color:var(--err)}.side{width:240px;flex:none;border-right:1px solid var(--line);background:var(--surface);padding:22px 16px;display:flex;flex-direction:column;gap:4px}.side .logo{font-weight:800;font-size:17px;margin-bottom:18px}.side .logo,.side a{display:flex;gap:10px;align-items:center}.side a{min-height:44px;padding:0 12px;border-radius:8px;text-decoration:none;color:var(--ink2);font-weight:600}.side a.on{background:var(--sunk);color:var(--ink);font-weight:800}.side a.on svg{color:var(--trail)}.wmain{flex:1 1;min-width:0;position:relative;padding:28px 40px}body,html{background:var(--bg);min-height:100%}body{overflow-x:hidden}.app{min-height:100dvh;margin:0 auto;max-width:560px;background:var(--bg);position:relative;overflow:clip;display:flex;flex-direction:column}.app>.col{flex:1 1;display:flex;flex-direction:column;min-width:0}.app>.side{display:none}.tabs{padding-bottom:max(14px,env(safe-area-inset-bottom));height:auto;min-height:72px}.bar{padding-top:max(10px,env(safe-area-inset-top))}.dim,.sheet{position:fixed}.sheet{max-width:560px;margin:0 auto;max-height:88dvh;overflow:auto}.pdf{height:auto;min-height:200px}.pdf:not(:has(.row)){min-height:0}:root[data-theme=dark] .pdf{background:#E9E4DA}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .pdf{background:#E9E4DA}}.nw{white-space:nowrap}.pdf iframe{width:100%;height:60dvh;border:0}.hide{display:none!important}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}input.inp,select.inp,textarea.inp{width:100%;font:inherit;color:var(--ink)}textarea.inp{padding-top:12px;min-height:96px}.inp:focus-within,input.inp:focus,select.inp:focus,textarea.inp:focus{outline:2px solid var(--ink);outline-offset:1px}a:focus-visible,button:focus-visible{outline:2px solid var(--trail);outline-offset:2px}.btn[disabled],button.btn:disabled{opacity:1;border-style:dashed;color:var(--ink3);border-color:var(--ink3);cursor:not-allowed}form{margin:0}.flash{margin:10px 18px 0}@media (min-width:1024px){.app{max-width:none;flex-direction:row}.app>.side{display:flex;position:-webkit-sticky;position:sticky;top:0;height:100dvh}.app .tabs{display:none}.app>.col{padding:0 24px}.app>.col>.bar,.app>.col>.pad,.app>.col>.scroll{max-width:880px;width:100%;margin-left:auto;margin-right:auto}.app>.col.wide>.bar,.app>.col.wide>.scroll{max-width:1200px}.sheet{left:240px;max-width:640px;border-radius:18px;bottom:24px}}.pin{animation:pin-ring var(--t-slow) var(--ease) 1}@keyframes pin-ring{0%{box-shadow:0 0 0 2px var(--trail),0 0 0 0 color-mix(in srgb,var(--trail) 40%,transparent)}}.trail .gut i{animation:draw var(--t-slow) var(--ease) both}@keyframes draw{0%{-webkit-clip-path:inset(0 0 100% 0);clip-path:inset(0 0 100% 0)}to{-webkit-clip-path:inset(0);clip-path:inset(0)}}.box i{transition:background var(--t-fast) var(--ease)}.card.done .t{transition:color var(--t-fast)}details>summary{list-style:none;cursor:pointer}details>summary::-webkit-details-marker{display:none}.btn,.chip,.more,.src,a.card{transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}@media (hover:hover){.btn:not(.p):not(:disabled):hover,.chip:not(.on):hover,.src:hover,a.card:hover{border-color:var(--ink2)}.btn.p:not(:disabled):hover{background:color-mix(in srgb,var(--accent) 86%,var(--bg))}}.btn:not(:disabled):active,.chip:active,.ic:active,.more:active,.src:active,a.card:active{transform:translateY(1px)}.box i,.chkt,.est,.tag{border-radius:var(--r-sm)}.note{border-radius:var(--r-md)}.sheet .grab{border-radius:99px}.inp::placeholder,input::placeholder,textarea::placeholder{color:var(--ink3);opacity:1}.narrow{max-width:480px;margin:0 auto;width:100%}.kidpick{position:relative}.kidpick>summary{display:flex;align-items:center;gap:6px;font-size:17px;min-height:44px;min-width:44px;font-weight:700}.kidpick>summary small{font-weight:500;color:var(--ink2);font-size:14px}.kidpick .menu{position:absolute;left:-6px;top:46px;z-index:20;min-width:200px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:6px;box-shadow:0 8px 24px rgba(0,0,0,.14);display:flex;flex-direction:column}.kidpick .menu a{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border-radius:8px;text-decoration:none;font-weight:600}.kidpick .menu a small{color:var(--ink2);font-weight:500}.kidpick .menu a.on{background:var(--sunk);font-weight:800}.chips label.chip,.seg label.btn{cursor:pointer}.seg label.btn:has(input:checked){background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.chips label.chip:has(input:checked){border-color:var(--ink);background:var(--ink);color:var(--bg)}label:has(>input.sr:focus-visible){outline:2px solid var(--trail);outline-offset:2px}.regime .term{display:none}.regime:has(input[value="고1"]:checked) .term.y-고1,.regime:has(input[value="고2"]:checked) .term.y-고2,.regime:has(input[value="고3"]:checked) .term.y-고3,.regime:has(input[value="중3"]:checked) .term.y-중3{display:block}.s5-aside{display:none}@media (min-width:1024px){.s5{display:grid;grid-template-columns:minmax(0,1fr) 440px;grid-gap:40px;gap:40px}.s5-aside{display:block;padding-top:8px}.s5-view{display:none}.s5 .title{font-size:30px}}.uni{padding:12px 14px}.uni>.nm{font-weight:800;font-size:16px}.uni>.nm small{font-weight:500;font-size:13px;color:var(--ink2)}.urow{display:flex;align-items:center;gap:8px;min-height:48px;border-top:1px solid var(--line);margin-top:6px;padding-top:6px;text-decoration:none}.urow .tx{flex:1 1;min-width:0}a.tx{font-weight:700;text-decoration:none;display:flex;flex-direction:column;justify-content:center;min-height:44px}a.tx .term{font-weight:400}.urow.empty{border:1.5px dashed var(--line);background:var(--sunk);border-radius:8px;padding:8px 10px;flex-wrap:wrap}.uni.empty{border-style:dashed;background:var(--sunk)}.goaltag{display:inline-flex;align-items:center;gap:6px}.goaltag .tag{background:var(--ink);color:var(--bg)}button.ic{border:1.5px solid var(--line)}.grow{display:grid;grid-template-columns:minmax(0,1fr) 76px 64px 44px;grid-gap:6px;gap:6px;align-items:center;margin-top:6px}.grow .inp{padding:0 10px;min-width:0}.grow .x{width:44px;height:44px;display:grid;place-items:center;border-radius:8px;color:var(--ink2)}.ghead{grid-template-columns:minmax(0,1fr) 76px 64px 44px;grid-gap:6px;font-size:12px;font-weight:700;color:var(--ink2);margin-top:8px}.ghead,.subs{display:grid;gap:6px}.subs{grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:6px;margin-top:6px}.subs>div{background:var(--sunk);border-radius:8px;padding:6px 10px;min-width:0}.subs .term{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.h3{font-size:17px;font-weight:800;margin:18px 0 6px}a.fn{display:flex;align-items:center;min-height:44px}.memo{white-space:pre-wrap;font-size:13.5px;color:var(--ink2);margin-top:2px;overflow-wrap:anywhere}.notice{display:flex;gap:10px;align-items:center;min-height:56px;border-top:1px solid var(--line);padding:8px 0;text-decoration:none}.notice.new .fn{font-weight:800}.notice .dot{width:8px;height:8px;border-radius:50%;background:var(--ink);flex:none}.notice .dot.read{background:transparent;border:1.5px solid var(--ink3)}.link{display:inline-flex;align-items:center;min-height:44px;font-weight:700}.wrap-any{overflow-wrap:anywhere}