:root {
    --bg:#0d1117; --bg2:#161b22; --bg3:#1c2333;
    --border:#30363d; --border2:#21262d;
    --text:#e6edf3; --text2:#8b949e; --text3:#6e7681;
    --orange:#f97316; --green:#22c55e; --blue:#3b82f6;
    --red:#ef4444; --yellow:#eab308; --purple:#a855f7;
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,'Malgun Gothic',sans-serif;background:var(--bg);color:var(--text);font-size:13px}

.header{background:var(--bg2);border-bottom:1px solid var(--border);padding:12px 20px;position:sticky;top:0;z-index:100}
.header-inner{display:flex;justify-content:space-between;align-items:center;max-width:1600px;margin:0 auto}
.header h1{font-size:16px;color:var(--orange)}

.btn{display:inline-flex;align-items:center;gap:4px;padding:6px 14px;border:1px solid var(--border);border-radius:6px;
     background:var(--bg2);color:var(--text);font-size:12px;cursor:pointer;transition:all .15s;font-family:inherit;white-space:nowrap}
.btn:hover{border-color:var(--text3);background:var(--bg3)}
.btn-sm{padding:4px 10px;font-size:11px}
.btn-primary{background:var(--orange);border-color:var(--orange);color:#fff}
.btn-primary:hover{background:#ea580c}
.btn-success{background:var(--green);border-color:var(--green);color:#fff}
.btn-danger{background:var(--red);border-color:var(--red);color:#fff}
.btn-file{cursor:pointer}
.btn:disabled{opacity:.4;cursor:not-allowed}

.container{max-width:1600px;margin:0 auto;padding:16px 20px}

.action-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;flex-wrap:wrap;gap:8px}
.stats{display:flex;gap:16px;font-size:12px;color:var(--text2)}
.stats strong{color:var(--text)}
.stat-processing strong{color:var(--yellow)}
.stat-done strong{color:var(--green)}
.stat-error strong{color:var(--red)}
.actions{display:flex;gap:8px;flex-wrap:wrap}

.add-bar{display:flex;gap:8px;margin-bottom:12px}
.add-input{flex:3}
.add-kw{flex:1}
.add-traffic{width:80px;flex:none}
.add-nvmid{width:130px;flex:none}
.add-urltype{width:110px;flex:none;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:8px 8px;color:var(--text);font-size:12px;outline:none;cursor:pointer}
.add-urltype:focus{border-color:var(--orange)}
.add-bar input{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:8px 12px;color:var(--text);font-size:13px;outline:none}
.add-bar input:focus{border-color:var(--orange)}

.table-wrapper{overflow-x:auto;border:1px solid var(--border);border-radius:8px;background:var(--bg2)}
.slot-table{width:100%;border-collapse:collapse;min-width:1250px}
.slot-table th{background:var(--bg3);padding:8px 10px;text-align:left;font-size:11px;font-weight:600;
               color:var(--text2);border-bottom:2px solid var(--border);white-space:nowrap;position:sticky;top:0}
.slot-table td{padding:6px 10px;border-bottom:1px solid var(--border2);vertical-align:middle}
.slot-table tr:hover td{background:rgba(255,255,255,.02)}

.col-check{width:30px;text-align:center}
.col-no{width:40px;text-align:center}
.col-status{width:80px}
.col-url{min-width:180px;max-width:300px}
.col-keyword{min-width:140px;white-space:nowrap}
.col-keyword .kw-cell{font-size:12px;color:var(--orange);white-space:nowrap}
.col-name{min-width:150px;max-width:250px}
.col-store{width:100px}
.col-traffic{width:75px;text-align:center}
.col-found{width:65px;text-align:center}
.col-landing{min-width:200px}
.col-action{width:100px;white-space:nowrap}

.url-cell{color:var(--blue);font-size:12px;word-break:break-all;cursor:pointer}
.url-cell:hover{text-decoration:underline}
.name-cell{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:250px;display:block}
.name-empty{color:var(--yellow);cursor:pointer;font-size:11px}
.name-empty:hover{color:var(--orange);text-decoration:underline}
.store-cell{font-size:12px;color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100px;display:block}
.col-status{width:120px}
.empty-row td{text-align:center;padding:40px;color:var(--text3)}

.status{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600}
.status-pending{background:rgba(139,148,158,.15);color:var(--text2)}
.status-processing{background:rgba(234,179,8,.15);color:var(--yellow)}
.status-completed{background:rgba(34,197,94,.15);color:var(--green)}
.status-error{background:rgba(239,68,68,.15);color:var(--red)}
.status-notfound{background:rgba(239,68,68,.12);color:var(--red)}
.status-partial{background:rgba(234,179,8,.15);color:var(--yellow)}
.status-not_found{background:rgba(239,68,68,.12);color:var(--red)}

.mini-progress{width:100%;height:4px;background:var(--border2);border-radius:2px;margin-top:4px}
.mini-progress-fill{height:100%;background:var(--orange);border-radius:2px;transition:width .3s}

.found-badge{display:inline-block;min-width:24px;padding:2px 6px;border-radius:10px;text-align:center;font-size:11px;font-weight:700}
.found-badge.has{background:rgba(34,197,94,.15);color:var(--green)}
.found-badge.none{color:var(--text3)}

/* 유입수 인라인 편집 */
.traffic-input{width:55px;background:var(--bg);border:1px solid var(--border2);border-radius:4px;
               padding:2px 4px;color:var(--text);font-size:12px;text-align:center;outline:none}
.traffic-input:focus{border-color:var(--orange)}

/* 랜딩페이지 셀 */
.landing-cell{display:flex;flex-direction:column;gap:4px}
.landing-url{display:inline-flex;align-items:center;gap:6px;font-size:11px}
.landing-link{color:var(--purple);cursor:pointer;word-break:break-all}
.landing-link:hover{text-decoration:underline}
.landing-meta{font-size:10px;color:var(--text3)}
.copy-btn{background:var(--bg3);border:1px solid var(--border2);border-radius:3px;color:var(--text2);
          font-size:10px;padding:1px 6px;cursor:pointer;transition:all .15s}
.copy-btn:hover{border-color:var(--orange);color:var(--orange)}

.selection-bar{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--bg3);
               border:1px solid var(--border);border-radius:8px;padding:8px 16px;display:flex;align-items:center;
               gap:12px;box-shadow:0 8px 30px rgba(0,0,0,.5);z-index:100}
.selection-bar .bar-close{background:transparent;border:none;color:var(--text2);font-size:20px;
                          cursor:pointer;padding:0 6px;line-height:1;margin-left:4px;border-radius:4px}
.selection-bar .bar-close:hover{color:var(--text);background:var(--bg2)}

.modal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);z-index:200;
       display:flex;align-items:center;justify-content:center}
.modal-content{background:var(--bg3);border:1px solid var(--border);border-radius:10px;
               padding:24px;max-width:500px;width:90%;max-height:80vh;overflow-y:auto}
.modal-wide{max-width:850px}
.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.modal-actions{display:flex;gap:8px;margin-top:16px;justify-content:flex-end}

.form-group{margin-bottom:12px}
.form-group label{display:block;font-size:12px;color:var(--text2);margin-bottom:4px}
.form-group input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:6px;
                  padding:8px 12px;color:var(--text);font-size:13px;outline:none}
.form-group input:focus{border-color:var(--orange)}
.form-row{display:flex;gap:12px}
.form-row .form-group{flex:1}

.detail-body h4{font-size:13px;color:var(--orange);margin:12px 0 6px}
.detail-tags{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}
.detail-tag{background:rgba(249,115,22,.1);color:var(--orange);padding:2px 8px;border-radius:10px;font-size:11px}
.detail-kw-list{max-height:150px;overflow-y:auto;display:flex;flex-wrap:wrap;gap:4px}
.detail-kw{background:var(--bg);border:1px solid var(--border2);padding:2px 8px;border-radius:4px;font-size:11px}
.detail-found{list-style:none;padding:0}
.detail-found li{padding:4px 0;border-bottom:1px solid var(--border2);font-size:12px;display:flex;justify-content:space-between}
.detail-found .rank{color:var(--green);font-weight:600}
.detail-landing{background:var(--bg);border:1px solid var(--border2);border-radius:6px;padding:12px;margin-top:8px}
.detail-landing-url{color:var(--purple);font-weight:600;word-break:break-all}

.toast{position:fixed;bottom:30px;right:30px;background:var(--bg3);border:1px solid var(--border);
       padding:10px 20px;border-radius:8px;font-size:13px;z-index:300;opacity:0;transform:translateY(10px);transition:all .3s}
.toast.show{opacity:1;transform:translateY(0)}
.toast.toast-success{border-color:var(--green)}
.toast.toast-error{border-color:var(--red)}

/* 리로드(재분석) 버튼 */
.btn-reload{background:transparent;border:1px solid var(--border2);color:var(--text2);font-size:14px;
            padding:2px 7px;border-radius:4px;cursor:pointer;transition:all .15s;line-height:1}
.btn-reload:hover{border-color:var(--orange);color:var(--orange);background:rgba(249,115,22,.1)}

/* 이어서 버튼 */
.btn-resume{background:rgba(59,130,246,.15);border:1px solid var(--blue);color:var(--blue);font-size:11px;
            padding:3px 8px;border-radius:4px;cursor:pointer;transition:all .15s}
.btn-resume:hover{background:rgba(59,130,246,.3)}

/* 추출수 클릭 팝업 */
.found-badge.clickable{cursor:pointer;transition:all .15s}
.found-badge.clickable:hover{background:rgba(34,197,94,.3);transform:scale(1.1)}
.kw-badge{display:inline-block;padding:1px 5px;border-radius:8px;font-size:9px;font-weight:600;margin-left:3px;vertical-align:middle}
.kw-exclude{background:rgba(239,68,68,.15);color:#ef4444}
.kw-include{background:rgba(59,130,246,.15);color:#3b82f6}
.modifier-list{max-height:300px;overflow-y:auto}
.modifier-row{display:flex;align-items:center;gap:6px;padding:3px 0;font-size:12px}
.mod-rank{width:20px;color:var(--text3);text-align:right;font-size:10px}
.mod-word{width:70px;color:var(--text);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mod-bar-wrap{flex:1;height:14px;background:var(--bg);border-radius:3px;overflow:hidden}
.mod-bar{height:100%;background:linear-gradient(90deg,var(--orange),#f59e0b);border-radius:3px;min-width:2px}
.mod-count{width:40px;text-align:right;color:var(--green);font-size:11px}
.mod-avg{width:60px;text-align:right;color:var(--text2);font-size:10px}
.found-popup-list{max-height:400px;overflow-y:auto;border:1px solid var(--border2);border-radius:6px}
.found-table{width:100%;border-collapse:collapse}
.found-table th{background:var(--bg);padding:6px 10px;text-align:left;font-size:11px;color:var(--text2);
                border-bottom:1px solid var(--border);position:sticky;top:0}
.found-table td{padding:5px 10px;border-bottom:1px solid var(--border2);font-size:12px}
.found-table tr:hover td{background:rgba(255,255,255,.03)}
.found-keyword-text{font-weight:500}
.rank-badge{display:inline-block;background:rgba(34,197,94,.15);color:var(--green);padding:1px 6px;
            border-radius:8px;font-size:11px;font-weight:700}
/* CPC 광고 뱃지 */
.cpc-badge{display:inline-block;background:rgba(239,68,68,.18);color:var(--red);padding:1px 6px;
           border-radius:8px;font-size:10px;font-weight:700;letter-spacing:.5px}
.cpc-mini{margin-left:4px;padding:0 4px;font-size:9px;vertical-align:middle}
.cpc-row{background:rgba(239,68,68,.04) !important}
.detail-found .cpc-badge{margin-right:4px;font-size:10px}
.cpc-delete-btn{border:1px solid rgba(239,68,68,.45);background:transparent;color:var(--red);font-size:11px;padding:2px 6px;border-radius:4px;cursor:pointer}
.cpc-delete-btn:hover{background:rgba(239,68,68,.12)}
.cpc-delete-btn:disabled{opacity:.45;cursor:not-allowed}
.detail-cpc-section{margin-top:14px;padding:10px;border:1px solid rgba(239,68,68,.28);background:rgba(239,68,68,.035);border-radius:6px}
.detail-cpc-header{display:flex;align-items:center;justify-content:space-between;gap:8px}
.detail-cpc-header h4{margin:0;color:var(--red)}
.detail-cpc-list{margin-top:8px;display:grid;gap:4px}
.detail-cpc-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:5px 0;border-top:1px solid var(--border2);font-size:12px}
.detail-cpc-keyword{overflow-wrap:anywhere}
.detail-cpc-row .rank{color:var(--green);font-weight:600}
/* URL유형 뱃지 */
.urltype-badge{display:inline-block;padding:2px 6px;border-radius:8px;font-size:10px;font-weight:600;white-space:nowrap}
.urltype-1{background:rgba(168,85,247,.15);color:var(--purple)}
.urltype-2{background:rgba(59,130,246,.15);color:var(--blue)}
.urltype-3{background:rgba(234,179,8,.15);color:var(--yellow)}
.urltype-4{background:rgba(34,197,94,.15);color:#16a34a}
.urltype-5{background:rgba(168,85,247,.15);color:#9333ea}
.urltype-6{background:rgba(249,115,22,.15);color:#ea580c}
.urltype-7{background:rgba(59,130,246,.15);color:#2563eb}
.urltype-8{background:rgba(239,68,68,.15);color:#dc2626}
.urltype-21{background:rgba(20,184,166,.15);color:#0f766e}
.urltype-22{background:rgba(14,165,233,.15);color:#0369a1}
.urltype-badge.clickable{cursor:pointer;transition:opacity .15s}
.urltype-badge.clickable:hover{opacity:.7}
/* 유입유형 변경 팝업 */
.urltype-popup{background:var(--bg);border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.4);padding:4px;min-width:140px;max-height:70vh;overflow-y:auto}
.urltype-popup-history{min-width:280px;padding:8px}
.urltype-option{padding:6px 12px;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;margin:2px 0;white-space:nowrap}
.urltype-option:hover{filter:brightness(1.1);transform:scale(1.02)}
.urltype-option.active{outline:2px solid var(--orange);outline-offset:-2px}
.urltype-history-section{margin-bottom:4px}
.urltype-history-title{font-size:11px;color:var(--text3);font-weight:600;margin-bottom:6px;padding:0 4px}
.urltype-change-title{font-size:11px;color:var(--text3);font-weight:600;margin:4px 4px 4px}
.urltype-history-row{display:flex;align-items:center;gap:4px;padding:4px 6px;border-radius:4px;font-size:11px;margin:2px 0}
.urltype-history-row:hover{background:var(--bg3)}
.urltype-history-badge{display:inline-block;padding:1px 6px;border-radius:3px;font-size:10px;font-weight:600;color:#fff}
.urltype-history-arrow{color:var(--text3);font-size:10px;flex-shrink:0}
.urltype-history-time{color:var(--text3);font-size:10px;margin-left:auto;white-space:nowrap}
.urltype-divider{height:1px;background:var(--border);margin:6px 0}
.urltype-history-badge.urltype-1{background:#2563eb}.urltype-history-badge.urltype-2{background:#7c3aed}
.urltype-history-badge.urltype-3{background:#059669}.urltype-history-badge.urltype-4{background:#d97706}
.urltype-history-badge.urltype-5{background:#dc2626}.urltype-history-badge.urltype-6{background:#0891b2}
.urltype-history-badge.urltype-7{background:#9333ea}.urltype-history-badge.urltype-8{background:#4f46e5}
.urltype-history-badge.urltype-9{background:#be185d}.urltype-history-badge.urltype-10{background:#6d28d9}
.urltype-history-badge.urltype-11{background:#b91c1c}.urltype-history-badge.urltype-12{background:#1d4ed8}
.urltype-history-badge.urltype-13{background:#7e22ce}.urltype-history-badge.urltype-14{background:#0e7490}
.urltype-history-badge.urltype-21{background:#0f766e}.urltype-history-badge.urltype-22{background:#0369a1}

/* API 할당량 배지 (헤더) */
.quota-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:12px;
             font-size:11px;font-weight:600;border:1px solid var(--border);background:var(--bg);color:var(--text2);cursor:pointer}
.quota-badge:hover{border-color:var(--text3)}
.quota-badge.quota-ok{border-color:var(--green);color:var(--green)}
.quota-badge.quota-warn{border-color:var(--yellow);color:var(--yellow)}
.quota-badge.quota-danger{border-color:var(--red);color:var(--red)}

/* API 키 관리 (설정 모달) */
.api-key-list{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.api-key-item{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg);
              border:1px solid var(--border2);border-radius:6px;font-size:12px}
.api-key-item.active{border-color:var(--green)}
.api-key-label{font-weight:600;color:var(--orange);min-width:50px}
.api-key-id{color:var(--text2);flex:1;font-family:monospace;font-size:11px}
.api-key-usage{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text3)}
.api-key-bar{width:60px;height:6px;background:var(--border2);border-radius:3px;overflow:hidden}
.api-key-bar-fill{height:100%;border-radius:3px;transition:width .3s}
.api-key-bar-fill.ok{background:var(--green)}
.api-key-bar-fill.warn{background:var(--yellow)}
.api-key-bar-fill.danger{background:var(--red)}
.api-key-actions{display:flex;gap:4px}
.api-key-sync{background:var(--bg3);border:1px solid var(--border2);border-radius:3px;
              color:var(--text2);font-size:10px;padding:2px 6px;cursor:pointer}
.api-key-sync:hover{border-color:var(--blue);color:var(--blue)}
.api-key-del{background:transparent;border:1px solid var(--border2);border-radius:3px;
             color:var(--text3);font-size:12px;padding:1px 6px;cursor:pointer;line-height:1}
.api-key-del:hover{border-color:var(--red);color:var(--red)}
.api-key-add{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.key-input{background:var(--bg);border:1px solid var(--border);border-radius:4px;
           padding:6px 10px;color:var(--text);font-size:12px;outline:none;flex:1;min-width:120px}
.key-input:focus{border-color:var(--orange)}
.key-label-input{max-width:100px;flex:none}

.hidden{display:none !important}
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}

/* 탭 네비게이션 */
.tab-bar{display:flex;gap:0;margin-bottom:16px;border-bottom:2px solid var(--border)}
.tab-btn{padding:10px 24px;border:none;background:transparent;color:var(--text2);
         font-size:13px;font-weight:600;cursor:pointer;border-bottom:2px solid transparent;
         margin-bottom:-2px;transition:all .15s;font-family:inherit}
.tab-btn:hover{color:var(--text)}
.tab-btn.active{color:var(--orange);border-bottom-color:var(--orange)}
.tab-content{display:none}
.tab-content.active{display:block}

/* 순위 표시 */
.rank-value{font-size:15px;font-weight:700}
.rank-notfound{color:var(--text3)}
.rank-top10{color:#22c55e}
.rank-top50{color:#3b82f6}
.rank-top100{color:#eab308}
.rank-over100{color:var(--text2)}

/* 변동 표시 */
.trend-up{color:#22c55e;font-weight:700}
.trend-down{color:#ef4444;font-weight:700}
.trend-same{color:var(--text3)}

/* 활성/비활성 토글 */
.toggle-active{cursor:pointer;font-size:11px;padding:2px 8px;border-radius:10px;border:1px solid;user-select:none}
.toggle-active.on{color:#22c55e;border-color:#22c55e;background:rgba(34,197,94,.1)}
.toggle-active.off{color:var(--text3);border-color:var(--border2);background:transparent}

/* 히스토리 테이블 */
.history-table{width:100%;border-collapse:collapse}
.history-table th{background:var(--bg);padding:6px 10px;text-align:center;font-size:11px;
                  color:var(--text2);border-bottom:1px solid var(--border);white-space:nowrap}
.history-table td{padding:5px 8px;text-align:center;border-bottom:1px solid var(--border2);font-size:12px}
.history-table tr:hover td{background:rgba(255,255,255,.03)}

/* 순위추적 컬럼 토글 버튼 */
.btn-rank-toggle{cursor:pointer;border:1px solid var(--border)!important;transition:all .2s}
.btn-rank-toggle.active{background:var(--orange)!important;border-color:var(--orange)!important;color:#fff!important}
.btn-rank-toggle span{pointer-events:none}

/* 순위추적 인라인 컬럼 */
.col-rank-info{border-left:2px solid var(--orange)!important;padding:4px 8px!important}
.inline-rank-row{display:flex;align-items:center;gap:6px;padding:2px 0;font-size:11px;white-space:nowrap}
.inline-rank-row+.inline-rank-row{border-top:1px solid var(--border2)}
.inline-rank-kw{max-width:80px;overflow:hidden;text-overflow:ellipsis;color:var(--text2);font-weight:600}
.btn-xs{font-size:10px!important;padding:1px 6px!important;min-height:auto!important;line-height:1.4}

/* ── 순위추적 컬럼 켜짐(rank-on): 관리+순위추적을 오른쪽에 나란히 고정 (둘 다 항상 보임) ── */
.slot-table.rank-on .col-rank-info{position:sticky;right:0;width:210px;min-width:210px;max-width:210px;
  background:var(--bg2);z-index:2;border-left:2px solid var(--orange)!important}
.slot-table.rank-on th.col-rank-info{z-index:4;background:var(--bg3)}
.slot-table.rank-on .col-action{position:sticky;right:210px;background:var(--bg2);z-index:2;
  border-left:1px solid var(--border)}
.slot-table.rank-on th.col-action{z-index:4;background:var(--bg3)}
.slot-table.rank-on tr:hover td.col-action,
.slot-table.rank-on tr:hover td.col-rank-info{background:var(--bg3)}

/* ── 등록일/메모/필터행 ── */
.col-date{min-width:78px;white-space:nowrap}
.col-memo{min-width:130px;width:130px;max-width:130px}
.slot-table td.col-memo,.slot-table th.col-memo{position:sticky;right:0;background:var(--bg2);z-index:2}
.slot-table th.col-memo{z-index:4;background:var(--bg3)}
.memo-input{width:100%;background:var(--bg);border:1px solid var(--border2);border-radius:4px;color:var(--text);font-size:11px;padding:3px 6px}
.memo-input:focus{border-color:var(--orange);outline:none}
.filter-row th{top:33px;background:var(--bg3);padding:3px 6px}
.flt{width:100%;max-width:120px;background:var(--bg);border:1px solid var(--border2);border-radius:4px;color:var(--text);font-size:11px;padding:3px 5px}
/* 고정 오프셋 재계산: 메모(0) ← 순위추적(130) ← 관리(340) */
.slot-table.rank-on .col-rank-info{right:130px}
.slot-table.rank-on .col-action{right:340px}
.slot-table tr:hover td.col-memo{background:var(--bg3)}

/* ── 엑셀식 컬럼 필터 팝업 ── */
.th-flt{cursor:pointer;color:var(--text3);font-size:10px;margin-left:1px;user-select:none}
.th-flt:hover{color:var(--text)}
.th-flt.flt-on{color:var(--orange);font-weight:bold}
.colflt-panel{background:var(--bg2);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.55);padding:8px;width:250px}
.colflt-search{width:100%;background:var(--bg);border:1px solid var(--border2);border-radius:4px;color:var(--text);font-size:12px;padding:5px 7px;margin-bottom:6px}
.colflt-search:focus{border-color:var(--orange);outline:none}
.colflt-list{max-height:230px;overflow-y:auto;border:1px solid var(--border2);border-radius:4px;padding:2px}
.colflt-item{display:flex;gap:6px;align-items:center;padding:3px 5px;font-size:12px;color:var(--text);cursor:pointer;border-radius:3px}
.colflt-item:hover{background:rgba(255,255,255,.04)}
.colflt-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.colflt-empty{padding:10px;color:var(--text3);font-size:12px;text-align:center}
.colflt-actions{display:flex;justify-content:space-between;margin-top:8px}
/* ── 랜딩 컬럼 복구: 고정영역 슬림 + 본문 폭 다이어트 + 상시 스크롤 ── */
.table-wrapper{max-height:calc(100vh - 205px);overflow:auto}
.col-memo{min-width:110px;width:110px;max-width:110px}
.slot-table.rank-on .col-rank-info{width:190px;min-width:190px;max-width:190px;right:110px}
.slot-table.rank-on .col-action{right:300px}
.col-url{min-width:130px;max-width:160px}
.url-cell{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.col-name{min-width:120px;max-width:160px}
.name-cell{max-width:160px}
.col-keyword{min-width:95px}
.store-cell{max-width:85px}
.col-landing{min-width:165px}
.landing-link{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:middle}

/* 가로 스크롤바 시인성 강화 (2026-07-22) */
.table-wrapper{scrollbar-width:auto;scrollbar-color:#4a90d9 #1c2333}
.table-wrapper::-webkit-scrollbar{height:14px}
.table-wrapper::-webkit-scrollbar-track{background:#1c2333;border-radius:7px}
.table-wrapper::-webkit-scrollbar-thumb{background:#4a90d9;border-radius:7px;border:2px solid #1c2333}
.table-wrapper::-webkit-scrollbar-thumb:hover{background:#6aaef5}

/* 가로 스크롤해도 체크박스 열은 항상 보이게 (왼쪽 고정) */
th.col-check, td.col-check{
  position:sticky; left:0; z-index:5;
  background:var(--bg2);
}
thead th.col-check{ z-index:6; }
/* 고정 열 오른쪽에 경계선 — 스크롤된 내용과 구분 */
th.col-check::after, td.col-check::after{
  content:''; position:absolute; top:0; right:0; bottom:0; width:1px;
  background:var(--border);
}


/* 실행 진행 상황 배너 (우하단 고정) */
#kwProgressBar{
  position:fixed; right:18px; bottom:18px; z-index:9999;
  width:290px; padding:12px 14px; border-radius:10px;
  background:var(--bg2); border:1px solid var(--border);
  box-shadow:0 6px 24px rgba(0,0,0,.45);
  display:none; font-size:12px;
}
#kwProgressBar.on{ display:block; }
.kwpb-head{ display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
.kwpb-title{ font-weight:700; color:#6aaef5; }
.kwpb-count{ color:var(--text2); font-size:11px; }
.kwpb-track{ height:6px; border-radius:3px; background:#1c2333; overflow:hidden; }
.kwpb-fill{ height:100%; width:0%; background:#4a90d9; transition:width .4s ease; }
.kwpb-detail{ display:flex; gap:10px; margin-top:9px; font-size:11px; }
.kwpb-detail span{ padding:2px 7px; border-radius:4px; }
.kwpb-run{ background:rgba(255,166,0,.16); color:#ffa600; }
.kwpb-wait{ background:rgba(150,150,150,.16); color:#9aa4b2; }
.kwpb-done{ background:rgba(46,204,113,.16); color:#2ecc71; }


/* ══════════════════ UI v2 (2026-08-16) — 모던 리스킨 + 반응형 오버라이드 ══════════════════ */
:root {
    --bg:#0a0c10; --bg2:#12151d; --bg3:#1a1f2a;
    --border:#232937; --border2:#1b202b;
    --text:#eef1f6; --text2:#98a2b3; --text3:#667085;
    --orange:#ff8a3d; --green:#34d399; --blue:#60a5fa;
    --red:#f87171; --yellow:#fbbf24; --purple:#c084fc;
    --accent:#ff8a3d; --radius:10px;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.5);
}
html { -webkit-text-size-adjust: 100%; }
body {
    font-family:'Pretendard Variable',Pretendard,-apple-system,BlinkMacSystemFont,'Noto Sans KR','Malgun Gothic',sans-serif;
    font-size:13.5px; letter-spacing:-.01em;
    -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
    background:
      radial-gradient(1200px 500px at 80% -10%, rgba(255,138,61,.05), transparent 60%),
      var(--bg);
}
.header { background:rgba(18,21,29,.85); backdrop-filter:blur(12px); border-bottom:1px solid var(--border2); padding:14px 20px; }
.header h1 { font-size:17px; font-weight:700; letter-spacing:-.02em;
    background:linear-gradient(90deg,#ffb257,#ff8a3d); -webkit-background-clip:text; background-clip:text; color:transparent; }

.btn { border-radius:8px; padding:7px 14px; font-weight:500; transition:all .16s ease; }
.btn:hover { transform:translateY(-1px); box-shadow:0 3px 10px -4px rgba(0,0,0,.6); }
.btn:active { transform:translateY(0); }
.btn-sm { border-radius:7px; }
.btn-primary { background:linear-gradient(180deg,#ff9950,#f97316); border-color:transparent; box-shadow:0 2px 8px -2px rgba(249,115,22,.45); }
.btn-primary:hover { background:linear-gradient(180deg,#ffa763,#fb8532); }
.btn-success { background:linear-gradient(180deg,#3ddb9f,#16a34a); border-color:transparent; }
.btn-danger { background:linear-gradient(180deg,#fb7d7d,#dc2626); border-color:transparent; }

input, select, textarea {
    border-radius:8px !important; transition:border-color .15s, box-shadow .15s;
}
input:focus, select:focus, textarea:focus {
    outline:none !important; border-color:var(--accent) !important;
    box-shadow:0 0 0 3px rgba(255,138,61,.16) !important;
}

/* 탭 */
.tab-btn { border-radius:9px 9px 0 0; padding:9px 16px; font-weight:600; letter-spacing:-.01em;
    transition:color .15s, background .15s; }
.tab-btn.active { color:var(--accent); }

/* 테이블 폴리시 */
table { border-collapse:separate; border-spacing:0; }
th { font-weight:600; font-size:11.5px; letter-spacing:.02em; color:var(--text2);
     background:var(--bg2); position:sticky; top:0; z-index:5; }
td, th { padding:9px 10px !important; border-bottom:1px solid var(--border2) !important; }
tbody tr { transition:background .12s; }
tbody tr:hover { background:rgba(255,255,255,.028); }

/* 스크롤바 */
::-webkit-scrollbar { width:10px; height:10px; }
::-webkit-scrollbar-thumb { background:var(--border); border-radius:6px; border:2px solid var(--bg); }
::-webkit-scrollbar-thumb:hover { background:var(--text3); }
::-webkit-scrollbar-track { background:transparent; }

/* ── 반응형: 소형 데스크톱 ── */
@media (max-width: 1200px) {
    .container { padding:12px; }
    body { font-size:13px; }
}

/* ── 반응형: 태블릿/모바일 ── */
@media (max-width: 900px) {
    .container { padding:10px 8px; }
    .tab-content { overflow-x:auto; -webkit-overflow-scrolling:touch; }
    .tab-content table { min-width:900px; }
    .tabs { overflow-x:auto; white-space:nowrap; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
    .action-bar, .add-bar { flex-wrap:wrap; }
    .add-bar > * { flex:1 1 45% !important; min-width:120px; }
    .btn { min-height:34px; }
    .stats { flex-wrap:wrap; gap:8px 14px; }
}

/* ── 반응형: 폰 ── */
@media (max-width: 560px) {
    body { font-size:13px; }
    .header { padding:10px 12px; }
    .header h1 { font-size:15px; }
    .header-inner { flex-wrap:wrap; gap:6px; }
    .add-bar > * { flex:1 1 100% !important; }
    td, th { padding:8px 8px !important; font-size:12px; }
}


/* ── 캠페인 탭 카드/페이저/스티키 (UI v2.1) ── */
.camp-card { background:var(--bg2); border:1px solid var(--border2); border-radius:12px; padding:12px 14px; box-shadow:var(--shadow); }
.camp-sticky { position:sticky; top:56px; z-index:40; }
.pager-btn { min-width:30px; height:30px; padding:0 8px; margin:0 1px; border:1px solid var(--border); border-radius:8px;
    background:var(--bg2); color:var(--text2); font-size:12px; cursor:pointer; transition:all .13s; }
.pager-btn:hover:not(:disabled) { border-color:var(--accent); color:var(--text); }
.pager-btn.on { background:var(--accent); border-color:var(--accent); color:#fff; font-weight:700; }
.pager-btn:disabled { opacity:.3; cursor:default; }
@media (max-width: 900px) { .camp-sticky { position:static; } }


/* 캠페인 멀티체크 필터 드롭다운 */
.campfilt { display:inline-block; position:relative; cursor:pointer; vertical-align:middle; }
.campfilt-label { font-size:10.5px; padding:2px 6px; border:1px solid var(--border2); border-radius:5px; background:var(--bg); display:inline-block; white-space:nowrap; }
.campfilt-menu { display:none; position:absolute; top:100%; left:0; z-index:60; min-width:130px; max-height:260px; overflow-y:auto;
    background:var(--bg2); border:1px solid var(--border); border-radius:8px; box-shadow:var(--shadow); padding:4px; margin-top:2px; }
.campfilt-item { display:flex; align-items:center; gap:6px; padding:4px 6px; font-size:11px; color:var(--text); cursor:pointer; border-radius:5px; white-space:nowrap; }
.campfilt-item:hover { background:var(--bg3); }
.campfilt-item input { margin:0; cursor:pointer; }
.campfilt-all { border-bottom:1px solid var(--border2); font-weight:600; margin-bottom:2px; }


/* 캠페인 헤더 고정 + 글자 강조 (2026-08-16) */
#tabCampaign .camp-card:last-child { overflow:auto; max-height:calc(100vh - 240px); }
#tabCampaign thead th { font-size:13px !important; font-weight:700 !important; color:var(--text) !important; padding:11px 10px !important; }
#tabCampaign thead tr:first-child th { position:sticky; top:0; z-index:25; background:#12151d; box-shadow:inset 0 -1px 0 var(--border); }
#tabCampaign thead tr:nth-child(2) th { position:sticky; top:42px; z-index:24; background:#12151d; box-shadow:inset 0 -1px 0 var(--border2); }
#campHeadRow th { cursor:pointer; }
.campfilt-label { font-size:11.5px !important; }

/* ── 캠페인 탭 컴팩트 + 반응형 (2026-08-16) ── */
#tabCampaign .slot-table th{padding:6px 6px;font-size:10.5px}
#tabCampaign .slot-table td{padding:5px 6px;font-size:11px}
#tabCampaign .col-rank-info{max-width:360px;overflow:hidden}
/* 키워드 왼쪽 고정 + 순위 히스토리 오른쪽 고정 — 가로 스크롤해도 항상 보임 (태블릿/모바일 대응) */
#tabCampaign .slot-table th:nth-child(3),#tabCampaign .slot-table td:nth-child(3){position:sticky !important;left:0;background:var(--bg2);z-index:3}
#tabCampaign .slot-table thead th:nth-child(3){background:var(--bg3);z-index:5;left:0}
#tabCampaign .slot-table th.col-rank-info,#tabCampaign .slot-table td.col-rank-info{position:sticky !important;right:0;background:var(--bg2);z-index:3;min-width:160px}
#tabCampaign .slot-table thead th.col-rank-info{background:var(--bg3);z-index:5;right:0}
@media (max-width:900px){
  #tabCampaign .slot-table th:nth-child(2),#tabCampaign .slot-table td:nth-child(2),
  #tabCampaign .slot-table th:nth-child(4),#tabCampaign .slot-table td:nth-child(4),
  #tabCampaign .slot-table th:nth-child(5),#tabCampaign .slot-table td:nth-child(5),
  #tabCampaign .slot-table th:nth-child(6),#tabCampaign .slot-table td:nth-child(6),
  #tabCampaign .slot-table th:nth-child(7),#tabCampaign .slot-table td:nth-child(7),
  #tabCampaign .slot-table th:nth-child(11),#tabCampaign .slot-table td:nth-child(11),
  #tabCampaign .slot-table th:nth-child(12),#tabCampaign .slot-table td:nth-child(12),
  #tabCampaign .slot-table th:nth-child(13),#tabCampaign .slot-table td:nth-child(13){display:none}
  #tabCampaign .camp-card{overflow-x:auto}
  #tabCampaign .slot-table td.col-rank-info,#tabCampaign .slot-table th.col-rank-info{min-width:120px;max-width:150px}
}

/* ── 키워드분석 탭 모바일/태블릿: 고정열 해제 + 컴팩트 (2026-08-16, PC 무영향) ── */
@media (max-width:1100px){
  #tabKeyword .slot-table td.col-memo,#tabKeyword .slot-table th.col-memo,
  #tabKeyword .slot-table .col-rank-info{position:static !important;width:auto;min-width:0;max-width:none}
  #tabKeyword .table-wrapper{max-height:none;overflow-x:auto;-webkit-overflow-scrolling:touch}
  #tabKeyword .slot-table th,#tabKeyword .slot-table td{padding:5px 6px;font-size:11px}
  #tabKeyword .slot-table{min-width:0}
}

/* 대행사 관리 탭 입력 (2026-08-16) */
.p-mgmt-inp{padding:7px 10px;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:12px}

/* ── 어드민 캠페인 표: 헤더 고정 + 파란 스크롤바(위/아래) (2026-08-17) ── */
.camp-tbl-wrap{overflow:auto;max-height:calc(100vh - 250px);min-height:360px}
#tabCampaign .slot-table thead th{position:sticky;top:0;z-index:6;background:var(--bg3)}
#tabCampaign .slot-table thead th:nth-child(3),#tabCampaign .slot-table thead th.col-rank-info{z-index:8}
#campHScroll,.camp-tbl-wrap{scrollbar-color:#2563eb #1c2333;scrollbar-width:auto}
#campHScroll::-webkit-scrollbar,.camp-tbl-wrap::-webkit-scrollbar{height:12px;width:12px}
#campHScroll::-webkit-scrollbar-track,.camp-tbl-wrap::-webkit-scrollbar-track{background:#1c2333;border-radius:6px}
#campHScroll::-webkit-scrollbar-thumb,.camp-tbl-wrap::-webkit-scrollbar-thumb{background:#2563eb;border-radius:6px}
#campHScroll::-webkit-scrollbar-thumb:hover,.camp-tbl-wrap::-webkit-scrollbar-thumb:hover{background:#1d4ed8}
