/* parts/type.css: owned by the type workstream. Loaded after styles.css.
   Brand type matches the geometric Nomibar wordmark (logo.png): Outfit sitewide. */

:root {
  --serif: "Outfit", system-ui, sans-serif;
  --sans: "Outfit", system-ui, sans-serif;
  --jp-serif: "Noto Sans JP", "Hiragino Sans", "Yu Gothic", sans-serif;
  --label-track: 0.26em;
  /* Sitewide type step-down: display ~0.86× prior, body/UI ~0.92× prior */
  --fs-body: 15px;
  --fs-label: 10px;
  --fs-nav: 10.6px;
  --fs-btn: 10.6px;
  --fs-hero: clamp(31px, 3.8vw, 52px);
  --fs-page-title: clamp(34px, 4.3vw, 62px);
  --fs-section: clamp(24px, 2.6vw, 41px);
  --fs-display-lg: clamp(46px, 8.2vw, 134px);
}

/* ---------- Headlines: serif ---------- */

h1,
h2:not(.eyebrow),
.hero__title,
.tile__body h3,
.card__body h3,
.duo__tile h3,
.mobile-nav__group > button,
.mobile-nav__group > a {
  font-family: var(--serif);
  font-optical-sizing: auto;
  font-kerning: normal;
  text-rendering: optimizeLegibility;
  font-variant-numeric: lining-nums;
}

h1,
h2:not(.eyebrow) {
  font-weight: 400;
  line-height: 1.08;
  letter-spacing: -0.012em;
}

.hero__title {
  font-size: var(--fs-hero);
  font-weight: 400;
  line-height: 1.06;
  letter-spacing: -0.01em;
}

.page-header h1 {
  font-size: var(--fs-page-title);
  font-weight: 400;
  line-height: 1.02;
  letter-spacing: -0.016em;
}

.split-feature h2 {
  font-size: clamp(26px, 2.8vw, 41px);
  margin: 16px 0 22px;
}

.menu-section__head h2 {
  font-size: clamp(24px, 2.2vw, 36px);
}

.visit-copy h2,
main h2[data-reveal] {
  font-size: clamp(22px, 2.2vw, 34px);
}

.newsletter h2 {
  font-size: clamp(24px, 2.4vw, 36px);
}

.tile__body h3 {
  font-size: clamp(22px, 2.1vw, 31px);
  font-weight: 400;
  line-height: 1.12;
}

.card__body h3 {
  font-size: clamp(17px, 1.4vw, 22px);
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: -0.005em;
}

.duo__tile h3 {
  font-size: clamp(21px, 1.7vw, 29px);
  font-weight: 400;
  line-height: 1.12;
}

/* Marquee: light, large serif */
.big-marquee__track h2 {
  font-weight: 300;
  font-size: clamp(52px, 7.1vw, 134px);
  letter-spacing: -0.02em;
  line-height: 1.08;
}

/* Statement blocks */
.statement p {
  font-variant-numeric: lining-nums;
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(19px, 1.9vw, 29px);
  line-height: 1.28;
  letter-spacing: -0.005em;
}

.statement p[style],
.statement__support {
  /* small supporting lines stay in the sans */
  font-family: var(--sans);
  font-size: 14px !important;
  line-height: 1.7;
  letter-spacing: 0.005em;
  max-width: 720px;
  margin-top: 22px;
  opacity: 0.72;
}

.statement.statement--stack p.statement__lead,
.statement.statement--stack p[data-split].statement__lead {
  font-family: var(--serif) !important;
  font-weight: 300 !important;
  font-size: clamp(22px, 2.8vw, 38px) !important;
  line-height: 1.22 !important;
  letter-spacing: -0.015em;
}

.statement--stack .statement__support {
  margin-top: 0;
  opacity: 0.78;
}

.statement h2.eyebrow.t-headline {
  font-family: var(--serif);
  font-weight: 300;
  font-size: clamp(33px, 4.1vw, 62px);
  line-height: 1.04;
  letter-spacing: -0.015em;
  text-transform: none;
  margin-bottom: 30px !important;
}

/* Mobile menu entries */
.mobile-nav__group > button,
.mobile-nav__group > a {
  font-family: var(--serif);
  font-size: 26px;
  font-weight: 400;
  letter-spacing: 0;
}

/* ---------- Labels: small, widely tracked, uppercase ---------- */

.eyebrow {
  font-family: var(--sans);
  font-size: var(--fs-label);
  font-weight: 500;
  letter-spacing: var(--label-track);
  line-height: 1.5;
  text-transform: uppercase;
}

.page-header .eyebrow {
  margin-bottom: 22px;
}

.nav__link {
  font-size: var(--fs-nav);
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  padding: 10px 11px;
}

.nav__link[aria-current="page"] {
  font-weight: 600;
}

.btn {
  font-family: var(--sans);
  font-size: var(--fs-btn);
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  padding: 13px 30px;
}

.btn--outline {
  font-size: 10.6px;
}

.btn--sm {
  font-size: 10.1px;
  letter-spacing: 0.2em;
}

.btn .btn__label [lang="ja"],
.btn__label [lang="ja"] {
  letter-spacing: 0.1em;
  font-size: 1.1em;
}

.mega .btn,
.mobile-nav .btn {
  font-size: 10.1px;
  letter-spacing: 0.22em;
}

.footer__info h3.eyebrow,
.footer .eyebrow {
  font-size: 10.1px;
  letter-spacing: 0.26em;
}

.brand__sub {
  letter-spacing: 0.46em;
}

.pill,
.tabs a,
.tabs button {
  letter-spacing: 0.01em;
}

/* ---------- Hours as a printed program ---------- */

.info-card {
  min-width: 0;
  padding: 34px 26px 36px;
  display: flex;
  flex-direction: column;
}

.info-card .eyebrow {
  font-size: 10px;
  letter-spacing: 0.3em;
  color: #5b5b5b;
  margin-bottom: 18px;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(17, 17, 17, 0.16);
}

.info-card p {
  font-family: var(--sans);
  font-size: 13px;
  line-height: 1.6;
  color: #333;
}

.info-card p.t-time {
  font-family: var(--serif);
  color: var(--ink);
}

.t-time .t-main,
.t-time .t-sub {
  display: block;
}

.t-time .t-main {
  font-size: clamp(28px, 2.5vw, 38px);
  font-weight: 300;
  line-height: 1.08;
  letter-spacing: -0.02em;
  font-variant-numeric: lining-nums tabular-nums;
}

.t-time .t-main--short {
  font-size: clamp(36px, 3.4vw, 52px);
}

.t-time .t-sub {
  margin-top: 16px;
  font-family: var(--sans);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  line-height: 1.8;
  color: #4a4a4a;
}

.t-time .t-pair {
  display: block;
  white-space: nowrap;
}

.t-time .t-run {
  white-space: nowrap;
}

.t-time .t-num {
  font-variant-numeric: lining-nums tabular-nums;
}

.t-time .t-main .t-ap {
  font-family: var(--sans);
  font-size: 0.26em;
  font-weight: 500;
  letter-spacing: 0.2em;
  margin: 0 0.45em 0 0.3em;
  vertical-align: 0.9em;
  white-space: nowrap;
}

.t-time .t-sub .t-num {
  font-family: var(--serif);
  font-size: 1.9em;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
  vertical-align: -0.06em;
  margin-left: 0.15em;
}

.t-time .t-sub .t-ap {
  letter-spacing: 0.22em;
  margin-left: 0.3em;
}

.t-time .t-dash {
  font-weight: 300;
  margin: 0 0.1em;
}

.t-time .t-lead {
  display: block;
  font-family: var(--sans);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  line-height: 1;
  margin-bottom: 12px;
  color: #4a4a4a;
}

/* ---------- Vertical Japanese (decorative, desktop only) ---------- */

.t-vert-host {
  position: relative;
}

.t-vert {
  display: none;
}

@media (min-width: 1100px) {
  .t-vert {
    display: block;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    writing-mode: vertical-rl;
    text-orientation: upright;
    font-family: var(--jp-serif);
    font-weight: 300;
    font-size: clamp(48px, 5.2vw, 83px);
    line-height: 1;
    letter-spacing: 0.28em;
    color: currentColor;
    opacity: 0.22;
    pointer-events: none;
    user-select: none;
    z-index: 0;
  }

  .t-vert--right {
    right: clamp(24px, 5vw, 96px);
  }

  .t-vert--left {
    left: clamp(24px, 5vw, 96px);
  }
}

/* Keep the 4-up grid even (cards never stretch to their content) on wide screens */
@media (min-width: 1025px) {
  .info-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* ---------- Small screens ---------- */

@media (max-width: 767px) {
  .eyebrow {
    font-size: 10px;
    letter-spacing: 0.24em;
  }

  .btn {
    padding: 13px 24px;
    min-width: 0;
  }

  .info-card .eyebrow {
    font-size: 10px;
  }

  .t-time .t-main {
    font-size: clamp(34px, 10.3vw, 45px);
  }

  .statement h2.eyebrow.t-headline {
    font-size: clamp(31px, 8.6vw, 45px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .t-vert {
    transition: none;
  }
}

/* Merge pass: the large statement lines should read as headlines */
.statement p[data-split] {
  font-family: var(--serif, "Outfit", system-ui, sans-serif);
  font-weight: 300;
  font-size: clamp(29px, 3.6vw, 55px);
  line-height: 1.12;
  letter-spacing: -0.01em;
}
