@font-face{font-family:Pretendard;src:url('fonts/Pretendard-Medium.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:Pretendard;src:url('fonts/Pretendard-SemiBold.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Pretendard;src:url('fonts/Pretendard-Bold.woff2') format('woff2');font-weight:700;font-display:swap}
:root{
  --navy-900:#0b2350;--navy-800:#10306e;--blue-600:#1d5bd6;--blue-500:#2f6fe6;--blue-100:#e6eefb;--blue-50:#f1f5fd;
  --gray-900:#1c2330;--gray-700:#3d4756;--gray-500:#6b7686;--gray-300:#cbd2dc;--gray-200:#e3e7ed;--gray-100:#f0f2f5;--gray-50:#f7f8fa;
  --bg:var(--gray-50);--surface:#fff;--ink:var(--gray-900);--muted:var(--gray-500);--line:var(--gray-300);--accent:var(--blue-600);--accent-hover:var(--navy-800);--tint:var(--blue-50);
  --error:#cf3a3a;--error-bg:#fbe9e9;--warning:#865d17;--warning-bg:#fcf2df;--ok:#1e8e4e;--ok-bg:#e8f5ee;
  --body:15px;--small:13px;--section:22px;--title:40px;--radius:6px;--ease:cubic-bezier(.22,.61,.36,1);--shadow:0 1px 2px rgba(11,35,80,.06);
}
body{font-family:Pretendard,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;font-weight:500;background:var(--gray-100);word-break:keep-all;-webkit-font-smoothing:antialiased}
main{margin:0}.topbar{height:68px;padding:0 max(32px,calc((100vw - 1440px)/2 + 48px));background:var(--navy-900);color:var(--surface);border:0}
.workspace-name{font-size:var(--body);font-weight:700;letter-spacing:.02em}.topbar-links{display:flex;align-items:center;gap:var(--s6)}.topbar-links>a{color:var(--blue-100)}.pill{background:var(--navy-800);color:var(--surface);border:1px solid var(--blue-500);padding:var(--s1) var(--s3);border-radius:4px}
.page{max-width:1440px;background:var(--surface);padding:48px;margin:var(--s6) auto;min-height:calc(100dvh - 116px);border:1px solid var(--gray-200)}
.page-heading{margin:0 0 var(--s8);align-items:flex-end}.page-heading .muted{font-size:18px;font-weight:500;color:var(--gray-700);line-height:1.6;margin-top:var(--s4)}.overline{font-size:var(--body);font-weight:600;color:var(--accent);letter-spacing:.06em;margin-bottom:var(--s3)}h1{color:var(--navy-900);font-weight:700;letter-spacing:-.025em;line-height:1.2}h2,h3{color:var(--navy-900)}
.workflow-strip{display:flex;align-items:center;gap:var(--s6);background:var(--tint);border:1px solid var(--blue-100);padding:var(--s4) var(--s6);margin-bottom:var(--s8);border-radius:var(--radius);color:var(--navy-900);font-size:var(--body)}.workflow-strip b{margin-right:var(--s2);color:var(--accent)}.workflow-strip>span{color:var(--gray-500)}.workflow-strip a:hover{text-decoration:underline;text-underline-offset:4px}
.panel{border:1.5px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--s6);margin-bottom:var(--s6)}.panel:first-of-type{border-top:4px solid var(--accent)}.section-heading{margin-bottom:var(--s6)}.step{font-size:var(--body);font-weight:700;color:var(--accent);background:transparent;width:auto;height:auto;border-radius:0}.count{color:var(--accent);background:var(--blue-100);padding:0 var(--s2)}
.button{border-radius:4px;min-height:44px;padding:var(--s2) var(--s5);font-weight:600}.primary:hover:not(:disabled){background:var(--blue-500)}.primary:active:not(:disabled){background:var(--navy-800)}.secondary{border-color:var(--line);color:var(--navy-900)}.secondary:hover:not(:disabled){background:var(--tint);border-color:var(--accent)}.segmented{border:1px solid var(--gray-200);border-radius:4px}.segmented button{font-weight:600;min-height:36px}.segmented button[aria-selected=true]{background:var(--accent);color:var(--surface)}
.upload-zone{background:var(--blue-50);border:1.5px dashed var(--line);padding:var(--s8);min-height:160px}.upload-zone strong{font-size:17px;color:var(--navy-900)}.file-glyph{background:var(--surface);border-color:var(--blue-100);color:var(--accent);padding:var(--s2) var(--s3);border-radius:4px;letter-spacing:.04em}.upload-zone:hover,.upload-zone.dragover,.upload-zone:focus-within{background:var(--blue-100);border-color:var(--accent)}
input,select{height:44px;border-radius:4px;font-weight:500}label{color:var(--gray-700)}.badge.success{color:var(--ok);background:var(--ok-bg)}.badge.running{color:var(--accent);background:var(--blue-100)}.queue-table th{background:var(--blue-50);color:var(--navy-800)}.queue-table tr.selected{background:var(--blue-50)}.row-button{color:var(--navy-900);font-weight:600}.row-button:disabled{opacity:1;text-decoration:none;cursor:default}.row-error{word-break:normal}.result-header{padding:var(--s4) 0 var(--s6)}.result-header h3{font-size:24px}.result-tabs{gap:var(--s6)}.result-tabs button{font-size:var(--body);font-weight:600}.result-tabs button[aria-selected=true]{border-bottom-width:3px;color:var(--accent)}.source-table th{background:var(--blue-50);color:var(--navy-800);white-space:normal}.source-table caption{font-size:var(--body);color:var(--navy-900)}.empty{background:var(--gray-50);border-radius:4px}.empty.compact{background:var(--surface)}.empty strong{color:var(--navy-900);font-size:17px}.empty-lines{border-color:var(--blue-100);background:var(--blue-50)}.empty-lines i{background:var(--blue-100)}
footer{display:flex;gap:var(--s6);border-top:1px solid var(--gray-200);margin-top:var(--s8);padding-top:var(--s5)}footer strong{color:var(--navy-900);white-space:nowrap;font-weight:600}button,a,select{transition:background-color 180ms var(--ease),color 180ms var(--ease),border-color 180ms var(--ease)}
.map-toolbar{display:flex;justify-content:space-between;align-items:center;gap:var(--s4);margin-bottom:var(--s5)}.map-toolbar p{margin:0}.map-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(520px,100%),1fr));gap:var(--s6)}.map-card{margin:0;min-width:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.map-image-link{display:flex;justify-content:center;background:var(--gray-50);padding:var(--s4)}.map-image-link img{display:block;max-width:100%;height:auto;object-fit:contain}.map-card figcaption{padding:var(--s4);display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s3);border-top:1px solid var(--gray-200)}.map-card figcaption strong{color:var(--navy-900);display:block}.map-card .muted{font-size:var(--small);word-break:normal}.map-download{flex-shrink:0}.legend-panel{margin-top:var(--s6);padding:var(--s5);background:var(--blue-50);border:1px solid var(--blue-100);border-radius:var(--radius)}.legend-panel h3{font-size:17px;margin-bottom:var(--s4)}.legend-list{display:flex;flex-wrap:wrap;gap:var(--s3) var(--s6);list-style:none;padding:0;margin:0}.legend-list li{display:flex;align-items:center;gap:var(--s2);font-size:var(--small);color:var(--gray-700)}.legend-list img{object-fit:contain;max-width:56px;max-height:40px}.legend-list a{display:inline-flex;align-items:center;gap:var(--s2);text-decoration:underline;text-underline-offset:3px}.map-note{font-size:var(--small);color:var(--muted);margin-top:var(--s4)}.map-failure{color:var(--error);background:var(--error-bg);padding:var(--s4)}
@media(max-width:1440px){.page{margin:0;border-top:0;border-bottom:0}}@media(max-width:1024px){.page{padding:var(--s8)}.topbar{padding:0 var(--s8)}}@media(max-width:768px){:root{--section:19px;--title:28px}.page{padding:var(--s6) var(--s4)}.topbar{padding:0 var(--s4);height:60px}.topbar-links{gap:var(--s3)}.topbar-links>a{font-size:12px}.workspace-name{font-size:13px}.page-heading{align-items:flex-start;margin-bottom:var(--s6)}.page-heading .muted{font-size:15px}.desktop-break{display:none}h1{font-size:var(--title)}.workflow-strip{gap:var(--s2);padding:var(--s3);font-size:12px;justify-content:space-between;margin-bottom:var(--s6)}.workflow-strip a{flex:1}.workflow-strip b{display:block;margin:0 0 var(--s1)}.panel{padding:var(--s4)}.section-heading{margin-bottom:var(--s4)}.upload-zone{padding:var(--s6) var(--s3)}.result-header h3{font-size:20px}.result-tabs{gap:var(--s4)}.result-tabs button{font-size:14px}.map-toolbar,.map-card figcaption{align-items:flex-start;flex-direction:column}.map-image-link{padding:var(--s2)}.map-toolbar .button{width:100%}.map-card figcaption .button{align-self:flex-end}footer{flex-direction:column;gap:var(--s2)}}
@media(prefers-reduced-motion:reduce){button,a,select{transition:none}}
.pill.stage{background:#5e5ce6;border-color:#5e5ce6;color:#fff;font-weight:700}
