:root{--bg:#f4f6f8;--card:#fff;--text:#1f2937;--muted:#64748b;--line:#dbe2ea;--primary:#2563eb;--danger:#b91c1c}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Pretendard,"Noto Sans KR",Arial,sans-serif}.wrap{max-width:1440px;margin:auto;padding:0 20px}.top{background:#0f172a;color:white}.nav{height:64px;display:flex;align-items:center;justify-content:space-between}.brand{color:white;text-decoration:none;font-size:19px;font-weight:800}.user a{color:#cbd5e1;margin-left:12px}.badge{font-size:12px;background:#334155;padding:3px 7px;border-radius:10px}.menu{background:white;border-bottom:1px solid var(--line);overflow-x:auto}.menu .wrap{display:flex;gap:4px}.menu a{padding:13px 12px;text-decoration:none;color:#334155;white-space:nowrap}.menu a:hover{background:#eff6ff;color:#1d4ed8}main{padding-top:24px;padding-bottom:50px}h1{font-size:26px;margin:0 0 20px}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px;margin-bottom:18px;box-shadow:0 2px 8px rgba(15,23,42,.04)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.kpi strong{display:block;font-size:30px;margin-top:8px}.muted{color:var(--muted)}.filters{display:flex;flex-wrap:wrap;gap:12px;align-items:end}.filters label{display:flex;flex-direction:column;gap:6px;font-size:13px}.filters select,.filters input,.filters button,input[type=file],input[type=text],input[type=password],input[type=number]{min-height:40px;border:1px solid #cbd5e1;border-radius:8px;padding:8px 10px;background:white}.btn,button{display:inline-block;border:0;border-radius:8px;background:var(--primary);color:white;padding:10px 15px;text-decoration:none;cursor:pointer}.btn.gray{background:#475569}.btn.danger{background:var(--danger)}table{width:100%;border-collapse:collapse;font-size:14px}th,td{padding:10px 9px;border-bottom:1px solid var(--line);text-align:right}th:first-child,td:first-child{text-align:left}th{background:#f8fafc;position:sticky;top:0}.table-wrap{overflow:auto;max-height:65vh}.chart-wrap{height:430px}.chart-wrap canvas{width:100%;height:100%}.alert{padding:12px 14px;border-radius:9px;margin-bottom:16px}.ok{background:#ecfdf5;color:#166534}.err{background:#fef2f2;color:#991b1b}.loginbox{max-width:440px;margin:70px auto}.loginbox label{display:block;margin:12px 0 5px}.danger-zone{border-color:#fecaca}.small{font-size:12px}.pill{display:inline-block;padding:4px 8px;border-radius:99px;background:#eef2ff;margin:2px}.checkboxes{display:flex;gap:10px;flex-wrap:wrap}.checkboxes label{display:flex;align-items:center;gap:5px;background:#f8fafc;border:1px solid var(--line);padding:7px 9px;border-radius:8px}

/* V1.0.3 그래프/표 툴팁 */
.chart-tooltip{position:absolute;z-index:20;min-width:170px;pointer-events:none;background:rgba(15,23,42,.96);color:#fff;padding:10px 12px;border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.25);font-size:13px;line-height:1.45;opacity:0;transform:translateY(4px);transition:opacity .12s ease,transform .12s ease}.chart-tooltip.show{opacity:1;transform:translateY(0)}.chart-tooltip .tip-title{display:flex;align-items:center;gap:7px;margin-bottom:4px;color:#e2e8f0}.chart-tooltip .tip-dot{display:inline-block;width:9px;height:9px;border-radius:50%}.chart-tooltip strong{display:block;font-size:16px}.chart-tooltip span{display:block;color:#cbd5e1}.stat-value{font-weight:700;text-decoration:underline dotted #94a3b8;text-underline-offset:3px;cursor:help}.table-tooltip{position:fixed;z-index:9999;pointer-events:none;background:rgba(15,23,42,.96);color:#fff;padding:8px 10px;border-radius:8px;box-shadow:0 8px 24px rgba(15,23,42,.2);font-size:13px;opacity:0;transition:opacity .08s ease}.table-tooltip.show{opacity:1}


/* V1.0.4 조회 버튼 표시 보강 */
.filters .filter-submit, .filters button[type=submit]{
  min-width:72px; min-height:40px; padding:8px 16px;
  border:1px solid #2563eb !important; border-radius:8px;
  background:#2563eb !important; color:#fff !important;
  font-weight:700; font-size:14px; line-height:1;
  display:inline-flex; align-items:center; justify-content:center;
  cursor:pointer; appearance:none; -webkit-appearance:none;
}
.filters .filter-submit:hover, .filters button[type=submit]:hover{background:#1d4ed8 !important;border-color:#1d4ed8 !important;}
.filters .filter-submit:focus-visible, .filters button[type=submit]:focus-visible{outline:3px solid rgba(37,99,235,.22);outline-offset:2px;}

/* V1.0.6 공통 버튼 스타일 - 흰색 빈 버튼 현상 수정 */
button,.btn,input[type=submit],input[type=button]{
  min-height:40px;
  border:1px solid #2563eb !important;
  border-radius:8px;
  background:#2563eb !important;
  color:#ffffff !important;
  -webkit-text-fill-color:#ffffff;
  font-family:inherit;
  font-size:14px;
  font-weight:700;
  line-height:1.2;
  padding:9px 16px;
  text-decoration:none;
  cursor:pointer;
  appearance:none;
  -webkit-appearance:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  white-space:nowrap;
}
button:hover,.btn:hover,input[type=submit]:hover,input[type=button]:hover{background:#1d4ed8 !important;border-color:#1d4ed8 !important;color:#fff !important;-webkit-text-fill-color:#fff;}
.btn.gray{background:#475569 !important;border-color:#475569 !important;color:#fff !important;-webkit-text-fill-color:#fff;}
.btn.gray:hover{background:#334155 !important;border-color:#334155 !important;}
.btn.danger,.danger{background:#b91c1c !important;border-color:#b91c1c !important;color:#fff !important;-webkit-text-fill-color:#fff;}
.btn.danger:hover,.danger:hover{background:#991b1b !important;border-color:#991b1b !important;}
button:focus-visible,.btn:focus-visible,input[type=submit]:focus-visible,input[type=button]:focus-visible{outline:3px solid rgba(37,99,235,.22);outline-offset:2px;}
button:disabled,.btn.disabled{opacity:.55;cursor:not-allowed;}

.chart-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:4px}.chart-head h2{margin:0}.btn.export{background:#0f766e;white-space:nowrap}.btn.export:hover{filter:brightness(.95)}@media(max-width:720px){.chart-head{flex-direction:column}.btn.export{align-self:flex-start}}

/* V1.1.0 분석 UX */
.warn{background:#fffbeb;color:#92400e;border:1px solid #fde68a}.analysis-box{background:linear-gradient(135deg,#eff6ff,#f8fafc);border:1px solid #bfdbfe;border-radius:14px;padding:16px 18px;margin-bottom:18px}.analysis-title{font-weight:800;color:#1e3a8a;margin-bottom:8px}.analysis-box ul{margin:0;padding-left:20px;line-height:1.7}.form-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;align-items:center}.section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:16px}.section-head h3{margin:0}.small-btn{min-height:34px!important;padding:6px 10px!important;font-size:12px!important}.trend-picker-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:14px}.chart-wrap.tall{height:520px}.export-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.template-select{min-height:40px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;padding:8px 10px;color:#334155}.check-inline{flex-direction:row!important;align-items:center!important;margin-bottom:7px;gap:7px!important}.empty{padding:36px;text-align:center;color:#64748b}.inline-form{display:inline}.kpi small{display:block;color:#64748b;margin-top:6px}@media(max-width:820px){.trend-picker-grid{grid-template-columns:1fr}.chart-wrap.tall{height:460px}.export-controls{width:100%}}
