/* 수시 고사일정 보드 — 공개 페이지(/schedule)와 프로그램 안 「입시일정 캘린더」 탭이 같이 쓰는 옷 (2026-09-06).
   전부 .sv 아래에만 걸고 색을 직접 칠한다 — 원장님 화면은 어두운 테마라 바깥 토큰을 빌리면 뒤집힌다. */
.sv { --sv-navy:#0a1230; --sv-navy2:#1a2340; --sv-gold:#b1883d; --sv-gold-lite:#d7b46a; --sv-field:#EFF1F8; --sv-line:#dfe4ee; --sv-text:#10213d; --sv-muted:#6f7d91; --sv-card:#fff; --sv-safe:#16866e; --sv-warn:#a86a12; --sv-purple:#6b46c1; --sv-blue:#1f3b8f;
  color:var(--sv-text); font-family:'Noto Sans KR',system-ui,sans-serif; font-size:15px; line-height:1.6; }
.sv * { box-sizing:border-box; }
.sv .sv-common { display:flex; gap:8px; flex-wrap:wrap; margin-top:14px; }
.sv .sv-common .c { flex:1 1 150px; background:rgba(255,255,255,.07); border:1px solid rgba(215,180,106,.35); border-radius:12px; padding:9px 12px; }
.sv .sv-common .c small { display:block; font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.1em; color:var(--sv-gold-lite); }
.sv .sv-common .c b { display:block; font-size:15px; color:#fff; margin:2px 0; }
.sv .sv-common .c span { font-size:11.5px; color:#c9d2ea; }
.sv .sv-common.light .c { background:#fff; border-color:var(--sv-line); }
.sv .sv-common.light .c small { color:var(--sv-gold); } .sv .sv-common.light .c b { color:var(--sv-text); } .sv .sv-common.light .c span { color:var(--sv-muted); }
.sv .sv-tools { background:var(--sv-card); border:1px solid var(--sv-line); border-radius:16px; padding:14px; margin-top:14px; box-shadow:0 1px 2px rgba(16,24,40,.04); position:sticky; top:8px; z-index:5; }
.sv .sv-tools.flat { position:static; margin-top:10px; }
.sv .sv-row { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.sv .sv-row + .sv-row { margin-top:8px; }
.sv .sv-search { flex:1 1 200px; min-width:0; border:1px solid var(--sv-line); border-radius:10px; padding:10px 12px; font-size:15px; outline:0; background:#fff; color:var(--sv-text); }
.sv .sv-search:focus { border-color:var(--sv-gold); box-shadow:0 0 0 3px rgba(177,136,61,.18); }
.sv .sv-chip { border:1px solid var(--sv-line); background:#fff; border-radius:999px; padding:7px 13px; font-size:13px; cursor:pointer; color:var(--sv-text); font-weight:600; user-select:none; line-height:1.3; }
.sv .sv-chip.on { background:var(--sv-navy); color:#fff; border-color:var(--sv-navy); }
.sv select.sv-chip { padding:6px 10px; }
.sv .sv-lbl { font-size:11px; color:var(--sv-muted); font-weight:800; letter-spacing:.06em; margin-right:2px; }
.sv .sv-grp .sv-lbl { flex:0 0 34px; }
.sv .sv-grp { padding-top:8px; border-top:1px dashed var(--sv-line); }
.sv .sv-row + .sv-grp { margin-top:8px; }
.sv .sv-count { margin-left:auto; font-size:12.5px; color:var(--sv-muted); }
.sv .sv-sec { margin-top:22px; }
.sv .sv-sec h2 { font-size:13px; letter-spacing:.12em; color:var(--sv-muted); font-family:'IBM Plex Mono',monospace; margin:0 0 10px; font-weight:700; }
.sv .sv-sec h2 em { font-style:normal; color:var(--sv-gold); }
/* 타임라인 */
.sv .sv-tl { display:flex; gap:10px; overflow-x:auto; padding:4px 2px 10px; scroll-snap-type:x proximity; }
.sv .sv-day { flex:0 0 auto; min-width:128px; max-width:200px; background:var(--sv-card); border:1px solid var(--sv-line); border-radius:14px; padding:10px; scroll-snap-align:start; }
.sv .sv-day.mark { background:var(--sv-navy); color:#fff; border-color:var(--sv-navy); min-width:72px; text-align:center; }
.sv .sv-day .d { font-family:'IBM Plex Mono',monospace; font-size:12px; font-weight:700; color:var(--sv-gold); white-space:nowrap; }
.sv .sv-day .d small { color:var(--sv-muted); font-weight:500; margin-left:4px; }
.sv .sv-day.mark .d { color:var(--sv-gold-lite); }
.sv .sv-day .n { font-size:10.5px; color:var(--sv-muted); margin-top:2px; }
.sv .sv-day.mark .n { color:#c9d2ea; }
.sv .sv-day button { display:block; width:100%; text-align:left; margin-top:6px; border:1px solid var(--sv-line); background:#fff; border-radius:8px; padding:6px 8px; font-size:13px; font-weight:700; color:var(--sv-text); cursor:pointer; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-family:inherit; line-height:1.4; }
.sv .sv-day button:hover { border-color:var(--sv-gold); }
.sv .sv-day button.fav { border-color:var(--sv-gold); background:#fffaf0; }
.sv .sv-day .more { font-size:11.5px; color:var(--sv-blue); font-weight:800; margin-top:6px; cursor:pointer; background:none; border:0; padding:0; width:auto; }
.sv .tk { display:inline-block; font-size:10px; font-weight:900; padding:1px 5px; border-radius:5px; margin-right:5px; vertical-align:1px; background:var(--sv-field); color:var(--sv-navy2); }
.sv .tk.논술 { background:#efe9fb; color:var(--sv-purple); } .sv .tk.면접 { background:#e9eefb; color:var(--sv-blue); } .sv .tk.실기 { background:#e6f6f1; color:var(--sv-safe); }
/* 카드 — 첫 고사일 순, 달마다 구분줄 */
.sv .sv-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:12px; }
.sv .sv-month { grid-column:1 / -1; display:flex; align-items:baseline; gap:10px; margin:6px 0 -2px; padding-top:8px; border-top:2px solid var(--sv-gold-lite); }
.sv .sv-month b { font-family:'Noto Serif KR',serif; font-size:19px; color:var(--sv-navy); letter-spacing:-.02em; }
.sv .sv-month span { font-size:12px; color:var(--sv-muted); }
.sv .sv-card { background:var(--sv-card); border:1px solid var(--sv-line); border-radius:16px; padding:14px 16px; cursor:pointer; box-shadow:0 1px 2px rgba(16,24,40,.04); transition:transform .12s, box-shadow .12s; min-width:0; position:relative; }
.sv .sv-card:hover { transform:translateY(-2px); box-shadow:0 10px 26px rgba(16,24,40,.09); border-color:var(--sv-gold-lite); }
.sv .sv-card.fav { border-color:var(--sv-gold); box-shadow:inset 0 0 0 1px var(--sv-gold-lite); }
.sv .sv-card h3 { margin:0; font-size:18px; letter-spacing:-.02em; display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding-right:96px; color:var(--sv-text); font-weight:800; }
.sv .sv-card h3 .rg { font-size:11.5px; color:var(--sv-muted); font-weight:600; }
.sv .sv-first { position:absolute; top:12px; right:12px; text-align:right; }
.sv .sv-first small { display:block; font-size:10px; letter-spacing:.08em; color:var(--sv-muted); font-weight:800; }
.sv .sv-first b { display:block; font-family:'IBM Plex Mono',monospace; font-size:15px; color:var(--sv-gold); font-weight:700; line-height:1.2; }
.sv .sv-tags { display:flex; gap:5px; flex-wrap:wrap; margin:6px 0 8px; }
.sv .sv-tag { font-size:11px; font-weight:800; border-radius:6px; padding:2px 7px; background:var(--sv-field); color:var(--sv-navy2); }
.sv .sv-tag.pre { background:#fff4db; color:#8a5a00; }
.sv .sv-tag.fav { background:#fff4db; color:#8a5a00; }
.sv .sv-tag.논술 { background:#efe9fb; color:var(--sv-purple); } .sv .sv-tag.면접 { background:#e9eefb; color:var(--sv-blue); } .sv .sv-tag.실기 { background:#e6f6f1; color:var(--sv-safe); }
.sv .sv-lines { font-size:13px; margin:0; }
.sv .sv-lines div { display:flex; gap:8px; align-items:baseline; min-width:0; }
.sv .sv-lines .dt { font-family:'IBM Plex Mono',monospace; font-size:12px; font-weight:700; color:var(--sv-navy2); white-space:nowrap; min-width:64px; }
.sv .sv-lines .ad { color:var(--sv-text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sv .sv-lines .rest { color:var(--sv-muted); font-size:12px; }
.sv .sv-apply { margin-top:8px; font-size:12px; color:var(--sv-muted); }
.sv .sv-empty { padding:30px; text-align:center; color:var(--sv-muted); background:var(--sv-card); border:1px dashed var(--sv-line); border-radius:14px; }
/* 상세창 */
.sv-modal { position:fixed; inset:0; background:rgba(10,18,48,.55); display:none; align-items:flex-start; justify-content:center; padding:16px; overflow:auto; z-index:1000; font-family:'Noto Sans KR',system-ui,sans-serif; color:#10213d; }
.sv-modal.open { display:flex; }
.sv-modal * { box-sizing:border-box; }
.sv-modal .sheet { background:#fff; border-radius:18px; max-width:860px; width:100%; margin:10px auto 40px; box-shadow:0 30px 80px rgba(0,0,0,.35); overflow:hidden; }
.sv-modal .sh-head { background:linear-gradient(135deg,#0a1230,#1a2a5e); color:#fff; padding:18px 20px; display:flex; align-items:flex-start; gap:12px; }
.sv-modal .sh-head h2 { margin:0; font-family:'Noto Serif KR',serif; font-size:24px; flex:1; letter-spacing:-.02em; color:#fff; }
.sv-modal .sh-head .rg { color:#d7b46a; font-size:13px; font-weight:600; }
.sv-modal .close { background:rgba(255,255,255,.14); color:#fff; border:0; border-radius:10px; padding:8px 14px; font-weight:800; cursor:pointer; font-family:inherit; }
.sv-modal .sh-body { padding:16px 20px 24px; font-size:15px; line-height:1.6; }
.sv-modal .blk { border:1px solid #dfe4ee; border-radius:12px; padding:12px 14px; margin-bottom:12px; }
.sv-modal .blk > b { display:block; font-size:11px; font-weight:900; letter-spacing:.06em; color:#6f7d91; margin-bottom:8px; }
.sv-modal table { width:100%; min-width:640px; border-collapse:collapse; font-size:13px; }
.sv-modal th, .sv-modal td { text-align:left; padding:7px 10px; border-bottom:1px solid #dfe4ee; border-right:1px solid #dfe4ee; vertical-align:top; color:#10213d; }
.sv-modal th:last-child, .sv-modal td:last-child { border-right:0; }
.sv-modal th:first-child, .sv-modal td:first-child { position:sticky; left:0; background:#fff; z-index:1; }
.sv-modal td.ad { white-space:nowrap; font-weight:600; }
.sv-modal td.un { min-width:220px; max-width:380px; font-size:12.5px; }
.sv-modal td.un .units { display:flex; flex-wrap:wrap; gap:3px 10px; }
.sv-modal td.un .units span { white-space:nowrap; }
.sv-modal th { color:#6f7d91; font-weight:700; font-size:12px; white-space:nowrap; background:none; }
.sv-modal td.dt { font-family:'IBM Plex Mono',monospace; font-weight:700; white-space:nowrap; color:#1a2340; }
.sv-modal .tbl-wrap { overflow-x:auto; }
.sv-modal .btns { display:flex; gap:8px; flex-wrap:wrap; }
.sv-modal .btn { display:inline-block; border:1px solid #dfe4ee; border-radius:10px; padding:9px 13px; font-size:13px; font-weight:800; color:#1a2340; text-decoration:none; background:#fff; }
.sv-modal .btn.purple { background:#6b46c1; color:#fff; border-color:#6b46c1; }
.sv-modal .btn.ghost { color:#6f7d91; }
.sv-modal .quote { font-family:'Noto Serif KR',serif; font-size:13px; line-height:1.75; color:#10213d; background:#f6f8fb; border-left:3px solid #b1883d; border-radius:8px; padding:8px 12px; margin:6px 0 0; }
.sv-modal details.more summary { cursor:pointer; font-size:12.5px; font-weight:800; color:#3566f0; }
.sv-modal .src { font-size:11px; color:#6f7d91; margin-top:6px; }
.sv-modal .tk { display:inline-block; font-size:10px; font-weight:900; padding:1px 5px; border-radius:5px; margin-right:5px; vertical-align:1px; background:#EFF1F8; color:#1a2340; }
.sv-modal .tk.논술 { background:#efe9fb; color:#6b46c1; } .sv-modal .tk.면접 { background:#e9eefb; color:#1f3b8f; } .sv-modal .tk.실기 { background:#e6f6f1; color:#16866e; }
/* ── 대학 위치 지도 (univ-map.js 결과지 모드) — 색은 직접 칠한다 (2026-09-07) ── */
.sv .sv-map { background:var(--sv-card); border:1px solid var(--sv-line); border-radius:16px; padding:14px; }
.sv .um-wrap { display:grid; grid-template-columns:minmax(0,340px) 1fr; gap:18px; align-items:start; }
.sv .sv-mapsec { margin-top:14px; }
.sv .um-svg { width:100%; max-width:360px; height:auto; display:block; }
.sv .um-sido { fill:#eef2f8; stroke:#cfdaea; stroke-width:.8; }
.sv .um-sidoname { fill:#43506b; font-weight:700; text-anchor:middle; pointer-events:none; paint-order:stroke; stroke:#fff; stroke-linejoin:round; opacity:.9; font-family:inherit; }
.sv .um-mapbox { position:relative; }
.sv .um-back { position:absolute; left:8px; top:8px; z-index:2; border:1px solid var(--sv-line); background:#fff; color:var(--sv-text); border-radius:99px; padding:4px 11px; font-size:11.5px; font-weight:700; cursor:pointer; font-family:inherit; }
.sv .um-legend { display:flex; gap:14px; flex-wrap:wrap; font-size:11.5px; color:var(--sv-muted); margin:6px 0; font-weight:700; }
.sv .um-lg { display:inline-flex; align-items:center; gap:5px; }
.sv .um-lg i { width:11px; height:11px; border-radius:50%; display:inline-block; }
.sv .um-side { min-width:0; }
.sv .um-note { font-size:11.5px; color:var(--sv-muted); line-height:1.7; margin-top:8px; }
.sv .um-note .muted { color:var(--sv-muted); }
.sv .umr-list { display:grid; gap:8px; max-height:400px; overflow:auto; padding-right:4px; }
.sv .umr-region { border:1px solid var(--sv-line); border-radius:10px; padding:9px 12px; background:#fff; }
.sv .umr-head { display:flex; justify-content:space-between; align-items:baseline; font-size:13px; margin-bottom:4px; color:var(--sv-text); }
.sv .umr-head span { font-size:11.5px; color:var(--sv-muted); font-weight:700; }
.sv .umr-row { display:flex; gap:6px; align-items:baseline; flex-wrap:wrap; font-size:12.5px; padding:3px 0; border-radius:6px; }
.sv .umr-row:hover { background:rgba(53,102,240,.07); }
.sv .umr-row b { color:var(--sv-text); }
.sv .umr-row span { color:var(--sv-muted); font-size:11.5px; }
.sv .umr-tag { font-style:normal; font-size:10px; font-weight:800; padding:1px 6px; border-radius:4px; flex:none; background:#EFF1F8; color:#1a2340; }
.sv .umr-tag.논술 { background:#efe9fb; color:#6b46c1; } .sv .umr-tag.면접 { background:#e9eefb; color:#1f3b8f; } .sv .umr-tag.실기 { background:#e6f6f1; color:#16866e; }
.sv .umr-dot.hot { stroke:#10213d !important; filter:drop-shadow(0 0 2.5px rgba(16,33,61,.65)); }
.sv .muted { color:var(--sv-muted); } .sv .spin { display:inline-block; width:10px; height:10px; border:2px solid #cfdaea; border-top-color:var(--sv-gold); border-radius:50%; animation:svspin .8s linear infinite; vertical-align:-1px; margin-right:4px; }
@keyframes svspin { to { transform:rotate(360deg); } }
@media (max-width:700px) { .sv .um-wrap { display:flex; flex-direction:column; } .sv .um-svg { max-width:300px; margin:0 auto; } .sv .umr-list { max-height:260px; } }
@media (max-width:640px) { .sv .sv-card h3 { font-size:17px; padding-right:84px; } .sv-modal .sh-body { padding:12px 14px 20px; } .sv .sv-common .c { flex-basis:100%; } }
@media print { .sv .sv-tools, .sv .sv-tl, .sv-modal, .sv .um-back { display:none !important; } .sv .sv-card { break-inside:avoid; } }
