@font-face { font-family: BusRouteSans; font-style: normal; font-weight: 400; font-display: swap; src: url('/static/fonts/bus-route/noto-sans-kr-korean-400.woff2') format('woff2'); }
@font-face { font-family: BusRouteSans; font-style: normal; font-weight: 700; font-display: swap; src: url('/static/fonts/bus-route/noto-sans-kr-korean-700.woff2') format('woff2'); }
@font-face { font-family: BusRouteSans; font-style: normal; font-weight: 400; font-display: swap; src: url('/static/fonts/bus-route/noto-sans-kr-latin-400.woff2') format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: BusRouteSans; font-style: normal; font-weight: 700; font-display: swap; src: url('/static/fonts/bus-route/noto-sans-kr-latin-700.woff2') format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
.bus-builder-page .gis-page { min-height: 100dvh; }
.bus-builder { padding: var(--space-6); width: 100%; min-width: 0; }
.bus-builder-head, .bus-section-head, .bus-preview-head, .bus-export-bar { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); }
.bus-builder-head { margin-bottom: var(--space-6); align-items: end; }
.bus-builder-back { color: var(--muted-foreground); font-size: var(--fs-xs); text-decoration: none; }
.bus-builder h1 { margin: var(--space-1) 0 0; font-size: var(--fs-h1); line-height: var(--lh-h1, 1.3); }
.bus-builder h2 { margin: 0; font-size: var(--fs-h4); }
.bus-builder h3 { margin: var(--space-5) 0 var(--space-3); font-size: var(--fs-sm); }
.bus-builder-file-actions, .bus-preview-actions, .bus-stop-actions, .bus-detail-actions, .bus-export-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }
.bus-builder-workspace { display: grid; grid-template-columns: minmax(18rem, 22rem) minmax(0, 1fr); align-items: start; border-top: 1px solid var(--border); }
.bus-builder-editor { min-width: 0; border-right: 1px solid var(--border); padding-right: var(--space-5); }
.bus-editor-section { padding: var(--space-5) 0; border-bottom: 1px solid var(--border); }
.bus-editor-section > h2 { margin-bottom: var(--space-4); }
.bus-field { display: grid; min-width: 0; gap: var(--space-1-5); font-size: var(--fs-xs); color: var(--muted-foreground); margin: var(--space-3) 0; }
.bus-field .input, .bus-field .select { width: 100%; min-width: 0; font-size: var(--fs-sm); color: var(--foreground); min-height: var(--control-h-m); }
.bus-field textarea.input { height: auto; min-height: 5rem; resize: vertical; padding-block: var(--space-2); }
.bus-field input[type="color"] { height: var(--control-h-m); width: 100%; padding: var(--space-1); border: 1px solid var(--border); background: var(--background); border-radius: var(--radius); }
.bus-field-pair { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-3); }
.bus-field-pair--color { grid-template-columns: 6rem minmax(0, 1fr); }
.bus-extra-options { margin-top: var(--space-4); }
.bus-extra-options summary { cursor: pointer; font-size: var(--fs-xs); color: var(--muted-foreground); padding-block: var(--space-1); }
.bus-toggle { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--fs-xs); }
.bus-toggle input { accent-color: var(--primary); }
.bus-direction-tabs { display: flex; gap: var(--space-1); margin-top: var(--space-4); }
.bus-direction-tabs [aria-pressed="true"], .bus-preview-actions [aria-pressed="true"] { background: var(--secondary); color: var(--foreground); border-color: var(--foreground); }
.bus-stop-list { max-height: 22rem; overflow-y: auto; margin: var(--space-3) 0; padding: 0; list-style: none; border-block: 1px solid var(--border); }
.bus-stop-list li + li { border-top: 1px solid var(--border); }
.bus-stop-list button { display: flex; gap: var(--space-3); align-items: center; width: 100%; padding: var(--space-2) var(--space-2); text-align: left; font-size: var(--fs-sm); background: transparent; color: var(--foreground); border: 0; min-height: var(--control-h-m); }
.bus-stop-list button[aria-current="true"] { background: var(--secondary); box-shadow: inset 3px 0 var(--primary); }
.bus-stop-list button span:first-child { color: var(--muted-foreground); font-size: var(--fs-2xs); font-variant-numeric: tabular-nums; flex: 0 0 1.5rem; }
.bus-stop-list .stop-list-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bus-stop-list .stop-list-transfer { margin-left: auto; white-space: nowrap; color: var(--muted-foreground); font-size: var(--fs-2xs); }
.bus-transfer-list, .bus-rail-results { list-style: none; padding: 0; margin: var(--space-2) 0; }
.bus-transfer-list li { display: flex; align-items: center; gap: var(--space-2); font-size: var(--fs-xs); padding-block: var(--space-1); }
.bus-transfer-list .transfer-name { flex: 1; overflow-wrap: anywhere; }
.bus-transfer-dot { display: inline-flex; width: 1.6rem; height: 1.6rem; align-items: center; justify-content: center; background: var(--transfer-color); color: #fff; border-radius: var(--radius-full); font-size: var(--fs-2xs); font-weight: 700; flex-shrink: 0; text-shadow: 0 1px 1px #0008; }
.bus-rail-results { max-height: 16rem; overflow-y: auto; }
.bus-rail-results button { width: 100%; text-align: left; display: grid; gap: var(--space-1); white-space: normal; padding: var(--space-2); border-bottom: 1px solid var(--border); }
.bus-rail-results small { color: var(--muted-foreground); font-size: var(--fs-2xs); }
.bus-builder-preview { position: sticky; top: calc(var(--header-height, 3.5rem) + var(--space-4)); min-width: 0; padding: var(--space-5) 0 0 var(--space-6); }
.bus-preview-head { align-items: start; flex-wrap: wrap; margin-bottom: var(--space-4); }
.bus-hint { font-size: var(--fs-xs); line-height: 1.5; color: var(--muted-foreground); margin: var(--space-2) 0; }
.bus-example-notice { font-size: var(--fs-xs); color: var(--muted-foreground); margin-bottom: var(--space-3); }
.bus-preview-canvas { overflow: auto; max-height: 65dvh; min-height: 18rem; padding: var(--space-4); background: var(--secondary); border: 1px solid var(--border); border-radius: var(--radius); }
#diagramPreview { min-height: 14rem; }
#diagramPreview > svg { display: block; width: 100%; height: auto; background: #fff; box-shadow: var(--shadow-sm); }
.bus-preview-canvas[data-actual="true"] #diagramPreview { width: var(--diagram-width); }
.bus-preview-empty { min-height: 16rem; display: grid; place-content: center; text-align: center; color: var(--muted-foreground); gap: var(--space-2); font-size: var(--fs-sm); }
.bus-export-bar { margin-top: var(--space-4); flex-wrap: wrap; }
.bus-validation { color: var(--destructive); font-size: var(--fs-xs); padding-left: var(--space-5); margin-top: var(--space-3); }
.bus-validation:empty { display: none; }
.bus-builder-status { min-height: 1.5em; font-size: var(--fs-sm); color: var(--foreground); margin: var(--space-3) 0; }
.bus-builder-status[data-error="true"] { color: var(--destructive); }
.bus-export-hint { margin-top: var(--space-2); }
@media (max-width: 1024px) {
  .bus-builder { padding: var(--space-4); }
  .bus-builder-workspace { grid-template-columns: minmax(17rem, 20rem) minmax(0, 1fr); }
  .bus-builder-head { align-items: start; flex-wrap: wrap; }
  .bus-builder-preview { padding-left: var(--space-4); position: static; }
}
@media (max-width: 640px) {
  .bus-builder-workspace { grid-template-columns: minmax(0, 1fr); }
  .bus-builder-preview { grid-row: 1; padding: var(--space-4) 0; border-bottom: 1px solid var(--border); }
  .bus-builder-editor { border-right: 0; padding-right: 0; }
  .bus-preview-canvas { min-height: 10rem; max-height: 52dvh; padding: var(--space-2); }
  #diagramPreview { min-height: 8rem; }
  .bus-builder-head { gap: var(--space-3); margin-bottom: var(--space-4); }
  .bus-builder h1 { font-size: var(--fs-h2); }
  .bus-builder-file-actions .btn, .bus-export-actions .btn { font-size: var(--fs-xs); padding-inline: var(--space-2); }
  .bus-export-actions { width: 100%; }
  .bus-stop-list { max-height: 18rem; }
}
