/* 날씨·환율 티커 — 세 앱 공용. 매출관리·유료정산: 헤더 한 줄 안에 날씨(.ticker), 헤더 아래 얇은 환율 줄(.fxbar). 운영지점: 헤더 아래 한 바(.tickerbar) */
.ticker, .tickerbar, .fxbar { color: #111827; font-variant-numeric: tabular-nums; }
.ticker.hidden, .fxbar.hidden, .tickerbar.hidden { display: none; }
.ticker { flex: 1 1 auto; min-width: 0; display: flex; justify-content: flex-end; overflow: hidden; }
.wi { width: 18px; height: 18px; vertical-align: middle; flex: none; }
.wi.sm { width: 13px; height: 13px; }
.wi.lg { width: 22px; height: 22px; }
/* 날씨 한 줄 */
.wx-row { display: flex; align-items: center; gap: 12px; font-size: 11px; line-height: 1.15; white-space: nowrap; }
.wx-row > * + * { border-left: 1px solid #e5e7eb; padding-left: 14px; }
.wx-now { display: flex; align-items: center; gap: 8px; }
.wx-temp { font-size: 16px; font-weight: 600; letter-spacing: -0.02em; line-height: 1; }
.wx-tmr { display: flex; flex-direction: column; gap: 3px; }
.wx-tmr b { font-weight: 600; }
.wx-airs { display: flex; gap: 14px; }
.wx-air { display: flex; align-items: center; gap: 6px; }
.wx-air .lbl { display: flex; align-items: center; gap: 3px; color: #374151; }
.wx-air .val { font-weight: 600; }
.wx-air .val.g1 { color: #1d4ed8; } .wx-air .val.g2 { color: #15803d; } .wx-air .val.g3 { color: #c2410c; } .wx-air .val.g4 { color: #b91c1c; }
/* 환율 얇은 줄 (매매기준율) */
.fx-row { display: flex; align-items: center; gap: 16px; font-size: 11.5px; color: #6b7280; }
.fx-row .basis { color: #9ca3af; font-size: 10.5px; }
.fx-row .tk b { color: #111827; font-weight: 600; margin-right: 3px; }
.fx-row .up { color: #dc2626; font-size: 10.5px; } .fx-row .down { color: #2563eb; font-size: 10.5px; }
.fx-row .src { margin-left: auto; font-size: 10.5px; color: #9ca3af; }
.fxbar { background: #fff; border-bottom: 1px solid #e5e7eb; padding: 4px 32px; }
/* 운영지점: 헤더 아래 한 바 */
.tickerbar { background: #fff; border-bottom: 1px solid #e5e7eb; padding: 8px 20px 6px; display: flex; flex-direction: column; gap: 4px; }
@media (max-width: 1500px) { .wx-airs { display: none; } }
@media (max-width: 1250px) { .wx-row > * + * { border-left: 0; padding-left: 0; } }
@media (max-width: 900px) { .ticker, .fxbar, .tickerbar { display: none; } }

/* ── 왼쪽 메인 메뉴(sidenav.js) — 모든 앱 공용 ── */
:root { --sn-w: 224px; }
.sn { position: fixed; top: 0; left: 0; bottom: 0; width: var(--sn-w); background: linear-gradient(180deg, #2546c4 0%, #1c3596 100%); color: #fff; display: flex; flex-direction: column; z-index: 60; overflow-y: auto; font-family: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Pretendard", sans-serif; }
.sn-brand { height: 60px; display: flex; align-items: center; padding: 0 22px; border-bottom: 1px solid rgba(255,255,255,0.14); flex: none; }
.sn-brand a { color: #fff; text-decoration: none; font-size: 16px; font-weight: 700; letter-spacing: -0.01em; }
.sn-nav { padding: 10px 10px 24px; }
.sn-group + .sn-group { margin-top: 10px; }
.sn-label { font-size: 11.5px; color: rgba(255,255,255,0.58); padding: 10px 12px 6px; letter-spacing: 0.02em; }
.sn-item > a { display: flex; align-items: center; gap: 11px; padding: 10px 12px; border-radius: 8px; color: rgba(255,255,255,0.9); text-decoration: none; font-size: 14.5px; font-weight: 600; }
.sn-item > a:hover { background: rgba(255,255,255,0.10); color: #fff; }
.sn-item.on > a { background: rgba(255,255,255,0.18); color: #fff; }
.sn-ic { width: 19px; height: 19px; flex: none; }
.sn-chev { width: 15px; height: 15px; margin-left: auto; opacity: 0.8; }
.sn-sub { display: flex; flex-direction: column; padding: 4px 0 6px 30px; }
.sn-sub:empty { display: none; }
.sn-sub button { background: none; border: 0; text-align: left; color: rgba(255,255,255,0.72); font: inherit; font-size: 13.5px; padding: 7px 12px; border-radius: 6px; cursor: pointer; border-left: 2px solid rgba(255,255,255,0.16); border-radius: 0 6px 6px 0; }
.sn-sub button:hover { color: #fff; background: rgba(255,255,255,0.08); }
.sn-sub button.on { color: #fff; font-weight: 600; border-left-color: #fff; background: rgba(255,255,255,0.10); }
.sn-toggle { display: none; background: none; border: 0; padding: 6px; margin-right: 4px; color: inherit; cursor: pointer; flex: none; }
.sn-toggle .sn-ic { width: 22px; height: 22px; }
.sn-dim { display: none; }
body.has-sn #app { margin-left: var(--sn-w); }
body.has-sn header .brand { display: none; }
@media (min-width: 901px) { body.has-sn.sn-tabs nav.tabs { display: none; } }
@media (max-width: 900px) {
  body.has-sn #app { margin-left: 0; }
  .sn { transform: translateX(-100%); transition: transform .2s ease; box-shadow: 0 0 24px rgba(0,0,0,0.2); }
  body.sn-open .sn { transform: none; }
  body.sn-open .sn-dim { display: block; position: fixed; inset: 0; background: rgba(17,24,39,0.4); z-index: 55; }
  .sn-toggle { display: inline-flex; }
}
.sn-item:not(.has-sub) .sn-chev { display: none; }
