@import url('https://fonts.googleapis.com/css2?family=Black+Han+Sans&family=Black+Ops+One&family=Noto+Sans+KR:wght@400;500;600;700&display=swap');

:root {
  --bg: #090b0a;
  --bg-deep: #060807;
  --surface: #101412;
  --surface-2: #151a17;
  --line: rgba(157, 185, 165, 0.16);
  --line-strong: rgba(157, 185, 165, 0.28);
  --text: #f0f3ed;
  --muted: #8b958f;
  --muted-2: #68746c;
  --blue: #73d6a5;
  --cyan: #73d6a5;
  --amber: #f4b766;
  --red: #f17e87;
  --purple: #b49bff;
  --shadow: 0 22px 60px rgba(0, 0, 0, 0.22);
}

:root[data-theme="light"] {
  color-scheme: light;
  --bg: #edf3f9;
  --bg-deep: #e5edf5;
  --surface: #ffffff;
  --surface-2: #f2f6fa;
  --line: rgba(38, 64, 94, 0.14);
  --line-strong: rgba(38, 64, 94, 0.24);
  --text: #14243a;
  --muted: #5a6b80;
  --muted-2: #78889c;
  --blue: #2f78d1;
  --cyan: #178f8a;
  --amber: #bd741f;
  --red: #c6505b;
  --purple: #7656c6;
  --shadow: 0 18px 45px rgba(31, 58, 91, 0.11);
}

* { box-sizing: border-box; }

html { background: var(--bg-deep); }

body {
  margin: 0;
  color: var(--text);
  background:
    radial-gradient(circle at 78% 0%, rgba(57, 99, 72, 0.32), transparent 33rem),
    linear-gradient(135deg, #090b0a 0%, #0d120f 52%, #080a09 100%);
  font-family: Inter, Pretendard, "Noto Sans KR", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  min-width: 320px;
}

:root[data-theme="light"] body { background: radial-gradient(circle at 78% 0%, rgba(98, 161, 214, .19), transparent 33rem), linear-gradient(135deg, #f6f9fc 0%, #eef4fa 52%, #e8f0f8 100%); }

button, input { font: inherit; }
button { cursor: pointer; }

.app-shell { max-width: 1500px; min-height: 100vh; margin: 0 auto; padding: 0 42px 26px; }

.topbar { height: 82px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--line); }
.brand { display: flex; flex: 1 1 auto; align-items: center; min-width: 0; gap: 11px; color: inherit; text-decoration: none; }
.brand-logo { display: block; flex: 0 0 auto; width: 42px; height: 42px; object-fit: contain; }
.section-kicker { margin: 0; font-size: 10px; letter-spacing: 0.18em; color: var(--muted-2); font-weight: 700; }
.brand-wordmark { display: grid; gap: 1px; flex: 0 0 155px; width: 155px; min-width: 0; white-space: nowrap; }
.brand h1 { margin: 0; color: var(--text); font-family: "Arial Black", "Arial Rounded MT Bold", "Segoe UI Black", sans-serif; font-size: 24px; letter-spacing: .055em; line-height: .95; font-weight: 900; }
.brand-wordmark p { width: 100%; margin: 0; color: var(--muted); font-size: 10px; letter-spacing: .12em; word-spacing: 0; line-height: 1.2; font-weight: 700; white-space: nowrap; }
.topbar-status { display: flex; gap: 10px; align-items: center; }
.crisis-topbar { height: 70px; gap: 22px; justify-content: flex-start; }
.crisis-brand { display: flex; flex: 0 0 auto; align-items: center; height: 100%; color: inherit; text-decoration: none; }
.crisis-brand-lockup { display: inline-flex; align-items: center; gap: 9px; }
.crisis-brand-symbol { display: block; width: 31px; height: 31px; object-fit: contain; filter: invert(1) contrast(.94) brightness(1.45); }
.crisis-brand-wordmark { display: block; width: 115px; height: 25px; object-fit: contain; filter: invert(1) contrast(.94) brightness(1.45); }
.crisis-topbar .main-nav { display: flex; align-items: center; gap: 3px; min-width: 0; margin-right: auto; }
.crisis-topbar .main-nav-link { display: inline-flex; align-items: center; min-height: 34px; padding: 0 10px; border: 1px solid transparent; border-radius: 3px; color: #9ba9bd; font-size: 12px; font-weight: 600; text-decoration: none; white-space: nowrap; transition: color .16s, background .16s, border-color .16s; }
.crisis-topbar .main-nav-link:hover { border-color: rgba(108,229,218,.34); background: rgba(108,229,218,.08); color: #e2f5f4; }
.crisis-topbar .main-nav-link.is-active, .crisis-topbar .main-nav-link[aria-current="page"] { border-color: rgba(214,244,110,.44); background: rgba(214,244,110,.10); color: #d6f46e; }
.crisis-header-actions { display: flex; align-items: center; justify-content: flex-end; gap: 10px; min-width: 0; white-space: nowrap; }
.crisis-game-controls { display: flex; align-items: center; gap: 9px; }
.crisis-header-actions .current-user { padding-left: 12px; border-left: 1px solid var(--line); color: var(--muted); font-size: 11px; }
.crisis-header-actions .profile-link, .crisis-header-actions .admin-link { color: var(--cyan); font-size: 11px; font-weight: 700; text-decoration: none; }
.crisis-header-actions .profile-link:hover, .crisis-header-actions .admin-link:hover { color: #d9fffb; text-decoration: underline; text-underline-offset: 3px; }
.crisis-logout { color: #d6f46e; }
.country-chip, .date-chip { color: var(--muted); font-size: 11px; border: 1px solid var(--line); padding: 9px 11px; border-radius: 9px; background: rgba(16, 24, 19, 0.78); }
.country-chip { color: #c9dfcf; }
.theme-toggle { gap: 7px; min-width: 94px; }
.theme-toggle-icon { color: var(--amber); font-size: 15px; line-height: 1; }
.status-dot, .live-pill span, .radar-dot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--cyan); box-shadow: 0 0 0 4px rgba(108, 229, 218, 0.09), 0 0 14px rgba(108, 229, 218, 0.75); margin-right: 6px; vertical-align: 1px; }

:root[data-theme="light"] .country-chip, :root[data-theme="light"] .date-chip { color: #4d6078; background: rgba(255,255,255,.72); }
:root[data-theme="light"] .crisis-brand-symbol, :root[data-theme="light"] .crisis-brand-wordmark { filter: none; }
:root[data-theme="light"] .crisis-topbar .main-nav-link { color: #5a6b80; }
:root[data-theme="light"] .crisis-topbar .main-nav-link:hover { border-color: rgba(23,143,138,.36); background: rgba(23,143,138,.08); color: #1a4c57; }
:root[data-theme="light"] .crisis-topbar .main-nav-link.is-active, :root[data-theme="light"] .crisis-topbar .main-nav-link[aria-current="page"] { color: #587912; border-color: rgba(104,142,29,.44); background: rgba(128,169,46,.12); }

@media (max-width: 1320px) and (min-width: 1041px) {
  .crisis-topbar { height: auto; min-height: 70px; flex-wrap: wrap; padding-top: 10px; padding-bottom: 10px; gap: 8px 18px; }
  .crisis-topbar .main-nav { order: 3; flex: 1 0 100%; margin: 0; padding-top: 8px; border-top: 1px solid var(--line); overflow-x: auto; }
  .crisis-header-actions { margin-left: auto; gap: 7px; }
  .crisis-game-controls { gap: 7px; }
  .crisis-header-actions .current-user, .crisis-header-actions .profile-link, .crisis-header-actions .admin-link, .crisis-logout { display: none; }
}
:root[data-theme="light"] .country-chip { color: #263f5e; }
:root[data-theme="light"] .service-notice { border-color: rgba(23,143,138,.24); background: linear-gradient(90deg, rgba(23,143,138,.09), rgba(47,120,209,.055) 48%, rgba(118,86,198,.06)); }
:root[data-theme="light"] .service-notice p strong { color: #176e69; }

.service-notice { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 13px; padding: 10px 13px; border: 1px solid rgba(108,229,218,.22); border-radius: 10px; background: linear-gradient(90deg, rgba(108,229,218,.09), rgba(103,170,249,.055) 48%, rgba(180,155,255,.06)); }
.service-notice-copy { display: flex; align-items: center; min-width: 0; gap: 9px; }
.service-notice-icon { display: grid; flex: 0 0 auto; place-items: center; width: 18px; height: 18px; border: 1px solid rgba(108,229,218,.42); border-radius: 50%; color: var(--cyan); font-family: Georgia, serif; font-size: 12px; font-weight: 700; }
.service-notice p { display: flex; flex-wrap: wrap; gap: 7px; margin: 0; color: var(--muted); font-size: 10px; line-height: 1.5; }
.service-notice p strong { color: #cceeea; }
.service-notice-link, .footer-links button, .service-modal-note button { padding: 0; border: 0; color: var(--cyan); background: transparent; font-size: 10px; font-weight: 700; text-decoration: none; }
.service-notice-link { flex: 0 0 auto; white-space: nowrap; }
.service-notice-link:hover, .footer-links button:hover, .service-modal-note button:hover { color: #d9fffb; text-decoration: underline; text-underline-offset: 3px; }

.game-layout { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 24px; padding: 38px 0 24px; align-items: start; }
.main-column, .side-column { min-width: 0; }
.main-column { display: flex; flex-direction: column; gap: 18px; }
.side-column { display: flex; flex-direction: column; gap: 18px; }
.page-heading { display: flex; justify-content: space-between; gap: 24px; align-items: end; margin-bottom: 6px; }
.page-heading h2 { font-size: clamp(24px, 3vw, 37px); letter-spacing: -0.06em; line-height: 1.12; margin: 12px 0 10px; font-weight: 700; }
.page-heading-caption { display: inline-block; margin-left: 9px; color: var(--muted); font-size: .32em; font-weight: 600; letter-spacing: .025em; vertical-align: .3em; white-space: nowrap; }
.page-description { color: var(--muted); font-size: 13px; margin: 0; }
.live-pill { margin-left: 7px; color: var(--cyan); letter-spacing: 0.12em; }
.live-pill span { width: 4px; height: 4px; margin-right: 5px; }
.system-status { width: 120px; flex: 0 0 auto; padding-bottom: 3px; }
.system-status-label { display: block; color: var(--muted-2); font-size: 9px; letter-spacing: 0.14em; }
.system-status strong { display: block; font-size: 13px; margin: 7px 0 10px; color: var(--cyan); }
.system-status-line { display: flex; gap: 4px; }
.system-status-line i { height: 3px; flex: 1; border-radius: 10px; background: var(--cyan); opacity: 0.8; }
.system-status-line i:nth-last-child(-n+1) { opacity: 0.2; }

.korea-command { display: grid; grid-template-columns: minmax(0, 1.13fr) minmax(320px, .87fr); overflow: hidden; min-height: 316px; background: linear-gradient(125deg, rgba(20, 42, 29, .96), rgba(12, 22, 16, .96) 52%, rgba(15, 28, 20, .98)); }
.command-map, .exposure-board { min-width: 0; padding: 21px 23px; }
.command-map { position: relative; overflow: hidden; background: radial-gradient(circle at 46% 54%, rgba(67, 137, 91, .18), transparent 42%), linear-gradient(145deg, rgba(32, 80, 49, .16), transparent 56%); }
.exposure-board { border-left: 1px solid rgba(157, 185, 165, .14); background: linear-gradient(150deg, rgba(10, 18, 13, .70), rgba(16, 30, 21, .58)); }
.command-heading { position: relative; z-index: 2; display: flex; align-items: start; justify-content: space-between; gap: 10px; }
.command-heading h3 { margin: 6px 0 0; font-size: 16px; letter-spacing: -.04em; }
.map-live { display: inline-flex; align-items: center; gap: 6px; color: var(--cyan); font-size: 9px; white-space: nowrap; }
.map-live i { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--cyan); box-shadow: 0 0 0 4px rgba(108,229,218,.09), 0 0 14px rgba(108,229,218,.7); animation: pulse 1.8s ease-in-out infinite; }
.map-stage { position: relative; height: 250px; margin: 4px -12px -16px; overflow: hidden; }
.map-grid { position: absolute; inset: 0; opacity: .22; background-image: linear-gradient(rgba(126, 181, 220, .25) 1px, transparent 1px), linear-gradient(90deg, rgba(126, 181, 220, .25) 1px, transparent 1px); background-size: 31px 31px; mask-image: linear-gradient(90deg, transparent, black 18%, black 82%, transparent); }
.grid-a { transform: perspective(360px) rotateX(55deg) translateY(42px) scale(1.3); transform-origin: top; }
.grid-b { opacity: .06; transform: rotate(32deg) scale(1.5); }
.korea-map { position: absolute; z-index: 1; top: 10px; left: 50%; width: min(92%, 410px); height: 245px; transform: translateX(-48%); overflow: visible; }
.sea-ring { fill: none; stroke: rgba(103,170,249,.16); stroke-width: .7; }
.ring-two { stroke: rgba(108,229,218,.12); stroke-dasharray: 2 5; }
.route { fill: none; stroke: rgba(108,229,218,.76); stroke-width: 1.2; stroke-linecap: round; stroke-dasharray: 4 7; animation: routeFlow 7s linear infinite; }
.route-east { stroke: rgba(180,155,255,.85); animation-duration: 8s; }
.route-west { stroke: rgba(244,183,102,.74); animation-duration: 9s; }
.peninsula-faint { opacity: .28; filter: saturate(.7) brightness(.82); }
.peninsula-south { filter: drop-shadow(0 0 9px rgba(108,229,218,.52)) saturate(1.16) brightness(1.16); }
.city-node { fill: #dcffff; stroke: var(--cyan); stroke-width: 2; filter: drop-shadow(0 0 7px rgba(108,229,218,.95)); }
.city-seoul { animation: cityPulse 1.8s ease-out infinite; transform-origin: 175px 96px; }
.city-busan { fill: #d9e7ff; stroke: var(--blue); }
.city-ulsan { fill: #fff2dc; stroke: var(--amber); }
.route-dot { fill: var(--cyan); filter: drop-shadow(0 0 6px var(--cyan)); animation: dotBlink 1.4s ease-in-out infinite alternate; }
.dot-east { fill: var(--purple); filter: drop-shadow(0 0 6px var(--purple)); animation-delay: .5s; }
.dot-west { fill: var(--amber); filter: drop-shadow(0 0 6px var(--amber)); animation-delay: .9s; }
.map-label, .route-label { position: absolute; z-index: 2; pointer-events: none; }
.map-label { display: grid; gap: 2px; padding: 5px 7px; border: 1px solid rgba(143, 203, 223, .24); border-radius: 5px; background: rgba(8, 19, 31, .72); box-shadow: 0 6px 18px rgba(0,0,0,.17); }
.map-label strong { color: #dffaff; font-size: 10px; line-height: 1; }
.map-label span, .route-label { color: var(--muted); font-size: 8px; line-height: 1.15; }
.label-seoul { top: 86px; left: 46%; }
.label-busan { bottom: 12px; left: 48%; }
.route-label { padding: 4px 6px; border-radius: 4px; background: rgba(8, 19, 31, .42); letter-spacing: .02em; }
.label-middle-east { right: 0; bottom: 13px; color: #dfb77e; }
.label-east { right: 1px; top: 38px; color: #c4b3ff; }
.label-west { left: 0; top: 83px; color: #e3c08b; }
.compact-command-heading { align-items: start; }
.turn-badge { display: grid; place-items: center; flex: 0 0 auto; width: 29px; height: 29px; border: 1px solid rgba(103,170,249,.35); border-radius: 8px; color: var(--blue); background: rgba(103,170,249,.08); font-size: 10px; font-weight: 700; }
.exposure-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; margin-top: 18px; }
.exposure-card { position: relative; min-height: 101px; overflow: hidden; padding: 11px 10px 9px; border: 1px solid rgba(160, 185, 215, .12); border-radius: 9px; background: rgba(8, 15, 25, .34); }
.exposure-card::after { position: absolute; right: -18px; bottom: -23px; width: 64px; height: 64px; border: 1px solid currentColor; border-radius: 50%; content: ""; opacity: .12; }
.exposure-chip { color: var(--purple); }
.exposure-export { color: var(--cyan); }
.exposure-fx { color: var(--blue); }
.exposure-energy { color: var(--amber); }
.exposure-icon { display: grid; place-items: center; width: 19px; height: 19px; border-radius: 5px; color: currentColor; background: color-mix(in srgb, currentColor 11%, transparent); font-size: 11px; }
.exposure-card p { margin: 8px 0 4px; color: var(--muted); font-size: 9px; white-space: nowrap; }
.exposure-card strong { display: block; color: var(--text); font-size: 16px; letter-spacing: -.04em; font-variant-numeric: tabular-nums; }
.exposure-card small { display: block; margin-top: 5px; color: var(--muted-2); font-size: 8px; white-space: nowrap; }
.exposure-meter { height: 3px; margin-top: 8px; overflow: hidden; border-radius: 10px; background: rgba(160,185,215,.11); }
.exposure-meter span { display: block; width: 50%; height: 100%; border-radius: inherit; background: currentColor; transition: width .35s ease, background .35s ease; }
.command-brief { display: flex; gap: 7px; margin-top: 15px; padding-top: 12px; border-top: 1px solid rgba(160,185,215,.1); color: var(--muted); font-size: 10px; line-height: 1.45; }
.brief-dot { flex: 0 0 auto; width: 6px; height: 6px; margin-top: 4px; border-radius: 50%; background: var(--cyan); box-shadow: 0 0 10px rgba(108,229,218,.75); }
@keyframes routeFlow { to { stroke-dashoffset: -44; } }
@keyframes cityPulse { 50% { opacity: .58; transform: scale(1.75); } }
@keyframes dotBlink { to { opacity: .32; } }
@keyframes pulse { 50% { opacity: .45; transform: scale(.82); } }

.metric-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.metric-card { position: relative; overflow: hidden; min-height: 118px; padding: 17px 18px 15px; border-radius: 13px; border: 1px solid var(--line); background: linear-gradient(145deg, rgba(25, 38, 29, 0.92), rgba(13, 20, 15, 0.88)); box-shadow: 0 10px 30px rgba(0,0,0,.08); }
.metric-card::after { content: ""; position: absolute; width: 90px; height: 90px; right: -36px; bottom: -45px; border-radius: 50%; border: 1px solid currentColor; opacity: 0.1; }
.metric-inflation { color: var(--amber); }
.metric-growth { color: var(--cyan); }
.metric-jobs { color: var(--purple); }
.metric-stability { color: var(--blue); }
.metric-topline { display: flex; align-items: center; justify-content: space-between; color: var(--muted); font-size: 11px; }
.metric-icon { color: currentColor; font-size: 16px; opacity: 0.7; }
.metric-value { display: block; margin: 15px 0 8px; color: var(--text); font-size: 27px; letter-spacing: -0.04em; font-weight: 700; }
.value-unit { color: var(--muted); font-size: 12px; font-weight: 500; letter-spacing: 0; }
.metric-foot { display: block; color: var(--muted-2); font-size: 10px; }

.panel { border: 1px solid var(--line); border-radius: 13px; background: rgba(16, 23, 18, 0.80); box-shadow: var(--shadow); }
:root[data-theme="light"] .panel { background: rgba(255,255,255,.82); }
.chart-panel { padding: 21px 22px 16px; }
.panel-heading { display: flex; align-items: start; justify-content: space-between; gap: 18px; }
.panel-heading h3 { margin: 6px 0 0; font-size: 16px; letter-spacing: -0.04em; font-weight: 700; }
.chart-legend { color: var(--muted-2); font-size: 10px; padding-top: 3px; white-space: nowrap; }
.legend-line, .legend-target { display: inline-block; width: 17px; height: 2px; vertical-align: 3px; margin-right: 4px; background: var(--blue); }
.legend-target { margin-left: 10px; background: repeating-linear-gradient(90deg, var(--muted-2) 0 3px, transparent 3px 6px); opacity: .7; }
.chart-wrap { position: relative; height: 218px; margin: 21px 0 0; padding-left: 28px; }
#stabilityChart { display: block; width: 100%; height: 100%; }
.chart-axis-label { position: absolute; left: 0; color: var(--muted-2); font-size: 9px; line-height: 1; }
.axis-top { top: 1px; }
.axis-mid { top: 30%; }
.axis-bottom { bottom: 0; }
.chart-labels { display: flex; justify-content: space-between; margin: 7px 0 0 29px; color: var(--muted-2); font-size: 9px; }

.current-market-panel { padding: 21px 22px 17px; background: linear-gradient(115deg, rgba(103,170,249,.07), rgba(180,155,255,.045) 52%, rgba(108,229,218,.055)); }
.current-market-heading { align-items: end; margin-bottom: 13px; }
.current-market-status { display: grid; justify-items: end; gap: 4px; max-width: 190px; color: var(--muted-2); font-size: 9px; line-height: 1.45; text-align: right; }
.current-market-status b { display: inline-flex; align-items: center; gap: 4px; color: var(--muted); font-size: 8px; font-weight: 600; }
.current-market-status i { width: 8px; height: 8px; border: 1px solid #ebdcff; border-radius: 50%; background: var(--purple); box-shadow: 0 0 0 2px rgba(180,155,255,.16); }
.current-market-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 9px; }
.current-market-grid .historical-trend-card { padding: 11px 11px 9px; background: rgba(8,15,26,.23); }
.current-market-grid .historical-trend-chart { height: 70px; }
.current-market-grid .historical-trend-heading strong { font-size: 13px; }
.current-market-policy-marker .policy-point { fill: var(--purple); stroke: #ebdcff; stroke-width: 1.4; filter: drop-shadow(0 0 4px rgba(180,155,255,.72)); }
.current-market-policy-marker text { fill: #e2d7ff; font-size: 7px; font-weight: 800; }
.current-market-note { margin: 10px 0 0; padding-top: 9px; border-top: 1px solid rgba(160,185,215,.11); color: var(--muted-2); font-size: 9px; line-height: 1.55; }

.event-panel { display: flex; gap: 17px; position: relative; padding: 21px 23px; overflow: hidden; border: 1px solid rgba(244, 183, 102, 0.25); border-radius: 13px; background: linear-gradient(110deg, rgba(62, 46, 28, .46), rgba(26, 28, 38, .75) 48%, rgba(17, 26, 40, .75)); }
.event-panel::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--amber); box-shadow: 0 0 18px rgba(244, 183, 102, .6); }
.event-mark { display: grid; place-items: center; flex: 0 0 42px; width: 42px; height: 42px; border-radius: 12px; color: var(--amber); border: 1px solid rgba(244, 183, 102, 0.26); background: rgba(244, 183, 102, 0.1); font-size: 22px; }
.event-copy { min-width: 0; }
.event-meta { display: flex; align-items: center; gap: 9px; color: var(--amber); font-size: 9px; letter-spacing: .13em; font-weight: 700; }
.event-quarter { color: var(--muted-2); letter-spacing: .06em; }
.event-copy h3 { margin: 7px 0 7px; font-size: 17px; letter-spacing: -.04em; }
.event-copy p { margin: 0; max-width: 690px; color: var(--muted); font-size: 12px; line-height: 1.6; }
.impact-list { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.impact-chip { padding: 5px 7px; border-radius: 5px; font-size: 10px; color: #d5b383; background: rgba(244, 183, 102, .09); border: 1px solid rgba(244, 183, 102, .16); }
.event-tag { flex: 0 0 auto; align-self: start; margin-left: auto; padding: 6px 8px; color: var(--amber); border: 1px solid rgba(244, 183, 102, .25); border-radius: 5px; background: rgba(244, 183, 102, .07); font-size: 10px; white-space: nowrap; }

.policy-panel { padding: 21px 23px 18px; }
.policy-heading { align-items: center; }
.policy-capacity { color: var(--muted-2); font-size: 10px; white-space: nowrap; }
.policy-capacity strong { color: var(--cyan); font-size: 16px; margin: 0 3px 0 9px; }
.policy-restore-row { display: flex; justify-content: flex-end; margin-top: 13px; }
.policy-restore-actions { display: flex; gap: 7px; flex: 0 0 auto; }
.policy-restore-actions .button { padding: 7px 9px; font-size: 9px; }
.policy-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 28px; margin-top: 25px; }
.policy-divider { display: flex; align-items: center; gap: 12px; margin-top: 26px; padding-top: 16px; border-top: 1px solid var(--line); }
.policy-divider span { flex: 0 0 auto; color: var(--muted); font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.policy-divider p { margin: 0; color: var(--muted-2); font-size: 10px; }
.policy-grid-advanced { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px 22px; margin-top: 18px; }
.policy-grid-advanced .policy-label { font-size: 11px; }
.policy-grid-advanced .policy-symbol { width: 21px; height: 21px; }
.policy-control-wrap { position: relative; min-width: 0; }
.policy-control-wrap::before { position: absolute; z-index: 0; inset: -7px; border: 1px solid transparent; border-radius: 10px; content: ""; pointer-events: none; transition: border-color .2s ease, background .2s ease, box-shadow .2s ease; }
.policy-control-wrap.is-changed::before { border-color: rgba(241,126,135,.86); background: rgba(241,126,135,.055); box-shadow: 0 0 0 2px rgba(241,126,135,.055); }
.policy-control-wrap > * { position: relative; z-index: 1; }
.policy-control { display: block; min-width: 0; }
.policy-control-wrap .policy-label { padding-right: 23px; }
.policy-label { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; color: #ccd8e7; font-size: 12px; }
.policy-label strong { margin-left: auto; color: var(--text); font-variant-numeric: tabular-nums; }
.policy-agency { margin: -7px 0 11px 30px; color: var(--muted-2); font-size: 9px; line-height: 1.35; }
.policy-agency span { margin-right: 5px; color: var(--cyan); font-size: 8px; font-weight: 700; letter-spacing: .04em; }
.policy-reset-button { display: none; flex: 0 0 auto; padding: 3px 5px; border: 1px solid rgba(241,126,135,.38); border-radius: 4px; color: #f1a5ad; background: rgba(241,126,135,.09); font-size: 8px; font-weight: 700; line-height: 1; transition: color .16s ease, background .16s ease, border-color .16s ease; }
.policy-control-wrap.is-changed .policy-reset-button { display: inline-flex; align-items: center; }
.policy-reset-button:hover { border-color: rgba(241,126,135,.8); color: #ffd6d9; background: rgba(241,126,135,.18); }
.info-badge { position: absolute; z-index: 2; top: 1px; right: 0; display: grid; place-items: center; width: 18px; height: 18px; padding: 0; border: 1px solid rgba(160,185,215,.28); border-radius: 50%; color: var(--muted); background: rgba(160,185,215,.07); font-family: Georgia, serif; font-size: 12px; font-weight: 700; line-height: 1; transition: color .18s ease, background .18s ease, border-color .18s ease, transform .18s ease; }
.info-badge:hover, .info-badge[aria-expanded="true"] { border-color: rgba(108,229,218,.55); color: var(--cyan); background: rgba(108,229,218,.12); transform: translateY(-1px); }
.policy-symbol { display: grid; place-items: center; width: 22px; height: 22px; border-radius: 6px; color: var(--cyan); background: rgba(108, 229, 218, .09); font-size: 12px; }
.symbol-rate { color: var(--blue); background: rgba(103, 170, 249, .1); }
.symbol-stimulus { color: var(--cyan); }
.symbol-reserve { color: var(--amber); background: rgba(244, 183, 102, .1); }
.symbol-controls { color: var(--purple); background: rgba(180, 155, 255, .1); }
.symbol-fx { color: var(--purple); background: rgba(180, 155, 255, .1); }
.symbol-liquidity { color: var(--blue); background: rgba(103, 170, 249, .1); }
.symbol-employment { color: var(--cyan); background: rgba(108, 229, 218, .1); }
.symbol-diversify { color: var(--amber); background: rgba(244, 183, 102, .1); }
.symbol-tax { color: var(--red); background: rgba(241, 126, 135, .1); }
.range-input { width: 100%; height: 4px; appearance: none; border: 0; border-radius: 10px; outline: none; background: linear-gradient(90deg, var(--blue) 0%, var(--blue) 50%, rgba(160, 185, 215, .13) 50%, rgba(160, 185, 215, .13) 100%); }
.range-input::-webkit-slider-thumb { appearance: none; width: 14px; height: 14px; border-radius: 50%; border: 3px solid var(--surface); background: var(--blue); box-shadow: 0 0 0 1px rgba(103,170,249,.85), 0 0 12px rgba(103,170,249,.4); }
.range-input::-moz-range-thumb { width: 10px; height: 10px; border-radius: 50%; border: 3px solid var(--surface); background: var(--blue); box-shadow: 0 0 0 1px rgba(103,170,249,.85), 0 0 12px rgba(103,170,249,.4); }
.stimulus-range { background: linear-gradient(90deg, var(--cyan) 0%, var(--cyan) 40%, rgba(160, 185, 215, .13) 40%, rgba(160, 185, 215, .13) 100%); }
.stimulus-range::-webkit-slider-thumb, .stimulus-range::-moz-range-thumb { background: var(--cyan); box-shadow: 0 0 0 1px rgba(108,229,218,.85), 0 0 12px rgba(108,229,218,.4); }
.reserve-range { background: linear-gradient(90deg, var(--amber) 0%, var(--amber) 50%, rgba(160, 185, 215, .13) 50%, rgba(160, 185, 215, .13) 100%); }
.reserve-range::-webkit-slider-thumb, .reserve-range::-moz-range-thumb { background: var(--amber); box-shadow: 0 0 0 1px rgba(244,183,102,.85), 0 0 12px rgba(244,183,102,.4); }
.controls-range { background: linear-gradient(90deg, var(--purple) 0%, var(--purple) 20%, rgba(160, 185, 215, .13) 20%, rgba(160, 185, 215, .13) 100%); }
.controls-range::-webkit-slider-thumb, .controls-range::-moz-range-thumb { background: var(--purple); box-shadow: 0 0 0 1px rgba(180,155,255,.85), 0 0 12px rgba(180,155,255,.4); }
.rate-range { --range-color: var(--blue); }
.stimulus-range { --range-color: var(--cyan); }
.reserve-range { --range-color: var(--amber); }
.controls-range, .fx-range { --range-color: var(--purple); }
.liquidity-range { --range-color: var(--blue); }
.employment-range { --range-color: var(--cyan); }
.diversify-range { --range-color: var(--amber); }
.tax-range { --range-color: var(--red); }
.fx-range::-webkit-slider-thumb, .fx-range::-moz-range-thumb { background: var(--purple); box-shadow: 0 0 0 1px rgba(180,155,255,.85), 0 0 12px rgba(180,155,255,.4); }
.liquidity-range::-webkit-slider-thumb, .liquidity-range::-moz-range-thumb { background: var(--blue); }
.employment-range::-webkit-slider-thumb, .employment-range::-moz-range-thumb { background: var(--cyan); }
.diversify-range::-webkit-slider-thumb, .diversify-range::-moz-range-thumb { background: var(--amber); }
.tax-range::-webkit-slider-thumb, .tax-range::-moz-range-thumb { background: var(--red); box-shadow: 0 0 0 1px rgba(241,126,135,.85), 0 0 12px rgba(241,126,135,.4); }
.range-meta { display: flex; justify-content: space-between; margin-top: 7px; color: var(--muted-2); font-size: 9px; }
.policy-footer { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 27px; padding-top: 16px; border-top: 1px solid var(--line); }
.policy-footer p { margin: 0; color: var(--muted); font-size: 11px; }
.policy-alert-dot { display: inline-block; width: 6px; height: 6px; margin-right: 7px; vertical-align: 1px; border-radius: 50%; background: var(--amber); }
.button { display: inline-flex; gap: 14px; align-items: center; justify-content: center; border: 0; border-radius: 8px; padding: 11px 15px; color: var(--text); background: var(--surface-2); border: 1px solid var(--line-strong); font-size: 11px; font-weight: 700; transition: transform .18s ease, background .18s ease, border-color .18s ease; }
.button:hover { transform: translateY(-1px); border-color: rgba(103, 170, 249, .5); }
.button:disabled { cursor: not-allowed; color: var(--muted-2); border-color: rgba(160,185,215,.1); background: rgba(160,185,215,.04); box-shadow: none; opacity: .55; transform: none; }
.button:focus-visible, .range-input:focus-visible { outline: 2px solid var(--cyan); outline-offset: 3px; }
.button-primary { color: #092024; border-color: rgba(108, 229, 218, .5); background: linear-gradient(135deg, #75e8dc, #55cfcf); box-shadow: 0 8px 20px rgba(55, 191, 183, .18); }
.button-primary:hover { background: linear-gradient(135deg, #8cf0e4, #62d8d5); }
.button-ghost { color: var(--muted); background: transparent; }
.button-small { padding: 8px 11px; font-size: 10px; }
.button-covid { gap: 7px; color: #ffe3ba; border-color: rgba(244,183,102,.43); background: linear-gradient(135deg, rgba(120,71,42,.78), rgba(88,48,69,.78)); box-shadow: inset 0 1px 0 rgba(255,233,188,.09), 0 8px 20px rgba(72,31,38,.17); }
.button-covid span { color: var(--amber); font-size: 12px; line-height: 1; }
.button-covid:hover { border-color: rgba(244,183,102,.8); background: linear-gradient(135deg, rgba(143,82,43,.93), rgba(107,52,77,.93)); }
.button-arrow { font-size: 17px; line-height: 10px; }
.button-block { width: 100%; }

.side-column .panel { box-shadow: none; }
.objective-panel, .signals-panel, .log-panel { padding: 19px 18px; }
.compact-heading { align-items: center; }
.compact-heading h3 { font-size: 14px; }
.mission-count, .log-count { color: var(--muted-2); font-size: 10px; font-variant-numeric: tabular-nums; }
.objective-copy { margin: 16px 0 15px; color: var(--muted); font-size: 11px; line-height: 1.65; }
.mission-progress { height: 5px; overflow: hidden; border-radius: 10px; background: rgba(160, 185, 215, .1); }
.mission-progress span { display: block; height: 100%; width: 8.3%; border-radius: inherit; background: linear-gradient(90deg, var(--cyan), var(--blue)); transition: width .4s ease; }
.objective-row { display: flex; justify-content: space-between; margin-top: 12px; color: var(--muted-2); font-size: 10px; }
.objective-row strong { color: var(--cyan); font-weight: 500; }
.radar-dot { margin: 0; background: var(--amber); box-shadow: 0 0 0 4px rgba(244, 183, 102, .09), 0 0 14px rgba(244, 183, 102, .7); }
.signal-list { margin-top: 14px; }
.signal-row { display: flex; align-items: center; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid var(--line); color: var(--muted); font-size: 11px; }
.signal-row:last-child { border-bottom: 0; padding-bottom: 0; }
.signal-row span { display: flex; align-items: center; gap: 8px; }
.signal-row strong { color: var(--text); font-size: 11px; font-variant-numeric: tabular-nums; }
.signal-row small { color: var(--muted-2); font-size: 9px; font-weight: 400; }
.signal-icon { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 5px; color: var(--blue); background: rgba(103, 170, 249, .1); font-size: 10px; font-style: normal; }
.signal-fx-icon { color: var(--purple); background: rgba(180,155,255,.1); }
.signal-oil-icon { color: var(--amber); background: rgba(244,183,102,.1); }
.signal-supply-icon { color: var(--cyan); background: rgba(108,229,218,.1); }
.signal-export-icon { color: var(--purple); background: rgba(180,155,255,.1); }
.resilience-panel { padding: 19px 18px; }
.resilience-status { color: var(--cyan); font-size: 10px; }
.resilience-list { display: grid; gap: 13px; margin-top: 16px; }
.resilience-item > div:first-child { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; color: var(--muted); font-size: 10px; }
.resilience-item strong { color: var(--text); font-size: 12px; font-variant-numeric: tabular-nums; }
.resilience-meter { height: 4px; margin: 7px 0 5px; overflow: hidden; border-radius: 10px; background: rgba(160,185,215,.1); }
.resilience-meter span { display: block; width: 50%; height: 100%; border-radius: inherit; background: var(--cyan); transition: width .35s ease; }
.resilience-meter span[data-tone="watch"] { background: var(--amber); }
.resilience-meter span[data-tone="risk"] { background: var(--red); }
.resilience-item small { color: var(--muted-2); font-size: 9px; }
.citizen-approval { margin-top: 2px; padding: 12px; border: 1px solid rgba(108,229,218,.16); border-radius: 10px; background: radial-gradient(circle at 20% 28%, rgba(108,229,218,.1), transparent 42%), rgba(12,22,35,.5); }
.approval-heading { display: flex; align-items: center; justify-content: space-between; color: var(--muted); font-size: 10px; }
.approval-mood { padding: 3px 6px; border: 1px solid rgba(108,229,218,.2); border-radius: 999px; color: var(--cyan); background: rgba(108,229,218,.06); font-size: 8px; }
.approval-stage { display: flex; align-items: center; gap: 11px; margin: 10px 0 8px; }
.citizen-face { position: relative; flex: 0 0 64px; width: 64px; height: 64px; overflow: hidden; border: 1px solid rgba(108,229,218,.58); border-radius: 50%; background: #112338; box-shadow: 0 0 0 4px rgba(108,229,218,.07), 0 9px 20px rgba(0,0,0,.28); transition: border-color .3s ease, box-shadow .3s ease, transform .3s ease; }
.citizen-portrait { display: block; width: 100%; height: 100%; }
.citizen-face .portrait-mouth-neutral, .citizen-face .portrait-mouth-worried { display: none; }
.citizen-face[data-mood="smile"] { animation: citizenFloat 3.3s ease-in-out infinite; }
.citizen-face[data-mood="delighted"] { border-color: rgba(108,229,218,.9); box-shadow: 0 0 0 4px rgba(108,229,218,.12), 0 9px 23px rgba(0,0,0,.28), 0 0 22px rgba(108,229,218,.2); animation: citizenCelebrate 1.9s ease-in-out infinite; }
.citizen-face[data-mood="delighted"] .portrait-eyes { transform: scaleY(.56); transform-origin: center; }
.citizen-face[data-mood="delighted"] .portrait-mouth-smile { stroke-width: 2.8px; }
.citizen-face[data-mood="neutral"] { border-color: rgba(244,183,102,.7); }
.citizen-face[data-mood="neutral"] .portrait-mouth-smile { display: none; }
.citizen-face[data-mood="neutral"] .portrait-mouth-neutral { display: block; }
.citizen-face[data-mood="neutral"] .portrait-cheeks { opacity: .16; }
.citizen-face[data-mood="worried"] { border-color: rgba(244,183,102,.84); }
.citizen-face[data-mood="worried"] .portrait-mouth-smile { display: none; }
.citizen-face[data-mood="worried"] .portrait-mouth-worried { display: block; }
.citizen-face[data-mood="worried"] .portrait-brows { transform: translateY(2px) rotate(4deg); transform-origin: center; }
.citizen-face[data-mood="upset"] { border-color: rgba(241,126,135,.9); box-shadow: 0 0 0 4px rgba(241,126,135,.08), 0 9px 20px rgba(0,0,0,.28); animation: citizenShake 1.7s ease-in-out infinite; }
.citizen-face[data-mood="upset"] .portrait-mouth-smile { display: none; }
.citizen-face[data-mood="upset"] .portrait-mouth-worried { display: block; stroke: #8b4555; }
.citizen-face[data-mood="upset"] .portrait-brows { transform: translateY(2px) rotate(-5deg); transform-origin: center; }
.citizen-face[data-mood="upset"] .portrait-cheeks { opacity: .9; }
.approval-score { display: grid; gap: 2px; min-width: 0; }
.approval-score strong { color: var(--text); font-size: 23px; letter-spacing: -.05em; font-variant-numeric: tabular-nums; }
.approval-score span { color: var(--muted); font-size: 9px; }
.approval-score small { overflow: hidden; max-width: 165px; color: var(--muted-2); text-overflow: ellipsis; white-space: nowrap; }
@keyframes citizenFloat { 50% { transform: translateY(-2px) rotate(1deg); } }
@keyframes citizenCelebrate { 50% { transform: translateY(-3px) scale(1.035); } }
@keyframes citizenShake { 25% { transform: rotate(-1.5deg); } 75% { transform: rotate(1.5deg); } }
.log-list { min-height: 74px; margin-top: 14px; }
.empty-log { display: flex; align-items: center; gap: 10px; color: var(--muted-2); font-size: 10px; line-height: 1.6; }
.empty-log span { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: rgba(160,185,215,.07); color: var(--muted); font-size: 15px; }
.log-entry { display: grid; grid-template-columns: 31px minmax(0, 1fr) auto; gap: 8px; align-items: center; padding: 9px 0; border-bottom: 1px solid var(--line); }
.log-entry:last-child { border-bottom: 0; }
.log-quarter { color: var(--muted-2); font-size: 10px; }
.log-title { overflow: hidden; color: #c9d5e5; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.log-score { color: var(--cyan); font-size: 10px; font-variant-numeric: tabular-nums; }
.guide-block { padding: 5px 3px 0; }
.guide-block p:last-child { margin: 8px 0 0; color: var(--muted-2); font-size: 10px; line-height: 1.65; }
.footer-bar { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 1px 0; color: var(--muted-2); font-size: 9px; letter-spacing: .01em; }
.footer-meta { display: flex; flex-wrap: wrap; gap: 4px 12px; }
.footer-links { display: flex; flex: 0 0 auto; gap: 12px; align-items: center; }
.footer-links button { color: var(--muted); white-space: nowrap; }

.toast { position: fixed; left: 50%; bottom: 26px; z-index: 30; transform: translate(-50%, 18px); padding: 11px 15px; border: 1px solid rgba(108,229,218,.25); border-radius: 8px; color: #cdeae6; background: rgba(17,26,40,.96); box-shadow: var(--shadow); font-size: 11px; opacity: 0; pointer-events: none; transition: opacity .2s ease, transform .2s ease; }
.toast.visible { opacity: 1; transform: translate(-50%, 0); }
.policy-tooltip { position: fixed; z-index: 45; width: min(326px, calc(100vw - 30px)); padding: 14px 14px 13px; border: 1px solid rgba(108,229,218,.32); border-radius: 10px; color: var(--text); background: linear-gradient(145deg, rgba(22,36,56,.98), rgba(10,18,30,.98)); box-shadow: 0 18px 45px rgba(0,0,0,.42), 0 0 24px rgba(108,229,218,.08); opacity: 1; transform: translateY(0) scale(1); transform-origin: top left; transition: opacity .16s ease, transform .16s ease; }
.policy-tooltip.hidden { pointer-events: none; opacity: 0; transform: translateY(-5px) scale(.98); }
.tooltip-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: var(--cyan); font-size: 12px; font-weight: 700; }
.tooltip-close { display: grid; place-items: center; width: 20px; height: 20px; padding: 0; border: 0; border-radius: 5px; color: var(--muted); background: rgba(160,185,215,.07); font-size: 16px; line-height: 1; }
.tooltip-close:hover { color: var(--text); background: rgba(160,185,215,.13); }
.policy-tooltip p { margin: 9px 0 11px; color: #b6c4d7; font-size: 11px; line-height: 1.55; }
.tooltip-effects { display: flex; flex-wrap: wrap; gap: 6px; }
.tooltip-effects span { padding: 5px 6px; border: 1px solid rgba(160,185,215,.13); border-radius: 5px; color: var(--muted); background: rgba(160,185,215,.06); font-size: 9px; }
.tooltip-effects span[data-tone="good"] { border-color: rgba(108,229,218,.2); color: #a8ebe4; background: rgba(108,229,218,.08); }
.tooltip-effects span[data-tone="risk"] { border-color: rgba(241,126,135,.2); color: #f3adb4; background: rgba(241,126,135,.08); }
.modal-backdrop { position: fixed; inset: 0; z-index: 20; display: grid; place-items: center; padding: 22px; background: rgba(5, 8, 13, .75); backdrop-filter: blur(8px); }
.modal-backdrop.hidden { display: none; }
.service-modal-backdrop { z-index: 75; overflow-y: auto; align-items: start; }
.service-modal { width: min(100%, 680px); margin: auto; overflow: hidden; border: 1px solid rgba(108,229,218,.27); border-radius: 18px; color: var(--text); background: linear-gradient(145deg, #142338, #0c1522 60%, #111827); box-shadow: 0 34px 100px rgba(0,0,0,.56), 0 0 45px rgba(108,229,218,.07); }
.service-modal-header { display: flex; align-items: start; justify-content: space-between; gap: 22px; padding: 25px 28px 20px; border-bottom: 1px solid rgba(160,185,215,.14); background: radial-gradient(circle at 87% 0%, rgba(108,229,218,.13), transparent 17rem), linear-gradient(105deg, rgba(30,50,74,.83), rgba(13,22,35,.55)); }
.service-modal-header h2 { margin: 8px 0 0; font-size: clamp(23px, 3vw, 30px); letter-spacing: -.055em; }
.service-modal-close { display: grid; place-items: center; flex: 0 0 auto; width: 34px; height: 34px; padding: 0; border: 1px solid rgba(160,185,215,.22); border-radius: 9px; color: var(--muted); background: rgba(8,14,24,.32); font-size: 24px; line-height: 1; transition: color .18s ease, border-color .18s ease, background .18s ease; }
.service-modal-close:hover { color: var(--text); border-color: rgba(108,229,218,.5); background: rgba(108,229,218,.1); }
.service-modal-body { padding: 24px 28px 28px; }
.service-modal-lead { margin: 0; color: #c1d0e2; font-size: 12px; line-height: 1.65; }
.notice-statement { display: grid; gap: 11px; margin: 19px 0; padding: 15px 16px; border: 1px solid rgba(160,185,215,.14); border-left: 2px solid var(--cyan); border-radius: 9px; background: rgba(160,185,215,.045); }
.notice-statement p { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.7; }
.service-modal-actions { display: flex; justify-content: flex-end; gap: 8px; }
.privacy-modal { width: min(100%, 760px); }
.privacy-policy { display: grid; gap: 15px; }
.privacy-policy section { padding-bottom: 15px; border-bottom: 1px solid rgba(160,185,215,.12); }
.privacy-policy section:last-child { padding-bottom: 0; border-bottom: 0; }
.privacy-policy h3 { margin: 0 0 7px; color: #d5e2f1; font-size: 12px; letter-spacing: -.02em; }
.privacy-policy section p { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.68; }
.privacy-contact { display: inline-block; margin-top: 8px; color: var(--cyan); font-size: 11px; font-weight: 700; text-underline-offset: 3px; }
.contact-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; margin: 20px 0 13px; }
.contact-option { display: grid; grid-template-columns: 29px minmax(0, 1fr) auto; gap: 10px; align-items: center; min-height: 78px; padding: 12px; border: 1px solid rgba(160,185,215,.18); border-radius: 10px; color: var(--text); background: rgba(160,185,215,.045); text-decoration: none; transition: transform .18s ease, border-color .18s ease, background .18s ease; }
.contact-option:hover { transform: translateY(-2px); border-color: rgba(108,229,218,.46); background: rgba(108,229,218,.07); }
.contact-option-icon { display: grid; place-items: center; width: 29px; height: 29px; border-radius: 8px; color: var(--cyan); background: rgba(108,229,218,.1); font-size: 14px; }
.contact-option-icon.is-amber { color: var(--amber); background: rgba(244,183,102,.1); }
.contact-option span:nth-child(2) { min-width: 0; }
.contact-option b, .contact-option small { display: block; }
.contact-option b { color: #dce9f7; font-size: 11px; }
.contact-option small { margin-top: 4px; color: var(--muted-2); font-size: 9px; line-height: 1.4; }
.contact-option > i { color: var(--muted-2); font-size: 13px; font-style: normal; }
.contact-email { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 13px; border-radius: 9px; background: rgba(103,170,249,.06); }
.contact-email span { color: var(--muted); font-size: 10px; }
.contact-email a { color: var(--cyan); font-size: 12px; font-weight: 700; text-underline-offset: 3px; }
.service-modal-note { margin: 15px 0 0; color: var(--muted-2); font-size: 10px; line-height: 1.6; }
.service-modal-note button { font-size: inherit; }
.service-modal-close:focus-visible, .service-modal a:focus-visible, .service-modal button:focus-visible, .service-notice-link:focus-visible, .footer-links button:focus-visible { outline: 2px solid var(--cyan); outline-offset: 3px; }
.result-modal { width: min(100%, 420px); padding: 34px; border: 1px solid var(--line-strong); border-radius: 18px; background: linear-gradient(145deg, #162438, #0e1725); box-shadow: 0 30px 90px rgba(0,0,0,.45); text-align: center; }
.result-orbit { display: grid; place-items: center; width: 54px; height: 54px; margin: 0 auto 20px; border: 1px solid rgba(108,229,218,.35); border-radius: 50%; color: var(--cyan); font-size: 22px; box-shadow: 0 0 30px rgba(108,229,218,.12); }
.result-modal h2 { margin: 9px 0 10px; font-size: 25px; letter-spacing: -.05em; }
.result-modal > p:not(.section-kicker) { color: var(--muted); font-size: 12px; line-height: 1.65; }
.result-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 23px 0; }
.result-stats div { padding: 12px 4px; border: 1px solid var(--line); border-radius: 9px; background: rgba(11,17,27,.35); }
.result-stats span { display: block; color: var(--muted-2); font-size: 9px; }
.result-stats strong { display: block; margin-top: 7px; color: var(--text); font-size: 18px; }

body.modal-open { overflow: hidden; }
.covid-modal-backdrop { z-index: 60; padding: 18px; overflow-y: auto; align-items: start; }
.covid-modal { width: min(1120px, 100%); margin: auto; overflow: hidden; border: 1px solid rgba(244,183,102,.3); border-radius: 18px; background: linear-gradient(145deg, #142033, #0b121e 48%, #101728); box-shadow: 0 34px 100px rgba(0,0,0,.54), 0 0 50px rgba(244,183,102,.07); }
.covid-modal-header { display: flex; align-items: start; justify-content: space-between; gap: 24px; padding: 29px 31px 23px; border-bottom: 1px solid rgba(160,185,215,.13); background: radial-gradient(circle at 86% 0%, rgba(244,183,102,.16), transparent 20rem), linear-gradient(105deg, rgba(30,45,67,.78), rgba(13,20,33,.52)); }
.covid-modal-header h2 { margin: 8px 0 8px; font-size: clamp(25px, 3vw, 35px); letter-spacing: -.06em; }
.covid-modal-header > div > p:last-child { max-width: 660px; margin: 0; color: var(--muted); font-size: 12px; line-height: 1.55; }
.covid-close { display: grid; place-items: center; flex: 0 0 auto; width: 34px; height: 34px; padding: 0; border: 1px solid rgba(160,185,215,.22); border-radius: 9px; color: var(--muted); background: rgba(8,14,24,.32); font-size: 24px; line-height: 1; transition: color .18s ease, border-color .18s ease, background .18s ease; }
.covid-close:hover { color: var(--text); border-color: rgba(244,183,102,.55); background: rgba(244,183,102,.1); }
.covid-close:focus-visible, .covid-modal a:focus-visible { outline: 2px solid var(--cyan); outline-offset: 3px; }
.historical-scenario-nav { display: flex; align-items: flex-start; gap: 14px; padding: 12px 31px; border-bottom: 1px solid rgba(160,185,215,.13); background: rgba(7,12,20,.18); }
.historical-scenario-nav > span { flex: 0 0 auto; color: var(--muted-2); font-size: 9px; letter-spacing: .1em; font-weight: 800; }
.historical-scenario-nav > div { display: flex; flex: 1 1 auto; flex-wrap: wrap; align-content: flex-start; min-width: 0; gap: 6px; overflow: visible; }
.historical-scenario-tab { flex: 0 0 auto; padding: 6px 8px; border: 1px solid rgba(160,185,215,.16); border-radius: 6px; color: var(--muted); background: rgba(160,185,215,.035); font-size: 9px; font-weight: 700; white-space: nowrap; transition: color .18s ease, background .18s ease, border-color .18s ease; }
.historical-scenario-tab:hover { color: var(--text); border-color: rgba(160,185,215,.34); }
.historical-scenario-tab.is-active { color: #f8d39e; border-color: rgba(244,183,102,.44); background: linear-gradient(135deg, rgba(244,183,102,.15), rgba(180,155,255,.09)); }
.historical-scenario-tab:focus-visible { outline: 2px solid var(--cyan); outline-offset: 2px; }
.historical-market-trends { padding: 19px 31px 18px; border-bottom: 1px solid rgba(160,185,215,.13); background: linear-gradient(100deg, rgba(103,170,249,.055), rgba(180,155,255,.035) 54%, rgba(108,229,218,.045)); }
.historical-market-heading { display: flex; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: 12px; }
.historical-market-heading h3 { margin: 6px 0 0; font-size: 16px; letter-spacing: -.04em; }
.historical-market-heading > span { color: var(--muted-2); font-size: 9px; text-align: right; }
.historical-market-legend { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 5px 8px; color: var(--muted-2); font-size: 9px; text-align: right; }
.historical-market-legend > span { flex-basis: 100%; }
.historical-market-legend b { display: inline-flex; align-items: center; gap: 4px; color: var(--muted); font-size: 8px; font-weight: 600; }
.historical-market-legend i { display: inline-grid; place-items: center; width: 10px; height: 10px; border-radius: 50%; color: var(--purple); font-size: 12px; font-style: normal; line-height: 1; }
.historical-market-legend .legend-crisis { background: #ef4444; box-shadow: 0 0 0 2px rgba(239,68,68,.18); }
.historical-market-legend .legend-policy { border-radius: 0; }
.historical-market-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; }
.historical-trend-card { min-width: 0; padding: 12px 12px 10px; border: 1px solid rgba(160,185,215,.16); border-radius: 10px; background: rgba(8,15,26,.26); color: var(--blue); }
.historical-trend-card.trend-rate { color: var(--purple); }
.historical-trend-card.trend-housing { color: var(--amber); }
.historical-trend-card.trend-gold { color: #e7ba4f; }
.historical-trend-card.trend-bitcoin { color: #f7941d; }
.historical-trend-card.trend-landmark-0 { color: #ef9a70; }
.historical-trend-card.trend-landmark-1 { color: #bd91f6; }
.historical-trend-card.is-unavailable { color: #8da1b8; border-style: dashed; background: rgba(141,161,184,.045); }
.historical-trend-heading { display: flex; align-items: start; justify-content: space-between; gap: 8px; }
.historical-trend-heading span { display: block; color: var(--muted); font-size: 9px; }
.historical-trend-heading strong { display: block; margin-top: 5px; color: var(--text); font-size: 14px; letter-spacing: -.04em; font-variant-numeric: tabular-nums; }
.historical-trend-heading strong small { color: var(--muted); font-size: 10px; font-weight: 700; letter-spacing: -.02em; }
.historical-trend-heading em { padding: 3px 5px; border: 1px solid color-mix(in srgb, currentColor 28%, transparent); border-radius: 4px; color: currentColor; background: color-mix(in srgb, currentColor 8%, transparent); font-size: 8px; font-style: normal; font-weight: 700; white-space: nowrap; }
.historical-trend-chart { display: block; width: 100%; height: 88px; margin-top: 5px; overflow: visible; }
.historical-trend-chart line { stroke: rgba(160,185,215,.14); stroke-width: 1; }
.historical-trend-chart polyline { fill: none; stroke: currentColor; stroke-width: 2.3; stroke-linecap: round; stroke-linejoin: round; filter: drop-shadow(0 3px 5px color-mix(in srgb, currentColor 24%, transparent)); }
.historical-trend-chart circle { fill: var(--surface); stroke: currentColor; stroke-width: 2; }
.historical-trend-chart marker path { fill: var(--purple); }
.historical-crisis-annotation .crisis-marker { fill: #ef4444 !important; stroke: #fff1f2 !important; stroke-width: 1.8; filter: drop-shadow(0 0 4px rgba(239,68,68,.82)); }
.historical-crisis-annotation text { fill: #ff7b85; font-size: 8px; font-weight: 800; }
.historical-policy-annotation line { stroke: var(--purple); stroke-width: 1.35; }
.historical-policy-annotation text { fill: #cdbdff; font-size: 8px; font-weight: 800; }
.historical-trend-labels { display: flex; justify-content: space-between; gap: 4px; margin-top: -1px; color: var(--muted-2); font-size: 8px; }
.historical-trend-labels span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.historical-trend-labels span:not(:first-child):not(:last-child) { text-align: center; }
.historical-trend-labels span:last-child { text-align: right; }
.historical-unavailable-body { display: grid; grid-template-columns: 32px 1fr; gap: 7px 10px; align-items: center; min-height: 104px; padding: 8px 0 2px; }
.historical-unavailable-body > span { grid-row: span 2; color: currentColor; font-size: 31px; font-weight: 300; line-height: 1; text-align: center; }
.historical-unavailable-body p { margin: 0; color: var(--muted); font-size: 9px; line-height: 1.55; }
.historical-unavailable-body small { color: var(--muted-2); font-size: 8px; font-weight: 700; }
.historical-market-takeaway { margin: 10px 0 0; padding: 9px 11px; border-left: 2px solid var(--cyan); border-radius: 0 7px 7px 0; color: #bfccd9; background: rgba(108,229,218,.055); font-size: 10px; line-height: 1.55; }
.historical-landmark-housing { margin-top: 14px; padding: 13px; border: 1px solid rgba(239,154,112,.2); border-radius: 10px; background: linear-gradient(120deg, rgba(239,154,112,.07), rgba(189,145,246,.04)); }
.historical-landmark-housing.is-unavailable { border-style: dashed; border-color: rgba(160,185,215,.18); background: rgba(160,185,215,.025); }
.historical-landmark-heading { display: flex; align-items: end; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.historical-landmark-heading .section-kicker { margin: 0; }
.historical-landmark-heading h3 { margin: 5px 0 0; font-size: 13px; letter-spacing: -.035em; }
.historical-landmark-heading > span { color: var(--muted-2); font-size: 8px; text-align: right; }
.historical-landmark-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
.historical-landmark-grid .historical-trend-card { background: rgba(8,15,26,.22); }
.historical-landmark-note, .historical-landmark-empty { margin: 9px 0 0; color: var(--muted); font-size: 9px; line-height: 1.55; }
.historical-landmark-note b { color: var(--text); }
.historical-landmark-note a { color: var(--cyan); text-decoration: none; }
.historical-landmark-note a:hover { text-decoration: underline; }
.historical-landmark-empty { min-height: 57px; padding: 11px; border: 1px solid rgba(160,185,215,.13); border-radius: 7px; background: rgba(8,15,26,.16); }
.historical-landmark-empty strong { display: block; margin-bottom: 4px; color: var(--muted); font-size: 10px; }
.historical-landmark-empty p { margin: 0; }
.historical-market-note { display: grid; grid-template-columns: auto 1fr; gap: 3px 10px; margin-top: 10px; color: var(--muted-2); font-size: 9px; line-height: 1.5; }
.historical-market-note > span { grid-row: span 2; color: var(--muted); font-weight: 700; white-space: nowrap; }
.historical-market-note p { margin: 0; }
.historical-market-note div { display: flex; flex-wrap: wrap; gap: 5px; }
.historical-market-note a { padding: 3px 5px; border: 1px solid rgba(160,185,215,.16); border-radius: 4px; color: var(--muted); background: rgba(160,185,215,.035); font-size: 8px; text-decoration: none; }
.historical-market-note a:hover { border-color: rgba(108,229,218,.4); color: var(--cyan); }
#covidAnalysisContent.hidden, .historical-scenario-content.hidden { display: none; }
.covid-alert-strip { display: flex; align-items: start; gap: 11px; margin: 21px 31px 0; padding: 12px 14px; border: 1px solid rgba(244,183,102,.22); border-radius: 10px; color: #d5c4ac; background: linear-gradient(90deg, rgba(244,183,102,.1), rgba(180,155,255,.06)); font-size: 11px; line-height: 1.6; }
.covid-alert-strip p { margin: 0; }
.covid-alert-strip strong { margin-right: 5px; color: #f6cc95; }
.covid-alert-strip b { color: #f4d1a0; font-weight: 700; }
.covid-alert-icon { display: grid; place-items: center; flex: 0 0 auto; width: 21px; height: 21px; margin-top: 1px; border-radius: 50%; color: #33210f; background: var(--amber); font-size: 13px; }
.covid-snapshot { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; padding: 20px 31px 7px; }
.covid-snapshot article { position: relative; min-height: 114px; overflow: hidden; padding: 15px 15px 13px; border: 1px solid rgba(103,170,249,.18); border-radius: 11px; background: rgba(103,170,249,.055); }
.covid-snapshot article::after { position: absolute; right: -24px; bottom: -29px; width: 79px; height: 79px; border: 1px solid currentColor; border-radius: 50%; content: ""; opacity: .12; }
.covid-snapshot article.is-danger { color: var(--red); border-color: rgba(241,126,135,.23); background: rgba(241,126,135,.055); }
.covid-snapshot article.is-policy { color: var(--cyan); border-color: rgba(108,229,218,.23); background: rgba(108,229,218,.055); }
.covid-snapshot span { position: relative; z-index: 1; display: block; color: var(--muted-2); font-size: 9px; }
.covid-snapshot strong { position: relative; z-index: 1; display: block; margin-top: 10px; color: var(--text); font-size: 17px; letter-spacing: -.04em; }
.covid-snapshot p { position: relative; z-index: 1; margin: 8px 0 0; color: var(--muted); font-size: 9px; line-height: 1.45; }
.covid-section { padding: 23px 31px 0; }
.covid-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 18px; margin-bottom: 13px; }
.covid-section-heading h3 { margin: 6px 0 0; font-size: 17px; letter-spacing: -.04em; }
.covid-section-note { color: var(--muted-2); font-size: 10px; text-align: right; }
.covid-compare-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px; }
.covid-compare-card { padding: 16px 17px 14px; border: 1px solid var(--line); border-radius: 11px; background: rgba(160,185,215,.035); }
.covid-compare-card.before { border-left: 3px solid var(--red); }
.covid-compare-card.after { border-left: 3px solid var(--cyan); }
.covid-compare-title { display: flex; align-items: center; gap: 9px; }
.covid-compare-title span { display: grid; place-items: center; width: 21px; height: 21px; border-radius: 6px; color: var(--text); background: rgba(160,185,215,.1); font-size: 9px; font-weight: 700; }
.before .covid-compare-title span { color: #ffd7dc; background: rgba(241,126,135,.14); }
.after .covid-compare-title span { color: #b9f5ef; background: rgba(108,229,218,.13); }
.covid-compare-title strong { font-size: 12px; }
.covid-compare-card ul, .covid-effect-card ul { display: grid; gap: 8px; margin: 13px 0 0; padding: 0; list-style: none; }
.covid-compare-card li, .covid-effect-card li { position: relative; padding-left: 11px; color: var(--muted); font-size: 10px; line-height: 1.55; }
.covid-compare-card li::before, .covid-effect-card li::before { position: absolute; left: 0; top: .65em; width: 4px; height: 4px; border-radius: 50%; background: currentColor; content: ""; }
.covid-compare-card b { margin-right: 5px; color: var(--text); font-size: 9px; }
.covid-timeline { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.covid-timeline-card { position: relative; min-height: 176px; padding: 16px 15px 14px; border: 1px solid var(--line); border-radius: 11px; background: rgba(160,185,215,.035); }
.covid-timeline-card::before { position: absolute; top: -4px; left: 15px; width: 33px; height: 3px; border-radius: 10px; background: currentColor; content: ""; }
.covid-timeline-card.rate { color: var(--purple); }
.covid-timeline-card.fiscal { color: var(--amber); }
.covid-timeline-card.finance { color: var(--blue); }
.covid-timeline-card.recovery { color: var(--cyan); }
.covid-timeline-card time { color: currentColor; font-size: 10px; font-weight: 800; letter-spacing: .08em; }
.covid-timeline-card h4 { margin: 10px 0 8px; color: var(--text); font-size: 12px; letter-spacing: -.03em; }
.covid-timeline-card p { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.55; }
.covid-timeline-card > span { display: inline-block; margin-top: 12px; padding: 5px 6px; border: 1px solid color-mix(in srgb, currentColor 28%, transparent); border-radius: 5px; color: currentColor; background: color-mix(in srgb, currentColor 8%, transparent); font-size: 9px; font-weight: 700; }
.covid-effects-grid { display: grid; grid-template-columns: .9fr .9fr 1.2fr; gap: 10px; }
.covid-effect-card, .covid-finance-flow { padding: 16px 16px 14px; border: 1px solid var(--line); border-radius: 11px; background: rgba(160,185,215,.035); }
.covid-effect-card.positive { border-top: 2px solid rgba(108,229,218,.7); }
.covid-effect-card.negative { border-top: 2px solid rgba(241,126,135,.7); }
.covid-effect-card h4, .covid-finance-flow h4 { margin: 0; color: var(--text); font-size: 12px; }
.covid-effect-card.positive h4 { color: #9ee6df; }
.covid-effect-card.negative h4 { color: #f4aeb5; }
.covid-finance-flow { position: relative; overflow: hidden; background: linear-gradient(135deg, rgba(103,170,249,.08), rgba(180,155,255,.06)); }
.covid-finance-flow::after { position: absolute; right: -46px; top: -48px; width: 143px; height: 143px; border: 1px solid rgba(103,170,249,.26); border-radius: 50%; content: ""; }
.covid-finance-flow ol { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 13px 0 0; padding: 0; list-style: none; }
.covid-finance-flow li { position: relative; padding-top: 11px; }
.covid-finance-flow li:not(:last-child)::after { position: absolute; top: 4px; right: -4px; width: calc(100% - 13px); height: 1px; background: linear-gradient(90deg, var(--blue), transparent); content: ""; }
.covid-finance-flow li::before { position: absolute; top: 0; left: 0; width: 8px; height: 8px; border: 2px solid var(--blue); border-radius: 50%; background: var(--surface); content: ""; }
.covid-finance-flow li:nth-child(2)::before { border-color: var(--cyan); }
.covid-finance-flow li:nth-child(3)::before { border-color: var(--amber); }
.covid-finance-flow li > span { color: var(--text); font-size: 9px; font-weight: 700; }
.covid-finance-flow li p { margin: 6px 0 0; color: var(--muted); font-size: 9px; line-height: 1.5; }
.covid-horizon-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.covid-horizon-card { position: relative; min-height: 211px; padding: 16px 16px 15px; border: 1px solid var(--line); border-radius: 11px; background: rgba(160,185,215,.035); }
.covid-horizon-card.actual { border-top: 2px solid var(--blue); }
.covid-horizon-card.scenario { border-top: 2px solid var(--amber); background: linear-gradient(135deg, rgba(244,183,102,.075), rgba(180,155,255,.055)); }
.covid-horizon-card > div { display: flex; align-items: baseline; justify-content: space-between; }
.covid-horizon-card > div span { color: var(--muted-2); font-size: 10px; }
.covid-horizon-card > div strong { color: var(--blue); font-size: 24px; letter-spacing: -.06em; }
.covid-horizon-card.scenario > div strong { color: var(--amber); }
.covid-horizon-card h4 { margin: 13px 0 8px; font-size: 13px; letter-spacing: -.04em; }
.covid-horizon-card p { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.6; }
.covid-horizon-card p b { color: var(--text); }
.covid-horizon-card small { position: absolute; left: 16px; bottom: 14px; color: var(--muted-2); font-size: 9px; }
.covid-sources { display: flex; align-items: start; gap: 16px; margin-top: 25px; padding: 16px 31px 19px; border-top: 1px solid rgba(160,185,215,.13); background: rgba(7,12,20,.28); }
.covid-sources > span { flex: 0 0 auto; padding-top: 3px; color: var(--muted-2); font-size: 9px; letter-spacing: .08em; font-weight: 700; }
.covid-sources div { display: flex; flex-wrap: wrap; gap: 6px; }
.covid-sources a { padding: 5px 7px; border: 1px solid rgba(160,185,215,.16); border-radius: 5px; color: var(--muted); background: rgba(160,185,215,.04); font-size: 9px; line-height: 1.4; text-decoration: none; transition: color .18s ease, border-color .18s ease, background .18s ease; }
.covid-sources a:hover { border-color: rgba(108,229,218,.4); color: var(--cyan); background: rgba(108,229,218,.07); }

:root[data-theme="light"] .metric-card { background: linear-gradient(145deg, rgba(255,255,255,.96), rgba(239,245,251,.96)); box-shadow: 0 10px 26px rgba(39,70,105,.08); }
:root[data-theme="light"] .korea-command { background: linear-gradient(125deg, #e4f2fb, #f8fbfe 52%, #eef3ff); }
:root[data-theme="light"] .command-map { background: radial-gradient(circle at 46% 54%, rgba(42, 145, 177, .18), transparent 42%), linear-gradient(145deg, rgba(50, 121, 173, .1), transparent 56%); }
:root[data-theme="light"] .exposure-board { background: linear-gradient(150deg, rgba(255,255,255,.72), rgba(237,244,251,.78)); }
:root[data-theme="light"] .map-grid { opacity: .32; }
:root[data-theme="light"] .map-label, :root[data-theme="light"] .route-label { background: rgba(248,252,255,.8); box-shadow: 0 5px 13px rgba(52,80,112,.1); }
:root[data-theme="light"] .map-label strong { color: #16475a; }
:root[data-theme="light"] .exposure-card { background: rgba(255,255,255,.74); }
:root[data-theme="light"] .event-panel { background: linear-gradient(110deg, rgba(255,239,215,.92), rgba(250,253,255,.88) 48%, rgba(232,243,253,.9)); }
:root[data-theme="light"] .event-copy p { color: #5c6d80; }
:root[data-theme="light"] .impact-chip { color: #8a5718; background: rgba(244,183,102,.13); }
:root[data-theme="light"] .citizen-approval { background: radial-gradient(circle at 20% 28%, rgba(23,143,138,.12), transparent 42%), rgba(244,250,252,.9); }
:root[data-theme="light"] .citizen-face { border-color: rgba(47,120,209,.62); box-shadow: 0 0 0 4px rgba(47,120,209,.08), 0 9px 20px rgba(38,64,94,.18); }
:root[data-theme="light"] .policy-tooltip { background: linear-gradient(145deg, rgba(255,255,255,.99), rgba(239,247,251,.99)); box-shadow: 0 18px 45px rgba(39,70,105,.2), 0 0 24px rgba(23,143,138,.1); }
:root[data-theme="light"] .policy-tooltip p { color: #52657b; }
:root[data-theme="light"] .tooltip-close { color: #60738a; background: rgba(38,64,94,.07); }
:root[data-theme="light"] .tooltip-effects span { color: #607188; background: rgba(38,64,94,.05); }
:root[data-theme="light"] .tooltip-effects span[data-tone="good"] { color: #11716c; background: rgba(23,143,138,.08); }
:root[data-theme="light"] .tooltip-effects span[data-tone="risk"] { color: #ae3e4b; background: rgba(198,80,91,.08); }
:root[data-theme="light"] .toast { color: #185e5b; background: rgba(251,255,255,.96); box-shadow: 0 16px 35px rgba(39,70,105,.18); }
:root[data-theme="light"] .result-modal { background: linear-gradient(145deg, #ffffff, #edf4fb); }
:root[data-theme="light"] .service-modal { background: linear-gradient(145deg, #ffffff, #eef5fb 58%, #f5f3fb); box-shadow: 0 26px 75px rgba(32,61,94,.24); }
:root[data-theme="light"] .service-modal-header { background: radial-gradient(circle at 87% 0%, rgba(23,143,138,.15), transparent 17rem), linear-gradient(105deg, #f7fbff, #edf4fb); }
:root[data-theme="light"] .service-modal-close { color: #607188; background: rgba(255,255,255,.74); }
:root[data-theme="light"] .service-modal-lead { color: #465c73; }
:root[data-theme="light"] .notice-statement, :root[data-theme="light"] .contact-option { background: rgba(255,255,255,.68); }
:root[data-theme="light"] .privacy-policy h3, :root[data-theme="light"] .contact-option b { color: #203b57; }
:root[data-theme="light"] .contact-email { background: rgba(47,120,209,.07); }
:root[data-theme="light"] .result-stats div { background: rgba(237,244,251,.72); }
:root[data-theme="light"] .button-covid { color: #8a4c1a; border-color: rgba(189,116,31,.42); background: linear-gradient(135deg, rgba(255,236,207,.96), rgba(251,230,239,.96)); box-shadow: none; }
:root[data-theme="light"] .button-covid:hover { border-color: rgba(189,116,31,.75); background: linear-gradient(135deg, #ffe8c7, #f9ddea); }
:root[data-theme="light"] .covid-modal { background: linear-gradient(145deg, #ffffff, #eef5fb 52%, #f2f0fb); box-shadow: 0 26px 75px rgba(32,61,94,.24); }
:root[data-theme="light"] .covid-modal-header { background: radial-gradient(circle at 86% 0%, rgba(244,183,102,.2), transparent 20rem), linear-gradient(105deg, #f7fbff, #edf4fb); }
:root[data-theme="light"] .covid-close { color: #607188; background: rgba(255,255,255,.74); }
:root[data-theme="light"] .historical-scenario-nav { background: rgba(236,244,251,.7); }
:root[data-theme="light"] .historical-scenario-tab { background: rgba(255,255,255,.64); }
:root[data-theme="light"] .historical-scenario-tab.is-active { color: #86531e; border-color: rgba(189,116,31,.48); background: linear-gradient(135deg, rgba(255,228,190,.7), rgba(232,221,253,.58)); }
:root[data-theme="light"] .historical-market-trends { background: linear-gradient(100deg, rgba(47,120,209,.07), rgba(118,86,198,.035) 54%, rgba(23,143,138,.055)); }
:root[data-theme="light"] .current-market-panel { background: linear-gradient(115deg, rgba(47,120,209,.08), rgba(118,86,198,.04) 52%, rgba(23,143,138,.06)); }
:root[data-theme="light"] .historical-trend-card { background: rgba(255,255,255,.76); }
:root[data-theme="light"] .current-market-grid .historical-trend-card { background: rgba(255,255,255,.74); }
:root[data-theme="light"] .historical-trend-chart circle { fill: #fbfdff; }
:root[data-theme="light"] .historical-market-takeaway { color: #486174; background: rgba(23,143,138,.065); }
:root[data-theme="light"] .historical-crisis-annotation .crisis-marker { fill: #dc2626 !important; stroke: #fff !important; }
:root[data-theme="light"] .historical-crisis-annotation text { fill: #b91c2c; }
:root[data-theme="light"] .historical-policy-annotation text { fill: #6a50af; }
:root[data-theme="light"] .covid-alert-strip { color: #66513a; background: linear-gradient(90deg, rgba(244,183,102,.14), rgba(118,86,198,.07)); }
:root[data-theme="light"] .covid-alert-strip strong, :root[data-theme="light"] .covid-alert-strip b { color: #81511b; }
:root[data-theme="light"] .covid-snapshot article, :root[data-theme="light"] .covid-compare-card, :root[data-theme="light"] .covid-timeline-card, :root[data-theme="light"] .covid-effect-card, :root[data-theme="light"] .covid-finance-flow, :root[data-theme="light"] .covid-horizon-card { background: rgba(255,255,255,.7); }
:root[data-theme="light"] .covid-finance-flow { background: linear-gradient(135deg, rgba(47,120,209,.08), rgba(118,86,198,.055)); }
:root[data-theme="light"] .covid-finance-flow li::before { background: #f8fbff; }
:root[data-theme="light"] .covid-effect-card.positive h4 { color: #167a75; }
:root[data-theme="light"] .covid-effect-card.negative h4 { color: #b2414d; }
:root[data-theme="light"] .covid-sources { background: rgba(231,240,249,.57); }

@media (max-width: 1040px) {
  .app-shell { padding: 0 24px 24px; }
  .game-layout { grid-template-columns: minmax(0, 1fr) 285px; gap: 18px; }
  .korea-command { grid-template-columns: 1fr; }
  .command-map { min-height: 295px; }
  .exposure-board { border-top: 1px solid rgba(160,185,215,.14); border-left: 0; }
  .metric-grid { gap: 8px; }
  .metric-card { padding-inline: 13px; }
  .metric-value { font-size: 23px; }
  .policy-grid-advanced { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .event-tag { display: none; }
  .crisis-topbar { height: auto; min-height: 70px; flex-wrap: wrap; padding-top: 10px; padding-bottom: 10px; gap: 8px 18px; }
  .crisis-topbar .main-nav { order: 3; flex: 1 0 100%; margin: 0; padding-top: 8px; border-top: 1px solid var(--line); overflow-x: auto; }
  .crisis-header-actions { margin-left: auto; gap: 7px; }
  .crisis-game-controls { gap: 7px; }
  .crisis-header-actions .current-user, .crisis-header-actions .profile-link, .crisis-header-actions .admin-link, .crisis-logout { display: none; }
}

@media (max-width: 820px) {
  .game-layout { grid-template-columns: 1fr; }
  .side-column { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
  .korea-command { grid-template-columns: minmax(0, 1.05fr) minmax(290px, .95fr); }
  .command-map { min-height: 316px; }
  .exposure-board { border-top: 0; border-left: 1px solid rgba(160,185,215,.14); }
  .guide-block { grid-column: 1 / -1; }
}

@media (max-width: 560px) {
  .app-shell { padding: 0 15px 20px; }
  .topbar { height: 70px; }
  .crisis-topbar { height: auto; min-height: 0; padding: 9px 0; gap: 8px 12px; }
  .crisis-brand-lockup { gap: 7px; }
  .crisis-brand-symbol { width: 27px; height: 27px; }
  .crisis-brand-wordmark { width: 102px; height: 23px; }
  .crisis-topbar .main-nav { order: 3; padding-top: 7px; gap: 2px; }
  .crisis-topbar .main-nav-link { min-height: 30px; padding: 0 8px; font-size: 11px; }
  .crisis-game-controls { gap: 6px; }
  .brand { gap: 7px; }
  .brand-logo { width: 33px; height: 33px; }
  .brand-wordmark { flex-basis: 126px; width: 126px; }
  .brand h1 { font-size: 17px; letter-spacing: .035em; }
  .brand-wordmark p { font-size: 7px; letter-spacing: .035em; }
  .page-heading-caption { display: block; margin: 7px 0 0; font-size: .42em; vertical-align: baseline; }
  .service-notice { align-items: start; flex-direction: column; gap: 8px; }
  .service-notice-link { margin-left: 27px; }
  .topbar-status .country-chip, .topbar-status .date-chip, .crisis-game-controls .country-chip, .crisis-game-controls .date-chip { display: none; }
  .theme-toggle { min-width: 36px; padding-inline: 10px; }
  .theme-toggle #themeToggleText { display: none; }
  .page-heading { align-items: start; flex-direction: column; gap: 18px; }
  .page-heading h2 { font-size: 28px; }
  .system-status { width: 100%; }
  .korea-command { grid-template-columns: 1fr; }
  .command-map, .exposure-board { padding: 18px 16px; }
  .command-map { min-height: 280px; }
  .exposure-board { border-top: 1px solid rgba(160,185,215,.14); border-left: 0; }
  .map-stage { height: 222px; margin-inline: -10px; }
  .korea-map { top: 3px; height: 220px; width: 105%; }
  .label-seoul { top: 80px; left: 47%; }
  .label-busan { bottom: 8px; left: 49%; }
  .route-label { font-size: 7px; }
  .label-middle-east { right: -3px; }
  .label-east { right: -3px; top: 31px; }
  .label-west { left: -3px; top: 75px; }
  .metric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .metric-card { min-height: 106px; }
  .chart-panel, .policy-panel { padding-inline: 16px; }
  .chart-legend { display: none; }
  .chart-wrap { height: 190px; }
  .event-panel { padding: 17px 16px; gap: 12px; }
  .event-mark { flex-basis: 34px; width: 34px; height: 34px; font-size: 17px; }
  .policy-grid { grid-template-columns: 1fr; gap: 20px; }
  .policy-grid-advanced { grid-template-columns: 1fr; }
  .current-market-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .policy-divider { align-items: start; flex-direction: column; gap: 5px; }
  .policy-restore-actions { justify-content: flex-end; }
  .policy-footer { align-items: stretch; flex-direction: column; }
  .button-primary { width: 100%; }
  .side-column { display: flex; }
  .footer-bar { align-items: start; flex-direction: column; gap: 8px; }
  .footer-links { flex-wrap: wrap; }
  .service-modal-backdrop { padding: 12px; }
  .service-modal-header { padding: 21px 20px 17px; }
  .service-modal-body { padding: 20px; }
  .contact-options { grid-template-columns: 1fr; }
  .service-modal-actions { align-items: stretch; flex-direction: column-reverse; }
  .service-modal-actions .button { width: 100%; }
  .result-modal { padding: 27px 20px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
}

/* 상단 메뉴는 화면 끝까지 이어지고, 내부 요소만 게임 본문과 같은 폭에 맞춥니다. */
.crisis-topbar {
  --crisis-shell-max: 1500px;
  --crisis-header-gutter: 42px;
  width: 100vw;
  margin-left: calc(50% - 50vw);
  padding-left: max(var(--crisis-header-gutter), calc((100vw - var(--crisis-shell-max)) / 2 + var(--crisis-header-gutter)));
  padding-right: max(var(--crisis-header-gutter), calc((100vw - var(--crisis-shell-max)) / 2 + var(--crisis-header-gutter)));
  background: var(--bg-deep);
}

:root[data-theme="light"] .crisis-topbar {
  background: rgba(255, 255, 255, .84);
}

@media (max-width: 1040px) {
  .crisis-topbar { --crisis-header-gutter: 24px; }
}

@media (max-width: 560px) {
  .crisis-topbar { --crisis-header-gutter: 15px; }
}

@media (max-width: 1040px) {
  .topbar-status { gap: 7px; }
  .button-covid { white-space: nowrap; }
  .covid-timeline { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .covid-effects-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .covid-finance-flow { grid-column: 1 / -1; }
  .historical-market-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .current-market-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .historical-trend-chart { height: 70px; }
}

@media (max-width: 760px) {
  .covid-modal-backdrop { padding: 0; }
  .covid-modal { min-height: 100vh; border-width: 0; border-radius: 0; }
  .covid-modal-header { padding: 24px 20px 19px; }
  .historical-scenario-nav { align-items: start; flex-direction: column; gap: 8px; padding: 11px 20px; }
  .historical-scenario-nav > div { width: 100%; }
  .historical-market-trends { padding: 17px 20px 16px; }
  .covid-alert-strip { margin: 17px 20px 0; }
  .covid-snapshot, .covid-section { padding-left: 20px; padding-right: 20px; }
  .covid-snapshot { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .covid-sources { padding-left: 20px; padding-right: 20px; }
  .covid-compare-grid, .covid-horizon-grid { grid-template-columns: 1fr; }
  .covid-horizon-card { min-height: 185px; }
}

@media (max-width: 560px) {
  .topbar-status { gap: 6px; }
  .topbar-status .button-covid { width: 35px; min-width: 35px; padding-inline: 0; font-size: 0; }
  .topbar-status .button-covid span { margin: 0; font-size: 14px; }
  .covid-modal-header h2 { font-size: 26px; }
  .covid-modal-header > div > p:last-child { font-size: 11px; }
  .covid-alert-strip { font-size: 10px; }
  .covid-section-heading { align-items: start; flex-direction: column; gap: 6px; }
  .covid-section-note { text-align: left; }
  .covid-timeline, .covid-effects-grid { grid-template-columns: 1fr; }
  .covid-finance-flow { grid-column: auto; }
  .covid-timeline-card { min-height: 0; }
  .covid-finance-flow ol { grid-template-columns: 1fr; gap: 12px; }
  .covid-finance-flow li:not(:last-child)::after { top: 8px; left: 4px; right: auto; width: 1px; height: calc(100% + 5px); background: linear-gradient(var(--blue), transparent); }
  .covid-finance-flow li { padding: 0 0 0 16px; }
  .covid-finance-flow li::before { top: 1px; }
  .covid-sources { flex-direction: column; gap: 8px; }
  .historical-market-heading { align-items: start; flex-direction: column; gap: 5px; }
  .historical-market-heading > span { text-align: left; }
  .historical-market-note { grid-template-columns: 1fr; gap: 4px; }
  .historical-market-note > span { grid-row: auto; }
  .historical-market-grid { grid-template-columns: 1fr; }
  .current-market-panel { padding-inline: 16px; }
  .current-market-heading { align-items: start; flex-direction: column; gap: 5px; }
  .current-market-status { justify-items: start; max-width: none; text-align: left; }
  .current-market-grid { grid-template-columns: 1fr; }
  .historical-landmark-heading { align-items: start; flex-direction: column; gap: 5px; }
  .historical-landmark-heading > span { text-align: left; }
  .historical-landmark-grid { grid-template-columns: 1fr; }
}

/* 게임 조작은 공통 네비게이션과 분리된 전용 도구 줄에 배치합니다. */
.crisis-game-toolbar {
  display: flex;
  justify-content: flex-end;
  margin-top: 14px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
}

.crisis-game-toolbar .crisis-game-controls {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 9px;
}

.crisis-game-toolbar .country-chip,
.crisis-game-toolbar .date-chip,
.crisis-game-toolbar .button {
  min-height: 40px;
}

.page-heading h2 {
  font-size: clamp(36px, 5vw, 58px);
  line-height: 1.05;
  letter-spacing: .02em;
}

.page-heading h2 em,
.crisis-kicker-point,
.page-heading-caption em {
  color: #d6f46e;
  font-style: normal;
}

.crisis-kicker-point { font-weight: 800; }

:root[data-theme="light"] .page-heading h2 em,
:root[data-theme="light"] .crisis-kicker-point,
:root[data-theme="light"] .page-heading-caption em {
  color: #1f6eaf !important;
}

:root:not([data-theme="light"]) .page-heading h2 em,
:root:not([data-theme="light"]) .crisis-kicker-point,
:root:not([data-theme="light"]) .page-heading-caption em {
  color: #d6f46e !important;
}

.crisis-header-actions > .crisis-game-controls[hidden] {
  display: none !important;
}

.crisis-header-actions .admin-link[hidden] {
  display: none !important;
}

@media (max-width: 1320px) and (min-width: 1041px) {
  .crisis-topbar {
    height: 70px;
    min-height: 70px;
    flex-wrap: nowrap;
    padding-top: 0;
    padding-bottom: 0;
  }
  .crisis-topbar .main-nav {
    order: initial;
    flex: 0 1 auto;
    margin-right: auto;
    padding-top: 0;
    border-top: 0;
    overflow: visible;
  }
  .crisis-header-actions { margin-left: 0; }
  .crisis-header-actions .current-user,
  .crisis-header-actions .profile-link,
  .crisis-header-actions .admin-link,
  .crisis-logout { display: initial; }
}

@media (max-width: 1040px) {
  .crisis-game-toolbar { margin-top: 10px; padding-bottom: 10px; }
  .crisis-game-toolbar .crisis-game-controls { gap: 7px; }
}

@media (max-width: 560px) {
  .crisis-game-toolbar { justify-content: stretch; }
  .crisis-game-toolbar .crisis-game-controls { justify-content: stretch; }
  .crisis-game-toolbar .button { flex: 1 1 auto; }
  .page-heading h2 { font-size: 34px; }
}

/* 밝은 모드 정책 조정 영역: 정보 위계를 분명히 하고 조작 요소의 대비를 강화합니다. */
:root[data-theme="light"] .policy-panel {
  border-color: #b7c9da;
  background: linear-gradient(145deg, #ffffff 0%, #f3f8fd 100%);
  box-shadow: 0 14px 34px rgba(38, 64, 94, .11);
}

:root[data-theme="light"] .policy-panel .policy-heading h3,
:root[data-theme="light"] .policy-panel .policy-label,
:root[data-theme="light"] .policy-panel .policy-label strong {
  color: #142d49;
}

:root[data-theme="light"] .policy-panel .policy-label {
  font-weight: 700;
}

:root[data-theme="light"] .policy-panel .policy-agency,
:root[data-theme="light"] .policy-panel .range-meta,
:root[data-theme="light"] .policy-panel .policy-footer p,
:root[data-theme="light"] .policy-panel .policy-capacity,
:root[data-theme="light"] .policy-panel .policy-divider p {
  color: #4e6680;
  font-weight: 500;
}

:root[data-theme="light"] .policy-panel .policy-agency span,
:root[data-theme="light"] .policy-panel .policy-divider span,
:root[data-theme="light"] .policy-panel .policy-capacity strong {
  color: #087a79;
}

:root[data-theme="light"] .policy-panel :is(.policy-divider, .policy-footer) {
  border-color: #c3d2e0;
}

:root[data-theme="light"] .policy-panel .info-badge {
  border-color: #b7c9da;
  color: #385a78;
  background: #f3f8fd;
}

:root[data-theme="light"] .policy-panel .info-badge:hover,
:root[data-theme="light"] .policy-panel .info-badge[aria-expanded="true"] {
  border-color: #287fd1;
  color: #1466ac;
  background: #e3f0fc;
}

:root[data-theme="light"] .policy-panel .range-input {
  box-shadow: inset 0 0 0 1px rgba(76, 105, 136, .16);
}

:root[data-theme="light"] .policy-panel .range-input::-webkit-slider-thumb {
  border-color: #ffffff;
  box-shadow: 0 0 0 1px #287fd1, 0 3px 9px rgba(20, 82, 142, .25);
}

:root[data-theme="light"] .policy-panel .range-input::-moz-range-thumb {
  border-color: #ffffff;
  box-shadow: 0 0 0 1px #287fd1, 0 3px 9px rgba(20, 82, 142, .25);
}

:root[data-theme="light"] .policy-panel .policy-control-wrap.is-changed::before {
  border-color: rgba(194, 69, 82, .78);
  background: rgba(194, 69, 82, .06);
  box-shadow: 0 0 0 2px rgba(194, 69, 82, .045);
}
