/* ===========================================
   광고 관리 - 기준 관리 스타일
   =========================================== */
.ad-toolbar{display:flex;gap:10px;align-items:center;margin-bottom:12px;flex-wrap:wrap;}
.ad-search-wrap{position:relative;flex:1;min-width:200px;}
.ad-search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text3);font-size:13px;pointer-events:none;}
.ad-search-input{width:100%;padding:8px 12px 8px 32px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;font-family:inherit;background:var(--surface);color:var(--text);outline:none;}
.ad-search-input:focus{border-color:var(--accent);}
.ad-info{font-size:12px;color:var(--text3);margin-bottom:10px;}
.ad-info-note{color:var(--amber);background:var(--amber-light);padding:8px 12px;border-radius:var(--radius-sm);}
.ad-empty{text-align:center;padding:40px 20px;color:var(--text3);background:var(--surface2);border-radius:var(--radius-sm);font-size:13px;}
.ad-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-sm);}
.ad-table{width:100%;border-collapse:collapse;font-size:13px;background:var(--surface);}
.ad-table th{background:var(--surface2);padding:10px 12px;text-align:left;font-weight:600;color:var(--text2);border-bottom:1px solid var(--border);white-space:nowrap;font-size:12px;}
.ad-table{table-layout:fixed;}
.ad-table td{padding:9px 12px;border-bottom:1px solid var(--border);vertical-align:middle;line-height:1.4;word-break:break-word;overflow-wrap:anywhere;}
.ad-table td.ad-cell-truncate{max-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ad-table td.ad-cell-truncate code{overflow:hidden;text-overflow:ellipsis;display:inline-block;max-width:100%;vertical-align:bottom;}
.ad-clickable{cursor:pointer;color:var(--accent-text);text-decoration:underline dotted;text-underline-offset:2px;}
.ad-clickable:hover{color:var(--accent);text-decoration-style:solid;}

/* 기준 관리 모달 폼 너비 확장 */
.ad-form-modal{width:min(560px,88vw);}
.ad-form-modal textarea.form-input{min-height:60px;resize:vertical;line-height:1.5;}
.ad-table tr:last-child td{border-bottom:none;}
.ad-table tr:hover td{background:var(--surface2);}
.ad-table code{font-family:'SF Mono',Consolas,monospace;font-size:12px;background:var(--surface2);padding:1px 5px;border-radius:3px;color:var(--accent-text);}
.ad-table-compact td,.ad-table-compact th{padding:7px 8px;font-size:12px;}
/* td 자체에 display:flex를 쓰면 td 레이아웃이 깨짐. 내부 div에만 flex 적용 */
.ad-row-actions{display:flex;gap:4px;flex-wrap:nowrap;white-space:nowrap;align-items:center;justify-content:flex-end;}
.ad-row-actions button{font-size:11px;padding:3px 8px;white-space:nowrap;flex-shrink:0;}
.ad-table td.ad-cell-actions{white-space:nowrap;text-align:right;}
.ad-table td.ad-cell-actions button{font-size:11px;padding:3px 8px;margin-left:4px;}
.ad-table td.ad-cell-actions button:first-child{margin-left:0;}
.ad-col-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;}
@media(max-width:640px){.ad-col-grid{grid-template-columns:1fr 1fr;}}

/* 광고 업로드 카드 */
.ad-upload-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:12px;box-shadow:var(--shadow);}
.ad-upload-header{margin-bottom:12px;}
.ad-upload-title{font-size:14px;font-weight:700;margin-bottom:2px;}
.ad-upload-sub{font-size:11px;color:var(--text3);}
/* 업로드 상태 달력 */
.ad-cal-wrap{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:12px;}
.ad-cal-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap;}
.ad-cal-title{flex:1;font-size:13px;font-weight:700;color:var(--text);text-align:center;}
.ad-cal-legend{display:flex;gap:10px;font-size:11px;color:var(--text2);}
.ad-cal-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:3px;vertical-align:middle;}
.ad-cal-dot-sales{background:var(--accent);}
.ad-cal-dot-ad{background:var(--amber);}
.ad-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}
.ad-cal-wd{text-align:center;font-size:11px;font-weight:600;color:var(--text3);padding:4px 0;}
.ad-cal-wd:first-child{color:var(--red);}
.ad-cal-wd:last-child{color:var(--accent);}
.ad-cal-cell{background:var(--surface);border-radius:4px;padding:4px 4px 2px;min-height:38px;cursor:pointer;display:flex;flex-direction:column;border:1px solid transparent;transition:all .1s;}
.ad-cal-cell:hover{background:var(--accent-light);border-color:var(--accent);}
.ad-cal-empty{background:transparent;cursor:default;border:none;}
.ad-cal-empty:hover{background:transparent;border:none;}
.ad-cal-today{border-color:var(--accent);font-weight:700;}
.ad-cal-date{font-size:11px;color:var(--text);}
.ad-cal-has-sales{background:rgba(26,95,180,.08);}
.ad-cal-has-ad{background:rgba(180,83,9,.08);}
.ad-cal-has-sales.ad-cal-has-ad{background:linear-gradient(135deg,rgba(26,95,180,.12) 50%, rgba(180,83,9,.12) 50%);}
.ad-cal-bars{display:flex;gap:2px;margin-top:auto;padding-top:2px;}
.ad-cal-bar{display:block;flex:1;height:3px;border-radius:2px;}
.ad-cal-bar-sales{background:var(--accent);}
.ad-cal-bar-ad{background:var(--amber);}

.ad-sales-row{display:flex;gap:10px;margin-bottom:10px;flex-wrap:wrap;}
.ad-date-field{flex:0 0 240px;}
.ad-date-field .form-label{margin-bottom:4px;}
.ad-drop-zone{display:block;border:2px dashed var(--border2);border-radius:var(--radius-sm);padding:32px 16px;text-align:center;cursor:pointer;transition:all .15s;}
.ad-drop-zone:hover,.ad-drop-over{border-color:var(--accent);background:var(--accent-light);}
.ad-drop-disabled{cursor:not-allowed;opacity:.6;}
.ad-drop-disabled:hover{border-color:var(--border2);background:transparent;}
.ad-drop-icon{font-size:32px;margin-bottom:8px;}
.ad-drop-text{font-size:13px;color:var(--text2);font-weight:500;margin-bottom:4px;}
.ad-drop-hint{font-size:11px;color:var(--text3);}

/* 미리보기 모달 */
.ad-preview-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px;}
@media(max-width:640px){.ad-preview-stats{grid-template-columns:repeat(2,1fr);}}
.ad-preview-stats>div{background:var(--surface2);border-radius:var(--radius-sm);padding:10px;text-align:center;}
.ad-stat-label{font-size:11px;color:var(--text3);margin-bottom:3px;}
.ad-stat-val{font-size:15px;font-weight:700;color:var(--text);}
.ad-preview-section-title{font-size:12px;font-weight:700;color:var(--text2);margin:10px 0 6px;}
.ad-preview-errors{background:var(--red-light);border:1px solid #fca5a5;border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:10px;}
.ad-preview-errors ul{margin:4px 0 0 16px;font-size:12px;color:var(--red);line-height:1.7;}
.ad-preview-warnings{background:var(--amber-light);border:1px solid #fcd34d;border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:10px;}
.ad-preview-warnings ul{margin:4px 0 0 16px;font-size:12px;color:var(--amber);line-height:1.7;}

/* 광고 업로드 - 스토어 카드 그리드 */
.ad-store-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-top:4px;}
.ad-store-card{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px 10px;background:var(--surface);border:1.5px dashed var(--border2);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s;text-align:center;min-height:110px;}
.ad-store-card:hover,.ad-store-card.ad-drop-over{border-color:var(--accent);background:var(--accent-light);transform:translateY(-1px);}
.ad-store-card-icon{font-size:22px;margin-bottom:6px;}
.ad-store-card-name{font-size:13px;font-weight:700;color:var(--text);margin-bottom:2px;}
.ad-store-card-key{font-size:10px;color:var(--text3);font-family:'SF Mono',Consolas,monospace;}
.ad-store-card-mgr{font-size:11px;color:var(--text2);margin-top:6px;}

/* 업로드 완료된 카드 */
.ad-store-card-done{background:var(--green-light);border-color:var(--green);border-style:solid;}
.ad-store-card-done .ad-store-card-name{color:var(--green);}
.ad-store-card-done:hover{background:#d9eec7;}
.ad-store-card-badge{position:absolute;top:6px;right:6px;background:var(--green);color:#fff;font-size:10px;font-weight:700;padding:2px 7px;border-radius:99px;line-height:1.3;}

/* 업로드 이력 타임라인 */
.ad-history-timeline{display:flex;flex-direction:column;gap:6px;}
.ad-history-row{display:grid;grid-template-columns:140px 1fr auto;gap:12px;align-items:center;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);transition:background .1s;}
.ad-history-row:hover{background:var(--surface2);}
.ad-history-rolled{opacity:.55;background:var(--surface2);}
.ad-history-time{font-size:11px;color:var(--text3);font-family:'SF Mono',Consolas,monospace;white-space:nowrap;}
.ad-history-main{display:flex;flex-direction:column;gap:2px;min-width:0;}
.ad-history-type{font-size:13px;font-weight:600;color:var(--text);}
.ad-history-file{font-size:12px;color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ad-history-meta{font-size:11px;color:var(--text3);}
.ad-history-action{white-space:nowrap;}
.ad-history-badge-rolled{font-size:11px;color:var(--text3);background:var(--surface2);padding:3px 8px;border-radius:4px;}

/* 광고 분석 대시보드 */
.ad-analytics-quick{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:8px;padding:8px 12px;background:var(--surface2);border-radius:var(--radius-sm);}
.ad-quick-label{font-size:11px;color:var(--text3);font-weight:600;margin-right:2px;}
.ad-quick-btn{padding:4px 10px;background:var(--surface);border:1px solid var(--border);border-radius:99px;font-size:11px;font-family:inherit;color:var(--text2);cursor:pointer;transition:all .1s;}
.ad-quick-btn:hover{background:var(--accent-light);color:var(--accent-text);border-color:var(--accent);}
.ad-analytics-filter{display:grid;grid-template-columns:repeat(4, 1fr) auto;gap:10px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:12px;box-shadow:var(--shadow);align-items:end;}
@media(max-width:720px){.ad-analytics-filter{grid-template-columns:1fr 1fr;}}

/* KPI 그리드 */
.ad-kpi-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-bottom:16px;}
@media(max-width:900px){.ad-kpi-grid{grid-template-columns:repeat(3,1fr);}}
@media(max-width:540px){.ad-kpi-grid{grid-template-columns:repeat(2,1fr);}}
.ad-kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;box-shadow:var(--shadow);}
.ad-kpi-label{font-size:10px;color:var(--text3);margin-bottom:4px;}
.ad-kpi-val{font-size:17px;font-weight:700;color:var(--text);}

/* 카테고리 그룹 */
.ad-an-group{margin-bottom:20px;}
.ad-an-group-header{font-size:15px;font-weight:700;margin-bottom:10px;padding-bottom:6px;border-bottom:2px solid currentColor;}
.ad-an-cards{display:grid;grid-template-columns:1fr;gap:12px;}
.ad-an-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);}
.ad-an-card-head{margin-bottom:10px;}
.ad-an-card-title{font-size:14px;font-weight:700;color:var(--text);margin-bottom:3px;}
.ad-an-card-count{display:inline-block;background:var(--accent);color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:99px;margin-left:6px;vertical-align:middle;}
.ad-an-edit-btn{float:right;background:none;border:1px solid var(--border);color:var(--text2);cursor:pointer;font-size:13px;padding:2px 8px;border-radius:var(--radius-sm);line-height:1;}
.ad-an-edit-btn:hover{background:var(--surface2);color:var(--text);border-color:var(--border2);}
.ad-an-card-desc{font-size:12px;color:var(--text2);line-height:1.5;}
.ad-an-card-criteria{font-size:11px;color:var(--text3);margin-top:3px;}
.ad-an-table{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed;}
.ad-an-table th{background:var(--surface2);padding:6px 8px;text-align:left;font-weight:600;color:var(--text2);border-bottom:1px solid var(--border);font-size:11px;}
.ad-an-table th.ad-an-sort:hover{background:var(--accent-light);color:var(--accent-text);}
.ad-an-table th.ad-an-sort-active{color:var(--accent);}
.ad-an-table th .ad-an-sort-arrow{color:var(--accent);font-size:10px;}
.ad-an-table td{padding:6px 8px;border-bottom:1px solid var(--border);line-height:1.4;}
.ad-an-table tr:last-child td{border-bottom:none;}
.ad-an-table code{font-family:'SF Mono',Consolas,monospace;font-size:11px;background:var(--surface2);padding:1px 5px;border-radius:3px;color:var(--accent-text);}
.ad-an-empty{text-align:center;padding:14px 8px;color:var(--text3);font-size:12px;background:var(--surface2);border-radius:var(--radius-sm);}

/* 옵션 확장 영역 */
.ad-an-expand-row td{padding:0 !important;background:var(--surface2);border-top:0;}
.ad-campaigns-inline{padding:10px 14px;background:linear-gradient(to bottom, rgba(26,95,180,.04), transparent 40%);}
.ad-campaigns-header{font-size:11px;color:var(--text3);margin-bottom:6px;font-weight:500;}
.ad-campaign-table{width:100%;border-collapse:collapse;font-size:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;}
.ad-campaign-table th{background:var(--surface2);padding:6px 10px;text-align:left;font-weight:600;color:var(--text2);border-bottom:1px solid var(--border);font-size:11px;}
.ad-campaign-table td{padding:7px 10px;border-bottom:1px solid var(--border);line-height:1.4;}
.ad-campaign-table tbody tr:last-child td{border-bottom:none;}
.ad-campaign-name{font-size:12px;font-weight:500;color:var(--text);max-width:380px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ad-campaign-store{font-size:10px;color:var(--text3);margin-top:2px;}
.ad-campaign-loss{background:rgba(185,28,28,.04);}
.ad-campaign-loss:hover{background:rgba(185,28,28,.08);}
.ad-campaign-total{background:var(--surface2);border-top:2px solid var(--border2);}
.ad-campaign-total td{padding:10px;font-weight:700;}
.ad-expand-btn{white-space:nowrap;}

@media(max-width:640px){
  .ad-history-row{grid-template-columns:1fr;gap:4px;padding:8px 10px;}
  .ad-history-action{text-align:right;}
}

/* 미매핑 캠페인 인라인 수정 */
.ad-unmapped-list{display:flex;flex-direction:column;gap:6px;margin-top:8px;}
.ad-unmapped-row{display:grid;grid-template-columns:1fr auto 260px auto;gap:8px;align-items:center;padding:6px 8px;background:var(--surface);border-radius:var(--radius-sm);}
.ad-unmapped-name{font-size:12px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ad-unmapped-stats{font-size:11px;color:var(--text3);white-space:nowrap;}
.ad-unmapped-input{padding:5px 8px!important;font-size:12px!important;}

/* 모델코드 자동완성 */
.ad-ac-wrap{position:relative;}
.ad-ac-input{width:100%;}
.ad-ac-dropdown{position:absolute;top:100%;left:0;min-width:100%;width:max-content;max-width:520px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:0 4px 12px rgba(0,0,0,.12);max-height:320px;overflow-y:auto;z-index:1000;margin-top:2px;}
.ad-ac-item{padding:8px 10px;cursor:pointer;border-bottom:1px solid var(--border);}
.ad-ac-item:last-child{border-bottom:none;}
.ad-ac-item:hover,.ad-ac-item.ad-ac-active{background:var(--accent-light);}
.ad-ac-item-code{font-size:12px;font-weight:600;color:var(--accent-text);margin-bottom:2px;}
.ad-ac-item-code code{background:var(--surface2);padding:1px 5px;border-radius:3px;font-family:'SF Mono',Consolas,monospace;font-size:11px;}
.ad-ac-item-name{font-size:12px;color:var(--text2);white-space:normal;word-break:break-word;line-height:1.35;}
.ad-ac-empty{padding:12px;text-align:center;font-size:11px;color:var(--text3);}
@media(max-width:720px){
  .ad-unmapped-row{grid-template-columns:1fr;gap:4px;}
  .ad-unmapped-input{width:100%;}
}
