@charset "utf-8";
/* ================================================================
   Meet New Solution OTA — Design System "Grid & Signal"
   works/design-2027/ デザイン確認用モックアップ
   ================================================================ */

/* ---------- reset ---------- */
*,*::before,*::after{box-sizing:border-box}
body,h1,h2,h3,h4,p,figure,ul,ol,dl,dd,blockquote{margin:0;padding:0}
ul,ol{list-style:none}
img,svg{max-width:100%;height:auto;vertical-align:bottom}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer;border:0;background:none}
.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}

/* ---------- tokens ---------- */
:root{
  /* ブランド実色（ロゴから抽出） */
  --ink:#231f20;
  --ink-2:#5d5658;
  --ink-3:#918a8c;
  --paper:#fff;
  --paper-2:#f5f3f3;
  --line:#e0dcdd;
  --line-2:#f0eded;

  --teal:#15a8ad;
  --teal-d:#0f8085;
  --teal-s:#e3f5f6;
  --magenta:#ef2a95;
  --magenta-d:#cc1a7c;
  --magenta-s:#fde8f3;
  --purple:#672487;
  --violet:#573a9a;
  --coral:#f57a69;
  --orange:#f9b05d;

  --wrap:1200px;
  --gut:clamp(20px,4vw,48px);

  --mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  --sans:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Noto Sans JP","Yu Gothic",sans-serif;
}

html{scroll-behavior:smooth}
body{
  font-family:var(--sans); color:var(--ink); background:var(--paper);
  font-size:16px; line-height:1.85; -webkit-font-smoothing:antialiased;
  font-feature-settings:"palt";
}

/* ---------- layout ---------- */
.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut)}
.section{padding-block:clamp(64px,9vw,120px);border-top:1px solid var(--line)}
.section--flat{border-top:0}
.section--tint{background:var(--paper-2)}

/* セクション見出し：番号ラベル + 和文大見出し */
.shead{display:grid;grid-template-columns:auto 1fr;gap:clamp(20px,4vw,56px);align-items:start;margin-bottom:clamp(32px,5vw,56px)}
.shead__num{font-family:var(--mono);font-size:12px;letter-spacing:.16em;color:var(--teal);
  padding-top:.9em;white-space:nowrap}
.shead__t{font-size:clamp(26px,4.2vw,42px);font-weight:700;line-height:1.35;letter-spacing:-.01em}
.shead__lead{margin-top:16px;color:var(--ink-2);font-size:15px;max-width:600px;text-align:justify}

/* ---------- header ---------- */
.hd{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.92);
  backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.hd__in{max-width:var(--wrap);margin-inline:auto;padding:14px var(--gut);
  display:flex;align-items:center;gap:clamp(16px,3vw,40px)}
.hd__logo{font-weight:700;font-size:15px;line-height:1.25;letter-spacing:-.01em}
.hd__logo span{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.18em;
  color:var(--teal);font-weight:400}
.hd__nav{margin-left:auto;display:flex;gap:clamp(14px,2vw,26px);font-size:13.5px;font-weight:500}
.hd__nav a{padding-block:6px;border-bottom:2px solid transparent;transition:.15s}
.hd__nav a:hover,.hd__nav a[aria-current]{border-bottom-color:var(--teal);color:var(--teal)}
.hd__cta{display:flex;gap:8px}
@media(max-width:900px){.hd__nav{display:none}}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 20px;border-radius:999px;
  font-size:13.5px;font-weight:700;letter-spacing:.02em;transition:.15s;white-space:nowrap}
.btn--pri{background:var(--magenta);color:#fff}
.btn--pri:hover{background:#b81f5b}
.btn--sec{background:var(--teal);color:#fff}
.btn--sec:hover{background:var(--teal-d)}
.btn--gho{border:1.5px solid var(--ink);color:var(--ink)}
.btn--gho:hover{background:var(--ink);color:#fff}
.btn--lg{padding:16px 32px;font-size:15px}
.btn__arw{font-family:var(--mono)}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden;background:var(--ink);color:#fff;
  padding-block:clamp(56px,9vw,104px)}
/* 製図グリッドの意匠。
   方眼に「左下→右上」の対角線を重ねて三角形の集合にする。
   分割の向きはロゴ帯・ストライプと同じ規則。
   対角線の間隔は 64 / √2 = 45.2548px。これで格子点をきれいに通る。 */
.hero::before{content:"";position:absolute;inset:0;opacity:.16;
  background-image:linear-gradient(var(--teal) 1px,transparent 1px),
                   linear-gradient(90deg,var(--teal) 1px,transparent 1px),
                   repeating-linear-gradient(135deg,var(--teal) 0 1px,transparent 1px 45.2548px);
  background-size:64px 64px,64px 64px,auto}
.hero__in{position:relative;z-index:1;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut)}

/* ---------- FV 三角形の点灯アニメーション ----------
   .hero に hero--anim を付けたときだけ動く。外せば静止した三角形グリッドに戻る。
   描画は assets/hero-anim.js。線はCSS（.hero::before）、光だけをcanvasが重ねる。
   調整は下のカスタムプロパティだけで完結する。JSは触らなくていい。

   ■ 動きの種類（クラスで切り替え）
     class="hero hero--anim"                    帯がなめらかに流れる（既定）
     class="hero hero--anim hero--anim-sparkle" 三角形が1枚ずつパラパラ点く
   ■ リズムだけ変えたいとき（種類とは独立して足せる）
     hero--anim-calm   ゆっくり大きく
     hero--anim-pulse  速く細かく
   ■ 止めたいとき
     hero--anim を外す。それだけでいい */
.hero--anim{
  --anim-style:smooth;        /* smooth（なめらかな帯）／ sparkle（パラパラ点く） */
  --anim-bpm:72;              /* リズム。拍/分。132を超えないこと（WCAG 2.3.1 光過敏性） */
  --anim-every:4;             /* 何拍ごとに波を出すか。大きいほど間があく */
  --anim-cross:2;             /* 画面を渡りきるのに何拍かけるか。小さいほど速い */
  --anim-band:.16;            /* 波の太さ。.03〜.6。大きいほど帯が広い */
  --anim-bright:.26;          /* 明るさ。.26前後が見出しと共存する上限 */
  --anim-color:var(--teal);   /* 色。グリッド線と同じティール */
}

/* パラパラ点く版。帯の中で2枚のうち片方をフレームごとに選ぶので、
   なめらかな帯より速い周期のほうが合う */
.hero--anim-sparkle{
  --anim-style:sparkle;
  --anim-bpm:76; --anim-every:1; --anim-cross:1.26;
}

/* リズムのプリセット。smooth / sparkle どちらにも足せる */
.hero--anim-calm{ --anim-bpm:52; --anim-every:6; --anim-cross:3.2; --anim-band:.26; --anim-bright:.2 }
.hero--anim-pulse{ --anim-bpm:104; --anim-every:2; --anim-cross:1.2; --anim-band:.1; --anim-bright:.3 }

.hero__fx{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
@media(prefers-reduced-motion:reduce){ .hero__fx{display:none} }

.hero__tag{display:inline-block;font-family:var(--mono);font-size:11px;letter-spacing:.2em;
  border:1px solid rgba(255,255,255,.4);padding:6px 14px;border-radius:999px;margin-bottom:28px}
.hero__ttl{font-size:clamp(34px,7vw,76px);font-weight:700;line-height:1.14;letter-spacing:-.02em}
.hero__ttl em{font-style:normal;color:var(--teal);}
.hero__ttl .mg{color:var(--magenta)}
.hero__sub{margin-top:22px;font-size:clamp(15px,1.6vw,18px);color:rgba(255,255,255,.78);max-width:56ch}
.hero__sign{margin-top:clamp(30px,5vw,56px);width:100%}
.hero__sign picture{display:block}
.hero__sign img{display:block;width:100%;height:auto}
.hero__meta{margin-top:40px;display:flex;flex-wrap:wrap;gap:0;border-top:1px solid rgba(255,255,255,.22)}
/* 仕切り線の左右に同じ余白を取る（左端・右端は本文の縦ラインに揃える） */
.hero__cell{flex:1 1 210px;padding:20px clamp(20px,2.4vw,32px);
  border-right:1px solid rgba(255,255,255,.14)}
.hero__cell:first-child{padding-left:0}
.hero__cell:last-child{border-right:0;padding-right:0}
/* 折り返したときは行頭のセルの左余白を落とし、行末のセルの仕切り線を消す */
@media(max-width:760px){
  .hero__cell{flex:1 1 100%;padding-inline:0;border-right:0;
    border-bottom:1px solid rgba(255,255,255,.14)}
  .hero__cell:last-child{border-bottom:0}
}
.hero__k{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:var(--teal);display:block}
.hero__v{font-size:clamp(17px,2vw,22px);font-weight:700;margin-top:6px;line-height:1.4}
.hero__v small{display:block;font-size:12.5px;font-weight:400;color:rgba(255,255,255,.6);margin-top:4px}
.hero__act{margin-top:36px;display:flex;flex-wrap:wrap;gap:12px}

.kvbanner{padding-block:clamp(22px,4vw,42px);background:var(--paper-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.kvbanner__img{display:block;width:100%;height:auto;margin-inline:auto;border-radius:6px;
  box-shadow:0 18px 44px rgba(35,31,32,.14)}

/* ---------- concept keywords ---------- */
.kw{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:1px;
  background:var(--line);border:1px solid var(--line);margin-top:8px}
.kw__i{background:var(--paper);padding:26px 20px}
.kw__e{font-family:var(--mono);font-size:19px;font-weight:700;color:var(--teal);letter-spacing:-.01em}
.kw__j{font-size:12.5px;color:var(--ink-2);margin-top:8px;line-height:1.7}

/* ---------- news ---------- */
.news{border-top:1px solid var(--line)}
.news--index{border-top:2px solid var(--ink)}
.news__i{display:grid;grid-template-columns:132px 126px 1fr;gap:clamp(12px,2.5vw,28px);align-items:center;
  padding:20px 4px;border-bottom:1px solid var(--line-2);transition:.15s}
a.news__i:hover{background:var(--paper-2)}
.news__d{font-family:var(--mono);font-size:12.5px;color:var(--ink-3);white-space:nowrap}
.news__c{display:inline-flex;align-items:center;justify-content:center;width:126px;min-height:32px;
  font-size:10.5px;font-weight:700;letter-spacing:.08em;padding:3px 10px;border-radius:3px;
  background:var(--teal-s);color:var(--teal-d);white-space:nowrap}
.news__t{font-size:14.5px;font-weight:500}
@media(max-width:640px){
  .news__i{grid-template-columns:auto 112px;gap:8px 12px}
  .news__c{width:112px;min-height:30px}
  .news__t{grid-column:1/-1}
}

/* ---------- program (timetable) ---------- */
.tt{border-top:2px solid var(--ink)}
.tt__row{display:grid;grid-template-columns:150px 1fr;
  grid-template-rows:auto auto auto 1fr;   /* 余白は4行目が吸収 */
  gap:10px clamp(20px,3vw,44px);
  padding:26px 4px;border-bottom:1px solid var(--line);align-items:start;transition:.15s}
.tt__row:hover{background:var(--paper-2)}

/* 左カラム：時刻・種別・ステージを縦に積む */
.tt__time{grid-column:1;grid-row:1;
  font-family:var(--mono);font-size:15px;font-weight:700;letter-spacing:-.02em;line-height:1.35}
.tt__time small{display:block;font-size:10.5px;font-weight:400;color:var(--ink-3);letter-spacing:.06em;margin-top:4px}
.tt__kind{grid-column:1;grid-row:2;justify-self:start;
  font-size:10.5px;font-weight:700;letter-spacing:.06em;padding:4px 10px;border-radius:3px;white-space:nowrap}
.tt__stage{grid-column:1;grid-row:3;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;color:var(--ink-3);white-space:nowrap}

/* 右カラム：内容 */
.tt__row > div:not(.tt__time){grid-column:2;grid-row:1 / -1}

.k-keynote{background:var(--ink);color:#fff}
.k-special{background:var(--magenta-s);color:var(--magenta)}
.k-pitch{background:var(--teal-s);color:var(--teal-d)}
.k-plan{background:var(--line-2);color:var(--ink-2)}
.k-talk{background:#fff;color:var(--ink);border:1px solid var(--ink)}
.k-expo{background:#fdf1e0;color:#a2691a}

.tt__ttl{font-size:17px;font-weight:700;line-height:1.55}
.tt__desc{font-size:13.5px;color:var(--ink-2);margin-top:9px;max-width:70ch}
/* 登壇者：顔写真と氏名・所属を1つの要素にまとめる */
.tt__spk{margin-top:18px;display:grid;gap:14px 22px;
  grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}
.tt__spk li{display:flex;align-items:center;gap:12px}
.tt__spk-fig{flex:0 0 auto;width:52px;height:52px;border-radius:50%;overflow:hidden;
  background:var(--paper-2);border:1px solid var(--line);margin:0}
.tt__spk-fig img{width:100%;height:100%;object-fit:cover;display:block}
.tt__spk-fig--none{display:grid;place-items:center;font-family:var(--mono);font-size:9px;
  letter-spacing:.06em;color:var(--ink-3);text-align:center;line-height:1.3}
.tt__spk-name{font-size:13.5px;font-weight:700;color:var(--ink);line-height:1.4}
.tt__spk-name small{font-weight:400;font-size:11.5px;color:var(--ink-2)}
.tt__spk-org{font-size:11.5px;color:var(--ink-2);line-height:1.55;margin-top:3px}

/* 登壇者以外の図版（企画ロゴなど） */
.tt__figure{margin:16px 0 0;max-width:260px}
.tt__figure img{width:100%;height:auto;display:block;border:1px solid var(--line);border-radius:6px}

@media(max-width:620px){
  .tt__spk{grid-template-columns:1fr}
}

/* スマホ：1カラムに */
@media(max-width:620px){
  .tt__row{grid-template-columns:1fr;grid-template-rows:none;gap:6px}
  .tt__time,.tt__kind,.tt__stage{grid-column:1;grid-row:auto}
  .tt__kind{margin-block:4px}
  .tt__row > div:not(.tt__time){grid-column:1;grid-row:auto;margin-top:8px}
}
}

/* ---------- exhibitor list ---------- */
.ex{border-top:2px solid var(--ink)}
.ex__i{display:grid;grid-template-columns:60px 1fr 200px;gap:clamp(14px,2.6vw,32px);
  padding:22px 4px;border-bottom:1px solid var(--line);align-items:center;transition:.15s}
.ex__i:hover{background:var(--paper-2)}
.ex__no{font-family:var(--mono);font-size:22px;font-weight:700;color:var(--teal);letter-spacing:-.03em}
.ex__nm{font-size:16.5px;font-weight:700}
.ex__meta{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:6px;font-size:12px;color:var(--ink-3)}
.ex__tag{font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:3px;background:var(--paper-2);
  color:var(--ink-2);border:1px solid var(--line)}
.ex__tag--solo{background:var(--teal-s);color:var(--teal-d);border-color:transparent}
.ex__ex{font-size:12.5px;color:var(--ink-2);text-align:right}
@media(max-width:760px){.ex__i{grid-template-columns:48px 1fr}.ex__ex{display:none}}

/* ---------- cta band ---------- */
.band{background:var(--ink);color:#fff;padding-block:clamp(56px,8vw,88px);position:relative;overflow:hidden}
.band::before{content:"";position:absolute;inset:0;opacity:.14;
  background-image:linear-gradient(90deg,var(--magenta) 1px,transparent 1px);background-size:48px 48px}
.band__in{position:relative;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut);
  display:flex;flex-wrap:wrap;gap:32px;align-items:center;justify-content:space-between}
.band__t{font-size:clamp(22px,3.4vw,34px);font-weight:700;line-height:1.4}
.band__s{font-size:14px;color:rgba(255,255,255,.7);margin-top:10px}

/* ---------- footer ---------- */
.ft{background:var(--paper-2);padding-block:56px 32px;font-size:13px;border-top:1px solid var(--line)}
.ft__in{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut)}
.ft__grid{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(105px,.7fr) minmax(145px,.8fr) minmax(340px,1.8fr);
  gap:clamp(20px,2.5vw,34px);align-items:start}
@media(max-width:980px){.ft__grid{grid-template-columns:minmax(0,2fr) minmax(160px,1fr)}}
@media(max-width:760px){.ft__grid{grid-template-columns:1fr;gap:28px}}
.ft__h{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:var(--teal);margin-bottom:14px}
.ft__l li{margin-bottom:9px;color:var(--ink-2)}
.ft__l a:hover{color:var(--teal)}
.ft__c{margin-top:44px;padding-top:20px;border-top:1px solid var(--line);
  font-family:var(--mono);font-size:11px;color:var(--ink-3);letter-spacing:.04em}
.ft__addr{color:var(--ink-2);line-height:1.9}
.ft__banner{justify-self:end;width:min(100%,360px)}
.ft__bannerLink{display:block;transition:opacity .2s ease}
.ft__bannerLink:hover{opacity:.78}
.ft__banner img{display:block;width:100%;height:auto}
@media(max-width:980px){.ft__banner{justify-self:start;width:min(100%,320px)}}
@media(max-width:760px){.ft__banner{justify-self:center;width:min(100%,340px)}}

/* ---------- utility ---------- */
.mockbar{background:var(--magenta);color:#fff;font-size:12px;padding:8px var(--gut);
  font-family:var(--mono);letter-spacing:.04em;text-align:center}
.mockbar a{text-decoration:underline}



/* ロゴ */
.hd__logo img{height:34px;width:auto;display:block}
.hero__logo{max-width:min(560px,72%);margin-bottom:32px}
.ft__logo{height:52px;width:auto;margin-bottom:18px}

/* 日付を強く見せる（ロゴのタイポに合わせる） */
.dates{font-weight:700;letter-spacing:-.03em;line-height:1}
.dates__y{display:block;font-size:.42em;color:var(--teal);letter-spacing:.06em;margin-bottom:.35em}
.dates__row{display:flex;align-items:flex-end;gap:.12em;flex-wrap:wrap}
.dates__m{font-size:.62em}
.dates__d{font-size:1.6em;line-height:1;color:var(--magenta);margin:0 0 -9px 0}
.dates__sep{font-size:.6em;margin-inline:.1em;color:var(--magenta)}
.dates__w{font-size:.3em;background:var(--teal);color:#fff;border-radius:999px;padding:.4em .7em;
  letter-spacing:.08em;margin-bottom:0;margin-left:.1em}

/* 見出しの下線アクセント */
.shead__t::after{content:"";display:block;width:44px;height:4px;margin-top:14px;
  background:linear-gradient(90deg,var(--magenta),var(--teal))}


/* ================================================================
   ダークヘッダー / ダークフッター
   ロゴは無加工のまま使う（背景をCSSで用意する方針）
   ================================================================ */
.hd{background:var(--ink);border-bottom:0}
.hd__nav a{color:rgba(255,255,255,.86)}
.hd__nav a:hover,.hd__nav a[aria-current]{color:#fff;border-bottom-color:var(--teal)}
.hd__logo img{height:38px}

.ft{background:var(--ink);color:rgba(255,255,255,.72);border-top:0}
.ft__h{color:var(--teal)}
.ft__addr{color:rgba(255,255,255,.66)}
.ft__l li{color:rgba(255,255,255,.78)}
.ft__l a:hover{color:var(--teal)}
.ft__c{border-top-color:rgba(255,255,255,.16);color:rgba(255,255,255,.42)}
.ft__logo{height:56px}

/* CTAバンドとフッターが連続するのでバンド下の余白を詰める */
.band{padding-bottom:clamp(48px,7vw,72px)}


/* ================================================================
   ブランドパターン：ロゴ帯と同一規則
   正方形を「左下→右上」の対角線で二分割。3マスで1周期。
     1マス目  左上 #672487 / 右下 #F9B05D
     2マス目  左上 #F57A69 / 右下 #EF2A95
     3マス目  左上 #15A8AD / 右下 #573A9A
   --sq でマスの一辺（＝帯の高さ）を指定
   ================================================================ */
.stripe{
  --sq:14px;
  height:var(--sq);
  background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20300%20100%22%20shape-rendering%3D%22crispEdges%22%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22100%22%20height%3D%22100%22%20fill%3D%22%23F9B05D%22%2F%3E%3Cpolygon%20points%3D%220%2C0%20100%2C0%200%2C100%22%20fill%3D%22%23672487%22%2F%3E%3Crect%20x%3D%22100%22%20y%3D%220%22%20width%3D%22100%22%20height%3D%22100%22%20fill%3D%22%23EF2A95%22%2F%3E%3Cpolygon%20points%3D%22100%2C0%20200%2C0%20100%2C100%22%20fill%3D%22%23F57A69%22%2F%3E%3Crect%20x%3D%22200%22%20y%3D%220%22%20width%3D%22100%22%20height%3D%22100%22%20fill%3D%22%23573A9A%22%2F%3E%3Cpolygon%20points%3D%22200%2C0%20300%2C0%20200%2C100%22%20fill%3D%22%2315A8AD%22%2F%3E%3C%2Fsvg%3E");
  background-size:calc(var(--sq) * 3) var(--sq);
  background-repeat:repeat-x;
  background-position:0 0;
}
.stripe--thin{--sq:10px}
.stripe--thick{--sq:24px}


/* ================================================================
   About：Diagonal Tiles
   ロゴ帯と同じ「左下→右上」の対角分割をタイルに適用
   キーワードと色の対応は2025年版を継承
   ================================================================ */
:root{
  --kw-meet:#EF2A95; --kw-inspire:#672487; --kw-challenge:#15A8AD;
  --kw-dream:#F9B05D; --kw-support:#F57A69;
}
.dt{display:grid;grid-template-columns:repeat(5,1fr);gap:2px;background:var(--ink)}
@media(max-width:900px){.dt{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.dt{grid-template-columns:1fr}}

.dt__i{position:relative;aspect-ratio:3/4;background:var(--ink);overflow:hidden;
  display:flex;flex-direction:column;justify-content:flex-end;padding:26px 22px;color:#fff}
@media(max-width:520px){.dt__i{aspect-ratio:16/9}}

/* 対角分割（ロゴ帯と同じ向き） */
.dt__i::before{content:"";position:absolute;inset:0;
  background:linear-gradient(to top right, transparent 0 49.9%, var(--c) 50% 100%);opacity:.92}
/* 文字の可読性を確保する下方向のシェード */
.dt__i::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to top, rgba(35,31,32,.92) 0 42%, transparent 78%)}

/* うっすら敷く写真
   ::before（対角の色）と ::after（下部シェード）の間に入る。
   ::before は擬似的な最初の子、::after は最後の子なので、
   .dt__bg を .dt__i の最初の実子として置けば自然にこの順になる。
   グレースケール＋soft-light で、下の地域色/ブランドカラーを保ったまま質感だけ足す。 */
.dt__i{isolation:isolate}
.dt__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  filter:grayscale(1);mix-blend-mode:soft-light;opacity:.72;pointer-events:none}

.dt__c{position:relative;z-index:2;display:flex;flex-direction:column;height:100%}
.dt__n{font-family:var(--mono);font-size:11px;letter-spacing:.18em;opacity:.55}
.dt__e{font-size:clamp(20px,2.2vw,27px);font-weight:700;letter-spacing:-.02em;line-height:1.1;margin-top:auto}
.dt__j{font-size:12.5px;line-height:1.75;color:rgba(255,255,255,.82);margin-top:12px;
  min-height:calc(12.5px * 1.75 * 3)}   /* 3行分を確保して見出しの高さを揃える */

.dt__i:nth-child(1){--c:var(--kw-meet)}
.dt__i:nth-child(2){--c:var(--kw-inspire)}
.dt__i:nth-child(3){--c:var(--kw-challenge)}
.dt__i:nth-child(4){--c:var(--kw-dream)}
.dt__i:nth-child(5){--c:var(--kw-support)}

/* 6枚目：ロゴタイル
   5列時は不要（5枚で埋まる）。2列時のみ表示して空きマスを埋める。
   1列時は空きが生じないため非表示。
   色は5つのキーワードで使っていない残り1色＝バイオレット */
.dt__i--logo{--c:var(--violet);display:none;align-items:center;justify-content:center}
.dt__i--logo .dt__c{height:auto;align-items:center;justify-content:center;text-align:center}
.dt__i--logo img{width:min(62%,190px);height:auto;margin-inline:auto}
.dt__i--logo .dt__n{margin-top:14px;opacity:.7}
@media(max-width:900px){ .dt__i--logo{display:flex} }
@media(max-width:520px){ .dt__i--logo{display:none} }


/* 2列時はタイルが縦長すぎるため正方形に（後勝ちで上書き） */
@media(max-width:900px){ .dt__i{aspect-ratio:1/1} }
@media(max-width:520px){ .dt__i{aspect-ratio:16/9} }

/* ================================================================
   下層ページ用パーツ
   ================================================================ */

/* 未確定マーカー */
.tbd{display:inline-block;font-family:var(--mono);font-size:10px;letter-spacing:.1em;
  padding:2px 8px;border-radius:3px;background:#fdf3e3;color:#a8761c;border:1px solid #f0dcb4;
  vertical-align:2px;margin-left:8px}
.is-tbd{color:var(--ink-3)}
.tbd-note{background:#fdf6e7;border:1px solid #f0e0bd;border-radius:8px;padding:14px 18px;
  font-size:13px;color:#8a6a1f;margin-bottom:32px}

/* ページヘッダー */
.ph{background:var(--ink);color:#fff;min-height:clamp(190px,22vw,248px);
  padding-block:clamp(38px,4.4vw,54px) clamp(30px,3.6vw,42px);
  position:relative;overflow:hidden}
.ph::before{content:"";position:absolute;inset:0;opacity:.13;
  background-image:linear-gradient(var(--teal) 1px,transparent 1px),
                   linear-gradient(90deg,var(--teal) 1px,transparent 1px),
                   repeating-linear-gradient(135deg,var(--teal) 0 1px,transparent 1px 45.2548px);
  background-size:64px 64px,64px 64px,auto}
.ph__in{position:relative;width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut)}
.ph__num{font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--teal)}
.ph__t{font-size:clamp(26px,4vw,42px);font-weight:700;line-height:1.28;margin-top:10px;letter-spacing:0}
.ph__lead{margin-top:14px;font-size:14.5px;line-height:1.75;color:rgba(255,255,255,.72);max-width:60ch}

/* 定義リスト（開催概要・会社情報） */
.dl{border-top:2px solid var(--ink)}
.dl__r{display:grid;grid-template-columns:180px 1fr;gap:clamp(16px,3vw,40px);
  padding:22px 4px;border-bottom:1px solid var(--line)}
.dl__k{font-size:13.5px;font-weight:700;color:var(--ink-2)}
.dl__v{font-size:15px}
.dl__v small{display:block;font-size:13px;color:var(--ink-2);margin-top:6px}
@media(max-width:640px){.dl__r{grid-template-columns:1fr;gap:6px}}

/* アクセス */
.access{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,3vw,40px);margin-top:40px}
@media(max-width:820px){.access{grid-template-columns:1fr}}
.access__map{aspect-ratio:4/3;background:var(--paper-2);border:1px solid var(--line);border-radius:8px;
  display:grid;place-items:center;color:var(--ink-3);font-size:13px;text-align:center;padding:20px}
.route{border-top:1px solid var(--line)}
.route__i{display:grid;grid-template-columns:64px 1fr;gap:14px;padding:16px 2px;border-bottom:1px solid var(--line-2);align-items:baseline}
.route__l{display:inline-flex;align-items:center;justify-content:center;width:64px;min-height:26px;
  font-size:11px;font-weight:700;padding:4px 10px;border-radius:3px;background:var(--teal-s);color:var(--teal-d);white-space:nowrap}
.route__t{font-size:14px}
.route__t b{font-weight:700}

/* フォーム */
.form{max-width:640px}
.form__row{margin-bottom:22px}
.form__l{display:block;font-size:13.5px;font-weight:700;margin-bottom:8px}
.form__l .req{font-size:10.5px;color:#fff;background:var(--magenta);padding:2px 7px;border-radius:3px;margin-left:8px;vertical-align:2px}
.form__i,.form__s,.form__ta{width:100%;padding:13px 15px;border:1px solid var(--line);border-radius:6px;
  font:inherit;font-size:15px;background:#fff;color:var(--ink)}
.form__i:focus,.form__s:focus,.form__ta:focus{outline:2px solid var(--teal);outline-offset:-1px;border-color:var(--teal)}
.form__h{font-size:12.5px;color:var(--ink-3);margin-top:7px}
.form__ck{display:flex;gap:10px;align-items:flex-start;font-size:14px;margin-bottom:24px}
.form__act{margin-top:32px;padding-top:28px;border-top:1px solid var(--line)}

/* 出展者詳細 */
/* --ac（地域カラー14色）は黄・淡ピンクなど明るい色を含むため、
   文字・バッジには ink 寄りに暗くした --ac-d を使う */
.section{--ac-d:color-mix(in srgb,var(--ac,var(--teal)) 72%,var(--ink))}
.exd{display:grid;grid-template-columns:300px 1fr;gap:clamp(24px,4vw,56px);align-items:start}
@media(max-width:820px){.exd{grid-template-columns:1fr}}
.exd__fig{aspect-ratio:3/2;background:var(--paper-2);border:1px solid var(--line);border-radius:8px;
  display:grid;place-items:center;color:var(--ink-3);font-size:12px;text-align:center;padding:16px}
.exd__no{display:flex;align-items:baseline;gap:12px;margin-bottom:10px}
.exd__no b{font-family:var(--mono);font-size:34px;font-weight:700;color:var(--ac-d,var(--teal));letter-spacing:-.03em;line-height:1}
.exd__field{margin:0 0 20px;padding:14px 16px;border:1px solid color-mix(in srgb,var(--ac-d,var(--teal)) 28%,var(--line));
  border-radius:8px;background:color-mix(in srgb,var(--ac,var(--teal)) 8%,#fff)}
.exd__fieldk{display:block;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.13em;
  color:var(--ac-d,var(--teal));margin-bottom:6px}
.exd__fieldt{font-size:15px;font-weight:700;line-height:1.55}
.exd__fieldn{font-size:12.5px;color:var(--ink-2);line-height:1.75;margin-top:5px}
.exd__ttl{font-size:clamp(22px,3vw,32px);font-weight:700;line-height:1.35}
.exd__h{font-size:16px;font-weight:700;margin:36px 0 12px;padding-left:11px;border-left:4px solid var(--magenta)}
.exd__body{font-size:15px;line-height:1.95}
.exd__body p+p{margin-top:1.2em}
.exd__items{margin-top:14px}
.exd__items li{font-size:14.5px;padding:10px 0 10px 22px;border-bottom:1px solid var(--line-2);position:relative}
.exd__items li::before{content:"";position:absolute;left:2px;top:1.15em;width:8px;height:8px;background:var(--teal)}
/* 図版に画像が入る場合。出展者はロゴを登録するため cover ではなく contain（白地） */
.exd__fig img,.joint__fig img{width:100%;height:100%;object-fit:contain;background:#fff;padding:8px}
.joint__fig img{padding:5px}
.exd__gal img.ph-img{display:block;width:100%;height:auto;object-fit:contain;background:#fff;padding:6px}
/* 画像なしプレースホルダ */
.exd__fig--none{font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--ink-3);line-height:1.6}
/* 出展内容のPR文（本文より軽い扱い） */
.exd__pr{margin-top:20px;padding:20px 22px;background:var(--paper-2);border-radius:8px;
  font-size:14px;line-height:1.9;color:var(--ink-2)}
/* サブ画像ギャラリー */
.exd__gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-top:16px}
.exd__gal figure{margin:0}
.exd__gal .ph-img{aspect-ratio:16/9;background:var(--paper-2);border:1px solid var(--line);border-radius:6px;
  display:grid;place-items:center;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;color:var(--ink-3)}
.exd__gal figcaption{font-size:13px;color:var(--ink-2);margin-top:9px;line-height:1.7}
/* 動画 */
.exd__movie{margin-top:16px}
.exd__movie .ph-img{aspect-ratio:16/9;max-width:560px;background:var(--ink);border-radius:8px;
  display:grid;place-items:center;color:rgba(255,255,255,.55);
  font-family:var(--mono);font-size:11px;letter-spacing:.12em}
.exd__movie p{font-size:13px;color:var(--ink-2);margin-top:9px}
/* 所属チームへの導線（ブロック全体がリンク） */
.grpback{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center;
  margin-top:14px;padding:14px 16px;border:1px solid var(--line);border-radius:8px;
  background:#fff;transition:.15s}
.grpback:hover{border-color:var(--ac-d,var(--teal));box-shadow:0 2px 14px rgba(35,31,32,.06)}
.grpback:focus-visible{outline:2px solid var(--ac-d,var(--teal));outline-offset:2px}
.grpback__n{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.14em;
  color:var(--ink-3);margin-bottom:5px}
.grpback__t{display:block;font-size:14px;font-weight:700;line-height:1.5;transition:.15s}
.grpback:hover .grpback__t{color:var(--ac-d,var(--teal))}
.grpback__arw{font-style:normal;font-family:var(--mono);font-size:15px;font-weight:700;
  color:var(--ink-3);transition:.15s;line-height:1}
.grpback:hover .grpback__arw{color:var(--ac-d,var(--teal));transform:translateX(-3px)}
/* 出展企業・団体（詳細ページ） */
.joint{margin-top:56px;padding-top:36px;border-top:2px solid var(--ink)}
.joint__t{font-size:18px;font-weight:700;margin-bottom:6px}
.joint__n{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--ink-3);margin-bottom:22px}
.joint__l{display:grid;gap:14px}
/* カード全体がリンク。右端の矢印は一覧のチームカードと同じ扱い */
.joint__i{display:grid;grid-template-columns:96px 1fr auto;gap:18px;align-items:start;
  padding:18px;border:1px solid var(--line);border-radius:8px;background:#fff;transition:.15s}
.joint__i:hover{border-color:var(--ac-d,var(--teal));box-shadow:0 2px 14px rgba(35,31,32,.06)}
.joint__i:hover .joint__nm{color:var(--ac-d,var(--teal))}
.joint__i:focus-visible{outline:2px solid var(--ac-d,var(--teal));outline-offset:2px}
.joint__fig{width:96px;aspect-ratio:4/3;background:var(--paper-2);border:1px solid var(--line);border-radius:5px;
  display:grid;place-items:center;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;color:var(--ink-3)}
.joint__nm{display:flex;align-items:baseline;gap:10px;font-size:15.5px;font-weight:700;transition:.15s}
.joint__nm b{font-family:var(--mono);font-size:12px;font-weight:700;color:#fff;background:var(--ac-d,var(--teal));
  padding:2px 8px;border-radius:3px;letter-spacing:.02em}
.joint__tx{font-size:13.5px;color:var(--ink-2);margin-top:8px;line-height:1.8}
.joint__arw{align-self:center;font-style:normal;font-family:var(--mono);font-size:16px;font-weight:700;
  color:var(--ink-3);transition:.15s;line-height:1}
.joint__i:hover .joint__arw{color:var(--ac-d,var(--teal));transform:translateX(3px)}
@media(max-width:560px){
  .joint__i{grid-template-columns:96px 1fr}
  .joint__arw{grid-column:2;justify-self:end;margin-top:10px}
}

/* フロアマップ */
.fm{aspect-ratio:16/9;background:var(--paper-2);border:1px solid var(--line);border-radius:10px;
  display:grid;place-items:center;color:var(--ink-3);font-size:14px;text-align:center;padding:24px}
.fm__legend{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:22px;font-size:13px}
.fm__legend span{display:flex;align-items:center;gap:8px}
.fm__legend i{width:14px;height:14px;border-radius:3px;display:block}

/* 記事本文 */
.article{max-width:74ch;font-size:15.5px;line-height:2}
.article h2{font-size:20px;margin:40px 0 14px}
.article p+p{margin-top:1.4em}
.article a{color:#0645ad;text-decoration:underline;text-underline-offset:.16em}
.article a:hover{color:#0b57d0}
.article__meta{display:flex;gap:14px;align-items:center;margin-bottom:22px}

/* 開催日タブ（プログラム） */
.days{position:sticky;top:64px;z-index:20;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);margin-bottom:44px;overflow-x:auto;scrollbar-width:thin}
.days__in{display:flex;gap:0;min-width:max-content}
.days__b{flex:0 0 auto;padding:16px 26px;font-size:14.5px;font-weight:700;color:var(--ink-3);
  border-bottom:3px solid transparent;transition:.15s}
.days__b:hover{color:var(--ink)}
.days__b[aria-current]{color:var(--ink);border-bottom-color:var(--magenta)}
.days__b small{display:block;font-family:var(--mono);font-size:10.5px;font-weight:400;letter-spacing:.1em;margin-top:3px;opacity:.7}

.dayhead{display:flex;align-items:baseline;gap:16px;margin:56px 0 18px;flex-wrap:wrap;scroll-margin-top:168px}
.dayhead:first-of-type{margin-top:0}
.dayhead__n{font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:#fff;
  background:var(--ink);padding:6px 12px;border-radius:3px}
.dayhead__d{font-size:clamp(19px,2.4vw,26px);font-weight:700;letter-spacing:-.01em}
.stagelabel{font-family:var(--mono);font-size:12px;letter-spacing:.16em;color:var(--teal);margin:34px 0 12px}

.programfeatures{background:linear-gradient(180deg,#eef8f8 0%,#f7f3f7 100%);border-top:1px solid var(--line);
  padding-block:clamp(64px,8vw,104px)}
.pfeatures__intro{max-width:760px;margin-bottom:clamp(28px,4vw,40px)}
.pfeatures__k{font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--teal);
  font-weight:700}
.pfeatures__t{font-size:clamp(24px,3.6vw,38px);font-weight:700;line-height:1.35;
  letter-spacing:-.01em;margin-top:8px}
.pfeatures__t::after{content:"";display:block;width:44px;height:4px;margin-top:14px;
  background:linear-gradient(90deg,var(--magenta),var(--teal))}
.pfeatures__lead{font-size:14.5px;color:var(--ink-2);line-height:1.9;margin-top:16px;max-width:64ch}
.pfeatures{display:grid;gap:clamp(18px,3vw,28px)}
.pfeature{position:relative;background:linear-gradient(#fff,#fff) padding-box,
  linear-gradient(135deg,var(--magenta),var(--teal)) border-box;border:8px solid transparent;
  border-radius:8px;padding:clamp(24px,4vw,40px);scroll-margin-top:168px;overflow:hidden;
  box-shadow:0 16px 40px rgba(35,31,32,.07)}
.pfeature__head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.pfeature__head .tt__kind{grid-column:auto;grid-row:auto;margin:0}
.pfeature__time{display:inline-flex;align-items:center;font-family:var(--mono);font-size:11px;
  letter-spacing:.08em;color:var(--ink-2);background:var(--paper-2);border:1px solid var(--line);
  border-radius:999px;padding:5px 11px}
.pfeature__ttl{font-size:clamp(21px,2.8vw,30px);font-weight:700;line-height:1.42;letter-spacing:-.01em}
.pfeature__desc{font-size:14px;color:var(--ink-2);line-height:1.95;margin-top:10px;max-width:72ch}
.pfeature__status{display:inline-flex;align-items:center;font-size:12px;font-weight:700;
  letter-spacing:.06em;color:var(--ink-2);border:1px solid var(--line);border-radius:999px;
  padding:6px 13px;background:#fff}
.pfeature__blocks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,3vw,28px);
  margin-top:26px;padding-top:26px;border-top:1px solid var(--line)}
.pinfo{min-width:0}
.pinfo--wide{grid-column:span 2}
.pinfo--person{display:grid;grid-template-columns:116px 1fr;gap:16px;align-items:center}
.pinfo__t{font-size:15.5px;font-weight:700;line-height:1.55;margin-bottom:8px}
.pinfo p{font-size:13.5px;color:var(--ink-2);line-height:1.85}
.pfeature__photo{position:relative;aspect-ratio:1/1;margin:0;overflow:hidden;border-radius:8px;
  background:var(--paper-2);border:1px solid var(--line)}
.pfeature__photo img{width:100%;height:100%;object-fit:cover;filter:grayscale(.15);display:block}
.pfeature__photo::after,.pmini__fig::after{content:"DUMMY";position:absolute;left:9px;bottom:9px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;color:#fff;background:rgba(35,31,32,.68);
  padding:3px 7px;border-radius:3px}
.pfeature__profile{padding-top:2px}
.pfeature__eyebrow{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:var(--teal);
  font-weight:700}
.pfeature__person{font-size:20px;font-weight:700;line-height:1.45;margin-top:6px}
.pfeature__role{font-size:13.5px;color:var(--ink-2);margin-top:4px}
.pfeature__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.pfeature__ghostlink{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;
  color:var(--ink);border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 14px}
.pfeature__ghostlink::after{content:"→";font-family:var(--mono);color:var(--ink-3)}
.pfeature__cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:12px}
.pfeature__cards--talk{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.pmini{min-width:0}
.pmini__fig{position:relative;aspect-ratio:4/3;margin:0 0 12px;overflow:hidden;border-radius:6px;
  background:var(--paper-2);border:1px solid var(--line)}
.pmini__fig img{width:100%;height:100%;object-fit:cover;display:block;filter:grayscale(.18)}
.pmini__k{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;color:var(--teal);font-weight:700}
.pmini__t{font-size:14.5px;font-weight:700;line-height:1.55;margin:5px 0 0}
.pmini__s{font-size:12.5px;color:var(--ink-2);line-height:1.7;margin-top:6px}
.pfeature__topics{display:grid;gap:9px;margin-top:13px}
.pfeature__topics li{position:relative;font-size:13.5px;color:var(--ink-2);line-height:1.7;
  padding-left:18px}
.pfeature__topics li::before{content:"";position:absolute;left:1px;top:.72em;width:8px;height:8px;
  background:var(--teal);border-radius:2px}
@media(max-width:900px){
  .pfeature__blocks{grid-template-columns:1fr 1fr}
  .pinfo--wide{grid-column:1 / -1}
}
@media(max-width:620px){
  .days__b{padding-inline:20px}
  .pfeature{padding-inline:22px}
  .pfeature__blocks{grid-template-columns:1fr}
  .pinfo--person{grid-template-columns:96px 1fr}
}

/* トップのプログラム：会場写真の3枚組（.dt と同じく2pxの目地で締める） */
.pgal{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--ink)}
.pgal--2{grid-template-columns:repeat(2,1fr)}   /* 出展者節は2枚組（写真を大きく見せる） */
.pgal figure{margin:0;aspect-ratio:4/3;overflow:hidden;background:var(--paper-2)}
.pgal img{display:block;width:100%;height:100%;object-fit:cover}
.pgal__note{font-size:12px;color:var(--ink-3);margin:10px 0 30px}
@media(max-width:620px){
  .pgal{grid-template-columns:1fr 1fr}
  .pgal:not(.pgal--2) figure:nth-child(3){grid-column:1 / -1;aspect-ratio:16/9}
  .pgal--2{grid-template-columns:1fr}
}

/* ================================================================
   出展者一覧：地域ごとのチーム表示（2025年版のレイアウトを踏襲）
   ================================================================ */

/* 地域ジャンプナビ */
.areanav{position:sticky;top:64px;z-index:20;background:rgba(255,255,255,.94);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line);margin-bottom:8px}
@media(max-width:760px){ .areanav{position:static} }   /* 折り返しで高くなるため固定しない */
.areanav__in{display:flex;flex-wrap:wrap;gap:6px;padding:14px 0}
.areanav__b{padding:6px 13px;border-radius:999px;font-size:12.5px;font-weight:600;
  color:var(--ink-2);border:1px solid var(--line);white-space:nowrap;transition:.15s}
.areanav__b:hover{border-color:var(--ink);color:var(--ink)}
.areanav__b i{width:9px;height:9px;border-radius:2px;display:inline-block;margin-right:6px;vertical-align:0}
.areanav__b b{font-family:var(--mono);font-size:10.5px;margin-left:6px;color:var(--ink-3);font-weight:400}

/* 地域ブロック */
.areablk{padding-top:clamp(40px,6vw,64px);
  --ac-d:color-mix(in srgb,var(--ac,var(--teal)) 72%,var(--ink))}
.areablk__head{display:flex;align-items:center;gap:13px;margin-bottom:22px;
  padding-bottom:12px;border-bottom:2px solid var(--ac,var(--ink))}
.areablk__c{width:16px;height:16px;border-radius:4px;background:var(--ac,var(--ink));flex:0 0 auto}
.areablk__title{display:grid;grid-template-columns:minmax(0,1fr);gap:4px;min-width:0}
.areablk__t{font-size:clamp(19px,2.6vw,26px);font-weight:700;letter-spacing:-.01em}
.areablk__note{font-size:11.5px;font-weight:400;line-height:1.6;color:var(--ink-3);overflow-wrap:anywhere}
.areablk__noteBreak{display:none}
.areablk__n{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--teal)}
@media(max-width:620px){
  .areablk__title{flex:1 1 0;width:0}
  .areablk__noteBreak{display:block}
}

/* カード */
.excards{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:14px}
.excard{background:#fff;border:1px solid var(--line);border-radius:8px;padding:20px 22px;
  display:flex;flex-direction:column;transition:.15s}
.excard:hover{border-color:var(--ac,var(--teal));background:var(--paper-2)}
.excard__no{color:var(--ac-d,var(--teal))}
.excard__top{display:flex;gap:14px;align-items:flex-start;margin-bottom:12px}
.excard__fig{flex:0 0 auto;width:84px;aspect-ratio:4/3;background:var(--paper-2);
  border:1px solid var(--line);border-radius:5px;display:grid;place-items:center;
  font-size:9.5px;color:var(--ink-3);text-align:center;line-height:1.4;overflow:hidden}
.excard__fig img{width:100%;height:100%;object-fit:contain;background:#fff;padding:5px}
.excard__no{font-family:var(--mono);font-size:21px;font-weight:700;color:var(--teal);
  letter-spacing:-.03em;line-height:1;margin-bottom:6px}
.excard__nm{font-size:15.5px;font-weight:700;line-height:1.45}
.excard__pr{font-size:12.5px;color:var(--ink-2);line-height:1.75;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}

/* 共同出展社 */
.excard__joint{margin-top:14px;padding-top:13px;border-top:1px dashed var(--line)}
.excard__jt{font-size:10.5px;font-weight:700;letter-spacing:.06em;color:var(--teal-d);
  background:var(--teal-s);display:inline-block;padding:3px 9px;border-radius:3px;margin-bottom:9px}
.excard__jl{display:grid;gap:6px}
/* 出展者1件＝1行。ブース番号／社名／矢印の3カラム */
.excard__ji{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;
  padding:10px 12px;border:1px solid var(--line);border-radius:6px;background:#fff;
  font-size:13.5px;font-weight:600;line-height:1.5;transition:.15s}
.excard__ji b{font-family:var(--mono);font-size:11px;font-weight:700;color:#fff;
  background:var(--ac-d,var(--ink-3));padding:3px 8px;border-radius:3px;letter-spacing:.02em}
.excard__ji i{font-style:normal;font-family:var(--mono);font-size:15px;font-weight:700;color:var(--ink-2);
  transition:.15s;line-height:1}
a.excard__ji:hover{border-color:var(--ac-d,var(--teal));background:var(--paper-2)}
a.excard__ji:hover i{color:var(--ac-d,var(--teal));transform:translateX(2px)}

/* チームのカードはカード全体をリンクにできないため、上部だけをリンクにする */
.excard--grp .excard__head{display:block;color:inherit}
.excard--grp:hover{background:#fff}
.excard--grp .excard__head:hover .excard__nm{color:var(--ac-d,var(--teal))}

.excard--solo .excard__joint{display:none}

/* 出展者フィルター */
.exfilter{position:sticky;top:64px;z-index:20;background:rgba(255,255,255,.96);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.exfilter__grid{display:grid;grid-template-columns:minmax(180px,1fr) auto;
  gap:10px 12px;align-items:end;padding:14px 0 10px}
.exfilter__group{display:grid;gap:7px;min-width:0}
.exfilter__label{font-size:11px;font-weight:700;color:var(--ink-3);letter-spacing:.08em}
.exfilter__chips{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.exfilter__chip{min-height:44px;padding:9px 11px;border:1px solid var(--line);border-radius:6px;
  background:#fff;color:var(--ink-2);font:inherit;font-size:12.5px;font-weight:700;line-height:1.45;
  text-align:left;display:flex;align-items:center;gap:8px;cursor:pointer;transition:.15s}
.exfilter__chip b{font-family:var(--mono);font-size:10.5px;color:#fff;background:var(--teal);
  border-radius:3px;padding:3px 6px;line-height:1;flex:0 0 auto}
.exfilter__chip[data-ex-filter-value="hardware"] b{background:#72C6EF;color:var(--ink)}
.exfilter__chip[data-ex-filter-value="factory"] b{background:#F172A3;color:var(--ink)}
.exfilter__chip[data-ex-filter-value="startup"] b{background:#FBB161;color:var(--ink)}
.exfilter__chip[data-ex-filter-value="support"] b{background:#84C98B;color:var(--ink)}
.exfilter__chip:hover{border-color:var(--ink);color:var(--ink)}
.exfilter__chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.exfilter__chip[aria-pressed="true"] b{background:#fff;color:var(--ink)}
.exfilter__chip:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
.exfilter__clear{height:42px;padding:0 16px;border:1px solid var(--ink);border-radius:6px;
  background:var(--ink);color:#fff;font-size:13px;font-weight:700;cursor:pointer}
.exfilter__clear:hover{background:#000}
.exfilter__result{font-size:12px;color:var(--ink-3);padding:0 0 12px}
.exfilter__result b{font-family:var(--mono);font-size:13px;color:var(--teal);margin-right:4px}
.exfilter__empty{margin:22px 0 0;padding:18px 20px;border:1px solid var(--line);
  border-radius:8px;background:#fff;color:var(--ink-2);font-size:14px;line-height:1.7}
@media(max-width:900px){
  .exfilter{position:static}
  .exfilter__grid{grid-template-columns:1fr}
  .exfilter__chips{grid-template-columns:1fr 1fr}
}
@media(max-width:560px){
  .exfilter__grid{grid-template-columns:1fr}
  .exfilter__chips{grid-template-columns:1fr}
}

/* 分野検索軸 */
.fieldnav{position:sticky;top:64px;z-index:20;background:rgba(255,255,255,.94);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line);margin-bottom:0}
@media(max-width:760px){.fieldnav{position:static}}
.fieldnav__in{display:flex;flex-wrap:wrap;gap:8px;padding:14px 0}
.fieldnav__b{display:inline-flex;align-items:center;gap:9px;padding:8px 14px;border-radius:999px;
  font-size:12.5px;font-weight:700;color:var(--ink-2);border:1px solid var(--line);
  background:#fff;line-height:1.45;max-width:100%;transition:.15s}
.fieldnav__b:hover{border-color:var(--ink);color:var(--ink)}
.fieldnav__b b{font-family:var(--mono);font-size:10.5px;font-weight:700;color:#fff;
  background:var(--teal);border-radius:3px;padding:3px 6px;line-height:1}
.fieldnav__b:nth-child(2) b{background:var(--magenta)}
.fieldnav__b:nth-child(3) b{background:var(--yellow);color:var(--ink)}
.fieldsearch{background:linear-gradient(180deg,#eef8f8 0%,#fff 100%);padding-block:clamp(38px,5vw,64px)}
.fieldcards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.fieldcard{--fc:var(--teal);position:relative;overflow:hidden;background:#fff;border:1px solid var(--line);
  border-radius:8px;padding:24px 24px 26px;scroll-margin-top:148px;box-shadow:0 12px 30px rgba(35,31,32,.05)}
.fieldcard::before{content:"";position:absolute;left:0;right:0;top:0;height:8px;background:var(--fc)}
.fieldcard--factory{--fc:var(--magenta)}
.fieldcard--startup{--fc:var(--yellow)}
.fieldcard__no{font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--fc);margin-bottom:16px}
.fieldcard--startup .fieldcard__no{color:color-mix(in srgb,var(--yellow) 62%,#000)}
.fieldcard__t{font-size:20px;font-weight:700;line-height:1.45}
.fieldcard__s{font-size:13.5px;color:var(--ink-2);line-height:1.85;margin-top:12px}
.fieldcard__links{display:grid;gap:8px;margin-top:18px;padding-top:16px;border-top:1px dashed var(--line)}
.fieldcard__links a{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:9px 10px;border-radius:6px;background:var(--paper-2);font-size:13px;font-weight:700;line-height:1.45}
.fieldcard__links a::after{content:"→";font-family:var(--mono);font-size:14px;color:var(--fc)}
.fieldcard__links a:hover{color:var(--fc)}
@media(max-width:900px){
  .fieldcards{grid-template-columns:1fr}
  .fieldcard__t{font-size:18px}
}


/* ================================================================
   フロアマップ（2025年版ガイドブックPDFから抽出）
   ================================================================ */
.fmap{margin-bottom:12px}
.fmap__h{display:flex;align-items:center;gap:12px;margin:0 0 14px}
.fmap__b{font-size:12px;font-weight:700;color:#fff;background:var(--teal);
  padding:5px 12px;border-radius:4px;letter-spacing:.04em}
.fmap__t{font-size:clamp(17px,2.2vw,22px);font-weight:700}
.fmap__img{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:10px;background:#fff}
.fmap__note{font-size:12.5px;color:var(--ink-3);margin-top:10px}

/* 地域カラー凡例 */
.arealeg{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px;margin-top:26px}
.arealeg span{display:flex;align-items:center;gap:9px;font-size:13px}
.arealeg i{width:15px;height:15px;border-radius:3px;flex:0 0 auto}

/* 地域カラーをブース番号にも反映（後勝ちで上書き） */
.excard__no{color:var(--ac-d,var(--teal))}
.excard__jt{background:color-mix(in srgb, var(--ac,var(--teal)) 12%, #fff);
  color:color-mix(in srgb, var(--ac,var(--teal)) 78%, #000)}


/* 出展者一覧 冒頭のフロアマップ導線（1階の会場図のみ表示）
   ※ 2階・アクセス図は floormap.html 側に集約している */
.fmlink{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);
  gap:clamp(16px,2.4vw,28px);align-items:center;padding:clamp(14px,2vw,20px);
  border:1px solid var(--line);border-radius:10px;background:var(--paper-2);
  margin:0 0 clamp(20px,3vw,32px)}
.fmlink__fig{border-radius:6px;overflow:hidden;border:1px solid var(--line);background:#fff}
.fmlink__fig img{display:block;width:100%;height:auto}
.fmlink__n{font-size:11px;letter-spacing:.14em;font-weight:700;color:var(--teal);margin:0 0 6px}
.fmlink__t{font-size:16px;font-weight:700;margin:0 0 6px}
.fmlink__s{font-size:12.5px;line-height:1.75;color:var(--ink-2);margin:0 0 14px}
.fmlink__c p:last-child{margin:0}
@media(max-width:760px){.fmlink{grid-template-columns:1fr}}

/* ================================================================
   ライトボックス
   ================================================================ */
.lb{position:fixed;inset:0;z-index:100;display:grid;place-items:center;
  background:rgba(35,31,32,.92);padding:clamp(16px,4vw,48px);
  opacity:0;transition:opacity .18s ease}
.lb.is-open{opacity:1}
.lb__fig{margin:0;max-width:100%;max-height:100%;display:flex;flex-direction:column;gap:12px}
.lb__img{display:block;width:100%;height:auto;max-height:calc(100vh - 140px);object-fit:contain;
  background:#fff;border-radius:8px}
.lb__cap{font-size:12.5px;color:rgba(255,255,255,.72);text-align:center}
.lb__close{position:absolute;top:14px;right:18px;width:44px;height:44px;border-radius:50%;
  background:rgba(255,255,255,.12);color:#fff;font-size:26px;line-height:1;
  display:grid;place-items:center;transition:.15s}
.lb__close:hover{background:rgba(255,255,255,.24)}
.lb__close:focus-visible{outline:2px solid var(--teal);outline-offset:2px}

/* クリック拡大できる画像 */
[data-lightbox]{cursor:zoom-in;display:block;position:relative}
[data-lightbox]::after{content:"＋";position:absolute;right:8px;bottom:8px;
  width:26px;height:26px;border-radius:5px;background:rgba(35,31,32,.72);color:#fff;
  font-size:14px;display:grid;place-items:center;opacity:0;transition:.15s}
[data-lightbox]:hover::after{opacity:1}

/* テキストリンク（控えめ） */
.tlink{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:600;
  color:var(--ink-2);border-bottom:1px solid var(--line);padding-bottom:2px;transition:.15s}
.tlink:hover{color:var(--teal);border-bottom-color:var(--teal)}
.tlink svg{width:13px;height:13px;flex:0 0 auto}



/* ================================================================
   チームページ
   ================================================================ */
.grp__k{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;
  letter-spacing:.14em;color:#fff;background:var(--ac-d,var(--teal));padding:5px 12px;border-radius:3px}
.grp__ttl{font-size:clamp(24px,3.4vw,36px);font-weight:700;line-height:1.3;margin-top:14px}
.grp__meta{display:flex;flex-wrap:wrap;gap:10px 28px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
.grp__m{font-size:13.5px;color:var(--ink-2)}
.grp__m b{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;
  color:var(--ink-3);font-weight:400;margin-bottom:3px}
.grp__lead{font-size:15px;line-height:1.95;margin-top:26px}
