/* Shared type roles. Geometry and calendar date/time metrics are deliberately
   owned by their existing components (including schedule-optical.js). */
:root {
  --font-display:'Noto Serif KR',Georgia,serif;
  --font-accent:'Channel Serif','Noto Serif KR',serif;
  --font-ui:'Noto Sans KR',sans-serif;
  --font-body:var(--font-ui);
}
body.theater :is(.section-heading h1,.page-title,.admin-page-head h1,
  .lens-copy h2,.plan-heading h2,.admin-login-card h3,.content-detail-card h3,
  .schedule-modal-card h3,.crew-popover h3,.profile-dialog h2) { font-family:var(--font-display); }
/* Preserve the display numerals in the calendar, month picker and timeline.
   No global button or descendant font reset: it would alter these controls. */
body.theater :is(.lens-eyebrow,.admin-login-kicker,.plan-heading>div>p) { font-family:var(--font-accent); }
body.theater .nav.is-glass-menu .section-app { font-family:var(--font-ui); }
body.theater :is(.login-pill,.text-link,.crew-trigger,.cat-thumbs button,
  .lens-description,.profile-facts dt,.profile-crew-block>p,.crew-popover p,
  .crew-members a,.admin-login-card p,.admin-login-card input,.admin-login-card button,
  .content-detail-card p,.content-detail-card button,.content-detail-card label,
  .schedule-plan-dialog,.schedule-plan-dialog input,.schedule-plan-dialog button,
  .schedule-modal-card label,.schedule-modal-card button,.schedule-modal-title,
  .ig-profile-note,.ig-display-name,.ig-stats,.ig-profile-actions button,
  .ig-video-filters button,.auto-vod-body h4,.auto-vod-meta,.vod-empty-state,
  .following-name,.following-state,.following-empty,#igFollowingSearch,.profile-dialog p,.profile-dialog button,.profile-photo-count,
  .ig-detail,.ig-comment-input,.ig-caption,.ig-comments,#igDownloadMenu,
  .admin-card,.admin-card button,.admin-card input,.admin-card textarea,.admin-card select,
  .music-dock,.music-details,.ending-transport,.ending-audio-state) { font-family:var(--font-ui); }
#page-gallery :is(.ig-account h2,.ig-profile-note,.ig-profile-actions button),
#igFollowingDialog,#igDialog,#chustagramDM,#dmAdmin { font-family:var(--font-ui); }
/* The link's old 13px face and the heading's 14px strut had different
   baselines. One line box prevents the new face adding 2px to two-line rows. */
#page-gallery .auto-vod-body h4 { font-size:13px; }
#page-gallery .auto-vod-body h4 a { line-height:inherit;letter-spacing:.6px; }
/* Measured Chrome ink bottoms: system 14/20 face = line top +16.5px;
   Noto Sans KR = +18px. Preserve the avatar/bio alignment, not merely its box.
   At 11/18 on mobile the new ink ends 0.5px higher, so compensate separately. */
@media(min-width:736px) { #page-gallery .ig-profile-note { top:2.5px; } }
@media(max-width:735px) { #page-gallery .ig-profile-note { top:.5px; } }

/* Finish role assignment where older ID-scoped shorthands won the cascade.
   Keep the existing line boxes, optical name offsets and display numerals. */
#page-profile .lens-eyebrow {
  font-family:var(--font-ui);font-size:13px;font-weight:500;
  line-height:18px;letter-spacing:.16em;margin-bottom:14.5px;
  position:relative;top:-.5px;
}
#page-profile :is(.dial-nav button,.profile-facts dd) { font-family:var(--font-ui); }
/* Keep the label's visible capitals aligned with the glass button icon. */
#page-profile .dial-nav .dial-label { position:relative;top:-.5px; }
#page-profile .profile-facts dd { position:relative;top:-.5px; }
@media(max-width:600px) {
  #page-profile .lens-eyebrow { font-size:12px;margin-bottom:13px;top:0; }
}
#homeNextStream :is(.v148-title,.v148-time) { font-family:var(--font-ui); }
/* The previous serif's normal line boxes measured 23px and 19px in Chrome.
   Pin those boxes before changing the face; the mobile component owns its 18px line. */
@media(min-width:601px) {
  #homeNextStream .v148-title { line-height:1.4375; }
  #homeNextStream .v148-time { line-height:1.46154; }
}
/* Variable video headlines are UI content. Keep the existing size, footer,
   line height and line clamp; names and record lyrics retain their display face. */
.is-concave .theater-video .video-title { font-family:var(--font-ui);font-weight:500;word-break:keep-all; }
#page-profile .lens-copy h2,#page-profile #lyrics { font-family:var(--font-display); }

/* Small, component-local optical corrections. Relative offsets do not reflow
   the row or replace transforms used for hover, switches and disclosure motion. */
.crew-trigger>span,
#page-gallery .vod-source-label,
#page-profile .profile-fan-toggle>span:first-child,
.plan-sub>span>span { position:relative;top:-.5px; }
#musicState { position:relative;top:-1px; }
#chustagramDM .dm-copy-mail svg { position:relative;top:1px; }
/* Keep the approved month numerals; align the chevron to their actual ink. */
#page-schedule .schedule-month-trigger svg { position:relative;top:4.5px; }

/* Weekday labels share the UI face; retain the calendar's existing 52px row,
   cell padding and weekend colors. Date/time numerals remain component-owned. */
#page-schedule .v44-dow {
  --weekday-ink-y:-4px;
  font-family:var(--font-ui);font-size:12px;font-weight:600;
  letter-spacing:.08em;
}
/* Center the painted capitals between the INNER glass-refraction line and
   the date divider, not the outer CSS border or the font's CJK line box.
   The ::after line ends 6px below the outer top (5px on mobile). Its added
   5px/4px inset moves the visual midpoint 2.5px/2px below the border midpoint;
   the final half-pixel adjustment accounts for Chrome's capital rasterization.
   Move only the text: the 52px weekday cells, padding and date geometry stay fixed.
   Half the tracking offsets its trailing blank. All seven labels share one
   baseline; no measurement or scroll loop is needed. */
#page-schedule .weekday-ink {
  position:relative;left:.04em;
  top:var(--weekday-ink-y);
}
@media(max-width:900px) {
  #page-schedule .v44-dow { --weekday-ink-y:-1px; }
}
@media(max-width:600px) {
  #page-schedule .v44-dow { --weekday-ink-y:-2px;font-size:10px; }
}

/* 하단 가운데 저작권 문구. 홈은 화면 아래 고정, 다른 페이지는 내용 맨 아래 */
.site-footer { display:block; margin:28px auto 18px; text-align:center; font:400 11px/16px var(--font-ui, sans-serif); letter-spacing:.02em; color:color-mix(in srgb, currentColor 46%, transparent); background:none; }
body[data-section="home"] .site-footer { position:fixed; left:50%; bottom:6px; transform:translateX(-50%); z-index:5; margin:0; white-space:nowrap; pointer-events:none; }
html[data-theme="light"] .site-footer { color:#6f6478a6; }
@media (max-width:600px) { .site-footer { font-size:10px; } body[data-section="home"] .site-footer { bottom:4px; } }
