:root {
  --canvas: #f5f6f8;
  --panel: #ffffff;
  --ink: #1b2230;
  --muted: #657084;
  --line: #dce1e8;
  --nav: #17212e;
  --nav-soft: #243243;
  --nav-muted: #9eabba;
  --accent: #177f74;
  --accent-soft: #e0f1ed;
  --blue: #2368b3;
  --blue-soft: #e5effa;
  --warning: #a75a16;
  --warning-soft: #fcebd8;
  --danger: #b23b3b;
  --danger-soft: #f9e2e2;
  --shadow: 0 10px 30px rgba(28, 42, 58, 0.06);
}

* { box-sizing: border-box; }
html { background: var(--canvas); }
body {
  margin: 0;
  min-width: 320px;
  color: var(--ink);
  background: var(--canvas);
  font-family: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Noto Sans KR", sans-serif;
  letter-spacing: 0;
}
html, body { max-width: 100%; overflow-x: hidden; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
a { color: inherit; }
.access-gate { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: var(--nav); }
.access-panel { width: min(380px, 100%); border-radius: 7px; padding: 32px; background: #fff; box-shadow: 0 24px 70px rgba(0,0,0,.24); }
.access-panel h1 { margin: 7px 0 8px; font-size: 23px; }
.access-panel > p:not(.eyebrow):not(.access-error) { margin: 0 0 24px; color: var(--muted); font-size: 13px; }
.access-panel label { display: grid; gap: 7px; color: var(--muted); font-size: 11px; font-weight: 700; }
.access-panel input { width: 100%; height: 44px; border: 1px solid var(--line); border-radius: 5px; padding: 0 12px; color: var(--ink); background: #fff; outline: none; }
.access-panel input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.access-panel button { width: 100%; height: 42px; margin-top: 8px; border: 0; border-radius: 5px; color: #fff; background: var(--accent); font-weight: 700; }
.access-error { min-height: 18px; margin: 7px 0 0; color: var(--danger); font-size: 11px; }
.app-shell { min-width: 0; min-height: 100vh; display: grid; grid-template-columns: 260px minmax(0, 1fr); }
.sidebar { position: sticky; top: 0; min-width: 0; height: 100vh; display: flex; flex-direction: column; padding: 30px 16px 18px; background: var(--nav); color: white; }
.brand-block { padding: 0 12px 24px; border-bottom: 1px solid rgba(255,255,255,.11); }
.brand-block h1 { margin: 6px 0 7px; font-size: 18px; font-weight: 700; line-height: 1.35; }
.brand-block p:last-child { margin: 0; color: var(--nav-muted); font-size: 12px; line-height: 1.5; }
.eyebrow, .section-label { margin: 0; color: var(--muted); font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.sidebar .eyebrow { color: #83d0c4; }
.primary-nav { display: grid; gap: 4px; padding: 22px 0; }
.nav-button { width: 100%; display: grid; grid-template-columns: 30px 1fr; align-items: center; min-height: 46px; border: 0; border-radius: 6px; padding: 8px 12px; color: var(--nav-muted); background: transparent; text-align: left; }
.nav-button:hover { color: white; background: rgba(255,255,255,.06); }
.nav-button.active { color: white; background: var(--nav-soft); box-shadow: inset 3px 0 0 #65d4c3; }
.nav-index { font-size: 11px; color: #6f8297; font-variant-numeric: tabular-nums; }
.nav-button.active .nav-index { color: #85e0d2; }
.nav-label { font-size: 13px; font-weight: 600; }
.nav-sub { grid-column: 2; margin-top: 1px; font-size: 11px; color: #8290a1; }
.sidebar-note { margin-top: auto; display: flex; gap: 9px; align-items: flex-start; border-top: 1px solid rgba(255,255,255,.11); padding: 18px 12px 0; }
.sidebar-note p { margin: 0; color: var(--nav-muted); font-size: 11px; line-height: 1.55; }
.sidebar-note strong { color: white; font-weight: 600; }
.status-dot { width: 7px; height: 7px; flex: 0 0 7px; margin-top: 5px; border-radius: 50%; background: #f4b45f; }

.workspace { min-width: 0; width: min(1440px, 100%); padding: 28px clamp(20px, 4vw, 56px) 64px; }
.topbar { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; padding: 0 0 28px; border-bottom: 1px solid var(--line); }
.topbar h2 { margin: 7px 0 0; font-size: clamp(24px, 3vw, 32px); letter-spacing: 0; }
.topbar-actions { display: flex; gap: 8px; }
.mode-badge { display: inline-flex; align-items: center; min-height: 36px; border-radius: 5px; padding: 0 10px; color: var(--blue); background: var(--blue-soft); font-size: 11px; font-weight: 750; }
.text-action, .outline-button, .icon-action { border: 1px solid var(--line); border-radius: 5px; background: var(--panel); color: var(--ink); min-height: 36px; padding: 0 12px; font-size: 12px; font-weight: 650; }
.text-action:hover, .outline-button:hover, .icon-action:hover { border-color: #aab5c4; background: #fafbfc; }
.icon-action { min-width: 48px; background: var(--accent); border-color: var(--accent); color: white; }
.icon-action:hover { background: #116c63; color: white; }
.view { padding-top: 28px; }
.hidden { display: none; }
.day-overview { display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, 360px); gap: 28px; align-items: end; padding: 0 0 28px; border-bottom: 1px solid var(--line); }
.lead { max-width: 720px; margin: 8px 0 0; font-size: 18px; font-weight: 550; line-height: 1.5; }
.decision-strip { display: flex; align-items: center; justify-content: space-between; gap: 12px; border-left: 3px solid var(--warning); padding: 9px 0 9px 15px; background: transparent; }
.decision-strip span { display: block; color: var(--muted); font-size: 11px; }
.decision-strip strong { display: block; margin-top: 4px; font-size: 13px; }
.decision-strip, .decision-strip div, .decision-strip strong, .isq-item > div, .timeline-main { min-width: 0; overflow-wrap: anywhere; }
.outline-button { min-width: 90px; background: transparent; }
.isq-section, .schedule-section, .brief-section, .vehicle-section, .map-section, .candidate-section, .task-section, .notes-section { padding: 26px 0; border-bottom: 1px solid var(--line); }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.section-heading h3 { margin: 6px 0 0; font-size: 17px; line-height: 1.3; }
.muted { color: var(--muted); font-size: 12px; line-height: 1.5; text-align: right; }
.candidate-heading-actions { display: grid; justify-items: end; gap: 5px; }
.isq-list { overflow: hidden; border: 1px solid var(--line); border-radius: 7px; background: var(--panel); box-shadow: var(--shadow); }
.isq-item { display: grid; grid-template-columns: 74px minmax(0, 1fr) 92px; gap: 14px; align-items: center; min-height: 64px; padding: 11px 14px; border-top: 1px solid #edf0f3; }
.isq-item:first-child { border-top: 0; }
.isq-status { width: fit-content; border-radius: 4px; padding: 5px 7px; background: var(--blue-soft); color: var(--blue); font-size: 10px; font-weight: 750; }
.isq-request .isq-status { background: var(--warning-soft); color: #86510c; }
.isq-pending .isq-status { background: #f0edf8; color: #65528c; }
.isq-confirmed .isq-status { background: var(--accent-soft); color: #11645d; }
.isq-item strong { display: block; font-size: 13px; line-height: 1.35; }
.isq-item p { margin: 4px 0 0; color: var(--muted); font-size: 11px; line-height: 1.45; }
.isq-due { color: var(--muted); font-size: 11px; font-weight: 650; text-align: right; }
.timeline { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.timeline-item { display: grid; grid-template-columns: 88px 18px minmax(0, 1fr) auto; gap: 12px; align-items: center; min-height: 58px; border-top: 1px solid #edf0f3; }
.timeline-item:first-child { border-top: 0; }
.timeline-time { color: var(--blue); font-size: 12px; font-weight: 750; font-variant-numeric: tabular-nums; }
.timeline-marker { width: 10px; height: 10px; border: 2px solid var(--blue); border-radius: 50%; background: var(--canvas); }
.timeline-main strong { display: block; font-size: 14px; }
.timeline-main span { display: block; margin-top: 4px; color: var(--muted); font-size: 12px; line-height: 1.45; }
.timeline-owner { color: var(--muted); font-size: 11px; text-align: right; white-space: nowrap; }
.brief-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid var(--line); border-radius: 7px; overflow: hidden; background: var(--panel); box-shadow: var(--shadow); }
.brief-metric { min-width: 0; min-height: 128px; padding: 16px; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.brief-metric:nth-child(-n+3) { border-top: 0; }
.brief-metric:nth-child(3n+1) { border-left: 0; }
.brief-metric span { display: block; color: var(--muted); font-size: 10px; font-weight: 700; }
.brief-metric strong { display: block; margin-top: 7px; color: var(--blue); font-size: 19px; line-height: 1.2; }
.brief-metric p { margin: 8px 0 0; color: #445064; font-size: 11px; line-height: 1.5; }
.brief-rule { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 14px; align-items: start; margin-top: 12px; border-left: 4px solid var(--accent); padding: 14px 16px; background: #f2faf8; }
.brief-rule > span { border-radius: 99px; padding: 4px 7px; color: #11645d; background: #dff1ed; font-size: 9px; font-weight: 750; white-space: nowrap; }
.brief-rule strong { display: block; font-size: 12px; line-height: 1.4; }
.brief-rule p { margin: 5px 0 0; color: #5d6674; font-size: 11px; line-height: 1.55; }
.vehicle-table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 7px; background: var(--panel); box-shadow: var(--shadow); }
.vehicle-table { width: 100%; min-width: 900px; border-collapse: collapse; }
.vehicle-table th { padding: 12px; border-bottom: 1px solid var(--line); color: var(--muted); background: #f8f9fb; font-size: 10px; font-weight: 750; text-align: left; }
.vehicle-table td { height: 54px; padding: 10px 12px; border-bottom: 1px solid #edf0f3; color: #445064; font-size: 12px; line-height: 1.4; vertical-align: middle; }
.vehicle-table tbody tr:last-child td { border-bottom: 0; }
.vehicle-table td strong { color: var(--ink); }
.vehicle-total { color: var(--accent) !important; font-weight: 750; white-space: nowrap; }
.supplier-table { min-width: 1080px; }
.supplier-table th:nth-child(1) { width: 15%; }
.supplier-table th:nth-child(2),
.supplier-table th:nth-child(3),
.supplier-table th:nth-child(4) { width: 9%; }
.supplier-table th:nth-child(5) { width: 17%; }
.supplier-table th:nth-child(6) { width: 25%; }
.supplier-table th:nth-child(7) { width: 16%; }
.supplier-candidate td { background: #f5fbf9; }
.vehicle-rate-note { margin: 10px 0 0; color: var(--muted); font-size: 11px; line-height: 1.5; }
.arrival-plan, .vehicle-scenarios { margin-top: 26px; }
.vehicle-subheading { display: flex; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: 12px; }
.vehicle-subheading h4 { margin: 5px 0 0; font-size: 15px; }
.vehicle-subheading > span { max-width: 430px; color: var(--muted); font-size: 11px; line-height: 1.45; text-align: right; }
.arrival-wave-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid var(--line); border-radius: 7px; overflow: hidden; background: var(--panel); }
.arrival-wave { min-width: 0; padding: 14px 16px; border-left: 1px solid var(--line); }
.arrival-wave:first-child { border-left: 0; }
.arrival-wave span { display: block; color: var(--blue); font-size: 10px; font-weight: 750; }
.arrival-wave strong { display: block; margin-top: 5px; font-size: 20px; font-variant-numeric: tabular-nums; }
.arrival-wave p { margin: 5px 0 0; color: var(--muted); font-size: 11px; }
.vehicle-scenario-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.vehicle-scenario { min-width: 0; border: 1px solid var(--line); border-radius: 7px; padding: 16px; background: var(--panel); box-shadow: var(--shadow); }
.vehicle-scenario-top { display: flex; align-items: start; justify-content: space-between; gap: 12px; }
.vehicle-scenario h5 { margin: 0; font-size: 14px; line-height: 1.35; }
.vehicle-scenario-top span { flex: 0 0 auto; border-radius: 99px; padding: 4px 7px; color: var(--blue); background: var(--blue-soft); font-size: 9px; font-weight: 750; }
.vehicle-scenario-cost { display: block; margin-top: 8px; color: var(--accent); font-size: 12px; }
.vehicle-scenario dl { display: grid; gap: 8px; margin: 14px 0 0; }
.vehicle-scenario dl div { display: grid; grid-template-columns: 60px minmax(0, 1fr); gap: 8px; padding-top: 8px; border-top: 1px solid #edf0f3; }
.vehicle-scenario dt { color: var(--muted); font-size: 10px; font-weight: 750; }
.vehicle-scenario dd { min-width: 0; margin: 0; color: #445064; font-size: 11px; line-height: 1.5; }
.vehicle-dependency { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 14px; align-items: start; margin-top: 12px; border-left: 4px solid var(--warning); padding: 14px 16px; background: #fff9ef; }
.vehicle-dependency > span { border-radius: 99px; padding: 4px 7px; color: #86510c; background: #fff0d9; font-size: 9px; font-weight: 750; white-space: nowrap; }
.vehicle-dependency strong { display: block; font-size: 12px; line-height: 1.4; }
.vehicle-dependency p { margin: 5px 0 0; color: #5d6674; font-size: 11px; line-height: 1.55; }
.map-layout { display: grid; grid-template-columns: minmax(360px, 1.3fr) minmax(260px, .7fr); min-height: 400px; border: 1px solid var(--line); border-radius: 7px; overflow: hidden; background: var(--panel); box-shadow: var(--shadow); }
.map-frame-wrap { min-height: 400px; background: #e9eef2; }
.map-frame-wrap iframe { width: 100%; height: 100%; min-height: 400px; border: 0; }
.map-list { padding: 12px; overflow: auto; }
.map-location { display: grid; grid-template-columns: 1fr auto; width: 100%; gap: 8px; align-items: center; border: 0; border-bottom: 1px solid #edf0f3; padding: 13px 8px; background: transparent; color: var(--ink); text-align: left; }
.map-location:hover, .map-location.active { background: var(--accent-soft); }
.map-location:last-child { border-bottom: 0; }
.map-location strong { display: block; font-size: 13px; }
.map-location span { display: block; margin-top: 3px; color: var(--muted); font-size: 11px; }
.map-kind { color: var(--accent); font-size: 10px; font-weight: 750; text-transform: uppercase; }
.route-planner { display: grid; grid-template-columns: minmax(180px, 1fr) auto minmax(180px, 1fr) auto; gap: 10px; align-items: end; margin-top: 10px; border: 1px solid var(--line); border-radius: 7px; padding: 12px; background: var(--panel); }
.route-planner label { display: grid; gap: 5px; color: var(--muted); font-size: 10px; font-weight: 750; }
.route-planner select { width: 100%; min-width: 0; border: 1px solid var(--line); border-radius: 5px; padding: 9px 10px; color: var(--ink); background: #fff; font: inherit; font-size: 12px; }
.route-arrow { align-self: center; color: var(--muted); font-size: 16px; }
.route-link { align-self: end; border: 1px solid var(--blue); border-radius: 5px; padding: 9px 12px; color: var(--blue); background: #fff; font: inherit; font-size: 12px; font-weight: 650; text-align: center; cursor: pointer; white-space: nowrap; }
.route-link:hover { color: #fff; background: var(--blue); }
.external-link { color: var(--blue); font-size: 12px; font-weight: 650; text-decoration: none; white-space: nowrap; }
.external-link:hover { text-decoration: underline; }
.venue-comparison { margin-bottom: 16px; }
.venue-comparison-head { display: flex; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: 9px; }
.venue-comparison-head strong { font-size: 13px; }
.venue-comparison-head span { color: var(--muted); font-size: 11px; text-align: right; }
.venue-comparison-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 7px; background: var(--panel); box-shadow: var(--shadow); }
.venue-comparison table { width: 100%; min-width: 990px; border-collapse: collapse; }
.venue-comparison th { padding: 11px 12px; border-bottom: 1px solid var(--line); color: var(--muted); background: #f8f9fb; font-size: 10px; font-weight: 750; text-align: left; }
.venue-comparison td { padding: 11px 12px; border-bottom: 1px solid #edf0f3; color: #445064; font-size: 11px; line-height: 1.45; vertical-align: top; }
.venue-comparison tbody tr:last-child td { border-bottom: 0; }
.venue-comparison td:nth-child(1) { width: 64px; color: var(--blue); font-weight: 800; white-space: nowrap; }
.venue-comparison td:nth-child(2) { width: 190px; color: var(--ink); font-weight: 700; }
.venue-comparison td:nth-child(4) { width: 190px; font-variant-numeric: tabular-nums; }
.venue-comparison td:nth-child(5) { width: 125px; }
.venue-comparison td:nth-child(6) { width: 150px; font-weight: 700; }
.venue-comparison tr[data-tier="A"] td:first-child,
.venue-comparison tr[data-tier="A"] td:last-child { color: var(--accent); }
.venue-comparison tr[data-tier="HOLD"] td:first-child,
.venue-comparison tr[data-tier="HOLD"] td:last-child { color: var(--warning); }
.venue-price-note { margin: 9px 0 0; color: var(--muted); font-size: 10px; line-height: 1.55; }
.candidate-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.candidate { position: relative; min-height: 220px; border: 1px solid var(--line); border-radius: 7px; padding: 18px; background: var(--panel); box-shadow: var(--shadow); }
.candidate.selected { border: 2px solid var(--accent); padding: 17px; }
.candidate.hold { border-left: 4px solid var(--warning); background: #fffdf8; }
.candidate.hold .candidate-type { color: #86510c; background: #fff0d9; }
.candidate.reviewing { border-left: 4px solid var(--blue); }
.candidate.contacted { border-left: 4px solid var(--accent); }
.candidate.contacted .candidate-type { color: #11645d; background: #e4f3ef; }
.candidate.excluded { border-left: 4px solid #a4453d; background: #fcf8f7; }
.candidate.excluded .candidate-type { color: #84352f; background: #f5e4e2; }
.candidate-top { display: flex; justify-content: space-between; gap: 12px; align-items: start; }
.candidate h4 { margin: 0; font-size: 16px; }
.candidate-address { margin: 4px 0 0; color: var(--muted); font-size: 11px; line-height: 1.4; }
.candidate-type { border-radius: 99px; padding: 5px 8px; color: var(--blue); background: var(--blue-soft); font-size: 10px; font-weight: 750; white-space: nowrap; }
.candidate-photo { display: block; position: relative; width: 100%; aspect-ratio: 16 / 9; margin-top: 15px; overflow: hidden; border: 1px solid var(--line); border-radius: 5px; background: #e9eef2; color: white; text-decoration: none; }
.candidate-photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.candidate-photo span { position: absolute; right: 0; bottom: 0; left: 0; padding: 20px 9px 7px; background: linear-gradient(to bottom, transparent, rgba(19, 27, 38, .78)); font-size: 10px; font-weight: 700; }
.candidate-gallery { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin-top: 6px; }
.candidate-gallery a { position: relative; min-width: 0; aspect-ratio: 4 / 3; overflow: hidden; border: 1px solid var(--line); border-radius: 4px; background: #e9eef2; color: white; text-decoration: none; }
.candidate-gallery img { display: block; width: 100%; height: 100%; object-fit: cover; }
.candidate-gallery span { position: absolute; right: 0; bottom: 0; left: 0; padding: 16px 6px 5px; background: linear-gradient(to bottom, transparent, rgba(19, 27, 38, .76)); font-size: 9px; font-weight: 700; }
.candidate-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 17px 0; }
.candidate-fact { padding-left: 8px; border-left: 2px solid #d9e4e2; }
.candidate-fact span { display: block; color: var(--muted); font-size: 10px; }
.candidate-fact strong { display: block; margin-top: 3px; font-size: 12px; line-height: 1.35; }
.candidate-note { min-height: 35px; margin: 0; color: #445064; font-size: 12px; line-height: 1.5; }
.candidate-detail-panel { margin-top: 14px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.candidate-detail-panel summary { min-height: 38px; padding: 11px 0 9px; color: var(--blue); cursor: pointer; font-size: 11px; font-weight: 750; }
.candidate-detail-panel ul { display: grid; gap: 8px; margin: 0 0 13px; padding: 0; list-style: none; }
.candidate-detail-panel li { color: #445064; font-size: 11px; line-height: 1.5; }
.candidate-detail-panel li strong { color: var(--ink); }
.candidate-contact { display: flex; flex-wrap: wrap; gap: 7px 12px; margin: 0 0 13px; padding-top: 11px; border-top: 1px solid #edf0f3; font-size: 10px; }
.candidate-contact strong { color: var(--ink); }
.candidate-contact a { color: var(--blue); text-decoration: none; }
.candidate-contact a:hover { text-decoration: underline; }
.candidate-links { display: flex; flex-wrap: wrap; gap: 8px 12px; margin-top: 15px; }
.candidate-links a, .candidate-links button { padding: 0; border: 0; background: transparent; color: var(--blue); font-size: 11px; font-weight: 700; text-decoration: none; }
.candidate-links a:hover, .candidate-links button:hover { text-decoration: underline; }
.task-list { display: grid; gap: 0; border-top: 1px solid #edf0f3; }
.compact-details { padding: 0; }
.compact-details > summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 0; cursor: pointer; list-style: none; }
.compact-details > summary::-webkit-details-marker { display: none; }
.compact-details > summary span:first-child { display: grid; gap: 3px; }
.compact-details > summary small { color: var(--muted); font-size: 10px; font-weight: 700; }
.compact-details > summary strong { font-size: 14px; }
.compact-details > summary span:last-child { color: var(--muted); font-size: 11px; }
.compact-details[open] > summary { border-bottom: 1px solid var(--line); }
.supporting-details { padding: 0; }
.supporting-details > summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 0; cursor: pointer; list-style: none; }
.supporting-details > summary::-webkit-details-marker { display: none; }
.supporting-details > summary span { font-size: 14px; font-weight: 700; }
.supporting-details > summary strong { color: var(--blue); font-size: 11px; }
.supporting-details[open] > summary { margin-bottom: 24px; border-bottom: 1px solid var(--line); padding-bottom: 18px; }
.task-row { display: grid; grid-template-columns: 24px minmax(0, 1fr) minmax(120px, .26fr); gap: 10px; align-items: center; min-height: 53px; border-bottom: 1px solid #edf0f3; }
.task-check { width: 17px; height: 17px; accent-color: var(--accent); }
.task-title { font-size: 13px; font-weight: 600; }
.task-title.done { color: var(--muted); text-decoration: line-through; }
.task-owner { color: var(--muted); font-size: 11px; text-align: right; }
.notes-section textarea { width: 100%; min-height: 130px; resize: vertical; border: 1px solid var(--line); border-radius: 6px; padding: 14px; background: var(--panel); color: var(--ink); line-height: 1.55; outline: none; }
.notes-section textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }

.budget-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 24px; align-items: end; padding-bottom: 24px; border-bottom: 1px solid var(--line); }
.budget-head h3 { margin: 6px 0 0; font-size: 22px; }
.budget-head p:last-child { margin: 8px 0 0; max-width: 720px; color: var(--muted); font-size: 13px; line-height: 1.55; }
.exchange-control { display: grid; grid-template-columns: auto 110px; align-items: center; gap: 8px; color: var(--muted); font-size: 12px; }
.exchange-control input { width: 100%; height: 36px; border: 1px solid var(--line); border-radius: 5px; padding: 0 9px; background: var(--panel); text-align: right; }
.budget-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; padding: 25px 0; border-bottom: 1px solid var(--line); }
.budget-metric { border-left: 3px solid #cdd4dd; padding: 4px 0 4px 12px; }
.budget-metric.accent { border-color: var(--accent); }
.budget-metric.warning { border-color: var(--warning); }
.budget-metric.danger { border-color: var(--danger); }
.budget-metric span { display: block; color: var(--muted); font-size: 11px; }
.budget-metric strong { display: block; margin-top: 6px; font-size: 19px; font-variant-numeric: tabular-nums; }
.budget-metric small { display: block; margin-top: 5px; color: var(--muted); font-size: 10px; line-height: 1.35; }
.budget-tools { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 20px 0 12px; }
.budget-tools p { margin: 0; color: var(--muted); font-size: 12px; }
.add-row { min-width: 38px; min-height: 34px; border: 1px solid var(--accent); border-radius: 5px; background: var(--accent); color: white; font-size: 18px; line-height: 1; }
.add-row:hover { background: #116c63; }
.budget-table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 7px; background: var(--panel); box-shadow: var(--shadow); }
.budget-table { width: 100%; min-width: 1080px; table-layout: fixed; border-collapse: collapse; }
.budget-table th:nth-child(1) { width: 9%; }
.budget-table th:nth-child(2) { width: 24%; }
.budget-table th:nth-child(3) { width: 8%; }
.budget-table th:nth-child(4),
.budget-table th:nth-child(5) { width: 12%; }
.budget-table th:nth-child(6) { width: 15%; }
.budget-table th:nth-child(7) { width: 16%; }
.budget-table th:nth-child(8) { width: 4%; }
.budget-table th { padding: 12px; border-bottom: 1px solid var(--line); color: var(--muted); background: #f8f9fb; font-size: 10px; font-weight: 750; text-align: left; letter-spacing: .04em; text-transform: uppercase; }
.budget-table td { height: 56px; padding: 7px 10px; border-bottom: 1px solid #edf0f3; font-size: 12px; vertical-align: middle; }
.budget-table tbody tr:last-child td { border-bottom: 0; }
.budget-table tr:hover td { background: #fbfcfd; }
.budget-table input, .budget-table select { width: 100%; height: 34px; border: 1px solid transparent; border-radius: 4px; padding: 0 8px; background: transparent; color: var(--ink); outline: none; }
.budget-table input:hover, .budget-table select:hover { border-color: var(--line); background: white; }
.budget-table input:focus, .budget-table select:focus { border-color: var(--accent); background: white; box-shadow: 0 0 0 3px var(--accent-soft); }
.money-input { min-width: 115px; text-align: right; font-variant-numeric: tabular-nums; }
.variance { font-weight: 700; font-variant-numeric: tabular-nums; text-align: right; }
.variance.positive { color: var(--accent); }
.variance.negative { color: var(--danger); }
.budget-delete { border: 0; background: transparent; color: #9da7b5; font-size: 16px; }
.budget-delete:hover { color: var(--danger); }
.budget-source { margin: 16px 0 0; color: var(--muted); font-size: 11px; line-height: 1.55; }
.print-head { margin-bottom: 22px; }
.print-progress { min-width: 150px; border-left: 3px solid var(--accent); padding-left: 14px; }
.print-progress span { display: block; color: var(--muted); font-size: 11px; }
.print-progress strong { display: block; margin-top: 6px; font-size: 20px; }
.print-table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 7px; background: var(--panel); box-shadow: var(--shadow); }
.print-table { width: 100%; min-width: 1180px; table-layout: fixed; border-collapse: collapse; }
.print-table th { padding: 12px 10px; border-bottom: 1px solid var(--line); color: var(--muted); background: #f8f9fb; font-size: 10px; font-weight: 750; text-align: left; }
.print-table th:nth-child(1) { width: 8%; }
.print-table th:nth-child(2) { width: 15%; }
.print-table th:nth-child(3) { width: 20%; }
.print-table th:nth-child(4) { width: 9%; }
.print-table th:nth-child(5),
.print-table th:nth-child(6),
.print-table th:nth-child(7) { width: 10%; }
.print-table th:nth-child(8) { width: 18%; }
.print-table td { height: 56px; padding: 7px 8px; border-bottom: 1px solid #edf0f3; }
.print-table tbody tr:last-child td { border-bottom: 0; }
.print-table input, .print-table select { width: 100%; height: 34px; border: 1px solid transparent; border-radius: 4px; padding: 0 7px; color: var(--ink); background: transparent; font: inherit; font-size: 11px; outline: none; }
.print-table input:hover, .print-table select:hover { border-color: var(--line); background: #fff; }
.print-table input:focus, .print-table select:focus { border-color: var(--accent); background: #fff; box-shadow: 0 0 0 3px var(--accent-soft); }

.dining-section { margin-top: 28px; }
.dining-legend { display: flex; flex-wrap: wrap; gap: 8px; margin: -4px 0 14px; }
.dining-legend span { padding: 7px 9px; border: 1px solid var(--line); border-radius: 5px; background: var(--panel); color: var(--muted); font-size: 11px; }
.dining-legend strong { color: var(--ink); }
.dining-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.dining-card { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 7px; background: var(--panel); }
.dining-photo { position: relative; display: block; aspect-ratio: 3 / 1.25; overflow: hidden; background: #eef0f2; }
.dining-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.dining-floor { position: absolute; left: 8px; bottom: 8px; padding: 5px 7px; border-radius: 4px; background: rgba(20, 24, 28, .88); color: #fff; font-size: 10px; font-weight: 750; }
.dining-body { padding: 12px; }
.dining-title { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.dining-title h4 { margin: 0; font-size: 14px; line-height: 1.25; }
.dining-title > span { flex: 0 0 auto; padding: 4px 6px; border-radius: 4px; background: #edf4ef; color: #315f40; font-size: 9px; font-weight: 750; }
.dining-body dl { margin: 11px 0 0; }
.dining-body dl div { display: grid; grid-template-columns: 58px minmax(0, 1fr); gap: 6px; padding: 6px 0; border-top: 1px solid var(--line); }
.dining-body dt { color: var(--muted); font-size: 10px; }
.dining-body dd { margin: 0; font-size: 11px; line-height: 1.45; }
.dining-body p { min-height: 48px; margin: 9px 0; color: var(--muted); font-size: 10px; line-height: 1.55; }
.dining-body > a { color: var(--accent); font-size: 10px; font-weight: 700; text-decoration: none; }

@media (max-width: 920px) {
  .app-shell { display: block; width: 100%; max-width: 100%; overflow: hidden; }
  .sidebar { position: static; width: 100%; max-width: 100%; height: auto; padding: 16px 16px 0; overflow: hidden; }
  .brand-block { display: none; }
  .primary-nav { width: 100%; min-width: 0; max-width: 100%; display: flex; overflow-x: auto; padding: 0 0 12px; gap: 5px; }
  .nav-button { width: auto; flex: 0 0 auto; display: block; min-height: 0; padding: 8px 10px; border: 1px solid rgba(255,255,255,.13); }
  .nav-button.active { box-shadow: none; }
  .nav-index, .nav-sub { display: none; }
  .nav-label { white-space: nowrap; }
  .sidebar-note { display: none; }
  .workspace { padding: 22px 18px 48px; }
  .day-overview, .map-layout { grid-template-columns: 1fr; }
  .map-frame-wrap, .map-frame-wrap iframe { min-height: 280px; }
  .candidate-grid { grid-template-columns: 1fr; }
  .dining-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .brief-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .brief-metric:nth-child(-n+3) { border-top: 1px solid var(--line); }
  .brief-metric:nth-child(3n+1) { border-left: 1px solid var(--line); }
  .brief-metric:nth-child(-n+2) { border-top: 0; }
  .brief-metric:nth-child(2n+1) { border-left: 0; }
  .vehicle-scenario-grid { grid-template-columns: 1fr; }
  .budget-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
  .route-planner { grid-template-columns: 1fr; }
  .route-arrow { display: none; }
  .workspace { width: 100vw; max-width: 100vw; padding: 18px 18px 42px; overflow: hidden; }
  .topbar { flex-direction: column; padding-bottom: 22px; }
  .topbar h2 { max-width: 100%; font-size: 24px; line-height: 1.35; overflow-wrap: anywhere; }
  .topbar-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; }
  .topbar-actions button { width: 100%; }
  .day-overview { gap: 20px; }
  .lead { font-size: 16px; }
  .decision-strip { width: 100%; }
  .section-heading { align-items: flex-start; flex-direction: column; gap: 6px; }
  .muted { text-align: left; }
  .isq-item { grid-template-columns: 70px minmax(0, 1fr); gap: 8px 10px; }
  .isq-item p { overflow-wrap: anywhere; }
  .isq-due { grid-column: 2; text-align: left; }
  .timeline-item { grid-template-columns: 72px 14px minmax(0, 1fr); }
  .timeline-owner { grid-column: 3; text-align: left; }
  .candidate-heading-actions { justify-items: start; }
  .venue-comparison-head { align-items: flex-start; flex-direction: column; }
  .venue-comparison-head span { text-align: left; }
  .venue-comparison-wrap { overflow: visible; border: 0; background: transparent; box-shadow: none; }
  .venue-comparison table,
  .venue-comparison tbody { display: block; min-width: 0; }
  .venue-comparison thead { display: none; }
  .venue-comparison tr { display: grid; grid-template-columns: 48px minmax(0, 1fr); margin-bottom: 8px; border: 1px solid var(--line); border-radius: 6px; overflow: hidden; background: var(--panel); }
  .venue-comparison td,
  .venue-comparison td:nth-child(1),
  .venue-comparison td:nth-child(2),
  .venue-comparison td:nth-child(4),
  .venue-comparison td:nth-child(5),
  .venue-comparison td:nth-child(6) { width: auto; border-bottom: 0; }
  .venue-comparison td:nth-child(1) { grid-row: 1 / 6; display: flex; align-items: flex-start; justify-content: center; padding: 12px 5px; background: #f8f9fb; }
  .venue-comparison td:nth-child(n+2) { grid-column: 2; padding: 5px 10px; }
  .venue-comparison td:nth-child(2) { padding-top: 11px; font-size: 12px; }
  .venue-comparison td:nth-child(6) { padding-bottom: 11px; }
  .venue-comparison td:nth-child(3)::before,
  .venue-comparison td:nth-child(4)::before,
  .venue-comparison td:nth-child(5)::before,
  .venue-comparison td:nth-child(6)::before { display: block; margin-bottom: 2px; color: var(--muted); font-size: 9px; font-weight: 750; }
  .venue-comparison td:nth-child(3)::before { content: "배치"; }
  .venue-comparison td:nth-child(4)::before { content: "80명 공개가격"; }
  .venue-comparison td:nth-child(5)::before { content: "16시 동선"; }
  .venue-comparison td:nth-child(6)::before { content: "판정"; }
  .topbar, .section-heading, .budget-head { align-items: flex-start; flex-direction: column; }
  .topbar-actions { width: 100%; }
  .topbar-actions button { flex: 1; }
  .timeline-item { grid-template-columns: 66px 14px minmax(0, 1fr); gap: 9px; }
  .timeline-owner { display: none; }
  .section-heading .muted { text-align: left; }
  .vehicle-subheading { align-items: flex-start; flex-direction: column; }
  .vehicle-subheading > span { text-align: left; }
  .arrival-wave-grid { grid-template-columns: 1fr; }
  .arrival-wave { border-top: 1px solid var(--line); border-left: 0; }
  .arrival-wave:first-child { border-top: 0; }
  .vehicle-dependency { grid-template-columns: 1fr; }
  .brief-metrics { grid-template-columns: 1fr; }
  .brief-metric,
  .brief-metric:nth-child(-n+2),
  .brief-metric:nth-child(2n+1) { border-top: 1px solid var(--line); border-left: 0; }
  .brief-metric:first-child { border-top: 0; }
  .brief-rule { grid-template-columns: 1fr; }
  .decision-strip { align-items: flex-start; flex-direction: column; }
  .dining-grid { grid-template-columns: 1fr; }
  .budget-head { display: flex; }
  .exchange-control { width: 100%; grid-template-columns: 1fr 130px; }
}

@media print {
  .sidebar, .topbar-actions, .outline-button, .candidate-links button, .budget-tools, .budget-delete { display: none !important; }
  .app-shell { display: block; }
  .workspace { width: 100%; padding: 0; }
  .hidden { display: block; }
  .map-frame-wrap { min-height: 300px; }
  .candidate { box-shadow: none; }
}
