:root { --ink:#15293b; --muted:#63788a; --line:#dfe8eb; --bg:#f5f8f8; --paper:#fff; --navy:#163b5a; --blue:#277a9b; --teal:#0d806e; --soft:#eaf3f4; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:var(--bg); font:15px/1.55 "Pretendard", "Noto Sans KR", "Malgun Gothic", -apple-system, BlinkMacSystemFont, sans-serif; }
button,input { font:inherit; }
button { cursor:pointer; }
button:focus-visible,input:focus-visible { outline:3px solid #44a6bf; outline-offset:2px; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.app-shell { min-height:100vh; display:grid; grid-template-columns:308px minmax(0,1fr); transition:grid-template-columns .76s cubic-bezier(.22,1,.36,1); }
.sidebar { background:#fdfefe; border-right:1px solid var(--line); padding:25px 16px 22px; height:100vh; position:sticky; top:0; overflow:auto; z-index:5; transition:opacity .38s, padding .76s cubic-bezier(.22,1,.36,1); }
.brand { display:flex; align-items:center; gap:11px; padding:1px 10px 26px; }
.brand-mark { display:grid; place-items:center; width:37px; height:37px; border-radius:11px; color:#fff; font-size:18px; font-weight:800; background:var(--navy); }
.brand strong { display:block; letter-spacing:-.04em; font-size:16px; }
.brand small { display:block; color:var(--muted); font-size:11px; margin-top:1px; }
.search-label,.nav-caption { display:block; color:#60768a; text-transform:uppercase; letter-spacing:.03em; font-size:11px; font-weight:800; margin:0 12px 8px; }
.sidebar-search summary { display:flex; align-items:center; justify-content:space-between; margin:0 9px 9px; padding:5px 3px; color:#60768a; letter-spacing:.03em; font-size:11px; font-weight:800; cursor:pointer; list-style:none; border-radius:5px; }
.sidebar-search summary::-webkit-details-marker { display:none; }
.sidebar-search summary:hover { color:#0a7166; }
.sidebar-search summary:focus-visible { outline:3px solid #44a6bf; outline-offset:2px; }
.search-fold-hint { display:inline-block; transition:transform .18s; }
.sidebar-search:not([open]) .search-fold-hint { transform:rotate(-90deg); }
.search-wrap { position:relative; margin:0 8px; }
.search-wrap input { width:100%; border:1px solid #d5e1e5; background:#f7fafb; color:var(--ink); border-radius:10px; padding:10px 35px 10px 12px; font-size:13px; }
.search-wrap span { position:absolute; right:12px; top:3px; font-size:23px; color:#849ba7; pointer-events:none; }
.search-results { margin:7px 8px 0; padding:6px; border:1px solid var(--line); background:#fff; border-radius:10px; max-height:325px; overflow:auto; box-shadow:0 8px 24px #163b5a15; }
.search-results button { display:block; width:100%; border:0; border-radius:7px; background:transparent; text-align:left; padding:8px; color:var(--ink); }
.search-results button:hover { background:#ecf5f5; }
.search-results small { display:block; color:var(--muted); font-size:11px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sidebar-divider { height:1px; background:var(--line); margin:23px 8px 20px; }
.tree { padding-bottom:14px; }
.tree-row { display:flex; align-items:center; gap:1px; margin:1px 0; padding-left:calc(var(--depth) * 11px); }
.tree-select,.tree-toggle { border:0; background:transparent; color:#364f60; }
.tree-select { display:flex; align-items:center; gap:7px; flex:1; min-width:0; text-align:left; padding:7px 5px; border-radius:8px; line-height:1.35; font-size:12px; }
.tree-select:hover,.tree-select.active { background:#eaf3f3; color:#09635d; }
.tree-select.active { font-weight:800; }
.tree-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tree-count { margin-left:auto; color:#8499a3; font-size:10px; flex:none; }
.tree-toggle { width:22px; height:27px; flex:none; border-radius:5px; color:#688091; padding:0; font-size:11px; transition:transform .15s; }
.tree-toggle:hover { background:#eaf3f3; }
.tree-toggle.closed { transform:rotate(-90deg); }
.tree-toggle-spacer { width:22px; flex:none; }
.sidebar-foot { border-top:1px solid var(--line); margin:5px 8px 0; padding:17px 5px 0; color:#778e9a; font-size:11px; line-height:1.7; }
.main { min-width:0; }
.topbar { display:flex; align-items:center; height:65px; padding:0 clamp(20px,4vw,58px); border-bottom:1px solid #e7eef0; background:#fbfdfd; }
.eyebrow { font-size:11px; font-weight:900; letter-spacing:.14em; color:#27536e; }
.eyebrow span { font-size:10px; margin-left:5px; color:#0b8971; }
.build-stamp { display:inline-block; margin-left:12px; padding:3px 7px; border-radius:6px; background:#d9eee7; color:#0b675d; font-size:10px; font-weight:850; white-space:nowrap; }
.topbar-right { margin-left:auto; color:#8496a2; font-size:12px; }
.cart-jump { margin-left:auto; border:1px solid #a5cfca; background:#e9f6f1; color:#0c7166; border-radius:9px; padding:7px 11px; text-decoration:none; font-size:12px; font-weight:800; }
.cart-jump:hover { background:#d4eee6; }
.cart-jump span { margin-left:5px; border-radius:50%; padding:1px 6px; background:#0d806e; color:#fff; }
.menu-button { display:inline-flex; align-items:center; justify-content:center; width:35px; height:35px; margin-right:15px; border-radius:7px; }
.menu-button:hover { background:#eaf3f3; }
.icon-button { border:0; background:transparent; color:var(--navy); font-size:21px; }
.content { max-width:1270px; margin:0 auto; padding:25px clamp(20px,4vw,58px) 52px; transition:max-width .76s cubic-bezier(.22,1,.36,1),padding .76s cubic-bezier(.22,1,.36,1); }
.breadcrumbs { display:flex; flex-wrap:wrap; align-items:center; gap:5px; min-height:25px; color:#7d939f; font-size:12px; margin-bottom:19px; }
.breadcrumbs button { border:0; background:transparent; padding:2px 0; color:#607b89; }
.breadcrumbs button:hover { color:var(--teal); text-decoration:underline; }
.breadcrumbs b { color:#2f5264; font-weight:700; }
.hero { position:relative; display:flex; justify-content:space-between; gap:24px; padding:31px 36px; border:1px solid #d8e6e9; border-radius:17px; background:linear-gradient(120deg,#e6f0f3 0%,#f0f6f3 66%,#f9fbf9 100%); max-height:var(--hero-expanded-height,300px); overflow:hidden; transition:max-height .82s cubic-bezier(.22,1,.36,1),padding .82s cubic-bezier(.22,1,.36,1),opacity .38s,border-width .82s; }
.hero:before { content:""; position:absolute; height:4px; width:50px; left:36px; top:0; border-radius:0 0 5px 5px; background:#118678; }
.pill { display:inline-block; border-radius:20px; color:#0d7168; background:#d8efea; padding:4px 11px; font-size:11px; font-weight:800; }
h1 { font-size:clamp(25px,2.4vw,34px); letter-spacing:-.055em; line-height:1.27; margin:11px 0 8px; }
.hero p { margin:0; max-width:600px; color:#536f7e; font-size:13px; }
.metrics { display:flex; align-self:flex-end; gap:14px; flex:none; }
.metrics div { background:#ffffffcc; border:1px solid #dae7e8; border-radius:12px; padding:15px 20px; min-width:108px; text-align:center; }
.metrics strong { display:block; font-size:23px; letter-spacing:-.04em; line-height:1.2; color:var(--navy); }
.metrics span { display:block; color:#708794; font-size:11px; margin-top:4px; }
.section { margin-top:39px; }
.section-head { display:flex; align-items:end; justify-content:space-between; gap:14px; margin-bottom:16px; }
.section-kicker { color:#0b8b79; font-size:10px; letter-spacing:.13em; font-weight:900; }
h2 { font-size:20px; margin:1px 0 0; letter-spacing:-.04em; }
.section-note { color:#8799a3; font-size:12px; }
.branch-section { margin-top:34px; transition:margin-top .76s cubic-bezier(.22,1,.36,1); }
.branch-section .explain { margin:0 0 13px; }
.branch-viewport { position:relative; overflow:auto; height:360px; max-height:55vh; border:1px solid #dae8e8; border-radius:16px; background-color:#f7fbfa; background-image:radial-gradient(#cddedc 0.8px,transparent 0.8px); background-size:20px 20px; scrollbar-color:#b5ccc9 transparent; transition:height .76s cubic-bezier(.22,1,.36,1),max-height .76s cubic-bezier(.22,1,.36,1); }
.branch-viewport:focus-visible { outline:3px solid #44a6bf; outline-offset:2px; }
.branch-map { display:block; margin:auto; overflow:visible; font-family:inherit; }
.branch-line { fill:none; stroke-width:2.5; stroke-linecap:round; }
.branch-line.leaving,.branch-node.leaving { pointer-events:none; }
.branch-line.trunk { stroke:#a4c9c8; }
.branch-line.twig { stroke:#4fac9b; }
.branch-node { cursor:pointer; touch-action:none; }
.branch-node.dragging rect { stroke:#169682; stroke-width:3; }
body.dragging-branch,body.dragging-branch * { cursor:grabbing!important; user-select:none!important; }
.branch-ghost { position:fixed; z-index:100; pointer-events:none; width:190px; padding:12px 15px; border:2px solid #168c7b; border-radius:13px; background:#fff; box-shadow:0 16px 36px #0b403d38; font-size:13px; font-weight:800; transform:translate(-50%,-50%); }
.branch-ghost small { display:block; color:#6b8791; margin-top:5px; font-size:11px; font-weight:500; }
.branch-node rect { fill:#fff; stroke:#cbdcde; stroke-width:1.5; filter:drop-shadow(0 3px 6px #214b5511); transition:fill .18s,stroke .18s,filter .18s; }
.branch-node.ancestor rect { fill:#eef4f5; }
.branch-node.current rect { fill:#126f69; stroke:#0d655f; filter:drop-shadow(0 6px 10px #0d70642b); }
.branch-node.child rect { fill:#fff; stroke:#9ecfca; }
.branch-node:hover rect,.branch-node:focus-visible rect { stroke:#0b8779; stroke-width:3; filter:drop-shadow(0 5px 9px #0d706436); }
.branch-node.current:hover rect,.branch-node.current:focus-visible rect { stroke:#074d51; }
.branch-add rect { fill:#e6f5ee!important; stroke:#9dcabe!important; filter:none!important; }
.branch-add text { fill:#0c7264; font-size:22px; font-weight:700; pointer-events:none; }
.branch-add { cursor:pointer; }
.branch-add:hover rect,.branch-add:focus-visible rect { fill:#ccebdd!important; stroke:#148879!important; }
.branch-node.current .branch-add rect { fill:#fff!important; }
.branch-add:focus-visible { outline:2px solid #32a8bf; }
.branch-node:focus { outline:none; }
.branch-label { fill:#244250; font-size:14px; font-weight:750; pointer-events:none; }
.branch-meta { fill:#76919a; font-size:11px; pointer-events:none; }
.branch-node.current .branch-label { fill:white; }
.branch-node.current .branch-meta { fill:#cfebe4; }
.branch-more { margin-top:12px; }
.child-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(205px,1fr)); gap:10px; }
.child-card { min-height:92px; text-align:left; border:1px solid #e2eaec; background:var(--paper); border-radius:12px; padding:15px 16px; transition:border-color .15s,transform .15s,box-shadow .15s; }
.child-card:hover { border-color:#83c3be; transform:translateY(-2px); box-shadow:0 5px 18px #17425612; }
.child-card strong { display:block; margin:0 0 9px; font-size:14px; line-height:1.35; word-break:keep-all; }
.child-card span { color:#78909b; font-size:11px; }
.child-card b { color:#1a786c; font-weight:750; }
.show-more { display:block; margin:16px auto 0; border:1px solid #b7d5d4; background:#f4fbfa; border-radius:9px; padding:8px 18px; font-size:12px; font-weight:700; color:#116c64; }
.show-more[hidden] { display:none; }
.cart-section { border:1px solid #d7e7e4; border-radius:17px; background:#f4faf8; padding:24px; transition:padding .76s cubic-bezier(.22,1,.36,1),margin-top .76s cubic-bezier(.22,1,.36,1); }
.cart-section .section-head { margin-bottom:11px; }
.cart-section .explain { margin:0 0 16px; }
.cart-dropzone { border:2px dashed #aacdc7; border-radius:13px; background:#fff; min-height:118px; padding:15px; transition:background .18s,border-color .18s,transform .18s; }
.cart-dropzone.drag-over { background:#e4f6ee; border-color:#087c69; transform:scale(1.005); }
.cart-dock { position:fixed; right:22px; bottom:18px; z-index:20; width:min(280px,calc(100vw - 32px)); border:2px dashed #278e78; border-radius:13px; background:#ebf8f3; color:#105e56; box-shadow:0 10px 30px #194f4a34; padding:11px 14px; font-size:12px; pointer-events:none; }
.cart-dock[hidden] { display:none; }
.cart-dock strong,.cart-dock span { display:block; }
.cart-dock strong { font-size:13px; }
.cart-dock span { color:#588078; margin-top:2px; }
.cart-dock.drag-over { background:#c8f0db; border-style:solid; transform:scale(1.04); }
body.dragging-branch .cart-dock { pointer-events:auto; }
.cart-tools { display:flex; align-items:center; justify-content:space-between; gap:12px; color:#476b76; font-size:12px; font-weight:700; }
.cart-tools button,.cart-clear { border:1px solid #93c8bd; background:#eaf7f1; color:#0a6a5e; padding:8px 12px; border-radius:8px; font-size:12px; font-weight:800; cursor:pointer; }
.cart-clear { background:#fff; border-color:#d4e2df; color:#587480; }
.cart-tools button:hover,.cart-clear:hover { background:#d5f0e5; }
.cart-items { display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }
.cart-placeholder { margin:4px 0; color:#8ca3a8; font-size:12px; }
.cart-chip { display:flex; align-items:center; gap:9px; max-width:100%; border:1px solid #a4d3ca; background:#ebf8f3; border-radius:9px; padding:5px 6px 5px 11px; color:#155c58; font-size:12px; }
.cart-chip strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cart-chip small { color:#5b8885; white-space:nowrap; }
.cart-chip button { width:25px; height:25px; flex:none; border:0; border-radius:5px; background:transparent; color:#3a7771; font-size:18px; cursor:pointer; }
.cart-chip button:hover { background:#d1ebe3; }
.cart-result { margin-top:21px; }
.cart-result .subject-grid { max-height:var(--cart-expanded-height,none); overflow:auto; transition:max-height .76s cubic-bezier(.22,1,.36,1); }
.cart-result h3 { font-size:17px; letter-spacing:-.03em; margin:2px 0 0; }
.cart-result .explain { margin:3px 0 16px; }
.school-conditions { margin-top:11px; color:#426f71; font-size:11px; }
.school-conditions summary { cursor:pointer; font-weight:800; }
.school-conditions ul { margin:9px 0 0; padding-left:18px; line-height:1.65; word-break:keep-all; }
.school-conditions li+li { margin-top:7px; }
.school-conditions li small { display:block; color:#778e99; }
.subjects-section { border-top:1px solid #e2e9eb; padding-top:32px; }
.subject-head { align-items:center; }
.subject-search input { width:min(235px,34vw); background:#fff; border:1px solid #d9e4e7; border-radius:9px; padding:9px 11px; color:var(--ink); font-size:12px; }
.explain { color:#718693; margin:-4px 0 19px; font-size:12px; }
.subject-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(177px,1fr)); gap:9px; }
.subject-card { display:flex; flex-direction:column; justify-content:space-between; gap:9px; min-height:77px; border:1px solid #e3eaed; background:#fff; border-radius:10px; padding:12px 13px; text-align:left; color:var(--ink); transition:border-color .15s, box-shadow .15s,min-height .76s cubic-bezier(.22,1,.36,1); }
.subject-card:hover { border-color:#62b1aa; box-shadow:0 4px 13px #17425610; }
.subject-card strong { font-size:13px; font-weight:700; line-height:1.35; word-break:keep-all; }
.subject-card .coverage { color:#92a2aa; font-size:11px; }
.subject-card .coverage:after { content:'  ›'; color:#258579; font-weight:800; }
.meaning-flags { display:flex; flex-wrap:wrap; gap:4px; align-items:center; }
.meaning-flags .meaning-badge { display:inline-flex; padding:2px 6px; border-radius:6px; background:#edf5f4; color:#286d69; font-size:10px; font-weight:750; line-height:1.45; }
.meaning-flags .meaning-2 { background:#e1f3e9; color:#126844; }
.meaning-flags .meaning-0 { background:#f1f3f4; color:#61737b; }
.meaning-flags .meaning-3 { background:#fff1da; color:#90671b; }
.empty { background:#fff; padding:25px; border:1px dashed #cbd9dd; border-radius:11px; color:#718693; text-align:center; }
.footnote { font-size:11px; line-height:1.8; color:#6e8491; margin-top:42px; border-top:1px solid #e1e9eb; padding-top:20px; }
.footnote strong { color:#3e5d69; }
.overlay { display:none; }
.school-dialog { width:min(760px,calc(100vw - 26px)); max-height:min(82vh,830px); overflow:auto; border:1px solid #cddfe1; border-radius:17px; padding:0; color:var(--ink); background:#fff; box-shadow:0 24px 80px #102e4252; }
.school-dialog::backdrop { background:#102b3aa8; }
.dialog-head { display:flex; align-items:flex-start; gap:16px; justify-content:space-between; padding:25px 28px 18px; border-bottom:1px solid var(--line); }
.dialog-head h2 { font-size:25px; margin:4px 0 3px; }
.dialog-head p { color:#607989; font-size:12px; margin:0; }
.dialog-close { border:0; border-radius:8px; background:#edf3f4; color:#33586b; font-size:25px; line-height:1; width:35px; height:35px; flex:none; }
.dialog-close:hover { background:#dcecee; }
.dialog-search-row { display:flex; align-items:center; justify-content:space-between; gap:15px; padding:16px 28px; }
.dialog-search-row input { width:min(350px,70%); border:1px solid #d4e1e5; border-radius:9px; padding:9px 12px; color:var(--ink); background:#fbfdfd; font-size:12px; }
.dialog-search-row span { color:#6d8391; font-size:12px; }
.school-list { padding:0 28px 10px; }
.school-row { border:1px solid #e1e9eb; border-radius:11px; padding:14px 16px; margin-bottom:9px; }
.school-row-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.school-row-head strong { font-size:14px; }
.school-row-head span { flex:none; font-size:11px; color:#147d6f; }
.school-source { margin:5px 0 0; color:#8498a3; font-size:11px; }
.dialog-meaning { display:flex; gap:6px; align-items:center; flex-wrap:wrap; margin-top:9px; }
.dialog-meaning .choice-flag { padding:2px 7px; border-radius:6px; background:#fff1da; color:#866019; font-size:10px; font-weight:750; }
.school-row .choice-flag { display:inline-block; margin-top:8px; padding:3px 7px; border-radius:6px; background:#fff1da; color:#866019; font-size:10px; font-weight:750; }
.school-row .meaning-flags { margin-top:9px; }
.school-majors { display:flex; flex-wrap:wrap; gap:5px; margin-top:10px; }
.school-majors span { color:#536b78; background:#f0f5f6; border-radius:6px; padding:3px 7px; font-size:11px; }
.school-row details { margin-top:8px; color:#407885; font-size:11px; }
.school-row summary { cursor:pointer; }
.school-row .school-provenance { margin-top:12px; border-top:1px solid #e0e9e9; padding-top:9px; color:#395f69; }
.school-provenance ul { margin:9px 0 0; padding:0 0 0 18px; }
.school-provenance li { margin:0 0 11px; overflow-wrap:anywhere; }
.school-provenance li strong { color:#275566; }
.school-provenance li p { margin:3px 0; line-height:1.5; color:#667e87; }
.school-provenance a { color:#116978; text-decoration:underline; text-underline-offset:2px; }
.school-provenance .source-unlinked { color:#9a7041; }
.school-provenance .source-excerpt { white-space:normal; }
.common-only { border-top:1px solid var(--line); margin:8px 28px 0; padding-top:15px; color:#607786; font-size:12px; }
.common-only summary { cursor:pointer; font-weight:700; }
.common-only p { margin:8px 0 0; line-height:1.7; }
.dialog-note { color:#82949d; font-size:11px; line-height:1.7; margin:16px 28px 25px; }
.admin-upload { margin-left:auto; padding:7px 11px; border:1px solid #b8cdd8; border-radius:9px; background:#fff; color:#28566b; font-size:12px; font-weight:800; }
.admin-upload:hover { background:#eaf3f4; }
.admin-upload + .sr-only + .cart-jump { margin-left:9px; }
.workspace-grid { min-width:0; display:grid; grid-template-columns:minmax(0,100fr) minmax(0,0fr); gap:0; align-items:start; transition:grid-template-columns .76s cubic-bezier(.22,1,.36,1),gap .76s cubic-bezier(.22,1,.36,1); }
.workspace-left { min-width:0; view-transition-name:course-workspace; }
::view-transition-group(course-workspace),::view-transition-group(root) { animation-duration:.86s; animation-timing-function:cubic-bezier(.22,1,.36,1); }
::view-transition-old(course-workspace),::view-transition-new(course-workspace) { animation-duration:.86s; animation-timing-function:cubic-bezier(.22,1,.36,1); }
body.view-morph .app-shell,body.view-morph .sidebar,body.view-morph .content,body.view-morph .hero,body.view-morph .branch-section,body.view-morph .branch-viewport,body.view-morph .cart-section,body.view-morph .cart-result .subject-grid,body.view-morph .subject-card,body.view-morph .workspace-grid,body.view-morph .curriculum-panel { transition:none!important; }
.apply-curriculum { display:block; margin-top:18px; width:100%; padding:12px 18px; border:0; border-radius:10px; background:#087f70; color:white; font-size:13px; font-weight:850; box-shadow:0 4px 13px #0a6d6340; }
.apply-curriculum-top { margin-top:25px; margin-bottom:-20px; }
.apply-curriculum:hover:not(:disabled) { background:#076b60; }
.apply-curriculum:disabled { background:#cbd9d7; color:#6d8684; box-shadow:none; cursor:not-allowed; }
.curriculum-upload-status { margin:10px 0 0; color:#5e7c85; font-size:11px; line-height:1.6; }
.curriculum-panel { min-width:0; align-self:start; border:0 solid #d6e4e8; border-radius:17px; background:#fff; padding:0; box-shadow:0 8px 28px #143b5010; opacity:0; visibility:hidden; transform:translateX(22px); overflow:hidden; transition:opacity .42s,transform .76s cubic-bezier(.22,1,.36,1),padding .76s cubic-bezier(.22,1,.36,1),border-width .76s,visibility 0s linear .76s; }
.curriculum-panel[hidden] { display:none; }
.curriculum-panel-head { display:flex; justify-content:space-between; align-items:flex-start; gap:14px; }
.curriculum-panel-head h2 { font-size:21px; }
.curriculum-panel-head p { margin:5px 0 0; color:#627e8a; font-size:12px; }
.curriculum-metrics { display:flex; flex-wrap:wrap; gap:8px; margin:17px 0 9px; }
.curriculum-metrics span { padding:5px 10px; border-radius:8px; background:#eaf3f2; color:#276c68; font-size:11px; font-weight:750; }
.curriculum-legend { color:#6a818b; font-size:11px; margin:12px 0; }
.legend-match { color:#0c8979; margin-left:8px; }
.legend-other { color:#a8b7bb; margin-left:12px; }
.curriculum-table-wrap { overflow:auto; max-height:70vh; border:1px solid #dce8e9; border-radius:12px; scrollbar-color:#bed4d2 transparent; }
.curriculum-table { width:100%; min-width:790px; table-layout:fixed; border-collapse:separate; border-spacing:0; font-size:12px; }
.curriculum-table th,.curriculum-table td { border-right:1px solid #e0e9ec; border-bottom:1px solid #e6edef; padding:9px; vertical-align:top; }
.curriculum-table th:last-child,.curriculum-table td:last-child { border-right:0; }
.curriculum-table thead th { position:sticky; top:0; z-index:2; background:#e8f1f3; color:#254659; text-align:left; }
.curriculum-table thead th:nth-child(1) { width:102px; }
.curriculum-table thead th:nth-child(2) { width:105px; }
.curriculum-table tbody tr:last-child td { border-bottom:0; }
.curriculum-table .row-divider th { background:#dcece9; color:#0d665d; font-size:12px; padding:7px 11px; text-align:left; }
.curriculum-table .group-start > td { border-top:4px solid #2d6570; }
.curriculum-table .group-name { color:#234b5c; font-weight:850; background:#f5faf9; }
.curriculum-table .group-name[rowspan] { background:#e8f3f1; border-right:2px solid #b6d0ce; }
.curriculum-table .group-name small { display:block; font-weight:550; color:#7b9399; margin-top:3px; }
.curriculum-table .subject-group { color:#56737d; background:#fafcfc; font-weight:700; }
.semester-lane + .semester-lane { margin-top:7px; border-top:1px dashed #d8e5e4; padding-top:7px; }
.semester-lane > small { display:block; color:#708891; margin-bottom:4px; font-weight:750; }
.course-blocks { display:flex; flex-wrap:wrap; gap:5px; }
.course-block { display:inline-flex; flex-direction:column; gap:1px; max-width:100%; border:1px solid transparent; border-radius:7px; padding:5px 7px; background:#e5edef; color:#687c82; font-size:11px; opacity:.55; line-height:1.25; word-break:keep-all; text-align:left; cursor:pointer; transition:opacity .18s,background .18s,transform .18s,box-shadow .18s; }
.course-block:hover,.course-block:focus-visible { opacity:1; transform:translateY(-2px); background:#d9e9e9; box-shadow:0 3px 8px #175d4f22; }
.course-block small { font-size:9px; opacity:.86; }
.course-block.is-match { padding:7px 9px; background:#c9efe2; color:#075f53; border:1px solid #4eb59c; font-size:12px; font-weight:850; opacity:1; box-shadow:0 2px 6px #175d4f1b; }
.course-block.is-match:hover,.course-block.is-match:focus-visible { background:#b7e7d7; box-shadow:0 5px 12px #175d4f30; }
.course-block::after { content:'대학 보기 ↗'; color:inherit; font-size:9px; opacity:0; max-height:0; overflow:hidden; transition:opacity .18s,max-height .18s; }
.course-block:hover::after,.course-block:focus-visible::after { opacity:.85; max-height:16px; }
.missing-section { border-top:1px solid #dce8e8; margin-top:22px; padding-top:17px; }
.missing-section h3 { margin:0 0 6px; font-size:16px; }
.missing-section .explain { margin:0 0 12px; }
.missing-subjects,.broad-subjects { display:flex; flex-wrap:wrap; gap:6px; }
.missing-subjects button,.missing-subjects span { border:1px solid #e0c3b9; background:#fff0e8; color:#8c4b34; border-radius:7px; padding:5px 8px; font-size:11px; }
.missing-subjects button:hover { background:#f9dbca; }
.broad-subjects { color:#70858b; font-size:11px; margin-top:12px; }
.broad-subjects summary { cursor:pointer; }
.broad-subjects span { display:inline-block; border:1px solid #d9e3e5; border-radius:6px; padding:3px 6px; margin:4px 4px 0 0; }
.curriculum-dialog-body { padding:22px 28px 27px; }
.curriculum-dialog-body label { display:block; font-weight:750; font-size:12px; color:#3a6272; margin-bottom:15px; }
.curriculum-dialog-body select { display:block; margin-top:6px; width:100%; padding:10px 12px; border:1px solid #cbdde0; border-radius:9px; color:#213e4d; background:#fff; }
.curriculum-dialog-body .explain { margin:0 0 14px; }
.curriculum-dialog-actions { display:flex; justify-content:flex-end; }
.curriculum-dialog-actions .apply-curriculum { width:auto; margin:0; }
body.curriculum-active .app-shell { grid-template-columns:0px minmax(0,1fr); }
body.curriculum-active .sidebar { opacity:0; pointer-events:none; padding-left:0; padding-right:0; }
body.curriculum-active .menu-button { visibility:hidden; }
body.curriculum-active .cart-dock { display:none; }
body.curriculum-active .content { max-width:1800px; padding:22px clamp(16px,2vw,36px) 48px; }
body.curriculum-active .hero { max-height:0; padding-top:0; padding-bottom:0; border-width:0; opacity:0; }
body.curriculum-transitioning { overflow-anchor:none; }
body.curriculum-active .workspace-grid { grid-template-columns:minmax(0,34fr) minmax(0,66fr); gap:18px; }
body.curriculum-active .workspace-left { min-width:0; }
body.curriculum-active .curriculum-panel { visibility:visible; opacity:1; transform:none; border-width:1px; padding:22px; overflow:visible; transition-delay:.18s,0s,0s,0s,0s; }
body.curriculum-active .branch-section { margin-top:0; }
body.curriculum-active .branch-viewport { height:245px; }
body.curriculum-active .cart-section { margin-top:16px; padding:17px; }
body.curriculum-active .cart-result .subject-grid { max-height:220px; }
body.curriculum-active .cart-result .subject-card { min-height:58px; }
@media (max-width:1050px) { body.curriculum-active .workspace-grid { grid-template-columns:minmax(0,1fr); } body.curriculum-active .branch-viewport { height:220px; } .curriculum-table-wrap { max-height:none; } }
@media (max-width:650px) { .admin-upload { margin-left:auto; font-size:11px; padding:7px; } .cart-jump { display:none; } .curriculum-panel { padding:15px; } .curriculum-dialog-body { padding:18px; } }
@media (min-width:921px) { body.sidebar-collapsed:not(.curriculum-active) .app-shell { grid-template-columns:0 minmax(0,1fr); } body.sidebar-collapsed .sidebar { opacity:0; pointer-events:none; padding-left:0; padding-right:0; border-right:0; overflow:hidden; } }
@media (max-width:920px) { .app-shell { grid-template-columns:1fr; } .sidebar { position:fixed; left:0; top:0; bottom:0; width:min(310px,84vw); transform:translateX(-100%); transition:transform .2s; box-shadow:12px 0 35px #0c2d4524; } .sidebar.open { transform:translateX(0); } .overlay.visible { display:block; position:fixed; inset:0; z-index:4; background:#09273980; } .topbar { padding:0 20px; } }
@media (max-width:650px) { .content { padding:19px 18px 36px; } .hero { flex-direction:column; padding:26px 23px; } .hero:before { left:23px; } .metrics { align-self:stretch; } .metrics div { flex:1; padding:12px; } .section { margin-top:30px; } .cart-section { padding:18px 15px; } .cart-tools { align-items:flex-start; } .cart-chip { flex-wrap:wrap; } .cart-dock { right:12px; bottom:10px; } .cart-jump { padding:7px 8px; font-size:11px; } .subject-head { align-items:stretch; flex-direction:column; } .subject-search input { width:100%; } .child-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .subject-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .topbar-right { display:none; } .dialog-head,.dialog-search-row { padding-left:18px; padding-right:18px; } .school-list { padding-left:18px; padding-right:18px; } .dialog-note { margin-left:18px; margin-right:18px; } .common-only { margin-left:18px; margin-right:18px; } }
@media (max-width:430px) { .child-grid { grid-template-columns:1fr; } .subject-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (prefers-reduced-motion:reduce) { .branch-node rect,.app-shell,.sidebar,.content,.hero,.branch-section,.branch-viewport,.cart-section,.cart-result .subject-grid,.subject-card,.workspace-grid,.curriculum-panel,.course-block { transition:none!important; } }
:root { --classification-note-bg: #f0f5f5; }
.classification-note { margin: 0 0 22px; padding: 14px 18px; border: 1px solid #d6e3e1; border-radius: 12px; background: var(--classification-note-bg); font-size: .87rem; line-height: 1.65; }
.classification-note[hidden] { display: none; }
.classification-note summary { cursor: pointer; font-weight: 650; }
.classification-note p { margin: 10px 0 0; }
.classification-note ul { margin: 8px 0 0; padding-left: 20px; }
.classification-note a { color: #1e6267; text-underline-offset: 3px; }
.classification-note .classification-policy { font-size: .79rem; color: #607270; }
.classification-note[data-pending="true"] { background: #fff8e9; border-color: #e9d4a6; }

/* CourseChecker shared entry and QR landing */
.linked-department-status{padding:14px 18px;background:#e8f4f2;border:1px solid #bfdfd7;border-radius:12px;color:#1e6257;line-height:1.7;font-size:14px;margin:0 0 18px}
.topbar{flex-wrap:wrap;height:auto;min-height:76px;gap:8px}
.topbar .admin-upload{margin-left:auto}
@media(max-width:700px){.topbar{padding:10px 12px}.topbar .cc-related-nav{order:0;flex:1}.topbar .admin-upload{margin-left:0;font-size:12px}.topbar .cart-jump{font-size:12px}.content{padding-top:18px}}

/* Mobile comparison: the fixed sidebar is outside the grid, so retaining the
   desktop 0px sidebar column would place <main> inside that zero-width column. */
@media (max-width:1050px) {
  .workspace-grid, body.curriculum-active .workspace-grid { grid-template-columns:minmax(0,1fr); }
  .curriculum-panel { transform:none; }
  body.curriculum-active .branch-viewport { height:245px; }
}
@media (max-width:920px) {
  .app-shell, body.curriculum-active .app-shell { grid-template-columns:minmax(0,1fr); }
  .main { grid-column:1; width:100%; min-width:0; }
  .topbar > .menu-button, .topbar > .admin-upload, .topbar > .cart-jump { flex-shrink:0; }
  .topbar > .admin-upload, .topbar > .cart-jump { white-space:nowrap; }
  .curriculum-table-wrap { max-width:100%; -webkit-overflow-scrolling:touch; }
}
@media (max-width:700px) {
  .topbar { display:grid; grid-template-columns:40px minmax(0,1fr); gap:8px; }
  .topbar > .menu-button { grid-column:1; grid-row:1; width:40px; height:40px; margin:0; }
  .topbar > .cc-related-nav { grid-column:2; grid-row:1; min-width:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .topbar > .cc-related-nav a { display:flex; align-items:center; justify-content:center; min-height:44px; padding:8px 6px; text-align:center; white-space:normal; word-break:keep-all; }
  .topbar > .admin-upload { grid-column:1 / -1; grid-row:2; width:100%; min-height:42px; margin:0; }
  .topbar > .cart-jump { grid-column:1 / -1; margin:0; justify-self:end; }
  body.curriculum-active .topbar > .menu-button { display:none; }
  body.curriculum-active .topbar > .cc-related-nav { grid-column:1 / -1; }
  body.curriculum-active .curriculum-panel { padding:15px; }
  .curriculum-panel-head { flex-wrap:wrap; }
  .curriculum-panel-head > div { flex:1 1 170px; min-width:0; }
  .curriculum-panel-head > button { flex-shrink:0; white-space:nowrap; }
}
