/* ===== Tokens（既存名は改名・削除禁止。新規は別名として追加） ===== */
/*
 * OPS-04 境目（会員向けの新指定は member-layout.css）:
 *   〜767 / 768〜1023 / 1024〜1279 / 1280〜
 */
:root{
  --navy:#0a1f3d; --navy-2:#12305a; --navy-3:#183d72; --red:#c8102e; --gold:#f2b21a;
  --green:#1c9e5b; --cyan:#1390c8;
  --ink:#17212f; --muted:#4c5d70; --line:#d7dde6; --bg:#f5f7fa; --white:#fff;
  --surface:#fff; --surface-2:#eef2f7; --heading:var(--navy);
  --radius:12px; --shadow:0 1px 2px rgba(var(--navy-rgb),.05); --shadow-strong:0 6px 20px rgba(10,31,61,.13);
  --header-height:56px;
  --bottom-nav-height:66px;
  --fixed-bottom-stack:0px;
  --page-inline:16px;
  --tap-min:44px;
  --section-gap:28px;
  --block-gap:16px;
  --motion:140ms;
  --gold-light:#ffd56e;
  --gold-deep:#e0a410;
  --warn-amber:#e0a410;
  --game:#a32d2d;
  --practice:#185fa5;
  --event:#2f6b2f;
  --trial:#9a6212;
  --weekend-sun:color-mix(in srgb, var(--red) 8%, var(--surface));
  --weekend-sat:color-mix(in srgb, var(--cyan) 8%, var(--surface));
  --red-deep:#a10e27;
  --msg-info:color-mix(in srgb, var(--navy) 8%, var(--surface));
  --msg-success:color-mix(in srgb, var(--green) 14%, var(--surface));
  --msg-error:color-mix(in srgb, var(--red) 10%, var(--surface));
  --msg-warning:color-mix(in srgb, var(--color-warning) 18%, var(--surface));
  --scrim:rgba(0,0,0,.38);
  --on-dark:#fff;
  --temp-max:color-mix(in srgb, var(--red) 72%, var(--ink));
  --temp-min:color-mix(in srgb, var(--cyan) 62%, var(--ink));
  --status-ok:color-mix(in srgb, var(--green) 65%, var(--ink));
  --cal-sun:color-mix(in srgb, var(--red) 72%, var(--ink));
  --cal-sat:color-mix(in srgb, var(--cyan) 62%, var(--ink));

  /* 別名・スケール（既存トークンへのエイリアス） */
  --color-primary:var(--navy);
  --color-primary-2:var(--navy-2);
  --color-primary-3:var(--navy-3);
  --color-accent:var(--gold);
  --color-danger:var(--red);
  --color-success:var(--green);
  --color-info:var(--cyan);
  --navy-rgb:10,31,61;
  --navy-a97:rgba(var(--navy-rgb),.97);
  --navy-a20:rgba(var(--navy-rgb),.20);
  --on-dark-soft:rgba(255,255,255,.88);
  --on-dark-muted:rgba(255,255,255,.68);
  --on-dark-faint:rgba(255,255,255,.12);
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px;
  --space-5:24px; --space-6:32px; --space-7:40px;
  --radius-sm:8px; --radius-md:var(--radius); --radius-lg:16px; /* P10-4: lg は大面用。md と同値にしない */
  /* --radius-pill は廃止方針。ピル形状は 999px、小部品は --radius-sm */
  --text-xs:.76rem; --text-sm:.84rem; --text-md:.95rem;
  --text-lg:1.12rem; --text-xl:1.35rem; --text-2xl:1.65rem; --text-hero:1.8rem;
  --container-max:1160px;
  --font-sans:"Hiragino Kaku Gothic ProN","Hiragino Sans","BIZ UDPGothic","Yu Gothic",Meiryo,"Noto Sans JP",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;

  /* 公開仕様で利用する意味ベースのデザイントークン */
  --color-primary-900:var(--navy);
  --color-primary-700:var(--navy-2);
  --color-primary-500:var(--navy-3);
  --color-accent-600:var(--gold-deep);
  --color-accent-400:var(--gold-light);
  --color-bg:var(--white);
  --color-bg-subtle:var(--bg);
  --color-surface:var(--surface);
  --color-surface-dark:var(--navy);
  --color-text:var(--ink);
  --color-text-muted:var(--muted);
  --color-border:var(--line);
  --color-warning:var(--warn-amber);
  --font-size-xs:clamp(.75rem,.72rem + .15vw,.8125rem);
  --font-size-sm:clamp(.875rem,.84rem + .18vw,.9375rem);
  --font-size-base:clamp(1rem,.96rem + .2vw,1.0625rem);
  --font-size-lg:clamp(1.125rem,1.02rem + .45vw,1.375rem);
  --font-size-xl:clamp(1.5rem,1.2rem + 1.2vw,2.25rem);
  --font-size-hero:clamp(2rem,1.3rem + 3vw,4.5rem);
  --space-8:64px;
  --space-9:96px;

  /* ===== 追加: Vivid Portal 別名（既存名は改名/削除しない） ===== */
  --hero-scrim-strong: linear-gradient(180deg, rgba(var(--navy-rgb),.12) 0%, rgba(var(--navy-rgb),.38) 48%, rgba(var(--navy-rgb),.88) 100%);
  --hero-scrim-side: linear-gradient(90deg, rgba(var(--navy-rgb),.72) 0%, rgba(var(--navy-rgb),.28) 48%, rgba(var(--navy-rgb),.18) 100%);
  --brand-band: linear-gradient(135deg, var(--navy) 0%, var(--navy-2) 58%, var(--navy-3) 100%);
  --accent-line: linear-gradient(90deg, var(--gold) 0%, var(--gold-light) 100%);
  --face-plain: var(--surface);
  --face-tinted: var(--surface-2);
  --face-subtle: var(--bg);
  --face-brand: var(--navy);
  /* P10-4: 影の正規名は --shadow / --shadow-strong。elev-* は互換エイリアス */
  --elev-1: var(--shadow); /* = --shadow（面が1枚浮く） */
  --elev-2: var(--shadow-strong); /* = --shadow-strong（浮遊UI） */
  --elev-hover: 0 2px 6px rgba(var(--navy-rgb),.10); /* hover 専用。--shadow とは別 */

  --face-page:var(--bg);
  --border-hair:1px solid var(--line);
  --radius-card:12px;
  --radius-control:8px;
  --elev-rest:none;
  --elev-float:var(--shadow-strong);
  --motion-fast: 120ms;
  --motion-normal: var(--motion);
  --motion-slow: 260ms;
  --ease-out: cubic-bezier(.2,.7,.2,1);
  --ratio-hero: 2.35 / 1;
  --ratio-hero-mobile: 4 / 3;
  --ratio-banner: 2 / 1;
  --ratio-card: 4 / 3;

  /* 会員メニューカード用（member テーマで色が乗る既存 --gold/--navy を核に） */
  --menu-chip-size: 34px;
  --menu-chip-bg: color-mix(in srgb, var(--gold) 20%, var(--surface));
  --menu-chip-fg: var(--heading);
  --menu-card-radius: var(--radius-lg);
  --menu-divider: color-mix(in srgb, var(--line) 80%, transparent);
}

/* ===== Reset / Base ===== */
*{box-sizing:border-box}
html{scroll-behavior:smooth;overflow-x:clip}
body{margin:0;min-height:100dvh;display:flex;flex-direction:column;
  font-family:var(--font-sans);
  font-weight:400;letter-spacing:.01em;
  color:var(--ink);background:var(--face-page);line-height:1.7;-webkit-text-size-adjust:100%}
.site--member{--gold:#71b7dc;--gold-light:#b9ddf0;--gold-deep:#2478a5;--bg:#eef3f7;--surface-2:#e5edf3}
.site--auth{--bg:#f3f6fa}
.site--auth .site-main--auth{max-width:520px;margin-inline:auto}
.site--auth .bottom-nav{display:none!important}
.site--auth .site-footer{margin-bottom:0}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
iframe,video{max-width:100%}
p,li,dd,td,th,a,button,label{overflow-wrap:anywhere}
h1,h2,h3{line-height:1.4;margin:.2em 0;letter-spacing:.015em}
h1{font-weight:700}
h2{font-weight:500}
h3{font-weight:500}

/* Accessibility – focus ring（消さない） */
:focus-visible{outline:3px solid var(--gold);outline-offset:2px;border-radius:4px} /* P10-4: 4px 残置（フォーカスリングの角。sm=8px だと太く見える） */
:target,:focus-visible{scroll-margin-top:calc(var(--header-height) + 4px)}
.skip-link{position:absolute;top:-100%;left:0;background:var(--navy);color:var(--on-dark);padding:8px 16px;font-weight:700;z-index:100;border-radius:0 0 var(--radius-sm) 0}
.skip-link:focus{top:0}

/* ===== Layout: Header ===== */
.site-header{
  position:sticky;top:0;z-index:50;
  background:var(--navy-a97);color:var(--on-dark);
  backdrop-filter:blur(12px);
  box-shadow:none;
  border-bottom:1px solid rgba(255,255,255,.12);
}
.header-inner{max-width:var(--container-max);margin:0 auto;display:flex;align-items:center;gap:var(--space-3);padding:6px var(--page-inline);min-height:var(--header-height)}
.brand{display:flex;align-items:center;gap:var(--space-2);min-width:0;flex:1}
.brand-logo{width:36px;height:36px;border-radius:50%;background:var(--white);padding:2px;flex-shrink:0;aspect-ratio:1/1}
.footer-brand strong{display:block;font-weight:800;font-size:var(--text-md);line-height:1.25;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 横長ワードマークロゴ（クレスト＋上磯有川） */
.brand--wordmark{gap:0}
.brand-wordmark{height:28px;width:auto;max-width:min(48vw,190px);display:block;flex-shrink:0}
.brand-wordmark--footer{height:auto;max-height:44px;width:auto;max-width:min(100%,230px);margin-bottom:8px}
.footer-brand__tag{margin:0;color:var(--on-dark-muted);font-size:.85rem;line-height:1.35;overflow-wrap:anywhere}
.nav-toggle{display:none;margin-left:auto;flex-direction:column;gap:5px;background:none;border:none;color:var(--on-dark);padding:8px;cursor:pointer;min-width:var(--tap-min);min-height:var(--tap-min);align-items:center;justify-content:center;flex-shrink:0}
.nav-toggle span{display:block;width:22px;height:2.5px;border-radius:999px;background:var(--surface);transition:transform var(--motion) ease,opacity var(--motion) ease}
[data-theme="dark"] .nav-toggle span,:root:not([data-theme="light"]) .nav-toggle span{background:var(--on-dark,#f5f7fa)}
.nav-quick{display:none}
.nav-desk{display:none}
.nav-meta{display:none}
.nav-chevron{display:none;margin-left:auto;flex-shrink:0;font-size:.75rem;font-weight:400;line-height:1;color:var(--muted);opacity:.85}
.nav-label{min-width:0}
.header-search{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;min-width:var(--tap-min);min-height:var(--tap-min);padding:8px;border-radius:var(--radius-sm);color:var(--on-dark-soft);flex-shrink:0}
.header-search:hover,.header-search:focus-visible{background:var(--on-dark-faint);color:var(--on-dark)}
.header-search[aria-current="page"]{color:var(--gold);box-shadow:inset 0 -2px 0 var(--gold)}
.header-search + .nav-toggle{margin-left:2px}
.main-nav{margin-left:auto;display:flex;align-items:center;gap:2px;flex-wrap:wrap;min-width:0}
.main-nav a{padding:8px 10px;border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:700;color:var(--on-dark-soft);transition:background var(--motion) ease,color var(--motion) ease;min-height:var(--tap-min);display:inline-flex;align-items:center;gap:6px}
@media(min-width:768px){
  .header-search{display:none}
}
.main-nav a:hover,.main-nav a:focus-visible{background:var(--on-dark-faint);color:var(--on-dark)}
.main-nav a[aria-current="page"]{background:var(--on-dark-faint);color:var(--on-dark);box-shadow:inset 0 -2px 0 var(--gold)}
.main-nav .nav-member{background:color-mix(in srgb, var(--navy) 12%, transparent);color:var(--on-dark);border:1px solid color-mix(in srgb, var(--on-dark) 35%, transparent)}
.main-nav .nav-member[aria-current="page"]{box-shadow:inset 0 -2px 0 var(--on-dark)}
.nav-logout-form{display:inline;margin:0}
.nav-logout-btn{background:none;border:0;padding:8px 10px;font:inherit;color:var(--on-dark-soft);cursor:pointer;min-height:var(--tap-min);border-radius:var(--radius-sm);display:inline-flex;align-items:center;gap:6px}
.nav-logout-btn:hover,.nav-logout-btn:focus-visible{background:var(--on-dark-faint);color:var(--on-dark)}
.nav-scrim{display:none}

/* PC nav links / dropdown (base hidden until ≥768) */
.nav-link{
  padding:10px 12px;border-radius:0;font-size:.88rem;font-weight:700;
  color:var(--on-dark-soft);min-height:var(--tap-min);display:inline-flex;align-items:center;
  background:transparent;border:0;box-shadow:none;letter-spacing:.02em;
}
.nav-link:hover,.nav-link:focus-visible{
  background:transparent;color:var(--on-dark);
  box-shadow:inset 0 -2px 0 color-mix(in srgb, var(--gold) 70%, transparent);
}
.nav-link[aria-current="page"]{
  background:transparent;color:var(--on-dark);
  box-shadow:inset 0 -2px 0 var(--gold);
}
.nav-link--cta{
  margin-left:4px;padding:8px 14px;border-radius:999px;
  background:var(--gold);color:var(--navy);border:1px solid var(--gold-deep);font-weight:800;
}
.main-nav .nav-link--cta{color:var(--navy);background:var(--gold)}
.main-nav .nav-link--cta:hover,.main-nav .nav-link--cta:focus-visible{
  background:var(--gold-deep);color:var(--navy);box-shadow:none;
}
.main-nav .nav-link--cta[aria-current="page"]{
  background:var(--gold-deep);color:var(--navy);
  box-shadow:0 0 0 2px color-mix(in srgb, var(--on-dark) 40%, transparent);
}
.nav-link--login{
  margin-left:4px;padding:8px 14px;border-radius:999px;
  background:transparent;color:var(--on-dark);
  border:1px solid color-mix(in srgb, var(--on-dark) 45%, transparent);font-weight:800;
}
.main-nav .nav-link--login{color:var(--on-dark);background:transparent}
.main-nav .nav-link--login:hover,.main-nav .nav-link--login:focus-visible{
  background:var(--on-dark-faint);color:var(--on-dark);box-shadow:none;
}
.main-nav .nav-link--login[aria-current="page"]{border-color:var(--gold);box-shadow:inset 0 -2px 0 var(--gold);color:var(--on-dark)}
.nav-link--ghost{
  cursor:pointer;font:inherit;
}
.main-nav .nav-link--ghost{color:var(--on-dark-soft)}
.nav-dd{position:relative;display:inline-flex;align-items:center}
.nav-dd__btn{
  padding:10px 12px;border:0;background:transparent;color:var(--on-dark-soft);
  font:inherit;font-size:.88rem;font-weight:700;cursor:pointer;min-height:var(--tap-min);
  display:inline-flex;align-items:center;gap:6px;border-radius:0;
}
.nav-dd__btn i{font-size:.65rem;opacity:.8;transition:transform var(--motion) ease}
.nav-dd.is-open .nav-dd__btn i{transform:rotate(180deg)}
.nav-dd__btn:hover,.nav-dd__btn:focus-visible,
.nav-dd.is-open .nav-dd__btn{
  color:var(--on-dark);box-shadow:inset 0 -2px 0 color-mix(in srgb, var(--gold) 70%, transparent);
}
.nav-dd__panel{
  position:absolute;top:calc(100% + 6px);left:0;min-width:11.5rem;z-index:70;
  background:var(--surface);color:var(--heading);border:1px solid var(--line);
  border-radius:var(--radius-md);box-shadow:var(--shadow-strong);padding:6px;display:flex;flex-direction:column;gap:2px;
}
.nav-dd__panel[hidden]{display:none !important}
.nav-dd__link{
  display:flex;align-items:center;padding:10px 12px;border-radius:var(--radius-sm);
  color:var(--heading);font-size:.88rem;font-weight:700;min-height:var(--tap-min);
}
/* .main-nav a（明色）に負けないよう、ドロップダウン内のリンクは濃色を明示 */
.nav-dd__panel .nav-dd__link{color:var(--heading)}
.nav-dd__link:hover,.nav-dd__link:focus-visible{background:var(--surface-2);color:var(--heading)}
.nav-dd__panel .nav-dd__link:hover,.nav-dd__panel .nav-dd__link:focus-visible{color:var(--heading)}
.nav-dd__link[aria-current="page"]{background:color-mix(in srgb, var(--gold) 16%, var(--surface))}

/* Messages */
.messages{max-width:var(--container-max);margin:12px auto;padding:0 var(--page-inline)}
.message{padding:10px 14px;border-radius:var(--radius-md);margin-bottom:var(--space-2);background:var(--msg-info);border:1px solid var(--navy)}
.message.success{background:var(--msg-success);border-color:var(--green)}
.message.error{background:var(--msg-error);border-color:var(--red)}
.message.warning{background:var(--msg-warning);border-color:var(--color-warning)}

/* ===== Layout: Main ===== */
.site-main{
  max-width:var(--container-max);margin:0 auto;
  padding:
    20px
    max(var(--page-inline), env(safe-area-inset-right))
    calc(var(--space-7) + env(safe-area-inset-bottom))
    max(var(--page-inline), env(safe-area-inset-left));
}

/* PWA案内は入力操作中にフォームや送信ボタンを覆わない */
body:has(input:focus,select:focus,textarea:focus,[contenteditable="true"]:focus) .install-banner{display:none}
/* 入力中・フォーム系ページでは固定CTAを隠し、本文との被りを防ぐ */

/* ===== Page hero（下層共通） ===== */
.page-hero{
  position:relative;overflow:hidden;
  border-radius:0;
  background:transparent;
  color:var(--ink);
  border:0;
  box-shadow:none;
  padding:4px 0 0;
  margin:0 0 var(--block-gap);
}
.page-hero--hot{
  background:transparent;border:0;
}
.page-hero--muted{
  background:transparent;border:0;
}
.page-hero__inner{position:relative;z-index:1;max-width:44rem}
.page-hero__eyebrow{
  margin:0 0 6px;font-size:max(.8125rem,13px);letter-spacing:.08em;font-weight:800;color:var(--muted);
}
.page-hero__title{
  margin:0;font-size:clamp(1.28rem,3vw,1.8rem);font-weight:800;line-height:1.3;
  color:var(--heading);display:flex;align-items:center;gap:10px;flex-wrap:wrap;text-wrap:balance;
}
.page-hero__title i{color:var(--navy);font-size:.92em;flex-shrink:0}
.page-hero--hot .page-hero__title i{color:var(--red)}
.page-hero__lead{
  margin:10px 0 0;font-size:var(--text-md);line-height:1.55;color:var(--muted);
}
@media(max-width:767px){
  .page-hero{padding:4px 0 0;border-radius:0}
  .page-hero__title{font-size:clamp(1.16rem,5.8vw,1.42rem);align-items:flex-start;gap:8px}
  .page-hero__lead{font-size:.9rem}
  .form-box{max-width:none;margin:0}
}

/* Home page title (sole H1) */
.home-page-title{font-size:var(--text-xl);margin:0 0 var(--space-3);color:var(--heading);line-height:1.4;font-weight:700;letter-spacing:.015em}
.home-page-title--bar{margin:0;border-left:none;padding-left:0;color:var(--on-dark);font-size:clamp(1.15rem,2.6vw,1.55rem)}
.slider-headline,.recruit-heading,.members-heading{font-size:var(--text-2xl);margin:0 0 var(--space-2);line-height:1.4;font-weight:700;letter-spacing:.015em}
.slider-headline{font-size:clamp(1.35rem,3.2vw,2rem);text-shadow:0 2px 8px rgba(0,0,0,.4);color:var(--on-dark)}
.recruit-heading,.members-heading{color:var(--on-dark);text-shadow:none}

/* ===== Home layout (full-bleed hero outside .site-main + contained body) ===== */
.site-main--home{
  max-width:var(--container-max);
  margin:0 auto;
  padding-top:0;
}
.home-brandbar{
  width:100%;
  background:var(--brand-band);
  color:var(--on-dark);
  border-bottom:1px solid rgba(255,255,255,.12);
}
.home-brandbar__inner{
  max-width:var(--container-max);
  margin:0 auto;
  padding:14px max(var(--page-inline), env(safe-area-inset-left)) 12px max(var(--page-inline), env(safe-area-inset-right));
}
.home-brandbar__tag{
  margin:4px 0 0;
  font-size:var(--text-xs);
  letter-spacing:.14em;
  font-weight:700;
  color:var(--on-dark-muted);
}
/* ヒーローは base の full_bleed ブロック（.site-main 外）で本当の全幅 */
.home-hero-bleed{
  width:100%;
  max-width:100%;
  margin:0;
  padding:0;
  display:block;
  overflow:hidden;
}
.home-body{
  max-width:var(--container-max);
  margin:0 auto;
  /* 左右も上下も、インセットは親の .site-main が一元的に持つ。
     下部ナビ回避の padding-bottom も .site-main 側にあるため、ここでは重ねない。 */
  padding:0;
}
.section--alt{
  background:transparent;
  border:0;
  border-radius:0;
  padding:0;
  box-shadow:none;
}
.section--cta{margin-top:var(--space-3)}
.section--face-plain{background:transparent}
.section-kicker{
  margin:0 0 4px;font-size:max(.8125rem,13px);letter-spacing:.12em;font-weight:800;
  color:var(--muted);text-transform:uppercase;
}
.section--brand-band{
  border-radius:var(--radius-card);overflow:hidden;
  background:var(--surface);color:var(--ink);
  border:var(--border-hair);
  box-shadow:var(--elev-rest);
  padding:var(--block-gap) var(--space-3);
}
.section--brand-band .eyebrow{color:var(--muted)}
.section--brand-band .members-heading{color:var(--heading)}
.section--brand-band p{color:var(--ink)}
.section--brand-band .recruit-banner,
.section--brand-band .hero.recruit-banner{
  background:transparent;box-shadow:none;margin:0;padding:0;
  color:inherit;border:0;border-radius:0;
}
.section--brand-band .hero.recruit-banner::after{display:none}
/* recruit-banner--hot overrides live after .hero (cascade) */
.recruit-banner--hot::after{display:none}

/* Hero */
.hero{position:relative;border-radius:var(--radius-lg);overflow:hidden;background:
  radial-gradient(circle at top right,color-mix(in srgb, var(--gold) 16%, transparent),transparent 35%),
  linear-gradient(135deg,var(--navy),var(--navy-2));color:var(--on-dark);padding:24px 20px;margin-bottom:16px;box-shadow:var(--elev-rest)}
.hero-home{display:grid;gap:16px;align-items:stretch}
.hero-home--bleed{border-radius:0;margin-bottom:0;width:100%;min-height:clamp(220px,42vw,380px);padding:28px max(var(--page-inline),4vw);background:var(--brand-band);background-size:cover;background-position:center center}
.hero-copy{position:relative;z-index:1}
.hero-brand-panel{display:none}
.hero::after{content:"";position:absolute;inset:auto -30px -30px auto;width:140px;height:140px;border-radius:50%;
  background:rgba(255,255,255,.05);pointer-events:none}
.eyebrow{margin:0 0 4px;font-size:max(.8125rem,13px);letter-spacing:.08em;font-weight:800;color:var(--on-dark-muted)}
.hero h1,.hero .recruit-heading,.hero .members-heading{font-size:1.65rem}
.hero-lead{max-width:36rem;margin-bottom:0;color:var(--on-dark-soft);font-size:.95rem}
.hero .hero-badges{margin-top:14px;display:flex;gap:8px;flex-wrap:wrap}
.badge{background:var(--color-warning);color:var(--heading);font-weight:800;padding:6px 12px;border-radius:var(--radius-sm);font-size:.82rem}
.badge.red{background:var(--red);color:var(--on-dark)}
.badge.ghost{background:rgba(255,255,255,.12);color:var(--on-dark);border:1px solid rgba(255,255,255,.18)}
.hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.recruit-banner{display:flex;justify-content:space-between;align-items:flex-end;gap:16px}
.recruit-banner .mt{margin-top:0}
/* D1-C: RECRUIT white card (must follow .hero so it wins the cascade) */
.recruit-banner--hot,
.hero.recruit-banner--hot{
  background:var(--surface);color:var(--ink);
  border:var(--border-hair);border-radius:var(--radius-card);
  box-shadow:var(--elev-rest);
}
.recruit-banner--hot .eyebrow,.hero.recruit-banner--hot .eyebrow{color:var(--muted)}
.recruit-banner--hot .recruit-heading,.hero.recruit-banner--hot .recruit-heading{color:var(--heading)}
.recruit-banner--hot p,.hero.recruit-banner--hot p{color:var(--ink)}
.recruit-banner--hot::after,.hero.recruit-banner--hot::after{display:none}

/* Hero Slider */
.hero-slider{position:relative;border-radius:var(--radius-lg);overflow:hidden;margin-bottom:16px;
  background:var(--navy);aspect-ratio:16/6;box-shadow:var(--elev-rest)}
.hero-slider--bleed{border-radius:0;margin-bottom:0;width:100%;max-width:100%;aspect-ratio:var(--ratio-hero);max-height:min(62vh,560px);box-shadow:none}
.slider-slide{position:absolute;inset:0;opacity:0;transition:opacity .7s ease;pointer-events:none}
.slider-slide.active{opacity:1;pointer-events:auto}
.slider-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center center;transform:scale(1.04);will-change:transform}
.slider-slide.active .slider-bg{animation:hero-kenburns 18s ease-in-out infinite alternate}
@keyframes hero-kenburns{
  from{transform:scale(1.04) translate(0,0)}
  to{transform:scale(1.12) translate(-1.2%,-0.8%)}
}
/* 下方向＋左の読みやすさ（明るい右寄り構図でも文字が乗るように） */
.slider-overlay{position:absolute;inset:0;background:
  var(--hero-scrim-side),
  var(--hero-scrim-strong);
  display:flex;align-items:flex-end;padding:clamp(16px,3vw,28px) clamp(16px,4vw,36px)}
@media (prefers-reduced-motion: reduce){
  .slider-bg,.slider-slide.active .slider-bg{animation:none;transform:none;will-change:auto}
}

@media print{
  .site-header,.site-footer,.bottom-nav,.pwa-nav,.install-banner,.back-bar{display:none!important}
  .site-main{max-width:none;padding:0}
  body{background:#fff;color:#000}
  a{text-decoration:underline}
}
.slider-copy{position:relative;z-index:1;max-width:640px;color:var(--on-dark)}
.slider-copy h1,.slider-copy .slider-headline{margin:0 0 8px;text-shadow:0 2px 8px rgba(0,0,0,.4)}
.slider-subcopy{margin:0 0 14px;font-size:clamp(.88rem,2vw,1.05rem);color:rgba(255,255,255,.90);text-shadow:0 1px 4px rgba(0,0,0,.4)}
.slider-controls{position:absolute;bottom:12px;left:12px;right:12px;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:10px;pointer-events:none}
.slider-toggle{
  pointer-events:auto;border:1px solid rgba(255,255,255,.35);background:rgba(10,31,61,.55);color:var(--on-dark);
  border-radius:999px;width:var(--tap-min);min-width:var(--tap-min);min-height:var(--tap-min);padding:0;
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:.95rem;
}
.slider-status{pointer-events:none;display:flex;flex-direction:column;gap:4px;min-width:0;flex:1;max-width:12rem;margin-inline:auto}
.slider-counter{color:var(--on-dark);font-size:.78rem;font-weight:800;letter-spacing:.04em;text-shadow:0 1px 3px rgba(0,0,0,.45)}
.slider-progress{height:3px;border-radius:999px;background:rgba(255,255,255,.28);overflow:hidden}
.slider-progress__bar{display:block;height:100%;width:0;background:var(--gold)}
/* 白丸ドットは廃止（カウンター＋細バーに置換）。残骸セレクタは非表示のみ維持 */
.slider-dots,.slider-dot{display:none !important}
@media (prefers-reduced-motion: reduce){
  .slider-progress__bar{transition:none !important;width:0 !important}
}

/* Ticker */
.ticker-bar{display:flex;align-items:center;gap:10px;max-width:100%;overflow:hidden;box-sizing:border-box;background:linear-gradient(135deg,var(--red),var(--red-deep));
  color:var(--on-dark);border-radius:var(--radius-lg);padding:10px 14px;margin-bottom:14px;overflow:hidden;box-shadow:var(--shadow)}
.ticker-label{font-size:1.1rem;flex-shrink:0}
.ticker-track{overflow:hidden;flex:1;position:relative;min-width:0;max-width:100%}
.ticker-inner{display:flex;gap:0;white-space:nowrap;animation:ticker-scroll 30s linear infinite}
.ticker-bar:hover .ticker-inner{animation-play-state:paused}
.ticker-item{display:inline-block;padding:0 32px;font-weight:700;font-size:.92rem;color:var(--on-dark);text-decoration:none}
.ticker-item:hover{text-decoration:underline}
@keyframes ticker-scroll{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
.home-deadlines{margin:0 0 1.5rem}
.home-deadlines ul{margin:.5rem 0 0;padding:0;list-style:none;display:grid;gap:.4rem}
.home-deadline{display:flex;flex-wrap:wrap;gap:.35rem .75rem;align-items:baseline;min-width:0}
.home-deadline--overdue{color:var(--red-deep);font-weight:700}
.home-deadline--due_today,.home-deadline--urgent{font-weight:700}

/* Highlight video */
.highlight-video-wrap{border-radius:var(--radius);overflow:hidden;background:var(--navy);box-shadow:var(--shadow);transition:transform var(--motion) ease,box-shadow var(--motion) ease}
.highlight-video-wrap:hover{transform:translateY(-2px);box-shadow:var(--elev-hover)}
.highlight-video{display:block;width:100%;aspect-ratio:16/9;border:none}
.highlight-video-title{margin:10px 0 0;font-weight:700;color:var(--heading);font-size:1rem}
.video-embed{position:relative;width:100%;padding-top:56.25%;overflow:hidden;border-radius:var(--radius);background:var(--navy)}
.video-embed__frame{position:absolute;inset:0;width:100%;height:100%;border:0;background:#000}
.video-card-grid{display:grid;gap:var(--space-3);grid-template-columns:1fr}
.video-card{display:flex;flex-direction:column;overflow:hidden;color:inherit;text-decoration:none}
.video-card__thumb{position:relative;aspect-ratio:16/9;background:var(--navy);overflow:hidden}
.video-card__thumb img{width:100%;height:100%;object-fit:cover;display:block}
.video-card__placeholder,.video-card__play{
  position:absolute;inset:0;display:grid;place-items:center;color:var(--on-dark);font-size:1.5rem;
}
.video-card__placeholder{background:color-mix(in srgb, var(--navy) 88%, var(--red))}
.video-card__play{
  inset:auto auto .6rem .6rem;width:2.2rem;height:2.2rem;border-radius:999px;
  background:color-mix(in srgb, var(--red) 85%, #000);font-size:.85rem;
}
.video-card__duration{
  position:absolute;right:.5rem;bottom:.5rem;padding:.15rem .4rem;border-radius:4px; /* P10-4: 極小バッジ */
  background:#0009;color:var(--on-dark);font-size:.75rem;font-weight:700;
}
.video-card__meta{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;margin:.4rem 0}
.video-card__audience{margin:0 0 .35rem;color:var(--muted);font-size:.82rem}
.video-card--featured{border-color:var(--gold)}
.video-coach-comment{
  margin:1.25rem 0 0;padding:1rem 1.1rem;border:1px solid var(--red);
  background:var(--msg-error);border-radius:var(--radius-sm);
}
.video-coach-comment h2{margin:0 0 .5rem;font-size:1rem}
.video-coach-comment p{margin:0;white-space:pre-wrap}
.video-description{white-space:pre-wrap}
.video-back{margin:0 0 1rem}
.filter-chips .pill[aria-current="page"]{background:var(--navy);color:var(--on-dark)}
@media (min-width: 760px){
  .video-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (min-width: 1100px){
  .video-card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (min-width: 1400px){
  .video-card-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
}
.notice-link{color:var(--on-dark);text-decoration:underline}

/* Section */
.section{margin:var(--section-gap) 0}
.section-title{
  display:flex;align-items:center;gap:10px;
  position:relative;
  padding:0 0 8px 0;
  margin:0 0 var(--block-gap);
  font-size:1.12rem;font-weight:700;color:var(--heading);letter-spacing:.015em;
  border-left:none;
  border-bottom:1px solid var(--line);
}
.section-title::before{
  content:"";flex-shrink:0;width:10px;height:10px;border-radius:50%;
  background:var(--gold);box-shadow:0 0 0 3px color-mix(in srgb, var(--gold) 28%, transparent);
}
/* P10-2: 会員画面の装飾ドットは外し、アイコン位置を揃える */
.site--member .section-title::before{display:none}
.section-title .more{
  margin-left:auto;font-size:.82rem;color:var(--navy-3);font-weight:800;
  display:inline-flex;align-items:center;min-height:var(--tap-min);
  padding:4px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);
  text-decoration:none;white-space:nowrap;
  transition:background var(--motion) ease,color var(--motion) ease,border-color var(--motion) ease;
}
.section-title .more:hover{background:var(--navy);color:var(--on-dark);border-color:var(--heading);text-decoration:none}

/* Cards grid */
.grid{display:grid;gap:var(--space-3)}
.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.card{
  background:var(--surface);border:var(--border-hair);
  border-radius:var(--radius-card);box-shadow:var(--elev-rest);overflow:hidden;
  transition:transform var(--motion) ease,box-shadow var(--motion) ease,border-color var(--motion) ease;
}
.card:hover,.card:focus-within{transform:translateY(-1px);box-shadow:var(--elev-hover);border-color:color-mix(in srgb, var(--navy) 22%, var(--line))}
.surface-panel{background:var(--surface);border:var(--border-hair);border-radius:var(--radius-card);padding:var(--space-4);}
.card .card-body{padding:var(--space-3) 14px}
/* 文章ページ: 直下のセクションカードを「囲み枠」から「線区切りのフラット面」に。
   入れ子の箱感と、ページ余白＋カード余白の二重インセット（スマホで窮屈）を解消する。
   直下(>)のみ対象なので、中に置いたリンクカード等の箱はそのまま残る。 */
.doc-flow{border-top:1px solid var(--line)}
.doc-flow > .card{background:transparent;border:0;border-radius:0;box-shadow:none;overflow:visible;
  transition:none;margin:0;border-bottom:1px solid var(--line)}
.doc-flow > .card:hover,.doc-flow > .card:focus-within{transform:none;box-shadow:none}
.doc-flow > .card:last-child{border-bottom:0}
.doc-flow > .card > .card-body{padding:20px 0}
.card .tag{display:inline-block;font-size:.7rem;font-weight:700;padding:3px 8px;border-radius:var(--radius-sm);
  background:var(--navy);color:var(--on-dark);margin-bottom:4px}
.card .tag.important{background:var(--red)}
.card .tag.tag--members,.tag.tag--members{background:var(--muted);color:var(--on-dark)}
.card .date{color:var(--muted);font-size:.78rem}
.card--accent{border-left:4px solid var(--gold)}
.card-list{display:flex;flex-direction:column;gap:10px}
.info-body{max-width:72ch;line-height:1.7}
.info-body>:last-child{margin-bottom:0}
.btn--danger{background:var(--red);color:var(--on-dark);border-color:var(--red)}
.btn--danger:hover,.btn--danger:focus-visible{filter:brightness(1.06)}
.card h2,.card h3{font-size:.96rem;margin:.4em 0 0;color:var(--heading);line-height:1.35}
.social-card{}
.social-card .card-body{font-weight:800;color:var(--heading);font-size:.9rem;padding:16px 12px}
.sponsor-card .card-body{display:grid;place-items:center;min-height:88px;padding:16px}
.sponsor-card .card-body img{max-height:56px;width:auto;max-width:100%;object-fit:contain;margin:0 auto}
.sns-feed{margin-bottom:12px}
.sns-feed .card-body{padding:12px}
.sns-feed-lead{margin:0 0 8px;color:var(--heading);font-weight:700}
.sns-feed-widget{min-height:300px;border-radius:var(--radius-md);background:linear-gradient(180deg,var(--surface),var(--surface-2));border:1px solid var(--line)}

/* Horizontal scroll row (mobile swipe, desktop grid) */
.scroll-row{display:flex;gap:12px;overflow-x:auto;-webkit-overflow-scrolling:touch;
  scroll-snap-type:x mandatory;padding-bottom:10px;
  scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.scroll-row::-webkit-scrollbar{height:4px}
.scroll-row::-webkit-scrollbar-track{background:transparent}
.scroll-row::-webkit-scrollbar-thumb{background:var(--line);border-radius:999px}
.scroll-row>.card{flex-shrink:0;scroll-snap-align:start;width:min(78vw,280px)}
.scroll-row>.album-tile{flex-shrink:0;scroll-snap-align:start;width:min(52vw,200px)}
.scroll-row.album-row>.card,.scroll-row.album-row>.album-tile{width:min(52vw,200px)}

/* result cards */
.result-win,.result-loss,.result-draw{border-left:0}
.result-row .card .score-final{display:inline-block;margin:0 4px;font-size:1.35rem}
.result-card{display:flex;flex-direction:column;align-items:stretch;position:relative;padding:4px 10px;gap:2px}
.result-card-hit{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0;width:100%;color:inherit;text-decoration:none}
.result-card .d{align-self:center} /* P10-3: 日付ブロック廃止後もセレクタ維持 */
.result-card .score-final{font-size:1.15rem;line-height:1;margin:0;font-variant-numeric:tabular-nums;font-weight:800;min-width:1.4ch;text-align:right}
.result-card-venue{font-size:.72rem;display:inline;min-width:0;max-width:36%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-left:auto}
.result-card-tournament{font-size:.72rem;display:inline;min-width:0;max-width:32%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.result-card-map{font-size:.78rem;font-weight:800;color:var(--heading);text-decoration:underline;text-underline-offset:2px;padding:4px 6px;min-height:36px;display:inline-flex;align-items:center}
/* P10-3: PLAY風メタ＋2チーム縦並び */
.result-card__meta{display:flex;flex-wrap:nowrap;align-items:center;gap:6px;font-size:.74rem;color:var(--muted);min-height:22px;max-height:24px;overflow:hidden}
.result-card__meta .pill{padding:1px 6px;font-size:.68rem;line-height:1.2;min-height:0}
.result-card__date{font-variant-numeric:tabular-nums;font-weight:700;color:var(--heading);line-height:1.2}
.result-card__result{
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:4px;padding:2px 8px;font-size:.72rem;font-weight:800;line-height:1.2; /* P10-4: 勝敗ピルは極小角 */
}
.result-card__result--win{background:var(--navy);color:var(--on-dark);border:1.5px solid var(--navy)}
.result-card__result--lose{background:transparent;color:var(--navy);border:1.5px solid var(--navy)}
.result-card__result--draw{background:var(--surface-2);color:var(--muted);border:1.5px solid var(--line)}
.result-card__result--tbd{background:var(--surface-2);color:var(--muted);border:1.5px solid var(--line)}
.result-card__teams{display:flex;flex-direction:column;gap:0}
.result-card__team{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:0;border-top:1px solid var(--line);min-height:22px}
.result-card__team:first-child{border-top:none;padding-top:0}
.result-card__team--winner .result-card__team-name{font-weight:800;color:var(--heading)}
.result-card__team--winner .score-final{color:var(--heading)}
.result-loss .result-card__team:not(.result-card__team--winner) .score-final,
.result-draw .result-card__team .score-final,
.result-card__team:not(.result-card__team--winner) .score-final{color:var(--muted);font-weight:700}
.result-card__team-name{font-size:.84rem;font-weight:600;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.result-card__footer{display:flex;align-items:center;justify-content:flex-end;gap:4px;min-height:22px;padding-top:1px;border-top:1px solid var(--line)}
.result-card__footer .card-actions{
  margin:0;padding:0;border:0;gap:2px;margin-left:0;flex-wrap:nowrap;
  justify-content:flex-end;width:auto;
}
.result-card__footer .result-card-map{min-height:22px;padding:1px 6px;font-size:.72rem}
.sched-item--game{display:flex;flex-direction:column;align-items:stretch;position:relative}
.sched-item--game .result-card-hit{display:flex;gap:12px;align-items:center;flex:1;min-width:0;width:100%;color:inherit;text-decoration:none}
.sched-item--game .result-card-map{font-size:.78rem;font-weight:800;color:var(--heading);text-decoration:underline;text-underline-offset:2px;padding:6px 8px}
.card-actions{
  display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;
  padding:0 12px 10px;
  border-top:var(--border-hair);
  padding-top:8px;margin-top:8px;
  width:100%;box-sizing:border-box;
}
.card-actions .result-card-map{
  position:static;
  white-space:nowrap;
  min-height:var(--tap-min);
  display:inline-flex;align-items:center;
  padding:6px 10px;
}
@media(max-width:520px){
  .result-card .d{min-width:52px;padding:8px 8px}
  .result-card .d .day{font-size:1.15rem}
  .sched-item.result-card{padding:6px 10px}
  .result-card .score-final{font-size:1.2rem}
}

/* buttons */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  background:var(--surface);color:var(--heading);padding:10px 22px;border-radius:var(--radius-control);
  font-weight:800;border:1px solid var(--line);cursor:pointer;text-align:center;
  transition:background var(--motion-normal) var(--ease-out),color var(--motion-normal) var(--ease-out),border-color var(--motion-normal) var(--ease-out),transform var(--motion-fast) var(--ease-out),box-shadow var(--motion-normal) var(--ease-out);
  font-size:.9rem;min-height:var(--tap-min);line-height:1.4;
}
.btn:hover{background:var(--surface-2);color:var(--heading);border-color:var(--navy)}
.btn:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.btn:active{transform:scale(.98)}
.btn.solid{background:var(--navy);color:var(--on-dark);border-color:var(--navy)}
.btn.solid:hover,.btn.solid:focus-visible{background:var(--navy-2);border-color:var(--navy-2);color:var(--on-dark)}
.btn.ghost{background:var(--surface);color:var(--heading);border:2px solid var(--navy)}
.btn.ghost:hover,.btn.ghost:focus-visible{background:var(--navy);color:var(--on-dark)}
.btn.gold{background:var(--gold);color:var(--navy);border-color:var(--gold-deep)}
.btn.gold:hover,.btn.gold:focus-visible{background:var(--gold-deep);color:var(--navy)}
.btn.red{border-color:var(--red);color:var(--red);background:var(--surface)}
.btn.red:hover,.btn.red:focus-visible{background:var(--red);color:var(--on-dark)}
.btn.block{display:block;width:100%}
.btn.ghost-dark{background:rgba(255,255,255,.10);color:var(--on-dark);border:1px solid rgba(255,255,255,.28)}
.btn.ghost-dark:hover,.btn.ghost-dark:focus-visible{background:rgba(255,255,255,.22);color:var(--on-dark)}
[data-theme="dark"] .btn.ghost{border-color:var(--heading)}
[data-theme="dark"] .btn:not(.solid):not(.gold):not(.red):not(.ghost-dark){border-color:var(--heading)}

/* Quick links (top nav shortcuts) */
.quick-links{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0}
.quick-links a,.quick-links .ql-card{display:flex;flex-direction:column;gap:5px;background:var(--surface);border-radius:var(--radius-lg);
  box-shadow:var(--shadow);padding:14px 12px;font-weight:700;border:1px solid var(--line);
  transition:box-shadow var(--motion) ease,transform var(--motion) ease;text-decoration:none;color:inherit}
.quick-links a:hover,.quick-links a:focus-visible,
.quick-links .ql-card:hover,.quick-links .ql-card:focus-visible{transform:translateY(-2px);box-shadow:var(--elev-hover)}
.quick-links .ql-icon{font-size:1.25rem;display:block;color:var(--heading)}
.quick-links .ql-title{font-size:.9rem;color:var(--heading)}
.quick-links .ql-text{font-size:.76rem;color:var(--muted);font-weight:600}
.quick-links--home{margin:0}
.quick-links--home .ql-card--primary{
  background:var(--surface);
  box-shadow:var(--elev-rest);
  position:relative;
}
.quick-links--home .ql-card--primary .ql-icon{font-size:1.25rem;color:var(--navy)}
.quick-links--home .ql-card--primary .ql-title{font-size:1rem;font-weight:800}
/* Secondary quick links — underline tabs */
.quick-links-secondary.tabs{margin:0 0 20px}
.quick-links-secondary .tab{gap:5px}
.quick-links-secondary .tab i{font-size:.9em;color:var(--heading)}

/* 写真館の操作: 保護者向け3件を横1行（役員用は list-fold 内） */
.gallery-actions{display:flex;flex-wrap:nowrap;gap:10px;margin:16px 0 20px}
.gallery-actions .ga-item{display:flex;flex:1 1 0;min-width:0;flex-direction:column;align-items:center;justify-content:flex-start;gap:8px;
  min-height:88px;padding:12px 8px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);
  color:var(--heading);font-weight:700;font-size:.78rem;line-height:1.25;text-align:center;box-shadow:var(--shadow);
  transition:transform var(--motion) ease,box-shadow var(--motion) ease,border-color var(--motion) ease}
.gallery-actions .ga-item:hover,.gallery-actions .ga-item:focus-visible{transform:translateY(-2px);box-shadow:var(--elev-hover)}
.gallery-actions .ga-ic{display:grid;place-items:center;color:var(--heading);flex-shrink:0}
.gallery-actions .ga-item i{font-size:1.5rem}
.gallery-staff-fold .gallery-actions{margin:0}
.gallery-actions--staff{flex-wrap:wrap}
.gallery-actions--staff .ga-item{flex:1 1 calc(33.333% - 7px);min-width:96px}

/* PWA install banner */
.install-banner{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;margin:10px var(--page-inline) 0;padding:10px 12px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);
  box-shadow:var(--shadow);font-size:.84rem;font-weight:700;color:var(--heading)}
.install-banner[hidden]{display:none}
.install-banner-icon{font-size:1.1rem;color:var(--heading);flex-shrink:0}
.install-banner-text{flex:1;line-height:1.35;min-width:12rem}
.install-banner .btn{white-space:nowrap;flex-shrink:0;width:auto;padding:8px 16px;font-size:.82rem;min-height:var(--tap-min,44px)}
.install-banner-close{background:none;border:none;font-size:1.25rem;line-height:1;color:var(--muted);cursor:pointer;padding:2px 6px;min-width:44px;min-height:44px;border-radius:var(--radius-sm)}
.install-banner-help{font-size:.78rem;font-weight:700;color:var(--heading);text-decoration:underline;text-underline-offset:2px;min-height:44px;display:inline-flex;align-items:center}
.install-banner-help[hidden]{display:none}
@media(max-width:767px){
  .install-banner{margin-bottom:8px}
}
@media(min-width:768px){.install-banner{max-width:var(--container-max);margin-left:auto;margin-right:auto}}

.sw-update-banner{
  position:fixed;left:50%;bottom:calc(var(--bottom-nav-height,0px) + env(safe-area-inset-bottom) + 16px);
  transform:translateX(-50%);z-index:80;display:flex;align-items:center;gap:12px;
  padding:12px 16px;background:var(--navy);color:var(--on-dark);border-radius:var(--radius-md);
  box-shadow:var(--shadow-strong);font-size:.86rem;font-weight:700;max-width:min(92vw,420px);
  border:1px solid color-mix(in srgb, var(--color-warning) 45%, transparent);
}
.sw-update-banner > i{color:var(--color-warning);flex-shrink:0}
.sw-update-banner .btn{background:var(--color-warning);color:var(--navy);border:none;width:auto;min-height:var(--tap-min,44px);padding:8px 14px}

/* Notice bar */
.notice{background:linear-gradient(135deg,var(--red),var(--red-deep));color:var(--on-dark);border-radius:var(--radius-md);padding:12px 14px;font-weight:700;margin-bottom:14px;box-shadow:var(--shadow);font-size:.92rem}

/* Next schedule */
.sched-item{
  display:flex;gap:12px;align-items:center;background:var(--surface);
  border-radius:var(--radius-md);padding:12px 14px;
  border:1px solid var(--line);box-shadow:var(--shadow);margin-bottom:8px;
  transition:box-shadow var(--motion) ease,transform var(--motion) ease,border-color var(--motion) ease;
}
.sched-item.result-card,
.sched-item.sched-item--game{
  flex-direction:column;align-items:stretch;gap:0;
}
.sched-item.result-card{
  padding:4px 10px;gap:2px;margin-bottom:0;
}
.sched-item:hover,.sched-item:focus-within{box-shadow:var(--elev-hover);transform:translateY(-1px)}
/* 種別は pill「試合/練習」で表示。片側線は廃止(D1-D) */
.sched-item--game,.sched-item--practice{border-left:0}
.sched-item .d{
  background:linear-gradient(180deg,var(--navy),var(--navy-3));color:var(--on-dark);
  border-radius:var(--radius-sm);padding:8px 10px;text-align:center;min-width:58px;flex-shrink:0;
}
.sched-item .d .day{font-size:1.25rem;font-weight:800;line-height:1}

/* Scoreboard */
.scoreboard{width:100%;border-collapse:collapse;background:var(--surface);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow);font-variant-numeric:tabular-nums}
.scoreboard th,.scoreboard td{border:1px solid var(--line);padding:6px 8px;text-align:center;font-size:.82rem;white-space:nowrap}
.scoreboard thead th{background:var(--bg);font-weight:700}
.score-final{font-size:2rem;font-weight:800;color:var(--heading)}
.result-win .result-card__team--winner .score-final{color:var(--heading)}
.result-loss .score-final{color:var(--muted)}
.result-draw .score-final{color:var(--muted)}

/* Player card (P13-4: 1:1 thumb + identity below) */
.player-card{
  display:flex;flex-direction:column;min-width:0;height:100%;
  text-align:left;color:inherit;
  position:relative; /* ISSUE-20260916-0012 案A: .num-pre の containing block */
}
.player-card .ph{
  position:relative;aspect-ratio:1;overflow:hidden;
  border-radius:var(--radius-sm);background:var(--surface-2);
}
.player-card .ph img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.player-card .ph--empty{display:grid;place-items:center;color:var(--muted)}
.player-card .ph-num{
  font-size:clamp(1.35rem,10vw,2rem);font-weight:800;line-height:1;
  font-variant-numeric:tabular-nums;color:var(--muted);
}
.player-card .num{
  display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;
  width:24px;height:24px;margin:0;
  border-radius:50%;
  background:var(--navy);color:var(--gold);
  border:2px solid var(--gold);
  box-shadow:var(--shadow);
  font-weight:800;font-size:.72rem;line-height:1;
  white-space:nowrap;
}
.player-card .num-pre{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
.player-card__foot{
  display:flex;flex:1;flex-direction:column;justify-content:flex-start;
  padding:6px 2px 8px;min-height:2.75rem;
}
.player-card__identity{
  display:flex;align-items:center;gap:6px;min-width:0;
}
.player-card__name{
  flex:1;min-width:0;font-size:.78rem;font-weight:700;line-height:1.25;color:var(--heading);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.player-card__pos{
  display:block;font-size:.68rem;line-height:1.25;min-height:1.25em;margin-top:2px;
}
/* 成長記録一覧：選手を写真で見分けやすくするアバター */
.growth-th-photo,.growth-td-photo{width:64px;text-align:center}
.growth-avatar{display:inline-grid;place-items:center;width:48px;height:48px;border-radius:50%;
  overflow:hidden;background:var(--bg);border:1px solid var(--line)}
.growth-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.growth-avatar__icon{display:grid;place-items:center;width:100%;height:100%;color:var(--muted);font-size:1.1rem}
/* P13-4: 390px=3列 / 768px=4列 / 1024px+=6列 */
.player-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
@media(min-width:768px){
  .player-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(min-width:1024px){
  .player-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
}
.player-list-note{font-size:.72rem;line-height:1.4;max-width:36em}

/* Home stacked cards — 外枠はフレームレス（内側カード／区切り線が唯一の面） */
.home-stack-card{
  background:transparent;border:none;box-shadow:none;border-radius:0;padding:0;
}
.home-stack-card .section-title{margin-top:0}
.home-stack-card .scroll-row{padding-bottom:2px}
.home-stack-card .sched-item:last-child{margin-bottom:0}
.home-stack-card .sched-item{
  box-shadow:var(--shadow);
}
/* 会場など「内側カードが無い」stack は単独の面として維持 */
.home-stack-card.venue-card{
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:16px 16px 14px;
}

/* Home news list — 区切り線リスト（カード入れ子なし） */
.news-list{display:grid;gap:0;background:transparent}
.news-list-item{
  display:block;padding:14px 2px;border-radius:0;
  border-bottom:1px solid var(--line);
  transition:background var(--motion) ease;
}
.news-list-item.has-thumb{display:flex;gap:12px;align-items:center}
.news-list-body{display:grid;gap:6px;min-width:0}
.news-thumb{width:64px;height:64px;flex-shrink:0;border-radius:var(--radius-sm);overflow:hidden;background:var(--bg);box-shadow:var(--shadow);transition:transform var(--motion) ease,box-shadow var(--motion) ease}
.news-list-item:hover{background:color-mix(in srgb, var(--surface-2) 70%, transparent)}
.news-list-item:hover .news-thumb{transform:translateY(-1px);box-shadow:var(--shadow)}
.news-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.news-list-item:first-child{padding-top:4px}
.news-list-item:last-child{border-bottom:none;padding-bottom:4px}
.news-list-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.news-list-item .date{font-size:.76rem;white-space:nowrap;color:var(--muted)}
.news-list-item .tag{margin-bottom:0}
.news-list-title{font-size:.95rem;font-weight:800;line-height:1.45;color:var(--heading);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.news-list-empty{margin:0}
/* News list page thumbnail */
.news-card-thumb{aspect-ratio:16/9;background:var(--bg);overflow:hidden;border-radius:var(--radius-md) var(--radius-md) 0 0}
.news-card-thumb img{width:100%;height:100%;object-fit:cover;display:block}

/* Social link cards */
.social-links-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.social-links-grid .card-body{padding:12px 8px}
.social-links-grid .social-card .card-body{font-size:.82rem}
.social-links-grid .social-card i{display:block;font-size:1.15rem;margin-bottom:6px}

/* Tables */
.data-table{width:100%;border-collapse:collapse;background:var(--surface);box-shadow:var(--shadow);border-radius:var(--radius-lg);overflow:hidden}
.data-table th,.data-table td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:center;font-size:.88rem}
.data-table th{white-space:nowrap;word-break:keep-all}
.data-table thead th{background:var(--navy);color:var(--on-dark)}
/* 成績表など横スクロール前提のテーブルは本文セルも縦落ちさせない */
.hint-scroll .data-table td{white-space:nowrap}
.data-table td.name{text-align:left;font-weight:700}
.table-wrap{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;border-radius:var(--radius-sm)}
.hint-scroll::after{content:"↔ 左右にスクロールできます";display:block;font-size:.76rem;color:var(--muted);margin-top:6px}
@media(min-width:768px){.hint-scroll::after{display:none}}
.table-first-sticky th:first-child,
.table-first-sticky td:first-child{position:sticky;left:0;background:var(--surface);z-index:2;text-align:left;font-weight:700}
.table-first-sticky thead th:first-child{background:var(--navy);z-index:4}

/* Player analysis */
.player-header{border-top:0;box-shadow:var(--elev-rest);overflow:hidden}
.player-header-inner{display:grid;grid-template-columns:120px 1fr;gap:16px;align-items:center}
.player-photo{width:120px;height:120px;border-radius:var(--radius-md);background:linear-gradient(135deg,var(--navy),var(--navy-2));color:var(--on-dark);display:grid;place-items:center;overflow:hidden;box-shadow:var(--shadow)}
.player-photo img{width:100%;height:100%;object-fit:cover}
.player-eyebrow{margin:0 0 4px;font-size:.72rem;letter-spacing:.14em;font-weight:800;color:var(--muted)}
.player-number{display:inline-block;padding:4px 10px;border-radius:999px;background:var(--navy);color:var(--on-dark);font-weight:800}
.player-name{margin:8px 0 0;font-size:clamp(1.28rem,3vw,1.7rem);font-weight:800;line-height:1.3;color:var(--heading);text-wrap:balance}
.player-name .muted{font-size:.72em;font-weight:600}
.player-badges{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.player-badge{display:inline-flex;padding:4px 10px;border:1px solid var(--line);border-radius:999px;font-size:.82rem;background:var(--surface-2);font-weight:700}
.player-goal{margin:.75rem 0 0;color:var(--muted);line-height:1.55}
.tab-panel{display:none}
.tab-panel.is-active{display:block}
/* P13-5: 選手分析（数値タイル・内訳バー・スパークライン・レンジ） */
.stat-tile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:16px}
@media(min-width:768px){.stat-tile-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.stat-tile__label{font-size:.72rem;margin:0 0 4px}
.stat-tile__value{display:block;font-size:clamp(1.15rem,4vw,1.45rem);font-variant-numeric:tabular-nums;color:var(--heading)}
.stat-tile__ctx{font-size:.68rem;margin:4px 0 0;line-height:1.3}
.player-stat-empty{margin:8px 0 4px;font-size:.88rem}
.player-year-nav{margin-bottom:4px}
.stat-stack{margin:16px 0}
.stat-stack__legend{display:flex;flex-wrap:wrap;gap:8px 12px;margin:0 0 8px;padding:0;list-style:none;font-size:.72rem;color:var(--heading)}
.stat-stack__swatch{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}
.stat-stack__swatch--hits,.stat-stack__seg--hits{background:var(--navy)}
.stat-stack__swatch--walks,.stat-stack__seg--walks{background:color-mix(in srgb,var(--navy) 80%,var(--surface))}
.stat-stack__swatch--strikeouts,.stat-stack__seg--strikeouts{background:color-mix(in srgb,var(--navy) 58%,var(--surface))}
.stat-stack__swatch--other,.stat-stack__seg--other{background:color-mix(in srgb,var(--navy) 35%,var(--surface))}
.stat-stack__track{display:flex;gap:2px;height:20px;border-radius:var(--radius-sm);overflow:hidden;background:var(--surface)}
.stat-stack__counts{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-top:4px;font-size:.68rem;text-align:center}
.stat-stack__seg{min-width:3px;transition:flex-basis var(--motion)}
.stat-stack__count{font-variant-numeric:tabular-nums}
.stat-spark{margin:16px 0}
.stat-spark__wrap{max-width:420px}
.stat-spark__svg{display:block;width:100%;height:48px}
.stat-spark__line{fill:none;stroke:var(--navy);stroke-width:2;vector-effect:non-scaling-stroke}
.stat-spark__team-avg{stroke:var(--muted);stroke-width:1;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}
.stat-spark__labels{display:flex;justify-content:space-between;font-size:.68rem;margin-top:4px}
.stat-spark__note{font-size:.66rem;margin:4px 0 0}
.stat-range{margin:16px 0}
.stat-range__row{display:flex;align-items:center;gap:8px;font-size:.68rem}
.stat-range__track{position:relative;flex:1;height:8px;border-radius:999px;background:var(--line);min-width:0}
.stat-range__dot{position:absolute;top:50%;width:10px;height:10px;margin-left:-5px;border-radius:50%;background:var(--navy);transform:translateY(-50%);box-shadow:0 0 0 2px var(--surface)}
.stat-range__self{font-size:.72rem;margin:6px 0 0}
.page-layout{flex:1;display:flex;flex-direction:column}
.page-layout .site-main{flex:1;width:100%}
.player-links{display:flex;gap:8px;flex-wrap:wrap}

/* Gallery */
.album-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px}
.photo-grid .pcell{position:relative;aspect-ratio:1;border-radius:var(--radius-md);overflow:hidden;background:var(--bg);box-shadow:var(--shadow);transition:transform var(--motion) ease,box-shadow var(--motion) ease}
.photo-grid .pcell:hover{transform:translateY(-2px);box-shadow:var(--elev-hover)}
.photo-grid .pcell img{width:100%;height:100%;object-fit:cover}
.photo-grid .pcell input{position:absolute;top:6px;left:6px;width:20px;height:20px}
.album-cover{aspect-ratio:4/3;background:var(--bg);display:grid;place-items:center;color:var(--muted);border-radius:var(--radius-md) var(--radius-md) 0 0;overflow:hidden}
.album-cover img{width:100%;height:100%;object-fit:cover}
.gallery-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.gallery-album-card,.gallery-photo-card{display:flex;flex-direction:column;height:100%}
.gallery-album-card .card-body,.gallery-photo-card .card-body{padding:10px 12px 12px}
.gallery-album-card strong,.gallery-photo-card strong{display:block;font-size:.82rem;line-height:1.35;color:var(--heading)}
.gallery-flags{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px;align-items:center}
.pill--public{background:var(--green)}
.pill--private{background:var(--muted)}
.pill--download{background:var(--gold);color:var(--heading);font-weight:800}
.gallery-photo-thumb{display:block;aspect-ratio:1;background:var(--bg);overflow:hidden;border-radius:var(--radius-md) var(--radius-md) 0 0}
.gallery-photo-thumb img{width:100%;height:100%;object-fit:cover}
.gallery-photo-players{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.gallery-photo-players .pill{padding:2px 8px;font-size:.68rem}
.gallery-photo-card form{padding:0 10px 10px;margin-top:auto}
.deadline-note{font-size:.78rem;color:var(--muted)}

/* Forms */
.form-box{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;max-width:520px;margin:0 auto}
.form-box label,.form-label{display:block;font-weight:700;margin:12px 0 4px;color:var(--heading)}
.input,.form-input,.form-box input,.form-box select,.form-box textarea,
input[type="text"],input[type="email"],input[type="tel"],input[type="password"],input[type="number"],input[type="search"],input[type="date"],
select,textarea{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);font-size:16px;font-family:inherit;min-height:var(--tap-min);background:var(--surface);color:var(--ink)}
.form-box textarea,textarea{min-height:6rem}
.form-help{margin:0;font-size:max(.875rem,14px);color:var(--muted);line-height:1.45}
/* P10-6: share_receive の hidden 属性がグリッド等の display に負けないようにする */
#ios-notice[hidden],#no-files-msg[hidden],#preview-area[hidden],#ios-file-input-area[hidden]{display:none !important}
.field{margin:0 0 4px}
.field--error input,.field--error select,.field--error textarea{border-color:var(--red)}
.field-error{color:var(--red);font-size:.86rem;font-weight:700;margin:6px 0 0}
.field-hint{font-size:max(.875rem,14px);color:var(--muted);margin:4px 0 12px}
.privacy-note{font-size:.86rem;color:var(--muted);line-height:1.55;margin:14px 0}
.privacy-consent{margin-top:8px}
.checkbox-label{display:flex;align-items:flex-start;gap:10px;font-weight:700;cursor:pointer;min-height:var(--tap-min)}
.checkbox-label input[type="checkbox"]{width:auto;min-width:20px;min-height:20px;margin-top:2px;flex-shrink:0}
.required{color:var(--red);font-weight:800}
.goods-shop-cta{margin:0 0 16px;display:grid;gap:8px}
.goods-shop-cta .btn{width:auto;justify-self:start}
.goods-card__media{aspect-ratio:1/1;overflow:hidden;background:var(--bg);display:grid;place-items:center}
.goods-card__media img{width:100%;height:100%;object-fit:contain}
.goods-card__media--empty{display:grid;place-items:center;background:var(--surface-2);color:var(--muted);font-size:2rem}
.goods-ext-link{margin:10px 0 0}

/* Year lock UI */
.year-chip{display:flex;align-items:center;gap:10px;background:var(--surface);border-radius:var(--radius-md);padding:14px;box-shadow:var(--shadow)}
.year-chip .lock{margin-left:auto}
.unlocked{color:var(--status-ok);font-weight:700}

/* ===== Layout: Footer ===== */
.site-footer{margin-top:auto;background:var(--navy);color:var(--on-dark);padding:32px 0 20px;border-top:1px solid rgba(255,255,255,.12);overflow-x:clip}
.footer-inner,.copyright{max-width:var(--container-max);margin-left:auto;margin-right:auto;width:100%;box-sizing:border-box;padding-left:var(--page-inline);padding-right:var(--page-inline)}
.footer-inner{display:grid;gap:22px;align-items:start}
.footer-inner--member{display:block}
.footer-col{min-width:0;max-width:100%}
.footer-heading{margin:0 0 8px;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--on-dark);font-weight:800}
.footer-brand{display:flex;align-items:center;gap:10px;min-width:0}
.footer-brand p{margin:.2rem 0 0;color:var(--on-dark-muted);font-size:.88rem}
.footer-nav,.footer-support,.footer-sns-links{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.sns-link,.footer-nav a,.footer-support a{display:inline-flex;align-items:center;justify-content:center;padding:8px 12px;border-radius:var(--radius-sm);background:rgba(255,255,255,.07);font-weight:700;color:var(--on-dark-soft);font-size:var(--text-sm);transition:background var(--motion) ease;min-height:max(24px,var(--tap-min));min-width:0;max-width:100%;box-sizing:border-box;text-align:center;overflow-wrap:anywhere}
.sns-link:hover,.footer-nav a:hover,.footer-support a:hover,.sns-link:focus-visible,.footer-nav a:focus-visible,.footer-support a:focus-visible{background:rgba(255,255,255,.15);color:var(--on-dark)}
.sns-link--icon{width:44px;height:44px;padding:0;font-size:1.05rem;flex:0 0 auto}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;left:0;top:0}
.footer-theme{display:flex;justify-content:center;margin-top:14px}
.copyright{margin-top:14px;color:rgba(255,255,255,.56);font-size:.82rem;padding-top:var(--space-3);border-top:1px solid rgba(255,255,255,.08);text-align:center;overflow-wrap:anywhere}
.footer-compact--member{display:none}
.site--member .footer-full{display:none}
.site--member .footer-compact--member{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:0 auto 4px}
.site--member .footer-compact__link{color:var(--on-dark-soft);font-size:.82rem;font-weight:700;text-decoration:underline;text-underline-offset:2px;min-height:max(24px,var(--tap-min));display:inline-flex;align-items:center;padding:4px 8px}
.site--member .site-footer{padding-top:18px;padding-bottom:14px}
.site--member .footer-theme{margin-top:8px}
.site--member .copyright{margin-top:8px;padding-top:10px;max-width:none}
@media(min-width:768px){.footer-inner.footer-full{grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr))}}
@media(max-width:480px){
  .footer-brand{flex-direction:column;align-items:flex-start}
  .footer-brand p{margin:0}
  .footer-inner.footer-full{gap:14px}
  .footer-nav,.footer-support{flex-direction:column;align-items:stretch}
  .footer-nav a,.footer-support a{flex:1 1 auto;width:100%}
  .brand-wordmark--footer{max-height:36px}
}
@media(min-width:1024px){
  .main-nav{gap:2px}
}

/* D-2: 横並びの上メニューは 1024px〜のみ。768〜1023 はロゴに重なるため☰（下の max-width:1023） */
@media(min-width:1024px){
  .nav-toggle{display:none !important}
  .nav-quick,.nav-meta{display:none !important}
  .nav-desk{
    display:flex;align-items:center;flex-wrap:wrap;gap:2px 4px;
    margin-left:auto;min-width:0;max-width:100%;
  }
  .nav-logout-form--desk{display:inline-flex;margin:0}
  .nav-logout-form--desk .nav-link{cursor:pointer}
  .bottom-nav{display:none}
}
@media(min-width:768px){
  :root{--header-height:68px;--section-gap:36px;--block-gap:20px}
  .header-inner{padding:10px var(--page-inline);min-height:var(--header-height);gap:var(--space-4)}
  .brand-logo{width:44px;height:44px}
  .hero-home{grid-template-columns:minmax(0,1.7fr) minmax(260px,.9fr)}
  .hero-home--bleed{
    min-height:clamp(280px,36vw,420px);padding:40px max(var(--page-inline),5vw);
    display:grid;grid-template-columns:minmax(0,1.35fr) minmax(240px,.85fr);
    gap:28px;align-items:center;
  }
  .hero-brand-panel{
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
    position:relative;z-index:1;min-height:220px;padding:28px 20px;
    border-radius:var(--radius-lg);
    background:
      radial-gradient(circle at 30% 20%,color-mix(in srgb, var(--gold) 22%, transparent),transparent 55%),
      linear-gradient(160deg,color-mix(in srgb, var(--navy-3) 70%, transparent),color-mix(in srgb, var(--navy) 55%, transparent));
    border:1px solid color-mix(in srgb, var(--gold) 35%, transparent);
    box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--on-dark) 8%, transparent);
  }
  .hero-brand-panel__logo{
    width:min(42%,160px);height:auto;aspect-ratio:1;border-radius:50%;
    background:var(--white);padding:8px;box-shadow:var(--elev-rest);
  }
  .hero-brand-panel__name{
    margin:4px 0 0;font-size:1.05rem;font-weight:800;letter-spacing:.06em;
    color:var(--on-dark);text-align:center;
  }
  .hero-brand-panel__meta{
    margin:0;font-size:.72rem;font-weight:700;letter-spacing:.18em;
    color:var(--on-dark-muted);text-align:center;
  }
  .hero-slider--bleed{max-height:min(68vh,620px)}
  .hero-lead{font-size:1.05rem;line-height:1.65;max-width:38rem}
  .section-kicker{letter-spacing:.16em;font-size:.78rem}
  .section-title{font-size:1.35rem;letter-spacing:.01em}
  .quick-links--home{gap:14px;margin:8px 0 0}
  .quick-links--home .ql-card{padding:18px 14px;transition:transform var(--motion) ease,box-shadow var(--motion) ease}
  .quick-links--home .ql-card:hover,.quick-links--home .ql-card:focus-visible{transform:translateY(-3px);box-shadow:var(--elev-hover)}
  .quick-links-secondary{margin:16px 0 28px;gap:10px}
  .home-brandbar__inner{padding:18px max(var(--page-inline),4vw) 14px}
  .home-page-title--bar{font-size:1.35rem}
  .page-home .section--brand-band{padding:var(--space-5) var(--space-4)}
  /* Scroll rows become grid on desktop */
  .scroll-row{overflow:visible;scroll-snap-type:none;display:grid;padding-bottom:0}
  .scroll-row>.card,.scroll-row.album-row>.card,.scroll-row.album-row>.album-tile{width:auto}
  .scroll-row.result-row{grid-template-columns:repeat(3,minmax(0,1fr))}
  .scroll-row.album-row{grid-template-columns:repeat(4,minmax(0,1fr))}
  .gallery-photo-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
}

.staff-grid{align-items:stretch}
.staff-card{display:flex;flex-direction:column;height:100%}
.staff-card__photo{aspect-ratio:1;background:var(--surface-2);overflow:hidden}
.staff-card__photo img{width:100%;height:100%;object-fit:cover}
.staff-card__photo--empty{
  display:grid;place-items:center;color:var(--muted);
  aspect-ratio:auto;min-height:72px;max-height:96px;font-size:1.35rem;
  border-bottom:1px solid var(--line);
}
.staff-card__role{margin:0 0 4px;font-size:.78rem;font-weight:800;letter-spacing:.08em;color:var(--muted)}
.staff-card__name{margin:0 0 8px;font-size:1.05rem;color:var(--heading)}
@media (max-width:480px){
  .page-staff .staff-grid.grid.cols-3,
  .page-staff .staff-grid{grid-template-columns:1fr}
  .page-about .staff-grid.grid.cols-3,
  .page-about .staff-grid{grid-template-columns:1fr}
}
@media (min-width:481px) and (max-width:767px){
  .page-staff .staff-grid.grid.cols-3,
  .page-about .staff-grid.grid.cols-3{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (min-width:768px){
  .page-staff .staff-grid.grid.cols-3,
  .page-about .staff-grid.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
}
.flow-list{margin:0;padding-left:1.2rem;line-height:1.8}
.flow-list li{margin:0 0 6px}
.measure{max-width:42rem}
.privacy-toc__heading{margin:0 0 8px;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--heading);font-weight:800}
.privacy-toc__list{margin:0;padding-left:0;list-style:none;line-height:1.4;display:flex;flex-direction:column;gap:4px}
.privacy-toc__list a{
  display:flex;align-items:center;min-height:var(--tap-min);padding:10px 12px;
  text-decoration:none;border-radius:var(--radius-sm);border:1px solid var(--line);
  color:var(--heading);font-weight:700;background:var(--surface);
}
.privacy-toc__list a:hover,.privacy-toc__list a:focus-visible{background:var(--face-tinted);border-color:var(--gold)}
[id^="privacy-"]{scroll-margin-top:calc(var(--header-height,64px) + 12px)}
.venue-note{margin:10px 0;padding:12px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-2)}
.venue-note__title{margin:0 0 6px;font-size:.9rem;color:var(--heading)}
.trial-status{margin:0 0 6px}
.center{text-align:center}
.mt{margin-top:12px}
.mb{margin-bottom:12px}
.pill{display:inline-block;padding:2px 10px;border-radius:var(--radius-sm);background:var(--navy);color:var(--on-dark);font-size:.75rem}
/* フィルターチップ（アイコン付き・角丸で統一） */
.filter-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.filter-chips .pill{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;font-size:.8rem;text-decoration:none}
.filter-chips .pill i{font-size:.9em}
/* 試合結果を日程に残したときの表示（結果ラベル色＋スコア） */
.pill--result{color:var(--on-dark)}
.pill--win{background:var(--game,#1f6feb)}
.pill--lose{background:var(--muted,#64748b)}
.pill--draw{background:var(--navy-2,#334155)}
.sched-score{display:inline-block;margin-left:6px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--heading)}
.cal-chip .cal-chip-score{flex:0 0 auto;font-weight:800;font-variant-numeric:tabular-nums}

/* Filter bar */
.filter-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}
.filter-bar label{display:flex;align-items:center;gap:6px;font-weight:700;font-size:.9rem}
.filter-bar select,.filter-bar input[type="number"]{padding:6px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);font-size:.9rem;font-family:inherit}

/* Button size/state variants */
.btn.btn--sm,.btn--sm{padding:8px 14px;font-size:.82rem;min-height:var(--tap-min)}
.btn--outline{background:var(--surface);color:var(--heading);border:2px solid var(--navy)}
.btn--outline:hover,.btn--outline:focus-visible{background:var(--navy);color:var(--on-dark)}
.btn--active{background:var(--navy);color:var(--on-dark);border-color:var(--heading);cursor:default}

/* Card extras */
.card-title{font-size:1rem;font-weight:800;margin:0 0 10px;color:var(--heading)}
.card-meta{font-size:.84rem;color:var(--muted);margin-bottom:12px}

/* Ranking grid */
.ranking-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-top:12px}
.ranking-block{background:var(--surface);border-radius:var(--radius);border:1px solid var(--line);box-shadow:var(--shadow);padding:12px}
.ranking-title{font-size:.9rem;font-weight:800;color:var(--heading);margin:0 0 8px;border-bottom:1px solid var(--line);padding-bottom:4px}

/* Stat cards (attendance summary) */
.stat-cards{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.stat-card{flex:1;min-width:80px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;text-align:center;border:1px solid var(--line)}
/* 状態は stat-label / badge--* で表示。上線は廃止(D1-D)。未定は淡い警告塗りでトークン維持 */
.stat-card--attend,.stat-card--absent{border-top:0}
.stat-card--undecided{border-top:0;background:color-mix(in srgb, var(--color-warning) 12%, var(--surface))}
.stat-num{display:block;font-size:1.8rem;font-weight:800;color:var(--heading)}
.stat-label{display:block;font-size:.8rem;color:var(--muted);margin-top:2px}

/* Attendance badges */
.badge--attend{background:var(--navy);color:var(--on-dark);padding:2px 8px;border-radius:var(--radius-sm);font-size:.78rem;font-weight:700}
.badge--absent{background:var(--red);color:var(--on-dark);padding:2px 8px;border-radius:var(--radius-sm);font-size:.78rem;font-weight:700}
/* 未定=警告色。--color-warning（member でも青に化けない）。文字は濃紺で AA 確保 */
.badge--undecided{background:var(--color-warning);color:var(--navy);padding:2px 8px;border-radius:var(--radius-sm);font-size:.78rem;font-weight:700}

/* Mobile + tablet chrome（D-2: 〜1023 まで☰。768〜でロゴと上メニューが重なるのを防ぐ） */
@media(max-width:1023px){
  body.nav-open{overflow:hidden}
  .header-inner{padding:6px var(--page-inline);flex-wrap:nowrap}
  .brand{min-width:0;max-width:calc(100% - 108px);flex:1}
  .nav-toggle{display:flex}
  body.nav-open .nav-toggle span:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
  body.nav-open .nav-toggle span:nth-child(2){opacity:0}
  body.nav-open .nav-toggle span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}
  .main-nav{
    display:none;position:fixed;
    top:var(--header-height);left:0;right:0;bottom:0;
    height:calc(100dvh - var(--header-height));
    z-index:56;flex-direction:column;flex-wrap:nowrap;align-items:stretch;justify-content:flex-start;gap:0;
    margin:0;padding:10px var(--page-inline) calc(var(--bottom-nav-height) + 20px + env(safe-area-inset-bottom));
    width:100%;max-width:100%;min-width:0;box-sizing:border-box;
    background:var(--surface);
    color:var(--heading);
    overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
    border-top:1px solid var(--line);
    box-shadow:var(--shadow);
  }
  .main-nav.is-open,body.nav-open .main-nav{display:flex}
  .nav-desk{display:none !important}
  /* 明色ドロワー上で .main-nav a の --on-dark-soft / on-dark-faint を打ち消し（WCAG AA） */
  body.nav-open .main-nav,
  body.nav-open .main-nav a,
  body.nav-open .main-nav .nav-logout-btn{
    color:var(--ink);
  }
  body.nav-open .main-nav a:hover,
  body.nav-open .main-nav a:focus-visible,
  body.nav-open .main-nav .nav-logout-btn:hover,
  body.nav-open .main-nav .nav-logout-btn:focus-visible{
    color:var(--heading);
    background:var(--surface-2);
  }
  body.nav-open .main-nav a[aria-current="page"]{
    background:color-mix(in srgb, var(--gold) 14%, var(--surface));
    color:var(--heading);
    box-shadow:inset 0 -2px 0 var(--gold);
  }
  body.nav-open .main-nav .nav-quick-item{
    background:var(--surface-2);
    border:1px solid var(--line);
    color:var(--ink);
    box-shadow:none;
  }
  body.nav-open .main-nav .nav-quick-item[aria-current="page"]{
    background:color-mix(in srgb, var(--gold) 18%, var(--surface));
    border-color:color-mix(in srgb, var(--gold) 55%, var(--line));
    color:var(--heading);
    box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--gold) 35%, transparent);
  }
  body.nav-open .main-nav .nav-quick-item i{color:var(--navy)}
  body.nav-open .main-nav .nav-meta .nav-row i,
  body.nav-open .main-nav .nav-meta .nav-logout-btn i{color:var(--navy)}
  [data-theme="dark"] body.nav-open .main-nav .nav-quick-item i,
  [data-theme="dark"] body.nav-open .main-nav .nav-meta .nav-row i,
  [data-theme="dark"] body.nav-open .main-nav .nav-meta .nav-logout-btn i,
  :root:not([data-theme="light"]) body.nav-open .main-nav .nav-quick-item i,
  :root:not([data-theme="light"]) body.nav-open .main-nav .nav-meta .nav-row i,
  :root:not([data-theme="light"]) body.nav-open .main-nav .nav-meta .nav-logout-btn i{
    color:var(--gold);
  }
  body.nav-open .main-nav .nav-meta .nav-row,
  body.nav-open .main-nav .nav-meta .nav-logout-btn{
    background:transparent;
    color:var(--ink);
    box-shadow:none;
  }
  body.nav-open .main-nav .nav-meta .nav-row[aria-current="page"]{
    background:color-mix(in srgb, var(--gold) 12%, var(--surface));
    color:var(--heading);
  }
  .nav-quick{
    display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;
    margin:0 0 12px;padding:0 0 12px;border-bottom:1px solid var(--line);
    width:100%;min-width:0;
  }
  .nav-quick-item{
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
    min-width:0;min-height:64px;padding:8px 4px;border-radius:var(--radius-md);
    background:var(--surface-2);border:1px solid var(--line);
    color:var(--ink);font-size:.7rem;font-weight:800;text-align:center;line-height:1.2;
    box-shadow:none;overflow-wrap:anywhere;hyphens:auto;
  }
  .nav-quick-item span{min-width:0;max-width:100%;color:inherit}
  .nav-quick-item i{font-size:1.15rem;color:var(--navy);width:auto;flex-shrink:0}
  .nav-quick-item:hover,.nav-quick-item:focus-visible{
    background:color-mix(in srgb, var(--gold) 14%, var(--surface-2));
    border-color:color-mix(in srgb, var(--gold) 40%, var(--line));
    color:var(--heading);
  }
  .nav-quick-item[aria-current="page"]{
    background:color-mix(in srgb, var(--gold) 18%, var(--surface));
    border-color:color-mix(in srgb, var(--gold) 55%, var(--line));
    box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--gold) 35%, transparent);
    color:var(--heading);
  }
  .nav-meta{
    display:flex;flex-direction:column;align-items:stretch;gap:0;
    width:100%;min-width:0;margin-top:2px;
  }
  .nav-meta .nav-row,.nav-meta .nav-logout-btn.nav-row{
    padding:12px 4px;border-radius:0;width:100%;justify-content:flex-start;gap:14px;
    font-size:.95rem;font-weight:700;color:var(--ink);min-height:48px;
    background:transparent;border:0;border-bottom:1px solid var(--line);
    box-shadow:none;min-width:0;
  }
  .nav-meta .nav-row i,.nav-meta .nav-logout-btn.nav-row i{
    width:26px;flex-shrink:0;text-align:center;font-size:1.05rem;color:var(--navy);
  }
  .nav-meta .nav-label{color:inherit}
  .nav-meta .nav-chevron{display:inline-block;color:var(--muted)}
  .nav-meta .nav-row:hover,.nav-meta .nav-row:focus-visible,
  .nav-meta .nav-logout-btn.nav-row:hover,.nav-meta .nav-logout-btn.nav-row:focus-visible{
    background:var(--surface-2);color:var(--heading);
  }
  .nav-meta .nav-row[aria-current="page"]{
    background:color-mix(in srgb, var(--gold) 12%, var(--surface));
    color:var(--heading);
  }
  .nav-meta .nav-member{
    background:color-mix(in srgb, var(--navy) 6%, var(--surface));
    margin-top:4px;color:var(--ink);
  }
  .nav-meta .nav-logout-form{display:block;width:100%;margin:0}
  .nav-scrim{display:none;position:fixed;inset:0;background:var(--scrim);border:0;padding:0;z-index:45}
  body.nav-open .nav-scrim{display:block}
  /* スマホでも2列を維持（縦積み防止）。個別に4列化したい所は各テンプレートで .grid.cols-4.is-compact を使う */
  .grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  /* 体験会: 600px未満は1列（390pxでの過密を解消） */
  .page-trial-list .grid.cols-2{grid-template-columns:1fr}
  .grid.cols-4.is-compact{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
  .grid.cols-3.is-compact{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  .social-links-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .quick-links{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:12px 0 14px}
  .quick-links-secondary.tabs{margin-bottom:14px;gap:6px}
  .quick-links-secondary .tab{font-size:.78rem;padding:8px 12px}
  .quick-links:not(.quick-links--home) a{padding:10px 4px;gap:4px;align-items:center;text-align:center;border-radius:var(--radius-md)}
  .quick-links:not(.quick-links--home) .ql-icon{font-size:1.1rem}
  .quick-links:not(.quick-links--home) .ql-title{font-size:.72rem;line-height:1.2}
  .quick-links:not(.quick-links--home) .ql-text{display:none}
  .home-brandbar__inner{padding:8px var(--page-inline) 6px}
  .home-brandbar__tag{margin:2px 0 0;letter-spacing:.1em}
  .hero{padding:16px 14px}
  .hero-home{gap:6px}
  .hero h1,.hero .recruit-heading,.hero .members-heading{font-size:1.22rem;margin:0}
  .home-page-title{font-size:1.15rem;margin-bottom:10px}
  .home-page-title--bar{font-size:1rem}
  .hero-home .eyebrow{margin-bottom:2px;font-size:max(.8125rem,13px)}
  .hero-lead{font-size:.76rem;line-height:1.35;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;max-width:100%}
  .hero .hero-badges{margin-top:6px;gap:6px}
  .hero .badge{padding:4px 10px;font-size:.72rem}
  .hero-actions,.recruit-banner{flex-direction:column;align-items:stretch}
  .hero-home .hero-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:8px}
  .hero-home .hero-actions .btn{width:auto;padding:8px 8px;font-size:.72rem;line-height:1.25;min-height:var(--tap-min)}
  .btn{width:100%;justify-content:center}
  .player-header-inner{grid-template-columns:1fr}
  .player-photo{width:100%;max-width:220px;height:auto;aspect-ratio:1;margin:0 auto}
  .footer-sns-links,.footer-nav,.footer-support{gap:6px}
  .footer-nav a,.footer-support a{flex:1 1 calc(50% - 6px);min-width:0}
  .hero-slider{aspect-ratio:4/3;border-radius:var(--radius-md)}
  .hero-slider--bleed{aspect-ratio:var(--ratio-hero-mobile);max-height:min(42vh,360px);border-radius:0}
  .hero-home--bleed{min-height:0;padding:10px var(--page-inline) 12px;border-radius:0}
  .slider-copy h1,.slider-copy .slider-headline{font-size:1.15rem}
  .slider-overlay{padding:14px}
  .section--home-quick{margin-bottom:8px}
  .quick-links--home{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:0}
  .quick-links--home .ql-text{display:none}
  .quick-links--home .ql-card{padding:8px 4px;align-items:center;text-align:center;gap:3px;border-radius:var(--radius-md);min-height:var(--tap-min)}
  .quick-links--home .ql-icon{font-size:1.1rem}
  .quick-links--home .ql-title{font-size:.68rem;line-height:1.2}
  .quick-links--home .ql-card--primary .ql-title{font-size:.7rem}
  .quick-links-secondary{margin:0 0 10px}
  .ticker-inner{animation-duration:20s}
  .news-list-item{padding:12px 0}
  .news-list-title{font-size:.9rem}
  .home-stack-card{padding:0}
}

@media(min-width:481px){
  .gallery-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}

@media(min-width:1100px){
  .gallery-photo-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
}

/* Bottom Navigation (mobile only) */
.bottom-nav{
  display:none;
  position:fixed;bottom:0;left:0;right:0;z-index:55;
  background:var(--navy-a97);backdrop-filter:blur(12px);
  border-top:var(--border-hair);
  padding-bottom:env(safe-area-inset-bottom);
  box-shadow:0 -2px 12px var(--navy-a20);
  min-height:var(--bottom-nav-height);
}
.bottom-nav-item{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:4px;padding:8px 4px;flex:1;position:relative;
  color:rgba(255,255,255,.65);font-size:.68rem;font-weight:700;
  text-decoration:none;transition:color var(--motion) ease,background var(--motion) ease;
  min-height:var(--tap-min);background:transparent;border:0;cursor:pointer;font-family:inherit;
  -webkit-appearance:none;appearance:none
}
button.bottom-nav-item{color:rgba(255,255,255,.65)}
.bottom-nav-item i{font-size:1.15rem;line-height:1}
.bottom-nav-item:hover,.bottom-nav-item:focus-visible{color:var(--on-dark);background:var(--on-dark-faint)}
.bottom-nav-item.is-active{color:var(--on-dark)}
.bottom-nav-item.is-active i{
  color:var(--on-dark);
  background:color-mix(in srgb, var(--gold) 28%, transparent);
  border-radius:999px;padding:4px 14px;
  transition:background var(--motion) ease;
}
.bottom-nav-item.is-active::before{display:none}

@media(max-width:767px){
  :root{
    --section-gap:20px;
    --block-gap:12px;
    --fixed-bottom-stack:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom));
  }
  /* D1-D: recruit→members gap */
  .page-home section:has(> .recruit-banner--hot){margin-bottom:12px}
  .page-home .section--brand-band{margin-top:12px}
  .bottom-nav{display:flex}
  .site-main{padding-bottom:calc(var(--fixed-bottom-stack) + 56px)}
  .site-footer{margin-bottom:var(--fixed-bottom-stack)}
  :target,:focus-visible{scroll-margin-top:calc(var(--header-height) + 4px);scroll-margin-bottom:calc(var(--fixed-bottom-stack) + 12px)}
  /* ISSUE-20260916-0020: scroll-margin under bottom-nav */
  .site-main input,
  .site-main select,
  .site-main textarea,
  .site-main button,
  .site-main .form-actions,
  .site-main .privacy-consent,
  .site-main .icon-chip-row,
  .site-main label{
    /* +24px: 同意ラベル等のタップ高(≈44)がナビ上端に食い込まない余裕 */
    scroll-margin-bottom:calc(var(--fixed-bottom-stack) + 24px);
  }
}
/* album-tile 幅は phone（〜767）のみ。768〜は grid */
@media(max-width:767px){
  .scroll-row.album-row>.card,.scroll-row.album-row>.album-tile{width:min(54vw,210px)}
}

/* D-2: タブレットでも下ナビを使う（上メニューは☰） */
@media(min-width:768px) and (max-width:1023px){
  :root{--fixed-bottom-stack:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom))}
  .bottom-nav{display:flex}
  .site-main{padding-bottom:calc(var(--fixed-bottom-stack) + 56px)}
  .site-footer{margin-bottom:var(--fixed-bottom-stack)}
  .scroll-row>.album-tile,.scroll-row.album-row>.card,.scroll-row.album-row>.album-tile{width:auto;min-width:0;max-width:100%}
}

/* ===== 試合速報（Live updates / #50） ===== */
.live-banner { display: flex; flex-direction: column; gap: 10px; }
.live-card {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px;
  padding: 12px 14px; border-radius: var(--radius-md); text-decoration: none;
  color: inherit; background: color-mix(in srgb, var(--red) 8%, transparent);
  border: 1px solid color-mix(in srgb, var(--red) 35%, transparent);
}
.live-card:hover { background: color-mix(in srgb, var(--red) 14%, transparent); }
.live-badge {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 2px 10px; border-radius: var(--radius-sm); font-weight: 700; font-size: 0.85rem;
  color: var(--on-dark); background: var(--red);
}
.live-dot {
  width: 8px; height: 8px; border-radius: 50%; background: var(--on-dark);
  animation: live-blink 1.2s ease-in-out infinite;
}
@keyframes live-blink { 0%,100% { opacity: 1; } 50% { opacity: 0.25; } }
@media (prefers-reduced-motion: reduce) { .live-dot { animation: none; } }
.live-title { font-weight: 700; }
.live-latest { color: var(--muted); }
.live-feed .live-list { list-style: none; margin: 8px 0 0; padding: 0; }
.live-item {
  display: flex; gap: 10px; padding: 8px 0;
  border-bottom: 1px solid var(--line);
}
.live-time { color: var(--muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.live-form { display: flex; flex-direction: column; gap: 8px; max-width: 420px; }
.live-form-row { display: flex; gap: 8px; }
.live-input, .live-input-sm {
  padding: 8px 10px; border: 1px solid var(--line); border-radius: var(--radius-sm); font: inherit;
}
.live-input { width: 100%; }
.live-input-sm { width: 80px; }
.live-notify { display: inline-flex; align-items: center; gap: 6px; font-size: 0.9rem; }

/* ===== サイト内検索（#51） ===== */
.search-form { display: flex; gap: 8px; margin: 12px 0 18px; align-items: stretch; }
.search-form input[type="search"] {
  flex: 1; min-width: 0; padding: 12px 16px; border: 1px solid var(--line);
  border-radius: var(--radius); font: inherit; min-height: var(--tap-min);
}
.search-form .btn { flex: 0 0 auto; }
/* スマホは縦積み（検索窓を大きく・ボタンは下に角丸フル幅） */
@media (max-width: 600px) {
  .search-form { flex-direction: column; }
  .search-form input[type="search"] { width: 100%; }
  .search-form .btn { width: 100%; }
}
.search-list { list-style: none; margin: 8px 0 0; padding: 0; }
.search-list li { padding: 8px 0; border-bottom: 1px solid var(--line); }

/* ===== ダークモード（OS追従＋手動トグル。変数は両トリガーに定義、部品上書きは共有） ===== */
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]){
  --ink:#e8edf4; --muted:#aab8c9; --line:#35465c;
  --bg:#0d1522; --surface:#161f2d; --surface-2:#1f2a3a;
  --heading:#cfe0f5;
  --gold:#f5c34a; --gold-light:#ffe08a; --gold-deep:#d4a017;
  --warn-amber:#d4a017;
  --shadow:0 2px 10px rgba(0,0,0,.55); --shadow-strong:0 10px 28px rgba(0,0,0,.72);
}
}
[data-theme="dark"]{
  --ink:#e8edf4; --muted:#aab8c9; --line:#35465c;
  --bg:#0d1522; --surface:#161f2d; --surface-2:#1f2a3a;
  --heading:#cfe0f5;
  --gold:#f5c34a; --gold-light:#ffe08a; --gold-deep:#d4a017;
  --warn-amber:#d4a017;
  --shadow:0 2px 10px rgba(0,0,0,.55); --shadow-strong:0 10px 28px rgba(0,0,0,.72);
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) .badge,
:root:not([data-theme="light"]) .btn.gold,
:root:not([data-theme="light"]) .pill--download,
:root:not([data-theme="light"]) .badge--undecided { color: var(--navy); }
:root:not([data-theme="light"]) .message { background: var(--surface-2); color: var(--ink); }
:root:not([data-theme="light"]) .message.success { background: color-mix(in srgb, var(--green) 16%, transparent); }
:root:not([data-theme="light"]) .message.error { background: color-mix(in srgb, var(--red) 18%, transparent); }
:root:not([data-theme="light"]) .message.warning { background: color-mix(in srgb, var(--color-warning) 16%, transparent); }
:root:not([data-theme="light"]) .input,
:root:not([data-theme="light"]) .form-box input,
:root:not([data-theme="light"]) .form-box select,
:root:not([data-theme="light"]) .form-box textarea,
:root:not([data-theme="light"]) .filter-bar select,
:root:not([data-theme="light"]) .filter-bar input,
:root:not([data-theme="light"]) .search-form input[type="search"],
:root:not([data-theme="light"]) .live-input,
:root:not([data-theme="light"]) .live-input-sm { background: var(--surface); color: var(--ink); border-color: var(--line); }
:root:not([data-theme="light"]) .btn { border-color: var(--heading); }
:root:not([data-theme="light"]) .live-item,
:root:not([data-theme="light"]) .search-list li { border-bottom-color: var(--line); }
:root:not([data-theme="light"]) .stat-spark__line{stroke:var(--heading)}
:root:not([data-theme="light"]) .stat-range__dot{background:var(--heading)}
:root:not([data-theme="light"]) .stat-stack__swatch--hits,
:root:not([data-theme="light"]) .stat-stack__seg--hits{background:var(--heading)}
:root:not([data-theme="light"]) .stat-stack__swatch--walks,
:root:not([data-theme="light"]) .stat-stack__seg--walks{background:color-mix(in srgb,var(--heading) 74%,var(--surface))}
:root:not([data-theme="light"]) .stat-stack__swatch--strikeouts,
:root:not([data-theme="light"]) .stat-stack__seg--strikeouts{background:color-mix(in srgb,var(--heading) 49%,var(--surface))}
:root:not([data-theme="light"]) .stat-stack__swatch--other,
:root:not([data-theme="light"]) .stat-stack__seg--other{background:color-mix(in srgb,var(--heading) 26%,var(--surface))}
}
[data-theme="dark"] .badge,
[data-theme="dark"] .btn.gold,
[data-theme="dark"] .pill--download,
[data-theme="dark"] .badge--undecided { color: var(--navy); }
[data-theme="dark"] .message { background: var(--surface-2); color: var(--ink); }
[data-theme="dark"] .message.success { background: color-mix(in srgb, var(--green) 16%, transparent); }
[data-theme="dark"] .message.error { background: color-mix(in srgb, var(--red) 18%, transparent); }
[data-theme="dark"] .message.warning { background: color-mix(in srgb, var(--color-warning) 16%, transparent); }
[data-theme="dark"] .input,
[data-theme="dark"] .form-box input,
[data-theme="dark"] .form-box select,
[data-theme="dark"] .form-box textarea,
[data-theme="dark"] .filter-bar select,
[data-theme="dark"] .filter-bar input,
[data-theme="dark"] .search-form input[type="search"],
[data-theme="dark"] .live-input,
[data-theme="dark"] .live-input-sm { background: var(--surface); color: var(--ink); border-color: var(--line); }
[data-theme="dark"] .btn { border-color: var(--heading); }
[data-theme="dark"] .live-item,
[data-theme="dark"] .search-list li { border-bottom-color: var(--line); }
[data-theme="dark"] .stat-spark__line{stroke:var(--heading)}
[data-theme="dark"] .stat-range__dot{background:var(--heading)}
[data-theme="dark"] .stat-stack__swatch--hits,
[data-theme="dark"] .stat-stack__seg--hits{background:var(--heading)}
[data-theme="dark"] .stat-stack__swatch--walks,
[data-theme="dark"] .stat-stack__seg--walks{background:color-mix(in srgb,var(--heading) 74%,var(--surface))}
[data-theme="dark"] .stat-stack__swatch--strikeouts,
[data-theme="dark"] .stat-stack__seg--strikeouts{background:color-mix(in srgb,var(--heading) 49%,var(--surface))}
[data-theme="dark"] .stat-stack__swatch--other,
[data-theme="dark"] .stat-stack__seg--other{background:color-mix(in srgb,var(--heading) 26%,var(--surface))}

.theme-toggle{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);margin:6px auto 0;padding:10px 16px;
  min-height:var(--tap-min);min-width:var(--tap-min);
  background:rgba(255,255,255,.10);color:var(--on-dark);border:1px solid rgba(255,255,255,.28);
  border-radius:999px;font-weight:700;font-size:.85rem;cursor:pointer;font-family:inherit}
.theme-toggle:hover,.theme-toggle:focus-visible{background:rgba(255,255,255,.22);}

/* ===== 戻るボタン（詳細ページのモバイル導線） ===== */
.back-bar{margin:0 0 14px}
.back-btn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px 18px;
  border-radius:var(--radius);border:2px solid var(--navy);background:var(--surface);color:var(--heading);
  font-weight:800;font-size:.9rem;cursor:pointer;font-family:inherit;line-height:1;
  box-shadow:var(--shadow);text-decoration:none}
.back-btn:hover,.back-btn:focus-visible{background:var(--navy);color:var(--on-dark);}
.back-btn:active{transform:translateY(1px)}
[data-theme="dark"] .back-btn{border-color:var(--heading)}

/* ===== 空状態（準備中プレースホルダの統一表示） ===== */
.empty-state{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;
  padding:32px 22px;border:1px dashed var(--line);border-radius:var(--radius);background:var(--face-tinted);
  color:var(--muted);box-shadow:var(--shadow);margin:var(--block-gap) 0}
.empty-state i{font-size:2rem;color:var(--muted)}
.empty-state p{margin:0;line-height:1.6;max-width:28em}
.empty-state .empty-title{font-weight:700;color:var(--heading);font-size:1.05rem;letter-spacing:.015em}
.empty-state__cta{margin-top:8px}
.empty-state__cta .btn{width:auto}
.album-grid > .empty-state,
.photo-grid > .empty-state,
.grid > .empty-state,
.sched-view > .empty-state{grid-column:1 / -1;width:100%}

/* ===== 月別カレンダー ===== */
.sched-view{display:none}
.sched-view.is-active{display:block}

.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden}
.cal-head{background:var(--navy);color:var(--on-dark);text-align:center;font-weight:700;font-size:.8rem;padding:8px 0}
.cal-head.cal-col-0{color:color-mix(in srgb, var(--red) 55%, #fff)}
.cal-head.cal-col-6{color:color-mix(in srgb, var(--cyan) 55%, #fff)}
.cal-cell{position:relative;min-height:84px;background:var(--surface);color:var(--ink);padding:4px 4px 6px;display:flex;flex-direction:column;gap:3px;text-decoration:none;overflow:hidden;scroll-margin-top:70px}
.cal-cell.cal-col-0{background:var(--weekend-sun)}
.cal-cell.cal-col-6{background:var(--weekend-sat)}
/* 祝日・振替休日・国民の休日は日曜と同じ色（土曜と重なる日は日曜の色を優先するため col-6 より後ろに置く） */
.cal-cell.cal-cell--holiday{background:var(--weekend-sun)}
.cal-cell--out{background:var(--surface-2)}
.cal-cell--out .cal-num{color:var(--muted);font-weight:600}
.cal-cell--out.cal-col-0 .cal-num,.cal-cell--out.cal-col-6 .cal-num{color:var(--muted)}
.cal-cell--out .cal-chip,.cal-cell--out .cal-more{opacity:.72}
.cal-cell--today{
  outline:2px solid var(--gold);outline-offset:-2px;
  box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--gold) 45%, transparent);
  background:color-mix(in srgb, var(--gold) 12%, var(--surface));
}
.cal-cell--today .cal-num{background:var(--gold);color:var(--navy);font-weight:800}
.cal-num{font-size:.82rem;font-weight:700;min-width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px}
.cal-cell__top{display:flex;align-items:center;gap:2px;width:100%;min-height:22px}
.cal-cell__top-end{margin-left:auto;display:inline-flex;align-items:center;gap:2px;flex:0 0 auto}
.cal-weather{display:inline-flex;align-items:center;gap:1px;font-size:.72rem;line-height:1;pointer-events:none;text-shadow:0 0 2px var(--surface)}
.cal-weather-temp{font-size:.58rem;font-weight:800;color:var(--heading);font-variant-numeric:tabular-nums}
.cal-cell--out .cal-weather{opacity:.55}
.cal-col-0 .cal-num{color:var(--cal-sun)}
.cal-col-6 .cal-num{color:var(--cal-sat)}
.cal-cell--holiday .cal-num{color:var(--cal-sun)}
.cal-cell--out.cal-cell--holiday .cal-num{color:var(--muted)}
.cal-cell--today.cal-col-0 .cal-num,.cal-cell--today.cal-col-6 .cal-num,.cal-cell--today.cal-cell--holiday .cal-num{color:var(--navy)}
.cal-events{display:flex;flex-direction:column;gap:2px;min-width:0}
.cal-chip{
  font-size:.62rem;line-height:1.25;background:var(--navy);color:var(--on-dark);border-radius:4px; /* P10-4: cal-chip 極小 */
  padding:1px 4px;display:flex;flex-direction:column;align-items:flex-start;gap:0;
  min-width:0;max-width:100%;overflow:hidden;text-decoration:none;
}
.cal-chip .cal-chip-time{flex:0 0 auto;font-weight:700}
.cal-chip .cal-chip-place{
  flex:0 0 auto;min-width:0;max-width:100%;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  font-weight:600;opacity:.95;
}
.cal-more{font-size:.62rem;color:var(--muted);font-weight:700}
@media(max-width:520px){
  .cal-grid{gap:2px}
  .cal-cell{min-height:50px;padding:2px 2px 3px}
  .cal-chip{font-size:.54rem;padding:1px 3px}
  .cal-num{font-size:.76rem;min-width:20px;height:20px}
  .cal-weather{font-size:.62rem}
  .cal-weather-temp{display:none}
  .cal-cell__top{min-height:18px}
}

/* ===== PWA（ホーム画面起動）の戻る/進むバー ===== */
.pwa-nav{display:none}
@media (max-width:767px){
  .pwa-nav{
    display:flex;align-items:stretch;
    position:fixed;left:0;right:0;z-index:54;
    bottom:calc(56px + env(safe-area-inset-bottom));
    background:rgba(10,31,61,.97);backdrop-filter:blur(12px);
    border-top:1px solid rgba(255,255,255,.10);
    box-shadow:0 -2px 10px rgba(10,31,61,.18);
  }
  .pwa-nav-btn{
    flex:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;
    min-height:44px;background:transparent;color:var(--on-dark);border:none;
    font-weight:700;font-size:.86rem;cursor:pointer;font-family:inherit;
  }
  .pwa-nav-btn:active{background:rgba(255,255,255,.08)}
  .pwa-nav-btn+.pwa-nav-btn{border-left:1px solid rgba(255,255,255,.12)}
}

/* ===== 週間天気カード（気象庁JSON） ===== */
.weather-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);
  box-shadow:var(--shadow);padding:14px 12px;margin:0 0 18px}
.weather-title{font-size:1rem;font-weight:800;color:var(--heading);margin:0 0 10px}
.weather-days{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(56px,1fr);gap:6px;
  overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px}
.weather-day{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;
  padding:8px 4px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--bg)}
.weather-date{font-size:.72rem;font-weight:700;color:var(--ink);white-space:nowrap}
.weather-wday{color:var(--muted);margin-left:2px}
.weather-icon{font-size:1.4rem;line-height:1}
.weather-temp{font-size:.74rem;white-space:nowrap}
.weather-temp .tmax{color:var(--temp-max)}
.weather-temp .tmin{color:var(--temp-min);margin-left:3px}
.weather-src{margin:8px 0 0;font-size:.78rem}
.weather-src a{color:var(--heading);font-weight:700}

/* ===== カレンダー 月切替ヘッダー ===== */
.cal-monthnav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 10px}
.cal-monthnav .cal-nav-btn{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border-radius:var(--radius-md);border:1px solid var(--line);background:var(--surface);color:var(--heading);font-weight:800;text-decoration:none;font-size:1rem}
.cal-monthnav .cal-nav-btn:hover,.cal-monthnav .cal-nav-btn:focus-visible{background:var(--navy);color:var(--on-dark);}
.cal-monthnav .cal-nav-label{font-weight:800;color:var(--heading);font-size:1.05rem}

/* ===== 地図の埋め込み（iframe） ===== */
.map-embed{position:relative;width:100%;padding-top:56.25%;border-radius:var(--radius-md);overflow:hidden;margin:6px 0;border:1px solid var(--line)}
.map-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
/* ===== 外部アルバム誘導ボックス ===== */
.ext-album-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:14px;margin:12px 0;box-shadow:var(--shadow)}
.ext-album-box p{margin:.2rem 0}

/* ===== 日程の年度/月ピッカー（コンパクト表示） ===== */
.sched-nav{display:flex;flex-direction:column;gap:8px;margin:0 0 14px}
.sched-nav__row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.sched-nav .segmented-control{align-self:flex-start}
.sched-years-fold{
  flex:0 1 auto;min-width:0;margin:0;
  border:0;background:transparent;box-shadow:none;
}
.sched-years-fold > summary{
  padding:8px 10px;min-height:var(--tap-min);
  font-size:.85rem;border:1px solid var(--line);border-radius:var(--radius-sm);
  background:var(--surface);
}
.sched-years-fold .list-fold__body{padding:8px 0 0}
.sched-years{margin:0}
.sched-years__label{font-size:.85rem;font-weight:700;color:var(--heading)}
.sched-years__select{
  min-height:var(--tap-min);min-width:9.5rem;max-width:100%;
  padding:8px 12px;font-weight:700;border:1px solid var(--line);border-radius:var(--radius-sm);
  background:var(--surface);color:var(--heading);
}
.sched-year-tabs{margin:0;padding-bottom:0}
.sched-month-chips{margin:0;padding-bottom:2px}

/* ===== カレンダーから予定追加（管理者のみ） ===== */
.cal-add{width:28px;height:28px;min-width:28px;min-height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);background:rgba(10,31,61,.10);color:var(--heading);font-weight:800;font-size:.82rem;line-height:1;text-decoration:none;flex-shrink:0}
.cal-add:hover,.cal-add:focus-visible{background:var(--navy);color:var(--on-dark);}
[data-theme="dark"] .cal-add{background:rgba(255,255,255,.12)}
.cal-addbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;padding:8px 10px;border:1px dashed var(--line);border-radius:var(--radius-md);background:var(--surface)}
.cal-addbar .btn{width:auto;padding:6px 12px;min-height:44px}
.cal-addbar-hint{font-size:.72rem;flex-basis:100%}

/* ===== 写真メンテナンス ===== */
.maint-form{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:8px}
.maint-form .btn{width:auto}
.maint-check{display:inline-flex;align-items:center;gap:6px;font-size:.9rem}
.maint-result{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;white-space:pre-wrap;overflow-x:auto;font-size:.85rem;color:var(--ink)}

/* カレンダーの日ハイライト（天気カードから飛んだとき） */
@keyframes cal-flash{0%,100%{box-shadow:none}15%,55%{box-shadow:inset 0 0 0 3px var(--gold)}}
.cal-cell--flash{animation:cal-flash 1.8s ease-out}
@media (prefers-reduced-motion: reduce){.cal-cell--flash{animation:none;box-shadow:inset 0 0 0 3px var(--gold)}}

/* 週間天気カードを丸ごと気象庁リンクに */
.weather-card--link{display:block;text-decoration:none;color:inherit;cursor:pointer;transition:box-shadow var(--motion) ease,transform var(--motion) ease}
.weather-card--link:hover,.weather-card--link:focus-visible{box-shadow:var(--elev-hover);}
.weather-src-link{color:var(--heading);font-weight:700}

/* ===== 写真ボックス（一時保管） ===== */
.dropbox-newform{display:flex;gap:8px;flex-wrap:wrap}
.dropbox-newform .input{flex:1;min-width:200px}
.dropbox-newform .btn{width:auto}
.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  text-align:center;padding:28px 16px;border:2px dashed var(--line);border-radius:var(--radius-md);
  background:var(--bg);color:var(--muted);cursor:pointer}
.dropzone i{font-size:2rem;color:var(--gold)}
.dropzone.is-drag{border-color:var(--navy);background:rgba(10,31,61,.06)}
.box-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px}
.box-actions .btn{width:auto}

/* ===== Phase 2 UI 調整（2026-07） ===== */
/* 汎用: ボタン横並び（2つでも均等・必要なら折返し）。iCalや検索/解除など */
.btn-row{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.btn-row>.btn,.btn-row>a.btn,.btn-row>button{flex:1 1 140px;width:auto}
.ical-subscribe{margin:0;padding:0;border:0;background:transparent}
.ical-subscribe-help{margin:0 0 10px;font-size:.82rem;line-height:1.45}
.ical-subscribe-fold > summary i{margin-right:6px}
.cal-addbar-fold .cal-addbar{margin:0;border-style:dashed}
.stack-form{display:flex;flex-direction:column;gap:12px}
.stack-form .form-field{display:flex;flex-direction:column;gap:6px}
.stack-form .form-field label{font-weight:700;color:var(--heading)}
/* 保護者・年度ページの機能ボタン（ql-card・文字変形なし） */
.year-actions.quick-links{
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;margin:0 0 12px;align-items:stretch;
}
.year-actions.quick-links .ql-card,
.year-actions.quick-links a.ql-card{
  align-items:center;text-align:center;min-height:var(--tap-min,44px);
  padding:12px 8px;gap:6px;
}
.year-actions.quick-links .ql-icon{font-size:1.25rem}
.year-actions.quick-links .ql-title{
  min-width:0;width:100%;text-align:center;line-height:1.25;
  font-size:.82rem;font-weight:700;color:var(--heading);
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;
  overflow:hidden;word-break:normal;overflow-wrap:normal;
}
@media (min-width:768px){
  .year-actions.quick-links{grid-template-columns:repeat(4,minmax(0,1fr))}
  .year-actions.quick-links .ql-title{font-size:.86rem}
}
/* 保護者・年度ページの機能ボタン（グリッド内で均等・折返しなし） — 旧 .btn 用フォールバック */
.year-actions .btn{width:auto;font-size:.86rem;padding:12px 8px;min-height:48px}
/* アクセス・会場: スマホでは埋め込み地図を隠し「地図を開く」ボタンで誘導（大きくなりすぎ防止） */
@media(max-width:767px){.map-embed{display:none}.cal-add{display:none}}
.venue-grid{display:grid;gap:14px}
@media(min-width:768px){.venue-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.cal-add{width:44px;height:44px}}
/* PH-07c: 予定表だけ。768〜1279 では日付と気温と予定追加（44px）が1行に収まらない。
   追加の印は 44px のまま次の行へ折り返す。気温も印も残す。会員ホームは変えない。 */
@media (min-width: 768px) and (max-width: 1279px) {
  #view-calendar .cal-cell__top { flex-wrap: wrap; align-items: flex-start; }
  #view-calendar .cal-cell__top-end { max-width: 100%; }
}

@media(max-width:767px){
  .nav-meta .nav-row,.nav-meta .nav-logout-btn{display:flex;align-items:center;gap:14px;min-height:48px;line-height:1.2}
  .pwa-nav{display:none !important}
}
@media (display-mode: standalone) and (max-width:767px){
  :root{
    --fixed-bottom-stack:calc(var(--bottom-nav-height) + 46px + env(safe-area-inset-bottom));
  }
  .pwa-nav{display:flex !important}
  .back-bar{display:none !important}
  .site-main{padding-bottom:calc(var(--fixed-bottom-stack) + 12px)}
  .site-footer{margin-bottom:var(--fixed-bottom-stack)}
}
.box-adopt-title{width:auto;min-width:180px}
.box-hint{flex-basis:100%;font-size:.78rem}

/* ===== 掲示板（Poster board） ===== */
.poster-board {
  margin: var(--section-gap) 0;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
.poster-board__kicker { margin: 0 0 4px; }
.poster-board__title {
  font-size: var(--text-lg); font-weight: 700; margin: 0 0 var(--block-gap);
  display: flex; align-items: center; gap: .4rem; color: var(--heading);
  padding-bottom: 8px; border-bottom: 1px solid var(--line);
}
.poster-board__grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(220px,1fr)); gap: 14px; }
.poster-item {
  display: grid; grid-template-columns: 96px 1fr; gap: 12px; align-items: center;
  padding: 12px; border: 1px solid var(--line); border-radius: var(--radius-md);
  background: var(--surface); text-decoration: none; color: inherit;
  min-height: var(--tap-min); box-shadow: var(--shadow);
  transition: transform var(--motion-fast) var(--ease-out), box-shadow var(--motion) ease;
}
.poster-item:hover,.poster-item:focus-visible { transform: translateY(-2px); box-shadow: var(--elev-hover); }
.poster-thumb {
  width: 96px; height: 128px; object-fit: cover;
  border: 1px solid var(--line); border-radius: var(--radius-md);
  background: var(--surface);
  transition: transform var(--motion) ease, box-shadow var(--motion) ease;
}
.poster-item:hover .poster-thumb { transform: translateY(-1px); }
.poster-thumb--file { display: flex; align-items: center; justify-content: center; font-size: 2.2rem; color: var(--red); }
.poster-item__body { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.poster-item__caption { font-size: max(.9rem,14px); line-height: 1.35; color: var(--heading); font-weight: 800; }
.poster-item__meta { margin: 0; font-size: max(.8125rem,13px); color: var(--muted); line-height: 1.4; }
.poster-item__thumbwrap { position: relative; display: block; width: 96px; height: 128px; flex-shrink: 0; }
@media (max-width: 430px) {
  .poster-board__grid { grid-template-columns: 1fr; }
  .poster-item { grid-template-columns: 112px 1fr; }
  .poster-item__thumbwrap,.poster-thumb { width: 112px; height: 150px; }
}
.poster-lock {
  position: absolute; top: 6px; right: 6px; width: 24px; height: 24px; border-radius: 50%;
  background: color-mix(in srgb, var(--navy) 88%, transparent); color: #fff;
  display: flex; align-items: center; justify-content: center; font-size: .72rem;
}

/* Narrow phones */
@media(max-width:390px){
  :root{--page-inline:12px}
  .home-page-title{font-size:1.05rem}
  .quick-links .ql-title{font-size:.68rem}
}
@media(min-width:1024px){
  :root{--header-height:72px}
  .home-page-title{font-size:1.5rem}
  .home-page-title--bar{font-size:1.55rem}
  .section-title{font-size:1.45rem}
  .nav-desk{gap:4px 6px}
  .nav-link,.nav-dd__btn{font-size:.9rem;padding:10px 14px}
  .hero-home--bleed{padding:48px max(var(--page-inline),6vw)}
}
@media(min-width:1280px){
  :root{--container-max:1240px}
}

/* カレンダーのチップに開始時刻を常時表示 */
.cal-chip-time { font-weight: 700; margin-right: 0; font-variant-numeric: tabular-nums; opacity: .92; flex: 0 0 auto; }
.cal-chip-place { font-weight: 600; }

/* カレンダー種別の色分け（トークン: --game/--practice/--event/--trial） */
.cal-chip--game { background: var(--game); }
.cal-chip--practice { background: var(--practice); }
.cal-chip--event { background: var(--event); }
.cal-chip--trial { background: var(--trial); }
/* 種別の凡例 */
.cal-legend { display: flex; flex-wrap: wrap; gap: 10px; margin: 4px 0 10px; font-size: .78rem; color: var(--muted); }
.cal-legend span { display: inline-flex; align-items: center; gap: 5px; }
.cal-legend i { width: 12px; height: 12px; border-radius: 4px; display: inline-block; } /* P10-4: 凡例スウォッチ極小 */
.cal-legend .lg-game { background: var(--game); }
.cal-legend .lg-practice { background: var(--practice); }
.cal-legend .lg-event { background: var(--event); }
.cal-legend .lg-trial { background: var(--trial); }

/* ===== マイクロモーション（リンク/カード/ボタン 120–160ms） ===== */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .ticker-inner{animation:none !important}
  .slider-slide{transition:none !important}
  .nav-toggle span{transition:none !important}
  .poster-item,.card,.quick-links .ql-card,.btn{transition:none !important}
}

/* ===== B5/B6: 下層・会員・デスクトップ安全装飾・状態UI ===== */
.info-image{display:block;width:100%;max-width:100%;height:auto;border-radius:var(--radius-md);margin:0 0 .75rem;aspect-ratio:var(--ratio-card);object-fit:cover;background:var(--face-subtle)}
.page-offline .offline-actions,.page-404 .error-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:var(--block-gap)}
.page-offline .offline-actions .btn{min-height:var(--tap-min,44px);display:inline-flex;align-items:center;gap:8px}

/* ===== 会員ポータル質感（N4・軽微） ===== */
.site--member .card{border-radius:var(--radius-md);box-shadow:var(--shadow)}
.site--member .card-body strong{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}
.site--member .quick-links a,.site--member .quick-links .ql-card{min-height:var(--tap-min,44px)}

/* ===== 会員メニューカード（.menu-card） ===== */
.menu-card{border-radius:var(--menu-card-radius);box-shadow:var(--shadow)}
.menu-card:hover,.menu-card:focus-within{box-shadow:var(--elev-hover)}
.site--member .menu-card{border-radius:var(--menu-card-radius);box-shadow:var(--shadow)}

/* ヘッダ：アイコンチップ＋見出し＋下線 */
.menu-card > .card-body > strong:first-of-type{
  display:flex;align-items:center;gap:10px;flex-wrap:nowrap;
  font-size:var(--text-lg);font-weight:800;color:var(--heading);
  padding-bottom:10px;margin-bottom:12px;
  border-bottom:1px solid var(--menu-divider);
}
.menu-card > .card-body > strong:first-of-type > i{
  display:inline-grid;place-items:center;flex-shrink:0;
  width:var(--menu-chip-size);height:var(--menu-chip-size);
  border-radius:50%;background:var(--menu-chip-bg);color:var(--menu-chip-fg);
  font-size:1rem;
}

/* 説明文 */
.menu-card .form-help{color:var(--muted);font-size:var(--text-sm);line-height:1.65;margin:0 0 14px}

/* 操作エリア */
.menu-card .btn-row{display:flex;flex-wrap:wrap;gap:10px;margin:0}
.menu-card .btn-row .btn{flex:1 1 auto;min-width:0;justify-content:center;text-align:center}
.menu-card .btn{min-height:var(--tap-min)}
.menu-card .sched-item{margin-bottom:8px}
.menu-card .sched-item .btn--sm{margin-left:auto;width:auto;flex:0 0 auto}
@media(max-width:767px){
  /* アプリ風: 会員メニューの単独ボタンは全幅バーにせず、コンパクトに（縦の圧迫を防ぐ） */
  .menu-card .card-body > .btn,
  .menu-card form .btn{width:auto;min-width:min(62%,220px);justify-content:center}
}
@media(max-width:360px){
  .menu-card .btn-row{flex-direction:column}
  .menu-card .btn-row .btn{width:100%}
}
@media (prefers-reduced-motion: reduce){
  .menu-card:hover,.menu-card:focus-within{transform:none}
}

/* 会員エリア一貫性：小ユーティリティ（新別名のみ） */
.input-qty{width:70px;max-width:100%;min-height:var(--tap-min)}
.mt-1{margin-top:6px}
.text-sub{font-size:var(--text-sm);font-weight:600}
.pre-wrap{white-space:pre-wrap;margin:.3em 0 0}
.ml-auto{margin-left:auto}
.sched-item--top{align-items:flex-start}
.video-wrap--sm{max-width:320px}
.menu-card .card-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px;padding-top:4px}
.menu-card .card-meta,.menu-card .card-note{color:var(--muted);font-size:var(--text-sm);line-height:1.55;margin:0 0 8px}
.menu-card .card-actions .btn{min-height:var(--tap-min)}

/* ===== コンパクト会員メニュー（.member-menu） ===== */
.member-menu{margin-top:var(--block-gap)}
.member-menu--intro{margin-top:var(--block-gap)}
.home-deadline__status{font-size:.82rem;color:var(--muted)}
.mm-push-status{color:var(--muted);font-size:.78rem}
.mm-group{
  background:var(--surface);border-radius:var(--radius-lg);
  box-shadow:var(--shadow);overflow:hidden;
  margin-bottom:12px;
}
.mm-group__title{
  font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;
  color:var(--muted);padding:14px 16px 6px;margin:0;
}
.mm-row{
  display:flex;align-items:center;gap:12px;
  width:100%;min-height:60px;padding:10px 16px;
  border:none;background:none;cursor:pointer;
  text-align:left;text-decoration:none;color:inherit;
  border-top:1px solid var(--menu-divider);
  transition:background var(--motion-fast) ease;
}
.mm-group > .mm-row:first-child,
.mm-group > .mm-group__title + .mm-row,
.mm-group > .mm-group__title + .mm-panel + .mm-row{border-top:none}
.mm-group > button.mm-row + .mm-panel + .mm-row{border-top:1px solid var(--menu-divider)}
.mm-row:hover,.mm-row:focus-visible{background:var(--surface-2)}
.mm-row:focus-visible{outline:3px solid var(--gold);outline-offset:-3px}
.mm-row:active{background:color-mix(in srgb, var(--navy) 6%, var(--surface))}
a.mm-row{font:inherit}
.mm-row__icon{
  display:inline-grid;place-items:center;flex-shrink:0;
  width:36px;height:36px;border-radius:50%;
  background:var(--menu-chip-bg);color:var(--menu-chip-fg);
  font-size:1rem;
}
.mm-row__icon--officer{background:color-mix(in srgb, var(--navy) 12%, var(--surface))}
.mm-row__body{flex:1;min-width:0}
.mm-row__title{display:block;font-weight:700;font-size:.95rem;color:var(--heading);line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mm-row__sub{display:block;font-size:.78rem;color:var(--muted);line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mm-row__chevron{flex-shrink:0;font-size:.75rem;color:var(--muted);transition:transform 200ms var(--ease-out)}
button.mm-row[aria-expanded="true"] .mm-row__chevron{transform:rotate(180deg)}
@media(prefers-reduced-motion:reduce){
  .mm-row__chevron{transition:none}
}

/* Accordion panel */
.mm-panel{padding:0 16px 16px}
.mm-panel__help{font-size:var(--text-sm);color:var(--muted);line-height:1.6;margin:0 0 12px}
.mm-panel__actions{display:flex;flex-wrap:wrap;gap:8px}
.mm-panel__actions .btn{flex:1 1 140px;justify-content:center;text-align:center;min-height:var(--tap-min)}
@media(max-width:360px){
  .mm-panel__actions{flex-direction:column}
  .mm-panel__actions .btn{width:100%}
}
.mm-panel .form-label{margin-top:10px}
.mm-panel .form-input{margin-top:4px}
.mm-panel .mt{margin-top:10px}

/* P10-8/P10-9: 紐づけフォーム（可視ラベルを左に横並び。320px は縦積み） */
.mm-panel--link{padding:0 16px 12px}
.mm-panel--link .mm-panel__help{margin:0 0 8px;line-height:1.35}
.mm-link-form{display:flex;flex-direction:column;gap:8px;min-width:0;max-width:100%}
.mm-link-form__field{display:flex;align-items:center;gap:8px;min-width:0}
.mm-link-form__label{
  flex:0 0 5.5em;font-size:.78rem;font-weight:700;color:var(--heading);
  line-height:1.3;
}
.mm-link-form__field .form-input{flex:1 1 auto;min-width:0;margin-top:0}
.mm-link-form__row{display:flex;gap:8px;align-items:stretch;min-width:0;max-width:100%}
.mm-link-form__row .btn{flex:0 0 auto;width:auto;white-space:nowrap;min-height:var(--tap-min);padding-inline:12px}
@media(max-width:359px){
  .mm-link-form__field{flex-direction:column;align-items:stretch;gap:4px}
  .mm-link-form__label{flex:none}
}

/* Children list inside accordion */
.mm-panel__children{margin-bottom:12px}
.mm-child-row{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:8px 0;border-bottom:1px solid var(--menu-divider);
}
.mm-child-row:last-child{border-bottom:none}

/* Push notification inline status */
.mm-row--push{cursor:default;gap:10px}
.mm-row--push:hover{background:none}
.mm-row--push .mm-row__body{min-width:0}
.mm-push-btn{flex-shrink:0;width:auto;padding:6px 14px;font-size:.82rem}
/* 横並び行の中に置くボタン。モバイルの .btn{width:100%} を明示的に打ち消す。 */
.btn--inline{width:auto;flex-shrink:0}

/* P10-2: 年度メニュー・過去年度の折りたたみ */
.mm-group--year .year-actions{padding:0 8px 8px}
.mm-group--year-more{
  border:1px solid var(--menu-divider);border-radius:var(--radius-md);
  background:var(--surface);padding:0;margin-top:8px;
}
.mm-group--year-more > .mm-group__summary{
  list-style:none;cursor:pointer;display:flex;align-items:center;
  min-height:var(--tap-min);padding:10px 14px;margin:0;
  font-size:.9rem;font-weight:700;color:var(--heading);
}
.mm-group--year-more > .mm-group__summary::-webkit-details-marker{display:none}
.mm-group--year-more[open] > .mm-group__summary{border-bottom:1px solid var(--menu-divider)}
.mm-group--year-more .mm-group__subtitle{
  margin:12px 14px 4px;font-size:.82rem;font-weight:700;color:var(--muted);
}
.mm-group--year-more .year-actions{padding-bottom:12px}

/* PC: メニュー幅は本文カラムに追従（P11-1） */
@media(min-width:768px){
  .member-menu{max-width:none}
}

/* 会員: 可読性優先（公開の華やか面を持ち込まない） */
.site--member .page-hero{box-shadow:none}
.site--member .section-kicker{color:var(--muted);letter-spacing:.1em}
.site--member .home-stack-card{
  border-left:none;
}
.site--member .home-stack-card > .section-kicker,
.site--member .home-stack-card > .mh-head > .section-kicker{
  padding-left:2px;
}
.site--member .member-ops{margin-top:var(--block-gap)}
.site--member .cal-chip-time{font-weight:800}
.site--member .quick-links .ql-card--primary::after{display:none}
.site--member .empty-state{box-shadow:none;background:var(--surface-2)}
/* D1-D Gate7: 会員ダッシュボードの濃色ヒーロー面 → 白カード+全周枠 */
.site--member .hero.hero-home:not(.hero-home--bleed){
  background:var(--surface);color:var(--ink);
  border:var(--border-hair);border-radius:var(--radius-card);
  box-shadow:var(--elev-rest);
}
.site--member .hero.hero-home:not(.hero-home--bleed) .eyebrow{color:var(--muted)}
.site--member .hero.hero-home:not(.hero-home--bleed) .hero-lead{color:var(--ink)}
.site--member .hero.hero-home:not(.hero-home--bleed)::after{display:none}
.site--member .live-card{
  background:var(--surface);border:var(--border-hair);color:var(--ink);
  box-shadow:var(--elev-rest);
}
.site--member .live-card:hover{background:var(--surface-2)}
.site--member .live-title{color:var(--heading)}
.site--member .live-latest{color:var(--ink)}
/* live-badge は速報の M6 語彙として赤塗りを維持 */

/* 公開下層: 面リズム（写真なしでも成立） */
.site--public .lower-panel{
  background:transparent;border:0;border-radius:0;
  padding:0;box-shadow:none;
}
.site--public .lower-panel--tint{background:transparent}
.site--public .staff-card__photo--empty{
  background:
    radial-gradient(circle at 30% 25%, color-mix(in srgb, var(--gold) 16%, transparent), transparent 50%),
    var(--surface-2);
}

@media (min-width:768px){
  /* デスクトップ空白の安全装飾（画像なし・コントラスト維持） */
  .site--public .empty-state{
    min-height:12rem;
    background:
      radial-gradient(circle at 12% 18%, color-mix(in srgb, var(--gold) 14%, transparent), transparent 42%),
      radial-gradient(circle at 88% 82%, color-mix(in srgb, var(--navy) 8%, transparent), transparent 46%),
      var(--face-tinted);
  }
  .site--public .home-body::before{
    content:"";display:block;height:3px;margin:0 0 var(--block-gap);
    background:var(--accent-line);border-radius:2px;opacity:.85; /* P10-4: 3px 装飾ライン。sm だと太すぎる */
  }
  .site--public .venue-card{
    background-image:linear-gradient(180deg, color-mix(in srgb, var(--gold) 6%, transparent), transparent 48px);
  }
}

@media (max-width:767px){
  /* ホーム第一画面のヒーローCTAと浮遊CTAの重なりを解消 */
}

/* ==============================
   M6-1: 状態マーク／アイコンボタン基盤（設計: docs/design/M6_mobile_iconify_and_state_marks.md）
   - state-mark: 4値 Yes/No（on/off/warn/danger/na）
   - icon-tile:  Icon-Primary タイル（44px 以上のタップ領域）
   - icon-chip:  インライン Icon Chip
   トークンは既存の --navy/--gold-deep/--red-deep/--muted を再利用（緑は使わない）
   ============================== */

.visually-hidden{
  position:absolute!important;width:1px!important;height:1px!important;
  padding:0!important;margin:-1px!important;overflow:hidden!important;
  clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important;
  left:0!important;top:0!important;
}

/* -- state-mark -- */
.state-mark{
  --sm-size:16px;
  --sm-radius:9999px;
  --sm-bg:transparent;
  --sm-fg:var(--navy);
  --sm-border:1.5px solid var(--muted);
  display:inline-flex;align-items:center;justify-content:center;
  width:var(--sm-size);height:var(--sm-size);
  border-radius:var(--sm-radius);
  background:var(--sm-bg);color:var(--sm-fg);border:var(--sm-border);
  vertical-align:middle;line-height:1;
  flex:0 0 auto;
}
.state-mark i{font-size:calc(var(--sm-size) * .72);line-height:1}
.state-mark--md{--sm-size:20px}
.state-mark--sm{--sm-size:16px}
.state-mark--on{
  --sm-bg:var(--navy);--sm-fg:#fff;--sm-border:none;
}
.state-mark--warn{
  --sm-bg:var(--color-warning);--sm-fg:#fff;--sm-border:none;
}
.state-mark--danger{
  --sm-bg:var(--red-deep);--sm-fg:#fff;--sm-border:none;
}
.state-mark--off{
  --sm-bg:transparent;--sm-fg:var(--muted);
  --sm-border:1.5px solid color-mix(in srgb, var(--muted) 60%, transparent);
}
.state-mark--na{
  --sm-bg:transparent;--sm-fg:var(--muted);
  --sm-border:1.5px dashed color-mix(in srgb, var(--muted) 55%, transparent);
}

/* -- icon-tile: Icon-Primary タイル -- */
.icon-tile{
  --it-size:72px;
  display:inline-flex;flex-direction:column;align-items:center;justify-content:center;
  gap:6px;width:var(--it-size);min-height:64px;
  padding:8px 6px;border-radius:var(--radius-md);
  background:var(--surface);color:var(--heading);
  text-decoration:none;border:1px solid var(--line);
  box-shadow:var(--shadow);transition:transform var(--motion), box-shadow var(--motion);
}
.icon-tile:hover,.icon-tile:focus-visible{
  transform:translateY(-1px);box-shadow:var(--elev-hover);
}
.icon-tile[aria-current="page"]{
  border-color:var(--navy);background:color-mix(in srgb, var(--navy) 8%, var(--surface));
}
.icon-tile__icon{
  width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;
  border-radius:50%;background:color-mix(in srgb, var(--navy) 8%, transparent);
  color:var(--navy);font-size:18px;
}
.icon-tile[aria-current="page"] .icon-tile__icon{
  background:var(--navy);color:var(--on-dark);
}
.icon-tile__label{
  font-size:.78rem;font-weight:700;color:var(--heading);text-align:center;line-height:1.2;
  min-height:2.2em;display:flex;align-items:center;
}
/* タイル集合レイアウト */
.icon-tile-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));
  gap:10px;margin:8px 0 4px;
}

/* -- icon-chip: インライン Icon Chip -- */
.icon-chip{
  display:inline-flex;align-items:center;gap:6px;
  min-height:var(--tap-min);padding:6px 12px;
  border-radius:999px;background:var(--surface);color:var(--heading);
  border:1.5px solid var(--line);text-decoration:none;font-size:.85rem;font-weight:700;
  transition:background var(--motion), color var(--motion), border-color var(--motion);
}
.icon-chip i{font-size:1em}
.icon-chip:hover,.icon-chip:focus-visible{
  background:color-mix(in srgb, var(--navy) 8%, var(--surface));border-color:var(--navy);
}
.icon-chip--primary{background:var(--navy);color:var(--on-dark);border-color:var(--navy)}
.icon-chip--primary:hover,.icon-chip--primary:focus-visible{
  background:var(--navy-2);border-color:var(--navy-2);color:var(--on-dark);
}
.icon-chip--warn{background:var(--color-warning);color:var(--on-dark);border-color:var(--color-warning)}
.icon-chip--ghost{background:transparent}
.icon-chip__label{white-space:nowrap}

/* 密度優先の縦積みボタン列を横方向 chip 群にする補助 */
.icon-chip-row{
  display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0;
}

/* -- 状態別 utility（表内で state-mark を数値と並べる用） -- */
.state-with-count{display:inline-flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums}

/* -- attendance segment: 出欠 3 値のアイコン付きトグル（M6-4） -- */
.attendance-segment{
  border:0;padding:0;margin:0;
  display:flex;gap:8px;flex-wrap:wrap;
}
.attendance-segment > legend{position:absolute;left:-9999px}
.attendance-choice{
  display:inline-flex;align-items:center;gap:6px;
  min-height:var(--tap-min);padding:8px 14px;
  border-radius:999px;border:1.5px solid var(--line);
  background:var(--surface);color:var(--heading);
  font-size:.9rem;font-weight:700;cursor:pointer;
  transition:background var(--motion), border-color var(--motion), color var(--motion), transform var(--motion);
}
.attendance-choice:hover{transform:translateY(-1px)}
.attendance-choice input[type="radio"]{
  position:absolute!important;width:1px!important;height:1px!important;
  opacity:0!important;pointer-events:none!important;
}
.attendance-choice:focus-within{
  outline:3px solid color-mix(in srgb, var(--navy) 40%, transparent);
  outline-offset:2px;
}
/* 選択時（:has でカバーできない環境向けにも input:checked ~ 兄弟でハック不可のため、:has を利用） */
.attendance-choice:has(input:checked){
  background:color-mix(in srgb, var(--navy) 8%, var(--surface));
  border-color:var(--navy);
}
.attendance-choice--attend:has(input:checked){
  background:var(--navy);color:var(--on-dark);border-color:var(--navy);
}
.attendance-choice--attend:has(input:checked) .state-mark--on{
  background:var(--on-dark);color:var(--navy);border:1.5px solid var(--on-dark);
}
.attendance-choice--undecided:has(input:checked){
  background:var(--color-warning);color:var(--navy);border-color:var(--color-warning);
}
.attendance-choice--undecided:has(input:checked) .state-mark--warn{
  background:var(--on-dark);color:var(--color-warning);border:1.5px solid var(--on-dark);
}
.attendance-choice--absent:has(input:checked){
  background:var(--red-deep);color:var(--on-dark);border-color:var(--red-deep);
}
.attendance-choice--absent:has(input:checked) .state-mark--danger{
  background:var(--on-dark);color:var(--red-deep);border:1.5px solid var(--on-dark);
}
.attendance-choice__label{white-space:nowrap}

/* -- FAB (M6-6): 会員ホーム 1 個・吹き出しで確認・即実行なし -- */
/* 命名注意: .fab は Font Awesome の Brands クラス。自前のFABは .fab-btn を使う。
   all.min.css は style.css より後に読むため、.fab を使うと display を奪われる。 */
.fab-container{
  position:fixed;
  right:calc(env(safe-area-inset-right, 0px) + 16px);
  bottom:calc(var(--bottom-nav-height, 60px) + env(safe-area-inset-bottom, 0px) + 16px);
  z-index:70;
}
.fab-btn{
  width:56px;height:56px;border-radius:50%;
  border:2px solid var(--navy);
  background:var(--surface);color:var(--navy);
  box-shadow:var(--shadow-strong);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:1.4rem;
  transition:transform var(--motion), background var(--motion), color var(--motion), border-color var(--motion);
}
.fab-btn:hover,.fab-btn:focus-visible{
  background:var(--navy);color:var(--on-dark);border-color:var(--navy);
  outline:3px solid color-mix(in srgb, var(--navy) 40%, transparent);
  outline-offset:2px;
}
.fab-btn[aria-expanded="true"]{
  background:var(--navy);color:var(--on-dark);border-color:var(--navy);
  transform:rotate(45deg);
}
/* P11-2: ダーク面では白面 + gold 枠（var(--surface) はローカル上書き） */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .fab-btn:not(:hover):not(:focus-visible):not([aria-expanded="true"]){
    --surface:#fff;
    border-color:var(--gold);
    color:var(--navy);
  }
}
[data-theme="dark"] .fab-btn:not(:hover):not(:focus-visible):not([aria-expanded="true"]){
  --surface:#fff;
  border-color:var(--gold);
  color:var(--navy);
}
.fab-sheet{
  position:absolute;right:0;bottom:calc(100% + 8px);
  min-width:220px;display:flex;flex-direction:column;gap:4px;
  padding:8px;background:var(--surface);border-radius:var(--radius);
  box-shadow:var(--shadow-strong);border:1px solid var(--line);
}
.fab-sheet[hidden]{display:none}
.fab-sheet::after{
  content:"";position:absolute;right:24px;bottom:-6px;
  width:12px;height:12px;background:var(--surface);
  border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  transform:rotate(45deg);
}
.fab-action{
  display:flex;align-items:center;gap:10px;
  min-height:var(--tap-min);padding:8px 12px;
  border-radius:var(--radius-sm);color:var(--heading);
  text-decoration:none;font-size:.9rem;font-weight:700;
}
.fab-action i{width:20px;text-align:center;color:var(--navy);font-size:1.1em}
.fab-action:hover,.fab-action:focus-visible{
  background:color-mix(in srgb, var(--navy) 8%, var(--surface));
  outline:none;
}
.fab-scrim{
  position:fixed;inset:0;background:transparent;
  border:0;padding:0;z-index:69;cursor:default;
}
.fab-scrim[hidden]{display:none}
@media (prefers-reduced-motion: reduce){
  .fab-btn{transition:none}
  .fab-btn[aria-expanded="true"]{transform:none}
}

/* ===== PLAY-inspired UI Unification ===== */

/* --- Segmented control (PLAY-style toggle) --- */
.segmented-control{
  display:inline-flex;border:2px solid var(--navy);
  border-radius:999px;overflow:hidden;background:var(--surface);
}
.segmented-control__item{
  display:inline-flex;align-items:center;justify-content:center;
  padding:8px 18px;min-height:var(--tap-min);
  font-size:.88rem;font-weight:700;color:var(--navy);
  background:transparent;border:0;cursor:pointer;
  transition:background var(--motion),color var(--motion);
  white-space:nowrap;text-decoration:none;
}
.segmented-control__item:hover{background:color-mix(in srgb, var(--navy) 8%, transparent)}
.segmented-control__item.is-active,
.segmented-control__item[aria-current="page"],
.segmented-control__item[aria-selected="true"]{
  background:var(--navy);color:var(--on-dark);
}

/* --- PLAY-style underline tabs --- */
.tabs{
  display:flex;flex-wrap:nowrap;gap:var(--space-2);
  overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;
  scroll-snap-type:x proximity;scrollbar-width:none;
  border-bottom:1px solid var(--line);
  padding:0 2px;
}
.tabs::-webkit-scrollbar{display:none}
.tab{
  flex:0 0 auto;scroll-snap-align:start;
  display:inline-flex;align-items:center;justify-content:center;gap:5px;
  min-height:var(--tap-min);min-width:var(--tap-min);padding:8px 10px;
  font-size:.92rem;font-weight:800;
  color:var(--muted);background:transparent;border:0;
  border-bottom:3px solid transparent;
  margin-bottom:-1px;
  text-decoration:none;white-space:nowrap;
  transition:color var(--motion),border-color var(--motion);
}
button.tab{font-family:inherit;cursor:pointer}
.tab:hover,.tab:focus-visible{color:var(--heading)}
.tab.is-active,.tab[aria-current="page"],.tab[aria-selected="true"]{
  color:var(--heading);border-bottom-color:var(--heading);
  scroll-margin-inline:var(--space-2);
}
.tabs[role="tablist"]{margin-bottom:14px}

/* --- P13-2: 一覧カード3層（大会・お知らせ・日程） --- */
.list-card-list{display:flex;flex-direction:column;gap:10px}
.list-card{
  display:flex;flex-direction:column;gap:4px;
  padding:10px 12px;margin:0;
  border:1px solid var(--line);border-radius:var(--radius-md);
  background:var(--surface);box-shadow:var(--shadow);
  color:inherit;text-decoration:none;
}
a.list-card:hover,a.list-card:focus-visible{
  border-color:var(--navy);
  box-shadow:var(--elev-hover, var(--shadow));
}
.list-card__meta{
  display:flex;flex-wrap:nowrap;align-items:center;gap:6px;
  font-size:.74rem;color:var(--muted);
  min-height:22px;max-height:24px;overflow:hidden;
}
.list-card__meta > span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.list-card__meta .pill{padding:1px 6px;font-size:.68rem;line-height:1.2;min-height:0;flex-shrink:0;max-width:40%}
.list-card__meta .pill.is-important{background:var(--red)}
.list-card__date{font-variant-numeric:tabular-nums;font-weight:700;color:var(--heading)}
.list-card__main{
  margin:0;font-size:.92rem;font-weight:700;line-height:1.35;
  color:var(--heading);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;
}
.list-card__main a{color:inherit;text-decoration:none}
.list-card__sub{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  min-height:22px;margin:0;font-size:.72rem;color:var(--muted);
}
.list-card__sub-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tournament-card.list-card .list-card__main{-webkit-line-clamp:1}
.list-fold{
  border:1px solid var(--line);border-radius:var(--radius-md);
  background:var(--surface);box-shadow:var(--shadow);
}
.list-fold > summary{
  display:flex;align-items:center;gap:6px;
  padding:10px 12px;min-height:var(--tap-min);
  font-weight:700;color:var(--heading);cursor:pointer;list-style:none;
}
.list-fold > summary::-webkit-details-marker{display:none}
.list-fold__body{padding:0 12px 12px}
.list-fold__body > ul{margin:0;padding:0;list-style:none}
.tournament-filters{margin-top:0}
.tournament-results-link{
  flex:0 0 auto;align-self:end;width:auto;padding:8px 12px;min-height:var(--tap-min);font-size:.82rem;
}
.page-tournaments .tournament-card.list-card{
  border-left:4px solid var(--navy);padding:10px 12px;
}
.tournament-deadline-list--compact{margin:0;font-size:.72rem}
.sched-event-card__chevron{
  position:absolute;right:12px;top:50%;transform:translateY(-50%);
  color:var(--muted);font-size:.75rem;
}
.sched-event-card__chevron--solo{top:auto;bottom:12px;transform:none}
.news-card.list-card .list-card__main{-webkit-line-clamp:2}

/* --- Album tile: 1:1 thumb + caption below (P13-3) --- */
.album-tile{
  display:flex;flex-direction:column;gap:4px;
  text-decoration:none;color:inherit;
}
.album-tile__media{
  position:relative;display:block;flex:1 1 auto;min-height:0;width:100%;
  aspect-ratio:1/1;
  border-radius:var(--radius-card);overflow:hidden;
  background:var(--bg);box-shadow:var(--shadow);
  transition:transform var(--motion),box-shadow var(--motion);
}
.album-tile:hover .album-tile__media,.album-tile:focus-visible .album-tile__media{
  transform:translateY(-2px);box-shadow:var(--elev-hover);
}
.album-tile img{width:100%;height:100%;object-fit:contain;object-position:center;display:block}
.album-tile__badge{
  position:absolute;top:6px;left:6px;z-index:1;
  padding:2px 6px;font-size:.65rem;line-height:1.2;min-height:0;
}
.album-tile__caption{display:flex;flex-direction:column;gap:1px;min-width:0;flex-shrink:0}
.album-tile__title{
  font-size:.78rem;font-weight:700;color:var(--heading);line-height:1.25;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.album-tile__meta{
  font-size:.72rem;font-weight:600;line-height:1.25;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.album-tile__fallback{
  display:grid;place-items:center;width:100%;height:100%;
  color:var(--muted);font-size:2rem;background:var(--bg);
}
.album-tile--compact .album-tile__media{max-height:min(52vw,168px)}
.album-tile--compact .album-tile__title{font-size:.75rem}
.album-tile--hub{flex:0 0 auto;width:120px}
.album-tile--hub .album-tile__media{max-height:120px}
.album-tile--hub .album-tile__title{font-size:.75rem}
/* P14-5 gallery grid: square cover frame */
.gallery-album-grid .album-tile{width:100%;max-width:160px;min-width:0;justify-self:center}

/* --- Stat leader card (PLAY-style) --- */
.stat-leader{
  display:flex;align-items:center;gap:12px;
  padding:12px 0;border-bottom:1px solid var(--line);
}
.stat-leader:last-child{border-bottom:0}
.stat-leader__label{
  font-size:.78rem;font-weight:700;color:var(--muted);
  min-width:3.5em;
}
.stat-leader__value{
  font-size:clamp(1.5rem,4vw,2rem);font-weight:800;
  font-variant-numeric:tabular-nums;color:var(--heading);
  line-height:1;
}
.stat-leader__player{
  margin-left:auto;display:flex;align-items:center;gap:8px;
  font-size:.88rem;font-weight:700;color:var(--heading);
}

/* --- Ranking row (PLAY-style) --- */
.ranking-row{
  display:flex;align-items:center;gap:10px;
  padding:10px 0;border-bottom:1px solid var(--line);
  min-height:var(--tap-min);
}
.ranking-row:last-child{border-bottom:0}
.ranking-row__rank{
  font-size:.88rem;font-weight:800;color:var(--muted);
  min-width:1.5em;text-align:center;
}
.ranking-row__name{
  flex:1;min-width:0;font-size:.92rem;font-weight:700;
  color:var(--heading);overflow-wrap:anywhere;
}
.ranking-row__value{
  font-size:1.1rem;font-weight:800;
  font-variant-numeric:tabular-nums;color:var(--heading);
}

/* --- Results filter improvements (PLAY-style / P10-3: 2段 / P11-3: 下線タブ+セグメント) --- */
.result-filters{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.result-filters .tabs{padding-bottom:0}
.result-filters__row{
  display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap;
}
.result-filters__row .segmented-control{
  flex:0 1 auto;min-width:0;max-width:100%;
  display:inline-flex;width:auto;
}
.result-filters__row .segmented-control__item{
  flex:0 1 auto;min-width:0;text-align:center;
}
@media(max-width:390px){
  .result-filters__row .segmented-control__item{
    padding:8px 10px;font-size:.78rem;
  }
}
.result-filter{
  display:flex;align-items:center;flex:0 0 auto;margin:0;min-width:0;
}
.result-filter label{
  display:flex;flex-direction:column;gap:4px;
  font-size:.82rem;font-weight:700;color:var(--muted);
}
.result-filter select{
  min-height:36px;padding:6px 10px;max-width:42vw;
  border:1.5px solid var(--line);border-radius:999px;
  background:var(--surface);color:var(--heading);
  font-size:.82rem;font-weight:700;
}
.page-games-results .result-list{margin-top:10px;margin-bottom:0}

/* --- Enhanced game detail page --- */
.game-detail-scores{
  display:flex;flex-direction:column;gap:0;
  background:var(--surface);border-radius:var(--radius-card);
  border:1px solid var(--line);overflow:hidden;
  margin:12px 0;
}
.game-detail-team{
  display:flex;align-items:center;gap:12px;
  padding:14px 16px;
}
.game-detail-team + .game-detail-team{border-top:1px solid var(--line)}
.game-detail-team__name{
  flex:1;font-size:var(--text-md);font-weight:700;color:var(--heading);
}
.game-detail-team__score{
  font-size:clamp(2rem,6vw,2.8rem);font-weight:800;
  font-variant-numeric:tabular-nums;line-height:1;
}
.game-detail-team--winner .game-detail-team__score{color:var(--navy)}
.game-detail-team--loser .game-detail-team__score{color:var(--muted)}

/* --- Inning table responsive scroll hint --- */
.scoreboard td:last-child,.scoreboard th:last-child{
  font-weight:800;background:color-mix(in srgb, var(--gold) 10%, var(--surface));
}

/* --- Section "see all" link: canonical is .section-title .more above (P10-9) --- */

/* --- PWA standalone: show back/forward when no browser chrome --- */
@media(display-mode: standalone){
  :root{
    --fixed-bottom-stack:calc(var(--bottom-nav-height) + 36px + env(safe-area-inset-bottom));
  }
  .pwa-nav{
    display:flex;position:fixed;bottom:0;left:0;right:0;
    z-index:54;height:36px;
    background:var(--navy);
    padding-bottom:env(safe-area-inset-bottom);
    border-top:1px solid rgba(255,255,255,.08);
  }
  .bottom-nav{bottom:calc(36px + env(safe-area-inset-bottom))}
}

/* --- Stats: leaders + ranking rows --- */
.stat-leaders{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0 22px}
@media(max-width:520px){.stat-leaders{grid-template-columns:1fr}}
/* ISSUE-20260918-0005: single-char player names need min-width --tap-min */
.stat-leader__player a,.ranking-row__name a,.data-table td.name a{color:inherit;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap-min);min-width:var(--tap-min);padding:4px 8px;box-sizing:border-box}
:is(.stat-leader__player,.ranking-row__name,.data-table td.name) a:is(:hover,:focus-visible){text-decoration:underline}
.ranking-rows{display:flex;flex-direction:column}
.stat-detail>summary{
  cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;
  margin:0;padding:4px 0;
}
.stat-detail>summary::-webkit-details-marker{display:none}
.stat-detail>summary::after{
  content:"\f078";font-family:"Font Awesome 6 Free";font-weight:900;
  margin-left:auto;font-size:.8em;color:var(--muted);
  transition:transform var(--motion);
}
.stat-detail[open]>summary::after{transform:rotate(180deg)}

/* ===== member home density (parent page) ===== */
.mh-head{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;
  margin:0 0 8px;
}
.mh-head .section-kicker{margin:0;line-height:1.2}
.mh-head .section-title{
  margin:0;flex:1 1 12rem;min-width:0;
  display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;
  font-size:1.05rem;line-height:1.25;
}
.mh-head .section-title .more{margin-left:auto}
.member-home-grid .home-stack-card > .muted{margin:4px 0 0}
.compact-list{display:flex;flex-direction:column;gap:6px;margin:8px 0 4px}
.sched-row-compact,
.result-row-compact{
  display:flex;align-items:center;gap:10px;
  min-height:var(--tap-min);padding:6px 10px;
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius-sm);box-shadow:var(--shadow);
  color:inherit;text-decoration:none;
  transition:box-shadow var(--motion) ease,border-color var(--motion) ease;
}
.sched-row-compact:hover,.sched-row-compact:focus-visible,
.result-row-compact:hover,.result-row-compact:focus-visible{
  box-shadow:var(--elev-hover);border-color:var(--navy);
}
.sched-row-compact__date,
.result-row-compact__date{
  flex-shrink:0;font-size:.9rem;font-weight:800;color:var(--navy);
  font-variant-numeric:tabular-nums;min-width:2.6em;text-align:center;
}
.sched-row-compact__cat,
.result-row-compact__cat{flex-shrink:0;font-size:.72rem}
.sched-row-compact__match,
.result-row-compact__match{
  flex:1;min-width:0;font-size:.9rem;font-weight:700;color:var(--heading);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.sched-row-compact__meta{
  flex-shrink:0;font-size:.76rem;color:var(--muted);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:40%;
}
.result-row-compact__score{
  flex-shrink:0;font-size:1.05rem;font-weight:800;
  font-variant-numeric:tabular-nums;color:var(--heading);
}
/* ISSUE-20260916-0009: 勝スコアは通常文字 → WCAG AA 4.5:1。
   --green(#1c9e5b) on #fff ≈ 3.45。ブランド --green は維持し、スコア文字のみ #14804a（≈4.98）。
   Dark: 背景が暗いため --green のままで ≥4.5。 */
.result-row-compact.result-win .result-row-compact__score{color:#14804a}
[data-theme="dark"] .result-row-compact.result-win .result-row-compact__score{color:var(--green)}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .result-row-compact.result-win .result-row-compact__score{color:var(--green)}
}
.result-row-compact.result-loss .result-row-compact__score{color:var(--muted)}
.result-row-compact__score--tbd{font-size:.78rem;font-weight:700;color:var(--muted)}
.sched-row-compact__chevron,
.result-row-compact__chevron{flex-shrink:0;font-size:.7rem;color:var(--muted)}
@media(max-width:360px){
  .sched-row-compact__meta{display:none}
  .sched-row-compact,.result-row-compact{gap:8px;padding:8px 10px}
}

/* push notification row: button sizing（.mm-row--push 本体は上で定義済み） */
.mm-push-btn.btn{
  flex-shrink:0;width:auto;padding:8px 14px;font-size:.8rem;font-weight:700;
  min-height:var(--tap-min);border-radius:999px;white-space:nowrap;
}
/* .btn の display 指定が [hidden]{display:none} に勝つため、非表示時は明示する */
.mm-push-btn.btn[hidden]{display:none}

/* ===== S1: 勝敗サマリー + CSS 円グラフ ===== */
.wl-summary{padding:12px 0}
.wl-summary__inner{display:flex;align-items:center;gap:12px;flex-wrap:nowrap;justify-content:flex-start}
/* conic-gradient donut: 勝=navy, 引=gold, 負=line-grey */
.wl-donut{
  position:relative;flex-shrink:0;
  width:72px;height:72px;border-radius:50%;
  background:conic-gradient(
    var(--navy) 0deg calc(var(--win-deg,0deg)),
    var(--gold) calc(var(--win-deg,0deg)) calc(var(--win-deg,0deg) + var(--draw-deg,0deg)),
    var(--line) calc(var(--win-deg,0deg) + var(--draw-deg,0deg)) 360deg
  );
}
.wl-donut::after{
  content:"";position:absolute;inset:10px;border-radius:50%;background:var(--surface);
}
.wl-donut__center{
  position:absolute;inset:0;z-index:1;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-size:1.05rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--heading);line-height:1;
}
.wl-donut__center small{font-size:.55rem;font-weight:700;color:var(--muted);margin-top:1px}
.wl-stats{
  display:grid;grid-template-columns:repeat(2,minmax(3.2rem,auto));gap:4px 14px;
  list-style:none;margin:0;padding:0;flex:0 1 auto;
}
.wl-stat dt{font-size:.7rem;font-weight:700;color:var(--muted);margin-bottom:1px}
.wl-stat dd{font-size:1.15rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--heading);margin:0}
.wl-stat--win  dd{color:var(--navy)}
.wl-stat--draw dd{color:var(--gold-deep)}
.wl-stat--lose dd{color:var(--muted)}
.wl-stat--rate dd{font-size:1rem;color:var(--heading)}

/* ===== S2: チーム集計成績カード ===== */
.team-stat-grid{display:flex;flex-direction:column;gap:12px;margin-top:8px}
.team-stat-block__title{
  font-size:.78rem;font-weight:700;color:var(--muted);
  margin:0 0 8px;letter-spacing:.06em;
}
.team-stat-cells{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:8px;
}
.team-stat-cell{
  background:var(--bg);border-radius:var(--radius-sm);
  padding:10px 8px;text-align:center;
}
.team-stat-cell__label{
  display:block;font-size:.72rem;font-weight:700;color:var(--muted);margin-bottom:4px;
}
.team-stat-cell__value{
  display:block;font-size:1.45rem;font-weight:800;
  font-variant-numeric:tabular-nums;color:var(--heading);line-height:1;
}
.team-stat-cell__value--win{color:var(--navy)}
.team-stat-cell__value--lose{color:var(--muted)}

/* ===== P1: 基盤整備 ===== */

/* --- P1-4: トークン補足（役割コメント・不足追加） ---
   紺=主要操作・見出し  ゴールド=アクセント・選択中  水色=現在位置・情報
   緑=完了・ON          赤=削除・警告・緊急のみ
   --tap-min:44px が全コンポーネントの最低タップ領域基準
*/
:root {
  /* スコア数値 (P1-4: 追加) */
  --text-score-sm:2.25rem;  /* 36px */
  --text-score-md:2.75rem;  /* 44px */
  --text-score-lg:3.25rem;  /* 52px */
}

/* --- P1-5: BP表記統一（既存分のエイリアス。元の宣言は残す） ---
   Mobile: ~767px  Tablet: 768~1023px  Desktop: 1024px~
   既存 (max-width:760px) → (max-width:767px) と同等に扱う
   既存 (min-width:760px) → Tablet 以上 と同等に扱う
   ※ 元の宣言はテストが参照するため削除しない。新規は3段のみ使う。
*/

/* --- P1-6 / P11-1: PC サイドナビ（会員 .page-layout--sidenav のみ） --- */
@media(min-width:1024px) {
  .page-layout--sidenav {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    gap: var(--space-5);
    width: 100%;
    max-width: var(--container-max);
    margin: 0 auto;
    padding-inline: var(--page-inline);
    align-items: start;
  }
  .page-layout--sidenav .pc-sidenav {
    position: sticky;
    top: calc(var(--header-height) + var(--space-3));
    max-height: calc(100vh - var(--header-height) - var(--space-4));
    overflow-y: auto;
    background: transparent;
    border-right: 0;
    padding: var(--space-3) var(--space-2);
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
  }
  .page-layout--sidenav .site-main {
    margin-left: 0;
    max-width: none;
    padding-left: 0;
  }
  .pc-sidenav__item {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    min-height: var(--tap-min);
    padding: var(--space-2) var(--space-3);
    border-radius: var(--radius-sm);
    color: var(--heading);
    text-decoration: none;
    font-size: .9rem;
    font-weight: 700;
    transition: background var(--motion);
  }
  .pc-sidenav__item:hover,
  .pc-sidenav__item:focus-visible {
    background: color-mix(in srgb, var(--navy) 7%, transparent);
  }
  .pc-sidenav__item[aria-current="page"],
  .pc-sidenav__item.is-active {
    background: color-mix(in srgb, var(--gold) 18%, var(--surface));
    color: var(--navy);
  }
  .pc-sidenav__item[aria-current="page"] i,
  .pc-sidenav__item.is-active i {
    color: var(--gold-deep);
  }
  .pc-sidenav__item i {
    width: 20px;
    text-align: center;
    font-size: .95em;
    flex-shrink: 0;
    color: var(--muted);
  }
  .pc-sidenav__divider {
    height: 1px;
    background: var(--line);
    margin: var(--space-2) var(--space-3);
  }
}

/* モバイルではサイドナビを非表示 */
.pc-sidenav { display: none; }
@media(min-width:1024px) { .pc-sidenav { display: flex; } }

/* --- P1-7: PC で FAB を非表示（bottom-nav は L1039 で対応済み）
   pwa-nav の PC 非表示は L1769 の既存コードで制御済みのため追加不要。 --- */
@media(min-width:1024px) {
  .fab-container { display: none; }
}

/* --- P1-8: pwa-nav 表示条件メモ（実装変更なし）
   - PC(1024+): L1769 の既存コードで display:none 済み
   - モバイル非standalone: L1588 .pwa-nav{display:none} 済み
   - モバイルstandalone: L1777 .pwa-nav{display:flex !important} 済み
   - 手順型のみ表示制御: P2以降で body.no-pwa-nav を付与する予備クラスを定義
*/
@media(display-mode: standalone) {
  body.no-pwa-nav .pwa-nav { display: none; }
}

/* ===== P2: 会員メニュー整備 ===== */

/* --- P2-7: 会員メニュー見出し+年度チップ --- */
.member-menu__header {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-bottom: var(--space-1);
}
.member-menu__header .section-title { margin: 0; flex: 1 1 auto; }
.year-chips-inline {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1);
  align-items: center;
}
.year-chip-inline {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  /* ISSUE-20260918-0004: keep compact look; expand hit target to --tap-min */
  min-height: var(--tap-min);
  min-width: var(--tap-min);
  padding: 3px 10px;
  box-sizing: border-box;
  border-radius: 999px;
  font-size: .76rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.year-chip-inline i { font-size: .72em; }
.year-chip-inline--open {
  background: color-mix(in srgb, var(--green) 14%, var(--surface));
  color: var(--navy);
  border: 1px solid color-mix(in srgb, var(--green) 30%, transparent);
}
.year-chip-inline--locked {
  background: var(--surface-2);
  color: var(--muted);
  border: 1px solid var(--line);
  text-decoration: none;
  cursor: pointer;
  transition: background var(--motion);
}
.year-chip-inline--locked:hover,
.year-chip-inline--locked:focus-visible {
  background: color-mix(in srgb, var(--navy) 8%, var(--surface));
  color: var(--navy);
}

/* --- P2-10 / P11-1: PC (1024px~) 可変カラム --- */
@media(min-width:1024px) {
  .member-menu {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: var(--space-3);
    align-items: start;
    max-width: none;
  }
  .member-menu .mm-group {
    max-width: calc(var(--container-max) / 2);
  }
  .member-menu .mm-group--year {
    max-width: none;
  }
  /* ヘッダーと役員・年度は全幅 */
  .member-menu__header,
  .member-menu > .mm-group--year,
  .member-menu + .mm-group--year {
    grid-column: 1 / -1;
  }
  /* 役員グループも全幅 */
  .member-menu .mm-group:has(h3 :first-child:empty),
  .member-menu .mm-group--year { grid-column: 1 / -1; }
  /* h2 見出しは全幅 */
  .member-menu > [id="member-menu-title"] { grid-column: 1 / -1; }
  /* 行高を少し詰める */
  .site--member .member-menu .mm-row { min-height: 52px; }
}

/* ===== P3: score-card（試合結果カード・P5でも再利用） ===== */
.score-card{display:block;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 16px;text-decoration:none;color:inherit;border:1px solid var(--line)}
.score-card:hover{box-shadow:var(--shadow-strong)}
.score-card__meta{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-size:.78rem;color:var(--muted)}
.score-card__result{display:inline-flex;align-items:center;justify-content:center;border-radius:4px;padding:2px 8px;font-size:.72rem;font-weight:700;color:var(--on-dark)} /* P10-4: 極小結果バッジ */
.score-card__result--win{background:var(--navy)}
.score-card__result--lose{background:var(--muted)}
.score-card__result--draw{background:#334155}
.score-card__teams{display:flex;flex-direction:column;gap:0}
.score-card__team{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 0;border-top:1px solid var(--line)}
.score-card__team:first-child{border-top:none}
.score-card__team--winner .score-card__team-name{font-weight:700;color:var(--navy)}
.score-card__team--winner .score-card__score{font-weight:800;color:var(--navy)}
.score-card__team-name{font-size:.9rem}
.score-card__score{font-size:2.4rem;font-weight:800;min-width:1.5ch;text-align:right;line-height:1;font-variant-numeric:tabular-nums}
.score-card__footer{margin-top:8px;font-size:.75rem;color:var(--muted);display:flex;gap:12px;flex-wrap:wrap}

/* ===== P3: 未回答出欠バナー ===== */
.p3-unanswered{background:color-mix(in srgb, var(--gold) 18%, var(--surface));border:1px solid var(--gold);border-radius:var(--radius)}
.unanswered-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}
.unanswered-item{display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.6);border-radius:var(--radius-sm);padding:10px 12px;flex-wrap:wrap}
.unanswered-item__title{flex:1;font-weight:600;font-size:.9rem}
.unanswered-item__date{font-size:.8rem;color:var(--muted)}

/* ===== P3: member-home-grid（PC 3カラム） ===== */
.member-home-grid{display:flex;flex-direction:column;gap:var(--block-gap)}
@media(min-width:1024px){
  .member-home-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;align-items:start}
}

/* ===== P4/P13-2: sched-event-card（list-card 上の種別修飾） ===== */
.sched-list{display:flex;flex-direction:column;gap:8px}
.sched-event-card.list-card{position:relative;padding-right:36px}
.sched-event-card--game.list-card{border-left:4px solid var(--game)}
.sched-event-card--practice.list-card{border-left:4px solid var(--practice)}
.sched-event-card--event.list-card{border-left:4px solid var(--event)}
.sched-event-card--trial.list-card{border-left:4px solid var(--trial)}
.sched-event-card__date{font-size:.78rem;font-weight:700;color:var(--navy);font-variant-numeric:tabular-nums}
.sched-event-card__kind{font-size:.72rem}
.sched-event-card__badge{font-size:.7rem;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--color-warning);color:var(--on-dark)}
.sched-event-card__title{margin:0}

/* ===== P4: PC（1024px~）日程2ペイン ===== */
@media(min-width:1024px){
  .page-schedule-list .sched-list{max-width:720px}
  /* 予定を追加 FAB は PC 非表示 (P1-7 の .fab-container{display:none} で制御) */
}

/* ===== P5-4: 勝敗pill（赤不使用） ===== */
.result-pill{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;font-size:.72rem;font-weight:700;color:var(--on-dark)}
.result-pill--win{background:var(--navy)}
.result-pill--loss,.result-pill--lose{background:var(--muted);color:var(--on-dark)}
.result-pill--draw{background:#334155}
.result-pill--scheduled{background:transparent;color:var(--muted);border:1px solid var(--line)}

/* ===== P5-8: 試合結果 PC 表形式 ===== */
.result-table-wrap{display:none}
.result-list{display:flex;flex-direction:column;gap:8px}
@media(min-width:1024px){
  .result-table-wrap{display:block;overflow-x:auto;margin-top:16px}
  .result-list{display:none}
  .result-table{width:100%;border-collapse:collapse;font-size:.88rem}
  .result-table th,.result-table td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
  .result-table thead th{background:var(--bg);font-weight:700;font-size:.78rem;color:var(--muted)}
  .result-table__row{cursor:pointer;transition:background var(--motion)}
  .result-table__row:hover,.result-table__row:focus{background:var(--surface-2);outline:none}
  .result-table__score--win{color:var(--navy);font-weight:800}
  .result-table__score--loss,.result-table__score--lose{color:var(--muted)}
  .result-table__score--draw{color:var(--navy-2)}
  .result-table__opp{font-weight:700}
  .result-table__venue{font-size:.82rem}
  .result-table__date{font-variant-numeric:tabular-nums}
}

/* ===== P6-9: 成績 PC レイアウト ===== */
.player-stat-header{display:flex;align-items:center;gap:16px;padding:12px 0}
.player-stat-photo{width:72px;height:72px;border-radius:50%;object-fit:cover;flex-shrink:0;background:var(--surface-2)}
.player-stat-photo--empty{display:inline-flex;align-items:center;justify-content:center;font-size:1.8rem;color:var(--muted);border:1px solid var(--line)}
.player-stat-name{font-size:1.1rem;font-weight:800;color:var(--heading);margin:0}
.player-stat-sub{font-size:.82rem;margin:2px 0 0}
.player-profile-dl{display:flex;flex-direction:column;gap:6px}
.player-profile-dl div{display:flex;gap:8px;align-items:baseline}
.player-profile-dl dt{font-size:.78rem;font-weight:700;color:var(--muted);min-width:7em;flex-shrink:0}
.player-profile-dl dd{margin:0;font-size:.9rem}
@media(min-width:1024px){
  .stat-leaders{grid-template-columns:repeat(4,auto);gap:0 20px}
  .team-stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
  .ranking-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
}

/* ===== P7: 写真館分類ハブ ===== */
/* P7-3: 横スクロール分類カード */
.album-hub-scroll{display:flex;gap:10px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;padding:4px 2px 8px;scrollbar-width:none}
.album-hub-scroll::-webkit-scrollbar{display:none}

/* P7-7: PC 4-6列グリッド */
@media(min-width:1024px){
  .album-tile--hub{width:140px}
  .album-tile--hub .album-tile__media{max-height:140px}
}

/* ===== P10-4: inline style 退避用ユーティリティ ===== */
.text-prewrap{white-space:pre-wrap}
.text-prewrap--tight{white-space:pre-wrap;margin:.2em 0 0}
.form-help--error{color:var(--red)}
.form-inline{display:inline-block;margin-right:12px}
.form-row-actions{display:flex;gap:8px;flex-wrap:wrap}
.qu-list{list-style:none;padding:0} /* gallery/quick_upload 専用（.list-plain は管理CSSへ） */
.scroll-hint--visible{display:block}
.img-fluid{max-width:100%;height:auto}
.img-fluid-round{max-width:100%;border-radius:var(--radius-sm);margin-bottom:.75rem}
.w-full{width:100%}
.input-key{width:100%;max-width:320px}
.form-box--wide{max-width:none;margin:0}
.meta-time{font-size:.85em}
.line-preview{white-space:pre-wrap;background:var(--surface-2);padding:12px;border-radius:var(--radius-sm)}
.page-narrow{max-width:40rem;margin:2rem auto;padding:1.5rem}
.page-narrow__title{font-size:1.4rem;margin-bottom:0.75rem}
.page-narrow__note{margin-top:1.5rem;color:var(--muted);font-size:0.9rem}
.lockout-box{max-width:32rem;margin:3rem auto;padding:0 1rem}
.lockout-box__title{font-size:1.35rem;margin-bottom:0.75rem}
.lockout-box__link{margin-top:1rem}

/* ===== OPS-07 B-2: hero scrim toggle ===== */
.hero--no-scrim .slider-overlay{background:none}
.hero--no-scrim .hero::after{display:none}
.hero--no-scrim .slider-copy h1,
.hero--no-scrim .slider-copy .slider-headline,
.hero--no-scrim .slider-subcopy{text-shadow:0 1px 6px rgba(0,0,0,.45)}

/* ===== OPS-07 B-1: recruit PDF page images ===== */
.recruit-pdf-pages{display:flex;flex-direction:column;gap:12px}
.recruit-pdf-page{width:100%;height:auto;border-radius:var(--radius-sm);border:1px solid var(--line);box-shadow:var(--elev-rest)}
.recruit-pdf-actions{display:flex;gap:12px;flex-wrap:wrap}
.recruit-cta-grid{display:flex;gap:10px;flex-wrap:wrap}

/* CD-1b: 予定表ダーク（前後月マス・週間天気日付・切替・サイド日程） */
@media (prefers-color-scheme: dark){
:root:not([data-theme="light"]) .site--member{--bg:#0d1522;--surface:#161f2d;--surface-2:#1f2a3a;--ink:#e8edf4;--muted:#aab8c9;--heading:#cfe0f5;--line:#35465c}
:root:not([data-theme="light"]) .cal-cell--out,:root:not([data-theme="light"]) .cal-cell--out.cal-col-0,:root:not([data-theme="light"]) .cal-cell--out.cal-col-6{background:#1f2a3a!important}
:root:not([data-theme="light"]) .cal-cell--out .cal-num,:root:not([data-theme="light"]) .cal-cell--out.cal-col-0 .cal-num,:root:not([data-theme="light"]) .cal-cell--out.cal-col-6 .cal-num{color:#d7e2f0!important}
:root:not([data-theme="light"]) .weather-date{color:var(--ink)}
:root:not([data-theme="light"]) .weather-wday{color:var(--muted)}
:root:not([data-theme="light"]) .segmented-control{border-color:var(--heading);background:var(--surface)}
:root:not([data-theme="light"]) .segmented-control__item{color:var(--heading)}
:root:not([data-theme="light"]) .segmented-control__item.is-active,:root:not([data-theme="light"]) .segmented-control__item[aria-current="page"]{background:var(--heading);color:var(--bg)}
:root:not([data-theme="light"]) .pc-sidenav__item{color:var(--heading)}
:root:not([data-theme="light"]) .pc-sidenav__item.is-active,:root:not([data-theme="light"]) .pc-sidenav__item[aria-current="page"]{background:color-mix(in srgb,var(--gold) 22%,var(--surface));color:var(--heading)}
}
[data-theme="dark"] .site--member{--bg:#0d1522;--surface:#161f2d;--surface-2:#1f2a3a;--ink:#e8edf4;--muted:#aab8c9;--heading:#cfe0f5;--line:#35465c}
[data-theme="dark"] .cal-cell--out,[data-theme="dark"] .cal-cell--out.cal-col-0,[data-theme="dark"] .cal-cell--out.cal-col-6{background:#1f2a3a!important}
[data-theme="dark"] .cal-cell--out .cal-num,[data-theme="dark"] .cal-cell--out.cal-col-0 .cal-num,[data-theme="dark"] .cal-cell--out.cal-col-6 .cal-num{color:#d7e2f0!important}
[data-theme="dark"] .weather-date{color:var(--ink)}
[data-theme="dark"] .weather-wday{color:var(--muted)}
[data-theme="dark"] .segmented-control{border-color:var(--heading);background:var(--surface)}
[data-theme="dark"] .segmented-control__item{color:var(--heading)}
[data-theme="dark"] .segmented-control__item.is-active,[data-theme="dark"] .segmented-control__item[aria-current="page"]{background:var(--heading);color:var(--bg)}
[data-theme="dark"] .pc-sidenav__item{color:var(--heading)}
[data-theme="dark"] .pc-sidenav__item.is-active,[data-theme="dark"] .pc-sidenav__item[aria-current="page"]{background:color-mix(in srgb,var(--gold) 22%,var(--surface));color:var(--heading)}
