/* hiro工房 自社サイト v2 ── 共通設計（色・書体・グリッド・部品） SPEC.md が正 */
/* 書体の @font-face は assets/fonts.css に分離し、index.html から非同期で読み込む
   （初回描画をフォントのダウンロード待ちにしないため。読み込み中はシステム書体で表示） */

/* ===== 変数 ===== */
:root{
  /* 2026-10-01 改訂「方眼の校正紙」：冷たい白＋方眼（網点・明朝・丸判子は廃止） */
  --paper:#f5f5f2;
  --paper-2:#ebebe6;
  --ink:#111;
  --ink-mute:#555;
  --line:rgba(0,0,0,.14);
  --red:#a83a1f;
  --night:#141311;
  --amber:#e0a53a;
  --amber-line:rgba(224,165,58,.32);

  --display:"Zen Kaku Gothic New",sans-serif; /* 見出し：太いゴシック 900 */
  --sans:"Zen Kaku Gothic New",sans-serif;
  --en:"Instrument Serif",serif;
  --num:"Inter",sans-serif;

  --max:1360px;
  --pad:56px;
  --gap-sec:160px;
  --ease:cubic-bezier(.2,.7,.2,1);
}
@media (max-width:720px){
  :root{--pad:20px;--gap-sec:88px}
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--sans);font-weight:400;font-size:17px;line-height:1.9;
  letter-spacing:.02em;
  font-feature-settings:"tnum" 1;font-variant-numeric:tabular-nums;
  -webkit-font-smoothing:antialiased;
  background-image:linear-gradient(rgba(0,0,0,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.045) 1px,transparent 1px);
  background-size:24px 24px;
}
@media (max-width:720px){ body{font-size:16px} }
img,video{max-width:100%;display:block}
.sp{display:none}
@media (max-width:720px){ .sp{display:inline} }
.nowrap{white-space:nowrap}
a{color:inherit;text-decoration:none}
::selection{background:var(--red);color:var(--paper)}
:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
h1,h2,h3{margin:0;font-family:var(--display);font-weight:900;letter-spacing:-.02em;line-height:1.2;
  text-wrap:balance;word-break:keep-all;overflow-wrap:anywhere}
p{margin:0}
/* 本文の最後の行に1文字だけ残る（「す。」など）のを避ける */
p,li,dd,dt,summary,figcaption,.dm-body span{text-wrap:pretty}
ul,ol{margin:0;padding:0;list-style:none}
button{font:inherit;background:none;border:0;padding:0;color:inherit;cursor:pointer}

.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}
.sec{padding:var(--gap-sec) 0}
.sec.alt{background:var(--paper-2)}

.kicker{font-family:var(--num);font-weight:600;font-size:14px;letter-spacing:.14em;color:var(--red);
  text-transform:uppercase;margin:0 0 18px;display:flex;align-items:center;gap:10px}
/* 太いゴシックは字面が大きく、中間の幅（1024前後）で句点だけが次の行に落ちやすいので、56px を上限に幅で縮める */
.h2{font-size:clamp(32px,4.2vw,56px);margin:0 0 20px}
.h3{font-size:24px}
@media (max-width:720px){
  .h2{font-size:32px}
  .h3{font-size:20px}
}
.sub{color:var(--ink-mute);font-size:17px;max-width:640px;margin-top:4px}

/* 小さな朱の角印（節番号）。四角・角0・枠2px。やりすぎないよう、料金・流れ・FAQのみに使用 */
.k-stamp{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;flex:none;
  border-radius:0;border:2px solid var(--red);color:var(--red);font-family:var(--sans);font-size:11px;
  font-weight:700;line-height:1;transform:rotate(-7deg);text-transform:none;letter-spacing:0}

/* ===== 出現の動き（行・ブロック） ===== */
/* 本文は常に表示が既定。site.js が読み込まれ初期化に成功した時だけ
   html.js-ready が付き、そこで初めて出現前の非表示が効く。
   site.js の取得・実行に失敗すれば js-ready が付かないので、本文は常に見える。
   force-show（1.5秒保険）が付いた場合は、js-ready が付いていても強制的に表示する。 */
.js-ready .rv{clip-path:inset(0 0 100% 0)}
.js-ready .rv.in{clip-path:inset(0 0 0% 0);transition:clip-path .7s var(--ease)}
.js-ready .rvb{opacity:0;transform:translateY(12px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.js-ready .rvb.in{opacity:1;transform:translateY(0)}
@media (prefers-reduced-motion:reduce){
  .js-ready .rv,.js-ready .rvb{clip-path:none!important;opacity:1!important;transform:none!important;transition:none!important}
}
.force-show .rv,.force-show .rvb{clip-path:none!important;opacity:1!important;transform:none!important;transition:none!important}

/* ===== ヘッダー ===== */
.hd{position:sticky;top:0;z-index:40;background:var(--paper);border-bottom:1px solid var(--line)}
.hd-in{max-width:var(--max);margin:0 auto;padding:16px var(--pad);display:flex;align-items:center;gap:28px}
.logo{display:flex;align-items:center;gap:10px;font-family:var(--display);font-weight:900;font-size:18px;letter-spacing:-.01em;margin-right:auto}
.logo-mk{width:30px;height:30px;border-radius:0;border:2px solid var(--red);color:var(--red);
  display:flex;align-items:center;justify-content:center;font-family:var(--sans);font-weight:700;font-size:15px;line-height:1;transform:rotate(-6deg);flex:none}
.nav{display:flex;gap:26px;font-size:15px;letter-spacing:.04em}
.nav a{position:relative;opacity:.82;transition:opacity .2s}
.nav a::after{content:"";position:absolute;left:0;right:100%;bottom:-3px;height:1px;background:currentColor;
  transition:right .22s var(--ease)}
.nav a:hover{opacity:1}
.nav a:hover::after,.nav a:focus-visible::after{right:0}
.hd-short{display:none;gap:18px;font-size:14px;white-space:nowrap}
.hd-short a{position:relative;color:var(--red);font-weight:600}
.hd-cta{background:var(--red);color:var(--paper);font-size:14px;font-weight:600;padding:10px 18px;
  white-space:nowrap;flex:none;
  box-shadow:4px 4px 0 var(--ink);transition:transform .16s var(--ease),box-shadow .16s var(--ease)}
.hd-cta:hover{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--ink)}
.hd-cta:active{transform:translate(4px,4px);box-shadow:0 0 0 var(--ink)}
@media (max-width:860px){
  .nav{display:none}
  .hd-short{display:flex}
  .hd-in{gap:8px;padding:12px 14px}
  .logo{font-size:14px;gap:5px;white-space:nowrap;flex:none}
  .logo-mk{width:24px;height:24px;font-size:12px}
  .hd-short{gap:10px;font-size:12.5px}
  .hd-cta{font-size:13px;padding:9px 12px}
  .hd-cta-sp{display:none}
}

/* ===== ボタン・リンク ===== */
.btn{display:inline-block;background:var(--red);color:var(--paper);font-weight:700;font-size:16px;
  padding:16px 30px;box-shadow:6px 6px 0 var(--ink);transition:transform .16s var(--ease),box-shadow .16s var(--ease)}
.btn:hover{transform:translate(3px,3px);box-shadow:3px 3px 0 var(--ink)}
.btn:active{transform:translate(6px,6px);box-shadow:0 0 0 var(--ink)}
.btn:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.night .btn{box-shadow:6px 6px 0 var(--paper)}
.night .btn:hover{box-shadow:3px 3px 0 var(--paper)}
.night .btn:active{box-shadow:0 0 0 var(--paper)}
.night .btn:focus-visible,.contact .btn:focus-visible{outline-color:var(--paper)}
/* 暗い背景（相談帯・フッター・夜の面）ではキーボードの選択枠を紙色にして見失わないようにする */
.night :focus-visible,.contact :focus-visible,.ft :focus-visible{outline-color:var(--paper)}
.ulink{position:relative;padding-bottom:2px;border-bottom:1px solid var(--line)}
.ulink::after{content:"";position:absolute;left:0;right:100%;bottom:-1px;height:1px;background:var(--ink);
  transition:right .22s var(--ease)}
.ulink:hover::after,.ulink:focus-visible::after{right:0}
.night .ulink,.contact .ulink{color:var(--paper);border-color:var(--amber-line)}
.night .ulink::after,.contact .ulink::after{background:var(--amber)}

/* ===== ヒーロー ===== */
/* 初画面の要素（見出し・説明・料金・ボタン・不安ほどき）は出現演出の対象にしない。最初から表示 */
.hero{padding:0}
.hero-pin{position:relative;height:180vh}
.hero-pin-in{position:sticky;top:0;height:100svh;display:flex;align-items:center;padding:0 0 24px}
.hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center;width:100%}
.eyebrow{font-family:var(--num);font-size:14px;font-weight:600;letter-spacing:.1em;color:var(--ink-mute);margin:0 0 22px}
.h1{font-size:min(72px,6vw);line-height:1.2}
.lead{margin-top:26px;color:var(--ink-mute);font-size:18px;max-width:46ch}
.hero-price{margin-top:24px;display:flex;gap:28px;flex-wrap:wrap;font-family:var(--num);font-size:16px;color:var(--ink-mute)}
.hero-price b{font-family:var(--num);font-weight:600;font-style:normal;font-size:20px;color:var(--ink)}
.hero-cta{margin-top:30px;display:flex;align-items:center;gap:26px;flex-wrap:wrap}
.hero-mail{font-size:14px;color:var(--ink-mute)}
.assure{margin-top:20px;font-size:14px;color:var(--ink-mute)}
@media (max-width:980px){
  .hero-pin{height:auto}
  .hero-pin-in{position:static;height:auto;display:block;padding:22px 0 0}
  .hero-grid{grid-template-columns:1fr}
  .eyebrow{font-size:13px;margin:0 0 10px}
  .h1{font-size:40px;line-height:1.2}
  .lead{margin-top:12px;font-size:16px}
  .hero-price{margin-top:12px}
  .hero-cta{margin-top:16px;gap:18px}
  .assure{margin-top:14px;font-size:14px}
}

/* ---- ヒーロー右：konoha を要素分解し、紙の配置からスマホ内の配置へ連続して移動・縮小 ---- */
.hero-vis-pin{height:auto}
.hero-vis-pin-in{display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:14px;height:100%;width:100%}
.hero-vis-pin-in .hero-stage{width:100%;flex:none}
.hero-vis-pin-in .hero-mk{flex:none;margin-top:0}
@media (max-width:980px){
  .hero-vis-pin{position:relative;height:120vh;margin-top:14px}
  .hero-vis-pin-in{position:sticky;top:0;height:100svh}
}
.hero-stage{position:relative;height:420px}
.hp-back{position:absolute;width:70%;aspect-ratio:1024/640;background:var(--paper);box-shadow:6px 6px 0 var(--ink);
  overflow:hidden;transition:opacity .4s var(--ease)}
.hp-back img{width:100%;height:100%;object-fit:cover}
.hp-back.p0{top:4%;left:1%;transform:rotate(-2deg);z-index:1}
.hp-back.p2{top:30%;left:4%;transform:rotate(-1.2deg);z-index:1}

/* konoha：写真・店名・営業時間・予約丸を要素として持ち、JS が frame の left/top/width/height/
   border-radius を px で連続補間する（紙→スマホ）。子要素は container query 単位（cqw）で
   frame の幅に応じて連続して縮小するため、二重写しなしで「同じ要素が動く」*/
.konoha-frame{position:absolute;top:4%;right:0;z-index:2;height:76%;width:calc(76% * 1024 / 640);
  background:var(--paper);color:var(--ink);text-decoration:none;
  box-shadow:7px 7px 0 var(--ink);overflow:hidden;border-radius:0;container-type:inline-size}
/* 写真・店名・営業時間は、JSが frame 内の位置(left/top/width/height)を連続補間する。
   紙の状態＝横組みの版下（写真は左半分、店名・営業時間は右半分に上下）から、
   スマホ枠＝縦の配置（写真が上、店名・営業時間が下）へ、同じ要素のまま組み替わる。
   CSSの値はJS無効時のための初期値（縦の配置を想定） */
.k-photo{position:absolute;left:0;top:0;width:100%;height:45%;overflow:hidden;background:#2a2420}
.k-photo img{width:100%;height:100%;object-fit:cover;display:block}
.konoha-stamp{position:absolute;right:4cqw;top:50%;transform:translateY(-50%);z-index:3;
  width:clamp(40px,15cqw,72px);height:clamp(40px,15cqw,72px);border-radius:50%;
  border:1px dashed var(--amber-line);background:rgba(243,238,228,.94);color:var(--red);
  display:flex;align-items:center;justify-content:center;text-align:center;
  font-family:var(--num);font-weight:600;font-size:clamp(7px,2.1cqw,11px);line-height:1.3}
.k-name{position:absolute;left:0;top:45%;width:100%;height:30%;background:#241c17;overflow:hidden;z-index:2;
  display:flex;flex-direction:column;justify-content:center;box-sizing:border-box;
  padding:clamp(8px,2.6cqw,18px) clamp(14px,4.6cqw,24px)}
.k-bubble{position:absolute;left:4cqw;top:0;transform:translateY(-100%);background:var(--paper);color:var(--ink);
  font-family:var(--sans);font-weight:400;font-size:clamp(8px,2.3cqw,12.5px);padding:1.4cqw 2.6cqw;
  border-radius:3px;box-shadow:2px 2px 0 var(--ink);white-space:nowrap;
  opacity:0;transition:opacity .3s var(--ease)}
.k-bubble.is-shown{opacity:1}
.k-h1{font-family:var(--display);font-weight:900;letter-spacing:-.02em;color:var(--paper);line-height:1.3;
  font-size:clamp(15px,6.8cqw,27px)}
.k-hours{position:absolute;left:0;top:75%;width:100%;height:25%;background:var(--paper);overflow:hidden;
  display:flex;flex-direction:column;box-sizing:border-box;
  justify-content:center;gap:clamp(3px,.8cqw,7px);
  padding:clamp(6px,2.2cqw,16px) clamp(14px,4.6cqw,24px)}
.k-hours p{display:flex;gap:1.6cqw;font-family:var(--num);font-size:clamp(13px,2.8cqw,14.5px);color:var(--ink-mute)}
.k-hours b{font-weight:600;color:var(--ink);flex:0 0 auto}

.hero-mk{display:flex;align-items:center;margin-top:16px;font-family:var(--num);font-size:14px;
  color:var(--ink-mute);opacity:0;transform:translateY(8px);
  transition:opacity .3s var(--ease),transform .3s var(--ease)}
.hero-mk.is-revealed{opacity:1;transform:translateY(0)}
.hero-mk-stamp{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;
  flex:none;margin-right:9px;border-radius:0;border:2px solid var(--red);color:var(--red);
  font-family:var(--sans);font-weight:700;font-size:10.5px;line-height:1;letter-spacing:0;transform:scale(0) rotate(-14deg);
  transition:transform .3s cubic-bezier(.34,1.56,.64,1)}
.hero-mk.is-revealed .hero-mk-stamp{transform:scale(1) rotate(-8deg)}
@media (prefers-reduced-motion:reduce){
  .hero-mk{transition:none}
  .hero-mk-stamp{transition:none}
}
@media (max-width:980px){
  .hero-stage{height:460px;margin-top:0}
  .hp-back{width:56%}
  .hp-back.p0{left:0}
  .hp-back.p2{left:6%}
  .konoha-frame{height:88%;width:calc(88% * 1024 / 640);right:-4%}
}
/* ---- PC（981px以上）：konoha は画面の右半分を使い、高さ70%級。見出しの端に少し重なる ---- */
@media (min-width:981px){
  .hero-stage{height:min(70vh,720px);min-height:440px}
  .hp-back{height:46%;width:auto;max-width:300px;aspect-ratio:1024/640}
  .hp-back.p0{top:2%;left:-4%}
  .hp-back.p2{top:44%;left:0}
  .konoha-frame{height:76%;width:calc(76% * 1024 / 640);top:4%;right:-6%}
}
@media (prefers-reduced-motion:reduce){
  .hero-pin{height:auto!important}
  .hero-pin-in{position:static!important;height:auto!important}
  .hero-vis-pin{height:auto!important}
  .hero-vis-pin-in{position:static!important;height:auto!important}
  .hp-back{opacity:0}
}

/* ===== 制作する人 ===== */
.who{padding:40px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.who-t{font-family:var(--num);font-size:13px;color:var(--ink-mute);letter-spacing:.08em;margin-bottom:10px}
.who-p{color:var(--ink-mute);max-width:720px}

/* ===== 4つの約束 ===== */
.why-head{position:sticky;top:96px;align-self:start}
.why-grid{display:grid;grid-template-columns:1.1fr 2fr;gap:40px}
.why{border-top:1px solid var(--line)}
.why li{display:grid;grid-template-columns:100px 1fr;gap:28px;padding:40px 0;border-bottom:1px solid var(--line)}
.why i{font-family:var(--en);font-style:italic;font-weight:400;font-size:64px;color:var(--ink);line-height:1}
.why h3{margin-bottom:10px}
.why p{color:var(--ink-mute)}
@media (max-width:860px){
  .why-grid{grid-template-columns:1fr}
  .why-head{position:static}
  .why li{grid-template-columns:60px 1fr}
  .why i{font-size:40px}
}

/* ===== 中まで見られる見本（刷り上がった紙・高さと幅を不揃いに） ===== */
.dms{display:grid;grid-template-columns:repeat(12,1fr);gap:40px 36px;margin-top:56px;align-items:start}
.dm{display:block}
.dm.sz-lg{grid-column:span 7;align-self:end}
.dm.sz-tall{grid-column:span 5}
.dm.sz-md{grid-column:span 5;margin-top:32px}
.dm-pair{grid-column:span 7;display:flex;gap:28px;align-items:flex-end}
.dm.sz-sm{flex:0 0 54%}
.dm.sz-sm2{flex:0 0 38%}
.dm.sz-sm2.up{margin-bottom:28px}
.dm-frame{position:relative;display:block;aspect-ratio:1024/640;overflow:hidden;border:1px solid var(--line);
  background:var(--paper);box-shadow:6px 6px 0 var(--ink);transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.dm-frame img{width:100%;height:100%;object-fit:cover}
.dm-frame-top img{object-position:top}
.dm-frame-top{aspect-ratio:1024/500}
.dm-frame-tall{aspect-ratio:480/650}
.dm-frame-tall img{object-position:top}
.rot-a .dm-frame{transform:rotate(-0.6deg)}
.rot-b .dm-frame{transform:rotate(0.7deg)}
.rot-c .dm-frame{transform:rotate(-0.8deg)}
.rot-d .dm-frame{transform:rotate(1deg)}
.rot-e .dm-frame{transform:rotate(-1deg)}
.dm:hover .dm-frame,.dm:focus-visible .dm-frame{transform:rotate(0deg) translateY(-3px);box-shadow:8px 8px 0 var(--ink)}
.dm-stamp{position:absolute;top:50%;left:50%;width:84px;height:84px;border-radius:0;border:2px solid var(--red);
  color:var(--red);display:flex;align-items:center;justify-content:center;font-family:var(--sans);font-weight:700;font-size:16px;line-height:1;
  background:rgba(245,245,242,.94);transform:translate(-50%,-50%) scale(1.5) rotate(-14deg);opacity:0;
  transition:transform .22s var(--ease),opacity .22s var(--ease)}
.dm:hover .dm-stamp,.dm:focus-visible .dm-stamp{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(-8deg)}
.dm-body{display:block;margin-top:18px}
.dm-body b{font-family:var(--display);font-weight:900;letter-spacing:-.01em;font-size:19px;display:block;margin-bottom:6px}
.dm-body span{color:var(--ink-mute);font-size:16px;display:block}
.dm-body i{font-style:normal;font-family:var(--num);font-size:14px;color:var(--red);display:block;margin-top:10px}
.reel-note{margin-top:48px;font-size:16px;color:var(--ink-mute);max-width:820px}
.reel-note a{text-decoration:underline}
@media (max-width:860px){
  .dms{grid-template-columns:1fr;gap:40px}
  .dm.sz-lg,.dm.sz-tall,.dm.sz-md{grid-column:auto;margin-top:0;align-self:auto}
  .dm-pair{grid-column:auto;flex-direction:column;gap:40px}
  .dm.sz-sm,.dm.sz-sm2{flex:auto}
  .dm.sz-sm2.up{margin-bottom:0}
  .rot-a .dm-frame,.rot-b .dm-frame,.rot-c .dm-frame,.rot-d .dm-frame,.rot-e .dm-frame{transform:none}
}

/* ===== 夜の面（固定区間 200vh。各語の横に見本の実物を灯す） ===== */
.night{background:var(--night);color:var(--paper);content-visibility:auto;contain-intrinsic-size:1px 2200px;
  --night-img:image-set(url("../images/night-v-960.webp") 1x, url("../images/night-v-1600.webp") 1.8x)}
.night .kicker{color:var(--amber)}
.night .h2{color:var(--paper)}
.night .sub{color:#d9d5ca}
.yoru-lead{color:#d9d5ca;max-width:560px;margin-top:4px}
.yoru-track{position:relative;height:200vh;margin-top:40px}
.yoru-sticky{position:sticky;top:0;height:100svh;display:flex;align-items:center;justify-content:center;overflow:hidden}
.yoru-word{position:absolute;display:flex;flex-direction:column;align-items:center;text-align:center;
  max-width:92vw;opacity:0;transform:translateY(16px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.yoru-word.on{opacity:1;transform:translateY(0)}
.yw-num{display:block;font-family:var(--en);font-style:italic;font-size:18px;color:var(--amber);margin-bottom:12px}
.yw-t{font-family:var(--display);font-weight:900;letter-spacing:-.02em;font-size:clamp(40px,7.5vw,92px);color:var(--paper);
  text-shadow:0 2px 24px rgba(0,0,0,.55);line-height:1.1}
.yw-ans{display:flex;flex-direction:column;gap:8px;margin-top:20px;width:min(84vw,340px);
  border:1px solid var(--amber);background:var(--paper);color:var(--ink);text-align:left;
  padding:18px 22px;box-shadow:4px 4px 0 var(--amber)}
.yw-ans p{display:flex;gap:14px;align-items:baseline;font-family:var(--sans);font-size:17px;line-height:1.5}
.yw-ans b{font-weight:700;flex:0 0 auto;min-width:3.2em;color:var(--red)}
.yw-ans span{color:var(--ink)}
.yw-ans-addr span{font-size:16px}
.yw-disclaimer{display:block!important;margin-top:4px;padding-top:8px;border-top:1px solid rgba(36,28,23,.15);
  font-family:var(--sans)!important;font-size:13px!important;line-height:1.5;color:#9a6a1a}
@media (max-width:720px){
  .yw-ans{padding:16px 18px}
  .yw-ans p{font-size:16px}
  .yw-disclaimer{font-size:13px!important}
}
.yoru-bg{position:absolute;inset:0;opacity:0;transition:opacity .6s var(--ease);
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 14%,#000 86%,transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0,#000 14%,#000 86%,transparent 100%)}
.yoru-bg.is-loaded{background:var(--night-img,none) center/cover no-repeat;opacity:.92}
@media (min-width:721px){
  .night{--night-img:image-set(url("../images/night-h-960.webp") 1x, url("../images/night-h-1600.webp") 1.7x, url("../images/night-h-2400.webp") 2.5x)}
  .yoru-sticky{justify-content:flex-end}
  .yoru-word{width:45%;max-width:560px;padding-right:7%;align-items:flex-end;text-align:right;
    box-sizing:border-box}
  .yw-t{font-size:clamp(40px,6vw,80px)}
}
@media (prefers-reduced-motion:reduce){
  .yoru-track{height:auto}
  .yoru-sticky{position:static;height:auto;flex-direction:column;gap:40px;padding:40px 0}
  .yoru-word{position:static;opacity:1;transform:none;padding-right:0!important;align-items:center!important;text-align:center!important}
}
.vid{margin-top:56px;max-width:360px;position:relative}
.vid-frame{position:relative;aspect-ratio:9/16;background:var(--night);overflow:hidden;border:1px solid var(--amber-line)}
.vid-frame video,.vid-frame img{width:100%;height:100%;object-fit:cover}
.vid-ov{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:26px 22px;
  background:linear-gradient(to top,rgba(20,19,17,.78),rgba(20,19,17,.1) 55%)}
.vid-ov-t{font-family:var(--display);font-weight:700;font-size:17px;color:var(--paper);line-height:1.5}
.vid-ov-s{font-family:var(--num);font-size:13px;color:var(--amber);margin-top:10px;letter-spacing:.04em}
.vid.is-on .vid-ov{display:none}
.vid-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.08)}
.vid-play svg{width:56px;height:56px;fill:var(--amber);filter:drop-shadow(2px 2px 0 rgba(0,0,0,.6))}
.vid.is-on .vid-play{display:none}
.vid-cap{margin-top:14px;font-size:14px;color:#d9d5ca;display:flex;gap:10px}
.vid-frame-paper{background:var(--paper-2);border:1px solid var(--line)}
.vid-play-paper{background:rgba(245,245,242,.3)}
.vid-play-paper svg{fill:var(--red);filter:none}

/* 夜の動画：スマホはポスター幅いっぱい＋重ねたボタン。PCは左40%ポスター／右に見出しとボタン */
.vid-split{max-width:360px}
.vid-play-desktop{display:none}
.vid-split .vid-info{display:none}
@media (min-width:861px){
  .vid-split{max-width:none;display:flex;align-items:center;gap:48px;margin-top:64px}
  .vid-split .vid-frame{flex:0 0 40%;max-width:280px}
  .vid-split .vid-ov{display:none}
  .vid-play-mobile{display:none}
  .vid-split .vid-info{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:22px}
  .vid-info-t{font-family:var(--display);font-weight:900;letter-spacing:-.02em;font-size:48px;color:var(--paper);line-height:1.3}
  .vid-play-desktop{display:inline-flex;align-items:center;gap:14px;position:static;inset:auto;
    background:none;color:var(--amber);font-family:var(--num);font-size:15px;letter-spacing:.04em}
  .vid-play-ico{width:52px;height:52px;border-radius:50%;border:1.6px solid var(--amber);
    display:flex;align-items:center;justify-content:center;flex:none;transition:background .2s var(--ease)}
  .vid-play-ico svg{width:18px;height:18px;fill:var(--amber);filter:none}
  .vid-play-desktop:hover .vid-play-ico{background:rgba(224,165,58,.16)}
  .vid-split.is-on .vid-play-desktop{display:none}
}

/* ===== 業種ごと（通常の横スクロール帯＋矢印ボタン。縦→横の変換はしない） ===== */
.gal-outer{position:relative;margin-top:48px}
.gal-wrap{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;
  scrollbar-width:none;cursor:grab;scroll-behavior:smooth}
.gal-wrap::-webkit-scrollbar{display:none}
.gal-wrap.is-dragging{cursor:grabbing;scroll-behavior:auto}
.gal-track{display:flex;gap:24px;width:max-content;padding:4px var(--pad) 20px}
.gal-card{height:58vh;max-height:600px;min-height:280px;flex:none}
.gal-card .f{position:relative;display:block;height:100%;aspect-ratio:1024/640;overflow:hidden;
  border:1px solid var(--line);cursor:default}
.gal-card img{width:100%;height:100%;object-fit:cover}
.gal-card figcaption{margin-top:12px}
.gal-card .gal-cap{font-family:var(--display);font-weight:700;font-size:16px;display:inline-block;color:var(--ink);
  text-decoration:underline;text-decoration-color:var(--ink-mute);text-underline-offset:4px}
.gal-card span{display:block;margin-top:2px;color:var(--ink-mute);font-size:14px}
.price-terms{margin-top:20px;font-size:14px;line-height:1.7;color:var(--ink-mute)}
.more{margin-top:14px;font-size:15px}
.gal-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:4;width:48px;height:48px;
  background:var(--red);color:var(--paper);display:flex;align-items:center;justify-content:center;
  box-shadow:4px 4px 0 var(--ink);transition:transform .16s var(--ease),box-shadow .16s var(--ease)}
.gal-arrow:hover{transform:translateY(-50%) translate(2px,2px);box-shadow:2px 2px 0 var(--ink)}
.gal-arrow:active{transform:translateY(-50%) translate(4px,4px);box-shadow:0 0 0 var(--ink)}
.gal-arrow svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.gal-arrow-l{left:12px}
.gal-arrow-r{right:12px}
@media (max-width:720px){ .gal-arrow{display:none} }
@media (max-width:860px){ .gal-card{height:42vh;min-height:220px} }
@media (prefers-reduced-motion:reduce){ .gal-card img,.gal-wrap{transition:none;scroll-behavior:auto} }

/* ===== 料金（刷り物として組む） ===== */
.price-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px;margin-top:48px}
.price-col{background:var(--paper-2);padding:36px;box-shadow:6px 6px 0 var(--ink)}
.price-col.pc1{transform:rotate(-0.5deg)}
.price-col.pc2{transform:rotate(0.5deg)}
.pl{font-size:14px;color:var(--ink-mute);letter-spacing:.08em}
.pv{font-family:var(--num);font-weight:600;font-style:normal;font-size:44px;margin:10px 0 24px;
  font-feature-settings:"tnum" 1}
.pv small{font-family:var(--sans);font-weight:400;font-size:16px;color:var(--ink-mute);margin-left:6px}
.price-col ul{display:flex;flex-direction:column;gap:12px;font-size:16px;color:var(--ink-mute)}
.price-col li{padding-left:18px;border-left:2px solid var(--red)}
.total{margin-top:28px;background:var(--ink);color:var(--paper);padding:34px 36px;box-shadow:6px 6px 0 var(--ink)}
.total-t{font-size:14px;color:#b9b3a6;letter-spacing:.08em}
.total-v{display:flex;align-items:baseline;gap:14px;margin-top:12px;flex-wrap:wrap}
.total-v b{font-family:var(--num);font-weight:600;font-style:normal;font-size:38px;font-feature-settings:"tnum" 1}
.total-v small{font-size:15px;color:#b9b3a6}
.total-n{margin-top:14px;font-size:15px;color:#b9b3a6}
.terms{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:64px}
.terms h3{margin-bottom:16px}
.terms ul{display:flex;flex-direction:column;gap:10px;font-size:15px;color:var(--ink-mute)}
.reason-row{margin-top:48px;display:flex;gap:48px;align-items:flex-end}
.reason{flex:1;max-width:560px}
.reason-t{margin-bottom:14px}
.reason p{color:var(--ink-mute);margin-top:12px;font-size:16px}
.reason-row .vid{flex:0 0 auto;margin-top:0;max-width:220px}
@media (max-width:860px){
  .reason-row{flex-direction:column;align-items:flex-start;gap:32px}
  .reason-row .vid{max-width:220px}
}
@media (max-width:860px){
  .price-grid{grid-template-columns:1fr}
  .price-col.pc1,.price-col.pc2{transform:none}
  .terms{grid-template-columns:1fr}
}

/* ===== 作り直し ===== */
.renew{margin-top:88px;padding-top:56px;border-top:1px solid var(--line);display:grid;grid-template-columns:1.1fr 1fr;gap:48px}
.renew h3{margin:14px 0 18px;font-size:30px}
.renew p{color:var(--ink-mute);margin-top:12px}
.renew-cost{border-top:1px dashed var(--line);padding-top:16px;margin-top:20px}
.renew ul{display:flex;flex-direction:column;gap:14px;font-size:15px;color:var(--ink-mute)}
.renew li{padding-left:18px;border-left:2px dashed var(--ink-mute)}
@media (max-width:860px){ .renew{grid-template-columns:1fr} }
@media (max-width:720px){ .renew h3{font-size:22px} }

/* ===== 流れ ===== */
.flow{border-top:1px solid var(--line);margin-top:48px}
.flow li{display:grid;grid-template-columns:70px 1fr;gap:24px;padding:32px 0;border-bottom:1px solid var(--line)}
.flow i{font-family:var(--en);font-style:italic;font-size:36px;color:var(--red)}
.flow h3{margin-bottom:8px}
.flow p{color:var(--ink-mute)}
@media (max-width:720px){
  /* 番号欄を40pxに詰め、スマホの本文幅を確保する（共通の5段階手順） */
  .flow li{grid-template-columns:40px 1fr;gap:16px;padding:22px 0}
  .flow i{font-size:28px}
}

/* ===== 業種別のご案内 ===== */
.gy{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);margin-top:48px;box-shadow:6px 6px 0 var(--ink)}
.gy a{display:block;background:var(--paper);padding:30px;transition:background .2s}
.gy a:hover{background:var(--paper-2)}
.gy b{font-family:var(--display);font-weight:900;letter-spacing:-.01em;font-size:19px;display:block;margin-bottom:8px}
.gy span{color:var(--ink-mute);font-size:15px}
@media (max-width:860px){ .gy{grid-template-columns:1fr} }

/* ===== FAQ ===== */
.faq{border-top:1px solid var(--line);margin-top:40px}
.faq details{border-bottom:1px solid var(--line);padding:22px 0}
.faq summary{cursor:pointer;font-family:var(--display);font-weight:700;font-size:17px;padding-right:30px;position:relative;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:0;top:-2px;font-family:var(--num);font-size:22px;color:var(--red);transition:transform .25s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq p{color:var(--ink-mute);margin-top:14px;max-width:760px;font-size:16px}

/* ===== LINE帯・フッター ===== */
.contact{background:var(--night);color:var(--paper);padding:140px 0;text-align:center}
.contact .h2{color:var(--paper)}
.contact .sub{color:#d9d5ca;margin:14px auto 0}
.contact .assure{color:#d9d5ca}
.contact .hero-cta{justify-content:center;margin-top:36px}
.ft{background:var(--night);color:#b5b0a3;padding:36px 0 48px;border-top:1px solid var(--amber-line)}
.ft b{color:var(--paper)}
.ft-nav{display:flex;gap:16px;flex-wrap:wrap;margin:18px 0;font-size:14px}
.ft-nav a{position:relative;padding-bottom:2px}
.ft-nav a::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;background:var(--amber);transition:right .22s var(--ease)}
.ft-nav a:hover{color:var(--paper)}
.ft-nav a:hover::after,.ft-nav a:focus-visible::after{right:0}
.ft-area{font-size:14px;max-width:760px;margin-bottom:14px}
.copy{font-size:14px;margin-top:14px}

/* ===== 印刷 ===== */
@media print{ .hd,.contact,.ft{display:none} }
/* 料金動画：再生ボタンをポスターの判子と文字のあいだ（高さ46%）に置く。文字に重ねない */
.vid-play-paper{align-items:flex-start;padding-top:calc(81.8% - 28px)}

/* 2026-10-03 スマホ：横にスクロールできることを、ふんわり点滅で知らせる（触ったら消える） */
.gal-hint{display:none}
@media (max-width:720px){
  .gal-hint{display:flex !important;align-items:center;gap:4px;position:absolute;right:10px;top:42%;z-index:4;
    padding:7px 10px 7px 13px;border-radius:999px;background:rgba(255,255,255,.92);color:var(--ink);
    border:1px solid var(--ink);font-size:13px;font-weight:700;letter-spacing:.04em;pointer-events:none;
    animation:galHint 1.8s ease-in-out infinite;transition:opacity .4s ease}
  .gal-hint svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;
    animation:galHintArrow 1.8s ease-in-out infinite}
  .gal-hint.is-gone{opacity:0 !important;animation:none}
}
@keyframes galHint{0%,100%{opacity:.35}50%{opacity:1}}
@keyframes galHintArrow{0%,100%{transform:translateX(0)}50%{transform:translateX(3px)}}
@media (prefers-reduced-motion:reduce){ .gal-hint,.gal-hint svg{animation:none;opacity:.9} }

/* 2026-10-03 見出しを意味の切れ目でだけ折る */
.nw{display:inline-block}
@media (max-width:380px){ #works .h2{font-size:28px} }
