/* 연무고 과목담기 - 밝고 친근한 디자인 시스템 */
:root{
  --navy:#1a3fd4; --navy-deep:#0a239e; --navy-ink:#08186b;
  --sky:#5b8bff; --sky-soft:#e8f0ff; --mint:#22c9a8; --mint-soft:#e0f8f2;
  --sun:#ffca3a; --coral:#ff7a59; --coral-soft:#fff0eb;
  --ink:#1a2340; --sub:#6b7590; --line:#e7ecf5; --bg:#f2f6ff; --card:#fff;
  --core:#ff7a59; --core-bg:#fff0eb; --reco:#22c9a8; --reco-bg:#e0f8f2;
  --pick:#1a3fd4; --fixed:#e0466e; --fixed-bg:#ffe9ef; --lock:#8b6df0;
  --shadow-s:0 2px 8px rgba(26,63,212,.06);
  --shadow:0 6px 20px rgba(26,63,212,.08),0 2px 6px rgba(26,63,212,.05);
  --shadow-l:0 16px 40px rgba(26,63,212,.14);
  --r:20px; --r-s:14px;
}
*{box-sizing:border-box}
body{margin:0;font-family:'Pretendard',-apple-system,BlinkMacSystemFont,'Malgun Gothic',sans-serif;
  background:var(--bg);color:var(--ink);line-height:1.55;-webkit-font-smoothing:antialiased}
/* 그누보드 기본 요소 감추기 (혹시 출력되면) */
#hd, #ft, #tnb, #gnb, #skip_navigation, #container_title{display:none !important}

/* 상단바 */
.ym-topbar{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:100;
  display:flex;align-items:center;padding:12px 20px;gap:12px}
.ym-brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink);min-height:44px}
.ym-logo{width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,var(--navy),var(--sky));
  color:#fff;display:grid;place-items:center;font-weight:900;font-size:14px;box-shadow:0 4px 12px rgba(26,63,212,.3)}
.ym-brandtext{font-weight:800;font-size:20px;letter-spacing:-.02em}
.ym-brandtext b{color:var(--navy)}
.ym-school{font-size:12.5px;color:var(--sub);font-weight:600}
.ym-topbar-right{margin-left:auto}
.ym-who{font-size:13px;font-weight:700;color:var(--navy);background:var(--sky-soft);padding:7px 14px;border-radius:999px}
.ym-main{max-width:1000px;margin:0 auto;padding:0 20px 120px;min-height:60vh}

/* 푸터 */
.ym-footer{background:var(--navy-ink);color:#aab4d8;margin-top:60px}
.ym-footer-in{max-width:1000px;margin:0 auto;padding:28px 20px;font-size:13px}
.ym-footer-in b{color:#fff}

/* 버튼 공통 */
.ym-btn{border:none;border-radius:var(--r-s);font:inherit;font-weight:800;cursor:pointer;
  transition:transform .12s,box-shadow .12s;font-size:16px;padding:16px 24px}
.ym-btn:active{transform:scale(.98)}
.ym-btn-primary{background:linear-gradient(135deg,var(--navy),var(--sky));color:#fff;
  box-shadow:0 8px 20px rgba(26,63,212,.28)}
.ym-btn-primary:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(26,63,212,.36)}
.ym-btn-ghost{background:#fff;border:2px solid var(--line);color:var(--sub)}
.ym-btn-ghost:hover{border-color:var(--navy);color:var(--navy)}

/* 히어로 (메인) */
.ym-hero{padding:48px 0 36px;position:relative}
.ym-hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:30px;align-items:center}
.ym-hero h1{font-size:40px;line-height:1.22;margin:0 0 16px;letter-spacing:-.03em;font-weight:900}
.ym-hero h1 .hl{background:linear-gradient(120deg,var(--navy),var(--sky));-webkit-background-clip:text;
  background-clip:text;color:transparent}
.ym-hero p{font-size:17px;color:#4a5578;margin:0 0 26px}
.ym-hero-art{display:grid;place-items:center}
.ym-hero-art .bag{width:100%;max-width:320px;filter:drop-shadow(0 20px 30px rgba(26,63,212,.18))}
.ym-chip-float{display:inline-flex;align-items:center;gap:7px;background:#fff;border-radius:999px;
  padding:8px 16px;font-weight:700;font-size:13.5px;box-shadow:var(--shadow);margin-top:20px}
.ym-applybar{display:inline-flex;align-items:center;gap:9px;font-weight:800;font-size:14.5px;
  padding:12px 20px;border-radius:14px;margin-top:22px}
.ym-applybar.open{background:var(--mint-soft);color:#0d8a70;border:2px solid var(--mint)}
.ym-applybar.wait{background:var(--sky-soft);color:var(--navy);border:2px solid var(--sky)}
.ym-applybar.closed{background:var(--fixed-bg);color:#c02f56;border:2px solid var(--fixed)}
.ym-applybar small{font-weight:600;opacity:.8}

/* 스텝 카드 */
.ym-steps{padding:44px 0}
.ym-steps h2{text-align:center;font-size:26px;margin:0 0 6px;font-weight:900;letter-spacing:-.02em}
.ym-steps .lead{text-align:center;color:var(--sub);margin:0 0 34px;font-size:15px}
.ym-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.ym-card{background:#fff;border-radius:var(--r);padding:28px 24px;box-shadow:var(--shadow);
  border:1px solid var(--line);transition:transform .15s,box-shadow .15s;position:relative;overflow:hidden}
.ym-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-l)}
.ym-card .ic{width:56px;height:56px;border-radius:16px;display:grid;place-items:center;font-size:27px;margin-bottom:16px}
.ym-card:nth-child(1) .ic{background:var(--sky-soft)}
.ym-card:nth-child(2) .ic{background:var(--coral-soft)}
.ym-card:nth-child(3) .ic{background:var(--mint-soft)}
.ym-card .step-n{font-size:12px;font-weight:800;letter-spacing:.08em;margin-bottom:5px}
.ym-card:nth-child(1) .step-n{color:var(--sky)}
.ym-card:nth-child(2) .step-n{color:var(--coral)}
.ym-card:nth-child(3) .step-n{color:var(--mint)}
.ym-card h3{font-size:18px;margin:0 0 8px;font-weight:800}
.ym-card p{font-size:14px;color:var(--sub);margin:0}

.ym-coop{background:linear-gradient(135deg,#fffdf5,#fff8e6);border:2px solid var(--sun);
  border-radius:var(--r);padding:20px 24px;margin:8px 0 0;color:#8a6d1a;font-size:14.5px;font-weight:600}

/* 로그인 */
.ym-login{max-width:420px;margin:50px auto 0}
.ym-login-card{background:#fff;border-radius:var(--r);padding:34px 30px;box-shadow:var(--shadow-l);
  border:1px solid var(--line);text-align:center}
.ym-login-emoji{font-size:40px;margin-bottom:8px}
.ym-login-card h2{font-size:22px;margin:0 0 6px;font-weight:900}
.ym-login-card .sub{color:var(--sub);font-size:14px;margin:0 0 22px}
.ym-login-card input{width:100%;font-size:17px;padding:15px 16px;border:2px solid var(--line);
  border-radius:var(--r-s);margin-bottom:12px;font-weight:600;text-align:center;transition:border-color .12s}
.ym-login-card input:focus{outline:none;border-color:var(--navy)}
.ym-login-card .ym-btn{width:100%;margin-top:4px}
.ym-msg{color:var(--fixed);font-size:13.5px;margin-top:12px;min-height:18px;font-weight:600}

/* 진행바 */
.ym-prog{position:sticky;top:66px;z-index:90;background:linear-gradient(135deg,var(--navy-deep),var(--navy));
  color:#fff;border-radius:var(--r);padding:16px 22px;margin:18px 0;display:flex;align-items:center;
  gap:16px;box-shadow:var(--shadow-l);flex-wrap:wrap}
.ym-prog .dept{font-size:18px;font-weight:800}
.ym-prog .dept small{font-size:12.5px;opacity:.75;font-weight:600;margin-left:7px}
.ym-prog .grow{flex:1}
.ym-prog .stat{text-align:center;min-width:64px}
.ym-prog .stat b{font-size:23px;display:block;line-height:1.1;font-weight:900}
.ym-prog .stat b small{font-size:13px;opacity:.6;font-weight:700}
.ym-prog .stat span{font-size:11.5px;opacity:.8;font-weight:600}
.ym-prog .reset{background:rgba(255,255,255,.18);border:none;color:#fff;border-radius:10px;
  padding:12px 16px;min-height:44px;font:inherit;font-weight:800;cursor:pointer;font-size:12.5px}
.ym-saveind{font-size:12.5px;color:var(--mint);font-weight:800;text-align:right;margin:0 2px 12px}

/* 안내/헤딩 */
.ym-h2{font-size:19px;font-weight:900;margin:26px 0 4px;letter-spacing:-.02em}
.ym-lead{color:var(--sub);font-size:14px;margin:0 0 16px}
.ym-gradebadge{display:inline-block;background:var(--sky-soft);color:var(--navy);font-weight:800;
  font-size:13px;padding:5px 13px;border-radius:999px;margin-left:8px;vertical-align:middle}
.ym-panel{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:22px;box-shadow:var(--shadow)}

/* 계열 칩 */
.ym-tracks{display:grid;grid-template-columns:repeat(6,1fr);gap:9px;margin-bottom:16px}
.ym-chip{border:2px solid var(--line);background:#fff;border-radius:var(--r-s);padding:13px 8px;
  font-size:14px;cursor:pointer;font-weight:700;color:var(--sub);text-align:center;transition:.12s}
.ym-chip:hover{border-color:var(--sky);color:var(--navy);transform:translateY(-2px)}
.ym-chip.on{background:linear-gradient(135deg,var(--navy),var(--sky));border-color:transparent;color:#fff;
  box-shadow:0 6px 14px rgba(26,63,212,.28)}

/* 검색 */
.ym-search{position:relative}
.ym-search input{width:100%;font-size:17px;padding:16px 18px 16px 48px;border:2px solid var(--line);
  border-radius:var(--r-s);background:#fff;font-weight:600;transition:border-color .12s}
.ym-search input:focus{outline:none;border-color:var(--navy)}
.ym-search .ic{position:absolute;left:17px;top:50%;transform:translateY(-50%);font-size:19px;opacity:.5}
.ym-results{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1px solid var(--line);
  border-radius:var(--r-s);box-shadow:var(--shadow-l);max-height:330px;overflow-y:auto;z-index:30;display:none}
.ym-results.on{display:block}
.ym-result{padding:14px 18px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;
  border-bottom:1px solid var(--line);font-size:15.5px;font-weight:600}
.ym-result:last-child{border:none}
.ym-result:hover{background:var(--sky-soft)}
.ym-result .tk{font-size:12px;color:var(--sub);font-weight:700;background:var(--bg);padding:3px 10px;border-radius:7px}
.ym-result mark{background:var(--sun);color:inherit;border-radius:3px;padding:0 2px}
.ym-result-none{padding:20px;text-align:center;color:var(--sub);font-size:14px}
.ym-hint{font-size:13.5px;color:var(--sub);margin-top:12px;text-align:center}

/* 탭 */
.ym-tabs{display:flex;gap:10px;margin:18px 0}
.ym-tab{flex:1;padding:15px;border:2px solid var(--line);background:#fff;border-radius:var(--r-s);
  font-size:16px;font-weight:800;cursor:pointer;color:var(--sub);position:relative;transition:.12s}
.ym-tab.on{background:var(--sky-soft);border-color:var(--sky);color:var(--navy)}
.ym-tab .cnt{display:block;font-size:12px;font-weight:700;margin-top:3px;opacity:.85}

/* 범례 */
.ym-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--sub);margin:6px 2px 16px}
.ym-legend span{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.ym-dot{width:13px;height:13px;border-radius:5px;display:inline-block}
.d-core{background:var(--core)} .d-reco{background:var(--reco)} .d-pick{background:var(--pick)} .d-fixed{background:var(--fixed)}

/* 선택군 카드 - 학기 가로 */
.ym-gcard{background:#fff;border:1px solid var(--line);border-radius:var(--r);margin-bottom:16px;
  box-shadow:var(--shadow);overflow:hidden}
.ym-gcard-h{display:flex;align-items:center;gap:11px;padding:16px 20px;flex-wrap:wrap;
  background:linear-gradient(135deg,#fafcff,#fff);border-bottom:1px solid var(--line)}
.ym-gcard-h .g{font-weight:900;font-size:17px}
.ym-gcard-h .rule{font-size:12.5px;color:var(--navy);background:var(--sky-soft);font-weight:800;padding:4px 12px;border-radius:999px}
.ym-gcard-h .cross{font-size:11.5px;color:var(--lock);background:#f1ecfe;font-weight:700;padding:4px 11px;border-radius:999px}
.ym-sems{display:grid;grid-template-columns:1fr 1fr}
.ym-sems.single{grid-template-columns:1fr}
.ym-sem{padding:16px 18px}
.ym-sem+.ym-sem{border-left:1px solid var(--line)}
.ym-sem-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.ym-sem-h .t{font-size:14px;font-weight:800}
.ym-sem-h .st{font-size:12.5px;font-weight:800;padding:5px 12px;border-radius:999px}
.st.left{color:var(--navy);background:var(--sky-soft)}
.st.done{color:#fff;background:var(--mint)}
.ym-opt{border:2px solid var(--line);border-radius:var(--r-s);padding:13px 14px;cursor:pointer;
  font-size:15px;font-weight:700;user-select:none;display:flex;align-items:center;gap:10px;background:#fff;
  margin-bottom:9px;min-height:52px;transition:transform .1s,border-color .1s,background .1s}
.ym-opt:last-child{margin-bottom:0}
.ym-opt:hover{border-color:var(--sky);transform:translateX(2px)}
.ym-opt:active{transform:scale(.99)}
.ym-opt .nm{flex:1}
.ym-opt .note{font-size:11px;font-weight:800;color:var(--fixed);white-space:nowrap}
.ym-opt .meta{font-size:11.5px;color:var(--sub);font-weight:700}
.ym-opt .badge{font-size:11px;font-weight:800;padding:2px 8px;border-radius:7px}
.ym-opt .chk{width:24px;height:24px;border-radius:8px;border:2px solid var(--line);display:grid;
  place-items:center;flex-shrink:0;font-size:14px;color:transparent;transition:.1s}
.ym-opt.core{border-color:var(--core);background:var(--core-bg)} .ym-opt.core .badge{background:var(--core);color:#fff}
.ym-opt.reco{border-color:var(--reco);background:var(--reco-bg)} .ym-opt.reco .badge{background:var(--reco);color:#fff}
.ym-opt.sel{background:linear-gradient(135deg,var(--navy),var(--sky));border-color:transparent;color:#fff;
  box-shadow:0 6px 14px rgba(26,63,212,.26)}
.ym-opt.core.sel{background:linear-gradient(135deg,var(--coral),#ff9e6b)}
.ym-opt.reco.sel{background:linear-gradient(135deg,var(--mint),#4dd9bc)}
.ym-opt.sel .chk{background:#fff;border-color:#fff;color:var(--navy)}
.ym-opt.sel .meta,.ym-opt.sel .note{color:rgba(255,255,255,.9)}
.ym-opt.sel .badge{background:rgba(255,255,255,.92);color:var(--ink)}
.ym-opt.forced{border-color:var(--fixed);background:var(--fixed-bg);color:#b03156;cursor:default}
.ym-opt.forced .chk{background:var(--fixed);border-color:var(--fixed);color:#fff}
.ym-opt.forced .badge{background:var(--fixed);color:#fff}
.ym-opt.disabled{opacity:.4;cursor:not-allowed;background:#f4f6fb;color:var(--sub);text-decoration:line-through}
.ym-sem-empty{color:var(--sub);font-size:13px;padding:20px 0;text-align:center}

/* 관련교과 */
.ym-relbox{background:linear-gradient(135deg,var(--sky-soft),#fff);border:2px solid var(--sky);
  border-radius:var(--r);padding:24px;margin:20px 0 8px;box-shadow:var(--shadow)}
.ym-relbox-h{font-size:18px;font-weight:900;margin-bottom:16px;color:var(--navy)}
.ym-relgroup{margin-bottom:14px} .ym-relgroup:last-child{margin-bottom:0}
.ym-rellbl{font-size:13.5px;font-weight:800;margin-bottom:8px;display:flex;align-items:center;gap:7px}
.ym-rellbl .d{width:12px;height:12px;border-radius:4px}
.rc .ym-rellbl{color:var(--core)} .rc .ym-rellbl .d{background:var(--core)}
.rr .ym-rellbl{color:var(--reco)} .rr .ym-rellbl .d{background:var(--reco)}
.rm .ym-rellbl{color:var(--sub)} .rm .ym-rellbl .d{background:var(--sub)}
.ym-reltags{display:flex;flex-wrap:wrap;gap:7px}
.ym-reltag{font-size:13.5px;font-weight:700;padding:7px 13px;border-radius:10px;border:1.5px solid}
.rc .ym-reltag{background:var(--core-bg);border-color:var(--core);color:#b0421f}
.rr .ym-reltag{background:var(--reco-bg);border-color:var(--reco);color:#0d8a70}
.rm .ym-reltag{background:#f4f6fb;border-color:var(--line);color:var(--sub)}
.ym-relempty{font-size:13.5px;color:var(--sub)}
.ym-relcoop{background:linear-gradient(135deg,#fffdf5,#fff8e6);border:1.5px solid var(--sun);
  border-radius:var(--r-s);padding:14px 16px;margin-top:14px;font-size:13px;color:#8a6d1a;font-weight:600}
.ym-relnote{font-size:12.5px;color:var(--sub);margin-top:14px;padding-top:12px;border-top:1px dashed var(--line);line-height:1.7}

.ym-navbtns{display:flex;gap:12px;margin-top:16px}
.ym-navbtns .ym-btn{flex:1}
.ym-navbtns .ym-btn-ghost{flex:0 0 auto}
.hide{display:none !important}

@media(max-width:720px){
  .ym-hero-grid{grid-template-columns:1fr;text-align:center}
  .ym-hero h1{font-size:32px}
  .ym-cards{grid-template-columns:1fr}
  .ym-tracks{grid-template-columns:repeat(3,1fr)}
  .ym-sems{grid-template-columns:1fr}
  .ym-sem+.ym-sem{border-left:none;border-top:1px solid var(--line)}
}

/* ===== JS 생성 요소 별칭 (기존 클래스명 → 새 디자인) ===== */
.ym-main .tracks{display:grid;grid-template-columns:repeat(6,1fr);gap:9px;margin-bottom:16px}
.ym-main .chip{border:2px solid var(--line);background:#fff;border-radius:var(--r-s);padding:13px 8px;
  font-size:14px;cursor:pointer;font-weight:700;color:var(--sub);text-align:center;transition:.12s}
.ym-main .chip:hover{border-color:var(--sky);color:var(--navy);transform:translateY(-2px)}
.ym-main .chip.on{background:linear-gradient(135deg,var(--navy),var(--sky));border-color:transparent;color:#fff;box-shadow:0 6px 14px rgba(26,63,212,.28)}
.deptsearch{position:relative}
.deptinput{width:100%;font-size:17px;padding:16px 18px 16px 48px;border:2px solid var(--line);border-radius:var(--r-s);
  background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%236b7590' stroke-width='2.2'><circle cx='11' cy='11' r='7'/><path d='M21 21l-4-4'/></svg>") no-repeat 16px center;font-weight:600}
.deptinput:focus{outline:none;border-color:var(--navy)}
.deptresults{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1px solid var(--line);
  border-radius:var(--r-s);box-shadow:var(--shadow-l);max-height:330px;overflow-y:auto;z-index:30;display:none}
.deptresults.on{display:block}
.dept-item{padding:14px 18px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);font-size:15.5px;font-weight:600}
.dept-item:last-child{border:none}
.dept-item:hover{background:var(--sky-soft)}
.dept-item .tk{font-size:12px;color:var(--sub);font-weight:700;background:var(--bg);padding:3px 10px;border-radius:7px}
.dept-item mark{background:var(--sun);border-radius:3px;padding:0 2px}
.dept-none{padding:20px;text-align:center;color:var(--sub);font-size:14px}
.hint{font-size:13.5px;color:var(--sub);margin-top:12px;text-align:center}
.prog{position:sticky;top:66px;z-index:90;background:linear-gradient(135deg,var(--navy-deep),var(--navy));
  color:#fff;border-radius:var(--r);padding:16px 22px;margin:18px 0;display:flex;align-items:center;gap:16px;box-shadow:var(--shadow-l);flex-wrap:wrap}
.prog .dept{font-size:18px;font-weight:800}
.prog .dept small{font-size:12.5px;opacity:.75;font-weight:600;margin-left:7px}
.prog .grow{flex:1}
.prog .stat{text-align:center;min-width:64px}
.prog .stat b{font-size:23px;display:block;line-height:1.1;font-weight:900}
.prog .stat b small{font-size:13px;opacity:.6;font-weight:700}
.prog .stat span{font-size:11.5px;opacity:.8;font-weight:600}
.prog .reset{background:rgba(255,255,255,.18);border:none;color:#fff;border-radius:10px;padding:12px 16px;min-height:44px;font:inherit;font-weight:800;cursor:pointer;font-size:12.5px}
.tabs{display:flex;gap:10px;margin:18px 0}
.tab{flex:1;padding:15px;border:2px solid var(--line);background:#fff;border-radius:var(--r-s);font-size:16px;font-weight:800;cursor:pointer;color:var(--sub);position:relative;transition:.12s}
.tab.on{background:var(--sky-soft);border-color:var(--sky);color:var(--navy)}
.tab .cnt{display:block;font-size:12px;font-weight:700;margin-top:3px;opacity:.85}
.tab .badge{position:absolute;top:-8px;right:-6px;background:var(--coral);color:#fff;font-size:12px;font-weight:800;border-radius:999px;min-width:22px;height:22px;display:grid;place-items:center;padding:0 5px}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--sub);margin:6px 2px 16px}
.legend span{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.dot{width:13px;height:13px;border-radius:5px;display:inline-block}
.gcard{background:#fff;border:1px solid var(--line);border-radius:var(--r);margin-bottom:16px;box-shadow:var(--shadow);overflow:hidden}
.gcard-h{display:flex;align-items:center;gap:11px;padding:16px 20px;flex-wrap:wrap;background:linear-gradient(135deg,#fafcff,#fff);border-bottom:1px solid var(--line)}
.gcard-h .g{font-weight:900;font-size:17px}
.gcard-h .rule{font-size:12.5px;color:var(--navy);background:var(--sky-soft);font-weight:800;padding:4px 12px;border-radius:999px}
.gcard-h .cross{font-size:11.5px;color:var(--lock);background:#f1ecfe;font-weight:700;padding:4px 11px;border-radius:999px}
.sems{display:grid;grid-template-columns:1fr 1fr}
.sems.single{grid-template-columns:1fr}
.sem{padding:16px 18px}
.sem+.sem{border-left:1px solid var(--line)}
.sem-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.sem-h .t{font-size:14px;font-weight:800}
.sem-h .st{font-size:12.5px;font-weight:800;padding:5px 12px;border-radius:999px}
.sem-empty{color:var(--sub);font-size:13px;padding:20px 0;text-align:center}
.optlist .opt{border:2px solid var(--line);border-radius:var(--r-s);padding:13px 14px;cursor:pointer;font-size:15px;font-weight:700;user-select:none;display:flex;align-items:center;gap:10px;background:#fff;margin-bottom:9px;min-height:52px;transition:transform .1s,border-color .1s,background .1s}
.optlist .opt:last-child{margin-bottom:0}
.optlist .opt:hover{border-color:var(--sky);transform:translateX(2px)}
.opt .nm{flex:1}
.opt .note{font-size:11px;font-weight:800;color:var(--fixed);white-space:nowrap}
.opt .meta{font-size:11.5px;color:var(--sub);font-weight:700}
.opt .badge{font-size:11px;font-weight:800;padding:2px 8px;border-radius:7px}
.opt .chk{width:24px;height:24px;border-radius:8px;border:2px solid var(--line);display:grid;place-items:center;flex-shrink:0;font-size:14px;color:transparent;transition:.1s}
.opt.core{border-color:var(--core);background:var(--core-bg)} .opt.core .badge{background:var(--core);color:#fff}
.opt.reco{border-color:var(--reco);background:var(--reco-bg)} .opt.reco .badge{background:var(--reco);color:#fff}
.opt.sel{background:linear-gradient(135deg,var(--navy),var(--sky));border-color:transparent;color:#fff;box-shadow:0 6px 14px rgba(26,63,212,.26)}
.opt.core.sel{background:linear-gradient(135deg,var(--coral),#ff9e6b)}
.opt.reco.sel{background:linear-gradient(135deg,var(--mint),#4dd9bc)}
.opt.sel .chk{background:#fff;border-color:#fff;color:var(--navy)}
.opt.sel .meta,.opt.sel .note{color:rgba(255,255,255,.9)}
.opt.sel .badge{background:rgba(255,255,255,.92);color:var(--ink)}
.opt.forced{border-color:var(--fixed);background:var(--fixed-bg);color:#b03156;cursor:default}
.opt.forced .chk{background:var(--fixed);border-color:var(--fixed);color:#fff}
.opt.forced .badge{background:var(--fixed);color:#fff}
.opt.disabled{opacity:.4;cursor:not-allowed;background:#f4f6fb;color:var(--sub);text-decoration:line-through}
.relbox{background:linear-gradient(135deg,var(--sky-soft),#fff);border:2px solid var(--sky);border-radius:var(--r);padding:24px;margin:20px 0 8px;box-shadow:var(--shadow)}
.relbox-h{font-size:18px;font-weight:900;margin-bottom:16px;color:var(--navy)}
.relgroup{margin-bottom:14px} .relgroup:last-child{margin-bottom:0}
.relgroup .lbl{font-size:13.5px;font-weight:800;margin-bottom:8px;display:flex;align-items:center;gap:7px}
.relgroup .lbl .d{width:12px;height:12px;border-radius:4px}
.rel-core .lbl{color:var(--core)} .rel-core .lbl .d{background:var(--core)}
.rel-reco .lbl{color:var(--reco)} .rel-reco .lbl .d{background:var(--reco)}
.rel-miss .lbl{color:var(--sub)} .rel-miss .lbl .d{background:var(--sub)}
.reltags{display:flex;flex-wrap:wrap;gap:7px}
.reltag{font-size:13.5px;font-weight:700;padding:7px 13px;border-radius:10px;border:1.5px solid}
.rel-core .reltag{background:var(--core-bg);border-color:var(--core);color:#b0421f}
.rel-reco .reltag{background:var(--reco-bg);border-color:var(--reco);color:#0d8a70}
.rel-miss .reltag{background:#f4f6fb;border-color:var(--line);color:var(--sub)}
.relempty{font-size:13.5px;color:var(--sub)}
.coop{background:linear-gradient(135deg,#fffdf5,#fff8e6);border:1.5px solid var(--sun);border-radius:var(--r-s);padding:14px 16px;margin-top:14px;font-size:13px;color:#8a6d1a;font-weight:600}
.relnote{font-size:12.5px;color:var(--sub);margin-top:14px;padding-top:12px;border-top:1px dashed var(--line);line-height:1.7}
.applybar{border-radius:var(--r-s);padding:12px 16px;font-weight:800;font-size:14px;margin:14px 0}
.applybar.open{background:var(--mint-soft);color:#0d8a70;border:2px solid var(--mint)}
.applybar.closed{background:var(--fixed-bg);color:#c02f56;border:2px solid var(--fixed)}
.applybar small{font-weight:600;opacity:.8}
@media(max-width:720px){
  .ym-main .tracks{grid-template-columns:repeat(3,1fr)}
  .sems{grid-template-columns:1fr}
  .sem+.sem{border-left:none;border-top:1px solid var(--line)}
}

/* PDF 인쇄 */
#printArea{display:none}
.sheet{font-family:'Pretendard','Malgun Gothic',sans-serif;color:#111;padding:8mm 4mm}
.sheet h1{font-size:20px;margin:0 0 2px}
.sheet .sub{font-size:12px;color:#555;margin-bottom:14px}
.sheet .meta{display:flex;flex-wrap:wrap;gap:6px 20px;font-size:13px;margin-bottom:16px;border:1px solid #ccc;border-radius:8px;padding:12px 14px}
.sheet .meta b{color:#111}.sheet .meta div{min-width:110px}
.sheet h2{font-size:14px;margin:16px 0 8px;padding-bottom:4px;border-bottom:2px solid #333}
.sheet table{width:100%;border-collapse:collapse;font-size:12.5px;margin-bottom:6px}
.sheet th,.sheet td{border:1px solid #bbb;padding:6px 8px;text-align:left}
.sheet th{background:#f0f2f5;font-weight:700}.sheet td.c{text-align:center;white-space:nowrap}
.sheet .tot{font-size:14px;font-weight:800;margin-top:10px;text-align:right}
.sheet .lockrow td{background:#f6f2ff}.sheet .reltbl th{width:110px;background:#f0f2f5}
.sheet i{color:#c0392b;font-style:normal;font-size:11px}
.sheet .foot{margin-top:20px;font-size:10.5px;color:#888;border-top:1px solid #ddd;padding-top:8px;line-height:1.6}
@media print{
  .ym-topbar,.ym-footer,#loginBox,#appArea{display:none !important}
  #printArea{display:block !important}
  html,body{height:auto !important;background:#fff !important}
  @page{size:A4;margin:12mm}
}

/* ===== 관리자 로그인 페이지 ===== */
.ym-loginpage{min-height:70vh;display:grid;place-items:center;padding:40px 20px}
.ym-loginpage-card{background:#fff;border-radius:24px;padding:40px 34px;max-width:400px;width:100%;
  box-shadow:0 20px 50px rgba(26,63,212,.14);border:1px solid var(--line);text-align:center}
.ym-loginpage-badge{width:56px;height:56px;border-radius:16px;margin:0 auto 16px;
  background:linear-gradient(135deg,var(--navy),var(--sky));color:#fff;display:grid;place-items:center;
  font-weight:900;font-size:17px;box-shadow:0 8px 18px rgba(26,63,212,.3)}
.ym-loginpage-card h1{font-size:23px;margin:0 0 8px;font-weight:900;letter-spacing:-.02em}
.ym-loginpage-card .sub{color:var(--sub);font-size:14px;margin:0 0 26px;line-height:1.7}
.ym-loginpage-card .sub a{color:var(--navy);font-weight:800;text-decoration:none}
.ym-loginpage-card .sub a:hover{text-decoration:underline}
.ym-field{text-align:left;margin-bottom:14px}
.ym-field label{display:block;font-size:12.5px;font-weight:800;color:var(--sub);margin-bottom:6px;padding-left:2px}
.ym-field input{width:100%;font-size:16px;padding:14px 16px;border:2px solid var(--line);
  border-radius:var(--r-s);font-weight:600;transition:border-color .12s;background:#fbfcff}
.ym-field input:focus{outline:none;border-color:var(--navy);background:#fff}
.ym-login-submit{width:100%;margin-top:8px}
.ym-loginpage-foot{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.ym-loginpage-foot a{color:var(--sub);font-size:13.5px;font-weight:700;text-decoration:none}
.ym-loginpage-foot a:hover{color:var(--navy)}

/* 상단 관리자 도구 */
.ym-adminbtns{display:flex;align-items:center;gap:8px}
.ym-iconbtn{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:8px 14px;border-radius:999px;
  font-size:13px;font-weight:800;text-decoration:none;transition:.12s;border:none;cursor:pointer;font-family:inherit}
.ym-iconbtn.admin{background:linear-gradient(135deg,var(--navy),var(--sky));color:#fff;
  box-shadow:0 4px 12px rgba(26,63,212,.26)}
.ym-iconbtn.admin:hover{transform:translateY(-1px);box-shadow:0 7px 16px rgba(26,63,212,.34)}
.ym-iconbtn.logout{background:var(--bg);color:var(--sub);border:1.5px solid var(--line)}
.ym-iconbtn.logout:hover{border-color:var(--fixed);color:var(--fixed)}
.ym-iconbtn svg{width:15px;height:15px}

/* 푸터 로그인 링크 */
.ym-footer-in a.ym-adminlink{color:#fff;text-decoration:none;border-bottom:1px dotted rgba(255,255,255,.4)}
.ym-footer-in a.ym-adminlink:hover{border-bottom-style:solid}

@media(max-width:480px){
  .ym-iconbtn{padding:8px 11px;font-size:12px}
  .ym-iconbtn .lbl{display:none}
  .ym-loginpage-card{padding:32px 24px}
}

/* 로그인 페이지: 그누보드 기본 레이아웃 요소 정리 */
body:has(.ym-loginpage){background:var(--bg)}
.ym-loginpage ~ #ft, .ym-loginpage ~ #hd{display:none}
#mb_login, .mbskin{display:none}

/* ===== 아이콘 표시 규격 ===== */
svg{display:block;flex-shrink:0}
/* 스텝 카드 아이콘 */
.ym-card .ic svg{width:28px;height:28px;stroke-width:1.7}
.ym-card:nth-child(1) .ic svg{color:var(--sky)}
.ym-card:nth-child(2) .ic svg{color:var(--coral)}
.ym-card:nth-child(3) .ic svg{color:var(--mint)}
/* 신청기간 배너 */
.ym-applybar{display:inline-flex;align-items:center;gap:9px}
.ym-applybar svg{width:19px;height:19px}
.applybar{display:flex;align-items:center;gap:9px}
.applybar svg{width:18px;height:18px;flex-shrink:0}
/* 안내 박스 */
.ym-coop{display:flex;align-items:flex-start;gap:11px}
.ym-coop svg{width:21px;height:21px;color:var(--sun);margin-top:1px}
.coop{display:flex;align-items:flex-start;gap:10px}
.coop svg{width:18px;height:18px;color:#c9a227;margin-top:1px}
/* 상단 관리자 버튼 */
.ym-iconbtn svg{width:16px;height:16px;stroke-width:2}
/* 학생 로그인 카드 */
.ym-login-emoji{display:grid;place-items:center;margin-bottom:14px}
.ym-login-emoji svg{width:46px;height:46px;color:var(--navy);stroke-width:1.6}
/* 관리자 로그인 배지 */
.ym-loginpage-badge svg{width:28px;height:28px;stroke-width:1.9}
