@charset "UTF-8";
/*
 * iwatani-core core.css（完成版 / 整理統合）
 * 方針：
 *  - PC（>=831）：左右は“面パネル”、中央は410固定、中央だけスクロール
 *  - SP（<=830）：右を畳む、さらに<=767で左右を畳む（既存踏襲）
 *  - 左パネル（panel_left）：ACF付きメニュー + Walker で3カラムGrid（PC/SP同じ）
 *  - 背景：iw_front_bg_mode（pc / none / split / ticker）に対応
 *
 * 想定HTML：
 *  - home.php：.iw-bg → .iw-shell → (pc-side-left / .iw-center / pc-side-right)
 *  - pc-side-left.php：.iw-side.iw-side--left 内に .iw-left（brand / tiles / sns）
 */

/* =========================================================
   0) Variables（ここに集約）
========================================================= */
:root {
  /* brand colors */
  --iw-color-primary: #0aa1d6;
  --iw-color-primary-dark: #067aa3;
  --iw-color-accent: #ffcc00;

  --iw-color-bg: #ffffff;
  --iw-color-surface: #f6f8fb;
  --iw-color-border: #e6eaf0;
  --iw-color-text: #383838;
  --iw-color-muted: #6b7280;

  /* radius/shadow */
  --iw-radius-xs: 6px;
  --iw-radius-sm: 10px;
  --iw-radius-md: 14px;
  --iw-radius-lg: 18px;
  --iw-radius-xl: 22px;

  --iw-shadow-sm: 0 4px 12px rgba(17, 24, 39, 0.08);
  --iw-shadow-md: 0 12px 28px rgba(17, 24, 39, 0.14);

  /* spacing */
  --iw-space-1: 4px;
  --iw-space-2: 8px;
  --iw-space-3: 12px;
  --iw-space-4: 16px;
  --iw-space-5: 20px;
  --iw-space-6: 24px;
  --iw-space-7: 28px;
  --iw-space-8: 32px;
  --iw-space-10: 40px;
  --iw-space-12: 48px;

  /* typography */
  --iw-font-sans: "Urbanist", "Noto Sans JP", system-ui, -apple-system,
    BlinkMacSystemFont, "Hiragino Sans", "Hiragino Kaku Gothic ProN",
    "Yu Gothic", Meiryo, sans-serif;
  --iw-line: 1.7;

  /* motion */
  --iw-ease: cubic-bezier(0.2, 0.8, 0.2, 1);
  --iw-duration: 180ms;

  /* layout: PC */
  --iw-front-left-bg: #c40000;
  /* 左面 */
  --iw-front-right-bg: #f3dede;
  /* 右面 */
  --iw-front-center-bg: #ffffff;

  --iw-front-left-w: 360px;
  --iw-front-right-w: 360px;
  --iw-center-fixed-w: 410px;

  /* left tiles default (wrap側で上書きする想定) */
  --iw-tile-h: 96px;

  /* ===== Front BG (unified) ===== */
  --iw-bg-base: #f6f6f8;

  --iw-bg-image: none;
  --iw-bg-image-pos: center;
  --iw-bg-image-size: cover;
  --iw-bg-image-repeat: no-repeat;

  --iw-bg-overlay: rgba(255, 255, 255, 0);
  --iw-bg-overlay-blur: 0px;

  --iw-bg-split-left: #e90000;
  --iw-bg-split-right: #e90000;
  --iw-bg-split-panel-w: 360px;
  --iw-bg-split-gutter: 0px;

  --iw-bg-z-base: 0;
  --iw-bg-z-overlay: 1;
  --iw-bg-z-fx: 2;
  --iw-bg-z-shell: 3;
}

/* =========================================================
   1) Reset / Base
========================================================= */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
}

body {
  margin: 0;
  font-family: var(--iw-font-sans);
  line-height: var(--iw-line);
  color: var(--iw-color-text);
  background: var(--iw-color-bg);
  overflow-x: hidden;
}

html,
body {
  height: 100%;
}

html,
body {
  width: 100%;
  overflow-x: hidden;
  background: var(--iw-bg-split-right);
}

.iw-bg,
.iw-shell {
  background: var(--iw-bg-split-right);
}

.iw-center {
  background: #fff;
}

img,
video {
  max-width: 100%;
  height: auto;
  vertical-align: middle;
}

input,
button,
textarea,
select {
  font: inherit;
}

a {
  color: inherit;
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

ul,
ol {
  margin: 0;
  padding: 0;
  list-style: none;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  margin: 0;
  line-height: 1.25;
}

p {
  margin: 0;
}

:focus-visible {
  outline: 3px solid rgba(10, 161, 214, 0.35);
  outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  * {
    transition: none !important;
    animation: none !important;
  }
}

/* PCはページ全体を固定して、中央だけスクロール */
@media (min-width: 831px) {

  html,
  body {
    height: 100%;
    overflow: hidden;
    /* ← ここが重要：ページのスクロールを止める */
  }
}

/* =========================================================
   2) Common helper
========================================================= */
.inner {
  width: min(1280px, 100% - 40px);
  margin-inline: auto;
}

/* =========================================================
   3) Front Background Layers (.iw-bg)
   - home.php で .iw-bg iw-bg--{mode} が付与される
   - do_action('iw_front_bg_layers') は .iw-bg の中で呼ばれる想定
   - 基本方針：背景は .iw-bg 本体で完結（白抜けを起こしにくくする）
   - モード：base / image / split（splitはオプション）
========================================================= */

/* ---------- ベース（白抜け対策の要） ---------- */
.iw-bg {
  position: relative;
  min-height: 100vh;
  width: 100%;
  overflow: clip;
  /* はみ出し防止（古いブラウザは hidden 相当でOK） */
  background: var(--iw-bg-base);
  isolation: isolate;
  /* z-indexの事故を減らす */
}

/* overlay は常に .iw-bg の疑似要素で持つ（画像/単色どちらでも使える） */
.iw-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: var(--iw-bg-z-overlay);
  background: var(--iw-bg-overlay);
  pointer-events: none;
  backdrop-filter: blur(var(--iw-bg-overlay-blur));
}

/* home.php 側に残っている layer 要素は「基本は無効（split時だけ使う）」に寄せる */
.iw-bg__layer {
  display: none;
}

/* do_action('iw_front_bg_layers') で吐かれる要素を載せる“受け皿” */
.iw-bg__fx {
  position: absolute;
  inset: 0;
  z-index: var(--iw-bg-z-fx);
  pointer-events: none;
  /* marquee等は基本クリック不要ならこれで事故防止 */
}

/* marquee 側でクリックしたいリンクがあるなら、該当要素だけ pointer-events:auto に */
.iw-bg__fx a,
.iw-bg__fx button {
  pointer-events: auto;
}

/* 3カラム本体（.iw-shell は既存のまま。背景の上に来ることだけ保証） */
.iw-shell {
  position: relative;
  z-index: var(--iw-bg-z-shell);
}

/* ---------- mode: base（単色） ---------- */
.iw-bg--base {
  background: var(--iw-bg-base);
}

/* ---------- mode: image（1枚画像 + overlay） ---------- */
.iw-bg--image {
  background-color: var(--iw-bg-base);
  background-image: var(--iw-bg-image);
  background-position: var(--iw-bg-image-pos);
  background-size: var(--iw-bg-image-size);
  background-repeat: var(--iw-bg-image-repeat);
}

/* ---------- mode: split（オプション：左右パネルは“画面端”基準で安定させる） ---------- */
.iw-bg--split {
  /* splitでも土台は必ず塗る（白抜け保険） */
  background: var(--iw-bg-base);
}

/* split時のみ layer を有効化（home.php の base/left/right を使う想定） */
.iw-bg--split .iw-bg__layer {
  display: block;
  position: absolute;
  top: 0;
  bottom: 0;
  z-index: var(--iw-bg-z-base);
  pointer-events: none;
}

/* base（中央～全体の下地。必要なら色を変えてもOK） */
.iw-bg--split .iw-bg__layer--base {
  left: 0;
  right: 0;
  background: var(--iw-bg-base);
}

/* 左右パネル：レイアウト（グリッド）とは無関係に、常に画面端で塗る */
.iw-bg--split .iw-bg__layer--left {
  left: var(--iw-bg-split-gutter);
  width: var(--iw-bg-split-panel-w);
  background: var(--iw-bg-split-left);
}

.iw-bg--split .iw-bg__layer--right {
  right: var(--iw-bg-split-gutter);
  width: var(--iw-bg-split-panel-w);
  background: var(--iw-bg-split-right);
}

/* もし“斜め”が必要な学校だけ、追加クラスで clip をON（標準はOFF推奨） */
.iw-bg--split.is-clip .iw-bg__layer--left {
  clip-path: polygon(0 0, 100% 0, 86% 100%, 0 100%);
}

.iw-bg--split.is-clip .iw-bg__layer--right {
  clip-path: polygon(14% 0, 100% 0, 100% 100%, 0 100%);
}

/* ---------- レスポンシブ：830px以下は左右パネルも非表示（要望反映） ---------- */
@media (max-width: 830px) {

  /* パネル非表示（既存の right に加えて left も） */
  .iw-side--right,
  .iw-side--left {
    display: none !important;
  }

  /* splitの左右色も不要なら消す（白抜け防止の土台は .iw-bg の background が担保） */
  .iw-bg--split .iw-bg__layer--left,
  .iw-bg--split .iw-bg__layer--right {
    display: none;
  }
}

/* ---------- 白抜けを起こしやすい“境界幅”対策（安全弁） ---------- */
/* 1050px付近など、グリッドが揺れる幅でも .iw-bg 本体で常に塗れている状態が正 */
@media (max-width: 1200px) {
  .iw-bg {
    background: var(--iw-bg-base);
  }
}

/* =========================================================
   4) Shell Layout（PC: 3col + center fixed / SP: collapse）
   - PCはフルブリード3カラム（左広め / 右狭め / 中央固定）
   - 余白や境界で“透け”が出ても赤になるよう、PC時は .iw-shell にも背景を持たせる
========================================================= */
.iw-shell {
  position: relative;
  z-index: 2;
  width: min(1280px, 100% - 40px);
  margin-inline: auto;
  padding: var(--iw-space-10) 0;
}

/* PC：フルブリード＆3カラム（中央固定） */
@media (min-width: 831px) {
  .iw-shell {
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0;

    display: grid;
    grid-template-columns:
      minmax(400px, 1.2fr) var(--iw-center-fixed-w) minmax(320px, 0.8fr);
    gap: 0;
    align-items: stretch;
    min-height: 100vh;

    /* “中央以外は全面赤”の土台（左右をtransparent運用しても透けない） */
    background: var(--iw-bg-split-right, #e90000);
  }

  /* admin-bar（ログイン時） */
  body.admin-bar .iw-shell {
    min-height: calc(100vh - 32px);
  }
}

@media (min-width: 831px) and (max-width: 782px) {
  body.admin-bar .iw-shell {
    min-height: calc(100vh - 46px);
  }
}

/* 830以下：通常1カラム（左右は各自のルールで出す/消す） */
@media (max-width: 830px) {
  .iw-shell {
    width: min(1280px, 100% - 40px);
    margin-inline: auto;
    padding: var(--iw-space-6) 0;
    display: block;
    min-height: auto;

    /* SPはカード運用が多いので土台色は固定しない（必要ならここで指定） */
    background: transparent;
  }
}

/* =========================================================
   5) Side Panels (.iw-side)
========================================================= */
.iw-side {
  background: var(--iw-color-surface);
  border: 1px solid var(--iw-color-border);
  border-radius: var(--iw-radius-xl);
  box-shadow: var(--iw-shadow-sm);
  overflow: hidden;
}

.iw-side__inner {
  padding: var(--iw-space-6);
}

/* PC：面パネル（カードをやめて面にする） */
@media (min-width: 831px) {

  /* “面”としての左右パネル */
  .iw-side {
    position: relative;
    border: none;
    border-radius: 0;
    box-shadow: none;
    overflow: hidden;

    /* 面パネルの縦方向余白（固定ブロックの幅はここでは作らない） */
    padding-block: 48px;
  }

  .iw-side--left {
    background: var(--iw-front-left-bg);
    color: #fff;

    /* 400px固定ブロックを「左面の中央」に置く */
    display: flex;
    justify-content: center;
    /* 横センター */
  }

  .iw-side--right {
    background: var(--iw-front-right-bg);
    color: #111;
  }

  /* ✅ 左の固定ブロック：ロゴ〜タイル〜SNSをこの箱に閉じ込める */
  .iw-side--left .iw-side__inner {
    width: 380px;
    max-width: 380px;

    padding: 20px 0 20px 0;

    /* 高さが足りる場合、SNSを下へ押し下げるための土台 */
    min-height: calc(100vh - 96px);
    /* 48px*2 (iw-sideのpadding-block分) */
    display: flex;
    flex-direction: column;
  }

  /* あなたのHTMLでは .iw-side__inner が iw-left も兼ねているので、
     既存の .iw-left の定義はそのまま効きますが、念のため保険 */
  .iw-side--left .iw-left {
    width: 100%;
    display: flex;
    flex-direction: column;
    height: 100%;
  }

  /* 右は今まで通り（必要ならここも固定幅化できる） */
  .iw-side--right .iw-side__inner {
    padding: 48px 40px;
  }

  /* =========================================================
     PC: Left/Right panel background (#D30000 + icon loop)
     - トップページ以外も同一（PC時のみ）
  ========================================================= */
  .iw-side--left,
  .iw-side--right {
    background: #d30000;
    color: #fff;
    /* 背景（::before）と前景（中身）のレイヤーを安定させる */
    position: relative;
    isolation: isolate;
  }

  /* 右メニューの文字色も白寄せ（全ページ共通・PC時） */
  .iw-side--right .iw-rightmenu__title {
    color: rgba(255, 255, 255, 0.78);
  }

  .iw-side--right .iw-rightmenu__list a {
    color: rgba(255, 255, 255, 0.92);
  }

  .iw-side--right .iw-rightmenu__list a:hover {
    color: #fff;
  }

  /* 背景アイコン（タイル＋ゆっくり移動） */
  .iw-side--left::before,
  .iw-side--right::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: 0.7;
    background-image: url("../../img/ab-backicon.png");
    background-repeat: repeat;
    background-size: auto;
    background-position: 0 0;
    animation: iw-panel-bg-drift 90s linear infinite;
    z-index: 0;
    /* 背景レイヤーに固定 */
  }

  /* パネル内コンテンツ（ロゴ/Next丸など）を常に前面へ */
  .iw-side--left>*,
  .iw-side--right>* {
    position: relative;
    z-index: 1;
  }

  /* marquee が赤パネルの裏に隠れないよう前面へ（クリックは邪魔しない） */
  body.home .iw-bg-marquee {
    z-index: 4;
    opacity: 0.14;
    /* 中央カラムの上に被せない（左右パネル側だけに見せる） */
    --iw-center-half: calc(var(--iw-center-fixed-w) / 2);
    --iw-center-hide: calc(var(--iw-center-half) + 80px);
    -webkit-mask-image: linear-gradient(to right,
        #000 0,
        #000 calc(50% - var(--iw-center-hide)),
        transparent calc(50% - var(--iw-center-hide) + 1px),
        transparent calc(50% + var(--iw-center-hide) - 1px),
        #000 calc(50% + var(--iw-center-hide)),
        #000 100%);
    mask-image: linear-gradient(to right,
        #000 0,
        #000 calc(50% - var(--iw-center-hide)),
        transparent calc(50% - var(--iw-center-hide) + 1px),
        transparent calc(50% + var(--iw-center-hide) - 1px),
        #000 calc(50% + var(--iw-center-hide)),
        #000 100%);
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
  }

  body.home .iw-bg-marquee__row {
    color: rgba(255, 255, 255, 0.55);
  }

  @keyframes iw-panel-bg-drift {
    0% {
      background-position: 0 0;
    }

    100% {
      background-position: 560px 560px;
    }
  }

  @media (prefers-reduced-motion: reduce) {

    body.home .iw-side--left::before,
    body.home .iw-side--right::before {
      animation: none;
    }
  }
}

/* 表示制御：タブレット以下は左右を畳む（あなたの仕様） */
@media (max-width: 830px) {

  .iw-side--left,
  .iw-side--right {
    display: none;
  }
}

/* ⚠️ これ、いま入ってるけど “全面赤”方針と固定ブロック方針では不要/非推奨
   「背景色は layer に任せる」→ transparent にすると透け事故の温床になります
   なので削除するか、最低でも left には適用しないようにしてください */
/*
@media (min-width: 831px) {
  .iw-side--left,
  .iw-side--right {
    background: transparent;
  }
}
*/

/* =========================================================
   6) Center (.iw-center) - central scroll only
========================================================= */
.iw-center {
  min-width: 0;
  background: var(--iw-front-center-bg);
}

@media (min-width: 831px) {
  .iw-center {
    width: var(--iw-center-fixed-w);
    max-width: var(--iw-center-fixed-w);
    min-width: var(--iw-center-fixed-w);
    overflow: hidden;
    background: var(--iw-front-center-bg);
    position: relative;
    z-index: 1;
    /* 疑似要素ではなく中央カラム自体に影を付ける（はみ出し事故を増やさない） */
    box-shadow: 0 0 24px rgba(0, 0, 0, 0.38);
  }

  .iw-center__scroll {
    height: 100vh;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    /* 追加：スクロールバー非表示（スクロールは生きる） */
    scrollbar-width: none;
    /* Firefox */
    -ms-overflow-style: none;
    /* IE/Edge legacy */
  }

  .iw-center__scroll::-webkit-scrollbar {
    display: none;
    /* Chrome/Safari */
  }

  body.admin-bar .iw-center__scroll {
    height: calc(100vh - 32px);
  }
}

@media (min-width: 831px) and (max-width: 782px) {
  body.admin-bar .iw-center__scroll {
    height: calc(100vh - 46px);
  }
}

/* SP：自然に */
@media (max-width: 830px) {
  .iw-center__scroll {
    height: auto;
    overflow: visible;
  }
}

/* “スマホ枠”内側（必要なら将来ここで端末感を足す） */
.iw-mobile-frame {
  height: 100%;
}

/* 中央本文（scroll-home.phpが entry-content / scroll-page を出す想定） */
.iw-center .entry-content,
.iw-center .scroll-page {
  /* PC/SPで見た目を分岐させない（ブレークポイント差分はレイアウトのみ） */
  padding: 24px 18px;
  display: grid;
  gap: var(--iw-space-6);
}

@media (max-width: 420px) {

  .iw-center .entry-content,
  .iw-center .scroll-page {
    padding: 22px 16px;
  }
}

/* PCのみ：SPバー/ドロワーなどがある場合は非表示（あれば） */
@media (min-width: 831px) {

  .iw-spbar,
  .iw-drawer {
    display: none !important;
  }
}

/* =========================================================
   7) Background moving typography (optional)
   - tickerモード等で template側が .iw-bg-marquee を出す想定
========================================================= */
.iw-bg-marquee {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  opacity: 0.18;
}

/* 一旦、背景タイポ（2行marquee）を非表示 */
.iw-bg-marquee__row {
  display: none !important;
}

.iw-bg-marquee__row {
  position: absolute;
  left: 0;
  right: 0;
  white-space: nowrap;
  font-weight: 800;
  letter-spacing: 0.08em;
  line-height: 1;
  font-size: clamp(28px, 3vw, 48px);
  transform: translate3d(0, 0, 0);
  animation: iw-marquee 18s linear infinite;
}

.iw-bg-marquee__row:nth-child(1) {
  top: 18%;
}

.iw-bg-marquee__row:nth-child(2) {
  top: 58%;
}

.iw-bg-marquee__row.is-rev {
  animation-direction: reverse;
  opacity: 0.75;
}

.iw-bg-marquee__row span {
  display: inline-block;
  padding-right: 2rem;
}

@keyframes iw-marquee {
  0% {
    transform: translateX(0);
  }

  100% {
    transform: translateX(-50%);
  }
}

@media (prefers-reduced-motion: reduce) {
  .iw-bg-marquee__row {
    animation: none;
  }
}

/* =========================================================
   Mobile/Tablet: fixed bottom CTA (2 buttons 50/50)
========================================================= */
.iw-bottom-cta {
  display: none;
}

@media (max-width: 830px) {
  :root {
    --iw-bottom-cta-h: 45px;
  }

  body {
    padding-bottom: calc(var(--iw-bottom-cta-h) + env(safe-area-inset-bottom));
  }

  .iw-bottom-cta {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 9998;
    /* drawer(9999)の下、コンテンツの上 */

    display: flex;
    align-items: stretch;

    height: var(--iw-bottom-cta-h);
    padding-bottom: env(safe-area-inset-bottom);
    box-shadow: 0 -10px 24px rgba(0, 0, 0, 0.18);
  }

  .iw-bottom-cta__btn {
    flex: 1 1 50%;
    display: flex;
    align-items: center;
    justify-content: center;

    font-weight: 800;
    letter-spacing: 0.08em;
    text-decoration: none;
    color: #fff;

    font-size: 14px;
    line-height: 1;
    white-space: nowrap;
  }

  .iw-bottom-cta__btn--oc {
    background: linear-gradient(135deg,
        rgba(255, 56, 124, 0.9) 0%,
        rgba(162, 83, 166, 1) 52%,
        rgba(0, 197, 247, 1) 100%);
  }

  .iw-bottom-cta__btn--line {
    background: #07b53b;
  }

  .iw-bottom-cta__btn.is-disabled {
    opacity: 0.6;
    pointer-events: none;
  }
}

/* =========================================================
   8) Side contents: Brand / Nav / Next（完成版）
========================================================= */
.iw-brand {
  padding: var(--iw-space-6);
  background: var(--iw-color-primary);
  color: #fff;
}

.iw-brand__link {
  color: #fff;
  text-decoration: none;
  font-weight: 900;
  font-size: 20px;
  letter-spacing: 0.02em;
}

.iw-side__nav {
  padding: var(--iw-space-6);
}

.iw-side__nav a {
  display: block;
  padding: 0.7em 0.8em;
  border-radius: var(--iw-radius-md);
  text-decoration: none;
}

.iw-side__nav a:hover {
  background: rgba(10, 161, 214, 0.08);
  text-decoration: none;
}

/* SP/Tablet：Next はカードでOK（既存踏襲） */
.iw-next {
  margin: var(--iw-space-6);
  padding: var(--iw-space-6);
  border-radius: var(--iw-radius-lg);
  border: 1px solid var(--iw-color-border);
  background: var(--iw-color-bg);
  box-shadow: var(--iw-shadow-sm);
}

.iw-next__title {
  font-weight: 800;
}

.iw-next__date {
  margin-top: var(--iw-space-2);
  color: var(--iw-color-muted);
}

.iw-next__btn {
  display: inline-flex;
  margin-top: var(--iw-space-4);
  padding: 0.7em 0.9em;
  border-radius: var(--iw-radius-md);
  background: var(--iw-color-primary);
  color: #fff;
  text-decoration: none;
}

.iw-next__btn:hover {
  background: var(--iw-color-primary-dark);
  text-decoration: none;
}

/* PC：左ブランドを見本寄せ（大きめ） */
@media (min-width: 831px) {
  .iw-brand {
    background: transparent;
    padding: 0 0 28px;
  }

  .iw-brand__link {
    font-size: 44px;
  }
}

/* =========================================================
   PC：Right panel 内で「左右の空き＝均等」＝横センター配置
   かつ、丸CTAを添付デザイン寄せに
========================================================= */
@media (min-width: 831px) {
  .iw-side--right {
    display: grid;
    justify-items: center;
    /* 横は中央（左右の空き均等） */
    align-items: end;
    /* 縦は下寄せ */
    padding-bottom: 38px;
    /* 下の余白（好みで調整） */
  }
}

@media (min-width: 831px) {

  /* 外枠：カード/absoluteをやめて配置専用に */
  .iw-next {
    margin: 0;
    padding: 0;
    border: none;
    background: transparent;
    box-shadow: none;
    position: static;
  }
}

@media (min-width: 831px) {

  /* ===============================
     丸の中だけフォント指定
  =============================== */
  .iw-next__circle {
    /* サイト全体フォントに統一 */
    font-family: var(--iw-font-sans);
    letter-spacing: 0.02em;
  }

  /* 丸本体 */
  .iw-next__circle {
    width: 220px;
    height: 220px;
    border-radius: 999px;
    /* グラデーション（指定3色） */
    --iw-next-accent: rgb(162, 83, 166);
    background: linear-gradient(135deg,
        rgba(255, 56, 124, 0.9) 0%,
        rgba(162, 83, 166, 1) 52%,
        rgba(0, 197, 247, 1) 100%);
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.18);
    color: #fff;

    display: grid;
    place-content: center;
    text-align: center;
  }

  /* タイトル */
  .iw-next__title {
    font-weight: 800;
    font-size: 22px;
    font-style: italic;
    line-height: 1.1;
    margin: 0 0 5px;
  }

  /* 日付 */
  .iw-next__date {
    display: flex;
    align-items: center;
    justify-content: center;

    gap: 10px;
    margin: 0;
    font-size: 68px;
    font-weight: 900;
    line-height: 1;
    letter-spacing: 0.02em;
    white-space: nowrap;
    color: #fff;
  }

  /* 曜日（白丸） */
  .iw-next__dow {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    width: 33px;
    height: 33px;
    border-radius: 999px;

    background: #fff;
    color: var(--iw-next-accent);
    font-weight: 600;
    font-size: 16px;

    transform: translateY(10px);
    /* 位置微調整 */
    flex-shrink: 0;
  }

  /* MORE ボタン */
  .iw-next__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    margin: 8px auto 0;
    padding: 0;

    width: 160px;
    /* ← 大きすぎ防止 */
    max-width: 70%;
    border-radius: 999px;

    background: #fff;
    color: var(--iw-next-accent);
    font-weight: 800;
    letter-spacing: 0.12em;
    text-decoration: none;
  }

  .iw-next__btn:hover {
    text-decoration: none;
  }
}

/* Right panel layout */
@media (min-width: 831px) {
  .iw-side--right .iw-side__inner.iw-right {
    height: 100%;
    display: flex;
    flex-direction: column;
    padding: 18px 40px;
    /* 右側の余白：左右を均等に見せる基準 */
  }

  /* 上：menu */
  .iw-rightmenu {
    margin-top: 6px;
  }

  .iw-rightmenu__title {
    margin: 0 0 18px;
    font-style: italic;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: rgba(0, 0, 0, 0.65);
    text-align: center;
  }

  .iw-rightmenu__list {
    display: grid;
    gap: 18px;
    justify-items: center;
  }

  .iw-rightmenu__list a {
    display: inline-block;
    text-decoration: none;
    color: rgba(0, 0, 0, 0.75);
    font-weight: 600;
    letter-spacing: 0.02em;
  }

  .iw-rightmenu__list a:hover {
    text-decoration: underline;
  }

  /* 下：丸CTAを下寄せ */
  .iw-next {
    margin-top: auto;
    /* ← これで下寄せ */
    display: grid;
    justify-items: center;
    padding-bottom: 30px;
  }
}

/* =========================================================
   9) Panel Left (pc-side-left.php) - Brand / Tiles / SNS
========================================================= */
/* brand */
.iw-left__brand {
  margin-bottom: 18px;
}

.iw-left__brand-link {
  display: grid;
  gap: 10px;
  text-decoration: none;
  color: #fff;
}

.iw-left__logo img {
  max-width: 370px;
  height: auto;
  display: block;
}

.iw-left__schoolname {
  font-size: 16px;
  font-weight: 500;
  letter-spacing: 0.06em;
  line-height: 1.4;
  opacity: 0.92;
}

/* SNS */
.iw-sns {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  align-items: center;
}

.iw-sns__a {
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;

  border: 2px solid rgba(255, 255, 255, 0.65);
  background: rgba(255, 255, 255, 0.1);
  color: #fff;
  text-decoration: none;
}

.iw-sns__a:hover {
  background: rgba(255, 255, 255, 0.18);
  text-decoration: none;
}

/* PNGアイコン（insta/tiktok/line/youtube）を使用する場合 */
.iw-sns__a--img {
  border: none;
  background: transparent;
  overflow: hidden;
  padding: 0;
}

.iw-sns__a--img:hover {
  background: transparent;
}

.iw-sns__img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

.iw-sns__ico {
  font-weight: 900;
  font-size: 12px;
  letter-spacing: 0.02em;
}

/* =========================================================
   10) Panel Left Tiles (panel_left) - FINAL
   Walker: IW_Panel_Left_Walker
========================================================= */
.iw-left {
  height: 100%;
  display: flex;
  flex-direction: column;
}

.iw-left__top {
  padding-bottom: 18px;
}

.iw-left__mid {
  flex: none;
}

.iw-left__btm {
  padding-top: 50px;
}

/* wrap（高さの基準をここで決める） */
.iw-tiles-wrap {
  --iw-tile-h: 110px;
}

.iw-tiles-wrap.is-rows-3 {
  --iw-tile-h: 110px;
}

.iw-tiles-wrap.is-rows-4 {
  --iw-tile-h: 116px;
}

/* ul */
.iw-tiles {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 14px;
  margin: 22px 0 0;
  padding: 0;
  list-style: none;
}

/* li */
.iw-tile {
  min-width: 0;
  height: var(--iw-tile-h);
}

/* 1カラム（全幅） */
.iw-tile--full {
  grid-column: span 6;
}

/* 2カラム（半分） */
.iw-tile--half {
  grid-column: span 3;
}

/* 3カラム（均等三分割） */
.iw-tile--third {
  grid-column: span 2;
}

/* 既存互換（まだ span-1/2/3 が残ってても動くように保険） */
.iw-tile--span-1 {
  grid-column: span 6;
}

.iw-tile--span-2 {
  grid-column: span 3;
}

.iw-tile--span-3 {
  grid-column: span 2;
}

/* link */
.iw-tile__link {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  overflow: hidden;
  border-radius: 8px;

  border: 2px solid rgba(255, 255, 255, 0.65);
  background: rgba(255, 255, 255, 0.1);

  text-decoration: none;
}

/* image */
.iw-tile__img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  transform: scale(1.02);
  transition: transform 180ms var(--iw-ease);
}

/* placeholder */
.iw-tile__placeholder {
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  padding: 12px;
  text-align: center;
  color: #fff;
  font-weight: 800;
}

/* title overlay */
.iw-tile__label {
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 8px;
  z-index: 2;

  color: #fff;
  font-weight: 800;
  font-size: 12px;
  line-height: 1.2;
  text-shadow: 0 2px 10px rgba(0, 0, 0, 0.35);

  display: -webkit-box;
  line-clamp: 2;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}



/* hover（PCのみ） */
@media (hover: hover) {
  .iw-tile__link {
    transition: transform 160ms var(--iw-ease), background 160ms var(--iw-ease);
  }

  .iw-tile__link:hover {
    transform: translateY(-1px);
    background: rgba(255, 255, 255, 0.16);
  }

  .iw-tile__link:hover .iw-tile__img {
    transform: scale(1.08);
  }
}

/* タイトルOFF（学校別運用用：body_classで付与） */
body.is-panel-left-title-off .iw-tile__label,
body.is-panel-left-title-off .iw-tile__link::after {
  display: none !important;
}

/* 小さい端末のgap調整（3列固定のまま） */
@media (max-width: 390px) {
  .iw-tiles {
    gap: 10px;
    margin-top: 16px;
  }

  .iw-tiles-wrap.is-rows-4 {
    --iw-tile-h: 88px;
  }
}

/* Panel Left タイルのタイトルを非表示 */
.iw-tile__label {
  display: none;
}

/* =========================================================
   11) Page Title（汎用）
========================================================= */
.page_title {
  background: var(--iw-color-surface);
  border-bottom: 1px solid var(--iw-color-border);
  padding: var(--iw-space-10) 0;
}

/* .inner を使わないテンプレでも左右余白を確保 */
.page_title> :not(.inner) {
  padding-inline: clamp(16px, 3vw, 24px);
}

.page_title .inner {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--iw-space-6);
}

.page_title h1 {
  font-size: clamp(1.4rem, 2.2vw, 2rem);
  letter-spacing: 0.02em;
}

/* =========================================================
   12) Common UI parts
========================================================= */
/* Buttons */
.iw-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5em;
  padding: 0.78em 1.05em;
  border-radius: var(--iw-radius-md);
  border: 1px solid transparent;
  background: var(--iw-color-primary);
  color: #fff;
  box-shadow: var(--iw-shadow-sm);
  transition: transform var(--iw-duration) var(--iw-ease),
    background var(--iw-duration) var(--iw-ease),
    box-shadow var(--iw-duration) var(--iw-ease);
  cursor: pointer;
  user-select: none;
  text-decoration: none;
}

.iw-btn:hover {
  background: var(--iw-color-primary-dark);
  transform: translateY(-1px);
  box-shadow: var(--iw-shadow-md);
  text-decoration: none;
}

.iw-btn:active {
  transform: translateY(0);
  box-shadow: var(--iw-shadow-sm);
}

.iw-btn--ghost {
  background: transparent;
  color: var(--iw-color-primary);
  border-color: rgba(10, 161, 214, 0.35);
  box-shadow: none;
}

.iw-btn--ghost:hover {
  background: rgba(10, 161, 214, 0.08);
  box-shadow: none;
}

.iw-btn--block {
  width: 100%;
}

/* Card */
.iw-card {
  background: var(--iw-color-bg);
  border: 1px solid var(--iw-color-border);
  border-radius: var(--iw-radius-lg);
  box-shadow: var(--iw-shadow-sm);
  overflow: hidden;
}

.iw-card__body {
  padding: clamp(var(--iw-space-6), 4vw, var(--iw-space-8));
}

/* Badge */
.iw-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.28em 0.6em;
  border-radius: 999px;
  font-size: 0.85rem;
  border: 1px solid var(--iw-color-border);
  background: var(--iw-color-surface);
}

.iw-badge--primary {
  border-color: rgba(10, 161, 214, 0.35);
  background: rgba(10, 161, 214, 0.1);
  color: var(--iw-color-primary);
}

/* Divider */
.iw-divider {
  height: 1px;
  background: var(--iw-color-border);
  margin: var(--iw-space-8) 0;
}

/* =========================================================
   13) News（最低限）
========================================================= */
.news_outer {
  display: grid;
  gap: var(--iw-space-8);
}

.news_cat_nav ul {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}

@media (max-width: 420px) {
  .news_cat_nav ul {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.news_cat_nav {
  position: relative;
  z-index: 5;
  /* 記事リンクより前面（誤タップで記事へ飛ぶのを防ぐ） */
}

.news_cat_nav a {
  width: 100%;
  height: 36px;
  /* 枠サイズ固定 */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  line-clamp: 2;
  /* 互換性のため */
  -webkit-line-clamp: 2;
  /* 2行まで */
  overflow: hidden;
  padding: 10px 12px 8px;
  border-radius: 12px;
  border: 1px solid var(--iw-color-border);
  background: var(--iw-color-bg);
  text-decoration: none;
  font-size: 12px;
  line-height: 1.25;
  text-align: center;
  transition: background var(--iw-duration) var(--iw-ease),
    border-color var(--iw-duration) var(--iw-ease),
    transform var(--iw-duration) var(--iw-ease);
}

.news_cat_nav a:hover {
  background: var(--iw-color-surface);
  border-color: rgba(10, 161, 214, 0.35);
  transform: translateY(-1px);
  text-decoration: none;
}

.news_cat_nav .is-active a {
  background: rgba(10, 161, 214, 0.1);
  border-color: rgba(10, 161, 214, 0.35);
  color: var(--iw-color-primary);
}

/* news list (info/category) - mobile-home の見た目に寄せる */
.iw-center .iw-newslist {
  display: grid;
  gap: 10px;
  margin: 0;
  padding: 0;
}

.iw-center .iw-newsitem {
  display: grid;
  grid-template-columns: 82px 1fr;
  gap: 10px;
  align-items: baseline;
  padding: 10px 0;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.iw-center .iw-newsitem:last-child {
  border-bottom: none;
}

.iw-center .iw-newsitem__date {
  font-size: 12px;
  color: rgba(0, 0, 0, 0.6);
  letter-spacing: 0.02em;
  white-space: nowrap;
}

.iw-center .iw-newsitem__link {
  display: inline-block;
  text-decoration: none;
  color: #333333;
  font-weight: 500;
  line-height: 1.35;
  grid-column: 2;
  font-size: 14px;
}

.iw-center .iw-newsitem__link:hover {
  text-decoration: underline;
}

.iw-center .iw-newsitem__cat {
  width: fit-content;
  display: inline-flex;
  align-items: center;
  padding: 0.28em 0.7em;
  border-radius: 999px;
  border: 1px solid rgba(0, 0, 0, 0.10);
  background: rgba(0, 0, 0, 0.02);
  font-size: 12px;
  line-height: 1;
  text-decoration: none;
  color: rgba(0, 0, 0, 0.72);
  grid-column: 2;
}

.iw-center .iw-newsitem__cat:hover {
  background: rgba(0, 0, 0, 0.04);
  text-decoration: none;
}

@media (max-width: 420px) {
  .iw-center .iw-newsitem {
    grid-template-columns: 1fr;
    gap: 6px;
  }

  .iw-center .iw-newsitem__link,
  .iw-center .iw-newsitem__cat {
    grid-column: auto;
  }
}

/* =========================================================
   Events hub（カードをやめて読みやすく）
========================================================= */
.iw-events-intro {
  display: grid;
  gap: 0;
}

.iw-events-section__title {
  margin: 0 0 12px;
  font-size: 18px;
  font-weight: 800;
  letter-spacing: 0.02em;
}

.iw-events-kvlist {
  display: grid;
  gap: 10px;
  margin: 0;
}

.iw-events-kvlist__row {
  display: grid;
  grid-template-columns: 90px 1fr;
  gap: 10px;
  align-items: baseline;
}

.iw-events-kvlist dt {
  font-weight: 700;
  color: rgba(0, 0, 0, 0.65);
}

.iw-events-kvlist dd {
  margin: 0;
}

.iw-events-picks {
  display: grid;
  gap: 10px;
}

.iw-events-pick {
  padding: 12px 0;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.iw-events-pick:last-child {
  border-bottom: none;
}

.iw-events-pick h3 {
  margin: 0 0 6px;
  font-size: 15px;
  font-weight: 800;
}

.iw-events-pick p {
  margin: 0;
  color: rgba(0, 0, 0, 0.75);
}

.iw-events-faq details {
  padding: 10px 0;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.iw-events-faq details:last-child {
  border-bottom: none;
}

.iw-events-faq summary {
  cursor: pointer;
  font-weight: 700;
}

.iw-events-faq p {
  margin: 10px 0 0;
  color: rgba(0, 0, 0, 0.75);
}

.iw-events-type__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 10px;
}

.iw-events-type__title {
  margin: 0;
  font-size: 18px;
  font-weight: 900;
}

.iw-events-type__more {
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
}

.iw-events-type__more:hover {
  text-decoration: underline;
}

.iw-events-type__list {
  display: grid;
  gap: 10px;
}

.iw-events-type__item {
  display: grid;
  gap: 6px;
  padding: 12px 0;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
  text-decoration: none;
  color: inherit;
}

.iw-events-type__item:last-child {
  border-bottom: none;
}

.iw-events-type__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  color: rgba(0, 0, 0, 0.65);
  font-size: 12px;
}

.iw-events-type__name {
  font-weight: 800;
  line-height: 1.35;
}

.iw-events-type__btn {
  font-weight: 800;
  color: var(--iw-color-primary);
}

.iw-events-type__empty {
  margin: 0;
  color: rgba(0, 0, 0, 0.65);
}

@media (max-width: 420px) {
  .iw-events-kvlist__row {
    grid-template-columns: 1fr;
    gap: 4px;
  }
}

/* =========================================================
   14) Pagination（wp-pagenavi）
========================================================= */
.pagenation,
.wp-pagenavi {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: var(--iw-space-2);
  margin: var(--iw-space-10) 0;
}

.wp-pagenavi a,
.wp-pagenavi span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  padding: 0 12px;
  border-radius: var(--iw-radius-md);
  border: 1px solid var(--iw-color-border);
  background: var(--iw-color-bg);
  text-decoration: none;
}

.wp-pagenavi a:hover {
  border-color: rgba(10, 161, 214, 0.35);
  background: rgba(10, 161, 214, 0.08);
}

.wp-pagenavi span.current {
  border-color: rgba(10, 161, 214, 0.35);
  background: rgba(10, 161, 214, 0.12);
  color: var(--iw-color-primary);
  font-weight: 700;
}

/* =========================================================
   15) Gutenberg / entry-content（最低限）
========================================================= */
.iw-page-subtitle {
  margin-top: 10px;
  color: var(--iw-color-muted);
  font-size: 0.95rem;
}

.iw-page-lead {
  margin-top: 18px;
  color: rgba(0, 0, 0, 0.72);
  line-height: 1.8;
}

/* =========================================================
   Breadcrumb (school section)
========================================================= */
.iw-breadcrumb {
  font-size: 14px;
  opacity: 0.82;
  margin: 12px 0 0;
}

.iw-breadcrumb__list {
  display: flex;
  gap: 8px;
  list-style: none;
  padding: 0;
  margin: 0;
  flex-wrap: wrap;
}

.iw-breadcrumb__item::after {
  content: "/";
  margin-left: 8px;
  opacity: 0.5;
}

.iw-breadcrumb__item:last-child::after {
  content: "";
  margin: 0;
}

.iw-breadcrumb a {
  text-decoration: none;
}

.iw-breadcrumb a:hover {
  text-decoration: underline;
}

/* =========================================================
   Fixed Page Sections (Common)
   - ACF page_sections の共通見た目（7校共通で固定）
========================================================= */
.iw-page-section {
  margin: clamp(64px, 8vw, 120px) 0;
}

.iw-page-section:first-child {
  margin-top: 0;
}

.iw-page-section .iw-section__title {
  margin: 0 0 24px;
  font-size: clamp(20px, 2.4vw, 28px);
  line-height: 1.4;
}

.iw-page-section p {
  line-height: 1.8;
}

/* Text */
.iw-section--text .iw-section__content {
  max-width: 720px;
}

/* Image + Text */
.iw-section--image-text .iw-section__row {
  /* PC/SPで同一デザイン：常に縦積み1カラム（モバイル見た目に統一） */
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(24px, 4vw, 48px);
  align-items: center;
}

/* is-image-right は “順序だけ” を変える用途だったが、1カラム統一では不要 */

/* Full Image (full-bleed inside center column) */
.iw-section--full-image {
  position: relative;
  /* PC/SPで同一デザイン：中央カラム内に収める（フルブリードしない） */
  margin-left: 0;
  margin-right: 0;
}

.iw-section--full-image .iw-section__figure {
  margin: 0;
  overflow: hidden;
  /* オーバーレイがはみ出す場合の保険 */
}

.iw-section--full-image .iw-section__figure,
.iw-section--full-image img {
  width: 100%;
  height: auto;
  display: block;
}

/* Features */
.iw-section--features .iw-features {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 24px;
}

/* =========================================
   Related CTA (page bottom)
========================================= */
.iw-related {
  margin-top: 40px;
  padding-top: 28px;
  border-top: 1px solid rgba(0, 0, 0, 0.08);
}

.iw-related__title {
  font-size: 22px;
  line-height: 1.2;
  margin: 0 0 16px;
}

.iw-related__grid {
  display: grid;
  /* PC/モバイルで同一：常に2カラム */
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.iw-related__card {
  display: grid;
  grid-template-rows: auto 1fr;
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-radius: 14px;
  overflow: hidden;
  background: #fff;
  text-decoration: none;
  transition: transform 0.12s ease, box-shadow 0.12s ease, border-color 0.12s ease;
}

@media (hover: hover) {
  .iw-related__card:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.1);
    border-color: rgba(0, 0, 0, 0.18);
  }
}

.iw-related__thumb {
  aspect-ratio: 16 / 9;
  background: linear-gradient(135deg, rgba(0, 0, 0, 0.04), rgba(0, 0, 0, 0.02));
  position: relative;
  overflow: hidden;
}

.iw-related__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.iw-related__body {
  padding: 12px 12px 14px;
  display: grid;
  gap: 8px;
}

.iw-related__name {
  font-size: 16px;
  line-height: 1.35;
  font-weight: 700;
}

.iw-related__desc {
  font-size: 13px;
  line-height: 1.6;
  color: rgba(0, 0, 0, 0.7);
}

/* PC/モバイルで同一：カラム数は変えない */

.entry-content a {
  color: var(--iw-color-primary);
}

.entry-content a:hover {
  color: var(--iw-color-primary-dark);
}

.entry-content table {
  width: 100%;
  border-collapse: collapse;
  border: 1px solid var(--iw-color-border);
  overflow: hidden;
  border-radius: var(--iw-radius-lg);
}

.entry-content th,
.entry-content td {
  padding: 0.8em 0.9em;
  border-bottom: 1px solid var(--iw-color-border);
  vertical-align: top;
}

.entry-content th {
  background: var(--iw-color-surface);
  text-align: left;
}

.entry-content blockquote {
  margin: 0;
  padding: var(--iw-space-6);
  border-left: 4px solid rgba(10, 161, 214, 0.35);
  background: var(--iw-color-surface);
  border-radius: var(--iw-radius-lg);
  color: var(--iw-color-muted);
}

/* =========================================================
   16) Print
========================================================= */
@media print {
  a {
    text-decoration: underline;
  }
}

/* =========================================================
   SP (<=830)
========================================================= */
@media (max-width: 830px) {

  /* 1) 左右は両方消す */
  .iw-side.iw-side--left,
  .iw-side.iw-side--right {
    display: none !important;
  }

  /* 2) 背景の保険 */
  .iw-bg {
    background: #fff !important;
  }

  /* 3) 中身を全面に */
  .iw-bg .iw-shell {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    background: transparent !important;
  }

  .iw-bg .iw-center {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
  }

  /* 4) marquee / split左右は消す */
  .iw-bg-marquee,
  .iw-bg__layer--left,
  .iw-bg__layer--right {
    display: none !important;
  }

  /* ===== SP Header (bar) ===== */
  .iw-spbar {
    display: flex;
    align-items: center;
    gap: 14px;
    height: 60px;
    padding: 0 16px;
    background: #fff;

    position: sticky;
    top: 0;
    z-index: 10000;

    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  }

  /* admin-bar時 */
  body.admin-bar .iw-spbar {
    top: 46px;
  }

  @media (min-width: 783px) {
    body.admin-bar .iw-spbar {
      top: 32px;
    }
  }

  .iw-spbar__brand {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
  }

  .iw-spbar__brand a {
    display: block;
    line-height: 0;
    text-decoration: none;
  }

  .iw-spbar__brand svg,
  .iw-spbar__brand img {
    display: block;
    width: clamp(150px, 28vw, 300px);
    height: auto;
  }

  .iw-spbar__title {
    flex: 1 1 auto;
    min-width: 0;
    font-weight: 500;
    line-height: 1.25;
    color: #333;
    font-size: 11px;
    /* iPhone機種差で変わらないよう固定 */
    letter-spacing: 0.02em;
  }

  .iw-spbar__title br {
    display: block;
  }

  /* ===== 赤丸トグルボタン（開く/閉じるを1つで） ===== */
  .iw-spbar .iw-burger[data-iw="burger-open"] {
    flex: 0 0 auto;
    width: 44px;
    height: 44px;
    border-radius: 999px;
    border: 0;
    background: #e90000;
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    letter-spacing: 0.06em;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;

    /* 中の文字は使わず擬似要素で表示 */
    font-size: 0;
  }

  /* ラベルは疑似要素で管理（HTMLは増やさない） */
  .iw-burger::after {
    content: "menu";
    font-size: 13px;
    line-height: 1;
  }

  .iw-burger.is-open::after {
    content: "✗";
    font-size: 20px;
    line-height: 1;
  }

  /* ===== Drawer ===== */
  .iw-drawer {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: none;
    background: rgba(0, 0, 0, 0.35);
  }

  .iw-drawer.is-open {
    display: block;
  }

  .iw-drawer__panel {
    position: absolute;
    inset: 0;
    background: #ffffff;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
    padding: 24px 20px 24px;
  }

  .iw-drawer-search {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0 0 18px;
    padding: 6px 0 5px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.15);
  }

  .iw-drawer-search__input {
    flex: 1;
    width: 100%;
    border: 0;
    outline: 0;
    background: transparent;
    font-size: 18px;
    letter-spacing: 0.04em;
    padding: 10px 6px;
  }

  .iw-drawer-search__btn {
    width: 44px;
    height: 44px;
    border: 0;
    background: transparent;
    font-size: 22px;
    cursor: pointer;
  }

  /* ヘッダー直下の余白を完全に消す */
  .iw-bg {
    margin-top: 0 !important;
    padding-top: 0 !important;
  }

  .iw-bg .iw-shell {
    margin-top: 0 !important;
    padding-top: 0 !important;
  }

  .iw-bg .iw-center {
    margin-top: 0 !important;
    padding-top: 0 !important;
  }

  /* mobile-home 側に入っている可能性のある余白も保険で */
  .mobile-home,
  .mobile-home>*:first-child {
    margin-top: 0 !important;
    padding-top: 0 !important;
  }

  /* ===== iPhone調整 ===== */
  @media (max-width: 420px) {
    .iw-spbar {
      padding: 0 12px;
      gap: 12px;
    }

    .iw-spbar .iw-burger[data-iw="burger-open"] {
      width: 44px;
      height: 44px;
    }

    .iw-spbar__brand svg,
    .iw-spbar__brand img {
      width: clamp(120px, 32vw, 170px);
    }

    .iw-spbar__title {
      font-size: 11px;
    }
  }

  @media (max-width: 360px) {
    .iw-spbar__title {
      font-size: 11px;
    }
  }
}

/* =========================================================
   Search Result (No Thumbnail / Simple)
========================================================= */

/* 全体 */
.iw-page {
  max-width: 1100px;
  margin: 0 auto;
  padding: clamp(24px, 3.2vw, 32px) clamp(16px, 2.5vw, 20px) clamp(48px, 6vw, 64px);
}

/* ヘッダー */
.iw-page__head {
  margin-bottom: 32px;
}

.iw-page__title {
  font-size: clamp(22px, 2.2vw, 28px);
  font-weight: 700;
  margin-bottom: 8px;
}

.iw-search-head__meta {
  font-size: 14px;
  color: #666;
  margin-bottom: 16px;
}

/* 検索フォーム */
.iw-search-form {
  display: flex;
  gap: 8px;
  max-width: min(420px, 100%);
}

.iw-search-form__input {
  flex: 1;
  height: 44px;
  padding: 0 14px;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 6px;
  font-size: 14px;
}

.iw-search-form__btn {
  height: 44px;
  padding: 0 16px;
  border-radius: 6px;
  border: none;
  background: #111;
  color: #fff;
  font-size: 14px;
  cursor: pointer;
}

/* 検索結果一覧 */
.iw-search-list {
  display: grid;
  gap: 20px;
}

/* 各結果 */
.iw-search-item {
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  padding-bottom: 20px;
}

.iw-search-item__link {
  display: block;
  text-decoration: none;
  color: inherit;
}

/* 上部メタ */
.iw-search-item__top {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-bottom: 6px;
}

.iw-search-item__type {
  font-size: 12px;
  padding: 2px 8px;
  border-radius: 999px;
  background: #f0f0f0;
  color: #333;
}

.iw-search-item__date {
  font-size: 12px;
  color: #777;
}

/* タイトル */
.iw-search-item__title {
  font-size: clamp(16px, 1.6vw, 18px);
  font-weight: 600;
  line-height: 1.5;
  margin-bottom: 6px;
}

/* 抜粋 */
.iw-search-item__excerpt {
  font-size: 14px;
  line-height: 1.7;
  color: #555;
}

/* ページャ */
.iw-pager {
  margin-top: 40px;
  display: flex;
  justify-content: center;
  gap: 8px;
}

.iw-pager a,
.iw-pager span {
  min-width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  font-size: 14px;
  text-decoration: none;
}

.iw-pager a {
  border: 1px solid rgba(0, 0, 0, 0.2);
  color: #111;
}

.iw-pager span.current {
  background: #111;
  color: #fff;
}

/* 検索結果なし */
.iw-search-empty {
  margin-top: 40px;
  text-align: center;
}

.iw-search-empty p {
  margin-bottom: 16px;
  color: #555;
}

/* =========================================================
   Search Result Page Background
========================================================= */

/* 検索結果ページのみ背景を白に固定 */
body.search,
body.search-results {
  background: #fff !important;
}

/* 念のため html も白に */
html body.search,
html body.search-results {
  background: #fff !important;
}

/* =========================================================
   Footer (Common) - 2 columns always (PC/Mobile same)
========================================================= */
.iw-center-footer {
  display: none;
  /* モバイル/タブレットは通常footerが見えるので二重表示を防ぐ */
}

@media (min-width: 831px) {
  .iw-center-footer {
    display: block;
    padding-bottom: 70px;
  }
}

.iw-footer {
  background: #fff;
  color: #111;
}

/* ---------- Information ---------- */
.iw-footer__info {
  padding: 34px 18px 28px;
  text-align: center;
}

.iw-footer__title {
  margin: 0 0 18px;
  font-size: 28px;
  font-weight: 800;
  letter-spacing: 0.06em;
  font-style: italic;
  color: #d10000;
}

.iw-footer__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  /* 常に2カラム固定 */
  gap: 22px 22px;
  margin: 0 auto;
  max-width: 560px;
  /* PCでも見え方をSP寄せにする */
}

.iw-footer__col {
  display: grid;
  gap: 10px;
  text-align: left;
  /* リストが読みやすい */
}

.iw-footer__link {
  display: inline-block;
  font-size: 13px;
  line-height: 1.5;
  font-weight: 400;
  color: #383838;
  text-decoration: none;
}

.iw-footer__link:hover {
  text-decoration: underline;
}

/* ---------- AB Red Block ---------- */
.iw-footer__ab {
  position: relative;
  color: #fff;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

.iw-footer__ab::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(180, 0, 0, 0.18);
}

.iw-footer__ab-inner {
  position: relative;
  padding: 28px 18px 26px;
  max-width: 720px;
  /* PCでもSPっぽい密度 */
  margin: 0 auto;
}

.iw-footer__ab-logo {
  width: 200px;
  height: auto;
  display: block;
  margin: 0 0 12px;
}

.iw-footer__ab-body {
  display: grid;
  gap: 10px;
}

.iw-footer__ab-name {
  margin: 0;
  font-size: 13px;
  font-weight: 500;
  line-height: 1.6;
}

.iw-footer__ab-addr {
  margin: 0;
  font-size: 13px;
  font-weight: 500;
  line-height: 1.7;
  opacity: 0.95;
}

.iw-footer__ab-tel {
  margin: 6px 0 0;
  font-size: 28px;
  font-weight: 900;
  letter-spacing: 0.02em;
}

.iw-footer__ab-tel a {
  color: inherit;
  text-decoration: none;
}

.iw-footer__ab-tel a:hover {
  text-decoration: underline;
}

.iw-footer__ab-hours {
  margin: 0;
  font-size: 13px;
  font-weight: 500;
  line-height: 1.7;
  opacity: 0.92;
}

/* ---------- Group ---------- */
.iw-footer__group {
  padding: 26px 18px 18px;
  text-align: center;
}

.iw-footer__group-head {
  display: grid;
  gap: 8px;
  margin-bottom: 12px;
}

.iw-footer__iw-logo {
  width: 150px;
  height: auto;
  display: block;
}

.iw-footer__group-sub {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.10em;
  opacity: 0.85;
}

.iw-footer__group-list {
  margin: 0 auto;
  padding: 0;
  list-style: none;
  max-width: 560px;
  font-size: 12px;
  line-height: 1.9;
  opacity: 0.9;
  text-align: left;
}

.iw-footer__copy {
  margin-top: 14px;
  font-size: 11px;
  letter-spacing: 0.12em;
  opacity: 0.7;
  text-align: center;
}

/* =========================================================
   Tablet band (450–830): Mobile UI + center fixed 430px + red sides
   - 既存の「<=830はモバイル挙動」を維持しつつ、この帯だけ見た目を調整
========================================================= */
@media (min-width: 450px) and (max-width: 830px) {
  :root {
    --iw-tablet-center-w: 430px;
  }

  /* 背景：左右を赤、中央（430px幅）を白に見せる（footer など .iw-bg 外にも効かせる） */
  body {
    background: linear-gradient(to right,
        #d30000 0,
        #d30000 calc(50% - (var(--iw-tablet-center-w) / 2)),
        #fff calc(50% - (var(--iw-tablet-center-w) / 2)),
        #fff calc(50% + (var(--iw-tablet-center-w) / 2)),
        #d30000 calc(50% + (var(--iw-tablet-center-w) / 2)),
        #d30000 100%) !important;
  }

  /* .iw-bg 側で白ベタ上書きされている場合に備えて透過させる */
  .iw-bg {
    background: transparent !important;
  }

  /* split の下地（base layer）が上に被って赤が消えるのを防ぐ */
  .iw-bg--split .iw-bg__layer--base {
    background: transparent !important;
  }

  /* SP用の「全面幅」強制を、この帯だけ中央固定に上書き */
  .iw-bg .iw-center {
    width: var(--iw-tablet-center-w) !important;
    max-width: var(--iw-tablet-center-w) !important;
    margin-inline: auto !important;
  }

  /* footer も中央幅に合わせる（左右の赤背景を見せる） */
  .iw-footer {
    width: var(--iw-tablet-center-w);
    max-width: var(--iw-tablet-center-w);
    margin-inline: auto;
  }
}

/* =========================================================
   Event single: sessions display (event_sessions)
========================================================= */
.iw-single .iw-event-datetime {
  margin: 18px 0 22px;
  padding: 12px 14px;
  border: 1px solid var(--iw-color-border);
  border-radius: 12px;
  background: #fff;
}

.iw-single .iw-event-datetime__date {
  font-weight: 700;
  margin-bottom: 6px;
}

.iw-single .iw-event-datetime__time {
  font-weight: 700;
}

.iw-single .iw-event-datetime__session {
  display: flex;
  gap: 10px;
  align-items: baseline;
  margin-top: 4px;
}

.iw-single .iw-event-datetime__session-label {
  min-width: 6.5em;
  font-weight: 700;
  opacity: 0.85;
}

.iw-single .iw-event-datetime__session-time {
  font-weight: 700;
}

/* =========================================================
   Fluent Forms: event sessions display helper
========================================================= */
.iw-form-sessions {
  display: grid;
  gap: 10px;
  margin-top: 10px;
}

.iw-form-sessions__row {
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 16px;
  align-items: baseline;
}

.iw-form-sessions__label {
  font-weight: 700;
  color: #666;
}

.iw-form-sessions__time {
  font-weight: 700;
}

/* Fluent Forms 内で {get.event_sessions} の改行を反映 */
.iw-form-event-sessions {
  white-space: pre-line;
}