@charset "utf-8";
/* =========================================================================
   equaliA — 公式コーポレート / Designer: 尖 Toga
   Metaphor: "The Equal Line, splintered" — 全員に配られる同じ一本の＝が、
   一点で二度と同じでない無数の軌道へ割れて発散する（平等=同じ出発線 → 無限の固有）。
   Soul: 平均を裏切り、それが事故ではなく意志だと証明する。逸脱は一点、周囲は病的に整える。
   ========================================================================= */

/* ===== 必須・逐語：オーバーフロー/ビューポート セーフティ層 ===== */
*,*::before,*::after{ box-sizing:border-box; }
html,body{ overflow-x:clip; }
body{ margin:0; max-width:100%; }
img,svg,canvas,video,iframe,table{ max-width:100%; }
img,svg,video{ height:auto; }
:where(.grid,.cols,.row,[class*="grid"],[class*="col"],[class*="flex"]) > *{ min-width:0; }
/* CJK は既定で文字間改行するので anywhere 不要。anywhere は数字/欧単語を途中で割り孤立文字を生むため normal に。
   さらに日本語本文は auto-phrase で文節（分かち書き）単位に折り、語中の不自然な改行＝AI臭を無くす。非対応環境は normal にフォールバック。 */
:where(h1,h2,h3,h4,p,li,dt,dd,figcaption,blockquote){ overflow-wrap:normal; word-break:auto-phrase; }
:where(a,code){ overflow-wrap:normal; word-break:normal; }
:where(dd,code,.facts dd, .prose a[href^="mailto"], .foot a[href^="mailto"]){ overflow-wrap:anywhere; }
.nocaps{ text-transform:none; }
.biz-list{ margin:0; padding:0; list-style:none; display:grid; gap:.5rem; }
.biz-list li{ position:relative; padding-left:1.1rem; }
.biz-list li::before{ content:""; position:absolute; left:0; top:.62em; width:.5rem; height:.5rem;
  background:var(--lime-2); border-radius:1px; transform:rotate(45deg); }
.foot-more{ display:inline-flex; align-items:center; gap:.4rem; margin-top:.7rem;
  font-family:var(--disp); font-size:.78rem; letter-spacing:.04em; color:var(--ink-2); }
.foot-more:hover{ color:var(--ink); }
:where(.eqstage,.hero,.band,.frame,figure){ overflow:clip; }
/* .mk は overflow:visible にしてマーカー付き文字（eqlly/equaliA 等）のディセンダ（y/q）が切れないように。draw の掃引は transform 由来でclip不要 */
.mk{ overflow:visible; padding-bottom:.04em; }

/* ===== tokens ===== */
:root{
  /* color — 骨白の紙地（登録済みダークvoidから分岐）／墨黒インク／単一シグナル=ライム(発光させない) */
  --paper:#F1EFE7;
  --paper-2:#E8E5DB;
  --panel:#ECE9DF;
  --ink:#141414;          /* warm near-black（#000不使用） */
  --ink-2:#57534A;
  --muted:#635D4C;        /* 小ラベル用（AA確保） */
  --line:#D9D6CA;
  --line-2:#C6C2B3;
  --lime:#C6F03C;         /* signal — フラット・発光なし */
  --lime-2:#B2DC2C;
  --on-lime:#141414;      /* ライム面上の文字（AA） */
  /* 反転（唯一の逸脱面） */
  --ink-paper:#F1EFE7;
  --ink-muted:#A8A296;
  --ink-line:#2C2C2C;
  --ink-surface:#1B1B1B;
  --ink-3:#000;           /* deepest black — primary hover */
  /* hero stage (immersive dark) — also feeds the WebGL fireworks u_bg */
  --stage:#0E0E10;
  --hero-kicker:#A8A498;
  --hero-lead:#BDB9AD;
  --hero-cue:#807C71;
  --field-bg:#FCFBF6;     /* form input surface */
  /* text shades that sit on the lime CTA plane */
  --on-lime-soft:#26330a;
  --on-lime-line:#2c3a0a;
  --on-lime-deep:#1c260a;
  --stream:#9696A0;      /* hero 分流の墨細流 — canvas は getComputedStyle で読む */
  --err:#c0392b;         /* form validation error */

  /* depth — 段階で立てる（発光禁止） */
  --sh-1:0 1px 2px rgba(20,20,20,.06);
  --sh-2:0 10px 26px -14px rgba(20,20,20,.22);
  --sh-3:0 26px 60px -26px rgba(20,20,20,.30);

  /* type */
  --disp:'Archivo','Zen Kaku Gothic New',system-ui,sans-serif;
  --jp:'Zen Kaku Gothic New','Archivo',system-ui,-apple-system,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,'Courier New',monospace;
  --fs-mega:clamp(3.2rem,13vw,10rem);
  --fs-hero:clamp(2.15rem,7.6vw,6.4rem);
  --fs-h1:clamp(1.55rem,4.8vw,3.7rem);
  --fs-h2:clamp(1.5rem,3vw,2.3rem);
  --fs-h3:clamp(1.12rem,1.7vw,1.4rem);
  --fs-lead:clamp(1.06rem,1.5vw,1.28rem);
  --fs-body:1.0625rem;
  --fs-sm:.9rem;
  --fs-label:.72rem;

  /* layout */
  --maxw:1280px;
  --maxw-text:38rem;
  --gut:clamp(1.15rem,4.4vw,3.4rem);
  --sec:clamp(4.6rem,9vw,8.6rem);

  /* motion */
  --dur:.72s;
  --dur-2:.4s;
  --ease:cubic-bezier(.16,.84,.3,1);
}

/* ===== base ===== */
body{
  background:var(--paper); color:var(--ink);
  font-family:var(--jp); font-size:var(--fs-body); line-height:1.86;
  letter-spacing:.015em; font-weight:400;
  font-feature-settings:"kern" 1,"liga" 1,"calt" 1,"palt" 1;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
::selection{ background:var(--lime); color:var(--on-lime); }
.wrap{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--gut); }
main{ display:block; } section{ position:relative; }
a{ color:inherit; text-decoration:none; }
h1,h2,h3,h4{ font-family:var(--jp); font-weight:900; line-height:1.08;
  letter-spacing:-.02em; margin:0; overflow-wrap:normal; word-break:auto-phrase; text-wrap:balance; }
p{ max-width:var(--maxw-text); margin:0; text-wrap:pretty; }
strong,b{ font-weight:700; }
.grotesk{ font-family:var(--disp); }
.lime{ color:var(--lime-2); }
.ink2{ color:var(--ink-2); }

/* ===== 署名① 版ズレ・ライムマーカー（v2ハイライトを一点だけ意図的にズラす） ===== */
.mk{ position:relative; display:inline-block; z-index:0; }
.mk::before{ content:""; position:absolute; z-index:-1; inset:.5em -.05em .06em -.04em;
  background:var(--lime); transform:skewX(-5deg) translateY(1px);
  transform-origin:left bottom; }
.mk.draw::before{ transform:skewX(-5deg) translateY(1px) scaleX(0);
  transition:transform .7s var(--ease) .25s; }
.mk.draw.in::before{ transform:skewX(-5deg) translateY(1px) scaleX(1); }

/* ===== kicker / mark ===== */
.kicker{ display:inline-flex; align-items:center; gap:.7em;
  font-family:var(--disp); font-size:var(--fs-label); font-weight:600;
  letter-spacing:.32em; text-transform:uppercase; color:var(--ink-2); }
.kicker::before{ content:""; width:1.7rem; height:0; border-top:2px solid var(--ink); }
.kicker .dot{ width:.5rem; height:.5rem; background:var(--lime); border-radius:50%; }
.mark{ display:flex; align-items:center; gap:.7rem; font-family:var(--disp);
  font-size:var(--fs-label); font-weight:600; letter-spacing:.28em;
  text-transform:uppercase; color:var(--ink-2); margin:0 0 clamp(1.6rem,3.4vw,2.6rem); }

/* ===== 等号マーク（ロゴ・区切りに反復する背骨） ===== */
.eq{ display:inline-flex; flex-direction:column; gap:.16em; vertical-align:middle; }
.eq i{ display:block; height:.13em; width:1.05em; background:var(--lime-2); border-radius:1px; }
.eqrule{ border:0; height:0; margin:0; position:relative;
  border-top:2px solid var(--line-2); }
.eqrule::after{ content:""; position:absolute; left:0; right:0; top:.42rem;
  border-top:2px solid var(--line-2); }

/* ===== header ===== */
.site{ position:sticky; top:0; z-index:60;
  background:color-mix(in srgb,var(--paper) 84%,transparent);
  backdrop-filter:saturate(140%) blur(9px);
  border-bottom:1px solid transparent; transition:border-color .35s; }
.site.stuck{ border-color:var(--line); }
.head{ display:flex; align-items:center; justify-content:space-between; gap:1rem;
  min-height:4.5rem; }
.brand{ display:inline-flex; align-items:center; gap:.65rem;
  font-family:var(--disp); font-weight:800; font-size:1.32rem; letter-spacing:-.02em; }
.brand .eq{ font-size:.82em; }
.brand .rev{ display:inline-block; } /* 色は継承（明地=ink／暗フッタ=paper） */
.nav{ display:flex; align-items:center; gap:clamp(.6rem,2vw,1.9rem); }
.nav a{ font-family:var(--disp); font-size:.86rem; font-weight:500; letter-spacing:.04em;
  color:var(--ink-2); padding:.5rem .12rem; position:relative; transition:color var(--dur-2) var(--ease); }
.nav a::after{ content:""; position:absolute; left:0; right:100%; bottom:.14rem;
  border-top:2px solid var(--lime-2); transition:right var(--dur-2) var(--ease); }
.nav a:hover{ color:var(--ink); } .nav a:hover::after{ right:0; }
.nav a[aria-current=page]{ color:var(--ink); } .nav a[aria-current=page]::after{ right:0; }
.nav .go{ margin-left:.3rem; }
.nav-toggle{ display:none; }

/* ===== buttons ===== */
.btn{ display:inline-flex; align-items:center; justify-content:center; gap:.6em;
  min-height:48px; padding:.72rem 1.5rem; font-family:var(--disp); font-weight:600;
  font-size:.92rem; letter-spacing:.02em; border:2px solid var(--ink); color:var(--ink);
  background:transparent; cursor:pointer; border-radius:2px;
  transition:transform var(--dur-2) var(--ease),background var(--dur-2) var(--ease),color var(--dur-2) var(--ease); }
.btn:hover{ transform:translateY(-3px); }
.btn.primary{ background:var(--ink); color:var(--paper); }
.btn.primary:hover{ background:var(--ink-3); }
.btn.lime{ background:var(--lime); color:var(--on-lime); border-color:var(--lime); }
.btn.lime:hover{ background:var(--lime-2); border-color:var(--lime-2); }
.btn.ghost{ border-color:var(--line-2); }
.btn.ghost:hover{ border-color:var(--ink); }
.btn .arw{ width:1.25rem; height:2px; background:currentColor; position:relative; transition:transform var(--dur-2) var(--ease); }
.btn .arw::after{ content:""; position:absolute; right:0; top:-3px; width:8px; height:8px;
  border-top:2px solid currentColor; border-right:2px solid currentColor; transform:rotate(45deg); }
.btn:hover .arw{ transform:translateX(.28rem); }

/* ===== 生きた生成フィールド ステージ（hero・没入ダーク） ===== */
.hero-stage{ position:relative; overflow:clip; min-height:clamp(620px,96vh,1040px);
  display:flex; align-items:center; background:var(--stage); color:var(--paper); }
.hero-stage .gl{ position:absolute; inset:0; z-index:0; display:block; width:100%; height:100%; }
.hero-stage::after{ content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(100deg,var(--stage) 4%,color-mix(in srgb,var(--stage) 82%,transparent) 34%,color-mix(in srgb,var(--stage) 30%,transparent) 58%,color-mix(in srgb,var(--stage) 0%,transparent) 76%); }
.hero-in{ position:relative; z-index:2; width:100%; padding-block:clamp(2.6rem,7vh,5.4rem); }
.hero-in h1{ font-size:var(--fs-hero); line-height:1.0; letter-spacing:-.035em; color:var(--paper); }
.hero-in .kicker{ color:var(--hero-kicker); }
.hero-in .kicker::before{ border-color:var(--paper); }
.hero-in .lead{ font-size:var(--fs-lead); color:var(--hero-lead); line-height:1.74; max-width:33rem;
  margin-top:clamp(1.3rem,2.6vw,2rem); }
.hero-in .btn.ghost{ border-color:color-mix(in srgb,var(--paper) 38%,transparent); color:var(--paper); }
.hero-in .btn.ghost:hover{ border-color:var(--paper); background:color-mix(in srgb,var(--paper) 7%,transparent); }
.hero-cta{ display:flex; flex-wrap:wrap; gap:.9rem; margin-top:clamp(1.8rem,3.2vw,2.4rem); }
.scrollcue{ font-family:var(--disp); font-size:.66rem; letter-spacing:.34em; color:var(--hero-cue);
  margin-top:clamp(2.2rem,4.5vw,3.4rem); display:inline-flex; align-items:center; gap:.6rem; }
.scrollcue::before{ content:""; width:2.4rem; border-top:1px solid color-mix(in srgb,var(--paper) 28%,transparent); }

/* ヒーロー見出しの一撃：ライムの語＋下線ドロー（暗地＝発光でなく高コントラストで殴る） */
.hlw{ position:relative; display:inline-block; color:var(--lime); }
.hlw::after{ content:""; position:absolute; left:-.02em; right:-.02em; bottom:.04em; height:.085em;
  background:var(--lime); transform-origin:left center; }
.hlw.draw::after{ transform:scaleX(0); transition:transform .85s var(--ease) .35s; }
.hlw.draw.in::after{ transform:scaleX(1); }
@media(max-width:760px){
  .hero-stage{ align-items:flex-start; min-height:clamp(660px,94vh,900px); }
  .hero-stage::after{ background:linear-gradient(180deg,var(--stage) 30%,color-mix(in srgb,var(--stage) 50%,transparent) 56%,color-mix(in srgb,var(--stage) 0%,transparent) 88%); }
  .hero-in{ padding-block:clamp(2rem,7vh,3.4rem) 0; }
}

/* ===== generic blocks ===== */
.sec{ padding-block:var(--sec); }
.sec.rule{ border-top:1px solid var(--line); }
.lead{ font-size:var(--fs-lead); color:var(--ink-2); line-height:1.72; max-width:42rem; }
.eyebrow{ display:flex; align-items:flex-end; justify-content:space-between; gap:1.4rem;
  flex-wrap:wrap; margin-bottom:clamp(2rem,5vw,3.4rem); }
.eyebrow h2{ font-size:var(--fs-h1); margin-top:.9rem; }
.big-eq{ display:flex; flex-direction:column; gap:.5rem; flex:0 0 auto; }
.big-eq i{ height:.5rem; width:min(38vw,15rem); background:var(--ink); border-radius:2px; }
.big-eq i:last-child{ background:var(--lime-2); }

/* split (problem) */
.split{ display:grid; gap:clamp(1.4rem,3vw,3.4rem); }
@media(min-width:900px){ .split{ grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); align-items:start; } }
.hl{ background:linear-gradient(transparent 62%,var(--lime) 62% 92%,transparent 92%); }
.em{ font-style:normal; background:linear-gradient(transparent 60%,var(--lime) 60% 90%,transparent 90%); }

/* cards */
.grid{ display:grid; gap:clamp(1rem,2.2vw,1.5rem); }
.g-3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.g-2{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.card{ position:relative; min-width:0; background:var(--panel); border:1px solid var(--line);
  padding:clamp(1.4rem,2.6vw,2.1rem); box-shadow:var(--sh-1);
  transition:transform var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease),border-color var(--dur-2) var(--ease); }
.card:hover{ transform:translateY(-4px); box-shadow:var(--sh-2); border-color:var(--line-2); }
.card .idx{ font-family:var(--disp); font-size:.76rem; letter-spacing:.26em; font-weight:600; color:var(--ink-2); }
.card .idx b{ color:var(--ink); font-weight:700; }
.card h3{ margin:.75rem 0 .5rem; font-size:var(--fs-h3); font-weight:700; }
.card p{ color:var(--ink-2); font-size:.97rem; }
.card.lead-card{ background:var(--ink); color:var(--ink-paper); border-color:var(--ink); }
.card.lead-card p{ color:var(--ink-muted); }
.card.lead-card .idx{ color:var(--lime-2); } .card.lead-card .idx b{ color:var(--lime-2); }

/* name band (etymology ＝AI) */
.band{ position:relative; padding-block:var(--sec); background:var(--paper-2);
  border-block:1px solid var(--line); }
.eqline{ display:flex; align-items:center; justify-content:center; flex-wrap:wrap;
  gap:clamp(.7rem,3vw,2.2rem); text-align:center; padding-bottom:clamp(1.4rem,3vw,2rem); }
.eqline .w{ position:relative; font-family:var(--jp); font-weight:900; line-height:.92;
  font-size:clamp(2rem,7.6vw,5rem); letter-spacing:-.03em; }
.eqline .op{ font-family:var(--disp); font-weight:700; color:var(--lime-2);
  font-size:clamp(1.7rem,6vw,4rem); line-height:.9; }
/* 振り仮名は絶対配置で語の下に置き、演算子の中央揃えを崩さない＝字被り防止 */
.eqline .w small{ position:absolute; left:50%; transform:translateX(-50%); top:100%; margin-top:.35rem;
  white-space:nowrap; font-family:var(--jp); font-weight:500;
  font-size:clamp(.68rem,1.3vw,.86rem); letter-spacing:.06em; color:var(--muted); }

/* ほぼ100% claim */
.claim{ text-align:center; padding-block:var(--sec); }
.claim .huge{ font-family:var(--disp); font-weight:900; font-size:var(--fs-mega);
  line-height:.86; letter-spacing:-.04em; }
.claim .huge .p{ color:var(--lime-2); }
.claim p{ margin:clamp(1.4rem,3vw,2rem) auto 0; max-width:26rem; color:var(--ink-2); font-size:var(--fs-lead); }

/* ink section — 唯一の逸脱面（反転） */
.ink-sec{ background:var(--ink); color:var(--ink-paper); border:0; }
.ink-sec .mark{ color:var(--ink-muted); }
.ink-sec .lead{ color:var(--ink-muted); }
.ink-sec .prose p{ color:var(--ink-muted); }
.ink-sec .prose p.big{ color:var(--ink-paper); }
.ink-sec .eqrule,.ink-sec .eqrule::after{ border-color:var(--ink-line); }
.who{ display:grid; grid-template-columns:1fr; border-top:1px solid var(--ink-line); }
.who .row{ display:grid; grid-template-columns:auto 1fr; column-gap:clamp(1rem,4vw,2.4rem); row-gap:.5rem;
  padding:clamp(1.5rem,3vw,2.4rem) 0; border-bottom:1px solid var(--ink-line); align-items:baseline; }
.who .n{ grid-row:1 / span 2; font-family:var(--disp); font-weight:800;
  font-size:clamp(1.5rem,2.6vw,2.4rem); color:var(--lime-2); }
.who h3{ font-weight:700; font-size:clamp(1.15rem,2.2vw,1.7rem); margin:0; }
.who p{ margin:0; color:var(--ink-muted); font-size:.98rem; max-width:40rem; }
@media(min-width:820px){
  .who .row{ grid-template-columns:auto 15rem 1fr; column-gap:clamp(1.6rem,3vw,3rem); align-items:baseline; }
  .who .n{ grid-row:1; } .who h3{ grid-row:1; } .who p{ grid-column:3; grid-row:1; }
}

/* three branches / steps-like emphasis */
.branch{ display:grid; gap:clamp(1rem,2.2vw,1.5rem); grid-template-columns:1fr; }
@media(min-width:840px){ .branch{ grid-template-columns:repeat(3,1fr); } }
.branch .b{ min-width:0; border-top:3px solid var(--ink); padding-top:1.1rem; }
.branch .b.main{ border-top-color:var(--lime-2); }
.branch .b .tag{ font-family:var(--disp); font-size:.74rem; letter-spacing:.2em; font-weight:600;
  text-transform:uppercase; color:var(--ink-2); }
.branch .b.main .tag{ color:var(--lime-2); }
.branch .b h3{ font-weight:700; font-size:var(--fs-h3); margin:.55rem 0 .5rem; }
.branch .b p{ color:var(--ink-2); font-size:.96rem; }

/* CTA band */
.cta{ background:var(--lime); color:var(--on-lime); padding-block:var(--sec); text-align:center; }
.cta h2{ font-size:clamp(2rem,6vw,4.6rem); }
.cta p{ margin:clamp(1rem,2.5vw,1.6rem) auto clamp(1.6rem,3vw,2.2rem); max-width:30rem; color:var(--on-lime-soft); font-size:var(--fs-lead); }
.cta .btn.primary{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
/* ghost button sitting on the lime plane（旧インライン style を撤去しトークン化） */
.btn.ghost.on-lime{ border-color:var(--on-lime-line); color:var(--on-lime-deep); }
.btn.ghost.on-lime:hover{ border-color:var(--ink); color:var(--ink); }

/* ===== 下層ページ共通 ===== */
.page-hero{ padding-top:clamp(2.6rem,6vw,5rem); padding-bottom:clamp(2.6rem,6vw,4.6rem);
  border-bottom:1px solid var(--line); }
.page-hero .kicker{ margin-bottom:clamp(1rem,2vw,1.4rem); }
.page-hero h1{ font-size:clamp(2.3rem,6vw,4.6rem); line-height:1.02; letter-spacing:-.03em; }
.page-hero .lead{ margin-top:clamp(1.2rem,2.4vw,1.8rem); }
.prose{ max-width:40rem; }
.prose p{ color:var(--ink-2); margin:0 0 1.3em; }
.prose p.big{ font-family:var(--jp); font-weight:900; color:var(--ink);
  font-size:clamp(1.5rem,3vw,2.3rem); line-height:1.42; letter-spacing:-.02em; margin:0 0 .8em; max-width:none;
  overflow-wrap:normal; word-break:normal; text-wrap:balance; }
.prose h2{ font-size:var(--fs-h2); margin:2.4rem 0 .9rem; }

.facts{ border-top:2px solid var(--ink); max-width:52rem; }
.facts div{ display:grid; grid-template-columns:13rem 1fr; gap:1rem; padding:1.05rem 0;
  border-bottom:1px solid var(--line); min-width:0; }
.facts dt{ font-family:var(--disp); font-weight:600; font-size:.8rem; letter-spacing:.14em;
  text-transform:uppercase; color:var(--ink-2); }
.facts dd{ margin:0; color:var(--ink); overflow-wrap:anywhere; }
@media(max-width:620px){ .facts div{ grid-template-columns:1fr; gap:.15rem; } }

.stepgrid{ display:grid; gap:clamp(1rem,2.4vw,1.6rem); grid-template-columns:1fr; counter-reset:st; }
@media(min-width:820px){ .stepgrid{ grid-template-columns:repeat(3,1fr); } }
.stepgrid .st{ border-top:2px solid var(--ink); padding-top:1rem; min-width:0; }
.stepgrid .st .sn{ font-family:var(--disp); font-weight:700; font-size:.82rem; letter-spacing:.06em; color:var(--ink-2); }
.stepgrid .st h3{ font-weight:700; font-size:var(--fs-h3); margin:.5rem 0 .45rem; }
.stepgrid .st p{ color:var(--ink-2); font-size:.95rem; margin:0; }

/* forms */
.form{ display:grid; gap:1.3rem; max-width:40rem; }
.field{ display:grid; gap:.5rem; min-width:0; }
.field label{ font-family:var(--disp); font-weight:600; font-size:.8rem; letter-spacing:.08em;
  text-transform:uppercase; color:var(--ink-2); }
.field input,.field textarea,.field select{ width:100%; font:inherit; color:var(--ink);
  background:var(--field-bg); border:2px solid var(--ink); border-radius:4px; padding:.85rem 1rem; }
.field textarea{ min-height:9.5rem; resize:vertical; }
.field input:focus,.field textarea:focus,.field select:focus{ outline:3px solid var(--lime); outline-offset:0; }
.contact-grid{ display:grid; gap:clamp(2rem,5vw,4.5rem); grid-template-columns:1fr; }
@media(min-width:920px){ .contact-grid{ grid-template-columns:1.15fr .85fr; } }
.aside dt{ font-family:var(--disp); font-size:.74rem; letter-spacing:.2em; text-transform:uppercase; color:var(--ink-2); margin:0 0 .5rem; }
.aside dd{ margin:0 0 clamp(1.2rem,2.5vw,1.8rem); font-size:.98rem; line-height:1.8; }

/* placeholder image frame（枠だけ＝クライアントが差し込む） */
.ph{ margin:0; }
.ph-frame{ position:relative; display:flex; flex-direction:column; justify-content:flex-end; gap:.7rem;
  aspect-ratio:16/10; padding:1.1rem; background:
    repeating-linear-gradient(135deg,transparent 0 22px,color-mix(in srgb,var(--ink) 3%,transparent) 22px 23px), var(--paper-2);
  border:1px solid var(--line-2); }
.ph-kicker{ font-family:var(--disp); font-size:var(--fs-label); letter-spacing:.28em; font-weight:600; color:var(--ink-2); }
.ph-desc{ color:var(--ink); font-size:.95rem; max-width:34rem; margin:0; }
.ph-prompt{ display:block; font-family:var(--mono); font-size:.7rem; line-height:1.55; color:var(--ink-2);
  background:color-mix(in srgb,var(--ink) 5%,transparent); border:1px solid var(--line-2); padding:.55rem .65rem;
  white-space:pre-wrap; overflow-wrap:anywhere; }

/* ===== footer ===== */
.foot{ background:var(--ink); color:var(--ink-muted); padding-block:clamp(3rem,6vw,4.8rem) 2rem; }
.foot-top{ display:grid; grid-template-columns:1fr; gap:clamp(2rem,4vw,3rem); }
@media(min-width:560px){ .foot-top{ grid-template-columns:1fr 1fr; } .foot-brand{ grid-column:1 / -1; } }
@media(min-width:900px){ .foot-top{ grid-template-columns:1.7fr .85fr .95fr 1.2fr; } .foot-brand{ grid-column:auto; } }
.foot .brand{ color:var(--ink-paper); }
.foot .bio{ margin:1rem 0 1.4rem; font-size:.9rem; line-height:1.95; max-width:26rem; }
.foot h4{ font-family:var(--disp); font-size:.72rem; letter-spacing:.24em; text-transform:uppercase;
  color:var(--ink-muted); font-weight:600; margin:0 0 .9rem; }
.foot-col a{ display:block; color:var(--ink-paper); opacity:.8; font-size:.92rem; padding:.3rem 0;
  transition:opacity var(--dur-2),color var(--dur-2); }
.foot-col a:hover{ opacity:1; color:var(--lime-2); }
.foot .col-info{ font-size:.86rem; line-height:2; color:var(--ink-paper); opacity:.86; }
.foot .col-info a{ color:var(--lime-2); }
.foot-base{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:.6rem;
  margin-top:clamp(2.4rem,4vw,3.4rem); padding-top:1.4rem; border-top:1px solid var(--ink-line);
  font-family:var(--disp); font-size:.78rem; letter-spacing:.04em; color:var(--ink-muted); }

/* ===== skip / focus ===== */
.skip{ position:absolute; left:-999px; top:.6rem; z-index:200; background:var(--ink); color:var(--paper);
  padding:.6rem 1rem; border-radius:2px; }
.skip:focus{ left:.6rem; }
:focus-visible{ outline:3px solid var(--ink); outline-offset:3px; border-radius:1px; }

/* ===== reveal motion ===== */
/* reveal は縦のみ（水平 translate は端要素で横あふれを生むため不使用）。方向差は量・タイミング・scale で出す */
[data-r]{ opacity:0; transform:translateY(34px); will-change:opacity,transform; }
[data-r=left]{ transform:translateY(20px); }
[data-r=right]{ transform:translateY(48px); }
[data-r=scale]{ transform:scale(.94); }
[data-r].in{ opacity:1; transform:none;
  transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease); }
[data-stag]>*{ opacity:0; transform:translateY(24px); }
[data-stag].in>*{ opacity:1; transform:none; transition:opacity var(--dur-2) var(--ease),transform var(--dur-2) var(--ease); }
[data-stag].in>*:nth-child(1){transition-delay:.04s}
[data-stag].in>*:nth-child(2){transition-delay:.11s}
[data-stag].in>*:nth-child(3){transition-delay:.18s}
[data-stag].in>*:nth-child(4){transition-delay:.25s}
[data-stag].in>*:nth-child(5){transition-delay:.32s}
[data-stag].in>*:nth-child(6){transition-delay:.39s}

/* scroll progress */
.progress{ position:fixed; left:0; top:0; height:2px; width:100%; transform-origin:0 50%;
  transform:scaleX(0); background:var(--lime-2); z-index:90; }

/* ===== responsive ===== */
@media(max-width:900px){
  .split{ grid-template-columns:1fr; }
  .g-3{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:760px){
  .g-3,.g-2{ grid-template-columns:1fr; }
  .nav .nav-links{ position:fixed; inset:4.5rem 0 auto 0; flex-direction:column; align-items:flex-start;
    gap:0; background:var(--paper); border-bottom:1px solid var(--line); padding:.4rem var(--gut) 1.4rem;
    transform:translateY(-130%); transition:transform .42s var(--ease); box-shadow:var(--sh-3); }
  .nav[data-open=true] .nav-links{ transform:none; }
  .nav-links{ display:flex; }
  .nav-links a{ width:100%; padding:.9rem 0; border-bottom:1px solid var(--line); font-size:1.05rem; }
  .nav-links a::after{ display:none; }
  .nav-links .btn{ margin-top:1rem; width:100%; }
  .nav-toggle{ display:inline-flex; align-items:center; justify-content:center; width:48px; height:48px;
    background:transparent; border:2px solid var(--ink); border-radius:2px; cursor:pointer; }
  .nav-toggle span,.nav-toggle span::before,.nav-toggle span::after{ content:""; display:block; width:20px; height:2px; background:var(--ink); position:relative; }
  .nav-toggle span::before{ position:absolute; top:-6px; } .nav-toggle span::after{ position:absolute; top:6px; }
}
@media(max-width:560px){ :root{ --fs-body:1rem; } }

/* ===== reduced motion — 静止しても割れた等号・署名が成立 ===== */
@media(prefers-reduced-motion:reduce){
  *{ animation:none!important; transition:none!important; scroll-behavior:auto!important; }
  [data-r],[data-stag]>*{ opacity:1!important; transform:none!important; }
  .mk.draw::before{ transform:skewX(-5deg) translateY(1px) scaleX(1)!important; }
  .hlw.draw::after{ transform:scaleX(1)!important; }
  .progress{ display:none; }
}

/* ===== flagship 面（business 01 ／ eqlly＝主役。反転ステージに巨大ライム名で最も強く出す） ===== */
.flag-top{ display:grid; gap:clamp(1.6rem,3.4vw,3.2rem); align-items:end; }
@media(min-width:900px){ .flag-top{ grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr); } }
.flag-id{ min-width:0; }
.flag-eyebrow{ font-family:var(--disp); font-weight:700; letter-spacing:.02em;
  font-size:clamp(1.05rem,2vw,1.5rem); color:var(--ink-paper); margin:0 0 .35rem; }
/* line-height を descender が収まる値へ＋padding-bottom で "y" のディセンダを確保（見切れ/衝突を解消） */
.flag-name{ font-family:var(--disp); font-weight:900; line-height:1.14; letter-spacing:-.045em;
  font-size:clamp(3.6rem,13vw,9rem); color:var(--lime); padding-bottom:.12em; overflow:visible;
  margin:0 0 clamp(1.4rem,2.8vw,2.2rem); }
.flag-cta{ margin-top:clamp(1.4rem,2.6vw,2rem); }
.flag-claim{ min-width:0; }
.flag-values{ display:grid; gap:clamp(1rem,2.4vw,1.6rem); grid-template-columns:1fr;
  margin-top:clamp(2.6rem,5.5vw,4rem); }
@media(min-width:640px){ .flag-values{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(min-width:1040px){ .flag-values{ grid-template-columns:repeat(4,minmax(0,1fr)); } }
.fv{ min-width:0; border-top:3px solid var(--lime-2); padding-top:1rem; }
.fv .fv-i{ font-family:var(--disp); font-size:.72rem; letter-spacing:.2em; font-weight:600;
  text-transform:uppercase; color:var(--lime-2); }
.fv h3{ font-weight:700; font-size:var(--fs-h3); margin:.55rem 0 .5rem; color:var(--ink-paper); }
.fv p{ color:var(--ink-muted); font-size:.95rem; margin:0; }
/* stepgrid が反転面に載る時（線・番号・見出しを反転面用に） */
.ink-sec .stepgrid .st{ border-top-color:var(--ink-muted); }
.ink-sec .stepgrid .st .sn{ color:var(--lime-2); }
.ink-sec .stepgrid .st h3{ color:var(--ink-paper); }
.ink-sec .stepgrid .st p{ color:var(--ink-muted); }
/* paper tint 面（business 03＝紙地に面替えでリズムを出す） */
.sec.tint{ background:var(--paper-2); border-block:1px solid var(--line); }
/* footer 住所（社名の下に上品に） */
.foot .col-addr{ margin:.5rem 0 0; font-size:.82rem; line-height:1.9; color:var(--ink-muted); }

/* ===== legal / prose ===== */
.legal{ max-width:44rem; }
.legal .updated{ color:var(--muted); font-size:var(--fs-sm); margin-bottom:2rem; }
.legal h2{ font-size:var(--fs-h3); margin:2.2rem 0 .7rem; }
.legal p,.legal li{ color:var(--ink-2); }
.legal ul{ padding-left:1.2rem; display:grid; gap:.4rem; margin:0 0 1.1rem; }
.legal a{ color:var(--lime-2); }

/* ---- contact form: honeypot + status ---- */
.form .hp{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; pointer-events:none; }
.form-status{ margin:.9rem 0 0; font-size:var(--fs-sm); font-weight:700; line-height:1.6; }
.form-status.ok{ color:var(--ink); }
.form-status.err{ color:var(--err); }
.form.sending .btn.primary{ opacity:.6; pointer-events:none; }


/* ---- PLATE (eqlly.ai サービス画面の額装図版：反転面に骨白マット＋mono＋＝tick) ---- */
.plate{ margin:clamp(2.4rem,5.4vw,4.2rem) 0 0; }
.plate-frame{ background:var(--paper); padding:clamp(.55rem,1.3vw,1rem);
  border:1px solid var(--line-2); box-shadow:0 34px 66px -34px rgba(0,0,0,.66); }
.plate-frame img{ display:block; width:100%; height:auto; border:1px solid var(--line); }
.plate-cap{ display:flex; align-items:center; gap:.62rem; margin-top:.95rem;
  font-family:var(--mono); font-size:.72rem; letter-spacing:.09em; text-transform:uppercase;
  color:var(--ink-muted); }
.plate-cap .eq{ font-size:.72em; }

/* ---- brand mark (AIマーケットプレイス流用モノグラム＝道＝A / currentColorで明暗両対応) ---- */
.brand-mark{ display:inline-flex; align-items:center; }
.brand-mark svg{ width:1.5em; height:1.5em; display:block; }
