/*
Theme Name: Studio Auvia
Description: Auvia's original editorial identity on Beamers studio-core.
Version: 1.0.0
Text Domain: studioauvia
*/
@font-face{font-family:"Auvia Sans";src:url("assets/fonts/AuviaSans.woff2?ver=20260913") format("woff2");font-weight:100 900;font-display:swap}
/* ════════════════════════════════════════════════════════════════════
   blocks-reference.css — ⚠ 어디에도 적재되지 않는 참고용 스타터.
   2026-06-12: 플랫폼 정책 전환 — beamers-portfolio 블록은 "마크업만" 제공하고
   스타일은 항상 각 스튜디오 테마가 새로 잡는다. 이 파일은 블록 클래스 구조와
   과거 기본 스타일의 레퍼런스로만 남긴다. 복사해서 테마 출발점으로 써도 된다.
   ════════════════════════════════════════════════════════════════════ */

/**
 * Beamers Portfolio — 공통 블록 스타일.
 *
 * 규칙:
 *  - 오직 --bsp-* 토큰만 소비한다(하드코딩 색/폰트/간격 금지).
 *  - 모든 선택자를 :where() 로 감싸 특이도 0 → 스튜디오 테마가 손쉽게 override.
 *  - hover 인터랙션 효과 없음(프로젝트 규칙).
 */

/* box-sizing 리셋 — 클래식 테마엔 전역 리셋이 없을 수 있어, padding-inline + width:100%(alignfull)
   조합에서 가로 오버플로우가 생긴다. .bsp-single 범위로 한정해 안전하게 보정. */
:where(.bsp-single, .bsp-single *) { box-sizing: border-box; }

/* ── 단일 페이지 래퍼 & 정렬 ─────────────────────────── */
:where(.bsp-single) {
  color: var(--bsp-ink);
  background: var(--bsp-paper);
  font-family: var(--bsp-font-body);
  font-size: var(--bsp-body-size);
  line-height: var(--bsp-lh-body);
  letter-spacing: var(--bsp-tracking-body);
  word-break: keep-all;       /* 한글 어절 단위 줄바꿈 */
  line-break: strict;
  overflow-wrap: break-word;
}
:where(.bsp-single .alignfull) { width: 100%; }
:where(.bsp-single .alignwide) {
  max-width: var(--bsp-maxw);
  margin-inline: auto;
}

/* 블록 공통 내부 컨테이너 — 콘텐츠 가독 폭 + 페이지 패딩 */
:where(.bsp-wrap) {
  max-width: var(--bsp-maxw);
  margin-inline: auto;
  padding-inline: var(--bsp-pad-page);
}
:where(.bsp-wrap--text) { max-width: var(--bsp-maxw-text); }

/* 섹션 블록 세로 리듬 */
:where(.bsp-section) { padding-block: var(--bsp-gap-section); }

/* 에디터 빈 상태 안내 */
:where(.bsp-empty) {
  padding: var(--bsp-gap);
  border: 1px dashed var(--bsp-rule-strong);
  border-radius: var(--bsp-radius);
  color: var(--bsp-ink-mute);
  font-family: var(--bsp-font-mono);
  font-size: var(--bsp-small-size);
}

/* ── hero ────────────────────────────────────────────── */
:where(.bsp-hero) {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: var(--bsp-gap);
  min-height: var(--bsp-hero-h, 60vh);
  padding: var(--bsp-gap-section) var(--bsp-pad-page);
  background: var(--bsp-paper-2);
  color: var(--bsp-ink);
  overflow: hidden;
}
:where(.bsp-hero--centered) {
  justify-content: center;
  align-items: center;
  text-align: center;
}
:where(.bsp-hero__bg) {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
}
:where(.bsp-hero__inner) {
  position: relative;
  z-index: 1;
  max-width: var(--bsp-maxw);
  margin-inline: auto;
  width: 100%;
}
:where(.bsp-hero--has-bg) { color: var(--bsp-on-accent); }
:where(.bsp-hero--has-bg)::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background: linear-gradient(180deg, transparent 30%, rgba(0, 0, 0, 0.45));
}
:where(.bsp-hero__eyebrow) {
  font-family: var(--bsp-font-mono);
  font-size: var(--bsp-eyebrow-size);
  letter-spacing: var(--bsp-tracking);
  text-transform: uppercase;
  color: var(--bsp-accent);
  margin: 0 0 var(--bsp-gap-sm);
}
/* 헤딩은 단일 클래스(특이도 0,1,0) — 테마 reset 의 element 규칙(h1{font-size:unset} 등)을 항상 이긴다.
   외형 변경은 여전히 --bsp-* 토큰 / 테마 클래스 override 로. */
.bsp-hero__heading {
  font-family: var(--bsp-font-display);
  font-size: var(--bsp-h1);
  line-height: var(--bsp-lh-tight);
  letter-spacing: var(--bsp-tracking-display);
  font-weight: var(--bsp-weight-display);
  margin: 0;
  text-wrap: balance;
}
:where(.bsp-hero__sub) {
  margin: var(--bsp-gap-sm) 0 0;
  max-width: var(--bsp-maxw-text);
  color: var(--bsp-ink-soft);
  font-size: clamp(1rem, 1.6vw, 1.25rem);
}
:where(.bsp-hero--has-bg) .bsp-hero__sub { color: rgba(255, 255, 255, 0.85); }

/* ── project-info ────────────────────────────────────── */
:where(.bsp-project-info) {
  border-top: 1px solid var(--bsp-rule);
  border-bottom: 1px solid var(--bsp-rule);
  padding-block: var(--bsp-gap);
}
:where(.bsp-project-info__list) {
  display: grid;
  gap: var(--bsp-gap);
  margin: 0;
}
:where(.bsp-project-info--inline .bsp-project-info__list) {
  grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
}
:where(.bsp-project-info__label) {
  display: block;
  font-family: var(--bsp-font-mono);
  font-size: var(--bsp-eyebrow-size);
  letter-spacing: var(--bsp-tracking);
  text-transform: uppercase;
  color: var(--bsp-ink-mute);
  margin-bottom: var(--bsp-gap-sm);
}
:where(.bsp-project-info__value) {
  font-size: var(--bsp-body-size);
  color: var(--bsp-ink);
}
:where(.bsp-project-info__value a) { color: var(--bsp-accent); }
:where(.bsp-tags) {
  display: flex;
  flex-wrap: wrap;
  gap: var(--bsp-gap-sm);
  list-style: none;
  margin: 0;
  padding: 0;
}
:where(.bsp-tag) {
  font-family: var(--bsp-font-mono);
  font-size: var(--bsp-small-size);
  padding: 0.15em 0.6em;
  border: 1px solid var(--bsp-rule-strong);
  border-radius: var(--bsp-radius);
  color: var(--bsp-ink-soft);
}

/* ── text-media ──────────────────────────────────────── */
:where(.bsp-text-media__grid) {
  display: grid;
  gap: var(--bsp-gap);
  align-items: center;
  grid-template-columns: 1fr;
}
@media (min-width: 48rem) {
  :where(.bsp-text-media__grid) { grid-template-columns: 1fr 1fr; }
  :where(.bsp-text-media--media-left .bsp-text-media__media) { order: -1; }
}
:where(.bsp-text-media__media img),
:where(.bsp-text-media__media video) {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--bsp-radius);
}
:where(.bsp-text-media__body) > :first-child { margin-top: 0; }
:where(.bsp-text-media__body) > :last-child { margin-bottom: 0; }

/* ── gallery ─────────────────────────────────────────── */
:where(.bsp-gallery__grid) {
  display: grid;
  gap: var(--bsp-gap);
  grid-template-columns: repeat(var(--bsp-cols, 3), minmax(0, 1fr));
}
@media (max-width: 48rem) {
  :where(.bsp-gallery__grid) { grid-template-columns: repeat(min(var(--bsp-cols, 3), 2), 1fr); }
}
:where(.bsp-gallery__item) { margin: 0; }
:where(.bsp-gallery__item img) {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: var(--bsp-radius);
}
:where(.bsp-gallery--ratio .bsp-gallery__item img) {
  aspect-ratio: var(--bsp-aspect, 1 / 1);
  object-fit: cover;
}

/* ── video (Plyr) ────────────────────────────────────── */
:where(.bsp-video__player) {
  border-radius: var(--bsp-radius);
  overflow: hidden;
  background: var(--bsp-ink);
}
/* 직접 파일 <video> 폴백 */
:where(video.bsp-video__player) {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}
/* Plyr 임베드 컨테이너 라운드 클리핑(plyr.css 가 비율·컨트롤 담당) */
:where(.bsp-video__player .plyr) { border-radius: var(--bsp-radius); }
:where(.bsp-video .plyr) { --plyr-color-main: var(--bsp-accent); }
:where(.bsp-video__caption) {
  margin-top: var(--bsp-gap-sm);
  font-size: var(--bsp-small-size);
  color: var(--bsp-ink-mute);
  text-align: center;
}

/* ── quote ───────────────────────────────────────────── */
:where(.bsp-quote) {
  text-align: center;
  border: 0;
  margin: 0;
}
.bsp-quote__text {
  font-family: var(--bsp-font-display);
  font-size: var(--bsp-h2);
  line-height: var(--bsp-lh-heading);
  letter-spacing: var(--bsp-tracking-head);
  font-weight: 600;
  color: var(--bsp-ink);
  margin: 0;
  text-wrap: balance;
}
:where(.bsp-quote__text::before) { content: "\201C"; }
:where(.bsp-quote__text::after)  { content: "\201D"; }
:where(.bsp-quote__cite) {
  display: block;
  margin-top: var(--bsp-gap);
  font-style: normal;
  font-family: var(--bsp-font-mono);
  font-size: var(--bsp-small-size);
  letter-spacing: var(--bsp-tracking);
  text-transform: uppercase;
  color: var(--bsp-ink-mute);
}

/* ── credits ─────────────────────────────────────────── */
:where(.bsp-credits__list) {
  display: grid;
  gap: 0;
  margin: 0;
  border-top: 1px solid var(--bsp-rule);
}
:where(.bsp-credits__row) {
  display: grid;
  grid-template-columns: minmax(8rem, 1fr) 2fr;
  gap: var(--bsp-gap);
  padding-block: 0.85rem;
  border-bottom: 1px solid var(--bsp-rule);
}
:where(.bsp-credits__role) {
  font-family: var(--bsp-font-mono);
  font-size: var(--bsp-small-size);
  letter-spacing: var(--bsp-tracking);
  text-transform: uppercase;
  color: var(--bsp-ink-mute);
}
:where(.bsp-credits__name) { color: var(--bsp-ink); }
:where(.bsp-credits__name a) { color: var(--bsp-accent); }

/* ── related-projects ────────────────────────────────── */
.bsp-related__heading {
  font-family: var(--bsp-font-display);
  font-size: var(--bsp-h3);
  line-height: var(--bsp-lh-heading);
  letter-spacing: var(--bsp-tracking-head);
  margin: 0 0 var(--bsp-gap);
}
:where(.bsp-related__grid) {
  display: grid;
  gap: var(--bsp-gap);
  grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr));
}
:where(.bsp-related__card) {
  display: block;
  color: inherit;
  text-decoration: none;
}
:where(.bsp-related__thumb) {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  background: var(--bsp-paper-2);
  border-radius: var(--bsp-radius);
  margin-bottom: var(--bsp-gap-sm);
}
:where(.bsp-related__title) {
  font-family: var(--bsp-font-display);
  font-size: var(--bsp-body-size);
  color: var(--bsp-ink);
}

/* ── cta ─────────────────────────────────────────────── */
:where(.bsp-cta) {
  text-align: center;
  background: var(--bsp-paper-2);
  padding: var(--bsp-gap-section) var(--bsp-pad-page);
  border-radius: var(--bsp-radius);
}
.bsp-cta__heading {
  font-family: var(--bsp-font-display);
  font-size: var(--bsp-h2);
  line-height: var(--bsp-lh-heading);
  letter-spacing: var(--bsp-tracking-head);
  font-weight: var(--bsp-weight-display);
  margin: 0 0 var(--bsp-gap);
}
:where(.bsp-cta__btn) {
  display: inline-block;
  padding: 0.85em 1.8em;
  background: var(--bsp-accent);
  color: var(--bsp-on-accent);
  border-radius: var(--bsp-radius);
  text-decoration: none;
  font-family: var(--bsp-font-mono);
  font-size: var(--bsp-small-size);
  letter-spacing: var(--bsp-tracking);
  text-transform: uppercase;
}
:where(.bsp-cta--outline .bsp-cta__btn) {
  background: transparent;
  color: var(--bsp-accent);
  border: 1px solid var(--bsp-accent);
}

/* ── image-grid (편집형 이미지/그리드) ───────────────── */
:where(.bsp-imagegrid__full) { width: 100%; }
:where(.bsp-imagegrid__grid) { display: grid; gap: var(--bsp-gap); }
:where(.bsp-imagegrid--single .bsp-imagegrid__grid) { grid-template-columns: 1fr; }
:where(.bsp-imagegrid--two .bsp-imagegrid__grid)   { grid-template-columns: repeat(2, 1fr); }
:where(.bsp-imagegrid--three .bsp-imagegrid__grid) { grid-template-columns: repeat(3, 1fr); }
:where(.bsp-imagegrid--four .bsp-imagegrid__grid)  { grid-template-columns: repeat(2, 1fr); }
:where(.bsp-imagegrid--featured .bsp-imagegrid__grid) { grid-template-columns: repeat(2, 1fr); }
:where(.bsp-imagegrid--featured .bsp-imagegrid__item:first-child) { grid-column: 1 / -1; }
:where(.bsp-imagegrid__item) { margin: 0; aspect-ratio: 3 / 2; overflow: hidden; border-radius: var(--bsp-radius); background: color-mix(in srgb, var(--bsp-ink) 8%, var(--bsp-paper-2)); }
:where(.bsp-imagegrid--single .bsp-imagegrid__item),
:where(.bsp-imagegrid--featured .bsp-imagegrid__item:first-child) { aspect-ratio: 16 / 9; }
:where(.bsp-imagegrid__item img) { width: 100%; height: 100%; object-fit: cover; display: block; }
:where(.bsp-imagegrid__caption) { margin-top: var(--bsp-gap-sm); font-size: var(--bsp-small-size); color: var(--bsp-ink-mute); text-align: center; }
@media (max-width: 720px) {
  :where(.bsp-imagegrid--three .bsp-imagegrid__grid) { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
  :where(.bsp-imagegrid__grid) { grid-template-columns: 1fr; }
  :where(.bsp-imagegrid--featured .bsp-imagegrid__item:first-child) { grid-column: auto; }
}

/* Brand values for shared blocks live in theme.json, never in :root. */
.auvia-arrow{display:inline-block;font-size:1.25em;line-height:1}
.project-image{aspect-ratio:16/10;overflow:hidden;margin-bottom:1rem;background:var(--color-soft)}
.project-image img{width:100%;height:100%;object-fit:cover}
.project-card-meta{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:.5rem}
.project-card h3{font-size:clamp(1.15rem,1.05rem + .35vw,1.45rem);line-height:1.5;text-wrap:pretty}
.auvia-contact-form{grid-column:6/span 7;min-width:0}
.auvia-contact-form .bsp-form{max-width:none;margin:0}
.auvia-contact-form .form-note a{text-decoration:underline;text-underline-offset:.2em}
.bsp-form :is(input,textarea,select){font-family:var(--font-sans)}
.bsp-form :is(.description,.acf-label label){color:var(--color-ink)}
.bsp-form .description{font-size:.9375rem;line-height:1.75}
.bsp-single{font-family:var(--font-sans)}
.auvia-text-only .bsp-text-media__grid{display:block;max-width:64rem;margin-inline:auto}
.auvia-text-only .bsp-text-media__media:empty{display:none}
.auvia-text-only .bsp-text-media__body{max-width:none;font-size:var(--text-body);line-height:var(--line-body)}
.auvia-text-only .bsp-text-media__body :is(img,video){width:100%;height:auto;margin-block:2rem}
.auvia-text-only .bsp-text-media__body p+p{margin-top:1.5rem}
.auvia-text-only .bsp-text-media__body a{text-decoration:underline;text-underline-offset:.2em}
.auvia-story .bsp-section:first-of-type{margin-top:0}
.story-source{max-width:64rem;margin-top:2rem}
.bsp-hero__heading{word-break:keep-all;line-height:1.2;text-wrap:balance}
.bsp-gallery__item{min-width:0}
.footer-bottom{flex-wrap:wrap}
body.admin-bar .site-header{top:32px}
@media(max-width:782px){body.admin-bar .site-header{top:46px}}
@media(max-width:700px){.auvia-contact-form{grid-column:span 12}.bsp-gallery__grid{grid-template-columns:1fr}.home-hero{min-height:28rem}.bsp-hero__heading{font-size:clamp(2rem,7vw,3rem)}}
/* Keep the full-bleed artwork independent from generic image defaults. */
.bsp-hero__bg{width:100%;height:100%;object-fit:cover}
.bsp-hero--has-bg .bsp-hero__eyebrow{color:var(--bsp-on-accent);font-family:var(--bsp-font-body)}
.bsp-hero{padding-block:clamp(2rem,5vw,5rem)}
.bsp-video__player{aspect-ratio:16/9}
.page-intro{padding-top:clamp(3.5rem,7vw,6rem)}
.auvia-story .bsp-section{padding-top:0}
