.print-studio {
  grid-template-columns: 332px minmax(0, 1fr);
}

.print-settings {
  gap: var(--space-4);
  padding: var(--space-5);
}

.print-settings fieldset {
  gap: var(--space-2);
  padding-bottom: var(--space-4);
}

.print-size-presets {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 3px;
  padding: 3px;
  border: var(--hairline);
  border-radius: var(--radius-md);
  background: var(--surface-tertiary);
}

.print-size-presets button {
  min-height: 34px;
  padding: 0 var(--space-2);
  border: 0;
  border-radius: 6px;
  background: transparent;
  box-shadow: none;
  color: var(--text-secondary);
  font-size: var(--text-sm);
}

.print-size-presets button.active {
  background: var(--surface-raised);
  box-shadow: var(--shadow-micro);
  color: var(--text-primary);
  font-weight: 700;
}

.actual-size {
  border-color: var(--separator-strong);
  background: var(--surface);
}

.actual-size strong {
  font-variant-numeric: tabular-nums;
}

.print-readability {
  display: inline-flex;
  width: fit-content;
  min-height: 25px;
  align-items: center;
  padding: 0 9px;
  border-radius: var(--radius-pill);
  background: var(--success-soft);
  color: var(--success);
  font-size: 11px;
  font-weight: 750;
}

.print-readability.fair { background: var(--warning-soft); color: var(--warning); }
.print-readability.low { background: var(--danger-soft); color: var(--danger); }

.print-advanced {
  border-bottom: var(--hairline);
}

.print-advanced summary {
  display: flex;
  min-height: 42px;
  align-items: center;
  justify-content: space-between;
  color: var(--text-primary);
  cursor: pointer;
  font-size: var(--text-base);
  font-weight: 700;
  list-style: none;
}

.print-advanced summary::-webkit-details-marker { display: none; }
.print-advanced summary::after { content: "+"; color: var(--text-tertiary); font-size: 20px; font-weight: 400; }
.print-advanced[open] summary::after { content: "−"; }

.print-advanced-body {
  display: grid;
  gap: var(--space-3);
  padding: var(--space-2) 0 var(--space-4);
}

.print-custom-size {
  display: grid;
  gap: var(--space-3);
}

.print-custom-size[hidden] { display: none; }

.print-switch {
  display: flex !important;
  min-height: 48px;
  align-items: center;
  grid-template-columns: none !important;
  gap: var(--space-3) !important;
  padding: var(--space-2) var(--space-3);
  border: var(--hairline);
  border-radius: var(--radius-md);
  background: var(--surface-secondary);
  cursor: pointer;
}

.print-switch input {
  position: relative;
  width: 40px !important;
  height: 23px !important;
  min-height: 23px !important;
  flex: 0 0 40px;
  margin: 0;
  padding: 0 !important;
  appearance: none;
  border: 0;
  border-radius: var(--radius-pill);
  background: var(--separator-strong);
  box-shadow: none !important;
}

.print-switch input::before {
  content: "";
  position: absolute;
  top: 2px;
  left: 2px;
  width: 19px;
  height: 19px;
  border-radius: 50%;
  background: var(--surface-raised);
  box-shadow: var(--shadow-micro);
  transition: transform var(--duration-base) var(--ease-ios);
}

.print-switch input:checked { background: var(--accent); }
.print-switch input:checked::before { transform: translateX(17px); }
.print-switch > span { display: grid; gap: 1px; }
.print-switch strong { color: var(--text-primary); font-size: var(--text-sm); }
.print-switch small { color: var(--text-tertiary); font-size: 11px; font-weight: 500; }

.print-warning,
.print-scale-notice {
  margin: 0;
  padding: var(--space-3);
  border-radius: 6px;
  font-size: 11px;
  line-height: 1.45;
}

.print-warning { background: var(--warning-soft); color: var(--warning); font-weight: 650; }
.print-scale-notice { background: var(--accent-softer); color: var(--text-secondary); }

.preview-label {
  align-items: center;
}

.preview-mode-control {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--text-secondary);
  font-size: 12px;
}

.preview-mode-control select {
  width: 118px;
  min-height: 36px;
  padding-block: 0;
  background-color: var(--surface-raised);
  font-size: 12px;
}

.print-preview-pages {
  align-items: start;
}

.print-sheet {
  position: relative;
  display: block;
  width: min(100%, 794px);
  aspect-ratio: 210 / 297;
  overflow: hidden;
  background: #fff;
  color: #161616;
  color-scheme: light;
  box-shadow: var(--shadow-paper);
}

.print-sheet.landscape {
  width: min(100%, 980px);
  aspect-ratio: 297 / 210;
}

.printer-safe-zone {
  position: absolute;
  inset: 3.8%;
  border: 1px dashed rgba(70, 75, 82, .18);
  pointer-events: none;
}

.print-sheet-cards {
  position: absolute;
  inset: 0;
  display: flex;
  box-sizing: border-box;
  padding: 3.8%;
  gap: 3.2%;
  align-items: center;
  justify-content: flex-start;
  flex-direction: column;
}

.print-sheet-cards.center { justify-content: center; }
.print-sheet-cards.top-left { align-items: flex-start; }
.print-sheet-cards.horizontal { flex-direction: row; }
.print-sheet-cards.horizontal.top-center { justify-content: center; align-items: flex-start; }
.print-sheet-cards.horizontal.center { justify-content: center; align-items: center; }
.print-sheet-cards.horizontal.top-left { justify-content: flex-start; align-items: flex-start; }
.print-sheet-cards.department-pair.horizontal { gap: 1.2%; }

.print-card-frame {
  position: relative;
  width: var(--card-width-pct);
  height: var(--card-height-pct);
  min-width: 0;
  min-height: 0;
  flex: 0 0 auto;
  overflow: visible;
}

.physical-print-card {
  container-type: size;
  display: flex;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  box-sizing: border-box;
  flex-direction: column;
  overflow: hidden;
  padding: 3.2%;
  border: 0;
  border-radius: 1.8mm;
  background: #fff;
  color: #171717;
  font-family: -apple-system, "Pretendard Variable", "Noto Sans KR", sans-serif;
}

.with-card-border .physical-print-card {
  border: .35mm solid #202020;
}

.physical-card-header {
  display: flex;
  min-height: 7%;
  flex: 0 0 auto;
  align-items: baseline;
  justify-content: space-between;
  gap: 3mm;
  margin-bottom: 1.8%;
  padding-bottom: 1.2%;
  border-bottom: .25mm solid #777;
}

.physical-card-header strong {
  overflow: hidden;
  font-size: 8.5pt;
  font-weight: 900;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.physical-card-header small {
  flex: 0 0 auto;
  color: #555;
  font-size: 5.5pt;
  font-weight: 700;
}

.template-semester_dual .physical-print-card,
.template-semester_single .physical-print-card {
  padding: 3.1% 3.4%;
}

.template-semester_dual .physical-card-header,
.template-semester_single .physical-card-header {
  min-height: 6.5%;
  margin-bottom: 1.3%;
}

.template-semester_dual .physical-card-header strong,
.template-semester_single .physical-card-header strong {
  font-size: 9pt;
}

.template-semester_dual .physical-card-header small,
.template-semester_single .physical-card-header small {
  font-size: 5.8pt;
  font-variant-numeric: tabular-nums;
}

.physical-semester-grid {
  position: relative;
  display: grid;
  min-height: 0;
  flex: 1 1 auto;
  grid-template-columns: 10.5% repeat(var(--day-columns), minmax(0, 1fr));
  grid-template-rows: 6% 5% repeat(63, minmax(0, 1fr));
  gap: .3mm;
  margin-bottom: 2.4mm;
  overflow: visible;
}

.physical-time-head,
.physical-department-head,
.physical-weekday {
  display: flex;
  align-items: center;
  justify-content: center;
  color: #1a1a1a;
  font-weight: 850;
}

.physical-time-head { border-right: .25mm solid #b8b8b8; font-size: 5.5pt; }
.physical-department-head { border-bottom: .25mm solid #b8b8b8; font-size: 6.4pt; }
.physical-department-head + .physical-department-head { border-left: .35mm solid #666; }
.physical-weekday { font-size: 5.5pt; }

.physical-time {
  position: relative;
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
  box-sizing: border-box;
  border-top: .16mm solid #d9dde1;
  border-right: .25mm solid #c7c7c7;
  color: #252525;
  font-style: normal;
  text-align: center;
}

.physical-time strong {
  position: absolute;
  z-index: 2;
  top: 0;
  right: .32mm;
  padding: 0 .12mm;
  transform: translateY(-50%);
  background: #fff;
  font-size: 4.25pt;
  font-weight: 800;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.physical-time.hour { border-top-color: #aeb4ba; }
.physical-time.hour strong { font-size: 4.65pt; font-weight: 900; }
.physical-time-end {
  position: absolute;
  z-index: 2;
  bottom: -.7mm;
  left: 0;
  width: 10.5%;
  box-sizing: border-box;
  padding-right: .32mm;
  background: #fff;
  color: #2d2d2d;
  font-size: 4.1pt;
  font-weight: 850;
  line-height: 1;
  text-align: right;
  white-space: nowrap;
}

.physical-semester-slot {
  border: 0;
  border-top: .16mm solid #dfe2e5;
  background: transparent;
}

.physical-semester-slot.hour { border-top-color: #b9bec3; }
.physical-semester-slot.final { border-bottom: .16mm solid #b9bec3; }
.physical-time.final { border-bottom: .2mm solid #aeb2b7; }

.physical-work-block {
  position: relative;
  z-index: 4;
  display: flex;
  min-width: 0;
  min-height: 0;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  overflow: hidden;
  width: calc(100% - .7mm);
  margin-left: .35mm;
  border: .22mm solid color-mix(in srgb, var(--event-color) 48%, #444);
  border-radius: .8mm;
  background: color-mix(in srgb, var(--event-color) 84%, #fff);
  color: #151515;
  text-align: center;
}

.physical-work-block strong {
  display: block;
  max-width: 100%;
  overflow: visible;
  padding: .1mm .3mm .22mm;
  font-size: var(--print-name-font, 8.8pt);
  font-weight: 900;
  line-height: 1.14;
  letter-spacing: -.04em;
  text-overflow: clip;
  white-space: nowrap;
}

.physical-work-block strong.long-name { font-size: max(5.9pt, calc(var(--print-name-font, 8.8pt) - 1.1pt)); letter-spacing: -.065em; }
.physical-work-block.micro-block strong { font-size: max(3.6pt, calc(var(--print-name-font, 8.8pt) - 4.3pt)); }
.physical-work-block.tiny-block strong { font-size: max(5.2pt, calc(var(--print-name-font, 8.8pt) - 2.6pt)); }
.physical-work-block.short-block strong { font-size: max(6.2pt, calc(var(--print-name-font, 8.8pt) - 1pt)); }
.physical-work-block.compact-block strong { font-size: max(6.8pt, calc(var(--print-name-font, 8.8pt) - .5pt)); }

.physical-work-block.shared {
  --shared-color: color-mix(in srgb, var(--event-color) 50%, var(--event-color-two));
  border-color: color-mix(in srgb, var(--shared-color) 52%, #444);
  background: color-mix(in srgb, var(--shared-color) 82%, #fff);
}
.physical-work-block.shared strong {
  display: flex;
  max-height: 100%;
  align-items: stretch;
  justify-content: center;
  box-sizing: border-box;
  flex-direction: column;
  gap: 0;
  padding: .08mm .25mm .16mm;
  font-size: max(5.6pt, calc(var(--print-name-font, 8.8pt) - 1.6pt));
  line-height: 1.08;
  letter-spacing: -.055em;
}
.physical-work-block.shared strong > span {
  display: block;
  max-width: 100%;
  padding-left: .45mm;
  border-left: .35mm solid var(--worker-color);
  overflow: visible;
  white-space: nowrap;
}
.physical-work-block.shared strong.long-name { font-size: max(5pt, calc(var(--print-name-font, 8.8pt) - 2.4pt)); }
.physical-work-block.shared.micro-block strong,
.physical-work-block.shared.tiny-block strong {
  align-items: center;
  flex-direction: row;
  gap: .25mm;
  padding: 0 .12mm;
  line-height: 1;
}
.physical-work-block.shared.micro-block strong { font-size: min(3.4pt, max(3pt, calc(var(--print-name-font, 8.8pt) - 5.6pt))); }
.physical-work-block.shared.tiny-block strong { font-size: min(4.4pt, max(3.6pt, calc(var(--print-name-font, 8.8pt) - 4.6pt))); }
.physical-work-block.shared.short-block strong { padding-block: 0; font-size: min(4.8pt, max(4.2pt, calc(var(--print-name-font, 8.8pt) - 3.6pt))); line-height: .98; }
.physical-work-block.shared.compact-block strong { font-size: min(6pt, max(5.2pt, calc(var(--print-name-font, 8.8pt) - 2.6pt))); line-height: 1.02; }

.physical-month-layout {
  display: grid;
  min-height: 0;
  flex: 1 1 auto;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2.4%;
}

.physical-month-layout.vertical {
  grid-template-columns: 1fr;
  grid-template-rows: repeat(2, minmax(0, 1fr));
  gap: 2%;
}

.physical-month {
  display: flex;
  min-width: 0;
  min-height: 0;
  flex-direction: column;
}

.physical-month > header {
  display: flex;
  min-height: 8%;
  align-items: center;
  justify-content: center;
  border-bottom: .25mm solid #aaa;
}

.physical-month > header strong { font-size: 6pt; font-weight: 900; }
.physical-weekdays { display: grid; min-height: 7%; grid-template-columns: repeat(7, 1fr); align-items: center; }
.physical-weekdays b { font-size: 4.7pt; text-align: center; }
.physical-weekdays .sun { color: #d32929; }
.physical-weekdays .sat { color: #176db4; }

.physical-days {
  display: grid;
  min-height: 0;
  flex: 1 1 auto;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  grid-template-rows: repeat(var(--month-weeks), minmax(0, 1fr));
  gap: .55mm;
}

.physical-day {
  position: relative;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  padding: 2.35mm .45mm .35mm;
  border: .22mm solid #5f5f5f;
  border-radius: .7mm;
  background: #fff;
}

.physical-day.other { opacity: .38; background: #f4f4f4; }
.physical-day.holiday { border-color: #e14a4a; background: #fff6f6; }
.physical-day.saturday { background: #f3f8fd; }
.physical-day > i { position: absolute; top: .3mm; right: .5mm; color: #202020; font-size: 4.3pt; font-style: normal; font-weight: 900; }
.physical-day.holiday > i { color: #d32929; }
.physical-day.saturday > i { color: #176db4; }
.physical-day > small { position: absolute; top: .35mm; left: .4mm; max-width: calc(100% - 3mm); overflow: hidden; color: #d32929; font-size: 3.3pt; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; }
.physical-day > em { display: block; overflow: hidden; font-size: 5pt; font-style: normal; font-weight: 900; line-height: 1.08; }
.physical-day > em span { display: block; overflow: hidden; text-overflow: clip; white-space: nowrap; }
.physical-day.names-4 > em { font-size: 4.6pt; line-height: 1.03; }
.physical-day.names-5 > em { font-size: 4.05pt; line-height: 1; }

.physical-mixed-layout {
  display: grid;
  min-height: 0;
  flex: 1 1 auto;
  grid-template-columns: .9fr 1.1fr;
  gap: 2.2%;
}

.physical-mixed-layout > div { min-width: 0; min-height: 0; overflow: hidden; }
.physical-mixed-layout .physical-month { height: 100%; }
.physical-mixed-layout .physical-semester-grid { height: 100%; }

.print-card-frame.fair .physical-print-card { padding: 2.6%; }
.print-card-frame.fair .physical-card-header { min-height: 6%; margin-bottom: 1.2%; }
.print-card-frame.low .physical-print-card { padding: 2%; }
.print-card-frame.low .physical-card-header { min-height: 5%; margin-bottom: .8%; padding-bottom: .7%; }
.print-card-frame.low .physical-card-header small { display: none; }
.print-card-frame.low .physical-card-header strong { font-size: 7pt; }
.print-card-frame.low .physical-day > em { font-size: 4.2pt; }

.card-dimension,
.resize-feedback {
  position: absolute;
  z-index: 12;
  padding: 4px 7px;
  border-radius: 5px;
  background: rgba(24, 28, 34, .86);
  color: #fff;
  font-size: 10px;
  font-variant-numeric: tabular-nums;
  pointer-events: none;
}

.card-dimension { right: 0; bottom: -28px; }
.resize-feedback { top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 12px; }

.resize-handle {
  position: absolute;
  z-index: 15;
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  touch-action: none;
}

.resize-handle.east { top: 12%; right: -7px; width: 14px; height: 76%; cursor: ew-resize; }
.resize-handle.south { bottom: -7px; left: 12%; width: 76%; height: 14px; cursor: ns-resize; }
.resize-handle.corner { right: -7px; bottom: -7px; width: 18px; height: 18px; border: 2px solid var(--accent); border-top: 0; border-left: 0; cursor: nwse-resize; }

.print-preview-pages.card-view .print-sheet {
  width: min(100%, 980px);
  height: auto;
  aspect-ratio: auto;
  overflow: visible;
  padding: 30px;
  background: var(--surface-secondary);
  box-shadow: none;
}

.print-preview-pages.card-view .printer-safe-zone { display: none; }
.print-preview-pages.card-view .print-sheet-cards { position: static; flex-direction: column; align-items: center; padding: 0; }
.print-preview-pages.card-view .print-card-frame { width: min(100%, 900px); height: auto; aspect-ratio: var(--card-ratio); }
.print-preview-pages.card-view .print-sheet-cards { gap: var(--space-5); }

.calibration-card {
  width: 100mm;
  height: 50mm;
  box-sizing: border-box;
  margin: 20mm auto 0;
  border: .3mm solid #000;
  background: #fff;
  color: #000;
}

.calibration-card strong { display: block; padding: 4mm; font-size: 11pt; }
.calibration-card span { display: block; border-top: .2mm solid #000; text-align: center; }
.calibration-card i { display: block; padding: 3mm; font-style: normal; text-align: center; }

@media screen and (max-width: 980px) {
  .print-studio { grid-template-columns: 1fr; }
  .print-settings { width: min(100%, 680px); justify-self: center; }
}

@media screen and (max-width: 760px) {
  .print-studio { gap: var(--space-4); }
  .print-settings { width: 100%; gap: var(--space-3); padding: var(--space-4); }
  .print-settings fieldset { padding-bottom: var(--space-3); }
  .preview-label { align-items: stretch; }
  .preview-mode-control { justify-content: space-between; }
  .preview-mode-control select { width: 140px; }
  .a4-stage { padding: var(--space-3); }
  .print-preview-pages.card-view .print-sheet { padding: var(--space-3); }
  .print-preview-pages.card-view .print-sheet-cards { gap: var(--space-4); }
  .card-dimension { display: none; }
  .resize-handle.east { right: -10px; width: 20px; }
  .resize-handle.south { bottom: -10px; height: 20px; }
  .resize-handle.corner { right: -10px; bottom: -10px; width: 22px; height: 22px; }
}

@media print {
  body > *:not(#printOnly) { display: none !important; }
  html,
  body { width: 100%; height: auto; margin: 0 !important; padding: 0 !important; background: #fff !important; }
  #printOnly { display: block !important; }
  #printOnly .print-sheet {
    display: block;
    width: calc(var(--sheet-width-mm) * 1mm) !important;
    height: calc(var(--sheet-height-mm) * 1mm) !important;
    margin: 0 !important;
    overflow: hidden;
    box-shadow: none;
    break-after: page;
  }
  #printOnly .print-sheet:last-child { break-after: auto; }
  #printOnly .printer-safe-zone,
  #printOnly .card-dimension,
  #printOnly .resize-feedback,
  #printOnly .resize-handle { display: none !important; }
  #printOnly .print-sheet-cards { padding: 8mm; gap: 8mm; }
  #printOnly .print-sheet-cards.department-pair { gap: 3mm; }
  #printOnly .print-card-frame {
    width: calc(var(--card-width-mm) * 1mm) !important;
    height: calc(var(--card-height-mm) * 1mm) !important;
  }
  #printOnly .physical-print-card { background: #fff !important; color: #171717 !important; }
  #printOnly .calibration-sheet { width: 210mm !important; height: 297mm !important; }
  * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
}
