/* 공통 테마 토큰. data-theme=light 는 스토리보드 톤(흰 바탕, 주황 포인트), dark 는 차량 인포테인먼트 톤. */
:root[data-theme=light]{--bg:#F3F4F6;--bg2:#FFFFFF;--panel:#FFFFFF;--panel2:#F6F7F9;--panel3:#ECEEF2;--line:#E5E7EB;--line2:#D1D5DB;--text:#111827;--muted:#6B7280;--dim:#9CA3AF;
  --acc:#F08A24;--acc2:#FFB65C;--acc-ink:#1A1406;--ok:#15A36B;--ok-bg:rgba(21,163,107,.10);--bad:#D93A3A;--bad-bg:rgba(217,58,58,.10);--info:#2F6BB0;--user1:#111827;--user2:#1F2937;--user-ink:#fff;
  --shadow:0 4px 18px rgba(17,24,39,.06);--map-filter:none;--btn-ink:#fff;--btn-bg:#111827}
:root[data-theme=dark]{--bg:#0A0E14;--bg2:#0E141C;--panel:#121923;--panel2:#182130;--panel3:#1E2938;--line:rgba(255,255,255,.07);--line2:rgba(255,255,255,.14);--text:#E9EEF4;--muted:#8D9AAB;--dim:#66738A;
  --acc:#F5B942;--acc2:#FFD37A;--acc-ink:#1A1406;--ok:#38D39F;--ok-bg:rgba(56,211,159,.14);--bad:#FF6B6B;--bad-bg:rgba(255,107,107,.14);--info:#5AA9FF;--user1:#2F6BB0;--user2:#234E86;--user-ink:#fff;
  --shadow:0 10px 30px rgba(0,0,0,.35);--map-filter:brightness(.9) saturate(.8);--btn-ink:#1A1406;--btn-bg:linear-gradient(135deg,var(--acc2),var(--acc))}
*{box-sizing:border-box}html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font:14px/1.55 "Pretendard Variable",Pretendard,"Noto Sans KR","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;-webkit-font-smoothing:antialiased;transition:background .2s,color .2s}
button{font:inherit}a{color:var(--acc)}
.btn{border:1px solid var(--line2);background:var(--panel2);color:var(--text);border-radius:10px;padding:9px 16px;cursor:pointer;font-weight:600;display:inline-flex;align-items:center;gap:8px;transition:filter .12s,transform .08s;white-space:nowrap}.btn:hover{filter:brightness(1.06)}.btn:active{transform:scale(.98)}
.btn.pri{background:var(--btn-bg);color:var(--btn-ink);border-color:transparent}.btn.ghost{background:transparent}.btn.sm{padding:6px 12px;font-size:12.5px;border-radius:8px}.btn.danger{color:var(--bad);border-color:var(--bad)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none;filter:none}
.pill{display:inline-flex;gap:6px;align-items:center;padding:2px 9px;border-radius:999px;background:var(--panel2);border:1px solid var(--line);font-size:11.5px;white-space:nowrap;color:var(--muted)}.pill.ok{color:var(--ok);border-color:var(--ok);background:var(--ok-bg)}.pill.bad{color:var(--bad);border-color:var(--bad);background:var(--bad-bg)}.pill.acc{color:var(--acc);border-color:var(--acc);background:transparent}.pill.run{color:var(--info);border-color:var(--info)}
.meta{color:var(--muted);font-size:12px}.mono{font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:11.5px;word-break:break-all;color:var(--muted)}.mono.k{color:var(--text)}
.rows{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:10px;overflow:hidden}.rows>div{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:8px 12px;border-top:1px solid var(--line);font-size:13px}.rows>div:first-child{border-top:0}.rows>div>span{color:var(--muted)}.rows>div>b{font-weight:600;text-align:right}
.rows b.run{color:var(--info)}.rows b.wait{color:var(--dim);font-weight:500}.rows b.ok{color:var(--ok)}.rows b.bad{color:var(--bad)}
.boxes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.boxes>div{border:1px solid var(--line);border-radius:10px;padding:9px 12px;background:var(--panel2)}.boxes>div small{display:block;color:var(--muted);font-size:11.5px}.boxes>div b{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}.boxes>div b.wait{color:var(--dim);font-weight:500;font-size:13px}
.dash{border:1px dashed var(--line2);border-radius:10px;padding:8px 12px;font-size:12.5px;color:var(--muted)}.dash summary{cursor:pointer}.dash table{width:100%;border-collapse:collapse;margin-top:6px;font-size:12px}.dash td,.dash th{padding:3px 6px;text-align:left;border-top:1px solid var(--line)}.dash th{color:var(--dim);font-weight:500;border-top:0}
.tracker{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--line);border-radius:10px;overflow:hidden}.tracker>div{padding:9px 6px;text-align:center;border-left:1px solid var(--line);font-size:12.5px}.tracker>div:first-child{border-left:0}.tracker>div b{display:block;font-weight:600}.tracker>div small{display:block;color:var(--dim);font-size:11.5px;margin-top:2px}
.tracker>div.done small{color:var(--ok)}.tracker>div.run{background:var(--panel2)}.tracker>div.run small{color:var(--info)}.tracker>div.fail small{color:var(--bad)}
.spin{display:inline-block;width:10px;height:10px;border:2px solid var(--line2);border-top-color:var(--info);border-radius:50%;animation:spin .8s linear infinite;vertical-align:-1px;margin-right:4px}@keyframes spin{to{transform:rotate(360deg)}}
.pinbig{display:flex;gap:8px;justify-content:center;margin:6px 0}.pinbig span{width:44px;height:56px;border-radius:10px;background:var(--panel2);border:1px solid var(--line2);display:grid;place-items:center;font-size:28px;font-weight:700;font-variant-numeric:tabular-nums;font-family:ui-monospace,Menlo,monospace}
.themebtn{border:1px solid var(--line2);background:var(--panel2);color:var(--muted);border-radius:999px;padding:5px 11px;cursor:pointer;font-size:12px;white-space:nowrap}.themebtn:hover{color:var(--text)}
.leaflet-container{font:inherit;filter:var(--map-filter)}.leaflet-bar a{background:var(--panel);color:var(--text);border-color:var(--line)}.leaflet-bar a:hover{background:var(--panel2)}
.leaflet-tooltip.st{background:var(--panel);color:var(--text);border:1px solid var(--line2);border-radius:8px;font-size:12px;line-height:1.35;padding:4px 8px;box-shadow:var(--shadow)}.leaflet-tooltip.st.rec{border-color:var(--acc)}.leaflet-tooltip.st.bad{color:var(--muted)}.leaflet-tooltip.st.car{background:var(--info);border-color:var(--info);color:#fff}
.leaflet-tooltip-top.st:before{border-top-color:var(--line2)}.leaflet-tooltip-top.st.rec:before{border-top-color:var(--acc)}.leaflet-tooltip-bottom.st:before{border-bottom-color:var(--line2)}.leaflet-tooltip-left.st:before{border-left-color:var(--line2)}.leaflet-tooltip-right.st:before{border-right-color:var(--line2)}.leaflet-tooltip-right.st.rec:before{border-right-color:var(--acc)}.leaflet-tooltip-left.st.rec:before{border-left-color:var(--acc)}.leaflet-tooltip-bottom.st.car:before{border-bottom-color:var(--info)}
