:root{
  --bg:#f4f7fb;
  --card:#ffffff;
  --line:#dbe4ee;
  --text:#0f172a;
  --muted:#64748b;
  --navy:#071a3f;
  --chip:#eef4ff;
  --danger:#ffe8e8;
  --danger-line:#f4b1b1;
  --ok:#e9f8ec;
  --ok-line:#a9dfb1;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Pretendard","Noto Sans KR",sans-serif}
.wrap{max-width:1440px;margin:24px auto;padding:0 16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:28px;padding:24px}
.adminModeCard{background:linear-gradient(180deg,#fff0ef 0%,#fff 38%);border-color:#eeb9b2;box-shadow:0 12px 30px rgba(166,41,41,.08)}
.section{margin-top:16px}
.notice{padding:16px 18px;border-radius:18px;margin-bottom:16px;font-weight:600}
.notice.ok{background:var(--ok);border:1px solid var(--ok-line);color:#176438}
.notice.err{background:var(--danger);border:1px solid var(--danger-line);color:#a62929}
.notice.loading{background:#eef4ff;border:1px solid #cbdcfb;color:#1746a2}
.heroTop{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
h1{font-size:56px;line-height:1.06;margin:0 0 8px 0;font-weight:900;letter-spacing:-0.04em}
.muted{color:var(--muted)}
.adminModeSubtitle{color:#925555}
.chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.chip{padding:10px 14px;border-radius:999px;background:var(--chip);color:#2757d9;font-weight:800;font-size:14px}
.adminChip{background:#fff0ee;color:#b14242;border:1px solid #f1c7c3}
.gear{width:56px;height:56px;border-radius:20px;border:1px solid var(--line);background:#fff;font-size:28px;cursor:pointer;color:var(--text);display:inline-flex;align-items:center;justify-content:center}
.controls{display:grid;grid-template-columns:1fr 1fr 1fr 1fr auto;gap:14px;margin-top:18px}
.adminControlHint{min-height:62px;display:flex;align-items:center;padding:0 18px;border:1px dashed #efc1bd;border-radius:18px;background:#fff4f2;color:#9b5353;font-weight:700}
select,input,button{font:inherit}
select,input{height:62px;border-radius:18px;border:1px solid var(--line);padding:0 18px;background:#fff}
button.primary{height:62px;border:none;border-radius:18px;background:var(--navy);color:#fff;font-weight:800;padding:0 28px;cursor:pointer}
button.ghost{height:50px;border:1px solid var(--line);background:#fff;border-radius:16px;padding:0 18px;cursor:pointer;color:var(--text);font-weight:700}
.map{height:540px;border-radius:26px;overflow:hidden;border:1px solid var(--line);background:#eef2f7}
.panel h2{margin:0 0 12px 0;font-size:26px}
.list{display:flex;flex-direction:column;gap:14px;max-height:680px;overflow:auto;padding-right:6px}
.runBlock{padding:18px;border:1px solid var(--line);border-radius:22px;background:#fff}
.runHeader{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:6px}
.runHeaderActions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;align-items:center}
.runTitle{font-weight:900;font-size:30px;letter-spacing:-0.03em}
.small{font-size:14px}
.routeRow{display:grid;grid-template-columns:100px 1.3fr 1fr auto;gap:16px;padding:14px 10px;border-top:1px solid #edf2f7;align-items:center}
.routeRow:first-of-type{border-top:none}
.time{font-size:38px;font-weight:900;letter-spacing:-0.04em}
.loc{font-size:26px;font-weight:800;letter-spacing:-0.03em}
.meta{font-size:18px;color:var(--muted)}
.academyRow{background:#f8fbff}
.searchRow{display:grid;grid-template-columns:1fr auto;gap:12px;margin-bottom:14px}
.publicSearchRow{grid-template-columns:1fr auto auto}
.driverSearchRow{grid-template-columns:1fr auto auto}
.adminSearchRow{grid-template-columns:1fr}
.adminHeader{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}
.adminHeaderActions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}
.adminMapSection{margin:0 0 18px}
.adminEditor{padding:18px;border:1px solid var(--line);border-radius:22px;background:#fff;margin-bottom:14px}
.adminEditorHeader{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}
.adminEditorHeader h3{margin:0;font-size:24px}
.adminFormGrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.adminActionRow{display:flex;justify-content:flex-end;gap:12px;margin-top:12px}
.adminListActions{display:flex;justify-content:flex-end;margin-top:12px}
.adminEditor .muted code,.notice code{background:#eff6ff;padding:2px 6px;border-radius:8px}
.rowActions{display:flex;justify-content:flex-end}
.rowCard{padding:16px 18px;border:1px solid var(--line);border-radius:18px;background:#fff}
.adminTabs{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 18px}
.adminTabBtn.active{background:var(--navy);border-color:var(--navy);color:#fff}
.adminRouteFilters{display:grid;grid-template-columns:minmax(260px,1fr) 180px 180px;gap:12px;margin:0 0 14px}
.adminRouteScope{margin:0 0 14px;padding:12px 14px;border-radius:14px;background:#fff5f4;border:1px solid #f0cdc8;color:#8d4c4c;font-weight:700}
.adminCounts{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 14px}
.adminCountChip{padding:9px 14px;border-radius:999px;background:#fff5f4;border:1px solid #f3d4d1;color:#8f4e4e;font-size:14px;font-weight:700}
.adminCountChip.active{background:#ffe8e8;border-color:#e9b1b1;color:#9f2323}
.adminTableWrap{overflow:auto;border:1px solid var(--line);border-radius:22px;background:#fff}
.adminTable{width:100%;min-width:1180px;border-collapse:separate;border-spacing:0}
.adminTable th,.adminTable td{padding:10px;border-bottom:1px solid #edf2f7;text-align:left;vertical-align:middle}
.adminTable th{position:sticky;top:0;background:#f8fbff;font-size:13px;font-weight:800;color:#475569;z-index:1}
.adminTable input,.adminTable select{width:100%;min-width:110px;height:46px;border-radius:12px}
.adminTable .compact{height:44px;padding:0 14px;border-radius:12px}
.actionCell{white-space:nowrap}
.actionButtons{display:flex;align-items:center;gap:8px}
.actionButtons .active{background:#fff1ef;border-color:#efb7ae;color:#8d3a34}
button.pickPlaceCoordsBtn{min-width:98px}
tr.selectedPlaceRow td{background:#fff6f4}
tr.selectedPlaceRow td:first-child{box-shadow:inset 4px 0 0 #d86a5b}
tr.selectedPlaceRow input,tr.selectedPlaceRow select{border-color:#efb7ae;background:#fffdfc}
button.ghost.danger{border-color:var(--danger-line);background:var(--danger);color:#a62929}
.adminAddRow td{background:#fcfdff}
.emptyCell{text-align:center;color:var(--muted);padding:22px}
.adminEmptyNotice{margin:12px 0 14px;padding:14px 16px;border-radius:16px;background:#fff3f2;border:1px solid #efc4c1;color:#9d4141;font-weight:700}
.pickHint{margin-bottom:12px;color:#2757d9;font-weight:700}
.pickHintStrong{padding:12px 14px;border-radius:14px;background:#f7fbff;border:1px dashed #c6dbff}
.adminAddPanel{margin-top:0}
.adminPlaceAddHint{margin:2px 0 14px;padding:14px 16px;border-radius:16px;background:#fff7f6;border:1px solid #f1cfcb;color:#8f4e4e;font-weight:700}
.adminActionRowTop{margin:0 0 14px}
.printSheet{display:none}
.modalBg{position:fixed;inset:0;background:rgba(15,23,42,.38);display:flex;align-items:center;justify-content:center;padding:16px;z-index:2000}
.modal{width:min(560px,100%);background:#fff;border-radius:24px;padding:24px;border:1px solid var(--line)}
.modal h3{margin:0;font-size:28px}
.kakaoInfo{padding:10px;min-width:220px;font-size:12px;line-height:1.65}
@media print{
  body{background:#fff}
  .wrap{max-width:none;margin:0;padding:0}
  .card,.notice,.gear,.controls,.searchRow,.modalBg,.map,.section{display:none !important}
  .printSheet{display:block}
  .printHead{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;padding-bottom:12px;border-bottom:2px solid #0f172a}
  .printTitle{font-size:30px;font-weight:900;letter-spacing:-0.03em}
  .printMeta{font-size:14px;color:#475569}
  .printSummary{margin:12px 0 18px;font-size:15px;font-weight:700}
  .printRun{margin-bottom:20px;break-inside:avoid}
  .printRunOriginal{margin-bottom:24px}
  .printRunBanner{margin:0 0 8px;padding:8px 12px;border:1px solid #d97706;background:#f59e0b;color:#111827;font-size:18px;font-weight:900}
  .printRunHeader{display:flex;justify-content:space-between;gap:12px;margin-bottom:8px}
  .printRunTitle{font-size:20px;font-weight:800}
  .printRunMeta{font-size:13px;color:#475569}
  .printTable{width:100%;border-collapse:collapse}
  .printTable th,.printTable td{border:1px solid #cbd5e1;padding:8px 10px;text-align:left;vertical-align:top;font-size:12px}
  .printTable th{background:#eff6ff;font-size:11px;text-transform:uppercase;letter-spacing:.03em}
  .printTableOriginal th{background:#fff7ed;color:#7c2d12;font-size:12px;text-transform:none;letter-spacing:0}
  .printTableDetailed tbody tr.placeBandA td{background:#ffffff}
  .printTableDetailed tbody tr.placeBandB td{background:#f8fbff}
  .printTablePublic td,.printTablePublic th{font-size:13px}
  .printTableDetailed td.printStudentCell{font-weight:800}
  .printTableDetailed td.printPlaceCell{font-weight:700}
  .printTablePublic td.printPlaceCell{font-weight:700}
  .printEmpty{padding:24px 0;font-size:14px;color:#64748b}
}
@media (max-width:1200px){
  h1{font-size:42px}
  .time{font-size:32px}
  .loc{font-size:22px}
}
@media (max-width:960px){
  .controls,.searchRow,.routeRow{grid-template-columns:1fr}
  .map{height:420px}
  .heroTop{flex-direction:column}
  .adminHeader{flex-direction:column}
  .adminHeaderActions{justify-content:stretch}
  .adminEditorHeader,.adminActionRow{flex-direction:column;align-items:stretch}
  .adminFormGrid{grid-template-columns:1fr}
  .adminRouteFilters{grid-template-columns:1fr}
  .adminTableWrap{margin-top:12px}
  h1{font-size:36px}
  .runTitle{font-size:24px}
  .time{font-size:28px}
  .loc{font-size:20px}
}
