/*
Theme Name: NEXT FACTORY Theme
Theme URI: https://next-factory.jp/
Author: NEXT FACTORY
Description: NEXT FACTORYブランドサイト用の軽量な商品カタログテーマです。
Version: 2.3.0
Requires at least: 6.5
Requires PHP: 8.1
Text Domain: next-factory
*/

:root {
  --nf-teal: #398b8b;
  --nf-teal-dark: #286f70;
  --nf-coral: #ff7f82;
  --nf-coral-dark: #ec666b;
  --nf-cream: #fffaf3;
  --nf-ink: #222222;
  --nf-muted: #676767;
  --nf-line: #ece9e4;
  --nf-surface: #ffffff;
  --nf-radius: 22px;
  --nf-shadow: 0 12px 34px rgba(45, 55, 55, .08);
  --nf-width: 1180px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--nf-ink);
  background: #fff;
  font-family: -apple-system, BlinkMacSystemFont, "Noto Sans JP", "Yu Gothic", "Hiragino Kaku Gothic ProN", sans-serif;
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
a:hover { color: var(--nf-coral-dark); }
img { display: block; max-width: 100%; height: auto; }
button, input, textarea, select { font: inherit; }
.nf-container { width: min(calc(100% - 40px), var(--nf-width)); margin-inline: auto; }
.nf-section { padding: 64px 0; }
.nf-section--soft { background: linear-gradient(180deg, #fff 0%, #fffaf6 100%); }
.nf-section-title { margin: 0 0 28px; font-size: clamp(1.45rem, 2vw, 2rem); letter-spacing: .03em; }
.nf-section-title::after { content: ""; display: inline-block; width: 36px; height: 4px; margin-left: 10px; border-radius: 99px; background: var(--nf-coral); vertical-align: middle; }
.nf-button { display: inline-flex; align-items: center; justify-content: center; gap: .7rem; min-height: 48px; padding: 0 24px; border: 0; border-radius: 999px; color: #fff; background: var(--nf-coral); font-weight: 700; box-shadow: 0 8px 20px rgba(255,127,130,.22); transition: transform .2s, background .2s; }
.nf-button:hover { color: #fff; background: var(--nf-coral-dark); transform: translateY(-2px); }
.nf-button--outline { color: var(--nf-teal-dark); background: #fff; border: 1px solid var(--nf-teal); box-shadow: none; }
.nf-button--outline:hover { color: #fff; background: var(--nf-teal); }
.nf-button--disabled { color: #777; background: #e8e8e8; box-shadow: none; cursor: not-allowed; }
.screen-reader-text { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.skip-link:focus { position: fixed; z-index: 9999; top: 8px; left: 8px; width: auto; height: auto; padding: 8px 14px; clip: auto; background: #fff; }

/* Header */
.nf-site-header { position: sticky; z-index: 1000; top: 0; background: rgba(255,255,255,.96); border-bottom: 1px solid rgba(0,0,0,.05); backdrop-filter: blur(12px); }
.nf-header-inner { display: grid; grid-template-columns: minmax(210px, 310px) 1fr auto; align-items: center; gap: 24px; min-height: 82px; }
.nf-brand img { width: min(100%, 300px); max-height: 64px; object-fit: contain; object-position: left center; }
.nf-nav ul { display: flex; justify-content: center; align-items: center; gap: clamp(18px, 2.5vw, 38px); margin: 0; padding: 0; list-style: none; }
.nf-nav a { font-size: .94rem; font-weight: 700; white-space: nowrap; }
.nf-header-actions { display: flex; align-items: center; gap: 10px; }
.nf-icon-button { display: grid; width: 44px; height: 44px; place-items: center; border-radius: 50%; background: #f7f5f2; }
.nf-menu-toggle { display: none; border: 0; background: transparent; padding: 8px; }
.nf-menu-toggle span { display: block; width: 25px; height: 2px; margin: 5px 0; background: #222; }

/* Hero */
.nf-hero { position: relative; min-height: 510px; overflow: hidden; background: #f7f2e9; }
.nf-hero-media { position: absolute; inset: 0; }
.nf-hero-media img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.nf-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(255,255,255,.98) 0%, rgba(255,255,255,.91) 24%, rgba(255,255,255,.12) 53%, rgba(255,255,255,0) 100%); }
.nf-hero-inner { position: relative; z-index: 2; display: flex; align-items: center; min-height: 510px; }
.nf-hero-copy { width: min(560px, 47%); padding: 40px 0; }
.nf-hero-title { margin: 0 0 20px; font-family: "Yu Mincho", "Hiragino Mincho ProN", serif; font-size: clamp(2rem, 3.1vw, 3rem); line-height: 1.45; letter-spacing: .05em; word-break: keep-all; overflow-wrap: normal; }
.nf-hero-text { margin: 0 0 30px; color: #333; font-weight: 600; }

/* Category highlights */
.nf-highlight-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.nf-highlight-card { position: relative; min-height: 245px; padding: 30px; overflow: hidden; border-radius: var(--nf-radius); background: #edf9f8; }
.nf-highlight-card.has-image .nf-highlight-content { width: 62%; }
.nf-highlight-card:not(.has-image) .nf-highlight-content { width: 100%; max-width: 290px; }
.nf-highlight-card:nth-child(2) { background: #fff2ef; }
.nf-highlight-card:nth-child(3) { background: #fff7e6; }
.nf-highlight-card::before, .nf-highlight-card::after { content: ""; position: absolute; border-radius: 50%; opacity: .42; }
.nf-highlight-card::before { right: -45px; bottom: -55px; width: 190px; height: 190px; background: rgba(57,139,139,.18); }
.nf-highlight-card::after { right: 55px; top: 25px; width: 65px; height: 65px; background: rgba(255,255,255,.66); }
.nf-highlight-card:nth-child(2)::before { background: rgba(255,127,130,.20); }
.nf-highlight-card:nth-child(3)::before { background: rgba(247,181,66,.25); }
.nf-highlight-content { position: relative; z-index: 2; }
.nf-highlight-title { margin: 0 0 8px; font-size: 1.35rem; }
.nf-highlight-text { margin: 0 0 22px; font-size: .92rem; }
.nf-highlight-product { position: absolute; z-index: 2; right: 15px; bottom: 10px; width: 40%; height: 78%; object-fit: contain; filter: drop-shadow(0 10px 14px rgba(0,0,0,.10)); }

/* Product cards */
.nf-product-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
.nf-product-card { display: flex; flex-direction: column; min-width: 0; overflow: hidden; border: 1px solid var(--nf-line); border-radius: 18px; background: #fff; box-shadow: 0 6px 22px rgba(0,0,0,.035); transition: transform .2s, box-shadow .2s; }
.nf-product-card:hover { transform: translateY(-4px); box-shadow: var(--nf-shadow); }
.nf-product-card__image { position: relative; aspect-ratio: 1 / 1; overflow: hidden; background: #fafafa; }
.nf-product-card__image img { width: 100%; height: 100%; object-fit: contain; padding: 12px; transition: transform .25s; }
.nf-product-card:hover .nf-product-card__image img { transform: scale(1.025); }
.nf-product-badge { position: absolute; top: 12px; left: 12px; z-index: 2; padding: 4px 10px; border-radius: 99px; color: #fff; background: var(--nf-coral); font-size: .72rem; font-weight: 800; }
.nf-product-card__body { display: flex; flex: 1; flex-direction: column; padding: 16px; }
.nf-product-card__title { margin: 0 0 8px; font-size: 1rem; line-height: 1.55; }
.nf-product-card__excerpt { margin: 0 0 12px; color: var(--nf-muted); font-size: .86rem; }
.nf-product-card__meta { margin-top: auto; }
.nf-product-tag { display: inline-block; padding: 3px 9px; border-radius: 99px; background: #f5f2ed; color: #666; font-size: .72rem; }
.nf-empty-state { padding: 40px; border: 1px dashed #d8d3cc; border-radius: var(--nf-radius); color: #666; text-align: center; background: #fff; }

/* Category icon strip */
.nf-category-strip { padding: 30px 20px; border-radius: var(--nf-radius); background: #fffaf6; }
.nf-category-icons { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; }
.nf-category-icon { display: flex; flex-direction: column; align-items: center; gap: 9px; min-width: 0; padding: 12px 4px; text-align: center; font-size: .82rem; font-weight: 700; }
.nf-category-icon svg { width: 54px; height: 54px; padding: 11px; border-radius: 50%; background: #fff; color: var(--nf-teal); stroke: currentColor; box-shadow: 0 5px 14px rgba(0,0,0,.04); }

/* Brand */
.nf-brand-panel { display: grid; grid-template-columns: 220px 1fr 240px; align-items: center; gap: 32px; padding: 32px; border-radius: var(--nf-radius); background: linear-gradient(90deg,#f9f4ec,#fff); }
.nf-brand-panel__photo { height: 175px; border-radius: 18px; background: url('assets/images/hero.webp') center/cover no-repeat; }
.nf-brand-panel__logo { max-width: 220px; margin-inline: auto; }
.nf-brand-panel h2 { margin-top: 0; }

/* Mall links */
.nf-mall-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.nf-mall-link { display: flex; align-items: center; justify-content: space-between; min-height: 74px; padding: 0 28px; border: 1px solid #ddd9d2; border-radius: 15px; background: #fff; font-size: 1.05rem; font-weight: 700; }
.nf-mall-link span:first-child { font-size: 1.4rem; }

/* Archive */
.nf-page-hero { padding: 60px 0 40px; background: linear-gradient(135deg,#eff9f8,#fff7f2); }
.nf-page-hero h1 { margin: 0 0 10px; font-size: clamp(2rem,4vw,3.2rem); }
.nf-filter-list { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 30px; padding: 0; list-style: none; }
.nf-filter-list a { display: inline-block; padding: 8px 15px; border: 1px solid #ddd; border-radius: 99px; background: #fff; font-size: .88rem; }
.nf-filter-list a:hover, .nf-filter-list .is-current { color: #fff; border-color: var(--nf-teal); background: var(--nf-teal); }
.nav-links { display: flex; justify-content: center; gap: 8px; margin-top: 36px; }
.nav-links .page-numbers { display: grid; min-width: 40px; height: 40px; padding: 0 10px; place-items: center; border: 1px solid #ddd; border-radius: 10px; }
.nav-links .current { color: #fff; border-color: var(--nf-teal); background: var(--nf-teal); }

/* Single product */
.nf-breadcrumb { padding: 20px 0; color: #777; font-size: .82rem; }
.nf-product-main { display: grid; grid-template-columns: minmax(0, 1fr) minmax(360px, .82fr); gap: 60px; align-items: start; }
.nf-product-visual { position: sticky; top: 110px; padding: 24px; border-radius: var(--nf-radius); background: #fafafa; }
.nf-product-visual img { width: 100%; max-height: 620px; object-fit: contain; }
.nf-product-detail h1 { margin: 0 0 18px; font-size: clamp(1.8rem,3.5vw,2.8rem); line-height: 1.45; }
.nf-product-lead { color: #555; font-size: 1.02rem; }
.nf-spec-table { width: 100%; margin: 30px 0; border-collapse: collapse; }
.nf-spec-table th, .nf-spec-table td { padding: 13px 14px; border-bottom: 1px solid var(--nf-line); text-align: left; vertical-align: top; }
.nf-spec-table th { width: 30%; color: #555; background: #faf8f5; }
.nf-buy-box { padding: 22px; border-radius: 18px; background: #fff8f3; }
.nf-buy-buttons { display: grid; gap: 12px; }
.nf-buy-buttons .nf-button { width: 100%; }
.nf-content { margin-top: 50px; }
.nf-content > * { max-width: 900px; }

/* Pages */
.nf-page-content { max-width: 900px; padding: 60px 0 90px; }
.nf-page-content h2 { margin-top: 2.2em; }

/* Footer */
.nf-site-footer { margin-top: 70px; border-top: 1px solid #efebe6; background: #fbf9f6; }
.nf-footer-main { display: grid; grid-template-columns: 280px 1fr; gap: 60px; align-items: center; padding: 38px 0; }
.nf-footer-logo img { max-width: 250px; }
.nf-footer-nav { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 16px 28px; font-size: .82rem; }
.nf-footer-bottom { padding: 16px 0; border-top: 1px solid #ebe6df; color: #777; font-size: .76rem; text-align: center; }

@media (max-width: 1180px) and (min-width: 981px) {
  .nf-hero-copy { width: min(500px, 46%); }
  .nf-hero-title { font-size: clamp(2rem, 3vw, 2.55rem); letter-spacing: .03em; }
  .nf-hero-text { max-width: 460px; }
}

@media (max-width: 980px) {
  .nf-header-inner { grid-template-columns: 1fr auto; }
  .nf-menu-toggle { display: block; }
  .nf-nav { display: none; grid-column: 1 / -1; padding-bottom: 18px; }
  .nf-nav.is-open { display: block; }
  .nf-nav ul { flex-direction: column; align-items: stretch; gap: 0; }
  .nf-nav a { display: block; padding: 11px 0; border-bottom: 1px solid #eee; }
  .nf-highlight-grid { grid-template-columns: 1fr; }
  .nf-highlight-card { min-height: 220px; }
  .nf-product-grid { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .nf-category-icons { grid-template-columns: repeat(4,1fr); }
  .nf-brand-panel { grid-template-columns: 180px 1fr; }
  .nf-brand-panel__logo { display: none; }
  .nf-product-main { grid-template-columns: 1fr; gap: 32px; }
  .nf-product-visual { position: static; }
}

@media (max-width: 720px) {
  .nf-feature-card { grid-template-columns: 1fr; }
  .nf-feature-card--reverse .nf-feature-card__image { order: 0; }
  .nf-feature-card__image { min-height: 280px; padding: 20px; }
  .nf-feature-card__image img { max-height: 260px; }
  .nf-feature-card__body { padding: 28px 22px 32px; }
  .nf-feature-catalog { align-items: stretch; flex-direction: column; padding: 30px 22px; }
  .nf-container { width: min(calc(100% - 28px), var(--nf-width)); }
  .nf-section { padding: 46px 0; }
  .nf-header-inner { min-height: 68px; }
  .nf-brand img { max-width: 230px; max-height: 50px; }
  .nf-header-actions .nf-icon-button { display: none; }
  .nf-hero { min-height: auto; padding-top: 0; background: #fff; }
  .nf-hero-media { position: relative; height: 42vw; min-height: 240px; max-height: 360px; }
  .nf-hero::after { display: none; }
  .nf-hero-inner { min-height: auto; }
  .nf-hero-copy { width: 100%; padding: 30px 0 38px; }
  .nf-hero-title { font-size: 2rem; word-break: normal; overflow-wrap: anywhere; }
  .nf-highlight-content { width: 64%; }
  .nf-product-grid { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; }
  .nf-product-card__body { padding: 12px; }
  .nf-product-card__excerpt { display: none; }
  .nf-category-icons { grid-template-columns: repeat(3,1fr); }
  .nf-brand-panel { grid-template-columns: 1fr; padding: 22px; }
  .nf-brand-panel__photo { height: 200px; }
  .nf-mall-grid { grid-template-columns: 1fr; }
  .nf-footer-main { grid-template-columns: 1fr; gap: 22px; }
  .nf-footer-nav { justify-content: flex-start; }
}

@media (max-width: 420px) {
  .nf-brand img { max-width: 200px; }
  .nf-highlight-card { min-height: 210px; padding: 24px; }
  .nf-highlight-content { width: 72%; }
  .nf-highlight-product { width: 38%; }
  .nf-category-icons { grid-template-columns: repeat(2,1fr); }
}


/* Product variations */
.nf-product-variation-badge {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 2;
  padding: 4px 10px;
  border-radius: 99px;
  color: var(--nf-teal-dark);
  background: rgba(255,255,255,.94);
  border: 1px solid rgba(57,139,139,.28);
  font-size: .72rem;
  font-weight: 800;
  box-shadow: 0 3px 10px rgba(0,0,0,.05);
}
.nf-product-visual__main {
  display: grid;
  place-items: center;
  min-height: 430px;
}
.nf-product-visual__main img {
  width: 100%;
  max-height: 620px;
  object-fit: contain;
}
.nf-variation-picker { margin: 26px 0 30px; }
.nf-variation-dimension { min-width: 0; margin: 0; padding: 0; border: 0; }
.nf-variation-dimension + .nf-variation-dimension { margin-top: 20px; }
.nf-variation-picker__title { margin: 0 0 12px; padding: 0; font-size: 1rem; font-weight: 700; }
.nf-variation-list { display: flex; flex-wrap: wrap; gap: 10px; }
.nf-variation-list--sizes { gap: 8px; }
.nf-variation-button {
  display: flex;
  align-items: center;
  gap: 9px;
  min-height: 58px;
  padding: 7px 13px 7px 8px;
  border: 1px solid #d8d6d1;
  border-radius: 12px;
  background: #fff;
  color: var(--nf-ink);
  cursor: pointer;
  font: inherit;
  font-weight: 700;
  transition: border-color .18s, box-shadow .18s, transform .18s;
}
.nf-variation-button--size {
  min-width: 68px;
  min-height: 46px;
  justify-content: center;
  padding: 8px 16px;
}
.nf-variation-button--color { min-width: 104px; }
.nf-variation-button:hover { transform: translateY(-1px); border-color: var(--nf-teal); }
.nf-variation-button.is-active {
  border-color: var(--nf-teal);
  box-shadow: 0 0 0 2px rgba(57,139,139,.14);
}
.nf-variation-button[disabled] { opacity: .45; cursor: not-allowed; transform: none; }
.nf-variation-button img {
  width: 44px;
  height: 44px;
  padding: 2px;
  border-radius: 8px;
  object-fit: contain;
  background: #fafafa;
}
.nf-variation-status { margin-top: 10px; color: #777; font-size: .82rem; }
.nf-spec-value--dynamic { font-weight: 700; }
.nf-buy-buttons a[hidden], .nf-buy-buttons span[hidden] { display: none !important; }

@media (max-width: 720px) {
  .nf-product-visual__main { min-height: 280px; }
  .nf-variation-button { min-height: 52px; padding-right: 10px; font-size: .88rem; }
  .nf-variation-button img { width: 38px; height: 38px; }
}


/* Catalog archive v1.6 */
.nf-catalog-section { padding-top: 50px; }
.nf-page-hero__eyebrow { margin: 0 0 5px; color: var(--nf-teal-dark); font-size: .82rem; font-weight: 800; letter-spacing: .08em; }
.nf-page-hero__description > :first-child { margin-top: 0; }
.nf-page-hero__description > :last-child { margin-bottom: 0; }
.nf-catalog-toolbar { margin-bottom: 22px; }
.nf-catalog-search { display: grid; grid-template-columns: minmax(260px,1fr) 210px auto auto; gap: 10px; align-items: center; margin-bottom: 24px; padding: 16px; border: 1px solid var(--nf-line); border-radius: 18px; background: #fffaf6; }
.nf-catalog-search__field { position: relative; }
.nf-catalog-search__field svg { position: absolute; top: 50%; left: 15px; width: 20px; height: 20px; transform: translateY(-50%); stroke: var(--nf-muted); stroke-width: 1.8; }
.nf-catalog-search input[type="search"], .nf-catalog-search select { width: 100%; height: 48px; border: 1px solid #ddd9d2; border-radius: 12px; color: var(--nf-ink); background: #fff; }
.nf-catalog-search input[type="search"] { padding: 0 15px 0 45px; }
.nf-catalog-search select { padding: 0 38px 0 14px; }
.nf-catalog-search input:focus, .nf-catalog-search select:focus { outline: 2px solid rgba(57,139,139,.18); border-color: var(--nf-teal); }
.nf-catalog-search__submit { min-height: 48px; white-space: nowrap; }
.nf-catalog-reset { color: var(--nf-teal-dark); font-size: .82rem; font-weight: 700; white-space: nowrap; }
.nf-catalog-toolbar .nf-filter-list { margin-bottom: 0; }
.nf-catalog-results-bar { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin: 0 0 18px; color: var(--nf-muted); font-size: .88rem; }
.nf-catalog-results-bar p { margin: 0; }
.nf-catalog-results-bar strong { color: var(--nf-ink); }
.nf-catalog-results-bar__keyword { padding: 4px 10px; border-radius: 99px; color: var(--nf-teal-dark); background: var(--nf-pale-teal, #e7f5f4); }
.nf-catalog-grid { align-items: stretch; }
.nf-catalog-grid .nf-product-card__title { display: -webkit-box; min-height: 4.65em; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.nf-catalog-grid .nf-product-card__excerpt { display: -webkit-box; min-height: 3.15em; overflow: hidden; line-height: 1.58; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.nf-catalog-grid .nf-product-card__meta { min-height: 24px; }
.nf-catalog-section .nav-links { align-items: center; margin-top: 42px; }
.nf-catalog-section .nav-links .prev, .nf-catalog-section .nav-links .next { padding-inline: 16px; }

@media (max-width: 980px) {
  .nf-catalog-search { grid-template-columns: minmax(240px,1fr) 190px auto; }
  .nf-catalog-reset { grid-column: 1 / -1; justify-self: end; }
}

@media (max-width: 720px) {
  .nf-catalog-section { padding-top: 34px; }
  .nf-catalog-search { grid-template-columns: 1fr; padding: 13px; }
  .nf-catalog-search__submit { width: 100%; }
  .nf-catalog-reset { grid-column: auto; justify-self: center; padding: 4px 0; }
  .nf-filter-list { flex-wrap: nowrap; margin-inline: -14px; padding: 0 14px 8px; overflow-x: auto; scrollbar-width: thin; }
  .nf-filter-list li { flex: 0 0 auto; }
  .nf-catalog-results-bar { align-items: flex-start; flex-direction: column; gap: 6px; }
  .nf-catalog-grid .nf-product-card__title { min-height: 4.5em; font-size: .92rem; line-height: 1.5; }
  .nf-catalog-grid .nf-product-card__excerpt { display: none; min-height: 0; }
  .nf-catalog-section .nav-links { flex-wrap: wrap; }
  .nf-catalog-section .nav-links .page-numbers { min-width: 38px; height: 38px; }
}


/* Managed pages and contact form v1.7 */
.nf-page-content:has(.nf-feature-page),
.nf-page-content:has(.nf-brand-page),
.nf-page-content:has(.nf-company-page),
.nf-page-content:has(.nf-faq-page),
.nf-page-content:has(.nf-contact-page),
.nf-page-content:has(.nf-privacy-page) { max-width: 1120px; }
.nf-page-kicker { margin: 0 0 10px; color: var(--nf-coral); font-size: .82rem; font-weight: 800; letter-spacing: .13em; }
.nf-page-lead { margin: 0 0 34px; color: var(--nf-muted); font-size: 1.05rem; }
.nf-brand-intro { max-width: 820px; margin: 0 auto 56px; text-align: center; }
.nf-brand-intro h2 { margin: 0 0 22px; font-size: clamp(2rem, 4vw, 3.35rem); }
.nf-brand-intro p { font-size: 1.05rem; line-height: 2; }
.nf-brand-values { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 20px; margin-bottom: 62px; }
.nf-brand-values article { padding: 30px; border: 1px solid var(--nf-line); border-radius: 22px; background: #fff; box-shadow: 0 10px 28px rgba(0,0,0,.035); }
.nf-brand-values article:nth-child(1) { background: #eef9f8; }
.nf-brand-values article:nth-child(2) { background: #fff3f2; }
.nf-brand-values article:nth-child(3) { background: #fff8e9; }
.nf-brand-values span { display: inline-grid; place-items: center; width: 42px; height: 42px; margin-bottom: 16px; border-radius: 50%; color: #fff; background: var(--nf-teal); font-weight: 800; }
.nf-brand-values h3 { margin: 0 0 10px; }
.nf-brand-values p { margin: 0; color: var(--nf-muted); }
.nf-brand-products { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1px; overflow: hidden; margin-bottom: 62px; border: 1px solid var(--nf-line); border-radius: 22px; background: var(--nf-line); }
.nf-brand-products > div { padding: 30px; background: #fff; }
.nf-brand-products h3 { margin: 0 0 12px; }
.nf-brand-products p { margin: 0; color: var(--nf-muted); }
.nf-brand-message { padding: 46px; border-radius: 26px; background: linear-gradient(120deg,#edf9f8,#fff5ee); text-align: center; }
.nf-brand-message h2 { margin: 0 0 12px; }
.nf-brand-message p { max-width: 720px; margin: 0 auto 26px; }
.nf-company-table { overflow: hidden; border: 1px solid var(--nf-line); border-radius: 18px; background: #fff; }
.nf-company-table > div { display: grid; grid-template-columns: 220px 1fr; border-bottom: 1px solid var(--nf-line); }
.nf-company-table > div:last-child { border-bottom: 0; }
.nf-company-table [role="rowheader"] { padding: 20px 24px; background: #faf8f5; font-weight: 700; }
.nf-company-table [role="cell"] { padding: 20px 24px; }
.nf-company-note { margin-top: 26px; padding: 18px 22px; border-radius: 14px; color: var(--nf-muted); background: #f8f7f4; }
.nf-faq-list { border-top: 1px solid var(--nf-line); }
.nf-faq-list details { border-bottom: 1px solid var(--nf-line); }
.nf-faq-list summary { position: relative; padding: 22px 50px 22px 4px; cursor: pointer; font-weight: 700; list-style: none; }
.nf-faq-list summary::-webkit-details-marker { display: none; }
.nf-faq-list summary::after { content: "+"; position: absolute; top: 17px; right: 8px; width: 32px; height: 32px; border-radius: 50%; color: var(--nf-teal-dark); background: #eaf6f5; text-align: center; font-size: 1.25rem; line-height: 30px; }
.nf-faq-list details[open] summary::after { content: "−"; }
.nf-faq-list details > div { padding: 0 46px 22px 4px; color: var(--nf-muted); }
.nf-faq-contact { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-top: 36px; padding: 24px; border-radius: 18px; background: #fff6f0; }
.nf-faq-contact p { margin: 0; }


/* Feature page v2.0 */
.nf-feature-intro { max-width: 820px; margin: 0 auto 54px; text-align: center; }
.nf-feature-intro h2 { margin: 0 0 18px; font-size: clamp(2rem,4vw,3.2rem); }
.nf-feature-intro p:last-child { margin: 0; color: var(--nf-muted); font-size: 1.05rem; }
.nf-feature-list { display: grid; gap: 34px; }
.nf-feature-card { display: grid; grid-template-columns: minmax(0,.9fr) minmax(0,1.1fr); overflow: hidden; border: 1px solid var(--nf-line); border-radius: 26px; background: #fff; box-shadow: 0 12px 34px rgba(45,55,55,.055); }
.nf-feature-card--reverse .nf-feature-card__image { order: 2; }
.nf-feature-card__image { display: grid; place-items: center; min-height: 430px; padding: 28px; background: linear-gradient(145deg,#edf8f7,#fff8f1); }
.nf-feature-card__image img { width: 100%; height: 100%; max-height: 390px; object-fit: contain; }
.nf-feature-image-placeholder { display: grid; place-items: center; width: 100%; min-height: 300px; border-radius: 18px; color: var(--nf-teal-dark); background: rgba(255,255,255,.8); font-weight: 800; letter-spacing: .08em; }
.nf-feature-card__body { padding: 48px; align-self: center; }
.nf-feature-card__label { margin: 0 0 12px; color: var(--nf-coral-dark); font-size: .82rem; font-weight: 800; letter-spacing: .14em; }
.nf-feature-card h2 { margin: 0 0 18px; font-size: clamp(1.65rem,3vw,2.35rem); line-height: 1.45; }
.nf-feature-card__body > p:not(.nf-feature-card__label) { color: var(--nf-muted); }
.nf-feature-card ul { margin: 22px 0 28px; padding-left: 1.3em; }
.nf-feature-card li { margin: 8px 0; }
.nf-feature-catalog { display: flex; align-items: center; justify-content: space-between; gap: 32px; margin-top: 54px; padding: 38px 42px; border-radius: 24px; background: linear-gradient(120deg,#edf9f8,#fff5ee); }
.nf-feature-catalog h2 { margin: 4px 0 8px; }
.nf-feature-catalog p { margin-bottom: 0; }

.nf-privacy-page { max-width: 860px; margin: 0 auto; }
.nf-privacy-page section { margin: 0 0 30px; padding: 26px 28px; border: 1px solid var(--nf-line); border-radius: 18px; background: #fff; }
.nf-privacy-page h2 { margin: 0 0 12px; font-size: 1.2rem; }
.nf-privacy-page p { margin: 0; }
.nf-privacy-page a { color: var(--nf-teal-dark); text-decoration: underline; }
.nf-privacy-updated { color: var(--nf-muted); text-align: right; }

.nf-contact-page { max-width: 820px; margin: 0 auto; }
.nf-contact-intro { margin-bottom: 26px; }
.nf-contact-steps { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; margin: 24px 0 0; padding: 0; counter-reset: step; list-style: none; }
.nf-contact-steps li { padding: 11px 8px; border-radius: 99px; color: var(--nf-muted); background: #f1efeb; text-align: center; font-size: .84rem; font-weight: 700; }
.nf-contact-steps li.is-current { color: #fff; background: var(--nf-teal); }
.nf-contact-form { padding: 30px; border: 1px solid var(--nf-line); border-radius: 22px; background: #fff; box-shadow: 0 10px 28px rgba(0,0,0,.035); }
.nf-form-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 20px; }
.nf-form-field--wide { grid-column: 1 / -1; }
.nf-form-field label { display: block; margin-bottom: 8px; font-weight: 700; }
.nf-form-field label span { color: var(--nf-coral); font-size: .78rem; }
.nf-form-field input,.nf-form-field select,.nf-form-field textarea { width: 100%; border: 1px solid #d9d5ce; border-radius: 11px; background: #fff; color: var(--nf-ink); font: inherit; }
.nf-form-field input,.nf-form-field select { height: 50px; padding: 0 14px; }
.nf-form-field textarea { padding: 14px; resize: vertical; }
.nf-form-field input:focus,.nf-form-field select:focus,.nf-form-field textarea:focus { outline: 3px solid rgba(57,139,139,.14); border-color: var(--nf-teal); }
.nf-form-field > p { margin: 8px 0 0; color: var(--nf-muted); font-size: .84rem; }
.nf-code-input { max-width: 260px; font-size: 1.5rem !important; font-weight: 800; letter-spacing: .35em; text-align: center; }
.nf-contact-sent,.nf-contact-verified { margin-bottom: 22px; padding: 14px 18px; border-radius: 12px; background: #edf8f7; }
.nf-contact-notice { margin: 0 0 20px; padding: 15px 18px; border-radius: 12px; font-weight: 700; }
.nf-contact-notice--success { color: #17635f; background: #e6f7f4; }
.nf-contact-notice--error { color: #8a2c2c; background: #fff0ef; }
.nf-contact-notice--info { background: #f3f3f1; }
.nf-privacy-check { display: flex; align-items: flex-start; gap: 9px; margin: 22px 0; font-size: .92rem; }
.nf-privacy-check input { margin-top: .3em; }
.nf-contact-guidance { margin: 20px 0 0; color: var(--nf-muted); font-size: .82rem; }
.nf-contact-complete { padding: 48px 30px; border-radius: 22px; background: #edf8f7; text-align: center; }
.nf-contact-complete h2 { margin-top: 0; }
.nf-honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
body.nf-menu-open { overflow: hidden; }
.nf-menu-toggle span:not(.screen-reader-text) { transition: transform .2s, opacity .2s; }
.nf-menu-toggle.is-open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nf-menu-toggle.is-open span:nth-child(2) { opacity: 0; }
.nf-menu-toggle.is-open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.nf-filter-list { scrollbar-width: none; }
.nf-filter-list::-webkit-scrollbar { display: none; }

@media (max-width: 720px) {
  .nf-brand-values,.nf-brand-products { grid-template-columns: 1fr; }
  .nf-brand-message { padding: 32px 22px; }
  .nf-company-table > div { grid-template-columns: 1fr; }
  .nf-company-table [role="rowheader"] { padding-bottom: 8px; }
  .nf-company-table [role="cell"] { padding-top: 8px; }
  .nf-faq-contact { align-items: stretch; flex-direction: column; }
  .nf-form-grid { grid-template-columns: 1fr; }
  .nf-form-field--wide { grid-column: auto; }
  .nf-contact-form { padding: 22px 18px; }
  .nf-contact-steps li { font-size: .72rem; }
}


/* Feature articles v2.1 */
.nf-feature-card__image { text-decoration: none; }
.nf-feature-card__body h2 a { color: inherit; text-decoration: none; }
.nf-feature-card__body h2 a:hover { color: var(--nf-teal-dark); }
.nf-feature-article { max-width: 900px; margin: 0 auto; }
.nf-feature-article__header { max-width: 820px; margin: 0 auto 38px; text-align: center; }
.nf-feature-article__header h1 { margin: 10px 0 18px; font-size: clamp(2.15rem,5vw,4rem); line-height: 1.32; }
.nf-feature-article__lead { margin: 0 auto; color: var(--nf-muted); font-size: 1.08rem; line-height: 1.9; }
.nf-feature-article__meta { display: flex; justify-content: center; gap: 12px; flex-wrap: wrap; margin-top: 18px; color: var(--nf-muted); font-size: .9rem; }
.nf-feature-article__visual { overflow: hidden; margin: 0 auto 48px; border-radius: 28px; background: linear-gradient(145deg,#edf8f7,#fff8f1); }
.nf-feature-article__visual img { display: block; width: 100%; max-height: 680px; object-fit: contain; padding: 28px; }
.nf-feature-article__content { max-width: 760px; margin: 0 auto; font-size: 1.04rem; line-height: 2; }
.nf-feature-article__content h2 { margin-top: 2.2em; font-size: clamp(1.5rem,3vw,2rem); }
.nf-feature-article__content h3 { margin-top: 1.8em; }
.nf-feature-article__content ul,
.nf-feature-article__content ol { padding-left: 1.5em; }
.nf-feature-article__cta { margin: 42px auto 0; text-align: center; }
.nf-feature-related { margin-top: 70px; }
.nf-feature-related__title { margin-bottom: 28px; font-size: 1.8rem; }
.nf-feature-back { margin-top: 50px; text-align: center; }

@media (max-width: 720px) {
  .nf-feature-article__header { text-align: left; }
  .nf-feature-article__meta { justify-content: flex-start; }
  .nf-feature-article__visual { margin-bottom: 32px; border-radius: 20px; }
  .nf-feature-article__visual img { padding: 14px; }
  .nf-feature-article__content { font-size: 1rem; }
}


/* Adjustable large headings v2.3
 * The home-page hero title (.nf-hero-title) is intentionally excluded.
 */
body.nf-heading-size-compact .nf-page-hero h1 {
  font-size: clamp(1.75rem, 3.3vw, 2.7rem);
}
body.nf-heading-size-compact .nf-product-detail h1 {
  font-size: clamp(1.65rem, 3vw, 2.35rem);
}
body.nf-heading-size-compact .nf-brand-intro h2,
body.nf-heading-size-compact .nf-feature-intro h2 {
  font-size: clamp(1.75rem, 3.3vw, 2.7rem);
}
body.nf-heading-size-compact .nf-feature-article__header h1 {
  font-size: clamp(1.85rem, 4vw, 3.25rem);
}
body.nf-heading-size-compact .nf-feature-card h2 {
  font-size: clamp(1.5rem, 2.6vw, 2.05rem);
}

body.nf-heading-size-large .nf-page-hero h1 {
  font-size: clamp(2.2rem, 4.5vw, 3.6rem);
}
body.nf-heading-size-large .nf-product-detail h1 {
  font-size: clamp(2rem, 4vw, 3.15rem);
}
body.nf-heading-size-large .nf-brand-intro h2,
body.nf-heading-size-large .nf-feature-intro h2 {
  font-size: clamp(2.2rem, 4.5vw, 3.7rem);
}
body.nf-heading-size-large .nf-feature-article__header h1 {
  font-size: clamp(2.4rem, 5.5vw, 4.4rem);
}
body.nf-heading-size-large .nf-feature-card h2 {
  font-size: clamp(1.8rem, 3.3vw, 2.6rem);
}

@media (max-width: 720px) {
  body.nf-heading-size-compact .nf-page-hero h1 {
    font-size: 1.75rem;
  }
  body.nf-heading-size-compact .nf-product-detail h1 {
    font-size: 1.65rem;
  }
  body.nf-heading-size-compact .nf-brand-intro h2,
  body.nf-heading-size-compact .nf-feature-intro h2 {
    font-size: 1.8rem;
  }
  body.nf-heading-size-compact .nf-feature-article__header h1 {
    font-size: 1.9rem;
  }
}
