/* 共通の骨組み。色・フォント・質感は各案のCSS(トークン)で決める */
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:clip}body{margin:0}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--fg);overflow-x:clip;font-family:var(--font-body);font-size:16px;line-height:1.85;padding-inline:max(16px,env(safe-area-inset-left,0px)) max(16px,env(safe-area-inset-right,0px));padding-block:0}
.wrap{max-width:1040px;margin:0 auto}
a{color:inherit}
:focus-visible{outline:3px solid var(--ink);outline-offset:3px;box-shadow:0 0 0 6px var(--accent)}
section[id]{scroll-margin-top:72px}
.skip{position:fixed;left:16px;top:-60px;z-index:100;background:var(--accent);color:var(--ink);padding:8px 16px;border-radius:999px;font-weight:700;text-decoration:none;transition:top .2s}
.skip:focus{top:12px}
/* Motionが読み込めた時だけ初期状態を隠す */
html.mo:not(.static) [data-r],html.mo:not(.static) .cred li,html.mo:not(.static) .flow li,html.mo:not(.static) .services .card,html.mo:not(.static) .listen .yt,html.mo:not(.static) .career>div,html.mo:not(.static) .stat,html.mo:not(.static) .hero .btns .btn,html.mo:not(.static) .hero .eyebrow,html.mo:not(.static) .hero .lead,html.mo:not(.static) h1 .ch{opacity:0}
.progress{position:fixed;left:0;top:0;right:0;height:4px;z-index:80;transform-origin:0 50%;transform:scaleX(0);background:var(--accent)}
html:not(.mo) .progress,html.static .progress{display:none}
.nav{position:fixed;z-index:70;left:0;right:0;top:0;padding:0 max(16px,env(safe-area-inset-left,0px))}
.nav .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 16px;padding-block:16px;font-family:var(--font-display);font-weight:700}
.nav nav{display:flex;gap:6px 20px;flex-wrap:wrap;font-size:14px;font-weight:500}
.nav nav a{text-decoration:none;padding-block:4px;border-bottom:2px solid transparent;transition:border-color .2s}
.nav nav a:hover,.nav nav a[aria-current="true"]{border-bottom-color:var(--accent)}
.logo{white-space:nowrap;display:inline-flex;align-items:center;text-decoration:none;letter-spacing:.04em}
.dot{width:14px;height:14px;border-radius:50%;background:var(--pink);box-shadow:10px 0 0 var(--yellow),20px 0 0 var(--blue);margin-right:34px}
.hero{position:relative;padding-block:132px 0}
.hero-inner{position:relative;z-index:1}
.eyebrow{font-family:var(--font-display);font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
h1{font-family:var(--font-body);font-weight:900;line-height:1.05;letter-spacing:-.03em;font-size:clamp(30px,12.5vw,128px);white-space:nowrap;margin:16px 0 20px}
h1 .ch{display:inline-block;cursor:default;will-change:transform}
h1>span:nth-child(2){color:var(--h1b)}
.lead{max-width:30em;font-size:18px;margin:0 0 28px}
.btns{display:flex;flex-wrap:wrap;gap:12px}
.btn{display:inline-block;text-decoration:none;font-weight:700;padding:12px 26px;border-radius:999px;border:2px solid var(--ink);transition:background .2s,color .2s;will-change:transform}
.btn.fill{background:var(--ink);color:var(--bg)}
.btn:hover{background:var(--accent);color:var(--ink)}
.stats{display:flex;gap:28px;flex-wrap:wrap;margin-top:28px}
.stat{font-family:var(--font-display)}
.stat b{display:block;font-size:clamp(34px,6vw,56px);line-height:1;font-variant-numeric:tabular-nums}
.stat span{font-size:13px;letter-spacing:.1em;color:var(--muted);text-transform:uppercase}
.eq{position:relative;z-index:1;display:flex;align-items:flex-end;gap:clamp(3px,1vw,10px);height:150px;margin-top:56px}
.eq i{flex:1;min-width:0;border-radius:999px 999px 0 0;height:var(--h);background:var(--c);transform-origin:bottom;transform:scaleY(.6);will-change:transform}
section{padding-block:88px}
.tag{display:inline-block;font-family:var(--font-display);font-weight:700;font-size:13px;letter-spacing:.12em;text-transform:uppercase;padding:2px 14px;border-radius:999px;color:var(--ink);background:var(--c)}
h2{font-size:clamp(28px,5vw,44px);line-height:1.25;margin:14px 0 36px;font-weight:900;text-wrap:balance}
h2 .ch{display:inline-block;white-space:pre;will-change:transform}
.services{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;perspective:1000px}
.card{position:relative;background:var(--card);border:var(--card-line);border-radius:var(--radius);padding:28px;min-width:0;overflow:hidden;will-change:transform}
.card .ic{width:44px;height:44px;border-radius:14px;background:var(--c);margin-bottom:18px}
.card h3{margin:0 0 6px;font-size:19px}
.card p{margin:0;font-size:14.5px;line-height:1.75;color:var(--muted)}
.card small{font-size:12.5px}
.more{display:inline-block;margin-top:10px;font-weight:700;font-size:14px;color:var(--link);text-decoration:none;border-bottom:2px solid currentColor}
.more:hover{color:var(--ink)}
.listen{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}
.yt{display:flex;align-items:center;gap:16px;padding:18px 22px;border-radius:var(--radius);background:var(--card);border:var(--card-line);text-decoration:none;min-width:0;transition:background .2s,color .2s;will-change:transform}
.yt:hover{background:var(--c);color:var(--ink)}
.yt b{flex:none;width:48px;height:48px;border-radius:50%;background:var(--c);display:grid;place-items:center}
.yt:hover b{background:var(--ink)}
.yt b::after{content:"";border-left:14px solid var(--ink);border-top:9px solid transparent;border-bottom:9px solid transparent;margin-left:4px}
.yt:hover b::after{border-left-color:var(--c)}
.yt span{min-width:0;display:block}
.yt strong{display:block;font-size:16px;line-height:1.4}
.yt .role{display:inline-block;font-style:normal;font-family:var(--font-display);font-size:12.5px;font-weight:700;letter-spacing:.06em;padding:1px 10px;margin:6px 6px 2px 0;border-radius:999px;background:var(--ink);color:var(--bg)}
.yt:hover .role{background:var(--ink);color:#fff}
.yt small{display:block;color:var(--muted);font-size:13px}
.yt:hover small{color:var(--ink)}
.yt .note{display:block;font-size:12.5px;line-height:1.5;color:var(--muted);margin-top:2px}
.yt:hover .note{color:var(--ink)}
.sub{margin:-20px 0 28px;font-size:13px;color:var(--muted)}
.credits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.cred{background:var(--card);border:var(--card-line);border-radius:var(--radius);padding:28px;min-width:0;border-top:8px solid var(--c)}
.cred.wide{grid-column:1/-1}
.cred h3{margin:0 0 14px;font-size:18px}
.cred ul{list-style:none;margin:0;padding:0;font-size:14.5px;line-height:1.6}
.cred li{padding-block:6px;border-bottom:1px solid var(--line)}
.cred li:last-child{border-bottom:0}
.cred em{font-style:normal;font-family:var(--font-display);font-size:12px;font-weight:700;color:var(--muted);margin-left:8px;white-space:nowrap}
.cred small{display:block;color:var(--muted);font-size:12.5px;line-height:1.6}
.about{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start}
.about>*{min-width:0}
.profile{background:var(--profile);color:var(--ink);border-radius:var(--radius);padding:36px}
.profile .role{font-family:var(--font-display);font-size:13px;letter-spacing:.12em;text-transform:uppercase}
.profile .name{font-size:clamp(30px,5vw,44px);font-weight:900;line-height:1.2;margin:6px 0 12px}
.profile p{margin:0}
.profile .name small{display:block;font-family:var(--font-display);font-size:15px;font-weight:500;letter-spacing:.08em;margin-top:2px}
.imgmask{overflow:hidden;border-radius:20px;margin-bottom:24px}
.portrait{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover}
.wideframe{overflow:hidden;border-radius:var(--radius);margin-top:48px}
img.wide{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover}
html.mo:not(.static) .portrait{transform:scale(1.15)}html.mo:not(.static) img.wide{transform:scale(1.2)}
.career{position:relative;margin:0;padding-left:22px}
.career::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:3px;background:var(--line)}
.career .line{position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:3px;background:var(--accent);transform-origin:top}
html:not(.mo) .career .line,html.static .career .line{display:none}
.career div{display:grid;grid-template-columns:6em 1fr;gap:12px;padding-block:12px;border-top:2px solid var(--line)}
.career div:first-of-type{border-top:0}
.career dt{font-family:var(--font-display);font-weight:700}
.career dd{margin:0;font-size:15px;line-height:1.75}
.flow{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;list-style:none;padding:0;margin:0;counter-reset:s}
.flow li{counter-increment:s;border:2px solid var(--line);border-radius:var(--radius);padding:22px;min-width:0;background:var(--card);transition:border-color .25s}
.flow li:hover{border-color:var(--ink)}
.flow li::before{content:counter(s);display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--c);color:var(--ink);font-family:var(--font-display);font-weight:700;margin-bottom:12px}
.flow h3{margin:0 0 4px;font-size:17px}
.flow p{margin:0;font-size:14px;color:var(--muted);line-height:1.7}
.contact{position:relative;overflow:hidden;border-radius:var(--radius);padding:clamp(32px,6vw,72px);margin-block:0 56px}
.contact>*{position:relative;z-index:1}
.contact .tag{background:var(--ink);color:#fff}
.contact h2{margin-top:14px}
.mail{display:flex;align-items:center;flex-wrap:wrap;gap:14px;font-family:var(--font-display);font-weight:700;font-size:clamp(18px,4vw,30px);overflow-wrap:anywhere}
.mail button{position:relative;font:inherit;font-size:14px;padding:6px 16px;border-radius:999px;background:var(--ink);color:#fff;border:0;cursor:pointer;will-change:transform}
.links{display:flex;gap:20px;flex-wrap:wrap;margin-top:24px;font-family:var(--font-display);font-weight:700}
.links a{text-underline-offset:4px}
.confetti{position:absolute;left:50%;top:50%;width:10px;height:10px;border-radius:50%;pointer-events:none}
footer{padding-block:0 40px;font-family:var(--font-display);font-size:13px;color:var(--muted)}
@media(max-width:760px){.about{grid-template-columns:1fr;gap:28px}.credits{grid-template-columns:1fr}.career div{grid-template-columns:4.5em 1fr}section{padding-block:64px}.eq{height:100px;margin-top:40px}.hero{padding-block:120px 0}.nav nav{font-size:12.5px;gap:2px 14px}.nav .wrap{padding-block:12px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
