/* single-works 専用CSS（旧: テンプレート<head>のインライン<style>・2026-07-30に外部化） */
  html,body{margin:0;padding:0;}
  :root{
    --paper:#ffffff; --paper-2:#F5F4F1; --ink:#242220; --ink-soft:#514d47;
    --stone:#8f8b82; --line:#E7E4DE; --dark:#26241F; --dark-2:#1E1C18;
    --brass:#A89878; --paper-on-dark:#EDE8DF;
    --serif-jp:"Zen Old Mincho","Hiragino Mincho ProN","Yu Mincho",serif; /* フォント統一（オーナー指示 2026-07-28） */
    --serif-en:"Cormorant Garamond","Zen Old Mincho","Hiragino Mincho ProN","Yu Mincho",serif;
    --sans:"Cormorant Garamond","Zen Old Mincho","Hiragino Mincho ProN","Yu Mincho",serif; /* 旧: システムゴシック。フォント統一（オーナー指示 2026-07-28） */
    --gutter:max(clamp(24px,5vw,64px),calc((100vw - 1472px)/2)); /* 大画面ではガターが伸び、コンテンツを中央1472px枠に整列（画像ブリードは全幅維持） */
  }
  *{box-sizing:border-box;}
  .sg{
    color:var(--ink);font-family:var(--serif-jp);line-height:1.9;-webkit-font-smoothing:antialiased;overflow-x:clip;position:relative;
    background:
      radial-gradient(1100px 720px at 88% -4%, rgba(224,216,201,.42), transparent 64%),
      radial-gradient(900px 680px at -6% 34%, rgba(231,229,224,.32), transparent 62%),
      var(--paper);
    background-attachment:fixed,fixed,scroll;
  }
  .wrap{max-width:1200px;margin:0 auto;padding:0 clamp(24px,5vw,64px);}
  .lbl{font-family:var(--sans);font-size:10px;letter-spacing:.42em;text-transform:uppercase;color:var(--stone);font-weight:500;}
  .en-title{font-family:var(--serif-en);font-style:normal;font-weight:400;color:var(--ink);letter-spacing:.01em;}

  .sec{padding:clamp(140px,19vw,280px) 0;}
  .rule{display:block;width:46px;height:1px;background:var(--brass);margin-bottom:clamp(28px,4vw,48px);}
  .ghost-en{position:absolute;z-index:0;font-family:var(--serif-en);font-style:normal;line-height:.8;color:rgba(36,34,32,.045);pointer-events:none;white-space:nowrap;user-select:none;}

  /* Overview（元: fp-single-intro） */
  .wd-ov{position:relative;}
  .wd-ov .lbl{display:block;}
  .wd-ov h2{margin:clamp(36px,5vw,60px) 0 0;font-weight:400;font-size:clamp(24px,3.2vw,40px);letter-spacing:.16em;line-height:1.9;}
  .wd-ov p{max-width:38em;margin:clamp(32px,4vw,52px) 0 0;font-size:15px;line-height:2.4;letter-spacing:.08em;color:var(--ink-soft);}

  /* 画像ステートメント（元: fp-image-statement）= 全幅写真帯＋左下コピー */
  .wd-stmt{position:relative;overflow:hidden;color:var(--paper-on-dark);}
  .wd-stmt .bl-ph{position:relative;height:clamp(480px,86vh,820px);background-size:cover;filter:saturate(.86) contrast(1.02);}
  .wd-stmt .st-scrim{position:absolute;inset:0;z-index:2;background:linear-gradient(180deg,rgba(15,14,11,.16) 34%,rgba(15,14,11,.6));pointer-events:none;}
  .wd-stmt .st-copy{position:absolute;left:var(--gutter);right:var(--gutter);bottom:clamp(40px,7vh,80px);z-index:3;}
  .wd-stmt .st-copy .lbl{color:rgba(237,232,223,.62);}
  .wd-stmt .st-copy h2{margin:clamp(20px,2.6vw,30px) 0 0;font-weight:400;font-size:clamp(24px,3.2vw,40px);letter-spacing:.16em;line-height:1.9;text-shadow:0 12px 44px rgba(0,0,0,.5);}
  .wd-stmt .st-copy p{max-width:34em;margin:clamp(18px,2.4vw,26px) 0 0;font-size:clamp(13.5px,1.2vw,15px);line-height:2.2;letter-spacing:.08em;color:rgba(237,232,223,.85);}

  /* 概要表(.wd-spec)はマークアップごと削除したためCSSも撤去（2026-07-30） */

  /* ギャラリー（元: fp-single-gallery＝全枚数）: 左右で高さをずらした2カラム（works一覧と同じ型）
     写真をもっと大きく（オーナー指示 2026-07-28）:
     版面をワイド枠(1472px)へ・カラム間を圧縮・84%/88%の縮小を撤廃。
     段違いの律動は右カラムの開始オフセットとアスペクト比の差で維持する */
  .wd-gal{padding:clamp(140px,19vw,280px) 0 0;}
  .wd-gal .wrap{max-width:1472px;}
  .gal-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:clamp(40px,5vw,84px);}
  .gal-col{display:flex;flex-direction:column;gap:clamp(110px,14vw,200px);}
  .gal-col.r{margin-top:clamp(180px,24vw,340px);}
  .gph{margin:0;}
  .gph .ph{position:relative;background:linear-gradient(135deg,#8f9184,#54564c);background-size:cover;background-position:center;box-shadow:0 22px 55px -30px rgba(38,36,31,.45);filter:saturate(.86) contrast(1.02);}
  .gal-col.l .gph .ph{aspect-ratio:4/3;}
  .gal-col.r .gph .ph{aspect-ratio:3/2;}

  /* 本文（元: fp-single-body・中央の狭い版面） */
  .wd-body{max-width:38em;margin:clamp(90px,12vw,160px) auto 0;font-size:15px;line-height:2.4;letter-spacing:.08em;color:var(--ink-soft);}
  .wd-body h2,.wd-body h3{font-weight:400;letter-spacing:.16em;color:var(--ink);line-height:1.9;}
  .wd-body h2{font-size:clamp(19px,2vw,24px);margin:0 0 1.4em;}
  .wd-body h3{font-size:clamp(16px,1.6vw,19px);margin:2.2em 0 1em;}
  .wd-body p{margin:0 0 1.8em;}
  .wd-body img{max-width:100%;height:auto;}

  /* 近い事例（元: fp-single-related）= 段違い3カラム */
  .wd-rel-head{position:relative;}
  .wd-rel-head .lbl{display:block;}
  .wd-rel-head h2{margin:clamp(36px,5vw,60px) 0 0;font-weight:400;font-size:clamp(24px,3.2vw,40px);letter-spacing:.16em;}
  .wd-rel{display:grid;grid-template-columns:repeat(3,1fr);column-gap:clamp(36px,5vw,80px);margin-top:clamp(80px,10vw,140px);}
  .wd-rel .rw:nth-child(2){margin-top:clamp(70px,9vw,130px);}
  .rw{text-decoration:none;color:var(--ink);display:block;}
  .rw .ph{position:relative;aspect-ratio:4/3;background:linear-gradient(135deg,#8f9184,#54564c);background-size:cover;background-position:center;box-shadow:0 22px 55px -30px rgba(38,36,31,.45);transition:opacity .4s;filter:saturate(.86) contrast(1.02);}
  .rw:hover .ph{opacity:.88;}
  .rw .cat{display:block;margin-top:clamp(18px,2.4vw,26px);font-family:var(--serif-en);font-style:normal;font-size:12.5px;color:var(--brass);letter-spacing:.14em;}
  .rw h3{margin:8px 0 0;font-weight:400;font-size:clamp(16px,1.6vw,19px);letter-spacing:.14em;line-height:1.7;}

  .wd-back{max-width:880px;margin:clamp(70px,9vw,120px) 0 0;}
  .wd-back a{font-family:var(--serif-en);font-style:normal;font-size:15px;color:var(--ink);text-decoration:none;border-bottom:1px solid rgba(36,34,32,.4);padding-bottom:8px;transition:opacity .3s;}
  .wd-back a:hover{opacity:.6;}

  /* contact CTA */
  /* contact CTA — 非対称レイアウト（大英字＋縦書き和文＋ブラス罫線）で全ページ統一（オーナー指示 2026-07-21） */
  .sg-contact{padding:clamp(120px,17vw,220px) 0;}
  .sg-contact .c-inner{display:flex;flex-direction:row-reverse;align-items:center;justify-content:center;gap:clamp(44px,7vw,120px);max-width:1080px;margin:0 auto;padding:0 clamp(24px,5vw,64px);}
  .sg-contact .c-lead{display:flex;flex-direction:column;align-items:flex-start;}
  .sg-contact .c-title{display:block;font-size:clamp(64px,11vw,150px);letter-spacing:.02em;line-height:.92;color:var(--ink);}
  .sg-contact .c-rule{display:block;width:clamp(48px,6vw,92px);height:1px;background:var(--brass);margin:clamp(26px,3.4vw,44px) 0;transform-origin:left;}
  .sg-contact .c-vmsg{writing-mode:vertical-rl;margin:0;font-family:var(--serif-jp);font-weight:400;font-size:clamp(16px,1.7vw,20px);letter-spacing:.2em;line-height:2.5;color:var(--ink-soft);}
  .sg-contact .contact-btn{display:inline-flex;align-items:center;gap:12px;padding:16px 44px;border:1px solid rgba(36,34,32,.32);color:var(--ink);font-family:var(--serif-en);font-style:normal;font-size:17px;letter-spacing:.04em;text-decoration:none;transition:background .35s,color .35s,border-color .35s;}
  .sg-contact .contact-btn .arw{font-style:normal;font-size:15px;}
  .sg-contact .contact-btn:hover{background:var(--dark);color:var(--paper-on-dark);border-color:var(--dark);}
  @media(max-width:860px){
    .sg-contact .c-inner{flex-direction:column;align-items:center;text-align:center;gap:clamp(30px,8vw,48px);}
    .sg-contact .c-lead{align-items:center;}
    .sg-contact .c-title{font-size:clamp(56px,18vw,92px);}
    .sg-contact .c-rule{margin:clamp(22px,6vw,32px) auto;}
    .sg-contact .c-vmsg{writing-mode:horizontal-tb;text-align:center;font-size:clamp(14px,4vw,17px);line-height:2.1;letter-spacing:.1em;}
  }

  /* footer */
  .sg-footer{background:var(--dark-2);color:rgba(237,232,223,.75);padding:clamp(70px,9vw,110px) 0 56px;}
  .foot-top{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap;align-items:flex-start;}
  .foot-logo .jp{font-family:var(--serif-jp);font-size:23px;letter-spacing:.16em;color:var(--paper-on-dark);}
  .foot-logo .en{font-family:var(--sans);font-size:10px;letter-spacing:.34em;color:rgba(237,232,223,.55);margin-top:8px;text-transform:uppercase;}
  .foot-addr{font-size:13px;letter-spacing:.08em;line-height:2.1;color:rgba(237,232,223,.6);margin-top:16px;}
  .foot-nav{display:flex;gap:28px;flex-wrap:wrap;}
  .foot-nav a{font-family:var(--serif-en);font-size:14px;color:rgba(237,232,223,.72);text-decoration:none;}
  .foot-nav a:hover{color:var(--paper-on-dark);}
  .foot-copy{margin-top:60px;font-family:var(--sans);font-size:10.5px;letter-spacing:.22em;color:rgba(237,232,223,.4);text-transform:uppercase;}

  @media(max-width:860px){
    .wd-stmt .bl-ph{height:clamp(380px,64vh,520px);}
    .gal-grid{grid-template-columns:1fr;}
    .gal-col{gap:clamp(70px,12vw,110px);}
    .gal-col.r{margin-top:clamp(70px,12vw,110px);}
    .gal-col.l .gph .ph,.gal-col.r .gph .ph{aspect-ratio:3/2;width:100%;margin-left:0;}
    .gal-col.l .gph:nth-child(even) .ph{width:100%;}
    .wd-rel{grid-template-columns:1fr;row-gap:clamp(60px,10vw,90px);}
    .wd-rel .rw:nth-child(2){margin-top:0;}
    /* ゴースト英字「Other Works」の見切れ対策（オーナー指示 2026-07-30）。
       旧 clamp(73px,20.8vw,117px) は最小値73pxが狭い画面で大きすぎ、
       320px幅で左に79pxはみ出していた。この文字列は5.14em幅（実測）なので
       画面幅 - ガター左右(48px) に収まる 16vw へ下げ、最小値も引き下げる */
    .ghost-en{font-size:clamp(44px,16vw,117px) !important;}
  }

  /* ---------- 表示アニメーション（archive-works.php と同一体系） ---------- */
  .m-page-veil{
    position:fixed;inset:0;z-index:9400;pointer-events:none;background:#fff;
    -webkit-mask-image:linear-gradient(135deg,transparent,transparent 30%,rgba(0,0,0,.08) 34%,rgba(0,0,0,.32) 38%,rgba(0,0,0,.5) 40%,rgba(0,0,0,.68) 42%,rgba(0,0,0,.92) 46%,#000 50%,#000);
    mask-image:linear-gradient(135deg,transparent,transparent 30%,rgba(0,0,0,.08) 34%,rgba(0,0,0,.32) 38%,rgba(0,0,0,.5) 40%,rgba(0,0,0,.68) 42%,rgba(0,0,0,.92) 46%,#000 50%,#000);
    -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
    -webkit-mask-size:220% 220%;mask-size:220% 220%;
    animation:m-page-veil-out 1.5s cubic-bezier(.645,.045,.355,1) .1s both 1;
  }
  @keyframes m-page-veil-out{
    from{opacity:1;-webkit-mask-position:100% 100%;mask-position:100% 100%;}
    82%{opacity:1;}
    to{opacity:0;-webkit-mask-position:0% 0%;mask-position:0% 0%;}
  }
  @media (prefers-reduced-motion:reduce){.m-page-veil{display:none;}}

  @media (prefers-reduced-motion:no-preference){
    html.m-on .m-group:not(.is-visible) .m-reveal,
    html.m-on .m-group:not(.is-visible) .m-reveal-h{opacity:0;}
    html.m-on .m-group.is-visible .m-reveal{animation:m-blur-in 1.6s cubic-bezier(.165,.84,.44,1) backwards;animation-delay:var(--d,0s);}
    html.m-on .m-group.is-visible .m-reveal-h{
      animation:m-blur-in 1.6s cubic-bezier(.165,.84,.44,1) backwards,
                m-ls-in 2.6s cubic-bezier(.22,.61,.36,1) backwards;
      animation-delay:var(--d,0s);
    }
    @keyframes m-blur-in{from{opacity:0;filter:blur(14px);}}
    @keyframes m-ls-in{from{letter-spacing:.24em;}}
    /* 画像リビールは「外枠固定・内側だけ動かす」本家構造に準拠。
       background-position は inherit（ステートメント帯の center 52% を内層へ引き継ぐ） */
    html.m-on .m-group .m-reveal-img{position:relative;background-size:0 0;overflow:hidden;}
    html.m-on .m-group .m-reveal-img::before{
      content:"";position:absolute;inset:0;
      background-image:inherit;background-size:cover;background-position:inherit;
      -webkit-mask-image:linear-gradient(-30deg,transparent,transparent 40%,rgba(0,0,0,.02) 42%,rgba(0,0,0,.08) 44%,rgba(0,0,0,.18) 46%,rgba(0,0,0,.32) 48%,rgba(0,0,0,.5) 50%,rgba(0,0,0,.68) 52%,rgba(0,0,0,.82) 54%,rgba(0,0,0,.92) 56%,rgba(0,0,0,.98) 58%,#000 60%,#000);
      mask-image:linear-gradient(-30deg,transparent,transparent 40%,rgba(0,0,0,.02) 42%,rgba(0,0,0,.08) 44%,rgba(0,0,0,.18) 46%,rgba(0,0,0,.32) 48%,rgba(0,0,0,.5) 50%,rgba(0,0,0,.68) 52%,rgba(0,0,0,.82) 54%,rgba(0,0,0,.92) 56%,rgba(0,0,0,.98) 58%,#000 60%,#000);
      -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
      -webkit-mask-size:100% max(300%,100vh);mask-size:100% max(300%,100vh);
      -webkit-mask-position:center 0;mask-position:center 0;
      will-change:mask-position,transform;transform:translateZ(0);
    }
    html.m-on .m-group [data-plx].m-reveal-img::before{top:-9%;bottom:-9%;translate:0 var(--py,0);}
    html.m-on .m-group:not(.is-visible) .m-reveal-img::before{-webkit-mask-position:center 100%;mask-position:center 100%;scale:1.075;}
    html.m-on .m-group.is-visible .m-reveal-img::before{
      animation:m-img-wipe 1.4s linear backwards,m-img-settle 1.4s cubic-bezier(.165,.84,.44,1) backwards;
      animation-delay:var(--d,0s);
    }
    @keyframes m-img-wipe{from{-webkit-mask-position:center 100%;mask-position:center 100%;}}
    @keyframes m-img-settle{from{scale:1.075;}}
  }

/* --- スマホ視差（CSS scroll-driven・2026-08-07） ----------------------
   PCの sg-scrollfx（JSが--pyを書き込む）はタッチ端末では起動しないため
   （コンポジタ先行スクロールでJS駆動は原理的にカクつく）、リビール画像の
   内層をスクロール連動アニメーションで縦に流す。
   ・wipe/settle（リビール）と drift（視差）は同じ animation プロパティに
     同居させる（別ルールに分けるとカスケードで片方が消える）
   ・drift の duration は auto 必須（省略は 0s 扱いでタイムラインに乗らない）
   ・overflow:hidden はスクロールコンテナ扱いになり view() の基準を奪うため
     対応環境では clip に切り替える（見た目同一） */
@supports (animation-timeline: view()) {
  @media (pointer: coarse) {
    html.m-on .m-group .m-reveal-img{overflow:hidden;overflow:clip;}
    html.m-on .m-group .m-reveal-img::before{top:-14%;bottom:-14%;}
    html.m-on .m-group.is-visible .m-reveal-img::before{
      animation:m-img-wipe 1.4s linear backwards,m-img-settle 1.4s cubic-bezier(.165,.84,.44,1) backwards,sg-mplx-drift auto linear both;
      animation-delay:var(--d,0s),var(--d,0s),0s;
      animation-timeline:auto,auto,view();
    }
  }
}
@keyframes sg-mplx-drift{from{translate:0 6%;}to{translate:0 -6%;}}
