/* =====================================================================
   琢磨時計工房 / TAKUMA Watch Atelier — flagship sample
   KIGAKU Web Design (クロ子制作) — offline / no external deps
   ===================================================================== */

/* ---------- 1. Design tokens ---------- */
:root{
  /* surfaces — layered near-black, never pure #000 */
  --bg:#0a0a0b;
  --bg-2:#0d0e12;
  --surface:#121216;
  --raised:#1a1a20;
  --hairline:rgba(255,255,255,.08);
  --hairline-2:rgba(255,255,255,.14);

  /* text — dim white, never pure white */
  --text:rgba(255,255,255,.90);
  --muted:rgba(255,255,255,.64);
  --faint:rgba(255,255,255,.58);   /* small text — meets AA on near-black */
  --deco:rgba(255,255,255,.40);    /* purely decorative glyphs only */

  /* single restrained accent: warm brass/gold */
  --accent:#c8a96a;
  --accent-bright:#e3c787;
  --accent-soft:rgba(200,169,106,.14);
  --accent-line:rgba(200,169,106,.38);
  --accent-ink:#2a2113;

  /* fonts — system stacks (offline). Latin serif first, JP mincho follows */
  --font-display:"Georgia","Times New Roman","Yu Mincho","YuMincho","Hiragino Mincho ProN","Hiragino Mincho Pro","Noto Serif JP",serif;
  --font-mincho:"Yu Mincho","YuMincho","Hiragino Mincho ProN","Hiragino Mincho Pro","Noto Serif JP",serif;
  --font-body:system-ui,-apple-system,"Segoe UI","Yu Gothic","YuGothic","Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif;

  /* type scale (Perfect Fourth) */
  --step--1:clamp(.8rem,.76rem+.18vw,.88rem);
  --step-0:clamp(1rem,.94rem+.32vw,1.1rem);
  --step-1:clamp(1.25rem,1.12rem+.6vw,1.55rem);
  --step-2:clamp(1.7rem,1.4rem+1.4vw,2.6rem);
  --step-3:clamp(2.1rem,1.6rem+2.4vw,3.4rem);
  --display:clamp(3.3rem,1.7rem+6.6vw,8rem);

  /* spacing */
  --gutter:clamp(1.25rem,5vw,3rem);
  --section-pad:clamp(4.5rem,11vh,10rem);
  --maxw:1280px;

  /* easing */
  --ease-out-expo:cubic-bezier(.16,1,.3,1);
  --ease-out-quint:cubic-bezier(.22,1,.36,1);
  --ease-standard:cubic-bezier(.4,0,.2,1);
  --ease-back:cubic-bezier(.34,1.56,.64,1);

  /* depth */
  --shadow-card:0 1px 2px rgba(0,0,0,.45),0 18px 40px -14px rgba(0,0,0,.6);
  --shadow-hover:0 2px 6px rgba(0,0,0,.5),0 30px 64px -16px rgba(0,0,0,.72);
  --edge:inset 0 1px 0 rgba(255,255,255,.06);
  --glow-accent:0 0 48px rgba(200,169,106,.18);

  --radius:14px;
  --radius-lg:22px;
}

/* ---------- 2. Reset / base ---------- */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;background:var(--bg);}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto;}}
body{
  margin:0;min-width:320px;color:var(--text);background:var(--bg);
  font-family:var(--font-body);font-size:var(--step-0);line-height:1.65;
  letter-spacing:-.005em;overflow-x:hidden;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  font-feature-settings:"palt","kern","liga";
}
img,canvas,svg{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}
button{font:inherit;color:inherit;cursor:pointer;border:none;background:none;}
ul,ol{margin:0;padding:0;list-style:none;}
h1,h2,h3,p{margin:0;}
:focus-visible{outline:2px solid var(--accent-bright);outline-offset:3px;border-radius:4px;}

.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;}
.skip-link{position:fixed;top:-100px;left:16px;z-index:10000;background:var(--accent);
  color:var(--accent-ink);padding:.7em 1.2em;border-radius:8px;font-weight:700;
  transition:top .2s var(--ease-standard);}
.skip-link:focus{top:16px;}

.container{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter);width:100%;}
.section{padding-block:var(--section-pad);position:relative;}
section[id],[id].overhaul{scroll-margin-top:84px;}

/* JP typographic refinement */
:lang(ja) h1,:lang(ja) h2{letter-spacing:.015em;}
:lang(ja) p,:lang(ja) li,:lang(ja) dd{line-height:1.9;letter-spacing:.03em;}

.eyebrow{font-family:var(--font-body);font-size:.74rem;font-weight:600;
  letter-spacing:.22em;text-transform:uppercase;color:var(--accent);
  display:inline-flex;align-items:center;gap:.7em;margin-bottom:1.1rem;}
.eyebrow::before{content:"";width:26px;height:1px;background:var(--accent-line);}

.section-title{font-family:var(--font-mincho);font-weight:600;
  font-size:var(--step-2);line-height:1.28;letter-spacing:.02em;margin-bottom:1.6rem;}
h3{font-family:var(--font-mincho);font-weight:600;font-size:var(--step-1);line-height:1.4;letter-spacing:.02em;}
p{max-width:40em;color:var(--text);}
em{font-style:normal;color:var(--accent-bright);}

/* ---------- 3. Decorative overlays ---------- */
.grain{position:fixed;inset:0;z-index:9998;pointer-events:none;opacity:.045;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");}
.cursor-glow{position:fixed;top:0;left:0;width:520px;height:520px;z-index:0;pointer-events:none;
  border-radius:50%;opacity:0;transform:translate3d(-50%,-50%,0);
  background:radial-gradient(circle,rgba(200,169,106,.10),transparent 62%);
  transition:opacity .6s var(--ease-standard);will-change:transform;}
body.has-cursor .cursor-glow{opacity:1;}
@media (prefers-reduced-motion:reduce){.grain{opacity:.025;}.cursor-glow{display:none;}}
@media (hover:none){.cursor-glow{display:none;}}

/* ---------- 4. Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;
  padding:1.05em 1.9em;border-radius:999px;font-weight:700;font-size:var(--step--1);
  letter-spacing:.04em;line-height:1;will-change:transform;
  transition:transform .35s var(--ease-out-expo),box-shadow .35s var(--ease-out-expo),
             background .25s var(--ease-standard),color .25s var(--ease-standard);}
.btn-cta{background:linear-gradient(135deg,var(--accent-bright),var(--accent));
  color:var(--accent-ink);box-shadow:var(--glow-accent),0 10px 30px -10px rgba(200,169,106,.5);}
.btn-cta:hover{box-shadow:0 0 64px rgba(200,169,106,.3),0 16px 40px -10px rgba(200,169,106,.6);
  transform:translateY(-2px);}
.btn-ghost{color:var(--text);border:1px solid var(--hairline-2);}
.btn-ghost:hover{border-color:var(--accent-line);color:var(--accent-bright);background:var(--accent-soft);}
.btn-block{width:100%;padding-block:1.2em;}
.magnetic{position:relative;}
.magnetic__label{display:inline-block;will-change:transform;}

/* ---------- 5. Header ---------- */
.site-header{position:fixed;top:0;left:0;right:0;z-index:1000;
  transition:background .4s var(--ease-standard),border-color .4s,backdrop-filter .4s;
  border-bottom:1px solid transparent;}
.site-header.is-scrolled{background:rgba(10,10,11,.72);backdrop-filter:blur(14px) saturate(1.2);
  -webkit-backdrop-filter:blur(14px) saturate(1.2);border-bottom-color:var(--hairline);}
.header-inner{max-width:var(--maxw);margin-inline:auto;padding:1.05rem var(--gutter);
  display:flex;align-items:center;gap:1.5rem;}
.brand{display:inline-flex;align-items:center;gap:.7rem;flex-shrink:0;}
.brand-mark svg{width:38px;height:38px;}
.brand-mark svg circle,.brand-mark svg line{fill:none;stroke:var(--accent);stroke-width:1.4;stroke-linecap:round;}
.brand-mark svg .mark-inner{stroke:var(--accent-line);stroke-width:1;}
.brand-mark svg .mark-spokes line{stroke:var(--accent);stroke-width:1.3;}
.brand-mark svg .mark-hub,.brand-mark svg .mark-screw{fill:var(--accent);stroke:none;}
.brand-text{display:flex;flex-direction:column;line-height:1.1;}
.brand-text strong{font-family:var(--font-mincho);font-size:1.04rem;letter-spacing:.06em;font-weight:600;}
.brand-text small{font-size:.56rem;letter-spacing:.28em;color:var(--faint);margin-top:.25em;}
.nav{display:flex;gap:1.7rem;margin-left:auto;font-size:.86rem;letter-spacing:.04em;}
.nav a{color:var(--muted);position:relative;padding-block:.3em;transition:color .25s;}
.nav a::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;
  background:var(--accent);transform:scaleX(0);transform-origin:right;
  transition:transform .4s var(--ease-out-expo);}
.nav a:hover{color:var(--text);}
.nav a:hover::after{transform:scaleX(1);transform-origin:left;}
.header-cta{padding:.8em 1.4em;}

/* ---------- 6. Hero ---------- */
.hero{position:relative;min-height:100svh;display:flex;align-items:center;
  overflow:hidden;background:var(--bg);}
.hero-bg,.hero-fx{position:absolute;inset:0;width:100%;height:100%;z-index:0;}
.hero-fx{z-index:1;}
.hero-vignette{position:absolute;inset:0;z-index:2;pointer-events:none;
  background:radial-gradient(120% 80% at 72% 38%,transparent 30%,rgba(10,10,11,.55) 78%,var(--bg) 100%),
             linear-gradient(180deg,rgba(10,10,11,.5),transparent 22%,transparent 72%,var(--bg));}
.hero-inner{position:relative;z-index:3;max-width:var(--maxw);width:100%;
  margin-inline:auto;padding:7rem var(--gutter) 5rem;}
.hero-eyebrow{margin-bottom:1.6rem;}
.hero-title{font-family:var(--font-mincho);font-weight:600;font-size:var(--display);
  line-height:1.04;letter-spacing:.01em;margin-bottom:1.8rem;max-width:13em;}
.hero-title .mask{display:block;overflow:hidden;padding-block:.04em;}
.hero-title .line{display:block;will-change:transform;}
html.js .hero-title .line{transform:translateY(118%);
  transition:transform 1.05s var(--ease-out-expo);transition-delay:calc(var(--li,0)*130ms + 150ms);}
html.js .hero.is-ready .hero-title .line{transform:none;}
.hero-title em{color:var(--accent-bright);font-style:normal;text-shadow:0 0 24px rgba(200,169,106,.18);}
.hero-lead{font-size:var(--step-0);color:var(--muted);max-width:34em;margin-bottom:2.2rem;line-height:1.95;}
.hero-actions{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1rem;}
.hero-micro{font-size:.8rem;color:var(--faint);margin-bottom:2.4rem;}
.hero-chips{display:flex;flex-wrap:wrap;gap:.6rem;}
.hero-chips li{font-size:.76rem;letter-spacing:.04em;color:var(--muted);
  border:1px solid var(--hairline);border-radius:999px;padding:.5em 1em;
  background:rgba(255,255,255,.02);}
.hero-scrollhint{position:absolute;left:50%;bottom:1.8rem;z-index:3;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:.6rem;
  font-size:.62rem;letter-spacing:.3em;color:var(--faint);}
.hero-scrollhint .dot{width:1px;height:42px;background:linear-gradient(var(--accent),transparent);position:relative;overflow:hidden;}
.hero-scrollhint .dot::after{content:"";position:absolute;top:0;left:0;width:100%;height:14px;
  background:var(--accent-bright);animation:scrollDot 2.1s var(--ease-standard) infinite;}
@keyframes scrollDot{0%{transform:translateY(-14px)}60%,100%{transform:translateY(42px)}}

/* ---------- 7. Reveal ---------- */
.reveal,[data-reveal]{opacity:0;transform:translateY(26px);filter:blur(5px);
  transition:opacity .85s var(--ease-out-expo),transform .85s var(--ease-out-expo),filter .85s var(--ease-out-expo);
  transition-delay:calc(var(--i,0)*70ms);}
.reveal.is-visible,[data-reveal].is-visible{opacity:1;transform:none;filter:none;}
@media (prefers-reduced-motion:reduce){
  .reveal,[data-reveal]{opacity:1;transform:none;filter:none;transition:none;}
  .hero-title .line{transform:none!important;}
}

/* ---------- 8. お悩み ---------- */
.concerns{background:linear-gradient(180deg,var(--bg),var(--bg-2));}
.concern-list{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:var(--hairline);border:1px solid var(--hairline);border-radius:var(--radius);
  overflow:hidden;margin:2.4rem 0;}
.concern-list li{background:var(--surface);padding:1.8rem 1.6rem;font-size:1.02rem;
  display:flex;align-items:center;gap:1rem;line-height:1.6;}
.concern-no{font-family:var(--font-display);color:var(--accent);font-size:1.4rem;
  font-style:italic;opacity:.7;flex-shrink:0;}
.concern-lead{max-width:52em;color:var(--muted);font-size:1.02rem;}

/* ---------- 9. cards (shared) ---------- */
.card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-lg);
  box-shadow:var(--edge),var(--shadow-card);padding:2.2rem 2rem;
  transition:transform .4s var(--ease-out-expo),box-shadow .4s var(--ease-out-expo),border-color .4s;}
.card:hover{transform:translateY(-6px);box-shadow:var(--edge),var(--shadow-hover);border-color:var(--hairline-2);}
@media (prefers-reduced-motion:reduce){.card,.card:hover{transform:none;transition:none;}}

/* ---------- 10. 選ばれる理由 ---------- */
.reason-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;margin-top:2.6rem;}
.reason-card h3{margin:1.2rem 0 .8rem;}
.reason-card p{color:var(--muted);font-size:.96rem;}
.reason-icon{display:inline-flex;width:52px;height:52px;align-items:center;justify-content:center;
  border-radius:50%;background:var(--accent-soft);border:1px solid var(--accent-line);}
.reason-icon svg{width:26px;height:26px;fill:none;stroke:var(--accent);stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round;}

/* ---------- 11. オーバーホール（スクロール連動） ---------- */
.overhaul{position:relative;height:340vh;background:var(--bg-2);}
.overhaul-sticky{position:sticky;top:0;height:100vh;height:100svh;display:flex;align-items:center;overflow:hidden;}
.overhaul-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,5vw,5rem);align-items:center;width:100%;}
.overhaul-stage{position:relative;aspect-ratio:1/1;width:100%;max-width:540px;margin-inline:auto;}
#overhaulCanvas{width:100%;height:100%;}
.seq-stagecap{position:absolute;left:0;bottom:6%;display:flex;align-items:baseline;gap:.7rem;
  font-family:var(--font-mincho);}
.seq-stagecap-no{font-family:var(--font-display);font-style:italic;color:var(--accent);font-size:1.1rem;opacity:.8;}
.seq-stagecap-label{font-size:1.5rem;letter-spacing:.1em;color:var(--text);}
.seq-progress{position:absolute;right:0;top:0;bottom:0;width:2px;background:var(--hairline);border-radius:2px;}
.seq-progress span{position:absolute;top:0;left:0;width:100%;height:0;background:linear-gradient(var(--accent-bright),var(--accent));border-radius:2px;}
.seq-title{font-family:var(--font-mincho);font-weight:600;font-size:var(--step-2);line-height:1.3;letter-spacing:.02em;margin-bottom:1.4rem;}
.seq-lead{color:var(--muted);margin-bottom:2rem;}
.seq-steps{display:flex;flex-direction:column;gap:.2rem;counter-reset:step;}
.seq-steps li{display:grid;grid-template-columns:auto 1fr;gap:.2rem 1.1rem;padding:.85rem 0;
  border-top:1px solid var(--hairline);opacity:.58;transition:opacity .4s var(--ease-standard);}
.seq-steps li::before{counter-increment:step;content:counter(step,decimal-leading-zero);
  font-family:var(--font-display);font-style:italic;color:var(--accent);font-size:.95rem;
  grid-row:span 2;align-self:start;padding-top:.1em;opacity:.7;}
.seq-steps li strong{font-family:var(--font-mincho);font-weight:600;font-size:1.05rem;letter-spacing:.05em;}
.seq-steps li span{color:var(--muted);font-size:.88rem;line-height:1.6;}
.seq-steps li.is-active{opacity:1;}
.seq-steps li.is-active::before{opacity:1;}
.seq-note{margin-top:1.8rem;color:var(--muted);font-size:.9rem;}
.seq-note strong{color:var(--accent-bright);}

/* ---------- 12. テンプの鼓動 ---------- */
.heartbeat{background:radial-gradient(120% 90% at 20% 30%,rgba(200,169,106,.05),transparent 55%),var(--bg);}
.heartbeat-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(2rem,5vw,5rem);align-items:center;}
.heartbeat-visual{position:relative;aspect-ratio:1/1;max-width:420px;margin-inline:auto;width:100%;}
#balanceCanvas{width:100%;height:100%;}
.beat-readout{position:absolute;left:50%;bottom:-.5rem;transform:translateX(-50%);text-align:center;
  display:flex;flex-direction:column;align-items:center;}
.beat-num{font-family:var(--font-display);font-size:clamp(1.8rem,4vw,2.6rem);color:var(--accent-bright);
  letter-spacing:.02em;text-shadow:var(--glow-accent);}
.beat-unit{font-size:.72rem;letter-spacing:.3em;color:var(--faint);margin-top:.3em;}
.heartbeat-copy p{color:var(--muted);margin-bottom:1.2rem;}
.glossary{margin-top:2rem;display:grid;gap:.1rem;border-top:1px solid var(--hairline);}
.glossary > div{display:grid;grid-template-columns:11rem 1fr;gap:1rem;padding:.95rem 0;border-bottom:1px solid var(--hairline);}
.glossary dt{font-family:var(--font-mincho);color:var(--text);font-weight:600;letter-spacing:.04em;}
.glossary dd{margin:0;color:var(--muted);font-size:.92rem;}

/* ---------- 13. 対応範囲 ---------- */
.scope-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem;margin-top:2.6rem;}
.scope-card h3{margin-bottom:.9rem;color:var(--accent-bright);}
.scope-card p{color:var(--muted);font-size:.92rem;}
.scope-note{margin-top:2rem;color:var(--faint);font-size:.86rem;}

/* ---------- 14. 郵送の安心 ---------- */
.mailing{background:linear-gradient(180deg,var(--bg),var(--bg-2));}
.mailing-flow{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem;margin:2.6rem 0 1.8rem;}
.mailing-flow li{display:flex;gap:1.1rem;align-items:flex-start;background:var(--surface);
  border:1px solid var(--hairline);border-radius:var(--radius);padding:1.6rem 1.5rem;}
.m-no{flex-shrink:0;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;
  background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--accent-bright);
  font-family:var(--font-display);font-style:italic;font-size:1.05rem;}
.mailing-flow strong{display:block;font-family:var(--font-mincho);font-size:1.02rem;letter-spacing:.04em;margin-bottom:.4rem;}
.mailing-flow p{color:var(--muted);font-size:.88rem;line-height:1.65;}
.mailing-note{color:var(--muted);margin-bottom:2rem;}
.mailing-cta,.price-cta{margin-top:.5rem;}

/* ---------- 15. 料金 ---------- */
.price-intro{color:var(--muted);max-width:48em;margin-bottom:2.4rem;}
.price-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem;}
.price-card{display:flex;flex-direction:column;gap:.4rem;text-align:left;}
.price-card h3{font-size:1.05rem;color:var(--text);}
.price-amt{font-family:var(--font-display);font-size:2rem;color:var(--accent);margin-top:.4rem;
  letter-spacing:-.01em;font-variant-numeric:tabular-nums;}
.price-amt .yen{font-size:1.1rem;margin-right:.1em;color:var(--muted);}
.price-amt .kara{font-size:1rem;color:var(--muted);margin-left:.1em;}
.price-amt--quote{font-family:var(--font-mincho);font-size:1.3rem;}
.price-card--quote{background:linear-gradient(160deg,var(--raised),var(--surface));border-color:var(--accent-line);}
.price-desc{color:var(--faint);font-size:.84rem;}
.price-fineprint{margin:2.4rem 0;color:var(--faint);font-size:.84rem;max-width:54em;line-height:1.8;}

/* ---------- 16. 事例 ---------- */
.works-note{color:var(--faint);font-size:.86rem;margin-bottom:2rem;}
.works-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;}
.work-card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-lg);
  overflow:hidden;box-shadow:var(--edge),var(--shadow-card);}
.work-figure{position:relative;aspect-ratio:4/3;background:#0c0d11;overflow:hidden;}
.work-figure canvas{width:100%;height:100%;}
.work-ba{position:absolute;top:.8rem;left:.8rem;font-size:.66rem;letter-spacing:.18em;
  background:rgba(0,0,0,.55);border:1px solid var(--hairline-2);color:var(--accent-bright);
  padding:.35em .8em;border-radius:999px;}
.work-ba.after{left:auto;right:.8rem;color:var(--text);}
.work-divider{position:absolute;top:0;bottom:0;left:50%;width:1px;background:var(--accent-line);}
.work-body{padding:1.4rem 1.5rem 1.7rem;}
.work-body h3{font-size:1.02rem;margin-bottom:.5rem;}
.work-sym{color:var(--muted);font-size:.86rem;line-height:1.6;}
.work-sym b{color:var(--accent-bright);font-weight:600;}

/* ---------- 17. 声 ---------- */
.voice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;}
.voice-card{display:flex;flex-direction:column;gap:1.2rem;}
.voice-card blockquote{margin:0;font-family:var(--font-mincho);font-size:1.05rem;line-height:1.9;
  letter-spacing:.03em;color:var(--text);}
.voice-card blockquote::before{content:"";display:block;width:30px;height:2px;background:var(--accent-line);margin-bottom:1rem;}
.voice-card figcaption{color:var(--muted);font-size:.84rem;display:flex;align-items:center;gap:.7rem;}
.voice-sample{font-size:.58rem;letter-spacing:.18em;color:var(--faint);border:1px solid var(--hairline);
  padding:.25em .6em;border-radius:4px;}

/* ---------- 18. 職人 ---------- */
.artisan{background:linear-gradient(180deg,var(--bg-2),var(--bg));}
.artisan-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(2rem,5vw,5rem);align-items:center;}
.artisan-portrait{position:relative;aspect-ratio:4/5;max-width:360px;width:100%;border-radius:var(--radius-lg);
  overflow:hidden;border:1px solid var(--hairline);box-shadow:var(--shadow-card);}
#artisanCanvas{width:100%;height:100%;}
.artisan-copy p{color:var(--muted);margin-bottom:1.2rem;}
.artisan-placeholder{font-size:.82rem;color:var(--faint);}

/* ---------- 19. FAQ ---------- */
.faq-list{display:flex;flex-direction:column;gap:.8rem;margin-top:2.4rem;max-width:60em;}
.faq-item{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius);overflow:hidden;}
.faq-item summary{list-style:none;cursor:pointer;padding:1.35rem 1.6rem;display:flex;
  align-items:center;justify-content:space-between;gap:1rem;
  font-family:var(--font-mincho);font-size:1.02rem;letter-spacing:.03em;}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-mark{position:relative;width:16px;height:16px;flex-shrink:0;}
.faq-mark::before,.faq-mark::after{content:"";position:absolute;background:var(--accent);
  transition:transform .35s var(--ease-out-expo);}
.faq-mark::before{top:50%;left:0;width:100%;height:1.5px;transform:translateY(-50%);}
.faq-mark::after{left:50%;top:0;width:1.5px;height:100%;transform:translateX(-50%);}
.faq-item[open] .faq-mark::after{transform:translateX(-50%) scaleY(0);}
.faq-body{padding:0 1.6rem 1.5rem;}
.faq-body p{color:var(--muted);font-size:.94rem;}
.faq-item[open] summary{color:var(--accent-bright);}

/* ---------- 20. contact ---------- */
.contact{background:radial-gradient(120% 90% at 80% 10%,rgba(200,169,106,.06),transparent 50%),var(--bg-2);}
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,5rem);align-items:start;}
.contact-copy p{color:var(--muted);margin-bottom:1.6rem;}
.contact-points{display:flex;flex-direction:column;gap:.8rem;margin-bottom:2rem;}
.contact-points li{position:relative;padding-left:1.8rem;color:var(--text);font-size:.96rem;}
.contact-points li::before{content:"";position:absolute;left:0;top:.5em;width:9px;height:9px;
  border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent);}
.contact-direct{display:flex;flex-direction:column;gap:.2rem;}
.contact-tel{font-family:var(--font-display);font-size:1.3rem;color:var(--accent);letter-spacing:.02em;}
.contact-hours{font-size:.78rem;color:var(--faint);}
.contact-form{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-lg);
  padding:2.2rem;box-shadow:var(--edge),var(--shadow-card);}
.field{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.2rem;}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
.field label{font-size:.84rem;color:var(--muted);letter-spacing:.04em;}
.field input,.field select,.field textarea{font-family:inherit;font-size:16px;color:var(--text);
  background:var(--bg);border:1px solid var(--hairline-2);border-radius:10px;padding:.85em 1em;
  min-height:48px;transition:border-color .25s,box-shadow .25s;}
.field textarea{min-height:auto;resize:vertical;line-height:1.7;}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);
  box-shadow:0 0 0 3px var(--accent-soft);}
.field-hint{font-size:.78rem;color:var(--faint);margin:-.4rem 0 1.2rem;}
.form-note{font-size:.82rem;color:var(--muted);margin-top:1rem;text-align:center;line-height:1.7;}
.form-demo{color:var(--faint);}
.form-note.is-sent{color:var(--accent-bright);}

/* ---------- 21. footer ---------- */
.site-footer{background:var(--bg);border-top:1px solid var(--hairline);padding-top:4rem;}
.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:2.5rem;padding-bottom:3rem;}
.footer-brand .brand-text{margin-bottom:1.2rem;}
.footer-brand .brand-text strong{font-family:var(--font-mincho);font-size:1.15rem;letter-spacing:.06em;}
.footer-brand .brand-text small{font-size:.6rem;letter-spacing:.28em;color:var(--faint);}
.footer-note{color:var(--muted);font-size:.86rem;line-height:1.8;}
.footer-nav{display:flex;flex-direction:column;gap:.8rem;font-size:.88rem;}
.footer-navhead{color:var(--accent);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;margin-bottom:.4rem;}
.footer-nav a{color:var(--muted);transition:color .25s;}
.footer-nav a:hover{color:var(--text);}
.footer-base{border-top:1px solid var(--hairline);padding:1.6rem var(--gutter);text-align:center;}
.footer-base small{color:var(--faint);font-size:.76rem;line-height:1.7;}

/* ---------- 22. mobile sticky CTA ---------- */
.mobile-cta{position:fixed;left:0;right:0;bottom:0;z-index:900;display:none;
  gap:.6rem;padding:.7rem .8rem calc(.7rem + env(safe-area-inset-bottom));
  background:rgba(10,10,11,.86);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-top:1px solid var(--hairline);transform:translateY(120%);transition:transform .5s var(--ease-out-expo);}
.mobile-cta.is-shown{transform:translateY(0);}
.mobile-cta a{flex:1;display:flex;align-items:center;justify-content:center;min-height:52px;
  border-radius:12px;font-weight:700;font-size:.9rem;letter-spacing:.04em;}
.mobile-cta-tel{border:1px solid var(--hairline-2);color:var(--text);flex:0 0 38%;}
.mobile-cta-main{background:linear-gradient(135deg,var(--accent-bright),var(--accent));color:var(--accent-ink);}

/* ---------- review-round-1 additions ---------- */
.section-cta{margin-top:3rem;text-align:center;}
.seq-cta{margin-top:1.8rem;align-self:flex-start;}
.proof-strip{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.1rem;margin:0 0 2.8rem;
  padding:1.05rem 1.4rem;border-left:2px solid var(--accent-line);background:var(--accent-soft);
  border-radius:0 10px 10px 0;max-width:48em;}
.proof-quote{font-family:var(--font-mincho);font-size:1.04rem;letter-spacing:.03em;color:var(--text);}
.proof-attr{font-size:.78rem;color:var(--muted);display:inline-flex;align-items:center;gap:.6rem;}
.form-privacy{font-size:.78rem;color:var(--muted);text-align:center;margin-top:.9rem;line-height:1.7;}
/* section rhythm — alternate surfaces to break monotony */
.scope{background:var(--bg-2);}
.works{background:linear-gradient(180deg,var(--bg-2),var(--bg));}
.voice{background:var(--surface);}
.faq{background:var(--bg-2);}

/* =====================================================================
   23. Responsive
   ===================================================================== */
@media (max-width:980px){
  .nav{display:none;}
  .reason-grid,.scope-grid,.mailing-flow,.price-grid,.works-grid,.voice-grid{grid-template-columns:repeat(2,1fr);}
  .overhaul-grid,.heartbeat-grid,.artisan-grid,.contact-grid{grid-template-columns:1fr;}
  .overhaul{height:auto;}
  .overhaul-sticky{position:static;height:auto;padding-block:var(--section-pad);}
  .overhaul-stage{max-width:360px;min-height:300px;margin-bottom:2.5rem;}
  .heartbeat-visual,.artisan-portrait{margin-bottom:2rem;}
  .header-cta{display:none;}
  .mobile-cta{display:flex;}
  body{padding-bottom:calc(66px + env(safe-area-inset-bottom));}
  /* protective scrim so hero copy always clears AA over the gear cluster */
  .hero-vignette{background:
    linear-gradient(90deg, var(--bg) 0%, rgba(10,10,11,.88) 46%, rgba(10,10,11,.45) 72%, transparent 100%),
    linear-gradient(180deg, rgba(10,10,11,.55), transparent 26%, transparent 58%, var(--bg));}
}
@media (max-width:560px){
  .concern-list{grid-template-columns:1fr;}
  .scope-grid,.price-grid,.works-grid,.voice-grid,.mailing-flow{grid-template-columns:1fr;}
  .field-row{grid-template-columns:1fr;}
  .footer-grid{grid-template-columns:1fr;gap:2rem;}
  .glossary > div{grid-template-columns:1fr;gap:.2rem;}
  .hero-inner{padding-top:6rem;}
  .contact-form{padding:1.6rem;}
}

/* =====================================================================
   24. 実写ハイブリッド additions（photo bands / atelier photos / news）
   ===================================================================== */
/* full-bleed photo band — sepia/gold treatment to sit inside the dark world */
.photo-band{position:relative;margin:0;overflow:hidden;background:var(--bg);}
.photo-band img{width:100%;height:clamp(340px,56vh,600px);object-fit:cover;
  filter:sepia(.24) saturate(.92) contrast(1.03) brightness(.9);}
.photo-band::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:
    linear-gradient(180deg,var(--bg) 0%,rgba(10,10,11,.3) 14%,rgba(10,10,11,0) 42%,rgba(10,10,11,.55) 82%,var(--bg) 100%),
    radial-gradient(120% 90% at 72% 36%,rgba(200,169,106,.14),rgba(120,85,30,.07) 52%,transparent 76%);}
.photo-band figcaption{position:absolute;left:0;right:0;bottom:0;z-index:2;
  max-width:var(--maxw);margin-inline:auto;padding:0 var(--gutter) clamp(1.6rem,4vh,2.6rem);
  display:flex;flex-direction:column;gap:.35rem;}
.photo-band-cap{font-family:var(--font-mincho);font-size:clamp(1.15rem,1rem+1vw,1.6rem);
  letter-spacing:.04em;color:var(--text);text-shadow:0 1px 14px rgba(0,0,0,.8);}
.photo-band-cap::before{content:"";display:block;width:30px;height:2px;background:var(--accent-line);margin-bottom:.7rem;}
.photo-band-sub{font-size:.86rem;color:var(--muted);letter-spacing:.03em;text-shadow:0 1px 10px rgba(0,0,0,.85);}
.photo-band--train img{object-position:center 42%;}

/* atelier photo pair（職人セクション内） */
.atelier-photos{display:grid;grid-template-columns:1fr 1fr;gap:1.4rem;margin-top:3.2rem;}
.atelier-photos figure{margin:0;background:var(--surface);border:1px solid var(--hairline);
  border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--edge),var(--shadow-card);}
.atelier-photos img{width:100%;aspect-ratio:3/2;object-fit:cover;
  filter:sepia(.22) saturate(.92) contrast(1.02) brightness(.94);}
.atelier-photos figcaption{padding:1.1rem 1.4rem 1.25rem;font-size:.88rem;color:var(--muted);
  line-height:1.7;letter-spacing:.03em;border-top:1px solid var(--hairline);}
.photo-note{margin-top:1.3rem;font-size:.78rem;color:var(--faint);}

/* お知らせ */
.news{background:var(--bg);}
.news-list{margin-top:2.2rem;max-width:60em;border-bottom:1px solid var(--hairline);}
.news-list li{display:grid;grid-template-columns:auto auto 1fr;gap:.4rem 1.3rem;align-items:baseline;
  padding:1.15rem 0;border-top:1px solid var(--hairline);}
.news-list time{font-family:var(--font-display);font-style:italic;color:var(--accent);
  font-size:.92rem;letter-spacing:.04em;white-space:nowrap;font-variant-numeric:tabular-nums;}
.news-tag{font-size:.66rem;letter-spacing:.16em;color:var(--muted);border:1px solid var(--hairline-2);
  border-radius:4px;padding:.25em .7em;white-space:nowrap;}
.news-list p{color:var(--muted);font-size:.92rem;line-height:1.75;max-width:none;}

@media (max-width:980px){
  .photo-band img{height:clamp(280px,44vh,460px);}
}
@media (max-width:560px){
  .atelier-photos{grid-template-columns:1fr;}
  .news-list li{grid-template-columns:auto 1fr;}
  .news-list p{grid-column:1 / -1;}
}

/* reduce-motion: kill keyframe loops */
@media (prefers-reduced-motion:reduce){
  .hero-scrollhint .dot::after{animation:none;display:none;}
  *{scroll-behavior:auto!important;}
}
