/* Narelog public site — tokens + components (v1, design handoff)
   Extends narelog-tokens-reference.css (v2). Static CSS, no build step. */
:root{
  color-scheme:light;
  /* ground */
  --paper:#F6EFDD; --paper-deep:#EDE4CE; --card:#FFFCF3; --hairline:#DCCDAE; --rule:#E6DAC0;
  /* ink */
  --ink:#33281E; --ink-2:#4B3F31; --ink-soft:#6B5C4B;
  /* accents */
  --teal:#26616B; --teal-deep:#1B474D; --teal-wash:#E3ECE8; --on-teal:#FFFCF3; --on-teal-soft:#D6E5E7;
  --brick:#A93226; --olive:#5E6B33; --olive-wash:#E9EAD6; --marigold:#F2A93B;
  /* type */
  --font-display:'Kaisei Tokumin', 'Hiragino Mincho ProN', serif;
  --font-latin:'Hanken Grotesk', system-ui, sans-serif;
  --font-ja:'Zen Kaku Gothic New', 'Hiragino Sans', 'Noto Sans JP', sans-serif;
  --font-mono:'IBM Plex Mono', ui-monospace, monospace;
  /* space + shape */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px; --s8:72px; --s9:112px;
  --r-sm:4px; --r-md:8px; --r-lg:14px;
  --wrap:1200px; --gutter:clamp(20px,5vw,48px);
  --focus:0 0 0 3px var(--paper), 0 0 0 6px var(--teal);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:88px}
body{margin:0;background:var(--paper);color:var(--ink);font:400 17px/1.7 var(--font-latin);-webkit-font-smoothing:antialiased;overflow-x:hidden}
html[data-lang="ja"] body,.keep-lang:lang(ja){font-family:var(--font-ja);line-height:1.9;letter-spacing:.02em;line-break:strict}
.display [lang="ja"],.h2 [lang="ja"],.display.keep-lang,.h2.keep-lang{font-family:var(--font-display)}
.display:lang(ja),.display [lang="ja"],.h2 [lang="ja"],.h3 [lang="ja"]{word-break:keep-all;overflow-wrap:anywhere}
img,svg{max-width:100%;display:block}
a{color:var(--teal);text-underline-offset:3px}
a:hover{color:var(--teal-deep)}
:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--r-sm)}
p{margin:0;text-wrap:pretty}
h1,h2,h3,h4{margin:0;font-weight:700;text-wrap:balance}
ruby rt{font-size:.5em;color:var(--ink-soft);letter-spacing:0}

/* Language switching: pair every string as [lang=en] + [lang=ja] siblings */
html[data-lang="en"] body [lang="ja"]:not(.keep-lang){display:none!important}
html[data-lang="ja"] body [lang="en"]:not(.keep-lang){display:none!important}

/* layout */
.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter)}
.section{padding-block:clamp(56px,9vw,var(--s9))}
.section--rule{border-top:1px solid var(--hairline)}
.section--deep{background:var(--paper-deep)}
.stack{display:flex;flex-direction:column;gap:var(--s4)}
.stack-lg{display:flex;flex-direction:column;gap:var(--s6)}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(28px,5vw,72px);align-items:center}
.grid-auto{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:var(--s4)}
@media (max-width:900px){.grid-2{grid-template-columns:minmax(0,1fr)}}

/* type roles */
.eyebrow{font:500 12px/1.4 var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--teal)}
.eyebrow:lang(ja){font:700 13px/1.5 var(--font-ja);letter-spacing:.12em;text-transform:none}
.display{font-family:var(--font-display);font-size:clamp(38px,6.2vw,72px);line-height:1.12;letter-spacing:-.01em}
.display:lang(ja){font-size:clamp(30px,4.4vw,54px);line-height:1.35;letter-spacing:.02em;font-family:var(--font-display)}
.h2{font-family:var(--font-display);font-size:clamp(28px,3.6vw,42px);line-height:1.2}
.h2:lang(ja){font-size:clamp(24px,3vw,36px);line-height:1.5}
.h3{font:700 20px/1.35 var(--font-latin)}
.h3:lang(ja){font:700 18px/1.6 var(--font-ja)}
.lead{font-size:clamp(18px,1.6vw,21px);line-height:1.6;color:var(--ink-2);max-width:40em}
.lead:lang(ja){font-size:clamp(16px,1.4vw,18px);line-height:1.95}
.body-soft{color:var(--ink-2)}
.small{font-size:14px;line-height:1.6;color:var(--ink-soft)}
.measure{max-width:42em}
.mono{font-family:var(--font-mono);font-size:12px;letter-spacing:.08em}

/* skip link */
.skip{position:absolute;left:12px;top:-60px;background:var(--teal);color:var(--on-teal);padding:10px 16px;border-radius:var(--r-sm);z-index:100;text-decoration:none}
.skip:focus{top:12px}

/* header */
.site-header{position:sticky;top:0;z-index:50;background:rgba(246,239,221,.96);border-bottom:1px solid var(--hairline);backdrop-filter:saturate(1.2) blur(6px)}
.site-header .wrap{display:flex;align-items:center;gap:var(--s5);min-height:68px}
.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font:700 22px/1 var(--font-display);flex-shrink:0;min-height:44px}
.brand:hover{color:var(--ink)}
.brand-mark{width:30px;height:30px;flex-shrink:0}
.nav{display:flex;align-items:center;gap:var(--s1);margin-left:var(--s4)}
.nav a{display:flex;align-items:center;min-height:44px;padding:0 12px;color:var(--ink-2);text-decoration:none;font-weight:500;font-size:15px;border-bottom:2px solid transparent}
.nav a:hover{color:var(--teal)}
.nav a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--teal)}
.header-end{margin-left:auto;display:flex;align-items:center;gap:var(--s3)}
.lang-switch{display:flex;border:1px solid var(--hairline);border-radius:var(--r-sm);background:var(--card);padding:2px}
.lang-switch button{min-height:40px;min-width:44px;padding:0 10px;border:0;background:transparent;color:var(--ink-2);font:500 14px/1 var(--font-latin);border-radius:3px;cursor:pointer}
.lang-switch button:lang(ja),.lang-switch button[data-set-lang="ja"]{font-family:var(--font-ja)}
.lang-switch button[aria-pressed="true"]{background:var(--teal);color:var(--on-teal)}
.menu-toggle{display:none;min-height:44px;min-width:44px;border:1px solid var(--hairline);background:var(--card);border-radius:var(--r-sm);color:var(--ink);cursor:pointer;align-items:center;justify-content:center;gap:8px;padding:0 12px;font:500 14px var(--font-latin)}
.menu-toggle svg{width:18px;height:18px}
.mobile-panel{display:none}
@media (max-width:900px){
  .nav,.header-end .btn,.header-end .invite-note{display:none}
  .menu-toggle{display:flex}
  .site-header .wrap{gap:var(--s3)}
  .mobile-panel[data-open="true"]{display:block;border-top:1px solid var(--hairline);background:var(--paper)}
  .mobile-panel nav{display:flex;flex-direction:column;padding:8px var(--gutter) 20px}
  .mobile-panel nav a{min-height:52px;display:flex;align-items:center;border-bottom:1px solid var(--rule);color:var(--ink);text-decoration:none;font-size:18px}
  .mobile-panel nav a[aria-current="page"]{color:var(--teal);font-weight:700}
  .mobile-panel nav a[aria-current="page"]::before{content:"●";font-size:9px;margin-right:10px}
  .mobile-panel .btn{margin-top:18px;align-self:flex-start}
}
@media (max-width:380px){.brand span{display:none}}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 22px;border-radius:var(--r-sm);font:700 16px/1 var(--font-latin);text-decoration:none;border:1.5px solid transparent;cursor:pointer;white-space:nowrap}
.btn:lang(ja){font-family:var(--font-ja);letter-spacing:.04em}
.btn--primary{background:var(--teal);color:var(--on-teal)}
.btn--primary:hover{background:var(--teal-deep);color:var(--on-teal)}
.btn--ghost{border-color:var(--teal);color:var(--teal);background:transparent}
.btn--ghost:hover{background:var(--teal-wash);color:var(--teal-deep)}
.btn--cream{background:var(--card);color:var(--teal-deep)}
.btn--cream:hover{background:#fff;color:var(--teal-deep)}
.btn--sm{min-height:44px;padding:0 16px;font-size:15px}
.cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3) var(--s4)}
.invite-note{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:var(--ink-soft)}
.invite-note::before{content:"";width:10px;height:10px;border:1.5px solid currentColor;border-radius:2px;transform:rotate(45deg)}

/* tags (shape + text, never colour alone) */
.tag{display:inline-flex;align-items:center;gap:6px;font:500 11px/1 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;padding:6px 9px;border-radius:var(--r-sm);border:1px solid currentColor;white-space:nowrap}
.tag:lang(ja){font:700 12px/1 var(--font-ja);letter-spacing:.06em}
.tag::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}
.tag--now{color:var(--teal)}
.tag--proposed{color:var(--olive)} .tag--proposed::before{background:linear-gradient(90deg,currentColor 50%,transparent 50%);border:1.5px solid currentColor}
.tag--future{color:var(--brick)} .tag--future::before{background:transparent;border:1.5px solid currentColor}
.tag--demo{color:var(--ink-soft);border-style:dashed} .tag--demo::before{border-radius:1px;background:transparent;border:1.5px dashed currentColor}

/* cards */
.card{background:var(--card);border:1px solid var(--hairline);border-radius:var(--r-md);padding:clamp(20px,2.4vw,28px)}
.card--teal{background:var(--teal);border-color:var(--teal);color:var(--on-teal)}
.num{font:500 12px/1 var(--font-mono);letter-spacing:.14em;color:var(--teal)}

/* product scene frame (illustrative screens) */
.scene{background:var(--card);border:1px solid var(--hairline);border-radius:var(--r-lg);box-shadow:0 1px 0 var(--hairline),0 18px 40px -24px rgba(51,40,30,.35);overflow:hidden}
.scene__bar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-bottom:1px solid var(--rule);background:#FBF6E9}
.scene__bar .mono{color:var(--ink-soft)}
.scene__body{padding:clamp(16px,2.2vw,24px);display:flex;flex-direction:column;gap:14px}
.headword{font:700 clamp(30px,3.4vw,40px)/1.2 var(--font-ja);letter-spacing:.04em;color:var(--ink)}
.gloss{font-size:16px;color:var(--ink-2)}
.chip{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:4px 12px;border-radius:999px;border:1px solid var(--hairline);background:var(--paper);font-size:14px;color:var(--ink-2)}
.chip--teal{background:var(--teal);border-color:var(--teal);color:var(--on-teal)}
.chip--check::before{content:"✓";font-weight:700}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.mini-btn{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border-radius:var(--r-sm);font-size:14px;font-weight:700;border:1.5px solid var(--teal);color:var(--teal);background:transparent}
.mini-btn--fill{background:var(--teal);color:var(--on-teal)}
.explain{border-left:0;background:var(--teal-wash);border-radius:var(--r-sm);padding:14px 16px;font-size:15px;color:var(--ink)}
.divider{height:1px;background:var(--rule)}

/* vignettes */
.vignette{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(28px,5vw,72px);align-items:center}
.vignette + .vignette{margin-top:clamp(56px,8vw,96px)}
.vignette--flip > :first-child{order:2}
.path{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font:500 12px/1 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--teal)}
.path:lang(ja){font:700 13px/1.4 var(--font-ja);letter-spacing:.06em;text-transform:none}
.path > span{display:inline-flex;flex-wrap:wrap;gap:6px}
.path > span > span + span::before{content:"→";margin-right:6px;color:var(--ink-soft)}
@media (max-width:900px){.vignette{grid-template-columns:minmax(0,1fr)}.vignette--flip > :first-child{order:0}}

/* before / after */
.compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s4)}
@media (max-width:760px){.compare{grid-template-columns:minmax(0,1fr)}}
.retype{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
.retype li{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;align-items:center;padding:10px 12px;border:1px dashed var(--hairline);border-radius:var(--r-sm);font-size:15px}
.retype li b{font-weight:600;color:var(--ink)}
.retype li span{color:var(--ink-soft)}
.flow{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
.flow li{display:flex;gap:12px;align-items:center;padding:10px 12px;border-radius:var(--r-sm);background:var(--teal-wash);font-size:15px}
.flow li::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--teal);flex-shrink:0}

/* loop diagram */
.loop{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);align-items:center}
@media (max-width:900px){.loop{grid-template-columns:minmax(0,1fr)}}
.loop svg{width:100%;max-width:520px;margin-inline:auto;overflow:visible}
.loop-node circle{fill:var(--card);stroke:var(--teal);stroke-width:1.5;transition:fill .2s}
.loop-node text.n{font:500 13px var(--font-mono);fill:var(--teal)}
.loop-node text.l{font:600 15px var(--font-latin);fill:var(--ink)}
.loop-node text.l:lang(ja){font:700 15px var(--font-ja)}
.loop-node.is-active circle{fill:var(--teal)}
.loop-node.is-active text.n{fill:var(--on-teal)}
.loop-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.loop-steps li{border-top:1px solid var(--hairline)}
.loop-steps li:last-child{border-bottom:1px solid var(--hairline)}
.loop-steps button{all:unset;box-sizing:border-box;display:grid;grid-template-columns:36px minmax(0,1fr);gap:12px;width:100%;padding:14px 4px;cursor:pointer;min-height:48px}
.loop-steps button:focus-visible{box-shadow:var(--focus)}
.loop-steps .n{font:500 13px/1.8 var(--font-mono);color:var(--teal)}
.loop-steps b{display:block;font-weight:700}
.loop-steps p{display:none;color:var(--ink-2);font-size:15px;margin-top:4px}
.loop-steps button[aria-expanded="true"] p{display:block}
.loop-steps button[aria-expanded="true"] .n::before{content:"▸ "}
.loop-orbit{transform-origin:200px 200px;transform-box:view-box}
@media (prefers-reduced-motion:no-preference){.loop-orbit{animation:orbit 42s linear infinite}}
@keyframes orbit{to{transform:rotate(360deg)}}

/* data panel */
.data{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:clamp(24px,4vw,64px)}
@media (max-width:900px){.data{grid-template-columns:minmax(0,1fr)}}
.data dl{margin:0;display:grid;grid-template-columns:minmax(0,1fr);gap:0}
.data dt{font-weight:700;padding-top:16px;border-top:1px solid var(--hairline)}
.data dd{margin:4px 0 16px;color:var(--ink-2);font-size:15.5px}

/* CTA band */
.band{background:var(--teal);color:var(--on-teal)}
.band .lead{color:var(--on-teal-soft)}
.band .eyebrow{color:var(--on-teal-soft)}
.band .invite-note{color:var(--on-teal-soft)}
.band :focus-visible{box-shadow:0 0 0 3px var(--teal),0 0 0 6px var(--card)}

/* roadmap */
.roadmap{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s4)}
@media (max-width:900px){.roadmap{grid-template-columns:minmax(0,1fr)}}
.roadmap ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}
.roadmap li{padding-top:10px;border-top:1px solid var(--rule);font-size:15.5px}
.roadmap li small{display:block;color:var(--ink-soft);font-size:13.5px}

/* case study */
.case{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--card);overflow:hidden}
.case > div{padding:clamp(20px,2.2vw,28px);display:flex;flex-direction:column;gap:10px}
.case > div + div{border-left:1px solid var(--hairline)}
.case ul{margin:0;padding-left:1.1em;color:var(--ink-2);font-size:15px;display:flex;flex-direction:column;gap:6px}
@media (max-width:1000px){.case{grid-template-columns:repeat(2,minmax(0,1fr))}.case > div:nth-child(3){border-left:0}.case > div:nth-child(n+3){border-top:1px solid var(--hairline)}}
@media (max-width:620px){.case{grid-template-columns:minmax(0,1fr)}.case > div + div{border-left:0;border-top:1px solid var(--hairline)}}

/* diagram */
.diagram{background:var(--card);border:1px solid var(--hairline);border-radius:var(--r-md);padding:clamp(16px,2.4vw,32px)}
.diagram svg{width:100%;height:auto}
.diagram text{font-family:var(--font-latin)}
.diagram text:lang(ja){font-family:var(--font-ja)}

/* owner decision annotation (prototype only) */
.owner-note{border:1.5px dashed var(--brick);color:var(--brick);border-radius:var(--r-sm);padding:12px 14px;font-size:14px;background:transparent}

/* footer */
.site-footer{border-top:1px solid var(--hairline);padding-block:40px 56px;font-size:14px;color:var(--ink-soft)}
.site-footer .wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;align-items:start}
.site-footer nav{display:flex;flex-wrap:wrap;gap:4px 18px}
.site-footer nav a{color:var(--ink-2);min-height:44px;display:inline-flex;align-items:center}
@media (max-width:700px){.site-footer .wrap{grid-template-columns:minmax(0,1fr)}}

@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Coordinator phone-language QA: prevent Japanese control labels breaking mid-word. */
.lang-switch,.lang-switch button,.menu-toggle{flex-shrink:0;white-space:nowrap}
@media(max-width:480px){.site-header .wrap,.header-end{gap:8px}.brand-name{display:none}}

/* Keep the two English hero phrases intact at both grid and phone widths. */
.hero-copy{container-type:inline-size}
#hero-title:lang(en){font-size:clamp(28px,11cqi,64px)}
.hero-title-line{display:block;white-space:nowrap}
