/* 관리자 화면 — 경림전력 admin.php 의 admin_css() 를 그대로 옮긴 것(지역 SEO 엔진 · core/admin).
   CSP 때문에 인라인 <style> · style="" 를 못 써서 파일로 뺐습니다. 원래 style="" 로 주던 막대 높이 · 너비 · 위치는
   data-h · data-w · data-l 로 싣고 admin.js 가 칠합니다. 맨 아래 「엔진에서 더한 것」 만 새로 쓴 줄입니다.
   홍보 문구(share) 화면 스타일은 그 화면을 뺐으므로 걷어냈습니다. */
:root{
  --bg:#f0f0f1; --card:#fff; --side:#1d2327;
  --line:#e3e6ec; --line2:#cfd4de;
  --tx:#1e2430; --tx2:#4a5261; --muted:#8b93a3;
  --brand:#2271b1; --brand2:#135e96;
  --ok:#1f9254; --warn:#c8871b; --bad:#c8403a;
  --ko:"Pretendard Variable",Pretendard,-apple-system,system-ui,"Malgun Gothic",sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--tx2);font-family:var(--ko);
font-size:15px;line-height:1.7;word-break:keep-all;-webkit-font-smoothing:antialiased}
h1,h2,h3{margin:0;color:var(--tx);letter-spacing:-.025em}
p{margin:0}
ul{margin:0;padding:0;list-style:none}
a{color:inherit;text-decoration:none}
button,select,input,textarea{font-family:inherit}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.number{font-variant-numeric:tabular-nums}
img{max-width:100%;display:block}

.bar{background:#1d2327;color:#c3c4c7;height:38px;display:flex;align-items:center;
gap:12px;padding:0 12px;position:sticky;top:0;z-index:20;font-size:13.5px}
.bar .logo{background:var(--brand);color:#fff;font-weight:700;font-size:11.5px;
letter-spacing:.06em;padding:3px 8px;border-radius:3px}
.bar .site{color:#f0f0f1}
.bar .site:hover{color:#fff}
.bar .sp{flex:1}
.bar .who b{color:#fff}
.bar a.out{color:#c3c4c7;padding:4px 9px;border-radius:4px}
.bar a.out:hover{color:#fff;background:#2c3338}
.bar .feed{color:#9ec5ff}
@media (max-width:640px){ .bar .who{display:none} .bar{gap:9px;font-size:12.5px} }
.feedbox label .open{font-weight:400;font-size:.85rem;margin-left:8px}
.smlist{border:1px solid var(--line);border-radius:8px;background:#fff;margin:10px 0}
.smlist summary{cursor:pointer;padding:9px 12px}
.smlist summary a{font-size:.85rem;margin-left:6px}
.smlist ol{margin:0;padding:4px 12px 10px 36px;max-height:320px;overflow:auto;font-size:.9rem}
.smlist li{padding:2px 0}
.smlist .when{color:#8c8f94;font-variant-numeric:tabular-nums;margin-left:6px;font-size:.84rem}
.smlist .new{background:#e7f6ec;color:#1a7f37;border-radius:4px;padding:0 6px;margin-left:4px;font-size:.78rem}

.app{display:grid;grid-template-columns:172px minmax(0,1fr);min-height:calc(100vh - 38px)}
.side{background:var(--side)}
.nav{display:flex;flex-direction:column}
.nav a{display:flex;align-items:center;gap:10px;padding:12px;font-size:15px;
color:#f0f0f1;position:relative}
.nav a:hover{background:#2c3338;color:#72aee6}
.nav a.on{background:var(--brand);color:#fff;font-weight:700}
.nav a.on::after{content:"";position:absolute;right:-8px;top:50%;margin-top:-8px;
border:8px solid transparent;border-right-color:var(--bg)}
.nav .ic{width:20px;text-align:center;flex:none}
.main{padding:22px clamp(12px,2vw,26px) 60px;min-width:0}

.box{background:var(--card);border:1px solid var(--line);border-radius:8px;
padding:24px 26px;margin:0 0 18px}
.box-narrow{max-width:400px;margin:0 auto}
.box h1{font-size:1.35rem;font-weight:800}
.box h2,.listhead{font-size:1.02rem;font-weight:800;color:var(--tx);
margin:32px 0 0;padding-top:20px;border-top:1px solid var(--line)}
.sub{font-size:.9rem;color:var(--muted);margin-top:8px;line-height:1.75}
.citehead{margin-top:22px;font-weight:800;font-size:.95rem;color:var(--brand)}

label{display:block;margin:20px 0 7px;font-size:.88rem;font-weight:700;color:var(--tx)}
label .opt{font-weight:500;color:var(--muted);font-size:.82rem}
input[type=text],input:not([type]),input[type=password],input[type=url],
input[type=date],input[type=number],textarea{
width:100%;padding:11px 13px;font-size:15.5px;border:1px solid var(--line2);
border-radius:6px;background:#fff;color:var(--tx)}
input:focus,textarea:focus{outline:none;border-color:var(--brand);
box-shadow:0 0 0 3px rgba(34,113,177,.13)}
textarea{resize:vertical;line-height:1.7}
input[type=file]{width:100%;padding:15px;font-size:14.5px;border:2px dashed var(--line2);
border-radius:8px;background:#fafbfd}
.check{display:flex;align-items:center;gap:10px;margin-top:20px;font-size:.95rem;font-weight:500}
.check input{width:20px;height:20px;flex:none;margin:0}

.go{width:100%;margin-top:22px;padding:14px;border:0;border-radius:6px;
background:var(--brand);color:#fff;font-size:1rem;font-weight:800;cursor:pointer}
.go:hover{background:var(--brand2)}
.mini{display:inline-block;padding:8px 14px;border:1px solid var(--line2);border-radius:6px;
background:#fff;font:inherit;font-size:.86rem;font-weight:700;cursor:pointer;color:var(--tx2)}
.mini:hover{border-color:var(--brand);color:var(--brand)}
.mini-del{color:var(--bad)}
.mini-del:hover{border-color:var(--bad)}
.back{margin-top:18px;font-size:.88rem;color:var(--muted)}
.back a{color:var(--brand)}

.alert{margin-top:16px;padding:12px 15px;border-radius:6px;font-size:.9rem;font-weight:600}
.alert-bad{background:#fdeceb;border:1px solid #f0c0bc;color:#a8332c}
.alert-ok{background:#eaf6ee;border:1px solid #b9dfc8;color:#1a6b3f}
.alert-warn{background:#fdf4e3;border:1px solid #ecd6a8;color:#8a5a00}
.warn{color:var(--warn)}
.hid{color:var(--bad)}
.empty{padding:26px 0;color:var(--muted);text-align:center}

.bigs{margin-top:18px;display:grid;gap:12px;
grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.big{display:grid;grid-template-columns:44px 1fr;grid-template-rows:auto auto;gap:1px 13px;
align-items:center;padding:17px 18px;border:1px solid var(--line2);border-radius:8px;background:#fff}
.big:hover{border-color:var(--brand);box-shadow:0 2px 10px -4px rgba(34,113,177,.4)}
.big-ico{grid-row:1/3;font-size:26px;text-align:center}
.big-t{font-size:1rem;font-weight:800;color:var(--tx)}
.big-s{font-size:.83rem;color:var(--muted)}

.cards2{margin-top:18px;display:grid;gap:14px;
grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.stat{background:#fff;border:1px solid var(--line);border-radius:8px;padding:17px 19px}
.stat-k{display:block;font-size:.78rem;letter-spacing:.03em;color:var(--muted);font-weight:700}
.stat b{display:block;font-size:2rem;font-weight:800;color:var(--brand);line-height:1.1;margin-top:5px}
.stat:nth-child(2) b{color:var(--ok)}
.stat:nth-child(3) b{color:#7a5bd6}
.stat-s{display:block;font-size:.8rem;color:var(--muted);margin-top:5px}

.tabs{margin-top:20px;display:flex;gap:6px;flex-wrap:wrap}
.tab{padding:7px 15px;border:1px solid var(--line2);border-radius:6px;background:#fff;
font-size:.86rem;color:var(--tx2)}
.tab:hover{border-color:var(--brand);color:var(--brand)}
.tab.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:700}
.tab[data-tag]{cursor:pointer;font:inherit}

.bars{margin-top:14px;display:flex;align-items:flex-end;gap:2px;height:150px;
background:#fff;border:1px solid var(--line);border-radius:8px;padding:12px}
.bars .bar{flex:1;height:100%;display:flex;align-items:flex-end;
background:none;position:static;padding:0;gap:0}
.bars .bar span{display:block;width:100%;background:var(--brand);border-radius:3px 3px 0 0;opacity:.88}
.bars .bar:hover span{opacity:1}
.bars-h .bar span{background:#7aa5cc}
.bars-mini{height:76px;padding:9px}
.barfoot a{color:var(--brand);font-weight:700}
.barfoot{margin-top:7px;font-size:.78rem;color:var(--muted);display:flex;justify-content:space-between}
/* 날짜를 누르면 그날 온 사람 (2026-10-07) */
.bars a.bar{cursor:pointer;text-decoration:none}
.bars a.bar.on span{background:#c8871b;opacity:1}
.daylist{display:flex;gap:6px;overflow-x:auto;padding:10px 2px 6px;-webkit-overflow-scrolling:touch}
.daylist .dl{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:1px;min-width:58px;
  padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--tx);text-decoration:none;font-size:.82rem}
.daylist .dl small{color:var(--muted);font-size:.7rem}
.daylist .dl b{font-size:.8rem;color:var(--brand)}
.daylist .dl:hover{border-color:var(--brand)}
.daylist .dl.zero{opacity:.55}
.daylist .dl.on{background:var(--brand);border-color:var(--brand);color:#fff}
.daylist .dl.on small,.daylist .dl.on b{color:#fff}
.dayview{margin-top:14px;padding:4px 16px 14px;border:2px solid var(--brand);border-radius:10px;background:#f8fbff}
.dayview .listhead{display:flex;justify-content:space-between;align-items:center}
.dayclose{font-size:.8rem;font-weight:700;color:var(--muted)}
.people{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.people>li{background:#fff;border:1px solid var(--line);border-radius:8px;padding:9px 12px}
.pp-h{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;font-size:.88rem}
.pp-h .pp-n{margin-left:auto;font-size:.76rem;color:var(--muted)}
.people>li.pp-call{border-color:#f0c36d;background:#fffbf0}
.pp-pages li.call{background:#fff1d6;border-color:#f0c36d;color:#8a5a00}
.rawlog{margin-top:14px}.rawlog>summary{cursor:pointer;font-size:.86rem;color:var(--muted);padding:6px 0}
.callrow td{background:#fff8e6}
.callmark{color:#8a5a00}
.ipgeo{display:inline-block;margin-left:4px;padding:0 7px;border-radius:999px;background:#eef3f8;color:#3c5a78;font-size:.76rem;font-family:inherit;font-weight:600;white-space:nowrap}
.pp-pages{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:5px}
.pp-pages li{font-size:.78rem;padding:2px 9px;border-radius:999px;background:#f1f4f7;border:1px solid var(--line)}
.pp-pages li a{color:var(--tx);text-decoration:none}
.pp-pages li a:hover{color:var(--brand2);text-decoration:underline}
.pp-pages li.call{background:#fff4dc;border-color:#f1d49a;color:#8a5a00;font-weight:700}
.pp-pages li.call small{font-weight:400}

.two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 28px}

.ranks{margin-top:10px;display:flex;flex-direction:column;gap:7px}
.ranks li{display:grid;grid-template-columns:1fr 88px 52px;gap:11px;
align-items:center;padding:10px 13px;border:1px solid var(--line);border-radius:7px;font-size:.9rem}
.ranks li span{color:var(--tx);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ranks i{display:block;height:8px;background:var(--brand);border-radius:4px;min-width:4px}
.ranks b{text-align:right;color:var(--tx);font-weight:800}

.checks{margin-top:10px}
.checks li{display:flex;align-items:center;gap:10px;padding:9px 0;
border-bottom:1px solid var(--line);font-size:.92rem}
.checks .mark{flex:0 0 21px;height:21px;border-radius:50%;display:grid;place-items:center;
font-size:12px;font-weight:800;color:#fff}
.checks li.ok .mark{background:var(--ok)}
.checks li.bad .mark{background:var(--bad)}
.checks li.warn2 .mark{background:var(--warn)}
.checks em{margin-left:auto;font-style:normal;font-size:.82rem;color:var(--muted);text-align:right}

.rows{margin-top:12px}
.rows li{padding:14px 2px;border-bottom:1px solid var(--line);
display:flex;gap:12px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
.rows-tight li{padding:11px 2px}
.row-main{flex:1 1 260px;min-width:0}
.tag{display:inline-block;font-size:.72rem;font-weight:700;padding:2px 9px;border-radius:4px;
background:#eef0f4;color:var(--brand)}
.tag-notice{background:#fff2d9;color:#8a5a00}
.tag-press{background:#eaf1ff;color:#2a4f9b}
.tag-news{background:#eaf6ee;color:#1a6b3f}
.row-title{display:block;margin-top:5px;font-weight:700;font-size:.98rem;color:var(--tx)}
.row-meta{display:block;margin-top:2px;font-size:.83rem;color:var(--muted)}
.row-meta a{color:var(--brand);font-weight:600}
.row-act{display:flex;gap:7px;align-items:center}
.row-act form{margin:0}

.introbox{margin-top:8px}
.introbox summary{cursor:pointer;font-size:.86rem;font-weight:700;color:var(--brand)}
.introbox textarea{margin-top:8px;font-size:.95rem}
.introbox .mini{margin-top:8px}
.hjtag{display:inline-block;margin-left:6px;font-size:.72rem;font-weight:700;padding:1px 8px;
  border-radius:999px;background:#fff4dc;color:#8a5a00;border:1px solid #f1d49a;vertical-align:1px}
.hjtag-ok{background:#eef7f1;color:#1f6b45;border-color:#b9dfcb}
.hjsrc{display:inline-block;margin-left:8px;font-size:.72rem}
.dayrange{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:6px 0}
.dayrange input{width:72px;text-align:center}
.nowform{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:14px 0;padding:10px 12px;
  border:1px solid var(--line);border-radius:8px;background:#f8fbff}
.nowform .mini{margin:0}
.nowform .sub{flex:1 1 100%;margin:0}
.awmood{display:inline-block;margin-left:6px;font-size:.72rem;padding:1px 8px;border-radius:999px;
  background:#eef1f4;color:var(--muted)}
.awmood.busy{background:#fff4dc;color:#8a5a00}

/* 지역 글 채우기 패널 */
.aipanel{border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin:14px 0 26px;background:#fbfcfe}
.aipanel .inlineform{margin:0 0 10px}
.aipanel .sub{margin:8px 0 0}
.aipanel textarea{width:100%;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.82rem;
padding:9px 11px;border:1px solid var(--line);border-radius:6px;background:#fff;margin-top:8px}
.chk{display:inline-flex;align-items:center;gap:7px;font-weight:400}
.chk input{width:auto;margin:0}
.ailog{margin:8px 0 0;padding-left:18px;font-size:.86rem;color:var(--tx2);line-height:1.9}
.kwpick{width:auto;max-width:210px;font-size:.82rem;padding:5px 8px;margin-right:5px}

/* 어느 공사 글이 써졌는지 — 쓴 것은 파랗고 누르면 열립니다 */
.kwmarks{list-style:none;display:flex;flex-wrap:wrap;gap:5px;margin:9px 0 0;padding:0}
.kwmarks li{font-size:.72rem;padding:2px 8px;border-radius:999px;border:1px solid var(--line)}
.kwmarks li.non{color:var(--muted);background:#f6f7f9}
.kwmarks li.has{color:#fff;background:var(--ok);border-color:var(--ok)}
.kwmarks li.has a{color:#fff;text-decoration:none}
.kwmarks li.has a:hover{text-decoration:underline}
.kwmarks li.non{padding:0}
.kwgo{font:inherit;font-size:.72rem;color:var(--muted);background:#f6f7f9;
border:0;padding:2px 8px;border-radius:999px;cursor:pointer}
.kwgo:hover{background:var(--brand);color:#fff}
.kwgo:disabled{background:#fff4d9;color:#8a6a1f;cursor:progress}
.kwmarks li.bad{background:#fdecea;color:#a3271f;border-color:#f2c4bf}
.kwhas{font:inherit;font-size:.72rem;color:#fff;background:none;border:0;padding:2px 8px;
border-radius:999px;cursor:pointer}
.inrow{margin-top:12px}
.inchk{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-weight:700}
.inchk input{width:17px;height:17px;accent-color:var(--brand)}
/* ── 자동 글쓰기 상태판 ──────────────────────────────────────────────
   「다음 편은 16:20」 한 줄로는 돌고 있는지 멈춰 있는지 구분이 안 됐습니다.
   시각·오늘 몫·하루 띠·예약작업, 넷을 한눈에 보이게 합니다. */
.awbox{margin:16px 0;padding:16px 18px;border-radius:12px;border:1px solid var(--line);background:#fff}
.awbox.aw-go{border-color:#b9dcc4;background:linear-gradient(180deg,#f4fbf6,#fff)}
.awbox.aw-wait{border-color:#dcd6ea;background:linear-gradient(180deg,#f8f6fd,#fff)}
.awbox.aw-off{border-color:var(--line);background:#fafafa}
.awbox.aw-bad{border-color:#f0c3bd;background:linear-gradient(180deg,#fdf4f3,#fff)}

.awtop{display:flex;align-items:center;gap:14px}
.awicon{font-size:2rem;line-height:1;flex:none}
.awwhen{display:flex;flex-direction:column;gap:2px;min-width:0}
.awwhen b{font-size:1.22rem;letter-spacing:-.02em}
.awsoon{display:inline-block;align-self:flex-start;margin-top:2px;padding:2px 9px;border-radius:999px;
        background:var(--brand);color:#fff;font-size:.78rem;font-weight:700}
.aw-wait .awsoon,.aw-off .awsoon{background:#8b83a6}
.awwhy{color:#6b6b6b;font-size:.87rem}

.awday{display:flex;align-items:center;gap:10px;margin-top:14px;flex-wrap:wrap}
.awlabel{color:#6b6b6b;font-size:.86rem}
.awdots{display:inline-flex;gap:5px}
.awdots i{width:22px;height:9px;border-radius:999px;background:#e4e4e8;display:block}
.awdots i.on{background:var(--brand)}
.awcount{font-size:.86rem;font-weight:700}

/* 다시 쓸 글. 초록 — 곧, 회색 — 기다림, 주황 — 사람이 봐야 함 */
.engpick{border:0;margin:0 0 12px;padding:0;display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.engpick legend{font-weight:700;margin-bottom:6px;padding:0}
.engopt{display:grid;grid-template-columns:auto 1fr;gap:2px 8px;align-items:start;cursor:pointer;
        padding:11px 13px;border:1px solid var(--line);border-radius:9px;background:#fff}
.engopt input{margin-top:3px;accent-color:var(--brand)}
.engopt span{grid-column:2;font-size:.82rem;color:#6b6b6b;line-height:1.5}
.engopt.on,.engopt:has(input:checked){border-color:var(--brand);background:#f3f7ff}
.awfix{margin-top:14px;padding:11px 13px;border-radius:9px;background:#fbf8ef;border:1px solid #efe3c3}
.awfixtop{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.awfixtop b{font-size:.92rem;color:#6d4c0c}
.awfixsub{font-size:.8rem;color:#8a7650}
.awfixlist{list-style:none;margin:8px 0 0;padding:0}
.awfixlist li{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;padding:4px 0;font-size:.84rem;border-top:1px dashed #eadfbf}
.awfixlist li:first-child{border-top:0}
.awfixname{font-weight:700;color:#333;flex:1 1 150px;min-width:0}
.awfixn{color:#8a5c10;font-size:.78rem}
.awfixst{font-size:.78rem;color:#777;white-space:nowrap}
.awfixlist li.due .awfixst{color:#1d5e2f;font-weight:700}
.awfixlist li.gone .awfixst{color:#a3271f;font-weight:700}
.awfixmore{margin:6px 0 0;font-size:.78rem;color:#8a7650}
.awclockwrap{margin-top:16px}
.awclock{position:relative;height:30px;border-radius:8px;background:#e8e6ef;overflow:hidden}
.awband{position:absolute;top:0;bottom:0;background:#b9e2c6;display:flex;align-items:center;justify-content:center}
.awband span{font-size:.74rem;color:#18512c;font-weight:700;white-space:nowrap}
.awnow{position:absolute;top:0;bottom:0;width:3px;background:#d13b2e}
.awnow span{position:absolute;top:50%;left:7px;transform:translateY(-50%);white-space:nowrap;
            font-size:.7rem;font-weight:700;color:#fff;background:#d13b2e;padding:1px 6px;border-radius:999px}
.awticks{position:relative;height:16px;margin-top:4px}
.awticks span{position:absolute;top:0;font-size:.7rem;color:#8a8a90;transform:translateX(-50%)}
.awticks span:first-child{transform:none}
.awticks span:last-child{transform:translateX(-100%)}
.awnote{margin:7px 0 0;color:#6b6b6b;font-size:.8rem;line-height:1.5}

.awcron{margin:13px 0 0;padding:10px 12px;border-radius:9px;font-size:.87rem;line-height:1.6}
.awcron.ok{background:#f0f8f2;color:#1d5e2f}
.awcron.no{background:#fdf6e6;color:#7a5510;border:1px solid #f0dcae}
.awcron.no a{color:#7a5510;font-weight:700}

/* 최근에 쓴 글. 전에는 「지역 관리」 의 예순 줄짜리 표에서 초록 칸을
   눈으로 찾아야 방금 뭘 썼는지 알 수 있었습니다. */
.awrhead{margin-top:22px}
.awrecent{list-style:none;margin:10px 0 0;padding:0;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.awrecent li{display:flex;align-items:center;gap:12px;flex-wrap:wrap;
             padding:11px 14px;border-top:1px solid var(--line);background:#fff}
.awrecent li:first-child{border-top:0}
.awrecent li.warn{background:#fffbf2}
.awrmain{flex:1 1 220px;min-width:0;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.awrmain b{font-weight:700}
.awrbad{font-size:.73rem;font-weight:700;color:#8a5c10;background:#fdf0d4;
        border:1px solid #f0dcae;border-radius:999px;padding:1px 8px}
.awrhid{font-size:.73rem;color:#777;background:#eee;border-radius:999px;padding:1px 8px}
.awrmeta{flex:none;color:#8a8a90;font-size:.8rem;white-space:nowrap}
.awract{flex:none;display:flex;gap:6px}
.awract .mini{padding:4px 10px;font-size:.8rem}
.awrnote{margin-top:9px}
@media (max-width:520px){
  .awrecent li{gap:6px}
  .awrmeta{flex:1 1 100%;order:3}
  .awract{order:4}
}

.awall{margin-top:16px}
.awbar{height:8px;border-radius:999px;background:#ececf0;overflow:hidden}
.awbar i{display:block;height:100%;background:var(--brand);border-radius:999px}
.awall .sub{margin-top:7px}

@media (max-width:520px){
  .awwhen b{font-size:1.05rem}
  .awicon{font-size:1.6rem}
  .awdots i{width:16px}
}

.mini-sh{color:#1d5e2f;border-color:#bfe0c8;background:#f1f9f3;font-weight:700}
.mini-sh:hover{background:#e3f3e8;border-color:#8ec7a0}
.sdbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 4px}
.sdbar .sdon{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.sdbar .sdon .sub{flex:1 1 100%;margin:0}
.sdmode .chip{cursor:pointer}
.sdmode .chip:not([data-k^="rt|"]){opacity:.4}
.chip.sdpick{background:#fdecea;border-color:#d93025;color:#a3271f;text-decoration:line-through}
.sdall{margin:0 0 8px}
.chip.hasdraft::after{content:'✍';margin-left:5px;opacity:.65;font-size:.85em}
.shtab-bl{color:#1d5e2f}
.shtab-rd{color:#a8431a}
.shredo{font:inherit;font-size:.88rem;border-radius:7px;padding:8px 14px;cursor:pointer;
        border:1px solid var(--line);background:#fff;color:#444}
.shredo:hover:not(:disabled){border-color:var(--brand);color:var(--brand2)}
.shredo:disabled{opacity:.5;cursor:default}
.chip.flash{animation:shflash 1.6s ease-out 1}
@keyframes shflash{0%,55%{box-shadow:0 0 0 3px #ffd98a}100%{box-shadow:0 0 0 3px rgba(255,217,138,0)}}
@media (prefers-reduced-motion:reduce){.chip.flash{animation:none;box-shadow:0 0 0 3px #ffd98a}}
.mxmarks li.has{padding:0}
.kwmarks li.warn{background:#c8871b;border-color:#c8871b}
.kwbang{display:inline-block;width:13px;height:13px;line-height:13px;text-align:center;
border-radius:999px;background:#fff;color:#8a5c10;font-weight:800;font-size:.62rem;
vertical-align:1px;margin-left:2px}
.mxk-warn{background:#c8871b;border-color:#c8871b;color:#fff;font-weight:800}
.kwhas:disabled{opacity:.6;cursor:progress}

/* 초록 알약을 누르면 그 줄 아래에 펼쳐지는 단추들 */
.mxmenu{flex:1 1 100%;display:flex;flex-wrap:wrap;align-items:center;gap:8px;
margin:8px 0 2px;padding:9px 12px;background:#f5fafe;border:1px solid var(--brand);
border-radius:8px;font-size:.86rem}
.mxmenu b{color:var(--tx)}
.mxmenu .mxwhen{font-size:.8rem;color:var(--muted)}
.mxmenu .sp{flex:1}
.mxmenu a,.mxmenu button{font:inherit;font-size:.85rem;border-radius:6px;padding:5px 12px;
border:1px solid var(--line2);background:#fff;color:var(--tx2);cursor:pointer;text-decoration:none}
.mxmenu a:hover,.mxmenu button:hover{border-color:var(--brand);color:var(--brand2)}
.mxmenu .redo{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:700}
.mxmenu .redo:hover{background:var(--brand2);color:#fff}
.mxmenu .shgo{color:#1d5e2f;border-color:#bfe0c8;background:#f1f9f3;font-weight:700;text-decoration:none}
.mxmenu .shgo:hover{background:#e3f3e8;border-color:#8ec7a0;color:#14512a}
.mxmenu .del{color:#a3271f;border-color:#f2c4bf}
.mxmenu .del:hover{background:#fdecea;border-color:#e39a92;color:#a3271f}
.mxmenu .warnnote{flex:1 1 100%;color:#8a5c10;font-size:.82rem;margin:0}
.textbox.is-bad{border-color:#f0b9b3}
.textbox.is-bad>summary{background:#fdf3f2}
.st-bad{background:#fdecea;color:#a3271f;border:1px solid #f2c4bf}
.badlist{margin:10px 0 0;padding:11px 13px;background:#fdf3f2;border:1px solid #f5cfca;
border-radius:7px;font-size:.88rem;color:#7d2b24;line-height:1.85}
.badlist code{background:#fff;border:1px solid #f2c4bf;border-radius:4px;
padding:1px 6px;font-size:.85em;color:#a3271f}
.alert-bad{background:#fdecea;border:1px solid #f2c4bf;color:#7d2b24}
.tmore{margin:6px 0 2px;font-size:.85rem}
.tmore a{color:var(--brand);text-decoration:none;font-weight:700}
.tmore a:hover{text-decoration:underline}
.mini-on{background:var(--ok);border-color:var(--ok);color:#fff}

/* 보이는 중 / 안 보임 — 줄만 봐도 알게 */
.st{display:inline-block;font-size:.7rem;font-weight:800;letter-spacing:.02em;
padding:2px 8px;border-radius:999px;margin-right:8px;vertical-align:2px}
.st-on{background:#e6f4ec;color:#177245;border:1px solid #bfe3cf}
.st-off{background:#f0f1f3;color:#8b93a3;border:1px solid var(--line2,#cfd4de)}
.trow.is-off{background:#fafbfc}
.trow.is-off .row-title{color:var(--muted)}
.trow.is-off .kwmarks li.has{background:#9fb3a8;border-color:#9fb3a8}
.muted{color:var(--muted)}
.foldbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:14px 0 4px}
.foldbar .sub{margin:0}
.tally{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 14px}
.tl{font-size:.82rem;color:var(--tx2);background:#f6f7f9;border:1px solid var(--line);
padding:5px 12px;border-radius:999px}
.tl b{color:var(--tx);margin-left:4px}
.tl-on{background:#e6f4ec;border-color:#bfe3cf;color:#177245}
.tl-on b{color:#0f5c34}
.tl-off{background:#f0f1f3;color:#7b8494}

.fixall{margin-top:16px;padding:14px 16px;background:#fff8e8;border:1px solid #f0dcae;
border-radius:9px}
.fixall-t{font-size:1.02rem;color:#6b5420;margin:0 0 4px}
.fixall-t b{color:#8a5c10;font-size:1.3rem}
.fixall .sub{color:#7a6330}
.fixall-act{display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin-top:11px}
.fixgo{font:inherit;font-size:.92rem;font-weight:700;background:#c8871b;border:0;color:#fff;
border-radius:7px;padding:9px 18px;cursor:pointer}
.fixgo:hover{background:#a86f13}
.fixstop{font:inherit;font-size:.88rem;background:#fff;border:1px solid var(--line2);
color:var(--tx2);border-radius:7px;padding:8px 14px;cursor:pointer}
.fixstop:disabled{opacity:.5;cursor:default}
.fixmsg{font-size:.86rem;color:#6b5420}
.fixbar{height:8px;background:#f2e3c0;border-radius:999px;overflow:hidden;margin-top:11px}
.fixbar i{display:block;height:100%;width:0;background:#c8871b;border-radius:999px;transition:width .3s}
.fixlog{list-style:none;margin:9px 0 0;padding:0;max-height:210px;overflow-y:auto;font-size:.85rem}
.fixlog li{padding:3px 0;color:var(--tx2)}
.fixlog li.ok{color:#1f6b45}
.fixlog li.bad{color:#a3271f}

/* 어디까지 썼나 — 요약 + 지역별 알약 */
.mxsum{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.mxs{flex:1 1 110px;border:1px solid var(--line);border-radius:8px;padding:11px 13px;
background:#fff;display:flex;flex-direction:column;gap:2px}
.mxs b{font-size:1.5rem;font-weight:800;color:var(--tx);line-height:1.1}
.mxs span{font-size:.8rem;color:var(--muted)}
.mxs-wide{flex:2 1 260px;justify-content:center;gap:8px}
.mxs-wide span{font-size:.86rem;color:var(--tx2)}
.mxs-wide b{font-size:inherit;font-weight:800;color:var(--tx)}
.mxbar{display:block;height:8px;background:#eef0f4;border-radius:999px;overflow:hidden}
.mxbar i{display:block;height:100%;background:var(--ok);border-radius:999px;transition:width .3s}

.mxlegend{margin-top:14px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.mxk{font-size:.72rem;padding:2px 9px;border-radius:999px;border:1px solid var(--line)}
.mxk-has{color:#fff;background:var(--ok);border-color:var(--ok)}
.mxk-non{color:var(--muted);background:#f6f7f9}

.mx{margin-top:10px;border-top:1px solid var(--line)}
.mxrow{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;
padding:10px 2px;border-bottom:1px solid var(--line)}
.mxname{flex:0 0 168px;display:flex;align-items:center;gap:7px;font-size:.92rem}
.mxname b{font-weight:700;color:var(--tx)}
.mxn{margin-left:auto;font-size:.82rem;color:var(--tx2)}
.mxrow .kwmarks{margin:0;flex:1 1 320px}
.mxrow.full{background:#f8fbf9}
.mxrow.full .mxname b{color:var(--muted)}
@media(max-width:760px){
  .mxname{flex:1 1 100%}
  .mxn{margin-left:auto}
}

/* 접힌 줄에 붙는 작은 표시 */
.sm{font-size:.68rem;font-weight:700;padding:1px 7px;border-radius:999px;
border:1px solid var(--line);color:var(--tx2);background:#fff;white-space:nowrap}
.sm-on{background:#e6f4ec;border-color:#bfe3cf;color:#177245}
.sm-off{background:#f0f1f3;border-color:#dfe2e7;color:#7b8494}
.sm-w{background:#eaf1fb;border-color:#c7d9f2;color:#1c4f91}
.sm-a{background:#fff4d9;border-color:#f0dcae;color:#8a6a1f}
@media (max-width:720px){ .sm{display:none} .tbox > summary .sm-on{display:inline-block} }
.mini-go{background:var(--brand);border-color:var(--brand);color:#fff}
.mini-go:hover{background:var(--brand2)}
.mini-on:hover{background:#187a45}

/* 사이트맵·RSS 주소 — 눌러서 바로 복사하시라고 */
.feedbox{border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin:8px 0 24px;background:#fbfcfe}
.feedbox input{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.86rem;background:#fff;cursor:pointer}
.feedbox .sub{margin:6px 0 16px}
.feedbox .sub:last-child{margin-bottom:0}
.wipeform{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px}
.wipeform .sub{margin:0}

/* 올린 글 목록 */
.textbox{border:1px solid var(--line);border-radius:9px;margin:10px 0;background:#fff}
.textbox > summary{cursor:pointer;list-style:none;padding:14px 16px;display:flex;
align-items:center;gap:12px;font-weight:700;color:var(--tx)}
.textbox > summary::-webkit-details-marker{display:none}
.textbox > summary::before{content:"\25B8";color:var(--muted);font-size:.85rem}
.textbox[open] > summary::before{content:"\25BE"}
.textbox > summary:hover{background:#f8f9fb}
.tx-meta{margin-left:auto;font-weight:400;font-size:.82rem;color:var(--muted)}
.textbox form,.textbox .tx-links,.textbox .tx-act{padding:0 16px}
.textbox .tx-links{margin:0 0 10px;font-size:.88rem}
.textbox textarea{width:100%;font-family:var(--ko);font-size:.95rem;line-height:1.85;
padding:12px 14px;border:1px solid var(--line);border-radius:7px}
.textbox .sub{margin:6px 0 10px;font-size:.83rem}
.tx-act{display:flex;gap:8px;padding-bottom:16px;margin-top:12px;
border-top:1px solid var(--line);padding-top:14px}

/* 지역 트리 — 예순 곳이 한 줄로 늘어서면 스크롤만 하다 끝납니다 */
.tnode{margin-left:calc(var(--d) * 14px)}
.tbox{border:1px solid var(--line);border-radius:8px;margin:8px 0;background:#fff}
.tbox > summary{cursor:pointer;list-style:none;padding:12px 15px;display:flex;
align-items:center;gap:9px;font-weight:800;color:var(--tx);font-size:.98rem}
.tbox > summary::-webkit-details-marker{display:none}
.tbox > summary::before{content:"\25B8";color:var(--muted);font-size:.85rem}
.tbox[open] > summary::before{content:"\25BE"}
.tbox > summary:hover{background:#f8f9fb}
.tcount{margin-left:auto;background:#eef0f4;color:var(--tx2);font-size:.75rem;
font-weight:700;padding:2px 9px;border-radius:999px}
.tkids{padding:0 12px 10px}
.trow{padding:12px 15px;border-top:1px solid var(--line);display:flex;gap:12px;
align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
.tnode > .trow{border:1px solid var(--line);border-radius:8px;margin:6px 0;background:#fff}
.mini-ai{border-color:var(--brand);color:var(--brand);font-weight:800}
.mini-ai:hover{background:var(--brand);color:#fff}
.ok2{color:var(--ok)}

.pics-label{margin-top:20px;font-weight:700;font-size:.9rem;color:var(--tx)}
.pics{margin-top:10px;display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(118px,1fr))}
.pic{position:relative;border-radius:7px;overflow:hidden;border:1px solid var(--line)}
.pic img{width:100%;height:104px;object-fit:cover}
.pic-del{position:absolute;left:0;right:0;bottom:0;border:0;padding:7px;
background:rgba(200,64,58,.92);color:#fff;font:inherit;font-size:.8rem;font-weight:700;cursor:pointer}

.inlineform{margin-top:14px;display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.inlineform label{margin:0;flex:1 1 100%}
.inlineform input{width:130px}
select{width:100%;padding:11px 13px;font-size:15.5px;border:1px solid var(--line2);
border-radius:6px;background:#fff;color:var(--tx)}
select:focus{outline:none;border-color:var(--brand)}
#mkout{margin-top:10px;font-size:.92rem;background:#f8f9fb}

.table-wrap{margin-top:12px;overflow-x:auto;border:1px solid var(--line);border-radius:8px}
.logtable{width:100%;min-width:460px;border-collapse:collapse;font-size:.86rem}
.logtable th{background:#f8f9fb;text-align:left;padding:10px 13px;font-weight:700;color:var(--tx);
border-bottom:1px solid var(--line);white-space:nowrap}
.logtable td{padding:10px 13px;border-bottom:1px solid var(--line)}
.logtable tr:last-child td{border-bottom:0}
.logtable tr:hover td{background:#fafbfd}

.loginpage{background:var(--bg)}
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:40px 18px}
.login .box{width:100%;max-width:400px;box-shadow:0 6px 24px -12px rgba(20,30,50,.25);margin:0}
.login h1{text-align:center}
.login .sub{text-align:center}

@media(max-width:900px){
  .app{grid-template-columns:minmax(0,1fr)}
  .nav{flex-direction:row;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .nav a{white-space:nowrap;border-bottom:3px solid transparent;padding:13px 15px}
  .nav a.on{border-bottom-color:#8fb6f0}
  .nav a.on::after{display:none}
  .two{grid-template-columns:1fr;gap:0}
  .main{padding:16px 12px 48px}
  .box{padding:20px 17px}
}

/* ── 엔진에서 더한 것 ─────────────────────────────────────────── */
/* 트리 들여쓰기 — 원래 style="--d:N" 이던 것 */
.tnode.d0{--d:0}.tnode.d1{--d:1}.tnode.d2{--d:2}.tnode.d3{--d:3}.tnode.d4{--d:4}
.tnode.d5{--d:5}.tnode.d6{--d:6}.tnode.d7{--d:7}.tnode.d8{--d:8}
/* 원래 style="margin-top:…" 이던 것 */
.mt0{margin-top:0}.mt12{margin-top:12px}.mt14{margin-top:14px}.mt16{margin-top:16px}
.w120{max-width:120px}
.textbox.pad{padding:14px 16px}
.ranks i.dot{width:6px;min-width:6px}
/* 막대는 admin.js 가 높이를 칠하기 전까지 0 으로 — 그리기 전에 꽉 찬 막대가 번쩍이지 않게 */
.bars .bar span{height:0}
.awband,.awnow{left:0}
.awticks span{left:0}
/* 키 두 칸(OpenAI · Anthropic) */
.keyform{align-items:flex-start}
.keyform input[type=password]{width:100%;max-width:420px}
.keyform .chk{margin:0 0 4px;flex:1 1 100%}
.nowmarks{margin:0}
.photomsg{margin-top:8px}
.photomsg.bad{color:var(--bad);font-weight:700}

/* 맨 위 «글쓰기 컴퓨터» 알약 — 예약 작업이 살아 있나(admin.js 1-2) */
.bar .wping{padding:3px 10px;border-radius:999px;font-size:12px;white-space:nowrap;background:#2c3338;color:#f0f0f1}
.bar .wping.ok{background:#00a32a;color:#fff}
.bar .wping.late{background:#dba617;color:#1d2327}
.bar .wping.bad{background:#d63638;color:#fff}
.bar .wping.rest,.bar .wping.off{background:#3c434a;color:#c3c4c7}
.bar .wping[hidden]{display:none}
@media (max-width:640px){ .bar .wping{font-size:11px;padding:2px 8px;max-width:46vw;overflow:hidden;text-overflow:ellipsis} .bar .feed{display:none} }

/* ── 메뉴는 제자리 · 휴대폰 보기 (2026-10-10 사용자 «스크롤 시 메뉴가 따라 움직이지 않게 · 모바일에서 잘 보이게») ── */
/* 넓은 화면: 왼쪽 메뉴가 화면에 붙어 있고, 본문만 스크롤 */
@media(min-width:901px){
  .nav{position:sticky;top:38px;max-height:calc(100vh - 38px);overflow-y:auto}
}
/* 좁은 화면: 메뉴는 맨 위 막대 바로 아래 가로 줄로 붙어 있음(옆으로 밀어 넘김) */
@media(max-width:900px){
  .side{position:sticky;top:38px;z-index:15;box-shadow:0 2px 6px -3px rgba(0,0,0,.35)}
  .nav{scrollbar-width:none}
  .nav::-webkit-scrollbar{display:none}
  .nav a{font-size:14px;padding:11px 13px;gap:6px}
  .nav a.on{background:var(--brand)}
}
/* 누가 쓰나 고르기 — 동그라미는 왼쪽 좁은 칸, 글은 오른쪽 */
.engopt{grid-template-columns:18px minmax(0,1fr)}
.engopt input{width:16px;height:16px;margin:3px 0 0;padding:0}
@media(max-width:640px){
  .bar{gap:8px;padding:0 10px;font-size:12.5px;overflow:hidden}
  .bar .logo{font-size:11px;padding:3px 7px;flex:none}
  .bar .site{white-space:nowrap}
  .bar a.out{padding:4px 6px}
  .main{padding:14px 10px 48px}
  .box{padding:16px 14px;border-radius:7px}
  .engpick{grid-template-columns:minmax(0,1fr)}
  /* 휴대폰이 글 칸을 누를 때 화면을 확대하지 않게(16px 미만이면 iOS 가 확대) */
  input[type=text],input:not([type]),input[type=password],input[type=url],
  input[type=date],input[type=number],textarea,select{font-size:16px}
  .main pre,.main code{white-space:pre-wrap;word-break:break-all}
}

/* ── 방문 통계 — 설명 접기 · 해외 한 줄 · 탭 · 날짜 표 (2026-10-16 경림전력-웹 STATS-UI-SPEC.md, 경림 admin.php 그대로) ── */
.stnote{margin:4px 0 10px}
.stnote>summary{cursor:pointer;color:var(--muted);font-size:.86rem}
.stnote .sub{margin-top:6px}
.abroadbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;margin:0 0 6px;padding:10px 14px;border:1px solid var(--line2);border-radius:8px;font-size:.9rem;color:var(--tx2)}
.abroadbar .mini{margin:0}
.sttabs{position:sticky;top:38px;z-index:5;display:flex;gap:4px;margin:22px 0 4px;padding:6px 0 0;background:var(--card,#fff);border-bottom:2px solid var(--line);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.sttabs::-webkit-scrollbar{display:none}
.sttabs button{flex:0 0 auto;font:inherit;font-weight:700;font-size:.92rem;padding:9px 16px;border:1px solid transparent;border-bottom:0;border-radius:6px 6px 0 0;background:none;color:var(--muted);cursor:pointer}
.sttabs button:hover{color:var(--brand)}
.sttabs button.on{background:#eef4fb;border-color:var(--line);color:var(--brand)}
.js-tabs .stpane{display:none}
.js-tabs .stpane.on{display:block}
@media(max-width:900px){.sttabs{top:var(--sttop,87px)}}
/* 막대 칸은 맨 위 막대(.bar)와 이름이 같아 z-index:20 · (휴대폰) overflow:hidden 을 물려받습니다 — 탭 줄 위로 올라오고 막대 위 숫자가 잘려서 되돌림 */
.bars .bar{z-index:auto;overflow:visible}
.bars-n{height:190px;padding-top:26px}
.bars-n .bar span{position:relative}
.bars-n .bar span em{position:absolute;left:0;right:0;top:-19px;text-align:center;font-style:normal;font-size:.75rem;color:var(--tx);font-weight:600}
.daytable{width:100%;border-collapse:collapse;font-size:.88rem}
.daytable th{background:#f8f9fb;text-align:left;padding:9px 13px;font-weight:700;border-bottom:1px solid var(--line)}
.daytable td{padding:8px 13px;border-top:1px solid #f0f1f3}
.daytable tr:nth-child(even) td{background:#fafbfc}
.daytable tr.zero td{color:#9aa0a6}
.daytable tr.on td{background:#fff4dd}
.daytable tr.more{display:none}
.daymore-t{position:absolute;opacity:0;pointer-events:none}
.daymore-l{display:block;text-align:center;padding:10px;font-size:.88rem;font-weight:700;color:var(--brand);cursor:pointer;border-top:1px solid #f0f1f3}
.daymore-l .c{display:none}
.table-wrap:has(.daymore-t:checked) .daytable tr.more{display:table-row}
.daymore-t:checked + .daymore-l .o{display:none}
.daymore-t:checked + .daymore-l .c{display:inline}
.logtable small.opt{color:var(--muted);font-size:.78rem}


/* 전화 · 전환율 카드(2026-10-16, region-seo-engine admin.css 와 같은 규칙) */
.cards5{grid-template-columns:repeat(5,minmax(0,1fr))}
@media (max-width:1100px){.cards5{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:620px){.cards5{grid-template-columns:repeat(2,minmax(0,1fr))}}
.stat-hot{border-top:3px solid #f0562a}
.stat.stat-hot b{color:#d9480f}
