/* =============================================================
   ナゴヤ人間 — ルートサイト
   設計：編集メディアとしての品位を、システムフォント＋
   余白＋タイポ階段で実現。装飾を足さず、消す方向に倒す。
   配色：オフホワイト＋ダークグレー＋アクセント1色のみ。
============================================================= */

:root{
  --paper:   #FAFAF7;   /* 純白でなく僅かに暖色 */
  --ink:     #1A1A1A;   /* 純黒は硬すぎるので少し緩める */
  --sub:     #6B6B66;   /* 補助テキスト */
  --line:    #E5E2D8;   /* 罫線・カード境界 */
  --soft:    #F2EFE6;   /* 控えめな塗り */
  --accent:  #DD5E2C;   /* ブランドオレンジ。リンク・タグ・小アクセント限定 */
  --accent-soft: #FBE8DA;

  --space:   clamp(16px, 2vw, 24px);
  --section: clamp(64px, 10vw, 128px);

  --maxw:    1180px;
  --reading: 720px;

  /* タイポ階段：48 / 28 / 18 / 16 */
  --fs-display: clamp(34px, 5.5vw, 52px);
  --fs-h2:      clamp(24px, 3.4vw, 30px);
  --fs-h3:      18px;
  --fs-body:    17px;
  --fs-small:   13px;
}

/* ---------- リセット & ベース ---------- */
*,*::before,*::after{box-sizing:border-box;}
html,body{margin:0;padding:0;}
html{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
  scroll-behavior:smooth;
}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:-apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic ProN",
              "Yu Gothic", "Yu Gothic Medium", "Noto Sans JP", sans-serif;
  font-size:var(--fs-body);
  line-height:1.75;
  letter-spacing:.02em;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}
img,picture,svg{display:block;max-width:100%;height:auto;}
ul,ol{margin:0;padding:0;list-style:none;}
a{color:inherit;text-decoration:none;transition:opacity .2s ease;}
a:hover{opacity:.7;}
a:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:4px;
  border-radius:2px;
}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;}

::selection{background:var(--accent-soft);color:var(--ink);}

.container{
  width:100%;
  max-width:var(--maxw);
  margin-inline:auto;
  padding-inline:clamp(20px, 4vw, 40px);
}

/* ---------- ヘッダー ---------- */
.site-header{
  position:sticky;top:0;z-index:50;
  background:rgba(250,250,247,.85);
  backdrop-filter:saturate(120%) blur(10px);
  -webkit-backdrop-filter:saturate(120%) blur(10px);
  border-bottom:1px solid var(--line);
}
.site-header__inner{
  display:flex;align-items:center;justify-content:space-between;
  height:62px;
}
.logo{
  display:inline-flex;align-items:center;gap:9px;
  font-weight:700;font-size:15px;letter-spacing:.04em;
}
.logo__mark{
  width:18px;height:18px;border-radius:50%;
  background:var(--accent);
  flex-shrink:0;
}
.logo__text{color:var(--ink);}
.site-nav{
  display:flex;gap:clamp(14px, 2.5vw, 28px);
  font-size:14px;font-weight:500;
}
.site-nav a{color:var(--sub);}
.site-nav a:hover{color:var(--ink);opacity:1;}

@media (max-width:560px){
  .site-nav{gap:14px;font-size:12.5px;}
  .site-header__inner{height:58px;}
}

/* ---------- 共通：キッカー（小ラベル） ---------- */
.kicker{
  font-size:11px;font-weight:600;
  letter-spacing:.18em;text-transform:uppercase;
  color:var(--sub);
  margin:0 0 12px;
  font-family:ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;
}

/* ---------- ヒーロー（純テキスト型） ----------
   装飾画像を置かず、文字組で密度と編集メディアの格を作る。
   日本語の見出しが意味で割れるように word-break / overflow-wrap /
   text-wrap を併用し、語の途中で割らせない要素は .nowrap で囲む。 */
.hero{
  padding:clamp(64px, 12vw, 128px) 0 clamp(56px, 10vw, 104px);
}
.hero__container{
  max-width:780px;
  margin-inline:auto;
}
.hero__headline{
  /* 中段の「都市・産業・文化の構造を」（12文字）がモバイルでも1行に
     収まるよう、min を 24px に。clamp下限が小さすぎると視覚インパクトが
     落ちるので、24px はモバイル見出しとしての妥協ラインとした。 */
  font-size:clamp(24px, 5vw, 52px);
  font-weight:600;
  letter-spacing:.015em;
  line-height:1.45;
  margin:0 0 28px;
  word-break:keep-all;
  overflow-wrap:anywhere;
  text-wrap:pretty;
}
.hero__lede{
  font-size:clamp(15px, 1.6vw, 18px);
  line-height:1.9;
  color:var(--ink);
  max-width:32em;
  margin:0 0 32px;
  word-break:keep-all;
  overflow-wrap:anywhere;
}
.hero__rule{
  border:0;
  border-top:1px solid var(--line);
  margin:0 0 24px;
  max-width:32em;
}
.hero__channels{
  display:flex;flex-wrap:wrap;
  gap:24px;
  margin:0;
  font-size:15px;
}
.nowrap{
  display:inline-block;
}

@media (max-width:560px){
  .hero{padding-top:clamp(48px, 14vw, 80px);padding-bottom:64px;}
  .hero__headline{line-height:1.5;letter-spacing:.01em;}
  .hero__channels{gap:18px;font-size:14px;}
}

/* ---------- About セクション（2列：本文＋人物カット） ---------- */
.about-section .container.about-grid{
  display:grid;
  grid-template-columns: minmax(0, 1fr) clamp(220px, 30vw, 320px);
  gap:clamp(40px, 5vw, 72px);
  align-items:start;
  max-width:1080px;
}
.about-content{ max-width:720px; }
.about-figure{
  margin:0;position:sticky;top:96px;
  display:flex;flex-direction:column;gap:14px;align-items:center;
}
.about-figure picture{
  display:block;width:100%;
  background:var(--ink);
  border-radius:14px;
  overflow:hidden;
  border:1px solid var(--ink);
}
.about-figure img{width:100%;height:auto;display:block;}
.about-figure__cap{
  font-size:11.5px;color:var(--sub);letter-spacing:.06em;
  text-align:center;font-style:normal;font-weight:500;
}
@media (max-width:780px){
  .about-section .container.about-grid{
    grid-template-columns:1fr;
    max-width:var(--reading);
  }
  .about-figure{position:static;max-width:240px;margin-inline:auto;}
}

/* ---------- 数字で見るセクション（活動stats） ---------- */
.section--stats{padding-top:clamp(48px, 8vw, 96px);padding-bottom:clamp(48px, 8vw, 96px);}
.section--stats .section__title{margin-bottom:32px;}
.stats{
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:1px;
  background:var(--line);
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  margin:0;padding:0;list-style:none;
}
.stats__item{
  background:var(--paper);
  padding:32px 24px 28px;
  display:flex;flex-direction:column;
  min-height:172px;
}
.stats__item:hover{background:#fff;}
.stats__num{
  font-size:clamp(40px, 5.4vw, 60px);
  font-weight:600;
  letter-spacing:-.02em;
  color:var(--ink);
  font-feature-settings:"tnum";
  line-height:1;
  font-family:-apple-system, BlinkMacSystemFont, system-ui, sans-serif;
}
.stats__unit{
  font-size:14px;color:var(--sub);font-weight:600;
  margin-left:6px;letter-spacing:.04em;
  display:inline-block;
}
.stats__label{
  font-size:12.5px;color:var(--sub);
  margin-top:auto;letter-spacing:.04em;line-height:1.6;
  padding-top:18px;
}
.stats__label small{font-size:10.5px;display:block;margin-top:2px;color:var(--sub);}
.stats__note{
  margin:20px 0 0;font-size:13px;color:var(--sub);
}
@media (max-width:780px){
  .stats{grid-template-columns:repeat(2, 1fr);}
  .stats__item{padding:24px 18px 22px;min-height:148px;}
}

/* ---------- セクションヘッダー（左：テキスト、右：小カット） ---------- */
.section-header{
  display:grid;
  grid-template-columns:1fr auto;
  gap:clamp(24px, 4vw, 48px);
  align-items:end;
  margin-bottom:40px;
}
.section-header__text{max-width:640px;}
.section-header__figure{
  margin:0;
  background:var(--paper);
  border-radius:14px;
  overflow:hidden;
  border:1px solid var(--line);
  width:clamp(140px, 18vw, 200px);
  align-self:end;
}
.section-header__figure img{width:100%;height:auto;display:block;}
@media (max-width:780px){
  .section-header{grid-template-columns:1fr;}
  .section-header__figure{display:none;}
}

/* ---------- リンク（矢印つき） ---------- */
.link-arrow{
  display:inline-flex;align-items:center;gap:6px;
  color:var(--ink);
  border-bottom:1.5px solid var(--ink);
  padding-bottom:2px;
  font-weight:600;
}
.link-arrow--muted{
  color:var(--sub);
  border-color:var(--sub);
  font-weight:500;
}
.link-arrow:hover{opacity:.65;}

/* ---------- セクション共通 ---------- */
.section{padding:var(--section) 0;border-top:1px solid var(--line);}
.section--narrow .container{max-width:var(--reading);}
.section__title{
  font-size:var(--fs-h2);
  font-weight:600;
  letter-spacing:.01em;
  line-height:1.4;
  margin:0 0 16px;
}
.section__lede{
  color:var(--sub);
  font-size:15.5px;
  margin:0 0 36px;
  max-width:640px;
}
.section__more{margin:36px 0 0;font-size:15px;}

/* ---------- 編集思想 prose ---------- */
.prose p{margin:0 0 20px;}
.prose__list{
  counter-reset:nlist;
  margin:24px 0 0;padding:0;list-style:none;
}
.prose__list li{
  counter-increment:nlist;
  padding:18px 0;
  border-top:1px solid var(--line);
  font-size:17px;
  display:flex;gap:18px;align-items:baseline;
}
.prose__list li::before{
  content:counter(nlist, decimal-leading-zero);
  color:var(--accent);
  font-family:ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;
  font-size:14px;font-weight:600;flex-shrink:0;
}
.prose__list li:last-child{border-bottom:1px solid var(--line);}

/* ---------- マガジン カードグリッド ---------- */
.card-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));
  gap:14px;
  background:transparent;
  border:none;
}
.card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  transition:transform .15s ease, box-shadow .15s ease;
}
.card:hover{
  transform:translateY(-2px);
  box-shadow:0 8px 24px rgba(26,26,26,.06);
}
.card__link{
  display:block;
  padding:28px 26px 30px;
  height:100%;
  color:var(--ink);
}
.card__link:hover{opacity:1;}
.card__meta{
  display:flex;gap:10px;align-items:center;
  margin:0 0 16px;
  font-size:11.5px;
}
.card__status{
  display:inline-block;
  padding:3px 9px;border-radius:99px;
  font-weight:600;letter-spacing:.06em;
  background:var(--soft);color:var(--sub);
}
.card__status--ongoing{background:var(--accent-soft);color:var(--accent);}
.card__status--finished{background:var(--soft);color:var(--sub);}
.card__status--paid{background:var(--ink);color:#fff;}
.card__count{
  font-family:ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;
  color:var(--sub);font-weight:600;
}
.card__title{
  font-size:19px;font-weight:600;
  line-height:1.45;letter-spacing:.01em;
  margin:0 0 12px;
}
.card__desc{
  font-size:14px;line-height:1.75;
  color:var(--sub);
  margin:0 0 20px;
}
.card__cta{
  font-size:13px;font-weight:600;
  color:var(--accent);
}

/* ---------- アプリ：プロダクト紹介 ---------- */
.product-list{
  display:grid;gap:clamp(40px, 6vw, 64px);
  margin:0;
}
.product{
  display:grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap:clamp(28px, 5vw, 56px);
  align-items:center;
  padding:clamp(28px, 4vw, 44px);
  background:#fff;
  border:1px solid var(--line);
  border-radius:18px;
}
.product:nth-child(even){
  grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
}
.product:nth-child(even) .product__body{order:-1;}

@media (max-width:780px){
  .product, .product:nth-child(even){
    grid-template-columns:1fr;
    gap:24px;
  }
  .product:nth-child(even) .product__body{order:0;}
}

.product__visual{
  position:relative;
  aspect-ratio:4/3;
  border-radius:14px;
  overflow:hidden;
  display:flex;align-items:center;justify-content:center;
}
.product__visual--guide{background:linear-gradient(135deg, #DE1815 0%, #B5110F 100%);}
.product__visual--afterparty{background:linear-gradient(135deg, #E8694A 0%, #C45438 100%);}
.product__visual--watashi{background:linear-gradient(135deg, #8C2F3A 0%, #5A1D26 100%);}
.product__visual--run{background:linear-gradient(135deg, #2B2B2B 0%, #070707 100%);}
.product__icon{
  position:absolute;top:20px;left:22px;
  width:46px;height:46px;border-radius:12px;
  background:#fff;
  display:flex;align-items:center;justify-content:center;
  font-size:22px;
  box-shadow:0 4px 12px rgba(0,0,0,.15);
  z-index:2;
}

/* アプリの実スクリーンショットを iPhone風フレームで表示 */
.product__screen{
  display:block;
  width:62%;
  aspect-ratio:9/19.5;
  background:#1A1A1A;
  border-radius:24px;
  padding:6px;
  box-shadow:0 28px 56px rgba(0,0,0,.28);
  transform:rotate(-3deg);
  overflow:hidden;
}
.product:nth-child(even) .product__screen{transform:rotate(3deg);}
.product__screen img{
  width:100%;height:100%;
  display:block;
  object-fit:cover;
  object-position:top center;
  border-radius:18px;
}
/* ゲーム等の横長スクリーン（縦フォン枠ではなく横画面で見せる） */
.product__screen--wide{width:86%;aspect-ratio:16/9;border-radius:16px;}
.product__screen--wide img{object-position:center;border-radius:12px;}

.product__title{
  font-size:24px;font-weight:600;letter-spacing:.01em;
  line-height:1.4;margin:8px 0 14px;
}
.product__lede{
  font-size:16px;line-height:1.85;margin:0 0 18px;
}
.product__lede b{color:var(--accent);font-weight:600;}
.product__features{
  margin:0 0 24px;padding:0;
  display:grid;gap:9px;
}
.product__features li{
  font-size:14.5px;line-height:1.7;
  color:var(--sub);
  padding-left:22px;position:relative;
}
.product__features li::before{
  content:"";position:absolute;left:0;top:.78em;
  width:10px;height:1.5px;background:var(--accent);
}
.product__cta{margin:0;}
.btn{
  display:inline-block;
  padding:13px 22px;
  background:var(--ink);color:#fff;
  font-size:14px;font-weight:600;letter-spacing:.04em;
  border-radius:99px;
  transition:transform .15s ease;
}
.btn:hover{opacity:1;transform:translateY(-1px);}
.btn--primary{background:var(--ink);}

/* ---------- メンバーシップ導線（Labセクション末尾） ---------- */
.membership{
  display:grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap:clamp(24px, 4vw, 48px);
  align-items:center;
  margin-top:clamp(40px, 6vw, 64px);
  padding:clamp(28px, 4vw, 44px);
  background:var(--ink);
  color:#fff;
  border-radius:18px;
}
.membership .kicker{color:rgba(255,255,255,.55);}
.membership__title{
  font-size:clamp(19px, 2.4vw, 23px);
  font-weight:600;letter-spacing:.01em;line-height:1.45;
  margin:0 0 12px;
}
.membership__desc{
  font-size:14.5px;line-height:1.85;
  color:rgba(255,255,255,.78);
  margin:0;max-width:36em;
}
.membership__cta{margin:0;}
.membership .btn--primary{
  background:#fff;color:var(--ink);
}
@media (max-width:780px){
  .membership{grid-template-columns:1fr;gap:20px;}
}

/* ---------- 捕捉CTA（暫定：noteフォロー。theLetter開設後に差し替え） ----------
   設置箇所：①ヒーロー直下（SNSリンク行の下） ②ラボ節末尾（membership直後）
   2箇所とも同一マークアップ・同一クラスを使う。 */
.capture-cta{
  display:grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap:clamp(20px, 4vw, 40px);
  align-items:center;
  margin:clamp(32px, 5vw, 48px) 0 0;
  padding:clamp(24px, 3.5vw, 36px);
  background:var(--accent-soft);
  border:1px solid var(--line);
  border-radius:18px;
}
.capture-cta__title{
  font-size:clamp(17px, 2vw, 20px);
  font-weight:600;
  letter-spacing:.01em;
  line-height:1.5;
  margin:0 0 8px;
  color:var(--ink);
}
.capture-cta__desc{
  font-size:14px;
  line-height:1.8;
  color:var(--sub);
  margin:0;
}
.capture-cta__action{margin:0;}
@media (max-width:640px){
  .capture-cta{grid-template-columns:1fr;gap:16px;}
}

/* ---------- ニュースリスト ---------- */
.news-list{margin:0;padding:0;list-style:none;}
.news-list__item{
  display:grid;
  grid-template-columns: 110px 80px 1fr;
  gap:14px;
  padding:18px 0;
  border-top:1px solid var(--line);
  font-size:15px;
  line-height:1.55;
  align-items:baseline;
}
.news-list__item:last-child{border-bottom:1px solid var(--line);}
.news-list__date{
  font-family:ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;
  font-size:13px;font-weight:600;color:var(--sub);
}
.news-list__cat{
  font-size:11px;font-weight:600;letter-spacing:.08em;
  color:var(--accent);
  display:inline-block;
  padding:2px 9px;border-radius:99px;
  background:var(--accent-soft);
  width:fit-content;
  justify-self:start;
}
.news-list__title{color:var(--ink);font-weight:500;}
.news-list__title a{border-bottom:1px solid transparent;transition:border-color .2s ease;}
.news-list__title a:hover{border-color:var(--ink);opacity:1;}
.news-list__loading,.news-list__empty{
  padding:24px 0;color:var(--sub);font-size:14px;text-align:center;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}

@media (max-width:640px){
  .news-list__item{
    grid-template-columns: 90px 1fr;
    grid-template-rows: auto auto;
    gap:6px 14px;
  }
  .news-list__cat{grid-column:2;}
  .news-list__title{grid-column:1 / -1;}
}

/* ---------- フッター ---------- */
.site-footer{
  border-top:1px solid var(--line);
  padding:clamp(48px, 8vw, 80px) 0 clamp(36px, 6vw, 56px);
  background:var(--soft);
}
.site-footer__inner{
  display:grid;
  grid-template-columns:1fr auto;
  gap:36px;
  align-items:start;
}
.site-footer__brand{
  display:flex;align-items:center;gap:18px;
}
.site-footer__brand img{
  width:64px;height:64px;border-radius:50%;
  background:var(--soft);
  border:1px solid var(--line);
  object-fit:cover;object-position:center 10%;
}
.site-footer__name{
  font-size:18px;font-weight:700;margin:0;letter-spacing:.02em;
}
.site-footer__tag{
  font-size:13px;color:var(--sub);margin:4px 0 0;
}
.site-footer__sns{
  display:flex;gap:24px;
  font-size:14px;font-weight:600;
}
.site-footer__sns a{
  color:var(--ink);
  border-bottom:1.5px solid var(--ink);
  padding-bottom:2px;
}
.site-footer__copy{
  grid-column:1 / -1;
  margin:24px 0 0;
  font-size:12.5px;color:var(--sub);
  line-height:1.7;
}
.site-footer__sub{display:block;margin-top:4px;}

@media (max-width:640px){
  .site-footer__inner{grid-template-columns:1fr;}
  .site-footer__sns{flex-wrap:wrap;}
}

/* ---------- スクロール上のフェードイン（最小限） ---------- */
@media (prefers-reduced-motion: no-preference){
  .section, .hero{
    animation: fadeIn .6s ease both;
  }
  @keyframes fadeIn{
    from{opacity:0;transform:translateY(8px);}
    to{opacity:1;transform:translateY(0);}
  }
}
