/* ================================================================
   kantan — Design System v2
   「網羅の美学」: 和のエディトリアル × システムの証明
   Type: Shippori Mincho(明朝ディスプレイ) / Zen Kaku Gothic New(本文)
         / Space Grotesk(索引・数字・欧文ラベル)
   Palette: 生成り #F6F3EB / 墨 #141414 / 朱 #C73E3A
   ================================================================ */
:root {
  --paper: #f6f3eb;
  --ink: #141414;
  --vermilion: #c73e3a;
  --hairline: rgba(20, 20, 20, .16);
  --serif: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  --gothic: "Zen Kaku Gothic New", "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
  --grotesk: "Space Grotesk", "Helvetica Neue", sans-serif;
  --ease: cubic-bezier(.22, 1, .36, 1);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { font-family: var(--gothic); color: var(--ink); background: var(--paper); line-height: 1.9; -webkit-font-smoothing: antialiased; }
img { max-width: 100%; display: block; }
a { color: inherit; }
::selection { background: var(--vermilion); color: #fff; }

/* 紙の質感(粒子) */
.grain::after { content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 999; opacity: .05; mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E"); }

/* スクロールリビール */
.rv { opacity: 0; transform: translateY(26px); transition: opacity .9s var(--ease), transform .9s var(--ease); }
.rv.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .rv { opacity: 1; transform: none; transition: none; }
  .mq-track { animation: none !important; }
}
/* 自動化ブラウザ(スクリーンショット/クローラー)では演出を省き即描画 */
.noanim .rv, .noanim .hero-en, .noanim .hero h1 .ln, .noanim .hero-copy, .noanim .hero-cta, .noanim .hero-wall { opacity: 1 !important; transform: none !important; transition: none !important; animation: none !important; }
.noanim .hero-vert { opacity: .6 !important; animation: none !important; }
.noanim .mq-track { animation: none !important; }

/* ============ ハブ: ヘッダ ============ */
.site-head { position: fixed; top: 0; left: 0; right: 0; z-index: 90; display: flex; justify-content: space-between; align-items: center;
  padding: 20px clamp(20px, 4vw, 56px); mix-blend-mode: darken; }
.wordmark { font-family: var(--grotesk); font-weight: 700; font-size: 14px; letter-spacing: .22em; text-decoration: none; white-space: nowrap; }
.wordmark i { font-style: normal; color: var(--vermilion); }
.site-nav { display: flex; gap: clamp(14px, 2.6vw, 34px); align-items: baseline; }
.site-nav a { font-family: var(--grotesk); font-size: 11px; letter-spacing: .18em; text-decoration: none; opacity: .72; transition: opacity .3s; }
.site-nav a:hover { opacity: 1; }
.site-nav a b { color: var(--vermilion); font-weight: 500; margin-right: .5em; }
.site-nav .contact { opacity: 1; border-bottom: 1px solid var(--vermilion); padding-bottom: 3px; }
@media (max-width: 720px) {
  .site-head { padding: 16px 20px; }
  .site-nav a:not(.contact) { display: none; }
}

/* ============ ハブ: ヒーロー ============ */
.hero { position: relative; min-height: 94vh; display: flex; flex-direction: column; justify-content: center; overflow: hidden;
  padding: clamp(90px, 12vh, 140px) clamp(20px, 5vw, 72px) 0; }
.hero-frame { position: absolute; inset: clamp(12px, 2vw, 26px); border: 1px solid var(--hairline); pointer-events: none; }
.hero-en { font-family: var(--grotesk); font-size: 11px; letter-spacing: .38em; margin-bottom: clamp(20px, 3vh, 36px); opacity: 0; animation: rise 1s var(--ease) .15s forwards; }
.hero-en::before { content: "●"; color: var(--vermilion); font-size: 8px; vertical-align: 2px; margin-right: 14px; }
.hero-grid { display: grid; grid-template-columns: minmax(0, 58fr) minmax(0, 42fr); gap: clamp(32px, 5vw, 80px); align-items: center; }
@media (min-width: 901px) { .hero-grid { padding-right: clamp(44px, 6vw, 96px); } }
.hero h1 { font-family: var(--serif); font-weight: 600; font-size: clamp(27px, 3.9vw, 54px); line-height: 1.62; letter-spacing: .05em; }
.hero h1 .ln { display: block; opacity: 0; animation: rise 1.1s var(--ease) forwards; }
.hero h1 .ln:nth-child(1) { animation-delay: .3s; }
.hero h1 .ln:nth-child(2) { animation-delay: .45s; }
.hero h1 .ln:nth-child(3) { animation-delay: .6s; }
.hero h1 em { font-style: normal; color: var(--vermilion); }
.hero-copy { margin-top: clamp(22px, 3.5vh, 40px); max-width: 37em; font-size: clamp(13.5px, 1.5vw, 15.5px); opacity: 0; animation: rise 1s var(--ease) .65s forwards; }
.hero-cta { display: flex; align-items: center; gap: 26px; margin-top: clamp(24px, 3.6vh, 40px); flex-wrap: wrap; opacity: 0; animation: rise 1s var(--ease) .75s forwards; }
.btn-primary { background: var(--ink); color: var(--paper); border: 1px solid var(--ink); padding: 16px 38px; text-decoration: none; font-size: 13.5px; letter-spacing: .18em; transition: all .3s; }
.btn-primary:hover { background: var(--vermilion); border-color: var(--vermilion); color: #fff; }
.link-arrow { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; font-size: 13.5px; letter-spacing: .12em; border-bottom: 1px solid var(--ink); padding: 6px 2px; transition: all .3s; }
.link-arrow i { font-style: normal; transition: transform .3s; }
.link-arrow:hover { color: var(--vermilion); border-color: var(--vermilion); }
.link-arrow:hover i { transform: translateX(6px); }

/* FV — 60社の顔が入れ替わり続ける壁(4×5)。幅広さを装飾でなく実物の量で語る */
.hero-wall { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;
  opacity: 0; animation: rise 1.2s var(--ease) .9s forwards; }
.hw { display: block; overflow: hidden; }
.hw img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; display: block; transition: opacity .6s ease, transform .6s var(--ease); }
.hw:hover img { transform: scale(1.06); }
.hw:nth-child(4n+2) { transform: translateY(10px); }
.hw:nth-child(4n+4) { transform: translateY(-6px); }
@media (max-width: 900px) and (min-width: 641px) {
  .hero-grid { grid-template-columns: 1fr 1fr; gap: clamp(20px, 3vw, 40px); }
  .hero-wall { grid-template-columns: repeat(3, 1fr); gap: 8px; }
  .hw:nth-child(n+10) { display: none; }
}
@media (max-width: 640px) {
  .hero-grid { grid-template-columns: 1fr; }
  .hero-wall { max-width: 560px; margin-top: 8px; grid-template-columns: repeat(5, 1fr); }
  .hw:nth-child(n+11) { display: none; }
}
.hero-vert { position: absolute; right: clamp(28px, 5vw, 72px); top: 50%; transform: translateY(-50%); writing-mode: vertical-rl;
  font-family: var(--serif); font-size: clamp(11px, 1.2vw, 14px); letter-spacing: .42em; opacity: 0; animation: fadeIn 1.4s var(--ease) 1s forwards; }
@media (max-width: 860px) { .hero-vert { display: none; } }

@keyframes rise { from { opacity: 0; transform: translateY(34px); } to { opacity: 1; transform: none; } }
@keyframes fadeIn { to { opacity: .6; } }

/* マーキー(業種帯) */
.mq { border-top: 1px solid var(--hairline); border-bottom: 1px solid var(--hairline); overflow: hidden; white-space: nowrap; }
.mq-track { display: inline-block; padding: 13px 0; font-family: var(--serif); font-size: 13.5px; letter-spacing: .18em;
  animation: mq 56s linear infinite; }
.mq:hover .mq-track { animation-play-state: paused; }
.mq-track i { font-style: normal; color: var(--vermilion); margin: 0 1.4em; font-size: 9px; vertical-align: 2px; }
@keyframes mq { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ============ セクション共通 ============ */
.sec { max-width: 1240px; margin: 0 auto; padding: clamp(72px, 12vh, 150px) clamp(20px, 4vw, 56px) 0; }
.sec-head { display: flex; align-items: baseline; gap: clamp(16px, 3vw, 40px); margin-bottom: clamp(34px, 5vh, 60px); flex-wrap: wrap; }
.sec-head .no { font-family: var(--grotesk); font-size: 12px; letter-spacing: .3em; color: var(--vermilion); }
.sec-head h2 { font-family: var(--serif); font-weight: 600; font-size: clamp(26px, 3.6vw, 44px); letter-spacing: .04em; }
.sec-head .en { font-family: var(--grotesk); font-size: 11px; letter-spacing: .34em; opacity: .5; margin-left: auto; }
.sec-lead { max-width: 44em; font-size: 14.5px; opacity: .82; }
.sec-lead strong { color: var(--vermilion); font-weight: 700; }

/* ============ 事例一覧 ============ */
.filt { display: flex; flex-wrap: wrap; gap: 14px 30px; align-items: baseline; margin-bottom: clamp(36px, 5vh, 56px);
  border-bottom: 1px solid var(--hairline); padding-bottom: 22px; }
.filt input[type="search"] { flex: 1 1 100%; font-family: var(--gothic); font-size: 15px; letter-spacing: .04em; color: var(--ink);
  background: #fff; border: 1px solid var(--ink); border-radius: 0; padding: 15px 20px; -webkit-appearance: none; }
.filt input[type="search"]::placeholder { color: #a49d8f; }
.filt input[type="search"]:focus { outline: 2px solid var(--vermilion); outline-offset: -1px; }
.filt select { font-family: var(--serif); font-size: 14px; letter-spacing: .05em; color: var(--ink); background: transparent;
  border: 0; border-bottom: 1px solid var(--ink); border-radius: 0; padding: 6px 30px 6px 0; appearance: none; -webkit-appearance: none; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='6'%3E%3Cpath d='M0 0l4.5 6L9 0' fill='%23141414'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 6px center; max-width: min(76vw, 380px); }
.fgrp { display: flex; gap: 4px 18px; flex-wrap: wrap; }
.fbtn { font-family: var(--gothic); font-size: 12px; letter-spacing: .1em; background: none; border: 0; cursor: pointer; padding: 4px 1px; position: relative; opacity: .58; transition: opacity .25s; }
.fbtn sup { font-family: var(--grotesk); font-size: 9px; color: var(--vermilion); margin-left: 3px; }
.fbtn::after { content: ""; position: absolute; left: 0; right: 100%; bottom: 0; height: 2px; background: var(--vermilion); transition: right .3s var(--ease); }
.fbtn:hover { opacity: .9; }
.fbtn.active { opacity: 1; }
.fbtn.active::after { right: 0; }
.fcount { margin-left: auto; font-family: var(--grotesk); font-size: 11px; letter-spacing: .22em; opacity: .55; }

.works-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr)); gap: clamp(36px, 5vh, 56px) 30px; }
.wk { text-decoration: none; display: block; }
.wk-media { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: #dedbd2; position: relative; }
.wk-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .9s var(--ease); }
.wk:hover .wk-media img { transform: scale(1.055); }
.wk-fallback { width: 100%; height: 100%; background: linear-gradient(128deg, var(--accent) 0%, color-mix(in srgb, var(--accent) 34%, var(--paper)) 100%); }
.wk-meta { display: flex; align-items: center; gap: 8px; margin-top: 14px; font-family: var(--grotesk); font-size: 12px; letter-spacing: .12em; }
.wk-meta .idx { margin-left: auto; color: var(--vermilion); font-size: 12px; opacity: .85; }
.ind-chip { display: inline-flex; align-items: center; gap: 7px; font-family: var(--gothic); font-size: 13px; font-weight: 700;
  letter-spacing: .04em; color: var(--dc); }
.ind-chip i { width: 9px; height: 9px; border-radius: 50%; background: var(--dc); flex: none; }
.sz-chip { font-family: var(--gothic); font-size: 11px; letter-spacing: .05em; border: 1px solid var(--hairline);
  border-radius: 999px; padding: 2.5px 11px; opacity: .82; white-space: nowrap; }
.wk h3 { font-family: var(--serif); font-weight: 600; font-size: 21px; letter-spacing: .03em; line-height: 1.55; margin-top: 8px;
  display: inline; background-image: linear-gradient(var(--vermilion), var(--vermilion)); background-repeat: no-repeat; background-size: 0% 1.5px; background-position: 0 100%; transition: background-size .45s var(--ease); padding-bottom: 3px; }
.wk:hover h3 { background-size: 100% 1.5px; }
.wk p { font-size: 13.5px; opacity: .68; margin-top: 8px; line-height: 1.85; }

/* ============ 目的から選ぶ(6ボタン) ============ */
.pbtn-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(340px, 100%), 1fr)); gap: 16px; margin-top: clamp(24px, 4vh, 40px); }
.pbtn { position: relative; display: flex; flex-direction: column; gap: 8px; text-decoration: none;
  background: #fcfaf4; border: 1px solid var(--hairline); padding: 30px 34px 30px 30px; overflow: hidden; transition: transform .25s var(--ease), box-shadow .25s, border-color .25s; }
.pbtn::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--vermilion); transform: scaleY(0); transform-origin: top; transition: transform .3s var(--ease); }
.pbtn:hover { transform: translateY(-3px); box-shadow: 0 16px 40px rgba(24, 20, 12, .12); border-color: var(--vermilion); }
.pbtn:hover::before { transform: scaleY(1); }
.pbtn-main { font-family: var(--serif); font-weight: 700; font-size: clamp(18px, 1.75vw, 23px); letter-spacing: .02em; line-height: 1.5; white-space: nowrap; }
@media (max-width: 460px) { .pbtn-main { white-space: normal; } }
.pbtn-sub { font-size: 12.5px; letter-spacing: .04em; opacity: .62; }
.pbtn-arrow { position: absolute; right: 22px; top: 50%; transform: translateY(-50%); font-family: var(--grotesk); font-size: 18px; color: var(--vermilion); opacity: 0; transition: opacity .3s, right .3s var(--ease); }
.pbtn:hover .pbtn-arrow { opacity: 1; right: 18px; }

/* 目的フィルタのpill(一覧ページ) */
.fgrp-purpose { flex-basis: 100%; gap: 6px 16px; }
.pfbtn { font-family: var(--gothic); }

/* 厳選12(トップ) — 文字を主役に */
.featured-grid { grid-template-columns: repeat(auto-fill, minmax(min(330px, 100%), 1fr)); }
.wk.featured h3 { font-size: 24px; line-height: 1.6; }
.wk.featured p { font-size: 14px; opacity: .72; }
.works-links { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr)); gap: 14px; margin-top: clamp(36px, 6vh, 56px); }
.all-works { display: block; border: 1px solid var(--ink); text-align: center;
  padding: 22px; font-family: var(--grotesk); font-size: 12px; letter-spacing: .3em; text-decoration: none; transition: all .3s; }
.all-works:hover { background: var(--ink); color: var(--paper); }

/* テンプレート一覧 */
.tpl-credit-line { font-size: 12px; opacity: .75; }
.tpl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(310px, 100%), 1fr)); gap: 22px; margin-top: clamp(28px, 4vh, 44px); }
.tplc { display: flex; flex-direction: column; text-decoration: none; color: inherit; background: #fcfaf4;
  border: 1px solid var(--hairline); border-radius: 3px; overflow: hidden; transition: transform .25s var(--ease), box-shadow .25s; }
.tplc:hover { transform: translateY(-5px); box-shadow: 0 20px 44px rgba(24, 20, 12, .15); }
.tplc-shot { position: relative; display: block; aspect-ratio: 16 / 10; overflow: hidden; background: #ece7dc; border-bottom: 3px solid var(--tc); }
.tplc-shot img { width: 100%; height: 100%; object-fit: cover; object-position: top center; display: block; transition: transform .55s var(--ease); }
.tplc:hover .tplc-shot img { transform: scale(1.045); }
.tplc-no { position: absolute; top: 10px; left: 10px; font-style: normal; font-family: var(--grotesk); font-size: 11px; letter-spacing: .16em; color: #fff; background: rgba(18, 14, 10, .6); padding: 3px 9px; border-radius: 2px; }
.tplc-body { display: flex; flex-direction: column; gap: 8px; padding: 18px 20px 20px; flex: 1; }
.tplc-top { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.tplc b { font-family: var(--grotesk); font-weight: 700; font-size: 18px; letter-spacing: .12em; }
.tplc-fam { font-size: 10.5px; letter-spacing: .12em; opacity: .55; font-family: var(--grotesk); white-space: nowrap; }
.tplc p { font-size: 12.5px; line-height: 1.85; opacity: .78; flex: 1; margin: 0; }
.tplc-go { font-size: 11.5px; letter-spacing: .08em; color: var(--tc); margin-top: 4px; font-weight: 500; }
.site-nav .nav-tpl { opacity: 1; border-bottom: 1px solid var(--hairline); padding-bottom: 3px; }
.site-nav .nav-tpl:hover { border-color: var(--vermilion); }
.opt-tag { display: inline-block; font-family: var(--grotesk); font-size: 10px; font-style: normal; letter-spacing: .18em; color: var(--vermilion); border: 1px solid var(--vermilion); border-radius: 999px; padding: 2px 10px; margin-left: 14px; vertical-align: middle; }

/* /works/ 一覧ページ */
.works-index-head { padding-top: clamp(110px, 16vh, 160px); }

/* ============ 事例内: 数字で見る / FAQ / アクセス / about画像 ============ */
.stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 22px; max-width: 780px; }
.stat { border-top: 2px solid var(--accent); padding-top: 16px; }
.stat strong { display: block; font-family: var(--grotesk); font-size: clamp(30px, 3.6vw, 44px); font-weight: 500; line-height: 1.1; letter-spacing: .02em; }
.stat span { display: block; margin-top: 8px; font-size: 12px; opacity: .68; letter-spacing: .04em; }
.faq-list { max-width: 720px; }
.faq-item { border-bottom: 1px solid color-mix(in srgb, var(--demo-ink) 16%, transparent); }
.faq-item summary { cursor: pointer; list-style: none; padding: 18px 34px 18px 2px; font-weight: 600; font-size: 14.5px; line-height: 1.8; position: relative; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after { content: "+"; position: absolute; right: 6px; top: 50%; transform: translateY(-50%); font-family: var(--grotesk); font-size: 20px; color: var(--accent); transition: transform .3s; }
.faq-item[open] summary::after { transform: translateY(-50%) rotate(45deg); }
.faq-item p { padding: 0 2px 20px; font-size: 13.5px; line-height: 2; opacity: .8; max-width: 40em; }
.demo-access .demo-table td { line-height: 1.9; }
.demo-about-media { margin: 0 0 30px; }
.demo-about-media img { width: 100%; max-width: 860px; aspect-ratio: 16 / 7; object-fit: cover; display: block; }

/* ============ 事例内ニュース(ブログ/CMS運用デモ) ============ */
.demo-news-list { list-style: none; max-width: 780px; }
.demo-news-list li a { display: flex; gap: 16px; align-items: baseline; flex-wrap: wrap; padding: 17px 2px; text-decoration: none;
  border-bottom: 1px solid color-mix(in srgb, var(--demo-ink) 14%, transparent); transition: color .25s; }
.demo-news-list li:first-child a { border-top: 1px solid color-mix(in srgb, var(--demo-ink) 14%, transparent); }
.demo-news-list li a:hover b { color: var(--accent); }
.demo-news-list time { font-family: var(--grotesk); font-size: 12px; letter-spacing: .08em; opacity: .6; white-space: nowrap; }
.demo-news-list i { font-style: normal; font-size: 10px; letter-spacing: .06em; border: 1px solid var(--accent); color: var(--accent); padding: 2px 10px; border-radius: 999px; white-space: nowrap; }
.demo-news-list b { font-weight: 600; font-size: 14.5px; line-height: 1.8; flex: 1; min-width: 220px; transition: color .25s; }
.demo-news-more { margin-top: 20px; }
.demo-news-more a { color: var(--accent); text-decoration: none; font-size: 13px; letter-spacing: .06em; }
.article { max-width: 740px; }
.article h2 { font-size: clamp(20px, 2.6vw, 28px); line-height: 1.7; }
.article-date { display: block; font-family: var(--grotesk); font-size: 12.5px; letter-spacing: .1em; opacity: .55; margin: 14px 0 34px; }
.article-body p { font-size: 14.5px; line-height: 2.15; margin-bottom: 1.5em; opacity: .92; }
.article-body h3 { font-size: 17px; margin: 2.2em 0 1em; padding-left: 14px; border-left: 3px solid var(--accent); line-height: 1.6; }
.article-back { margin-top: 48px; display: flex; gap: 28px; }
.article-back a { color: var(--accent); text-decoration: none; font-size: 13px; letter-spacing: .06em; }

/* ============ 制作の流れ ============ */
.flow { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); }
.flow li { list-style: none; border-left: 1px solid var(--hairline); padding: 6px clamp(16px, 2vw, 30px) 20px; }
.flow b { display: block; font-family: var(--grotesk); font-weight: 500; font-size: 13px; letter-spacing: .26em; color: var(--vermilion); margin-bottom: 14px; }
.flow strong { display: block; font-family: var(--serif); font-size: 19px; font-weight: 600; letter-spacing: .06em; margin-bottom: 10px; }
.flow p { font-size: 12.5px; opacity: .72; }

/* ============ CTA・フッタ ============ */
.cta-band { text-align: center; padding: clamp(80px, 13vh, 150px) 20px; background: var(--ink); color: var(--paper); }
.cta-band .cta-head { font-family: var(--serif); font-size: clamp(22px, 3.2vw, 38px); font-weight: 600; letter-spacing: .06em; line-height: 1.7; }
.cta-band a.legacy { display: inline-block; margin-top: 38px; font-family: var(--grotesk); font-size: 12px; letter-spacing: .3em; text-decoration: none;
  background: var(--paper); color: var(--ink); padding: 20px 58px; transition: all .3s; }
.cta-band a.legacy:hover { background: var(--vermilion); color: #fff; }

/* 目的別アーキタイプ(mode) — tpl(意匠)と直交する情報構成の変種 */
body[data-mode="service"] .demo-cards { grid-template-columns: 1fr; max-width: 720px; }
body[data-mode="service"] .demo-card { display: grid; grid-template-columns: auto 1fr; gap: 4px 20px; align-items: baseline;
  padding: 22px 4px; border: 0; border-radius: 0; border-bottom: 1px solid color-mix(in srgb, var(--demo-ink) 16%, transparent); background: none; box-shadow: none; }
body[data-mode="service"] .demo-card h3 { margin: 0; font-size: 17px; }
body[data-mode="service"] .demo-card p { grid-column: 2; margin: 0; }
body[data-mode="service"] .demo-access .demo-table { border: 1.5px solid var(--accent); }
body[data-mode="service"] .demo-access .demo-table th { color: var(--accent); }
body[data-mode="brand"] .demo-message { padding-top: clamp(56px, 9vh, 100px); }
body[data-mode="brand"] .demo-message blockquote { font-size: clamp(18px, 2.4vw, 25px); line-height: 2.3; border: 0; padding: 0; max-width: 30em; }
body[data-mode="civic"] .demo-card { border: 0; border-radius: 0; border-left: 4px solid var(--accent); background: color-mix(in srgb, var(--demo-bg) 94%, var(--demo-ink) 3%); box-shadow: none; }

/* CMSセクション — 手軽さ3枚看板 */
.benefit-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr)); gap: 22px; margin-top: clamp(30px, 5vh, 48px); }
.benefit { background: #fcfaf4; border: 1px solid var(--hairline); border-top: 3px solid var(--vermilion); padding: 34px 30px 30px; }
.benefit-en { display: block; font-family: var(--grotesk); font-size: 11px; letter-spacing: .34em; color: var(--vermilion); margin-bottom: 14px; }
.benefit h3 { font-family: var(--serif); font-weight: 700; font-size: clamp(21px, 2.2vw, 26px); letter-spacing: .05em; }
.benefit p { margin-top: 14px; font-size: 13.5px; line-height: 2; opacity: .8; }

/* ハブ: 料金(エディトリアル) */
.price-ed { margin-top: clamp(26px,4vh,44px); }
.price-ed-head { padding-bottom: clamp(18px,2.6vh,26px); border-bottom: 2px solid var(--ink); }
.price-ed-label { display:block; font-family:var(--serif); font-weight:700; font-size:15px; letter-spacing:.14em; opacity:.8; }
.price-ed-fig { font-family:var(--grotesk); font-weight:500; font-size:clamp(54px,9vw,104px); line-height:.9; letter-spacing:-.025em; display:flex; align-items:baseline; margin-top:6px; }
.price-ed-fig .y { font-size:.42em; margin-right:3px; }
.price-ed-fig .tax { font-family:var(--gothic); font-size:14px; letter-spacing:.05em; opacity:.55; margin-left:13px; align-self:flex-end; margin-bottom:.95em; }
.price-ed-note { font-size:13px; opacity:.65; margin-top:11px; }
.price-ed-rows { margin-top: clamp(8px,1.4vh,14px); }
.price-ed-rows > div { display:grid; grid-template-columns:minmax(7em,9em) 1fr; gap:clamp(14px,3vw,40px); align-items:baseline; padding:15px 2px; border-bottom:1px solid var(--hairline); }
.price-ed-rows dt { font-family:var(--serif); font-size:14.5px; font-weight:600; letter-spacing:.08em; }
.price-ed-rows dd { font-size:14px; line-height:1.8; opacity:.82; }
.price-ed-rows dd b { font-family:var(--grotesk); font-weight:600; opacity:1; color:var(--vermilion); }
@media (max-width:600px){ .price-ed-rows > div{ grid-template-columns:1fr; gap:2px; padding:13px 0; } }

.cms-try { display: flex; align-items: center; gap: 22px; flex-wrap: wrap; margin-top: clamp(30px,5vh,44px); }
.cms-try-note { font-size: 12.5px; opacity: .6; line-height: 1.7; }
.site-foot { border-top: 1px solid var(--hairline); padding: 44px clamp(20px, 4vw, 56px) 60px; }
.site-foot .row { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 12px; }
.site-foot .links { display: flex; gap: 26px; font-family: var(--grotesk); font-size: 10.5px; letter-spacing: .2em; }
.site-foot .links a { text-decoration: none; opacity: .6; }
.site-foot .links a:hover { opacity: 1; }
.disclaimer { margin-top: 22px; font-size: 10.5px; line-height: 2; opacity: .5; max-width: 46em; }

/* ================================================================
   事例デモページ
   ================================================================ */
.harness-bar { position: sticky; top: 0; z-index: 80; display: flex; align-items: center; gap: 18px;
  padding: 11px clamp(16px, 3vw, 40px); background: #101014; color: #f2f0ea; }
.harness-bar a { font-family: var(--grotesk); font-size: 10.5px; letter-spacing: .22em; text-decoration: none; color: #f2f0ea; opacity: .85; }
.harness-bar a:hover { opacity: 1; }
.harness-case { font-family: var(--grotesk); font-size: 10.5px; letter-spacing: .26em; opacity: .55; }
.harness-badges { margin-left: auto; display: flex; gap: 6px; flex-wrap: wrap; }
.badge { font-size: 10px; letter-spacing: .08em; border: 1px solid rgba(255,255,255,.24); padding: 2.5px 11px; }
.badge-demo { background: var(--vermilion); border-color: var(--vermilion); font-weight: 700; }

/* --- デモ骨格(既定) --- */
.case-body { background: #e9e6de; }
.demo { --bg: #ffffff; --fg: #17181c; background: var(--bg); color: var(--fg); overflow: hidden; }
.demo-nav { display: flex; justify-content: space-between; align-items: center; gap: 14px; padding: 20px clamp(18px, 4vw, 48px); flex-wrap: wrap; }
.demo-brand { font-weight: 800; font-size: 15px; letter-spacing: .05em; }
.demo-links { display: flex; gap: clamp(12px, 2.2vw, 26px); font-size: 12px; flex-wrap: wrap; align-items: center; }
.demo-links a { text-decoration: none; opacity: .74; transition: opacity .25s; }
.demo-links a:hover { opacity: 1; }
.demo-nav-cta { border: 1.5px solid var(--accent); color: var(--accent); padding: 7px 18px; border-radius: 999px; opacity: 1 !important; }
.demo-hero { position: relative; min-height: clamp(380px, 62vh, 620px); display: flex; align-items: flex-end; }
.demo-hero-media { position: absolute; inset: 0; overflow: hidden; }
.demo-hero-media img { width: 100%; height: 100%; object-fit: cover; }
.demo-hero-scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(8,8,12,.04) 32%, rgba(8,8,12,.6) 100%); }
.demo-hero-fallback { position: absolute; inset: 0; background: linear-gradient(130deg, var(--accent), color-mix(in srgb, var(--accent) 30%, #1c1c22)); }
.demo-hero-inner { position: relative; padding: clamp(30px, 5vw, 68px) clamp(18px, 4vw, 48px); color: #fff; max-width: 920px; }
.demo-hero-inner h1 { font-size: clamp(27px, 4.6vw, 50px); line-height: 1.42; letter-spacing: .03em; text-shadow: 0 2px 22px rgba(0,0,0,.4);
  text-wrap: balance; }
.demo-lead { margin-top: 15px; font-size: clamp(13px, 1.6vw, 16px); opacity: .93; text-shadow: 0 1px 12px rgba(0,0,0,.45); }
.demo-section { max-width: 1000px; margin: 0 auto; padding: clamp(48px, 8vw, 100px) clamp(18px, 4vw, 48px) 0; }
.demo-section:last-of-type { padding-bottom: clamp(48px, 8vw, 100px); }
.demo-eyebrow { display: block; font-family: var(--grotesk); font-size: 10.5px; letter-spacing: .32em; text-transform: uppercase; color: var(--accent); margin-bottom: 8px; }
.demo-section h2 { font-size: clamp(20px, 2.6vw, 28px); letter-spacing: .05em; margin-bottom: 26px; }
.demo-about { max-width: 44em; font-size: 15px; }
.demo-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 20px; }
.demo-card { border: 1px solid color-mix(in srgb, var(--fg) 15%, transparent); padding: 26px 24px; background: color-mix(in srgb, var(--bg) 94%, var(--fg) 2%); }
.demo-card-num { font-family: var(--grotesk); font-size: 13px; letter-spacing: .18em; color: var(--accent); }
.demo-card h3 { font-size: 15.5px; margin: 12px 0 9px; line-height: 1.55; }
.demo-card p { font-size: 13px; opacity: .78; }
.demo-message blockquote { font-size: clamp(16px, 2.1vw, 20px); line-height: 2.1; max-width: 38em; border-left: 3px solid var(--accent); padding-left: clamp(18px, 3vw, 32px); }
.demo-table { border-collapse: collapse; width: 100%; max-width: 640px; font-size: 14px; }
.demo-table th, .demo-table td { text-align: left; padding: 14px 10px; border-bottom: 1px solid color-mix(in srgb, var(--fg) 15%, transparent); }
.demo-table th { width: 7em; opacity: .58; font-weight: 600; }
.demo-contact { text-align: center; }
.demo-cta { font: inherit; font-size: 13.5px; letter-spacing: .1em; margin-top: 20px; background: var(--accent); color: #fff; border: 0; padding: 17px 52px; cursor: pointer; transition: filter .3s; }
.demo-cta:hover { filter: brightness(1.1); }
.demo-cta:disabled { background: color-mix(in srgb, var(--fg) 32%, transparent); cursor: default; }
.demo-footer { text-align: center; font-size: 11px; opacity: .55; padding: 34px 16px 42px; }

/* --- GENTLE: 上質・信頼 / 明朝・中央・金の界線 --- */
[data-family="gentle"] .demo { --bg: #faf7f0; --fg: #232a35; font-family: var(--gothic); }
[data-family="gentle"] .demo-brand, [data-family="gentle"] h1, [data-family="gentle"] h2, [data-family="gentle"] .demo-card h3 { font-family: var(--serif); font-weight: 600; }
[data-family="gentle"] .demo-hero { align-items: center; text-align: center; min-height: clamp(420px, 66vh, 640px); }
[data-family="gentle"] .demo-hero-inner { margin: 0 auto; }
[data-family="gentle"] .demo-hero-inner::before { content: "◆"; display: block; font-size: 9px; color: var(--accent); margin-bottom: 22px; }
[data-family="gentle"] .demo-hero-inner h1 { letter-spacing: .1em; line-height: 1.7; }
[data-family="gentle"] .demo-hero-scrim { background: rgba(18, 22, 30, .44); }
[data-family="gentle"] .demo-section { text-align: center; }
[data-family="gentle"] .demo-section h2::after { content: ""; display: block; width: 34px; height: 1px; background: var(--accent); margin: 18px auto 0; }
[data-family="gentle"] .demo-about, [data-family="gentle"] .demo-table { margin-inline: auto; }
[data-family="gentle"] .demo-message blockquote { margin-inline: auto; border-left: 0; border-top: 1px solid var(--accent); padding: 28px 0 0; font-family: var(--serif); }
[data-family="gentle"] .demo-card { background: #fff; border: 1px solid color-mix(in srgb, var(--accent) 36%, transparent); border-radius: 0; }
[data-family="gentle"] .demo-cta { border-radius: 999px; }

/* --- POWERFUL: 先進・迫力 / 極太・ダーク・斜行アクセント --- */
[data-family="powerful"] .demo { --bg: #0b0d11; --fg: #f3f4f8; }
[data-family="powerful"] .demo-nav { border-bottom: 1px solid rgba(255,255,255,.12); }
[data-family="powerful"] .demo-hero { min-height: clamp(460px, 74vh, 700px); }
[data-family="powerful"] .demo-hero-scrim { background: linear-gradient(100deg, rgba(6,8,12,.86) 8%, rgba(6,8,12,.2) 66%),
  linear-gradient(0deg, color-mix(in srgb, var(--accent) 24%, transparent), transparent 55%); }
[data-family="powerful"] .demo-hero-inner h1 { font-weight: 900; font-size: clamp(32px, 5.8vw, 66px); line-height: 1.3; letter-spacing: .01em; }
[data-family="powerful"] .demo-hero-inner::before { content: ""; display: block; width: 64px; height: 5px; background: var(--accent); transform: skewX(-24deg); margin-bottom: 26px; }
[data-family="powerful"] .demo-section h2 { font-weight: 900; font-size: clamp(22px, 3vw, 34px); }
[data-family="powerful"] .demo-eyebrow { font-weight: 700; }
[data-family="powerful"] .demo-card { background: #14171d; border-color: rgba(255,255,255,.1); border-top: 3px solid var(--accent); }
[data-family="powerful"] .demo-card-num { font-size: 26px; font-weight: 700; opacity: .95; }
[data-family="powerful"] .demo-message blockquote { border-left-width: 5px; font-weight: 700; }
[data-family="powerful"] .demo-footer { opacity: .38; }

/* --- MINIMAL: 端正 / スイスグリッド・分割ヒーロー・番号 --- */
[data-family="minimal"] .demo { --bg: #ffffff; --fg: #17181c; }
[data-family="minimal"] .demo-nav { border-bottom: 1px solid #e8e8e8; }
[data-family="minimal"] .demo-hero { min-height: 0; display: grid; grid-template-columns: minmax(300px, 5fr) 6fr; gap: clamp(24px, 4vw, 56px);
  align-items: center; max-width: 1160px; margin: 0 auto; padding: clamp(48px, 8vw, 96px) clamp(18px, 4vw, 48px); }
[data-family="minimal"] .demo-hero-media { position: relative; inset: auto; aspect-ratio: 4 / 3; order: 2; }
[data-family="minimal"] .demo-hero-scrim { display: none; }
[data-family="minimal"] .demo-hero-fallback { position: relative; aspect-ratio: 4 / 3; order: 2; }
[data-family="minimal"] .demo-hero-inner { padding: 0; color: var(--fg); }
[data-family="minimal"] .demo-hero-inner h1 { font-size: clamp(24px, 3vw, 38px); font-weight: 600; letter-spacing: .06em; text-shadow: none; }
[data-family="minimal"] .demo-hero-inner h1::before { content: ""; display: block; width: 30px; height: 2px; background: var(--accent); margin-bottom: 28px; }
[data-family="minimal"] .demo-lead { color: var(--fg); opacity: .66; text-shadow: none; }
@media (max-width: 720px) { [data-family="minimal"] .demo-hero { grid-template-columns: 1fr; } [data-family="minimal"] .demo-hero-media { order: 0; } }
[data-family="minimal"] .demo-section { border-top: 1px solid #e8e8e8; max-width: 1160px; padding-top: clamp(40px, 6vw, 72px); padding-bottom: clamp(40px, 6vw, 72px) !important; }
[data-family="minimal"] .demo-section h2 { font-size: 16px; font-weight: 700; letter-spacing: .12em; }
[data-family="minimal"] .demo-eyebrow { color: var(--fg); opacity: .4; }
[data-family="minimal"] .demo-eyebrow::before { content: counter(sec, decimal-leading-zero) " — "; }
[data-family="minimal"] .demo-section { counter-increment: sec; }
[data-family="minimal"] .demo-card { border: 0; border-top: 1px solid #e3e3e3; padding-left: 0; background: none; }
[data-family="minimal"] .demo-message blockquote { border-color: var(--fg); font-size: clamp(15px, 1.8vw, 18px); }
[data-family="minimal"] .demo-cta { border-radius: 0; }

/* --- ATMOSPHERE: 情緒 / 縦書き・全面写真・静けさ --- */
[data-family="atmosphere"] .demo { --bg: #f2eee6; --fg: #3b342a; font-family: var(--serif); }
[data-family="atmosphere"] .demo-links, [data-family="atmosphere"] .demo-card p, [data-family="atmosphere"] .demo-table,
[data-family="atmosphere"] .demo-footer, [data-family="atmosphere"] .demo-eyebrow { font-family: var(--gothic); }
[data-family="atmosphere"] .demo-hero { min-height: clamp(460px, 78vh, 720px); align-items: stretch; }
[data-family="atmosphere"] .demo-hero-scrim { background: linear-gradient(180deg, rgba(22,18,10,.05) 42%, rgba(22,18,10,.52) 100%); }
[data-family="atmosphere"] .demo-hero-vert { position: absolute; top: clamp(28px, 6vh, 64px); right: clamp(22px, 5vw, 64px); writing-mode: vertical-rl;
  color: #fff; font-size: clamp(22px, 3.4vw, 38px); font-weight: 500; letter-spacing: .3em; line-height: 2; text-shadow: 0 2px 24px rgba(0,0,0,.5); }
[data-family="atmosphere"] .demo-hero-inner h1 { display: none; }
[data-family="atmosphere"] .demo-lead { letter-spacing: .12em; }
[data-family="atmosphere"] .demo-section h2 { font-weight: 500; letter-spacing: .18em; }
[data-family="atmosphere"] .demo-card { background: rgba(255,255,255,.6); border-color: rgba(59,52,42,.16); }
[data-family="atmosphere"] .demo-message blockquote { line-height: 2.5; letter-spacing: .1em; }
[data-family="atmosphere"] .demo-cta { letter-spacing: .3em; }

/* --- VIVID: 個性 / 高彩度・マーカー・回転ステッカー --- */
[data-family="vivid"] .demo { --bg: #fffdf4; --fg: #22252e; }
[data-family="vivid"] .demo-nav-cta { background: var(--accent); color: #fff; }
[data-family="vivid"] .demo-hero-scrim { background: linear-gradient(155deg, color-mix(in srgb, var(--accent) 52%, transparent) 0%, rgba(14,14,20,.56) 100%); }
[data-family="vivid"] .demo-hero-inner h1 { font-weight: 900; }
[data-family="vivid"] .demo-hero-inner h1 mark { background: linear-gradient(transparent 62%, var(--accent) 62%); color: inherit; padding: 0 .1em; }
[data-family="vivid"] .demo-hero-media::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 40px; background: var(--bg); clip-path: ellipse(56% 100% at 50% 100%); }
[data-family="vivid"] .demo-section h2 { font-weight: 900; }
[data-family="vivid"] .demo-card { border: 2px solid var(--fg); border-radius: 18px; box-shadow: 6px 6px 0 color-mix(in srgb, var(--accent) 82%, transparent); background: #fff; }
[data-family="vivid"] .demo-card:nth-child(2) { transform: rotate(.7deg); }
[data-family="vivid"] .demo-card:nth-child(3) { transform: rotate(-.7deg); }
[data-family="vivid"] .demo-card-num { background: var(--accent); color: #fff; font-weight: 700; padding: 4px 13px; border-radius: 999px; }
[data-family="vivid"] .demo-cta { border-radius: 999px; box-shadow: 0 10px 28px color-mix(in srgb, var(--accent) 46%, transparent); font-weight: 700; }

/* --- RETRO: 懐古・技術文化 / 端末窓・走査線・活版 --- */
[data-family="retro"] .demo { --bg: #f4f0e1; --fg: #2c2b24; font-family: ui-monospace, "SF Mono", Menlo, monospace; }
[data-family="retro"] .demo::before { content: ""; position: absolute; inset: 0; pointer-events: none;
  background: repeating-linear-gradient(0deg, transparent 0 3px, rgba(44,43,36,.022) 3px 4px); }
[data-family="retro"] .demo { position: relative; }
[data-family="retro"] .demo-nav { border-bottom: 2px solid var(--fg); background: #ece7d3; }
[data-family="retro"] .demo-brand::before { content: "▮ "; color: var(--accent); }
[data-family="retro"] .demo-hero { min-height: 0; max-width: 1000px; margin: clamp(28px, 5vw, 56px) auto 0; padding: 0 clamp(18px, 4vw, 48px); display: block; }
[data-family="retro"] .demo-hero-media { position: relative; border: 2px solid var(--fg); box-shadow: 8px 8px 0 color-mix(in srgb, var(--accent) 66%, transparent); }
[data-family="retro"] .demo-hero-media::before { content: "● ● ●"; display: block; font-size: 9px; letter-spacing: 4px; color: var(--fg);
  background: #ece7d3; border-bottom: 2px solid var(--fg); padding: 7px 12px; }
[data-family="retro"] .demo-hero-media img { aspect-ratio: 16 / 8; }
[data-family="retro"] .demo-hero-scrim { display: none; }
[data-family="retro"] .demo-hero-inner { color: var(--fg); padding: 26px 0 0; }
[data-family="retro"] .demo-hero-inner h1 { font-size: clamp(21px, 3.2vw, 34px); text-shadow: none; letter-spacing: 0; }
[data-family="retro"] .demo-hero-inner h1::after { content: "▌"; color: var(--accent); animation: blink 1.1s steps(1) infinite; margin-left: 6px; }
@keyframes blink { 50% { opacity: 0; } }
[data-family="retro"] .demo-lead { color: var(--fg); opacity: .72; text-shadow: none; }
[data-family="retro"] .demo-eyebrow::before { content: ">> "; }
[data-family="retro"] .demo-card { border: 2px solid var(--fg); background: #faf6e9; box-shadow: 5px 5px 0 color-mix(in srgb, var(--accent) 66%, transparent); }
[data-family="retro"] .demo-table th, [data-family="retro"] .demo-table td { border-bottom: 1.5px solid var(--fg); }
[data-family="retro"] .demo-message blockquote { border-left: 4px double var(--accent); }
[data-family="retro"] .demo-cta { border: 2px solid var(--fg); box-shadow: 4px 4px 0 var(--fg); background: var(--accent); }

/* ============ 制作ノート・前後ナビ ============ */
.prod-note { max-width: 900px; margin: clamp(40px, 7vw, 72px) auto; padding: 0 clamp(18px, 4vw, 48px); font-family: var(--gothic); color: var(--ink); }
.prod-note-box { background: var(--paper); border: 1px solid var(--hairline); padding: clamp(26px, 4vw, 44px); }
.prod-note-box .pn-en { font-family: var(--grotesk); font-size: 10.5px; letter-spacing: .32em; color: var(--vermilion); }
.prod-note-box h2 { font-family: var(--serif); font-size: 20px; font-weight: 600; letter-spacing: .08em; margin: 8px 0 24px; }
.prod-note-box dl { display: grid; grid-template-columns: max-content 1fr; gap: 13px 26px; font-size: 13.5px; line-height: 1.9; }
.prod-note-box dt { font-family: var(--grotesk); font-size: 10px; letter-spacing: .2em; opacity: .55; padding-top: 4px; white-space: nowrap; }
.prod-note-box ul { padding-left: 1.2em; }
@media (max-width: 560px) { .prod-note-box dl { grid-template-columns: 1fr; gap: 2px; } .prod-note-box dt { margin-top: 12px; } }
.case-nav { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--hairline); border-top: 0; }
.case-nav a { text-decoration: none; padding: 20px 24px; font-size: 12px; line-height: 1.7; transition: background .3s; background: var(--paper); }
.case-nav a:hover { background: #efece2; }
.case-nav a + a { border-left: 1px solid var(--hairline); text-align: right; }
.case-nav .dir { display: block; font-family: var(--grotesk); font-size: 9.5px; letter-spacing: .28em; color: var(--vermilion); margin-bottom: 5px; }
.case-nav b { font-family: var(--serif); font-weight: 600; }
.case-nav .all { display: block; text-align: center; border: 1px solid var(--hairline); border-top: 0; padding: 15px; font-family: var(--grotesk); font-size: 10.5px; letter-spacing: .3em; text-decoration: none; background: var(--paper); transition: background .3s; }
.case-nav-wrap .all:hover { background: #efece2; }
/* ===== EYANCA 27 template variants ===== */

/* ============================== GENTLE ============================== */

/* === SANCTUARY === */
/* 中央絶対配置ヒーロー+マイナスマージンで食い込む白カード、下線リンクのみ、金一色 */
body[data-template="sanctuary"] .demo-hero-inner { max-width: 620px; }
body[data-template="sanctuary"] .demo-hero-inner h1 { font-family: "Cinzel", var(--serif); letter-spacing: .16em; }
body[data-template="sanctuary"] .demo-hero-scrim { background: linear-gradient(180deg, rgba(18,22,30,.18) 0%, rgba(18,22,30,.58) 100%); }
body[data-template="sanctuary"] .demo-nav { mix-blend-mode: difference; color: #fff; }
body[data-template="sanctuary"] .demo-nav-cta { border-color: #bfa37e; color: #bfa37e; }
body[data-template="sanctuary"] .demo-section:first-of-type { margin-top: -5rem; position: relative; z-index: 2; background: var(--demo-bg); padding-top: clamp(40px, 7vw, 80px); box-shadow: 0 -18px 40px rgba(18,22,30,.08); }
body[data-template="sanctuary"] .demo-cta { background: none; color: var(--accent); border: 0; border-bottom: 1px solid var(--accent); border-radius: 0; padding: 6px 2px; letter-spacing: .12em; }
body[data-template="sanctuary"] .demo-cta:hover { filter: none; opacity: .7; }
body[data-template="sanctuary"] .demo-card { box-shadow: none; border: 0; border-top: 1px solid color-mix(in srgb, var(--accent) 40%, transparent); padding-left: 2px; padding-right: 2px; }
body[data-template="sanctuary"] .demo-card-num { color: var(--accent); opacity: .8; }

/* === STRUCTURE === */
/* 左サイドバーsticky+右メインの2カラム、白カードがせり上がるスタッキング演出、3トーン配色 */
/* FIX(criterion 4): position:sticky を全 .demo-section に掛けると各セクションが top:0 で
   積み重なり内容を覆う。演出意図の「せり上がる白カード」は最初のセクションのみでよいため、
   sticky+影を :first-of-type に限定し、他セクションからは撤去する。 */
body[data-template="structure"] .demo { --demo-bg: #e6e6e6; font-family: "Manrope", var(--gothic); }
body[data-template="structure"] .demo-hero { align-items: flex-end; text-align: left; min-height: clamp(420px, 70vh, 680px); }
body[data-template="structure"] .demo-hero-inner { margin: 0; max-width: 720px; }
body[data-template="structure"] .demo-hero-inner::before { display: none; }
body[data-template="structure"] .demo-hero-inner h1 { font-weight: 800; letter-spacing: 0; line-height: 1.2; }
body[data-template="structure"] .demo-hero-inner h1 span:first-child { display: block; font-weight: 300; font-size: .55em; margin-bottom: 6px; }
body[data-template="structure"] .demo-section { text-align: left; background: #fff; max-width: 100%; padding-left: clamp(24px, 5vw, 64px); padding-right: clamp(24px, 5vw, 64px); }
body[data-template="structure"] .demo-section:first-of-type { position: sticky; top: 0; box-shadow: 0 -10px 30px rgba(0,0,0,.08); }
body[data-template="structure"] .demo-section h2::after { margin: 18px 0 0; }
body[data-template="structure"] .demo-eyebrow { border-bottom: 2px solid var(--demo-ink); display: inline-block; padding-bottom: 4px; }
body[data-template="structure"] .demo-card { border: 0; border-radius: 0; background: #fff; }
body[data-template="structure"] .demo-contact { text-align: left; background: #111; color: #fff; margin: 0; padding: clamp(40px, 6vw, 80px) clamp(24px, 5vw, 64px) !important; max-width: 100%; }
body[data-template="structure"] .demo-contact h2, body[data-template="structure"] .demo-contact .demo-eyebrow { color: #fff; }

/* === LUMINA === */
/* 白単色1カラムテキストヒーロー、height85vh flex中央、罫線+余白のみのモノトーン */
body[data-template="lumina"] .demo-hero { background: #fff; min-height: 85vh; }
body[data-template="lumina"] .demo-hero-inner::before { content: ""; width: 1px; height: 46px; background: var(--accent); margin: 0 auto 26px; animation: lum-flow 2.4s ease-in-out infinite; }
@keyframes lum-flow { 0%, 100% { opacity: .25; } 50% { opacity: 1; } }
body[data-template="lumina"] .demo-hero-inner h1 { font-family: var(--serif); letter-spacing: .06em; }
body[data-template="lumina"] .demo-eyebrow { font-family: "Lato", var(--gothic); }
body[data-template="lumina"] .demo-section h2::after { background: #1a1a1a; opacity: .15; }
body[data-template="lumina"] .demo-card { border: 0; border-bottom: 1px solid #e0e0e0; background: none; border-radius: 0; text-align: left; display: flex; align-items: baseline; gap: 16px; transition: background .25s; }
body[data-template="lumina"] .demo-card:hover { background: #f2f2f2; }
body[data-template="lumina"] .demo-card h3 { font-family: var(--serif); margin: 0; }
body[data-template="lumina"] .demo-card-num { border-radius: 50px; border: 1px solid #1a1a1a; padding: 2px 12px; margin-left: auto; }

/* === INDEX === */
/* ヒーロー無し、横帯テキストヘッダー+2px黒罫線、モノスペース、テーブル的グリッド行 */
body[data-template="index"] .demo { --demo-bg: #fff; --demo-ink: #000; font-family: "Roboto Mono", var(--mono); font-weight: 300; font-size: 13px; }
body[data-template="index"] .demo-hero { display: flex; align-items: flex-end; justify-content: space-between; min-height: 0; padding: clamp(24px, 4vw, 48px) clamp(18px, 4vw, 48px); border-bottom: 2px solid #000; text-align: left; }
body[data-template="index"] .demo-hero-media, body[data-template="index"] .demo-hero-scrim, body[data-template="index"] .demo-hero-fallback { display: none; }
body[data-template="index"] .demo-hero-inner { margin: 0; padding: 0; color: #000; max-width: none; }
body[data-template="index"] .demo-hero-inner::before { display: none; }
body[data-template="index"] .demo-hero-inner h1 { font-size: 2rem; text-shadow: none; font-weight: 500; letter-spacing: 0; }
body[data-template="index"] .demo-lead { text-shadow: none; text-align: right; font-size: 12px; opacity: .7; color: var(--demo-ink); }
body[data-template="index"] .demo-section { text-align: left; }
body[data-template="index"] .demo-section h2::after { display: none; }
body[data-template="index"] .demo-card { border: 0; border-top: 1px solid #000; border-radius: 0; transition: background .2s; }
body[data-template="index"] .demo-card:hover { background: #e0e0e0; }
body[data-template="index"] .demo-cta { border-radius: 0; background: #000; }

/* === HARVEST === */
/* 単色ベージュ背景の中央ヒーロー(blurIn+slideUp)、円形マスク画像グリッド、SVGノイズ、和ベージュ×ブラウン×グリーン */
body[data-template="harvest"] .demo { --demo-bg: #f4ece4; --demo-ink: #5d4037; }
body[data-template="harvest"] .demo::before { content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.4'/%3E%3C/svg%3E");
  opacity: .05; }
body[data-template="harvest"] .demo-hero-inner h1 { font-family: "DM Serif Display", var(--serif); animation: hv-blur 2s ease-out; }
@keyframes hv-blur { from { filter: blur(10px); opacity: 0; } to { filter: blur(0); opacity: 1; } }
body[data-template="harvest"] .demo-lead { animation: hv-slide .8s ease-out .8s both; }
@keyframes hv-slide { from { transform: translateY(16px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
body[data-template="harvest"] .demo-card { border-radius: 50% 50% 0 0; text-align: center; border-color: color-mix(in srgb, #5d4037 24%, transparent); }
body[data-template="harvest"] .demo-card:nth-child(even) { border-radius: 0 0 50% 50%; }
body[data-template="harvest"] .demo-cta { background: #558b2f; }

/* === TIDE === */
/* 90vh背景写真+4層アニメSVG波、半透明白backdrop-blurの半楕円アーチカード、正円ESGバッジ、3色 */
body[data-template="tide"] .demo { --demo-bg: #f4f1ea; }
body[data-template="tide"] .demo-hero { min-height: 90vh; }
body[data-template="tide"] .demo-hero-inner { background: rgba(255,255,255,.66); backdrop-filter: blur(14px); border-radius: 50% 50% 0 0 / 20% 20% 0 0; padding: clamp(48px, 8vw, 96px) clamp(32px, 6vw, 72px) clamp(30px, 5vw, 56px); color: var(--demo-ink); }
body[data-template="tide"] .demo-hero-inner h1 { text-shadow: none; font-family: "Tenor Sans", var(--gothic); }
body[data-template="tide"] .demo-lead { color: var(--demo-ink); text-shadow: none; }
body[data-template="tide"] .demo-hero::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 60px; pointer-events: none;
  background: repeating-linear-gradient(90deg, rgba(255,255,255,.5) 0 40px, rgba(255,255,255,.2) 40px 80px);
  animation: td-wave 25s linear infinite; }
@keyframes td-wave { from { background-position-x: 0; } to { background-position-x: 400px; } }
body[data-template="tide"] .stat-row .stat { width: 140px; height: 140px; border-radius: 50%; border: 2px solid #4a6c4c; display: flex; flex-direction: column; align-items: center; justify-content: center; margin: 0 auto; }
body[data-template="tide"] .demo-card { border-radius: 12px; box-shadow: 0 10px 24px rgba(44,62,80,.1); overflow: hidden; }
body[data-template="tide"] .demo-card:hover img { transform: scale(1.1); }

/* ============================== POWERFUL ============================== */

/* === BEYOND === */
/* 巨大縦積みタイポがヒーロー画像の代わり。左sticky/右流れの非対称2カラムを全セクションへ拡張、極太罫線で区切る。 */
body[data-template="beyond"] .demo-hero { min-height: clamp(520px, 86vh, 860px); align-items: flex-end; padding-bottom: 0; }
body[data-template="beyond"] .demo-hero-scrim { background: none; }
body[data-template="beyond"] .demo-hero-media { mix-blend-mode: luminosity; opacity: .5; }
body[data-template="beyond"] .demo-hero-inner { max-width: none; width: 100%; padding: 0 clamp(18px, 4vw, 48px) clamp(20px, 3vw, 40px); }
body[data-template="beyond"] .demo-hero-inner::before { width: 100%; height: 2px; background: none; border-top: 2px solid var(--demo-ink); transform: none; margin-bottom: clamp(20px, 4vw, 48px); }
body[data-template="beyond"] .demo-hero-inner h1 { font-size: clamp(46px, 12vw, 128px); line-height: .84; letter-spacing: -.03em; text-shadow: none; text-transform: uppercase; }
body[data-template="beyond"] .demo-lead { max-width: 30em; margin-left: auto; text-shadow: none; }
body[data-template="beyond"] .demo-section { max-width: none; display: grid; grid-template-columns: minmax(180px, 30%) 1fr; gap: clamp(24px, 4vw, 56px); border-top: 2px solid var(--demo-ink); padding-top: clamp(40px, 6vw, 72px); }
body[data-template="beyond"] .demo-eyebrow { position: sticky; top: clamp(20px, 4vh, 60px); align-self: start; color: var(--demo-ink); opacity: .5; }
body[data-template="beyond"] .demo-section h2 { grid-column: 2; font-size: clamp(28px, 5vw, 56px); line-height: .92; }
body[data-template="beyond"] .demo-cards, body[data-template="beyond"] .demo-about, body[data-template="beyond"] .demo-message,
body[data-template="beyond"] .demo-table, body[data-template="beyond"] .stat-row, body[data-template="beyond"] .faq-list { grid-column: 2; }
body[data-template="beyond"] .demo-card { border: none; border-top: 2px solid var(--demo-ink); background: none; border-radius: 0; padding: 20px 0; }
body[data-template="beyond"] .demo-card-num { font-size: 44px; color: var(--accent); }
body[data-template="beyond"] .demo-cta { border-radius: 0; background: var(--accent); }

/* === AVANTGARDE === */
/* textHero: 漆黒背景+中抜きアウトライン巨大文字。画像の代わりにタイポの塊とノイズで密度を作る。 */
body[data-template="avantgarde"] .demo { --demo-bg: #050505; }
body[data-template="avantgarde"] .demo-hero { min-height: clamp(480px, 92vh, 820px); background: #050505; }
body[data-template="avantgarde"] .demo-hero-media, body[data-template="avantgarde"] .demo-hero-scrim { display: none; }
body[data-template="avantgarde"] .demo-hero-inner { max-width: none; padding-bottom: clamp(40px, 6vw, 80px); }
body[data-template="avantgarde"] .demo-hero-inner::before { width: 100%; height: 1px; background: rgba(255,255,255,.2); transform: none; }
body[data-template="avantgarde"] .demo-hero-inner h1 { font-size: clamp(38px, 10vw, 108px); line-height: .9; letter-spacing: .04em; text-transform: uppercase;
  color: transparent; -webkit-text-stroke: 1px var(--demo-ink); text-shadow: none; }
body[data-template="avantgarde"] .demo-lead { max-width: 26em; margin-left: auto; text-align: right; opacity: .7; }
body[data-template="avantgarde"] .demo-section h2 { color: transparent; -webkit-text-stroke: 1px var(--demo-ink); text-transform: uppercase; }
body[data-template="avantgarde"] .demo-cards { grid-template-columns: repeat(2, 1fr); gap: 1px; background: #222; }
body[data-template="avantgarde"] .demo-card { background: #0a0a0a; border: 0; border-radius: 0; }
body[data-template="avantgarde"] .demo-card:nth-child(even) { margin-top: clamp(28px, 5vw, 64px); }
body[data-template="avantgarde"] .demo-card-num { color: var(--demo-ink); opacity: .4; }
body[data-template="avantgarde"] .demo-message blockquote { border-left: 0; border-top: 1px solid var(--demo-ink); padding: 20px 0 0; font-weight: 400; }
body[data-template="avantgarde"] .demo-cta { border-radius: 0; background: transparent; border: 1px solid var(--demo-ink); color: var(--demo-ink); }
body[data-template="avantgarde"] .demo-cta:hover { background: var(--demo-ink); color: #050505; filter: none; }

/* === NEXUS === */
/* 固定粒子背景の代わりに青系放射グラデをfixedレイヤーで敷き、ガラスモーフィズムカードで浮かせる。 */
body[data-template="nexus"] .demo { --demo-bg: #0a1520; position: relative; }
body[data-template="nexus"] .demo::before { content: ""; position: fixed; inset: 0; z-index: 0; pointer-events: none;
  background: radial-gradient(circle at 20% 30%, color-mix(in srgb, var(--accent) 30%, transparent), transparent 55%),
              radial-gradient(circle at 82% 70%, color-mix(in srgb, var(--accent) 22%, transparent), transparent 60%); }
body[data-template="nexus"] .demo-nav, body[data-template="nexus"] .demo-hero, body[data-template="nexus"] .demo-section, body[data-template="nexus"] .demo-footer { position: relative; z-index: 1; }
body[data-template="nexus"] .demo-hero { align-items: center; min-height: clamp(460px, 78vh, 720px); }
body[data-template="nexus"] .demo-hero-scrim { background: linear-gradient(0deg, rgba(6,10,16,.8), rgba(6,10,16,.25) 60%); }
body[data-template="nexus"] .demo-hero-inner { background: rgba(255,255,255,.05); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
  border: 1px solid rgba(255,255,255,.12); border-radius: 20px; padding: clamp(30px, 5vw, 56px); }
body[data-template="nexus"] .demo-hero-inner h1 { font-weight: 600; letter-spacing: 0; }
body[data-template="nexus"] .demo-card { background: rgba(255,255,255,.05); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(255,255,255,.1); border-top: 1px solid rgba(255,255,255,.1); border-radius: 18px; position: relative; overflow: hidden; }
body[data-template="nexus"] .demo-card::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 5px;
  background: linear-gradient(180deg, var(--accent), transparent); }
body[data-template="nexus"] .demo-card-num { font-weight: 500; opacity: .8; }
body[data-template="nexus"] .demo-message blockquote { background: rgba(255,255,255,.04); border-left-width: 3px; border-radius: 0 14px 14px 0; padding: 24px clamp(18px, 3vw, 32px); }
body[data-template="nexus"] .demo-cta { border-radius: 999px; }

/* === ORBIT === */
/* textHero: 中心固定の同心円軌道+星空を疑似要素で再現、見出しは中央でglow明滅。 */
body[data-template="orbit"] .demo { --demo-bg: #000000; }
body[data-template="orbit"] .demo-hero { min-height: clamp(480px, 96vh, 880px); align-items: center; justify-content: center; text-align: center;
  background-image: radial-gradient(1px 1px at 12% 22%, rgba(255,255,255,.7), transparent),
    radial-gradient(1px 1px at 78% 14%, rgba(255,255,255,.5), transparent),
    radial-gradient(1.5px 1.5px at 60% 68%, rgba(255,255,255,.6), transparent),
    radial-gradient(1px 1px at 30% 82%, rgba(255,255,255,.5), transparent); }
body[data-template="orbit"] .demo-hero-media, body[data-template="orbit"] .demo-hero-scrim { display: none; }
body[data-template="orbit"] .demo-hero::before, body[data-template="orbit"] .demo-hero::after { content: ""; position: absolute; left: 50%; top: 50%;
  border: 1px solid color-mix(in srgb, var(--accent) 45%, transparent); border-radius: 50%; transform: translate(-50%, -50%); pointer-events: none; }
body[data-template="orbit"] .demo-hero::before { width: min(70vw, 620px); height: min(70vw, 620px); }
body[data-template="orbit"] .demo-hero::after { width: min(46vw, 380px); height: min(46vw, 380px); }
body[data-template="orbit"] .demo-hero-inner { max-width: 34em; margin: 0 auto; padding: 0; }
body[data-template="orbit"] .demo-hero-inner::before { display: none; }
body[data-template="orbit"] .demo-hero-inner h1 { font-size: clamp(28px, 5vw, 44px); letter-spacing: .2em; text-transform: uppercase;
  text-shadow: 0 0 18px color-mix(in srgb, var(--accent) 70%, transparent); }
body[data-template="orbit"] .demo-lead { letter-spacing: .12em; text-align: center; }
body[data-template="orbit"] .demo-section { text-align: center; }
body[data-template="orbit"] .demo-section h2 { letter-spacing: .1em; }
body[data-template="orbit"] .demo-cards { justify-items: center; }
body[data-template="orbit"] .demo-card { border-top: 0; border: 1px solid rgba(255,255,255,.14); border-radius: 50%; aspect-ratio: 1; display: flex;
  flex-direction: column; align-items: center; justify-content: center; text-align: center; filter: grayscale(1); transition: filter .4s; }
body[data-template="orbit"] .demo-card:hover { filter: grayscale(0); border-color: var(--accent); }
body[data-template="orbit"] .demo-table { margin-inline: auto; }
body[data-template="orbit"] .demo-cta { border-radius: 999px; }

/* === TITAN === */
/* 工業的斜めカット。特大コピー+黄アクセントの太い左罫線、カードは右下を切り落とす。 */
body[data-template="titan"] .demo { --demo-bg: #14151a; }
body[data-template="titan"] .demo-hero { min-height: clamp(440px, 80vh, 760px); }
body[data-template="titan"] .demo-hero-scrim { background: linear-gradient(0deg, rgba(6,7,10,.82) 18%, rgba(6,7,10,.15) 70%); }
body[data-template="titan"] .demo-hero-inner::before { width: 90px; height: 8px; clip-path: polygon(0 0, 100% 0, 88% 100%, 0 100%); }
body[data-template="titan"] .demo-hero-inner h1 { font-size: clamp(38px, 8vw, 96px); line-height: .95; text-transform: uppercase; letter-spacing: 0; }
body[data-template="titan"] .demo-eyebrow { letter-spacing: .4em; }
body[data-template="titan"] .demo-section h2 { border-left: 10px solid var(--accent); padding-left: .5em; line-height: 1.15; }
body[data-template="titan"] .demo-cards { gap: clamp(16px, 3vw, 28px); }
body[data-template="titan"] .demo-card { border-top: 0; border-radius: 0; clip-path: polygon(0 0, 100% 0, 100% 85%, 92% 100%, 0 100%); position: relative; }
body[data-template="titan"] .demo-card::after { content: ""; position: absolute; inset: 0 0 auto 0; height: 3px; background: var(--accent); }
body[data-template="titan"] .demo-table th { color: var(--accent); opacity: 1; }
body[data-template="titan"] .demo-message blockquote { clip-path: polygon(0 0, 100% 0, 100% 94%, 97% 100%, 0 100%); background: color-mix(in srgb, var(--demo-bg) 92%, #fff 3%); padding: 24px clamp(18px, 3vw, 32px); }
body[data-template="titan"] .demo-cta { border-radius: 0; clip-path: polygon(0 0, 100% 0, 100% 78%, 94% 100%, 0 100%); background: var(--accent); color: #14151a; font-weight: 700; }

/* ============================== MINIMAL ============================== */

/* === EDITORIAL === */
/* 12colグリッドの千鳥組版 + はみ出すワーク情報 + ジャスティファイ組版の雑誌面 */
body[data-template="editorial"] .demo-hero {
  grid-template-columns: repeat(12, 1fr);
  gap: clamp(20px, 3vw, 40px);
}
body[data-template="editorial"] .demo-hero-inner { grid-column: 1 / 8; order: 0; }
body[data-template="editorial"] .demo-hero-media,
body[data-template="editorial"] .demo-hero-fallback { grid-column: 6 / 13; order: 2; aspect-ratio: 3 / 4; margin-top: clamp(0px, 4vw, 64px); }
body[data-template="editorial"] .demo-hero-inner h1 {
  font-family: var(--serif); font-size: clamp(28px, 4.6vw, 52px); line-height: 1.28; letter-spacing: .01em;
}
body[data-template="editorial"] .demo-hero-inner h1::before { width: 46px; }
body[data-template="editorial"] .demo-lead { font-style: italic; max-width: 30em; }
@media (max-width: 900px) {
  body[data-template="editorial"] .demo-hero { grid-template-columns: 1fr; }
  body[data-template="editorial"] .demo-hero-media, body[data-template="editorial"] .demo-hero-fallback { margin-top: 0; }
}
body[data-template="editorial"] .demo-section h2 { font-family: var(--serif); font-size: 20px; font-weight: 600; letter-spacing: .04em; }
body[data-template="editorial"] .demo-cards { gap: clamp(20px, 4vw, 44px) 20px; align-items: start; }
body[data-template="editorial"] .demo-cards > .demo-card:nth-child(even) { margin-top: clamp(0px, 3vw, 40px); }
body[data-template="editorial"] .demo-card { border-top: 0; padding: 0; position: relative; }
body[data-template="editorial"] .demo-card-num { position: absolute; top: 0; right: 0; opacity: .5; }
body[data-template="editorial"] .demo-card h3 { border-bottom: 1px solid transparent; transition: border-color .3s; padding-bottom: 4px; }
body[data-template="editorial"] .demo-card:hover h3 { border-color: var(--accent); }
body[data-template="editorial"] .demo-about, body[data-template="editorial"] .article-body p { text-align: justify; }

/* === GLASS === */
/* ガラスモルフィズムの単一プロフィールカード + 浮遊ブロブ背景 */
body[data-template="glass"] .demo { position: relative; overflow: visible; --demo-bg: #f4f2ee; }
body[data-template="glass"]::before, body[data-template="glass"]::after {
  content: ""; position: fixed; z-index: 0; border-radius: 50%; filter: blur(60px); pointer-events: none;
}
body[data-template="glass"]::before { width: 46vw; height: 46vw; top: -10vw; right: -12vw; background: color-mix(in srgb, var(--accent) 45%, #ffafbd); }
body[data-template="glass"]::after { width: 38vw; height: 38vw; bottom: -14vw; left: -10vw; background: color-mix(in srgb, var(--accent) 20%, #2193b0); }
body[data-template="glass"] .demo-hero {
  display: block; max-width: 640px; margin: 0 auto; text-align: center; padding-top: clamp(64px, 10vw, 110px);
}
body[data-template="glass"] .demo-hero-media, body[data-template="glass"] .demo-hero-fallback {
  position: static; width: 132px; aspect-ratio: 1; border-radius: 50%; margin: 0 auto 24px;
  border: 4px solid #fff; box-shadow: 0 12px 30px rgba(20,20,20,.14);
}
body[data-template="glass"] .demo-hero-inner { padding: 0; background: rgba(255,255,255,.4); backdrop-filter: blur(16px); border: 1px solid rgba(255,255,255,.6); border-radius: 24px; padding: clamp(28px, 5vw, 44px); }
body[data-template="glass"] .demo-hero-inner h1::before { margin-inline: auto; }
body[data-template="glass"] .demo-section, body[data-template="glass"] .demo-nav { position: relative; z-index: 1; }
body[data-template="glass"] .demo-card {
  background: rgba(255,255,255,.35); backdrop-filter: blur(14px); border: 1px solid rgba(255,255,255,.55);
  border-radius: 20px; border-top: 1px solid rgba(255,255,255,.55); padding: 26px 24px;
}
body[data-template="glass"] .demo-cta { border-radius: 999px; }

/* === MONO === */
/* 左35%固定サイドバー(hero兼)+右65%スクロール領域の完全モノクロ */
body[data-template="mono"] .demo { --demo-bg: #111114; --demo-ink: #f2f2f0; }
body[data-template="mono"] .demo-nav { display: none; }
body[data-template="mono"] .demo-hero {
  min-height: clamp(320px, 52vh, 520px); display: flex; flex-direction: column; justify-content: center;
  padding: clamp(32px, 4vw, 64px); border-bottom: 1px solid #333; background: #111114;
}
body[data-template="mono"] .demo-hero-media, body[data-template="mono"] .demo-hero-fallback { display: none; }
body[data-template="mono"] .demo-hero-inner h1 { color: #f2f2f0; }
body[data-template="mono"] .demo-hero-inner h1::before { background: #888; }
body[data-template="mono"] .demo-lead { color: #888; opacity: 1; }
body[data-template="mono"] .demo-section, body[data-template="mono"] .demo-footer {
   border-top-color: #2a2a2a;
}
@media (max-width: 860px) {
  body[data-template="mono"] .demo-hero { position: static; width: auto; min-height: 0; border-right: 0; border-bottom: 1px solid #333; }
  body[data-template="mono"] .demo-section, body[data-template="mono"] .demo-footer { margin-left: 0; }
}
body[data-template="mono"] .demo-card { border-top-color: #333; }
body[data-template="mono"] .demo-card h3 { color: #f2f2f0; }
body[data-template="mono"] .demo-card p { color: #888; }
body[data-template="mono"] .demo-table th, body[data-template="mono"] .demo-table td { border-bottom-color: #2a2a2a; }
body[data-template="mono"] .demo-cta { background: #f2f2f0; color: #111; border-radius: 0; }

/* === PAPER === */
/* 紙面メタファー: 浮く1段組 + タイポのみのヒーロー + 見出し両脇hairline */
body[data-template="paper"] .demo { --demo-bg: #f7f5f0; }
body[data-template="paper"] .demo-hero { display: block; text-align: center; min-height: 0; padding: clamp(70px, 12vw, 130px) clamp(18px, 4vw, 48px) 0; }
body[data-template="paper"] .demo-hero-media, body[data-template="paper"] .demo-hero-fallback { display: none; }
body[data-template="paper"] .demo-hero-inner {
  max-width: 720px; margin: 0 auto; background: #fff; border-left: 1px solid #e3ddd0; border-right: 1px solid #e3ddd0;
  box-shadow: 0 25px 50px rgba(20,20,20,.1); padding: clamp(40px, 6vw, 68px) clamp(24px, 5vw, 48px);
}
body[data-template="paper"] .demo-hero-inner h1 { font-family: var(--serif); font-size: clamp(30px, 4.4vw, 46px); }
body[data-template="paper"] .demo-hero-inner h1::before { margin-inline: auto; }
body[data-template="paper"] .demo-lead { max-width: 32em; margin-inline: auto; line-height: 2; }
body[data-template="paper"] .demo-section { text-align: center; }
body[data-template="paper"] .demo-section h2 {
  display: flex; align-items: center; gap: 16px; justify-content: center; font-family: var(--serif); font-style: italic; font-weight: 500;
}
body[data-template="paper"] .demo-section h2::before, body[data-template="paper"] .demo-section h2::after {
  content: ""; flex: 0 0 3rem; height: 1px; background: #d8d2c4;
}
body[data-template="paper"] .demo-eyebrow::before { content: none; }
body[data-template="paper"] .demo-about, body[data-template="paper"] .demo-message blockquote { margin-inline: auto; }
body[data-template="paper"] .demo-cards { justify-items: center; }
body[data-template="paper"] .demo-card { border-top: 0; text-align: center; max-width: 320px; }

/* === FOLIO === */
/* 全高左寄せヒーロー背景に巨大薄字PORT/FOLIO + 採番システム(01/02/03) */
body[data-template="folio"] .demo-hero { position: relative; min-height: clamp(420px, 78vh, 720px); overflow: hidden; grid-template-columns: 1fr; }
body[data-template="folio"] .demo-hero-media, body[data-template="folio"] .demo-hero-fallback { display: none; }
body[data-template="folio"] .demo-hero::before {
  content: "FOLIO"; position: absolute; right: clamp(-40px, -2vw, 0px); top: 50%; transform: translateY(-50%);
  font-family: var(--grotesk); font-weight: 700; font-size: 15vw; color: var(--demo-ink); opacity: .06; mix-blend-mode: multiply;
  pointer-events: none; line-height: 1; white-space: nowrap;
}
body[data-template="folio"] .demo-hero-inner { align-self: flex-end; padding-bottom: clamp(40px, 8vw, 80px); }
body[data-template="folio"] .demo-hero-inner h1::before { display: none; }
body[data-template="folio"] .demo-section { position: relative; }
body[data-template="folio"] .demo-eyebrow { color: #9ca3af; opacity: 1; font-size: 10px; }
body[data-template="folio"] .demo-eyebrow::before { content: counter(sec, decimal-leading-zero) " / "; }
body[data-template="folio"] .demo-cards { gap: clamp(24px, 4vw, 40px); }
body[data-template="folio"] .demo-card { border-top: 0; padding-left: 0; }
body[data-template="folio"] .demo-card h3::before { content: ""; display: block; width: 32px; height: 2px; background: var(--demo-ink); margin-bottom: 14px; }
body[data-template="folio"] .demo-cta { border-radius: 0; }
body[data-template="folio"] .demo-footer { background: #0a0a0a; color: #f8f8f8; opacity: 1; }

/* === SWISS === */
/* 左固定サイドバー+右スクロールの2カラムそのものがヒーロー、太番号、グリッド罫線 */
body[data-template="swiss"] .demo {
  display: grid; grid-template-columns: 1fr 1fr; align-items: start; position: relative;
  background-image: linear-gradient(90deg, transparent 49.9%, #eee 50%, transparent 50.1%);
}
body[data-template="swiss"] .demo-nav { grid-column: 1 / 3; }
body[data-template="swiss"] .demo-hero {
  grid-column: 1 / 2; position: sticky; top: 0; align-self: start; min-height: 100vh; display: flex;
  flex-direction: column; justify-content: center;
}
body[data-template="swiss"] .demo-hero-media, body[data-template="swiss"] .demo-hero-fallback { display: none; }
body[data-template="swiss"] .demo-hero-inner h1 { font-weight: 900; text-transform: uppercase; letter-spacing: -.02em; font-size: clamp(26px, 3.4vw, 42px); }
body[data-template="swiss"] .demo-hero-inner h1::before { display: none; }
body[data-template="swiss"] .demo-section, body[data-template="swiss"] .demo-footer { grid-column: 2 / 3; border-top: 0; }
body[data-template="swiss"] .demo-section:first-of-type { padding-top: clamp(48px, 8vw, 96px); }
@media (max-width: 900px) {
  body[data-template="swiss"] .demo { display: block; background-image: none; }
  body[data-template="swiss"] .demo-hero { position: static; min-height: 0; }
}
body[data-template="swiss"] .demo-card { position: relative; padding-left: 0; }
body[data-template="swiss"] .demo-card-num { position: absolute; left: -6px; top: 0; transform: translateX(-100%); color: var(--accent); font-weight: 700; }
body[data-template="swiss"] .demo-cta { border-radius: 0; }

/* ============================== ATMOSPHERE ============================== */

/* === LIQUID === */
/* 液状マルチカラーグラデ背景+ ガラス調ピルリンク。ヒーロー中央揃え・千鳥グリッド。 */
body[data-template="liquid"] { position: relative; }
body[data-template="liquid"]::before {
  content: ""; position: fixed; inset: -10%; z-index: -1; pointer-events: none;
  background: linear-gradient(115deg, #1a2a6c, #b21f1f, #fdbb2d, #22c1c3, #fdbb2d, #1a2a6c);
  background-size: 400% 400%;
  animation: liquid-drift 18s ease infinite;
  filter: saturate(1.05);
}
@keyframes liquid-drift { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
body[data-template="liquid"] .demo { --demo-bg: transparent; --demo-ink: #fff; background: rgba(10,8,18,.28); }
body[data-template="liquid"] .demo-nav { background: rgba(255,255,255,.08); backdrop-filter: blur(10px); border-bottom-color: rgba(255,255,255,.16); }
body[data-template="liquid"] .demo-nav-cta { border-radius: 999px; background: rgba(0,0,0,.22); backdrop-filter: blur(4px); }
body[data-template="liquid"] .demo-hero { align-items: center; justify-content: center; text-align: center; }
body[data-template="liquid"] .demo-hero-inner { display: flex; flex-direction: column; align-items: center; }
body[data-template="liquid"] .demo-hero-vert { writing-mode: horizontal-tb; position: static; text-align: center; font-size: clamp(30px, 6vw, 60px); text-transform: uppercase; letter-spacing: .04em; margin-bottom: 10px; }
body[data-template="liquid"] .demo-lead { max-width: 34rem; }
body[data-template="liquid"] .demo-cards { gap: clamp(20px, 4vw, 40px); }
body[data-template="liquid"] .demo-card { aspect-ratio: 3 / 4; display: flex; flex-direction: column; justify-content: flex-end; background: rgba(255,255,255,.14); backdrop-filter: blur(6px); border-color: rgba(255,255,255,.24); }
body[data-template="liquid"] .demo-cards .demo-card:nth-child(even) { transform: translateY(clamp(16px, 4vw, 40px)); }
body[data-template="liquid"] .demo-card h3, body[data-template="liquid"] .demo-card p { color: #fff; }
body[data-template="liquid"] .demo-cta { border-radius: 999px; background: rgba(0,0,0,.22); backdrop-filter: blur(4px); }
body[data-template="liquid"] .demo-cta:hover { background: #fff; color: #1a1a1a; }

/* === NOIR === */
/* 漆黒×生成り×金の2トーン。縦書き巨大透かし。姓名はセリフ+金、カードは千鳥+モノクロ→hoverで金縁。 */
body[data-template="noir"] .demo { --demo-bg: #050505; --demo-ink: #f0f0f0; }
body[data-template="noir"] .demo-nav { border-bottom-color: rgba(212,175,55,.28); }
body[data-template="noir"] .demo-brand { color: #d4af37; letter-spacing: .28em; }
body[data-template="noir"] .demo-hero { align-items: flex-end; }
body[data-template="noir"] .demo-hero-vert { font-size: clamp(80px, 16vw, 220px); opacity: .05; letter-spacing: .02em; color: #f0f0f0; text-shadow: none; top: 0; bottom: 0; right: clamp(-20px, 2vw, 10px); }
body[data-template="noir"] .demo-hero-inner h1 { display: block; font-style: italic; color: #d4af37; letter-spacing: .06em; }
body[data-template="noir"] .demo-lead { border-left: 1px solid rgba(212,175,55,.4); padding-left: 1.2em; }
body[data-template="noir"] .demo-section h2 { color: #d4af37; }
body[data-template="noir"] .demo-cards .demo-card:nth-child(even) { transform: translateY(clamp(20px, 4vw, 48px)); }
body[data-template="noir"] .demo-card { background: rgba(255,255,255,.03); border-color: rgba(212,175,55,.22); transition: border-color .4s; }
body[data-template="noir"] .demo-card:hover { border-color: #d4af37; }
body[data-template="noir"] .demo-card-num { color: #d4af37; font-family: var(--grotesk); letter-spacing: .2em; }
body[data-template="noir"] .demo-message blockquote { border-left-color: #d4af37; font-style: italic; }
body[data-template="noir"] .demo-cta { border: 1px solid #d4af37; background: transparent; color: #d4af37; }
body[data-template="noir"] .demo-cta:hover { background: #d4af37; color: #050505; }
body[data-template="noir"] .demo-footer { border-top-color: rgba(212,175,55,.2); }

/* === ORGANIC === */
/* 有機的ブロブ・丸ゴシック・クリームベージュ×セージ。単一縦積み名刺型。 */
body[data-template="organic"] .demo { --demo-bg: #f7f3e8; --demo-ink: #5d574d; font-family: var(--gothic); }
body[data-template="organic"] .demo-hero { min-height: 0; padding: clamp(48px, 9vw, 96px) 0; }
body[data-template="organic"] .demo-hero-media { border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; max-width: 220px; margin: 0 auto; aspect-ratio: 1; box-shadow: 10px 10px 0 #a4b38d; }
body[data-template="organic"] .demo-hero-scrim { display: none; }
body[data-template="organic"] .demo-hero-inner { position: static; text-align: center; color: var(--demo-ink); padding-top: 28px; }
body[data-template="organic"] .demo-hero-vert { display: none; }
body[data-template="organic"] .demo-hero-inner h1 { display: block; color: var(--demo-ink); text-shadow: none; }
body[data-template="organic"] .demo-lead { color: var(--demo-ink); text-shadow: none; display: inline-block; background: #fff; border-radius: 999px; padding: .5em 1.4em; margin-top: .6em; }
body[data-template="organic"] .demo-section h2 { color: #5d574d; }
body[data-template="organic"] .demo-card { border-radius: 40% 60% 30% 70% / 50% 40% 60% 50%; background: #fff; border-color: rgba(93,87,77,.14); }
body[data-template="organic"] .demo-cards .demo-card:nth-child(even) { border-radius: 30% 70% 60% 40% / 40% 50% 50% 60%; }
body[data-template="organic"] .demo-card-num { background: #a4b38d; color: #fff; border-radius: 999px; padding: 3px 12px; }
body[data-template="organic"] .demo-message blockquote { background: #fff; border-radius: 30px 30px 30px 4px; border-left: 6px solid #a4b38d; padding: 1.4em 1.6em; }
body[data-template="organic"] .demo-cta { border-radius: 999px; background: #a4b38d; }
body[data-template="organic"] .demo-footer { border-top: none; border-radius: 50% 50% 0 0 / 14% 14% 0 0; background: #efe8d6; margin-top: clamp(20px, 4vw, 40px); }

/* ============================== VIVID ============================== */

/* === BOLD === */
/* ヒーロー: 全幅単カラム+-5°回転バッジ+巨大英字見出し+太罫線区切り2カラム。ネオブルータリズム。 */
body[data-template="bold"] .demo { font-family: var(--gothic); }
body[data-template="bold"] .demo-nav { border-bottom: 4px solid var(--demo-ink); }
body[data-template="bold"] .demo-hero { display: block; min-height: 0; padding: clamp(28px, 5vw, 56px) clamp(18px, 4vw, 48px) 0; }
body[data-template="bold"] .demo-hero-media, body[data-template="bold"] .demo-hero-scrim, body[data-template="bold"] .demo-hero-fallback { display: none; }
body[data-template="bold"] .demo-hero-inner { position: relative; padding: 0; color: var(--demo-ink); max-width: none; }
body[data-template="bold"] .demo-hero-inner::before {
  content: "PORTFOLIO v.1.1"; position: absolute; top: -14px; right: 0; transform: rotate(-5deg);
  background: var(--demo-ink); color: var(--demo-bg); font-family: var(--grotesk); font-size: 11px; letter-spacing: .16em;
  padding: 7px 16px; }
body[data-template="bold"] .demo-hero-inner h1 {
  font-family: var(--grotesk); font-weight: 900; text-transform: uppercase;
  font-size: clamp(38px, 9vw, 108px); line-height: .84; letter-spacing: -.01em; text-shadow: none;
  border-top: 4px solid var(--demo-ink); padding-top: 22px; margin-top: 26px; }
body[data-template="bold"] .demo-hero-inner h1 mark { background: none; color: var(--accent); }
body[data-template="bold"] .demo-lead { color: var(--demo-ink); opacity: 1; text-shadow: none; max-width: 34em; border-top: 4px solid var(--demo-ink); padding-top: 18px; margin-top: 30px; }
body[data-template="bold"] .demo-section h2 { font-family: var(--grotesk); text-transform: uppercase; }
body[data-template="bold"] .demo-card { border-width: 4px; box-shadow: 8px 8px 0 0 var(--demo-ink); transition: transform .2s, box-shadow .2s; }
body[data-template="bold"] .demo-card:nth-child(2), body[data-template="bold"] .demo-card:nth-child(3) { transform: none; }
body[data-template="bold"] .demo-card:hover { transform: translate(-4px, -4px); box-shadow: 12px 12px 0 0 var(--demo-ink); }
body[data-template="bold"] .demo-card-num { border-radius: 0; }
body[data-template="bold"] .demo-message blockquote { border-left-width: 6px; border-left-style: solid; border-color: var(--demo-ink); font-family: var(--grotesk); }
body[data-template="bold"] .demo-cta { border-radius: 0; border: 4px solid var(--demo-ink); box-shadow: 6px 6px 0 0 var(--demo-ink); }

/* === CYBER === */
/* ヒーロー: 左寄せテキストのみ+ネオン二重シャドウ見出し+マゼンタ左罫線bio。固定格子レイヤー(装飾)。 */
body[data-template="cyber"] .demo { --demo-bg: #05060a; --demo-ink: #d8f4ff; font-family: var(--mono, monospace); position: relative; }
body[data-template="cyber"] .demo::before {
  content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 0;
  background:
    repeating-linear-gradient(100deg, color-mix(in srgb, var(--accent) 12%, transparent) 0 1px, transparent 1px 90px),
    repeating-linear-gradient(190deg, rgba(0,255,255,.08) 0 1px, transparent 1px 70px); }
body[data-template="cyber"] .demo-nav { border-bottom: 1px solid color-mix(in srgb, var(--accent) 50%, transparent); position: relative; z-index: 1; }
body[data-template="cyber"] .demo-hero { min-height: clamp(420px, 80vh, 760px); align-items: center; position: relative; z-index: 1; }
body[data-template="cyber"] .demo-hero-media, body[data-template="cyber"] .demo-hero-scrim, body[data-template="cyber"] .demo-hero-fallback { display: none; }
body[data-template="cyber"] .demo-hero-inner { padding: 0 clamp(18px, 4vw, 48px); max-width: 760px; }
body[data-template="cyber"] .demo-hero-inner::before {
  content: "< Role />"; display: inline-block; font-family: var(--mono, monospace); font-size: 12px; letter-spacing: .12em;
  color: var(--accent); border: 1px solid var(--accent); padding: 5px 14px; margin-bottom: 24px; }
body[data-template="cyber"] .demo-hero-inner h1 {
  font-weight: 800; text-shadow: 0 0 10px var(--accent), 2px 2px 0 #ff00ff; letter-spacing: .02em; }
body[data-template="cyber"] .demo-lead {
  border-left: 4px solid #ff00ff; padding-left: 18px; opacity: .9; }
body[data-template="cyber"] .demo-section h2 { text-shadow: 0 0 8px color-mix(in srgb, var(--accent) 60%, transparent); }
body[data-template="cyber"] .demo-card { background: #0d0f16; border-color: color-mix(in srgb, var(--accent) 40%, transparent); position: relative; overflow: hidden; }
body[data-template="cyber"] .demo-card:nth-child(2), body[data-template="cyber"] .demo-card:nth-child(3) { transform: none; }
body[data-template="cyber"] .demo-card:hover { border-color: #ff00ff; box-shadow: 0 0 20px rgba(255,0,255,.5); }
body[data-template="cyber"] .demo-card::after {
  content: ""; position: absolute; top: 8px; right: 8px; width: 14px; height: 14px;
  border-top: 2px solid var(--accent); border-right: 2px solid var(--accent); opacity: .7; }
body[data-template="cyber"] .demo-card-num { background: none; color: var(--accent); box-shadow: none; text-shadow: 0 0 6px var(--accent); }
body[data-template="cyber"] .demo-cta { border-radius: 2px; box-shadow: 0 0 16px color-mix(in srgb, var(--accent) 60%, transparent); }
body[data-template="cyber"] .demo-footer { position: relative; z-index: 1; }

/* === POP === */
/* ヒーロー: 白カード中央1カラム、氏名/バッジがステッカーのように貼られた紙面。ポップ配色。 */
body[data-template="pop"] .demo { --demo-bg: #ffde00; --demo-ink: #16130a; font-family: var(--gothic); }
body[data-template="pop"] .demo-nav { background: var(--demo-bg); border-bottom: 4px solid var(--demo-ink); }
body[data-template="pop"] .demo-hero { display: block; min-height: 0; max-width: 1000px; margin: 0 auto; padding: clamp(32px, 6vw, 64px) clamp(18px, 4vw, 48px); }
body[data-template="pop"] .demo-hero-media, body[data-template="pop"] .demo-hero-scrim, body[data-template="pop"] .demo-hero-fallback { display: none; }
body[data-template="pop"] .demo-hero-inner {
  padding: clamp(28px, 5vw, 48px); background: #fff; color: var(--demo-ink); max-width: none;
  border: 4px solid var(--demo-ink); box-shadow: 10px 10px 0 0 var(--demo-ink); text-align: center; }
body[data-template="pop"] .demo-hero-inner h1 {
  display: inline-block; transform: rotate(-2deg); text-shadow: 4px 4px 0 var(--accent); text-transform: uppercase; }
body[data-template="pop"] .demo-hero-inner::before {
  content: "Role"; display: block; width: max-content; margin: 18px auto 0; transform: rotate(2deg);
  background: #4ecdc4; color: var(--demo-ink); font-family: var(--grotesk); font-size: 12px; letter-spacing: .1em;
  border: 2px solid var(--demo-ink); box-shadow: 4px 4px 0 0 var(--demo-ink); padding: 6px 18px; }
body[data-template="pop"] .demo-lead { margin-top: 22px; text-shadow: none; opacity: 1; }
body[data-template="pop"] .demo-section { background: #fff; border: 4px solid var(--demo-ink); max-width: 940px; margin: clamp(28px, 5vw, 48px) auto; padding: clamp(30px, 5vw, 56px); position: relative; }
body[data-template="pop"] .demo-section::before {
  content: ""; position: absolute; top: -6px; left: 30px; width: 70px; height: 18px;
  background: color-mix(in srgb, #4ecdc4 70%, transparent); transform: rotate(-2deg); }
body[data-template="pop"] .demo-section h2 { transform: rotate(-1deg); display: inline-block; }
body[data-template="pop"] .demo-card { box-shadow: 6px 6px 0 0 var(--demo-ink); }
body[data-template="pop"] .demo-card:nth-child(2) { transform: rotate(1.4deg); }
body[data-template="pop"] .demo-card:nth-child(3) { transform: rotate(-1.4deg); }
body[data-template="pop"] .demo-card-num { border-radius: 0; border: 2px solid var(--demo-ink); box-shadow: 2px 2px 0 0 var(--demo-ink); }
body[data-template="pop"] .demo-cta { border-radius: 0; border: 4px solid var(--demo-ink); box-shadow: 6px 6px 0 0 var(--demo-ink); }

/* === Y2K === */
/* ヒーロー: ダークグラデ背景中央1カラム、クロームメタリック見出し+ネオン縁バッジ。カードは黒背景ネオン枠。 */
body[data-template="y2k"] .demo { --demo-bg: #120a24; --demo-ink: #f1e9ff; font-family: var(--gothic); position: relative; overflow-x: hidden; }
body[data-template="y2k"] .demo::before {
  content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 0;
  background:
    radial-gradient(60% 50% at 50% 0%, color-mix(in srgb, var(--accent) 30%, transparent), transparent 70%),
    repeating-linear-gradient(0deg, rgba(255,0,255,.05) 0 1px, transparent 1px 40px),
    repeating-linear-gradient(90deg, rgba(0,255,255,.05) 0 1px, transparent 1px 40px); }
body[data-template="y2k"] .demo-nav { position: relative; z-index: 1; border-bottom: 1px solid rgba(255,0,255,.3); }
body[data-template="y2k"] .demo-hero { min-height: clamp(420px, 76vh, 720px); justify-content: center; text-align: center; position: relative; z-index: 1; }
body[data-template="y2k"] .demo-hero-media, body[data-template="y2k"] .demo-hero-scrim, body[data-template="y2k"] .demo-hero-fallback { display: none; }
body[data-template="y2k"] .demo-hero-inner { margin: 0 auto; padding: 0 clamp(18px, 4vw, 48px); }
body[data-template="y2k"] .demo-hero-inner::before { content: "🪐"; display: block; font-size: clamp(28px, 4vw, 44px); margin-bottom: 14px; }
body[data-template="y2k"] .demo-hero-inner h1 {
  font-family: var(--grotesk); text-transform: uppercase;
  background: linear-gradient(180deg, #fff 0%, #b9c2d0 30%, #fff 50%, #8f97a8 70%, #fff 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
  filter: drop-shadow(0 0 12px var(--accent)); text-shadow: none; }
body[data-template="y2k"] .demo-hero-inner::after {
  content: "ROLE"; display: inline-block; margin-top: 18px; font-family: var(--grotesk); font-size: 12px; letter-spacing: .2em;
  transform: skewX(-8deg); color: #ff00ff; text-shadow: 0 0 8px #ff00ff, 0 0 16px #00ffff; }
body[data-template="y2k"] .demo-lead { text-shadow: 0 0 10px rgba(0,255,255,.4); }
body[data-template="y2k"] .demo-section { position: relative; z-index: 1; }
body[data-template="y2k"] .demo-section h2 { text-transform: uppercase; text-shadow: 0 0 10px color-mix(in srgb, var(--accent) 70%, transparent); }
body[data-template="y2k"] .demo-card {
  background: #0d0620; border: 1px solid rgba(0,255,255,.4); border-radius: 10px;
  box-shadow: 0 0 16px rgba(255,0,255,.25), inset 0 0 0 1px rgba(255,255,255,.04); }
body[data-template="y2k"] .demo-card:nth-child(2), body[data-template="y2k"] .demo-card:nth-child(3) { transform: none; }
body[data-template="y2k"] .demo-card:hover { border-color: #ff00ff; box-shadow: 0 0 24px rgba(0,255,255,.4); }
body[data-template="y2k"] .demo-card-num { background: linear-gradient(90deg, #ff00ff, #00ffff); box-shadow: none; }
body[data-template="y2k"] .demo-cta { background: linear-gradient(90deg, #ff00ff, #00ffff); box-shadow: 0 0 20px rgba(0,255,255,.5); }

/* ============================== RETRO ============================== */

/* === RETRO95 === */
/* Win95デスクトップ: 各ブロックをタイトルバー付きウィンドウ化、teal壁紙、マーキー、疑似押下ボタン */
body[data-template="retro95"] { background: #008080; }
body[data-template="retro95"] .demo {
  background:
    radial-gradient(#fff 1px, transparent 1.4px) 0 0/20px 20px,
    var(--demo-bg);
}
body[data-template="retro95"] .demo-hero-media::before {
  content: "Welcome.exe";
  background: #000080; color: #fff; border-bottom: 2px solid #000;
  font-family: var(--gothic); font-size: 11px; letter-spacing: .02em;
  display: flex; justify-content: space-between; align-items: center;
}
body[data-template="retro95"] .demo-hero-media::after {
  content: "_ □ ×"; position: absolute; top: 0; right: 10px; height: 26px;
  display: flex; align-items: center; color: #fff; font-size: 10px; letter-spacing: 3px;
}
body[data-template="retro95"] .demo-hero-inner {
  background: #c0c0c0; border-top: 2px solid #fff; border-left: 2px solid #fff;
  border-right: 2px solid #404040; border-bottom: 2px solid #404040;
  box-shadow: 4px 4px 0 rgba(0,0,0,.35); padding: 20px clamp(16px, 3vw, 28px);
}
body[data-template="retro95"] .demo-hero-inner h1,
body[data-template="retro95"] .demo-lead { color: #000; }
body[data-template="retro95"] .demo-eyebrow {
  display: block; overflow: hidden; white-space: nowrap; background: #000; color: #0f0;
  font-family: var(--mono, monospace); padding: 5px 0; border: 1px solid #000;
  animation: r95-marquee 10s linear infinite; padding-left: 100%;
}
body[data-template="retro95"] .demo-eyebrow::before { content: ""; }
@keyframes r95-marquee { from { transform: translateX(0); } to { transform: translateX(-100%); } }
body[data-template="retro95"] .demo-card {
  background: #c0c0c0; border: 0;
  box-shadow: inset -2px -2px 0 #404040, inset 2px 2px 0 #fff, 4px 4px 0 rgba(0,0,0,.3);
  border-radius: 0; padding-top: 34px; position: relative;
}
body[data-template="retro95"] .demo-card::before {
  content: "FILE_" attr(data-i) ".ICO"; position: absolute; top: 0; left: 0; right: 0;
  background: #000080; color: #fff; font-size: 10px; padding: 6px 8px; letter-spacing: .02em;
}
body[data-template="retro95"] .demo-card-num { color: #000080; font-family: var(--gothic); }
body[data-template="retro95"] .demo-cta {
  background: #c0c0c0; color: #000; border: 0; border-radius: 0;
  box-shadow: inset -2px -2px 0 #404040, inset 2px 2px 0 #fff;
}
body[data-template="retro95"] .demo-cta:active {
  box-shadow: inset 2px 2px 0 #404040, inset -2px -2px 0 #fff; transform: translate(1px, 1px);
}
body[data-template="retro95"] .demo-section h2 { font-family: var(--gothic); font-weight: 700; }

/* === TERMINAL === */
/* CRTシェル: 画像ヒーローを廃しASCII+プロンプト行の1カラムに、スキャンライン+色収差、緑フォスファー配色 */
body[data-template="terminal"] { background: #0d1117; }
body[data-template="terminal"] .demo { --demo-bg: #0d1117; --demo-ink: #00ff41; }
body[data-template="terminal"]::after {
  content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 2;
  background: repeating-linear-gradient(0deg, rgba(0,0,0,.15) 0 2px, transparent 2px 4px);
}
body[data-template="terminal"] .demo-hero { max-width: 760px; }
body[data-template="terminal"] .demo-hero-media { border-color: #008f11; box-shadow: 6px 6px 0 rgba(0,255,65,.25); }
body[data-template="terminal"] .demo-hero-media img { display: none; }
body[data-template="terminal"] .demo-hero-media::before {
  content: "guest@portfolio ~/users/admin $ whoami"; background: #0d1117; color: #ff00ff;
  font-family: var(--mono, monospace); font-size: 12px; letter-spacing: 0; text-align: left;
  border-bottom: 1px solid #008f11; padding: 10px 14px;
}
body[data-template="terminal"] .demo-hero-inner {
  font-family: var(--mono, monospace); background: #0d1117; padding: 18px 14px 24px;
  border: 1px solid #008f11; border-top: 0;
}
body[data-template="terminal"] .demo-hero-inner h1 {
  color: #00ff41; font-size: clamp(20px, 2.6vw, 30px); text-shadow: 0 0 6px rgba(0,255,65,.5);
}
body[data-template="terminal"] .demo-hero-inner h1::before { content: "> "; color: #ff00ff; }
body[data-template="terminal"] .demo-hero-inner h1::after { content: "_"; color: #00ff41; }
body[data-template="terminal"] .demo-lead { font-family: var(--mono, monospace); color: #00bfff; }
body[data-template="terminal"] .demo-lead::before { content: "// "; opacity: .6; }
body[data-template="terminal"] .demo-eyebrow { color: #ff00ff; font-family: var(--mono, monospace); }
body[data-template="terminal"] .demo-eyebrow::before { content: "$ "; color: #00bfff; }
body[data-template="terminal"] .demo-section h2 { font-family: var(--mono, monospace); color: #00ff41; }
body[data-template="terminal"] .demo-card {
  background: #0d1117; border-color: #008f11; box-shadow: 5px 5px 0 rgba(0,255,65,.2);
}
body[data-template="terminal"] .demo-card-num::before { content: "ls "; opacity: .5; }
body[data-template="terminal"] .demo-cta {
  background: #0d1117; color: #00ff41; border: 1px solid #00ff41; box-shadow: none;
  font-family: var(--mono, monospace);
}
body[data-template="terminal"] .demo-cta::before { content: "> "; }

/* === RAW === */
/* no-imageヘッダー: 巨大氏名見出し+罫線区切り2列プロフィール表、黄反転ホバー、ファイルリスト調 */
body[data-template="raw"] .demo { --demo-bg: #f0f0f0; --demo-ink: #000; font-family: "Times New Roman", var(--serif); }
body[data-template="raw"] .demo-hero-media { display: none; }
body[data-template="raw"] .demo-hero { max-width: 900px; }
body[data-template="raw"] .demo-hero-inner {
  border: 2px solid #000; padding: clamp(20px, 4vw, 36px);
}
body[data-template="raw"] .demo-hero-inner h1 {
  font-size: clamp(2.5rem, 5vw, 4rem); letter-spacing: -.05em; text-transform: uppercase;
  border-bottom: 2px solid #000; padding-bottom: 18px; margin-bottom: 18px;
}
body[data-template="raw"] .demo-hero-inner h1::after { content: ""; }
body[data-template="raw"] .demo-lead {
  font-family: "Courier New", var(--mono, monospace); font-size: 13px; position: relative; padding-left: 16px;
}
body[data-template="raw"] .demo-lead::before {
  content: "●"; position: absolute; left: 0; color: #2e7d32; font-size: 9px; top: .5em;
}
body[data-template="raw"] .demo-lead::after { content: " — AVAILABLE FOR HIRE"; font-weight: 700; }
body[data-template="raw"] .demo-eyebrow { color: #0000ff; font-family: "Courier New", var(--mono, monospace); }
body[data-template="raw"] .demo-eyebrow::before { content: "Index of /"; }
body[data-template="raw"] .demo-section { border-top: 2px solid #000; }
body[data-template="raw"] .demo-card {
  border-radius: 0; box-shadow: none; border: 2px solid #000; background: #f0f0f0;
  transition: background .3s;
}
body[data-template="raw"] .demo-card:hover { background: #ffff00; }
body[data-template="raw"] .demo-card img { filter: grayscale(100%); transition: filter .3s; }
body[data-template="raw"] .demo-card:hover img { filter: grayscale(0); }
body[data-template="raw"] .demo-card-num { font-family: "Courier New", var(--mono, monospace); color: #000; }
body[data-template="raw"] .demo-card-num::before { content: "FILE_"; }
body[data-template="raw"] .demo-card-num::after { content: ".JPG"; }
body[data-template="raw"] .demo-table th, body[data-template="raw"] .demo-table td {
  font-family: "Courier New", var(--mono, monospace); border-bottom-width: 2px; border-color: #000;
}
body[data-template="raw"] .demo-cta {
  background: #ffff00; color: #000; border-color: #000; border-radius: 0;
  box-shadow: 6px 6px 0 #000; font-family: "Courier New", var(--mono, monospace);
}
/* ブランド: ロゴ+タグライン */
.brand { display:flex; flex-direction:column; gap:2px; }
.brand-tag { font-family: var(--gothic); font-size:10.5px; letter-spacing:.06em; opacity:.55; white-space:nowrap; }
@media (max-width:720px){ .brand-tag{ display:none; } }
