:root { color-scheme: light; font-family: system-ui, sans-serif; color: #243b36; background: #f4f1e8; line-height: 1.6; }
* { box-sizing: border-box; }
body { margin: 0; }
main { max-width: 760px; padding: 24px 18px 40px; margin: auto; }
header, section { background: #fff; border: 1px solid #cad7cf; border-radius: 18px; padding: 22px; margin-bottom: 18px; }
h1, h2, p { margin-top: 0; } h1 { font-size: clamp(1.8rem, 5vw, 2.6rem); margin-bottom: 4px; } h2 { font-size: 1.4rem; }
.eyebrow { color: #315f51; font-weight: 700; margin-bottom: 4px; } a { color: #164d74; }
.buttons { display: flex; flex-wrap: wrap; gap: 10px; }
button, summary { min-height: 48px; font: inherit; }
button { border: 2px solid #315f51; border-radius: 10px; background: #fff; color: #173f34; padding: 10px 16px; font-weight: 700; cursor: pointer; }
button.primary { background: #215a49; color: white; } button:disabled { opacity: .55; cursor: default; }
button:focus-visible, a:focus-visible, summary:focus-visible { outline: 3px solid #a55417; outline-offset: 3px; }
.diagram { background: #eaf1eb; border-radius: 12px; padding: 8px; } svg { display: block; width: 100%; height: auto; }
.preview { margin: 16px 0; padding: 12px; background: #eaf1eb; border-radius: 8px; }
#status { min-height: 2em; margin: 14px 0; font-weight: 700; } details { margin: 14px 0; } summary { cursor: pointer; font-weight: 700; }
.tools { margin-top: 18px; } footer { color: #42574f; }
dialog { max-width: min(90vw, 480px); border: 2px solid #315f51; border-radius: 16px; padding: 24px; color: #243b36; } dialog::backdrop { background: #182c27b3; }
@media (prefers-reduced-motion: no-preference) { .cargo { transition: x .3s ease; } }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; animation: none !important; } }

/* 판 선택 화면 목록 링크 */
#hub-link, #hub { color: #174f74; display: inline-flex; align-items: center; min-height: 44px; padding: 0 4px; font-weight: 700; }
#hub-link[hidden], #hub[hidden] { display: none; }
