:root{
  /* --- 深海 × ブラス（脱AI：1アクセント・muted・編集的） --- */
  --sea:linear-gradient(180deg,#16323E 0%,#122A35 22%,#0E212B 46%,#0A1A22 68%,#08151C 86%,#061015 100%);
  --ink:#ECE5D6;            /* 本文（暖かいボーン） */
  --muted:#A6AC9F;          /* 補助テキスト（くすませた暖灰） */
  --faint:#737A72;          /* かすみ */
  --line:rgba(236,229,214,.13);
  --surface:rgba(236,229,214,.04);
  --surface-2:rgba(236,229,214,.07);
  --brass:#C7A06A;          /* 唯一のアクセント（真鍮/サンド） */
  --brass-d:#D9B582;        /* hover */
  --sage:#8FA890;           /* 控えめな海緑（live のみ） */
  --tile:rgba(236,229,214,.07);        /* アイコンタイル */
  --paper:rgba(236,229,214,.045);      /* チップの内側面 */
  --radius:10px; --maxw:1080px;
  --serif:"Fraunces","Shippori Mincho",Georgia,"Hiragino Mincho ProN",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI","Hiragino Kaku Gothic ProN","Noto Sans JP",Meiryo,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
/* 上＝浅瀬の光、下へ進むほど深くなる（スクロールで潜る） */
body{margin:0;font-family:var(--sans);color:var(--ink);line-height:1.78;-webkit-font-smoothing:antialiased;
  background:var(--sea);background-repeat:no-repeat;min-height:100vh}
/* フィルムグレイン（粒状感）でフラットなデジタル感を消す */
body::after{content:"";position:fixed;inset:0;z-index:60;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}
a{color:var(--brass);text-decoration:none}
a:hover{color:var(--brass-d)}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}

/* ---------- header / nav ---------- */
header{position:sticky;top:0;z-index:20;background:rgba(8,18,24,.6);backdrop-filter:saturate(140%) blur(10px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;height:66px}
.brand{display:flex;align-items:center;gap:13px}
.brand .name{font-family:'Mansalva',cursive;font-weight:400;font-size:23px;letter-spacing:.3px;color:var(--ink)}
.navlinks{display:flex;align-items:center;gap:30px}
.navlinks a{color:var(--muted);font-size:13.5px;letter-spacing:.3px;position:relative;padding:4px 0}
.navlinks a:hover{color:var(--ink)}
.navlinks a.active{color:var(--ink)}
.navlinks a::after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1px;background:var(--brass);transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.22,.61,.36,1)}
.navlinks a:hover::after,.navlinks a.active::after{transform:scaleX(1)}
.logo{width:40px;height:40px;flex:none;border-radius:10px;background:var(--tile);border:1px solid rgba(236,229,214,.22);display:flex;align-items:center;justify-content:center}
/* ロゴ原画（logo.svg）をマスクにして色だけ CSS で変える。形は原画のまま */
.logo-mark{width:26px;height:26px;background:#CFC8B6;-webkit-mask:url(logo.svg) center/contain no-repeat;mask:url(logo.svg) center/contain no-repeat;transition:background-color .22s ease}
.brand:hover .logo-mark{background:var(--brass-d)}

/* ---------- hero / page band ---------- */
.band{position:relative;overflow:hidden;isolation:isolate;background:linear-gradient(180deg,rgba(3,14,20,.28) 0%,rgba(3,14,20,0) 60%)}
.band .wrap{position:relative;z-index:2}
.band--lg{padding:112px 0 134px}
.band--sm{padding:80px 0 102px}
/* 上から差し込む光（光芒・暖色の陽光） */
.band::before{content:"";position:absolute;inset:-15% -25% auto -25%;height:150%;z-index:0;pointer-events:none;
  background:
    linear-gradient(99deg,transparent 0 16%,rgba(236,224,196,.07) 18% 21%,transparent 24% 100%),
    linear-gradient(86deg,transparent 0 39%,rgba(236,224,196,.06) 41% 43%,transparent 46% 100%),
    linear-gradient(94deg,transparent 0 60%,rgba(236,224,196,.05) 62% 66%,transparent 69% 100%),
    linear-gradient(91deg,transparent 0 80%,rgba(236,224,196,.04) 82% 84%,transparent 87% 100%);
  filter:blur(7px);transform-origin:top center}
.eyebrow{display:inline-flex;align-items:center;gap:11px;font-size:11.5px;letter-spacing:2.6px;text-transform:uppercase;color:var(--brass);font-weight:500;margin-bottom:22px}
.eyebrow::before{content:"";width:30px;height:1px;background:var(--brass);opacity:.7}
.band h1{font-family:var(--serif);font-optical-sizing:auto;font-weight:500;color:var(--ink);font-size:clamp(36px,5.8vw,62px);line-height:1.08;margin:0 0 22px;letter-spacing:-.015em}
.band h1 .accent{color:var(--brass);font-style:italic;font-weight:400}
.band .lead{font-size:clamp(16px,2vw,19px);color:var(--muted);max-width:600px;margin:0 0 36px;line-height:1.8}
.cta{display:flex;gap:13px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:500;letter-spacing:.3px;padding:13px 24px;border-radius:8px;border:1px solid transparent;transition:.16s;cursor:pointer}
.btn-primary{background:var(--brass);color:#1c1407}
.btn-primary:hover{background:var(--brass-d);color:#1c1407}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.btn-ghost:hover{border-color:var(--brass);color:var(--ink)}

/* ---------- bubbles (大泡の演出) ---------- */
.bubbles{position:absolute;inset:0;z-index:1;pointer-events:none}
.bubble{position:absolute;border-radius:50%;
  background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.75),rgba(255,255,255,.14) 52%,rgba(255,255,255,.03) 80%);
  border:1px solid rgba(255,255,255,.26);box-shadow:inset 0 0 6px rgba(255,255,255,.22);
  animation-name:rise;animation-timing-function:linear;animation-iteration-count:infinite;will-change:top,transform}
@keyframes rise{
  0%{top:106%;opacity:0;transform:translateX(0) scale(.82)}
  12%{opacity:var(--o,.5)}
  50%{transform:translateX(12px) scale(1)}
  86%{opacity:var(--o,.5)}
  100%{top:-20%;opacity:0;transform:translateX(-8px) scale(1.08)}
}
@media (prefers-reduced-motion:reduce){.bubble{animation:none;display:none}}
.waves{display:none}   /* 海中なので海面の波は隠す */

/* ---------- intro（初回の大泡：画面を覆って下→上に一度だけ） ---------- */
.intro{position:fixed;inset:0;z-index:1000;overflow:hidden;pointer-events:none;background:var(--sea);
  transition:opacity .8s ease,transform .9s ease}
.intro.done{opacity:0;transform:translateY(-8%)}
.intro .bubble{top:100%;animation-name:riseOnce;animation-iteration-count:1;animation-timing-function:ease-in;animation-fill-mode:both}
/* top ではなく transform で上昇＝レイアウトを起こさず軽い（GPU 合成） */
@keyframes riseOnce{
  0%{opacity:0;transform:translate(0,0) scale(.7)}
  10%{opacity:1}
  82%{opacity:1}
  100%{opacity:0;transform:translate(var(--dx,0),-130vh) scale(1.12)}
}
@media (prefers-reduced-motion:reduce){.intro{display:none}}

/* ---------- sections ---------- */
section{padding:80px 0}
.sec-head{margin-bottom:42px}
.sec-head .kicker{display:inline-flex;align-items:center;gap:11px;font-size:11.5px;letter-spacing:2.4px;text-transform:uppercase;color:var(--brass);font-weight:500}
.sec-head .kicker::before{content:"";width:26px;height:1px;background:var(--brass);opacity:.7}
.sec-head h2{font-family:var(--serif);font-optical-sizing:auto;font-weight:500;font-size:clamp(27px,3.4vw,36px);margin:14px 0 8px;letter-spacing:-.01em}
.sec-head p{color:var(--muted);margin:0;max-width:600px}

/* ---------- cards（落ち着いた編集面：ガラス感を抑える） ---------- */
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:28px;display:flex;flex-direction:column;transition:.2s}
.card:hover{border-color:var(--brass);background:var(--surface-2);transform:translateY(-2px)}
.card .ico{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:20px;background:var(--tile);border:1px solid var(--line)}
.card .ico svg{stroke:#CFC8B6}
.card .ico[style*="FAECE7"]{background:rgba(199,160,106,.13)!important;border-color:rgba(199,160,106,.32)}
.card .ico[style*="FAECE7"] svg{stroke:var(--brass)}
.card h3{font-size:18.5px;font-weight:600;margin:0 0 7px;letter-spacing:-.01em;color:var(--ink)}
.card .sub{font-size:12px;letter-spacing:.3px;color:var(--brass);font-weight:500;margin:0 0 14px}
.card p{color:var(--muted);font-size:14.5px;margin:0 0 22px;flex:1;line-height:1.74}
.card .foot{display:flex;align-items:center;justify-content:space-between;padding-top:4px}
.status{font-size:12px;font-weight:500;letter-spacing:.3px;display:inline-flex;align-items:center;gap:7px}
.dot{width:6px;height:6px;border-radius:50%;display:inline-block}
.live{color:var(--sage)}.live .dot{background:var(--sage)}
.wip{color:#C8A66A}.wip .dot{background:#B98E45}
.open{font-size:13.5px;font-weight:500;color:var(--brass);display:inline-flex;align-items:center;gap:6px}
.open.disabled{color:var(--faint);cursor:default}

/* nav cards on top page */
.navgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px}
.navcard{display:flex;flex-direction:column;gap:11px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:30px;transition:.2s}
.navcard:hover{border-color:var(--brass);background:var(--surface-2);transform:translateY(-2px)}
.navcard h3{font-family:var(--serif);font-weight:500;margin:0;font-size:22px;letter-spacing:-.01em;color:var(--ink)}
.navcard p{margin:0;color:var(--muted);font-size:14.5px}
.navcard .go{margin-top:8px;color:var(--brass);font-weight:500;font-size:13.5px;letter-spacing:.3px;display:inline-flex;align-items:center;gap:6px}

/* ---------- about ---------- */
.about{background:rgba(236,229,214,.03);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.about-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:52px;align-items:center}
.about-grid h2{font-family:var(--serif);font-optical-sizing:auto;font-weight:500;font-size:32px;margin:14px 0 18px;letter-spacing:-.01em;color:var(--ink)}
.about-grid p{color:var(--muted);margin:0 0 14px}
.chips{display:flex;flex-wrap:wrap;gap:9px}
.chip{font-size:12.5px;letter-spacing:.2px;padding:8px 14px;border-radius:8px;background:var(--paper);border:1px solid var(--line);color:var(--ink);display:inline-flex;align-items:center;gap:8px}
.chip .b{width:7px;height:7px;border-radius:2px;background:var(--sage)}
.chip:nth-child(even) .b{background:var(--brass)}

/* ---------- footer ---------- */
footer{padding:48px 0}
.foot-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px}
.foot-row .left{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:13.5px}
.foot-row .right{display:flex;gap:24px}
.foot-row .right a{color:var(--muted);font-size:13.5px}
.foot-row .right a:hover{color:var(--brass)}

@media (max-width:720px){
  .about-grid{grid-template-columns:1fr;gap:28px}
  .band--lg{padding:80px 0 104px}
}

/* ===== polish: motion / micro-interactions / 余白 ===== */
::selection{background:rgba(199,160,106,.3);color:#1c1407}
:focus-visible{outline:2px solid var(--brass);outline-offset:3px;border-radius:4px}
.reveal{opacity:0;transform:translateY(16px);transition:opacity .9s cubic-bezier(.22,.61,.36,1),transform .9s cubic-bezier(.22,.61,.36,1)}
.reveal.in{opacity:1;transform:none}
.reveal-o{opacity:0}
.reveal-o.in{opacity:1}
@media (prefers-reduced-motion:reduce){.reveal,.reveal-o{opacity:1!important;transform:none!important}}
header{transition:background .3s ease,border-color .3s ease}
header.scrolled{background:rgba(8,18,24,.82);border-bottom-color:rgba(236,229,214,.18)}
.btn svg,.open svg,.navcard .go svg{transition:transform .22s cubic-bezier(.22,.61,.36,1)}
.btn-primary:hover svg,.card:hover .open svg,.navcard:hover .go svg{transform:translateX(4px)}
.card,.navcard{transition:transform .22s ease,border-color .22s ease,background-color .22s ease,opacity .85s cubic-bezier(.22,.61,.36,1)}
.band h1{font-size:clamp(40px,6.2vw,68px);text-wrap:balance}
.sec-head h2,.about-grid h2{text-wrap:balance}
.band .lead{text-wrap:pretty;line-height:1.85}
.band h1 .accent{font-style:normal;font-weight:500}
section{padding:96px 0}

/* ===== round2: hover の質感 / ヒーロー / カスタムカーソル ===== */
.band--lg h1{max-width:13ch}
.card h3,.navcard h3,.card .ico{transition:color .22s ease,transform .22s ease}
.card:hover h3,.navcard:hover h3{color:var(--brass)}
.card:hover .ico{transform:translateY(-1px) scale(1.05)}
.foot-row .right a{position:relative}
.foot-row .right a::after{content:"";position:absolute;left:0;bottom:-3px;width:100%;height:1px;background:var(--brass);transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.22,.61,.36,1)}
.foot-row .right a:hover::after{transform:scaleX(1)}
.foot-row .right a:hover{color:var(--ink)}

/* カスタムカーソル（ドット＋遅延リング） */
.cursor-dot,.cursor-ring{position:fixed;top:0;left:0;border-radius:50%;pointer-events:none;z-index:9000;opacity:0;will-change:transform;transition:opacity .3s ease}
.cursor-dot{width:6px;height:6px;background:var(--brass)}
.cursor-ring{width:34px;height:34px;border:1px solid rgba(199,160,106,.55);transition:opacity .3s ease,width .25s cubic-bezier(.22,.61,.36,1),height .25s cubic-bezier(.22,.61,.36,1),border-color .25s ease,background-color .25s ease}
.cursor-ready .cursor-dot,.cursor-ready .cursor-ring{opacity:1}
.cursor-hover .cursor-ring{width:56px;height:56px;border-color:rgba(199,160,106,.85);background:rgba(199,160,106,.07)}
.cursor-hover .cursor-dot{opacity:.5}
@media (hover:hover) and (pointer:fine){.cursor-on,.cursor-on a,.cursor-on button,.cursor-on .btn,.cursor-on .card,.cursor-on .navcard,.cursor-on .open,.cursor-on .go{cursor:none}}
@media (prefers-reduced-motion:reduce){.cursor-dot,.cursor-ring{display:none}}
@media (hover:none),(pointer:coarse){.cursor-dot,.cursor-ring{display:none}}

/* ===== round3: タイポ追い込み / ページ遷移 / 微パララックス / a11y ===== */
body{text-rendering:optimizeLegibility;font-kerning:normal}
.band h1,.sec-head h2,.about-grid h2,.brand .name{font-feature-settings:"liga" 1,"calt" 1}
.band .lead,.about-grid p{word-break:auto-phrase}

/* ページ遷移フェード（CSSで自動リビール＝JS非依存でも必ず表示される） */
.page-fade{position:fixed;inset:0;z-index:999;background:var(--sea);pointer-events:none;opacity:0;visibility:hidden;animation:pageReveal .45s ease forwards}
@keyframes pageReveal{0%{opacity:1;visibility:visible}99%{visibility:visible}100%{opacity:0;visibility:hidden}}
.page-fade.leaving{animation:none;visibility:visible;opacity:1;transition:opacity .34s ease}
.page-fade.gone{animation:none;opacity:0;visibility:hidden}

/* キーボード用スキップリンク */
.skip{position:fixed;left:12px;top:-60px;z-index:10000;background:var(--brass);color:#1c1407;padding:9px 15px;border-radius:8px;font-size:13px;font-weight:500;transition:top .2s ease}
.skip:focus{top:12px;color:#1c1407;outline:none}

@media (prefers-reduced-motion:reduce){.page-fade{animation:none;opacity:0;visibility:hidden}.page-fade.leaving{transition:none;opacity:0;visibility:hidden}}

/* ---------- 404: 泳ぐウミガメ（ロゴ原画マスク＝形はそのまま、色と動きだけ）
   logo-swim-a/b/c.svg = 原画 / ヒレ打ち下ろし / ヒレ引き上げ の3コマ。
   中→下→中→上 の4フェーズでストロークする */
.swim{position:absolute;left:-160px;z-index:1;pointer-events:none;will-change:transform}
.swim .swim-turtle{display:block;position:relative}
.swim .swim-turtle i{position:absolute;inset:0;background:rgba(207,200,182,.18);opacity:0;animation:2.4s steps(1) infinite}
.swim .swim-turtle .f-a{-webkit-mask:url(logo-swim-a.svg) center/contain no-repeat;mask:url(logo-swim-a.svg) center/contain no-repeat;animation-name:frameA}
.swim .swim-turtle .f-b{-webkit-mask:url(logo-swim-b.svg) center/contain no-repeat;mask:url(logo-swim-b.svg) center/contain no-repeat;animation-name:frameB}
.swim .swim-turtle .f-c{-webkit-mask:url(logo-swim-c.svg) center/contain no-repeat;mask:url(logo-swim-c.svg) center/contain no-repeat;animation-name:frameC}
.swim-1{top:16%;animation:swimRight 44s linear infinite}
.swim-1 .swim-turtle{width:104px;height:104px;animation:bobRight 5.2s ease-in-out infinite}
.swim-2{top:62%;left:auto;right:-160px;animation:swimLeft 58s linear infinite;animation-delay:-22s}
.swim-2 .swim-turtle{width:64px;height:64px;animation:bobLeft 6.4s ease-in-out infinite}
.swim-2 .swim-turtle i{background:rgba(207,200,182,.1);animation-delay:-1.2s}
@keyframes frameA{0%{opacity:1}25%{opacity:0}50%{opacity:1}75%{opacity:0}100%{opacity:1}}
@keyframes frameB{0%{opacity:0}25%{opacity:1}50%{opacity:0}100%{opacity:0}}
@keyframes frameC{0%{opacity:0}75%{opacity:1}100%{opacity:0}}
@keyframes swimRight{0%{transform:translateX(0)}100%{transform:translateX(calc(100vw + 320px))}}
@keyframes swimLeft{0%{transform:translateX(0)}100%{transform:translateX(calc(-100vw - 320px))}}
@keyframes bobRight{0%,100%{transform:translateY(0) rotate(86deg)}50%{transform:translateY(-16px) rotate(94deg)}}
@keyframes bobLeft{0%,100%{transform:translateY(0) rotate(-86deg)}50%{transform:translateY(-12px) rotate(-94deg)}}
@media (prefers-reduced-motion:reduce){.swim{display:none}}
