/* Sunward Japan — site.css
   Layout: type-led pages on white; black 1px rules divide sections; 4/8 split below the page head.
   Tokens follow claude/design.md §2–§4. */
:root{
  --ink:#111111; --paper:#FFFFFF; --paper-2:#F4F3F0; --mute:#6B6B6B; --mute-inv:#B8B8B8;
  --line:#111111; --accent:#C8402A; --ink-inv:#FFFFFF; --buried:#262626;
  --jp:'Zen Kaku Gothic New','Hiragino Kaku Gothic ProN','Yu Gothic','Meiryo',sans-serif;
  --en:'Archivo','Helvetica Neue',Arial,sans-serif;
  --gut:64px; --head:72px;
  --pad:max(var(--gut), calc(50vw - 720px + var(--gut)));
  --ease:cubic-bezier(.2,.8,.2,1);
  color-scheme:light;
}
@media (max-width:1279px){:root{--gut:40px}}
@media (max-width:767px){:root{--gut:20px;--head:64px}}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--jp);font-size:17px;line-height:1.8;overflow-x:clip;-webkit-font-smoothing:antialiased}
[hidden]{display:none!important}
h1,h2,h3,p,dl,dd,ol,ul{margin:0}
a{color:inherit}
img{max-width:100%}
.page{background:var(--paper);color:var(--ink);font-family:var(--jp)}
.page[lang=en]{font-family:var(--en);line-height:1.7}
.en,[lang=en]{font-family:var(--en)}
.jp,[lang=ja]{font-family:var(--jp)}
a:focus-visible,button:focus-visible,.col:focus-visible,.chk:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

/* ---------- header ---------- */
.head{position:sticky;top:env(safe-area-inset-top,0px);z-index:40;height:var(--head);padding-inline:var(--pad);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;background:var(--paper)}
.logo{justify-self:start;font-family:var(--en);font-size:30px;font-weight:900;font-stretch:75%;letter-spacing:-.01em;line-height:1;text-transform:uppercase;text-decoration:none;white-space:nowrap}
.nav{display:flex;gap:40px;font-size:15px;font-weight:500}
.nav a{text-decoration:none;padding-block:4px;border-bottom:2px solid transparent;white-space:nowrap}
.nav a[aria-current=page]{border-bottom-color:var(--ink)}
.head-r{justify-self:end;display:flex;align-items:center;gap:24px}
.lang{font-family:var(--en);text-decoration:none;color:var(--mute);font-size:13px;font-weight:500;letter-spacing:.08em;white-space:nowrap}
.lang b{font-weight:500;color:var(--ink)}
.btn{display:inline-block;border:1px solid var(--ink);border-radius:0;padding:12px 24px;font:inherit;font-size:14px;font-weight:500;line-height:1.5;text-decoration:none;color:var(--ink);background:var(--paper);white-space:nowrap;transition:background .2s,color .2s}
.btn:hover{background:var(--ink);color:var(--ink-inv)}
.btn.lg{padding:18px 40px;font-size:16px}
.menu-btn{display:none;justify-self:end;grid-column:3;border:0;background:none;padding:12px 0;min-height:44px;font-family:var(--en);font-size:14px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}
.mnav{position:fixed;inset:calc(var(--head) + env(safe-area-inset-top,0px)) 0 0 0;z-index:39;background:var(--paper);padding:32px var(--gut) calc(32px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:4px;overflow:auto}
.mnav a{text-decoration:none;font-size:clamp(32px,9vw,56px);font-weight:900;line-height:1.35;letter-spacing:-.01em}
.page[lang=en] .mnav a{font-stretch:80%;letter-spacing:-.02em}
.mnav a.lang{margin-top:auto;padding-block:16px;font-size:15px;font-weight:500;font-stretch:100%;letter-spacing:.08em}
@media (max-width:1023px){
  .nav,.head-r{display:none}
  .menu-btn{display:block}
  .logo{font-size:26px}
}
@media (min-width:1024px){.mnav{display:none!important}}

/* ---------- shared pieces ---------- */
.sec{padding:112px var(--pad)}
.bt{border-top:1px solid var(--line)}
.split{display:grid;grid-template-columns:4fr 8fr;gap:64px;align-items:start}
.split>*{min-width:0}
.stack{display:flex;flex-direction:column;gap:16px}
.kicker{font-family:var(--en);font-size:12px;font-weight:500;letter-spacing:.08em;line-height:1.4;text-transform:uppercase;color:var(--mute)}
.h2{font-size:clamp(32px,5.5vw,56px);line-height:1.05;letter-spacing:-.01em;font-weight:900;text-wrap:balance}
.page[lang=en] .h2{font-stretch:80%;letter-spacing:-.02em;line-height:1}
.page[lang=en] .h2.jp{font-stretch:100%;letter-spacing:-.01em;line-height:1.05}
.link{position:relative;text-decoration:none;font-weight:500}
.link::after{content:"";position:absolute;left:0;bottom:-3px;height:2px;width:0;background:currentColor;transition:width .25s}
.link:hover::after{width:100%}
.prose{max-width:760px;font-size:22px;line-height:1.8}
.page[lang=en] .prose{font-size:21px;line-height:1.65}
.page[lang=en] .prose.jp{font-size:20px;line-height:1.9}
@media (max-width:899px){
  .sec{padding-block:72px}
  .split{grid-template-columns:1fr;gap:32px}
  .prose,.page[lang=en] .prose,.page[lang=en] .prose.jp{font-size:17px}
}

/* ---------- headline motion ---------- */
@keyframes rise{from{transform:translateY(110%)}to{transform:translateY(0)}}
.line{display:block;overflow:hidden;white-space:nowrap;padding-bottom:.14em;margin-bottom:-.14em}
.line>span{display:block;animation:rise .7s var(--ease) both}
.line:nth-child(2)>span{animation-delay:.12s}
.ch{display:inline-block;position:relative;overflow:hidden;vertical-align:top;line-height:1;padding-bottom:.14em;margin-bottom:-.14em}
.ch-a{display:block;transition:transform .35s var(--ease)}
.ch-b{display:block;position:absolute;left:0;top:1.14em;color:var(--accent);transition:transform .35s var(--ease)}
.ch:hover .ch-a,.ch:hover .ch-b{transform:translateY(-1.14em)}

/* ---------- top: hero ---------- */
.hero{min-height:640px;padding:96px var(--pad) 56px;display:flex;flex-direction:column;justify-content:space-between;gap:72px}
.h1{font-size:clamp(40px,11vw,152px);line-height:.96;letter-spacing:-.02em;font-weight:900}
.page[lang=en] .h1{font-size:clamp(44px,9.6vw,136px);letter-spacing:-.03em;font-stretch:78%}
.hero-meta{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:end}
.hero-meta>*{min-width:0}
.facts{display:grid;grid-template-columns:auto 1fr;column-gap:24px;row-gap:8px;font-size:14px;line-height:1.5;font-weight:500}
.facts dt{font-family:var(--en);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);padding-top:2px}
.lede{justify-self:end;max-width:520px;font-size:20px;line-height:1.8;text-align:right}
.page[lang=en] .lede{max-width:600px;line-height:1.7}
@media (max-width:767px){
  .hero{min-height:0;padding-block:72px 48px;gap:56px}
  .h1{font-size:clamp(40px,12.4vw,64px)}
  .page[lang=en] .h1{font-size:clamp(44px,14vw,72px)}
  .hero-meta{grid-template-columns:1fr;gap:32px}
  .lede{justify-self:start;text-align:left;font-size:17px}
}

/* ---------- top: three pillars ---------- */
.cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding-inline:calc(var(--pad) - var(--gut))}
.col{min-height:400px;padding:56px 48px;border-left:1px solid var(--line);display:flex;flex-direction:column;gap:20px;cursor:pointer;transition:background .25s,color .25s}
.col:first-child{border-left:0}
.col h2{font-size:clamp(36px,4.4vw,64px);line-height:1;letter-spacing:-.02em;font-weight:900}
.page[lang=en] .col h2{font-stretch:78%}
.col p{max-width:340px;margin-bottom:20px}
.col .link{font-size:15px}
@media (hover:hover){.col:hover{background:var(--paper-2)}}
.col.is-on,.col.is-on:hover{background:var(--ink);color:var(--ink-inv)}
.col.is-on .kicker{color:var(--mute-inv)}
@media (max-width:899px){
  .cols{grid-template-columns:1fr;padding-inline:0}
  .col{min-height:0;padding:40px var(--gut);border-left:0;border-top:1px solid var(--line)}
  .col:first-child{border-top:0}
  .col p{max-width:none}
}

/* ---------- tables ---------- */
.table{display:grid;grid-template-columns:200px minmax(0,1fr);border-top:1px solid var(--line);font-size:16px;line-height:1.7}
.page[lang=en] .table{grid-template-columns:180px minmax(0,1fr)}
.table dt,.table dd{padding:20px 0;border-bottom:1px solid var(--line)}
.table dt{font-weight:500;color:var(--mute)}
.table .end{border-bottom:0}
.table ol{padding-left:1.4em;display:flex;flex-direction:column;gap:4px}
.sub{white-space:nowrap;font-family:var(--en);font-size:.78em;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);margin-left:.6em}
.aside{font-size:.85em;color:var(--mute);margin-left:.6em}
.small{font-size:14px;color:var(--mute)}
@media (max-width:599px){
  .table,.page[lang=en] .table{grid-template-columns:1fr}
  .table dt{border-bottom:0;padding-bottom:0;font-size:13px}
  .table dd{padding-top:4px}
  .table dt.end{display:none}
}

/* ---------- call to action ---------- */
.cta{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:flex-start;gap:32px}
.cta::before{content:"";position:absolute;inset:0;background:var(--paper-2);transform:translateY(101%);transition:transform .45s var(--ease)}
@media (hover:hover){.cta:hover::before{transform:translateY(0)}}
.cta>*{position:relative}
.cta h2{font-size:clamp(36px,6.4vw,72px);line-height:1.05;letter-spacing:-.01em;font-weight:900}
.page[lang=en] .cta h2{font-stretch:80%;letter-spacing:-.02em;line-height:1}
.cta p{max-width:640px}
.page[lang=en] .cta p{max-width:680px;font-size:19px}

/* ---------- page heads ---------- */
.phead{position:relative;min-height:560px;padding:72px var(--pad);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:40px;text-align:center}
.phead.tint{min-height:480px;background:var(--paper-2)}
.phead.dark{min-height:640px;background:var(--ink);color:var(--ink-inv);overflow:hidden;touch-action:pan-y;--y1:30px;--y2:240px;--y3:420px;--dig-fs:210px}
.phead.dark .kicker{position:relative;color:var(--mute-inv)}
.h1s{position:relative;font-size:clamp(32px,8.5vw,120px);line-height:1.02;letter-spacing:-.02em;font-weight:900}
.page[lang=en] .h1s{font-size:clamp(34px,9vw,136px);line-height:.96;letter-spacing:-.03em;font-stretch:78%}
.hint{position:absolute;right:var(--pad);bottom:32px;font-size:12px;letter-spacing:.08em;color:var(--mute-inv)}
@media (max-width:767px){
  .phead{min-height:340px;padding-block:56px;gap:28px}
  .phead.tint{min-height:300px}
  .phead.dark{min-height:max(60svh,420px);--y1:28px;--y2:160px;--y3:300px;--dig-fs:96px}
  .h1s{font-size:clamp(30px,10.4vw,56px)}
  .page[lang=en] .h1s{font-size:clamp(32px,10.4vw,60px)}
  .hint{bottom:20px}
}

/* buried words (about) */
.dig{position:absolute;inset:0;pointer-events:none}
.dig span{position:absolute;left:100%;top:0;font-family:var(--en);font-size:var(--dig-fs);font-weight:900;font-stretch:75%;line-height:1;letter-spacing:-.02em;text-transform:uppercase;white-space:nowrap;will-change:transform}
.dig.jp span{font-family:var(--jp);font-stretch:100%;font-size:calc(var(--dig-fs) * .9)}
@keyframes flow{
  0%{transform:translate(var(--off),var(--y1))}
  33.333%{transform:translate(calc(-100vw - 100%),var(--y1))}
  33.334%{transform:translate(var(--off),var(--y2))}
  66.666%{transform:translate(calc(-100vw - 100%),var(--y2))}
  66.667%{transform:translate(var(--off),var(--y3))}
  100%{transform:translate(calc(-100vw - 100%),var(--y3))}
}
.dig .w1{--off:0px;animation:flow 72s linear -8s infinite}
.dig .w2{--off:460px;animation:flow 72s linear -32s infinite}
.dig .w3{--off:960px;animation:flow 72s linear -56s infinite}
.dig-base span{color:var(--buried)}
.dig-hit span{color:var(--accent)}
.dig-hit{clip-path:circle(0px at 50% 50%);opacity:0;transition:clip-path .35s var(--ease),opacity .2s}

/* ---------- about ---------- */
.msg{display:flex;flex-direction:column;gap:28px;max-width:760px;font-size:18px;line-height:1.9}
.page[lang=en] .msg{font-size:19px;line-height:1.7}
.msg .open{font-size:26px;line-height:1.6;font-weight:500}
.page[lang=en] .msg .open{font-size:28px;line-height:1.4;letter-spacing:-.01em}
.msg .close{font-weight:500}
.sign{margin-top:16px;display:flex;flex-direction:column;gap:4px;align-items:flex-end;font-size:15px;line-height:1.6}
.sign span:first-child{color:var(--mute)}
.sign span:last-child{font-size:22px;font-weight:500}
@media (max-width:767px){
  .msg,.page[lang=en] .msg{font-size:16px}
  .msg .open,.page[lang=en] .msg .open{font-size:21px}
}

/* ---------- service ---------- */
.lead p{max-width:760px;font-size:22px;line-height:1.8}
.page[lang=en] .lead p{font-size:24px;line-height:1.6}
.sec.lead{padding-block:72px}
.pillar{position:relative;overflow:hidden;padding-block:96px}
.pillar::before{content:"";position:absolute;inset:0;background:var(--paper-2);transform:translateY(101%);transition:transform .5s var(--ease)}
@media (hover:hover){.pillar:hover::before{transform:translateY(0)}.pillar:hover h2{transform:translateY(-6px)}}
.pillar>*{position:relative}
.pillar h2{font-size:clamp(48px,6.7vw,96px);line-height:1;letter-spacing:-.02em;font-weight:900;transition:transform .35s var(--ease)}
.page[lang=en] .pillar h2{font-size:clamp(48px,7.2vw,104px);line-height:.95;letter-spacing:-.03em;font-stretch:78%}
.pillar .stack{gap:20px}
.pbody{display:flex;flex-direction:column;gap:28px;max-width:760px;font-size:18px;line-height:1.9}
.page[lang=en] .pbody{font-size:19px;line-height:1.7}
.pbody .open{font-size:26px;line-height:1.6;font-weight:500}
.page[lang=en] .pbody .open{font-size:28px;line-height:1.4;letter-spacing:-.01em}
@media (max-width:899px){
  .pillar{padding-block:64px}
  .sec.lead{padding-block:56px}
  .lead p,.page[lang=en] .lead p{font-size:18px}
  .pbody,.page[lang=en] .pbody{font-size:16px;gap:20px}
  .pbody .open,.page[lang=en] .pbody .open{font-size:21px}
}

/* ---------- contact ---------- */
.cside{display:flex;flex-direction:column;gap:48px}
.cside>p{max-width:360px}
.clist{display:flex;flex-direction:column;gap:20px;font-size:15px;line-height:1.7}
.clist dt{font-family:var(--en);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}
.clist .mail{font-family:var(--en);font-size:17px}
.form{display:flex;flex-direction:column;gap:40px;max-width:720px}
.row2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px}
.fld{display:flex;flex-direction:column;gap:6px}
.fld label{font-size:13px;font-weight:500;color:var(--mute);transition:color .2s}
.fld:focus-within label{color:var(--accent)}
.in{width:100%;border:0;border-bottom:1px solid var(--ink);border-radius:0;background:transparent;padding:14px 0;font:inherit;font-size:17px;line-height:1.6;color:var(--ink);outline:none;-webkit-appearance:none;appearance:none;transition:border-color .2s,box-shadow .2s}
.in:focus{border-bottom-color:var(--accent);box-shadow:0 1px 0 0 var(--accent)}
select.in{padding-right:28px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23111111' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 2px center}
textarea.in{resize:vertical;min-height:180px}
.agree{display:flex;align-items:center;gap:14px;font-size:15px;line-height:1.6}
.chk{width:20px;height:20px;margin:0;flex-shrink:0;border-radius:0;accent-color:var(--ink)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.note{font-size:15px;line-height:1.7;color:var(--mute);border-top:1px solid var(--line);padding-top:16px}
@media (max-width:599px){.row2{grid-template-columns:1fr}.form{gap:32px}}

.cmail{display:flex;flex-direction:column;gap:36px;max-width:720px}
.mailbig{display:inline-block;margin-top:10px;font-family:var(--en);font-size:clamp(24px,4.2vw,56px);font-weight:900;font-stretch:80%;letter-spacing:-.02em;line-height:1.1;overflow-wrap:anywhere}
.topics{list-style:none;margin-top:12px;padding:0;border-top:1px solid var(--line);font-size:16px}
.topics li{padding:14px 0;border-bottom:1px solid var(--line)}

/* ---------- privacy / plain pages ---------- */
.h1p{font-size:clamp(36px,5.5vw,56px);line-height:1.05;letter-spacing:-.01em;font-weight:900}
.page[lang=en] .h1p{font-stretch:80%;letter-spacing:-.02em;line-height:1}
.dated{margin-top:16px;font-size:13px;letter-spacing:.04em;color:var(--mute)}
.policy{display:flex;flex-direction:column;gap:40px;max-width:760px}
.policy div{display:flex;flex-direction:column;gap:12px}
.policy h2{font-size:20px;line-height:1.4;font-weight:500}
.policy p{font-size:16px;line-height:1.9}
.page[lang=en] .policy p{line-height:1.8}
.plain{min-height:52vh;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:28px}

/* ---------- footer ---------- */
.foot{padding:64px var(--pad) 40px;background:var(--ink);color:var(--ink-inv);display:flex;flex-direction:column;gap:56px}
.foot-top{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start}
.foot .logo{display:block;color:var(--ink-inv)}
.foot-addr{margin-top:16px;font-size:14px;line-height:1.7;color:var(--mute-inv)}
.foot nav{display:flex;flex-direction:column;gap:12px;align-items:flex-end;font-size:14px;font-weight:500}
.foot nav a{text-decoration:none;color:var(--ink-inv)}
.foot nav a.dim{color:var(--mute-inv)}
.foot nav a:hover{text-decoration:underline;text-underline-offset:4px}
.foot-btm{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px 24px;font-family:var(--en);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute-inv)}
@media (max-width:767px){
  .foot-top{grid-template-columns:1fr;gap:40px}
  .foot nav{align-items:flex-start}
  .foot nav a{padding-block:4px}
}

/* ---------- cursor (mouse only; added by script) ---------- */
.cur{position:fixed;left:0;top:0;width:14px;height:14px;border-radius:50%;background:#FFFFFF;mix-blend-mode:difference;pointer-events:none;z-index:100;opacity:0;transition:width .25s,height .25s,opacity .2s}
html.has-cur,html.has-cur a,html.has-cur button,html.has-cur input,html.has-cur textarea,html.has-cur select,html.has-cur label,html.has-cur .col{cursor:none}
html.has-cur:has(a:hover,button:hover,input:hover,textarea:hover,select:hover) .cur{width:64px;height:64px}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  .line>span{animation:none}
  .ch-a,.ch-b,.cta::before,.pillar::before,.pillar h2,.dig-hit{transition:none}
  .ch:hover .ch-a,.ch:hover .ch-b{transform:none}
  .ch:hover .ch-a{color:var(--accent)}
  .dig span{animation:none!important;left:0}
  .dig .w1{transform:translate(4vw,var(--y1))}
  .dig .w2{transform:translate(48vw,var(--y2))}
  .dig .w3{transform:translate(10vw,var(--y3))}
}
