/* 야외 천막 아래 노트북/대형 모니터 기준: 밝은 바탕, 높은 대비, 굵은 숫자 */
:root{
  --bg:#f4f5f2; --panel:#ffffff; --panel2:#fafbf8; --ink:#14171a; --ink2:#4a5157; --line:#d9ddd8;
  --line2:#eef0ec; --hover:#f3f6f1; --selbg:#fff6d6; --selbd:#f0dc9a; --soft:#e8ebe6;
  --flagbg:#fde5e4; --flagbd:#f3b3b0; --acc:#14171a; --acc-ink:#ffffff; --acc-sub:#c9cdd0;
  --mapbg:#dfe3dc; --mk-bg:#ffffff;
  --ok:#1f9d55; --stop:#e08a00; --gps:#7b4fd6; --comm:#d33b2c; --exit:#6b7177; --fin:#1f6fd1; --none:#b5bbbf;
  --sos:#e0161b; --accent:#14171a;
  --ref:#f2c200; --staff:#1f6fd1; --veh:#0e7c7b;
  --mono:'JetBrains Mono',ui-monospace,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font:14px/1.35 'IBM Plex Sans KR',system-ui,sans-serif}
button,input,select{font:inherit;color:inherit}
body{display:flex;flex-direction:column}

#top{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;padding:8px 12px;background:var(--panel);border-bottom:2px solid var(--ink)}
.brand{display:flex;align-items:center;gap:10px;min-width:0}
.brand b{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.clock{font-family:var(--mono);font-weight:700;font-size:15px}
.live{width:10px;height:10px;border-radius:50%;background:var(--comm);flex:none}
.live.on{background:var(--ok);box-shadow:0 0 0 3px #1f9d5533}
.chips{display:flex;gap:4px;flex-wrap:wrap}
.chip{display:flex;align-items:center;gap:6px;border:1.5px solid var(--line);background:var(--panel);border-radius:6px;padding:3px 8px;cursor:pointer;white-space:nowrap}
.chip i{width:9px;height:9px;border-radius:2px;flex:none}
.chip b{font-family:var(--mono)}
.chip.off{opacity:.38}
.chip.sel{border-color:var(--ink);background:var(--acc);color:var(--acc-ink)}
.chips.flags .chip b{color:var(--sos)}
.chips.flags .chip.sel b{color:var(--acc-ink)}
.chips.flags .chip.zero{opacity:.35;cursor:default}
.chips.flags .chip.zero b{color:inherit}
.chips.flags .chip.hot{background:var(--sos);border-color:var(--sos);color:#fff}
.chips.flags .chip.hot b{color:#fff}
/* 헤더 줄 고정: 1줄 상태칩+도구 / 2줄 경고칩 / 3줄 그룹칩 */
#top .chips.flags,#top .chips.groups{width:100%;flex-basis:100%}
.tools{display:flex;gap:8px;margin-left:auto;align-items:center}
.seg{display:flex;border:1.5px solid var(--ink);border-radius:6px;overflow:hidden}
.seg button{border:0;background:var(--panel);padding:4px 9px;cursor:pointer}
.seg button.on{background:var(--acc);color:var(--acc-ink)}
.seg.all button.on{background:var(--panel);color:var(--ink)}           /* 전체 선택 = 필터 없음 */
.seg.all button + button{border-left:1px solid var(--line)}
#q{border:1.5px solid var(--line);border-radius:6px;padding:4px 8px;width:140px}

#sosBar[hidden]{display:none!important}
#sosBar{background:var(--sos);color:#fff;padding:6px 12px;display:flex;flex-direction:column;gap:4px}
#sosBar .row{display:flex;align-items:center;gap:10px;font-weight:600}
#sosBar .row span{flex:1}
#sosBar button{border:2px solid #fff;background:transparent;color:#fff;border-radius:6px;padding:2px 10px;cursor:pointer;font-weight:700}
#sosBar button.ack{background:#fff;color:var(--sos)}
#sosBar.flash{animation:flash 1s steps(2) 6}
@keyframes flash{50%{background:#7a0000}}

main{flex:1;display:flex;min-height:0}
#map{flex:1;min-width:0;background:var(--mapbg)}
#side{width:420px;max-width:45vw;display:flex;flex-direction:column;background:var(--panel);border-left:2px solid var(--ink);min-height:0}
.tabs{display:flex;border-bottom:1.5px solid var(--line)}
.tabs button{flex:1;border:0;background:none;padding:9px 4px;cursor:pointer;font-weight:600;color:var(--ink2);border-bottom:3px solid transparent}
.tabs button.on{color:var(--ink);border-bottom-color:var(--ink)}
.badge{background:var(--sos);color:#fff;border-radius:9px;padding:0 6px;font-size:11px}
.tab{display:none;flex:1;min-height:0;overflow:auto}
.tab.on{display:flex;flex-direction:column}

.listHead,.row-p{display:grid;grid-template-columns:62px 1fr 52px 44px 40px 44px 44px;gap:4px;align-items:center;padding:0 10px}
.listHead{position:sticky;top:0;background:var(--panel);font-size:11px;color:var(--ink2);padding-top:6px;padding-bottom:6px;border-bottom:1px solid var(--line);z-index:1}
.c-num{text-align:right}
.row-p{padding-top:5px;padding-bottom:5px;border-bottom:1px solid var(--line2);cursor:pointer}
.row-p:hover{background:var(--hover)}
.row-p.sel{background:var(--panel)6d6}
.row-p .bib{font-family:var(--mono);font-weight:700;display:flex;align-items:center;gap:5px}
.row-p .bib i{width:9px;height:9px;border-radius:50%;flex:none}
.row-p .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row-p .nm small{color:var(--sos);font-weight:700;margin-left:4px}
.row-p .n{font-family:var(--mono);text-align:right;font-size:13px}
.row-p .n.dim{color:var(--none)}
.row-p .n.warn{color:var(--sos);font-weight:700}

/* 지도 마커: 배번 라벨 */
.mk{font-family:var(--mono);font-weight:700;font-size:12px;padding:1px 5px;border-radius:4px;background:var(--mk-bg);border:2px solid var(--c,#999);color:var(--ink);white-space:nowrap;box-shadow:0 1px 2px #0003;transform:translate(-50%,-50%);display:inline-block;position:relative}
.mk.r-referee{background:var(--ref);border-color:var(--ink)}
.mk.r-staff{background:var(--staff);color:#fff;border-color:var(--ink)}
.mk.r-vehicle{background:var(--veh);color:#fff;border-color:var(--ink)}
.mk.r-referee::before,.mk.r-staff::before,.mk.r-vehicle::before{content:attr(data-r);font-weight:600;margin-right:3px}
.mk.dim{opacity:.55}
.mk.alert{background:var(--sos);color:#fff;border-color:#7a0000}
.mk.sos{animation:pulse .9s infinite}
.mk.sel{outline:3px solid var(--ink);outline-offset:1px;z-index:5}
@keyframes pulse{50%{box-shadow:0 0 0 8px #e0161b44}}
.poi{font-size:11px;font-weight:700;background:var(--acc);color:var(--acc-ink);padding:2px 6px;border-radius:10px;transform:translate(-50%,-50%);display:inline-block;white-space:nowrap}
.km{font-family:var(--mono);font-size:10px;background:var(--panel);border:1px solid var(--ink);padding:0 3px;border-radius:3px;transform:translate(-50%,-50%);display:inline-block}
.leaflet-div-icon{background:none;border:0}

/* 상세 */
#detail{padding:12px}
.empty{color:var(--ink2);padding:24px 16px!important;text-align:center}
.d-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.d-head .bibbig{font-family:var(--mono);font-size:28px;font-weight:700}
.d-head .nm{font-size:18px;font-weight:600}
.d-head .grp{color:var(--ink2)}
.stbadge{display:inline-block;padding:2px 8px;border-radius:5px;color:#fff;font-weight:700;font-size:12px}
.flagrow{display:flex;gap:4px;flex-wrap:wrap;margin:8px 0}
.flagrow span{background:var(--flagbg);color:var(--sos);border:1px solid var(--flagbd);border-radius:4px;padding:1px 6px;font-size:12px;font-weight:600}
.prog{height:10px;background:var(--soft);border-radius:5px;overflow:hidden;margin:6px 0 2px}
.prog div{height:100%;background:var(--ink)}
.tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:12px 0}
.tile{border:1.5px solid var(--line);border-radius:8px;padding:8px 10px;position:relative}
.tile .lb{font-size:11px;color:var(--ink2);display:flex;justify-content:space-between}
.tile .v{font-family:var(--mono);font-size:30px;font-weight:700;line-height:1.1}
.tile .v small{font-size:13px;font-weight:500;color:var(--ink2)}
.tile .sub{font-family:var(--mono);font-size:11px;color:var(--ink2)}
.src{font-size:10px;font-weight:700;padding:0 5px;border-radius:3px;color:#fff}
.src.ant{background:#d15b00}.src.ble{background:#1f6fd1}.src.bridge{background:#7b4fd6}.src.gps{background:#1f9d55}.src.fused{background:#0e7c7b}.src.baro{background:#0e7c7b}
.kv{display:grid;grid-template-columns:96px 1fr;gap:3px 8px;font-size:13px;margin:8px 0}
.kv dt{color:var(--ink2)}.kv dd{margin:0;font-family:var(--mono);overflow-wrap:anywhere}
.d-act{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.d-act button,.d-act a{border:1.5px solid var(--ink);background:var(--panel);border-radius:6px;padding:5px 10px;cursor:pointer;text-decoration:none;font-weight:600}
.d-act .pri{background:var(--acc);color:var(--acc-ink)}
h4{margin:14px 0 4px;font-size:12px;color:var(--ink2);text-transform:uppercase;letter-spacing:.04em}

/* 채팅 */
#chatLog{flex:1;overflow:auto;padding:10px;display:flex;flex-direction:column;gap:6px}
.msg{max-width:85%;padding:6px 10px;border-radius:10px;background:var(--line2)}
.msg .who{font-size:11px;color:var(--ink2);font-weight:600;cursor:pointer}
.msg .tm{font-size:10px;color:var(--ink2);font-family:var(--mono);margin-left:6px}
.msg.hq{align-self:flex-end;background:var(--acc);color:var(--acc-ink)}
.msg.hq .who,.msg.hq .tm{color:var(--acc-sub)}
#chatForm{display:flex;gap:6px;padding:8px;border-top:1.5px solid var(--line)}
#chatForm select{max-width:110px;border:1.5px solid var(--line);border-radius:6px}
#chatForm input{flex:1;border:1.5px solid var(--line);border-radius:6px;padding:6px 8px;min-width:0}
#chatForm button{border:0;background:var(--acc);color:var(--acc-ink);border-radius:6px;padding:0 14px;font-weight:700;cursor:pointer}

#log{font-family:var(--mono);font-size:12px;padding:6px 10px}
#log div{padding:3px 0;border-bottom:1px solid var(--line2)}
#log b{cursor:pointer}

@media (max-width:820px){
  main{flex-direction:column}
  #side{width:auto;max-width:none;height:46vh;border-left:0;border-top:2px solid var(--ink)}
  .tools{margin-left:0;width:100%}
  #q{flex:1;width:auto}
  .listHead,.row-p{grid-template-columns:56px 1fr 46px 40px 36px 40px 40px;padding:0 6px}
}

/* ── 다중 사이트 / 그룹 / 권한 ── */
#sitePick{font-weight:700;font-size:15px;border:1.5px solid var(--ink);border-radius:6px;padding:3px 6px;max-width:260px;background:var(--panel)}
.chips.groups{width:100%;align-items:center}
.chips.groups .lbl{font-size:11px;color:var(--ink2);font-weight:700;margin-right:2px}
.chips.groups .chip i{border-radius:50%}
.mk{border-bottom-width:4px;border-bottom-color:var(--g,var(--c))}
.mk.r-referee,.mk.r-staff,.mk.r-vehicle{border-bottom-color:var(--g,var(--ink))}
.row-p{box-shadow:inset 3px 0 0 var(--g,transparent)}
.gdot{display:inline-block;width:9px;height:9px;border-radius:50%;margin:0 3px 0 2px;vertical-align:middle}
.usermenu{position:relative}
#meBtn{border:1.5px solid var(--line);background:var(--panel);border-radius:6px;padding:4px 9px;cursor:pointer;white-space:nowrap;font-weight:600}
#meMenu{position:absolute;right:0;top:calc(100% + 4px);background:var(--panel);border:1.5px solid var(--ink);border-radius:8px;min-width:140px;z-index:2000;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 6px 16px #0002}
#meMenu[hidden]{display:none}
#meMenu a,#meMenu button{padding:9px 12px;border:0;background:none;text-align:left;cursor:pointer;color:var(--ink);text-decoration:none}
#meMenu a:hover,#meMenu button:hover{background:var(--hover)}
.rolechip{font-size:10px;font-weight:700;padding:1px 6px;border-radius:4px;background:var(--soft);color:var(--ink);vertical-align:middle}
.rolechip.root{background:var(--sos);color:#fff}
.rolechip.admin{background:var(--acc);color:var(--acc-ink)}
.rolechip.viewer{background:var(--soft)}
.ro{padding:10px;text-align:center;color:var(--ink2);border-top:1.5px solid var(--line);font-size:13px}
body.viewer #top::after{content:'열람 전용';position:absolute;right:12px;bottom:-22px;font-size:11px;font-weight:700;background:var(--acc);color:var(--acc-ink);padding:2px 8px;border-radius:0 0 6px 6px;z-index:1500}
#top{position:relative}
#picker{position:fixed;inset:0;background:#14171acc;display:flex;align-items:center;justify-content:center;z-index:3000;padding:16px}
#picker[hidden]{display:none}
.pickBox{background:var(--panel);border-radius:10px;padding:20px;width:min(460px,100%);max-height:80vh;overflow:auto;border:2px solid var(--ink)}
.pickBox h2{margin:0 0 12px;font-size:18px}
.pickItem{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;border:1.5px solid var(--line);background:var(--panel);border-radius:8px;padding:10px 12px;margin-bottom:8px;cursor:pointer}
.pickItem:hover{border-color:var(--ink)}
.pickItem span{font-size:12px;color:var(--ink2)}
.pickItem.inactive{opacity:.6}
.hint{color:var(--ink2);font-size:13px}

#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);background:var(--acc);color:var(--acc-ink);padding:9px 16px;border-radius:8px;font-weight:600;opacity:0;transition:.2s;z-index:5000;pointer-events:none}
#toast.show{opacity:1;transform:translateX(-50%)}
#toast.err{background:var(--sos)}

/* 로그인 */
body.login{align-items:center;justify-content:center;background:var(--bg)}
.loginBox{background:var(--panel);border:2px solid var(--ink);border-radius:12px;padding:28px;width:min(340px,92vw);display:flex;flex-direction:column;gap:12px}
.loginBox .logo{font-size:20px;font-weight:700;display:flex;align-items:center;gap:8px;margin-bottom:6px}
.loginBox label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--ink2);font-weight:600}
.loginBox input{border:1.5px solid var(--line);border-radius:6px;padding:9px 10px;font-size:15px;color:var(--ink)}
.loginBox input:focus{outline:2px solid var(--ink);border-color:var(--ink)}
.loginBox button{border:0;background:var(--acc);color:var(--acc-ink);border-radius:6px;padding:10px;font-weight:700;font-size:15px;cursor:pointer}
.err{color:var(--sos);font-size:13px;margin:0;min-height:1em}
.msg.side{background:var(--panel)6d6;border:1px solid var(--selbd)}
.xg{font-size:12px;border:1px solid var(--line);border-radius:9px;padding:0 6px;margin-left:3px;white-space:nowrap}
#top .brand{order:0}#top #stChips{order:1}#top .tools{order:2}#top #flagChips{order:3}#top #groupChips{order:4}

/* ── 채팅 스레드 / 공지 (chatui.js) ── */
.tabs .popout{flex:0 0 40px;font-size:16px;color:var(--ink2)}
.tabs .popout:hover{color:var(--ink)}
#threads,#notices{flex:1;min-height:0;display:flex;flex-direction:column}
.cu-threads{display:flex;min-height:0;flex:1}
.cu-list{display:flex;flex-direction:column;min-height:0;border-right:1.5px solid var(--line)}
.cu-search{padding:8px;border-bottom:1px solid var(--line)}
.cu-search input{width:100%;border:1.5px solid var(--line);border-radius:6px;padding:6px 8px}
.cu-items{flex:1;overflow:auto}
.cu-item{padding:8px 12px;border-bottom:1px solid var(--line2);cursor:pointer}
.cu-item:hover{background:var(--hover)}
.cu-item.on{background:var(--panel)6d6}
.cu-item.room b::before{content:'👥 '}
.cu-item.new span{color:var(--fin);font-size:12px}
.cu-row{display:flex;justify-content:space-between;align-items:center;gap:8px}
.cu-row b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cu-time{font-family:var(--mono);font-size:11px;color:var(--ink2);flex:none}
.cu-prev{font-size:12px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cu-badge{font-style:normal;background:var(--sos);color:#fff;border-radius:9px;padding:0 6px;font-size:11px;font-weight:700;flex:none}
.cu-empty{color:var(--ink2);padding:20px;text-align:center;font-size:13px}
.cu-thread{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}
.cu-thead{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1.5px solid var(--line)}
.cu-thead .cu-sub{color:var(--ink2);font-size:12px}
.cu-back{border:1.5px solid var(--line);background:var(--panel);border-radius:6px;padding:0 8px;cursor:pointer;font-weight:700}
.cu-msgs{flex:1;overflow:auto;padding:10px;display:flex;flex-direction:column;gap:6px}
.cu-msg{max-width:85%;padding:6px 10px;border-radius:10px;background:var(--line2);align-self:flex-start;white-space:pre-wrap;overflow-wrap:anywhere}
.cu-msg.me{align-self:flex-end;background:var(--acc);color:var(--acc-ink)}
.cu-msg.side{background:var(--panel)6d6;border:1px solid var(--selbd)}
.cu-who{font-size:11px;color:var(--ink2);font-weight:600;display:flex;gap:8px;justify-content:space-between}
.cu-who span{font-family:var(--mono);font-weight:500}
.cu-msg.me .cu-who{color:var(--acc-sub)}
.cu-form{display:flex;gap:6px;padding:8px;border-top:1.5px solid var(--line)}
.cu-form[hidden]{display:none}
.cu-form input{flex:1;border:1.5px solid var(--line);border-radius:6px;padding:7px 9px;min-width:0}
.cu-form button,.cu-nact button{border:0;background:var(--acc);color:var(--acc-ink);border-radius:6px;padding:0 14px;font-weight:700;cursor:pointer}
.cu-ro{padding:10px;text-align:center;color:var(--ink2);border-top:1.5px solid var(--line);font-size:13px}
.cu-ro[hidden]{display:none}
/* 사이드패널(좁음): 목록 ↔ 대화 전환 */
.cu-threads.compact .cu-list{flex:1;border-right:0}
.cu-threads.compact .cu-thread{display:none}
.cu-threads.compact.has-active .cu-list{display:none}
.cu-threads.compact.has-active .cu-thread{display:flex}
/* 넓은 창: 목록 | 대화 */
.cu-threads.full .cu-list{width:300px;flex:none}
.cu-threads.full .cu-back{display:none}
.cu-threads.full:not(.has-active) .cu-thead,.cu-threads.full:not(.has-active) .cu-msgs{visibility:hidden}
/* 공지 */
.cu-notices{display:flex;flex-direction:column;min-height:0;flex:1}
.cu-nform{padding:10px;border-bottom:1.5px solid var(--line);display:flex;flex-direction:column;gap:8px;background:var(--panel2)}
.cu-nform[hidden]{display:none}
.cu-targets{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.cu-tl{font-size:11px;color:var(--ink2);font-weight:700;margin-right:2px}
.cu-sep{width:100%;height:0}
.cu-t{border:1.5px solid var(--line);background:var(--panel);border-radius:6px;padding:3px 9px;cursor:pointer;font-size:13px;display:flex;align-items:center;gap:5px}
.cu-t i{width:9px;height:9px;border-radius:50%}
.cu-t.on{background:var(--acc);color:var(--acc-ink);border-color:var(--acc)}
.cu-nform textarea{border:1.5px solid var(--line);border-radius:6px;padding:8px;resize:vertical;font:inherit}
.cu-nact{display:flex;justify-content:space-between;align-items:center}
.cu-nact button{padding:7px 16px}
.cu-tlabel{font-weight:700;font-size:13px}
.cu-nlist{flex:1;overflow:auto;padding:10px;display:flex;flex-direction:column;gap:8px}
.cu-notice{border:1.5px solid var(--line);border-left:4px solid var(--ink);border-radius:8px;padding:8px 10px;white-space:pre-wrap;overflow-wrap:anywhere}
.cu-notice .cu-who b{color:var(--ink)}

/* 채팅·공지 별도 창 */
body.chatwin main.cw{flex:1;display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);min-height:0}
.cw-col{display:flex;flex-direction:column;min-height:0;background:var(--panel)}
.cw-col+.cw-col{border-left:2px solid var(--ink)}
.cw-col h3{margin:0;padding:8px 12px;font-size:14px;border-bottom:1.5px solid var(--line);background:var(--bg)}
@media (max-width:820px){ body.chatwin main.cw{grid-template-columns:1fr;grid-auto-rows:minmax(0,1fr)} .cu-threads.full .cu-list{width:42%} }


/* ── 다크 테마 (html[data-theme=dark], theme.js가 설정) ── */
html[data-theme=dark]{
  color-scheme:dark;
  --bg:#0f1215; --panel:#171b1f; --panel2:#1c2125; --ink:#e4e7ea; --ink2:#98a1a9; --line:#2e353b;
  --line2:#232a2f; --hover:#20272c; --selbg:#3a3215; --selbd:#6e5d22; --soft:#2a3136;
  --flagbg:#3b1b1b; --flagbd:#6e2c2c; --acc:#e4e7ea; --acc-ink:#0f1215; --acc-sub:#5a636b;
  --mapbg:#1a1e21; --mk-bg:#1c2125;
  --ok:#2fbf6f; --stop:#f0a020; --gps:#9b74ee; --comm:#ef5747; --exit:#8a9096; --fin:#4c8ff0; --none:#59616a; --sos:#ff3b3b;
  --ref:#f2c200; --staff:#3d82e0; --veh:#14a3a1;
}
input,select,textarea{background:var(--panel);color:var(--ink)}
html[data-theme=dark] .leaflet-tile-pane{filter:invert(1) hue-rotate(180deg) brightness(.92) contrast(.9) saturate(.55)}
html[data-theme=dark] .leaflet-container{background:var(--mapbg)}
html[data-theme=dark] .leaflet-bar a,html[data-theme=dark] .leaflet-control-layers{background:var(--panel);color:var(--ink);border-color:var(--line)}
html[data-theme=dark] .leaflet-control-layers-expanded{color:var(--ink)}
html[data-theme=dark] .leaflet-control-attribution{background:#171b1fcc;color:var(--ink2)}
html[data-theme=dark] .leaflet-control-attribution a{color:var(--ink2)}
html[data-theme=dark] .leaflet-control-scale-line{background:#171b1fcc;color:var(--ink);border-color:var(--ink2)}
html[data-theme=dark] .leaflet-tooltip{background:var(--panel);color:var(--ink);border-color:var(--line)}
html[data-theme=dark] .leaflet-control-layers-toggle{filter:invert(1)}
html[data-theme=dark] .mk.r-referee{color:#14171a;border-color:#14171a}
html[data-theme=dark] #toast{box-shadow:0 4px 14px #0008}
/* 테마 전환 버튼 */
.themeBtn{border:1.5px solid var(--line);background:var(--panel);color:var(--ink);border-radius:6px;padding:4px 8px;cursor:pointer;font-size:14px;line-height:1;min-width:34px}
.themeBtn:hover{border-color:var(--ink)}
