.apartment-report-open { overflow: hidden; }
.apartment-report-overlay { position: fixed; z-index: 2200; inset: 0; overflow: auto; color: #18342d; font-family: Pretendard, "Noto Sans KR", Arial, sans-serif; }
.apartment-report-backdrop { position: fixed; inset: 0; background: rgba(8, 35, 28, .78); backdrop-filter: blur(5px); }
.apartment-report-sheet { position: relative; width: min(1000px, calc(100vw - 40px)); min-height: 720px; margin: 22px auto; overflow: hidden; background: #f6f9f8; border-radius: 18px; box-shadow: 0 28px 90px rgba(0, 24, 18, .38); }
.apartment-report-header { display: flex; justify-content: space-between; gap: 20px; padding: 22px 30px 18px; color: #fff; background: linear-gradient(125deg, #073c30, #0f6b54); }
.apartment-report-header span { color: #9ee7cc; font-size: 9px; font-weight: 900; letter-spacing: .13em; }
.apartment-report-header h1 { margin: 5px 0 3px; font-size: 28px; letter-spacing: -.045em; }
.apartment-report-header p { margin: 0; color: #d5f2e7; font-size: 15px; font-weight: 750; }
.apartment-report-heading > small { display: block; margin-top: 4px; color: #c3e8dc; font-size: 9px; }
.apartment-report-header-basis { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 7px; color: #d9f2e9; font-size: 8px; }
.apartment-report-actions { display: flex; align-items: flex-start; gap: 8px; }
.apartment-report-pdf { min-width: 78px; height: 42px; padding: 0 14px; color: #fff; background: #166b55; border: 1px solid rgba(255,255,255,.5); border-radius: 11px; box-shadow: 0 5px 18px rgba(0,0,0,.14); font-size: 12px; font-weight: 800; cursor: pointer; }
.apartment-report-pdf:hover, .apartment-report-pdf:focus-visible { background: #0d5745; outline: 3px solid rgba(255,255,255,.32); outline-offset: 2px; }
.apartment-report-close { position: relative; z-index: 2; flex: 0 0 auto; width: 42px; height: 42px; color: #31564c; background: #fff; border: 1px solid rgba(255,255,255,.5); border-radius: 11px; box-shadow: 0 5px 18px rgba(0,0,0,.14); font-size: 24px; cursor: pointer; }
.apartment-report-body { display: grid; gap: 11px; padding: 14px 18px; }
.apartment-report-section { padding: 13px 15px; background: #fff; border: 1px solid #dce8e4; border-radius: 11px; }
.apartment-report-section h2 { display: flex; align-items: center; gap: 7px; margin: 0 0 10px; color: #173e34; font-size: 13px; }
.apartment-report-section h2 b { display: inline-grid; place-items: center; width: 24px; height: 24px; color: #fff; background: #178b6a; border-radius: 7px; font-size: 9px; }
.apartment-report-basics dl { display: grid; grid-template-columns: 1.2fr 1.4fr 1fr 1fr; gap: 7px 14px; margin: 0; }
.apartment-report-basics dl div.is-wide { grid-column: span 2; }
.apartment-report-section dt { color: #698079; font-size: 9px; }
.apartment-report-section dd { margin: 3px 0 0; color: #1c3b33; font-size: 11px; font-weight: 750; }
.apartment-report-columns { display: grid; grid-template-columns: 1.22fr .78fr; gap: 11px; }
.apartment-report-columns.is-bottom { grid-template-columns: 1fr 1fr; }
.apartment-report-metrics { display: grid; grid-template-columns: repeat(4,1fr); gap: 6px; }
.apartment-report-metrics article { padding: 8px; background: #eff7f4; border-radius: 8px; }
.apartment-report-metrics span, .apartment-report-utilization span { display: block; color: #698079; font-size: 8px; }
.apartment-report-metrics strong { display: block; margin-top: 3px; font-size: 15px; }
.apartment-report-compact, .apartment-report-quality { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 14px; margin: 10px 0 0; }
.apartment-report-compact div, .apartment-report-quality div { display: flex; justify-content: space-between; gap: 8px; padding-top: 5px; border-top: 1px solid #edf2f0; }
.apartment-report-compact dd, .apartment-report-quality dd { text-align: right; }
.apartment-report-utilization { padding: 10px 12px; color: #fff; background: linear-gradient(120deg, #4c1d95, #7c3aed); border-radius: 10px; }
.apartment-report-utilization span, .apartment-report-utilization small { color: #e7dcff; }
.apartment-report-utilization strong { display: block; margin: 2px 0; font-size: 27px; }
.apartment-report-utilization small { font-size: 8px; }
.apartment-report-status { display: grid; grid-template-columns: 1fr 1fr; gap: 5px; margin-top: 7px; }
.apartment-report-status span { display: flex; justify-content: space-between; padding: 6px 8px; background: #f5f7f7; border-radius: 7px; color: #647a74; font-size: 8px; }
.apartment-report-status b { color: #223f37; }
.apartment-report-chart { display: grid; grid-template-columns: repeat(6,1fr); gap: 12px; height: 112px; padding: 0 8px; }
.apartment-report-bar { display: grid; grid-template-rows: 18px 1fr 17px; gap: 3px; min-width: 0; text-align: center; }
.apartment-report-bar strong { font-size: 8px; }
.apartment-report-bar span { position: relative; display: flex; align-items: flex-end; justify-content: center; min-height: 62px; background: linear-gradient(to top, #eef4f2 1px, transparent 1px); background-size: 100% 25%; border-bottom: 1px solid #b9cbc5; }
.apartment-report-bar i { display: block; width: min(46px, 62%); min-height: 4px; background: linear-gradient(#17a77e, #08735a); border-radius: 6px 6px 2px 2px; }
.apartment-report-bar small { color: #647a74; font-size: 8px; }
.apartment-report-bar.is-missing i { min-height: 0; border-top: 2px dashed #aabbb5; background: transparent; }
.apartment-report-empty { display: grid; place-items: center; min-height: 80px; color: #71837e; background: #f5f8f7; border-radius: 8px; font-size: 10px; }
.apartment-report-operators { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin: 0; padding: 0; list-style: none; }
.apartment-report-operators li { display: flex; justify-content: space-between; gap: 8px; padding: 8px 9px; background: #f3f7f5; border-radius: 7px; font-size: 9px; font-weight: 750; }
.apartment-report-operators small { color: #7a8c86; font-size: 7px; font-weight: 500; }
.apartment-report-note { margin: 8px 0 0; color: #71837e; font-size: 7px; line-height: 1.45; }
.apartment-report-diagnosis { background: #eff8f4; border-color: #c7e5da; }
.apartment-report-diagnosis p { display: inline; margin: 0; color: #31544a; font-size: 9px; line-height: 1.65; }
.apartment-report-diagnosis p + p::before { content: " "; }
.apartment-report-footer { display: flex; justify-content: space-between; gap: 15px; padding: 9px 30px 12px; color: #6b7f78; font-size: 7px; line-height: 1.45; }
.apartment-report-footer > div { display: grid; gap: 1px; }
.apartment-report-footer small { text-align: right; }
.apartment-report-loading { display: grid; place-items: center; min-height: 360px; }
.apartment-report-loading > div, .apartment-report-error { display: grid; gap: 7px; text-align: center; }
.apartment-report-loading span, .apartment-report-error span { color: #71837e; font-size: 10px; }
.apartment-report-loading .apartment-report-close, .apartment-report-error + .apartment-report-close { position: absolute; top: 14px; right: 14px; }
.apartment-report-error { place-content: center; min-height: 360px; }

@media (max-width: 860px) {
  .apartment-report-sheet { width: calc(100vw - 20px); margin: 10px auto; }
  .apartment-report-header { padding: 20px; }
  .apartment-report-header h1 { font-size: 23px; }
  .apartment-report-basics dl { grid-template-columns: 1fr 1fr; }
  .apartment-report-columns { grid-template-columns: 1fr; }
  .apartment-report-columns.is-bottom { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 600px) {
  .apartment-report-sheet { width: 100%; min-height: 100vh; margin: 0; border-radius: 0; }
  .apartment-report-header { position: sticky; z-index: 2; top: 0; padding: 16px; }
  .apartment-report-header h1 { font-size: 20px; }
  .apartment-report-header p { font-size: 13px; }
  .apartment-report-heading > small, .apartment-report-header-basis { display: none; }
  .apartment-report-actions { gap: 6px; }
  .apartment-report-pdf { min-width: 64px; height: 40px; padding: 0 9px; font-size: 11px; }
  .apartment-report-close { width: 40px; height: 40px; }
  .apartment-report-body { padding: 10px; }
  .apartment-report-section { padding: 12px; }
  .apartment-report-basics dl, .apartment-report-columns.is-bottom { grid-template-columns: 1fr; }
  .apartment-report-basics dl div.is-wide { grid-column: auto; }
  .apartment-report-metrics { grid-template-columns: 1fr 1fr; }
  .apartment-report-chart { gap: 5px; padding: 0; }
  .apartment-report-bar strong, .apartment-report-bar small { font-size: 7px; }
  .apartment-report-operators { grid-template-columns: 1fr; }
  .apartment-report-footer { display: grid; padding: 10px 16px 18px; }
  .apartment-report-footer small { text-align: left; }
}

@page { size: A4 portrait; margin: 0; }

@media print {
  html, body { width: 210mm; margin: 0 !important; background: #fff !important; }
  body > *:not(.apartment-report-overlay) { display: none !important; }
  .apartment-report-open { overflow: visible; }
  .apartment-report-overlay { position: static; overflow: visible; }
  .apartment-report-backdrop, .apartment-report-actions { display: none !important; }
  .apartment-report-sheet { box-sizing: border-box; width: 184mm; height: 270mm; min-height: 0; margin: 12mm 13mm; overflow: hidden; border: .25mm solid #dce8e4; border-radius: 0; box-shadow: none; print-color-adjust: exact; -webkit-print-color-adjust: exact; }
  .apartment-report-header { padding: 5.2mm 7mm 4.3mm; gap: 3mm; }
  .apartment-report-header h1 { margin: 1mm 0 .5mm; font-size: 18pt; }
  .apartment-report-header p { font-size: 10pt; }
  .apartment-report-heading > small { margin-top: .8mm; font-size: 6.5pt; }
  .apartment-report-header-basis { margin-top: 1.2mm; font-size: 6pt; }
  .apartment-report-body { gap: 2.2mm; padding: 2.6mm 3.6mm; }
  .apartment-report-section { padding: 2.2mm 2.7mm; border-radius: 1.5mm; break-inside: avoid; }
  .apartment-report-section h2 { margin-bottom: 1.7mm; font-size: 8pt; }
  .apartment-report-section h2 b { width: 5mm; height: 5mm; border-radius: 1.2mm; font-size: 5.5pt; }
  .apartment-report-section dt { font-size: 5.7pt; }
  .apartment-report-section dd { margin-top: .5mm; font-size: 7pt; }
  .apartment-report-columns { gap: 2.2mm; }
  .apartment-report-metrics { gap: 1.2mm; }
  .apartment-report-metrics article { padding: 1.6mm; border-radius: 1.2mm; }
  .apartment-report-metrics span, .apartment-report-utilization span { font-size: 5.2pt; }
  .apartment-report-metrics strong { margin-top: .5mm; font-size: 10pt; }
  .apartment-report-compact, .apartment-report-quality { gap: 1mm 2.5mm; margin-top: 1.7mm; }
  .apartment-report-compact div, .apartment-report-quality div { padding-top: .8mm; }
  .apartment-report-utilization { padding: 2mm 2.6mm; border-radius: 1.5mm; }
  .apartment-report-utilization strong { margin: .4mm 0; font-size: 19pt; }
  .apartment-report-utilization small { font-size: 5.2pt; }
  .apartment-report-status { gap: .9mm; margin-top: 1.2mm; }
  .apartment-report-status span { padding: 1mm 1.4mm; border-radius: 1mm; font-size: 5.2pt; }
  .apartment-report-chart { gap: 2mm; height: 27mm; padding: 0 1.4mm; }
  .apartment-report-bar { grid-template-rows: 4mm 1fr 3.5mm; gap: .6mm; }
  .apartment-report-bar strong, .apartment-report-bar small { font-size: 5pt; }
  .apartment-report-bar span { min-height: 14mm; }
  .apartment-report-operators { gap: 1mm; }
  .apartment-report-operators li { padding: 1.2mm 1.5mm; border-radius: 1mm; font-size: 5.8pt; }
  .apartment-report-operators small, .apartment-report-note { font-size: 4.7pt; }
  .apartment-report-note { margin-top: 1.2mm; }
  .apartment-report-diagnosis p { font-size: 5.8pt; line-height: 1.5; }
  .apartment-report-footer { gap: 2.5mm; padding: 1.6mm 5mm 2mm; font-size: 4.5pt; line-height: 1.35; }
  .apartment-report-footer > div { max-width: 112mm; }
}
