:root {
  --bg:#ffffff; --soft:#f5f5f3; --surface:#ffffff; --ink:#111214; --ink-2:#2c2e33; --muted:#62656c; --rule:#e5e5e2; --rule-strong:#111214;
  --accent:#2b52e3; --accent-soft:#eef1fd;
  --night:#111214; --night-rule:#ffffff24; --night-muted:#a3a6ad;
  --sans:'Noto Sans JP','Hiragino Kaku Gothic ProN','Yu Gothic',Meiryo,sans-serif;
  --display:'Inter','Noto Sans JP',sans-serif;
  --gutter:30px; --content-width:1125px; --header:72px;
  --ease:cubic-bezier(.2,.8,.2,1);
}
/* 事業ごとの色（ロゴのグラデーションから） */
[data-biz='solispia'] { --biz:#00c97a; } [data-biz='contest'] { --biz:#882aff; } [data-biz='publishing'] { --biz:#18bdd8; } [data-biz='technology'] { --biz:#5074eb; } [data-biz='company'] { --biz:var(--accent); } [data-biz='other'] { --biz:#8a8f99; }
.pin-mark { flex:0 0 auto; fill:var(--biz); transition:transform .3s var(--ease); } .pin-links a:hover .pin-mark { transform:translateY(-3px); }
.color-dot { flex:0 0 auto; width:10px; height:10px; border-radius:50%; background:var(--biz); }
* { box-sizing:border-box; } [hidden] { display:none!important; }
main { overflow-x:clip; }
html { scroll-padding-top:calc(var(--header) + 20px); -webkit-text-size-adjust:100%; }
body { margin:0; background:var(--bg); color:var(--ink); font:400 16px/1.9 var(--sans); overflow-wrap:anywhere; -webkit-font-smoothing:antialiased; }
a { color:inherit; text-underline-offset:.25em; } a,button { -webkit-tap-highlight-color:transparent; }
button,input,textarea,select { font:inherit; color:inherit; } button,select { cursor:pointer; } button:disabled { cursor:default; }
img,svg { display:block; max-width:100%; } img { height:auto; }
h1,h2,h3,h4,p,figure,dl,dd { margin:0; } h1,h2,h3,h4 { font-weight:700; line-height:1.45; letter-spacing:.02em; overflow-wrap:break-word; word-break:auto-phrase; } p { text-wrap:pretty; }
ul,ol { padding-left:1.5em; }
::selection { background:var(--accent); color:#fff; }
:focus-visible { outline:3px solid var(--accent); outline-offset:3px; }
.shell { width:100%; max-width:calc(var(--content-width) + var(--gutter)*2);  margin-inline:auto; padding-inline:var(--gutter); }

.skip-link { position:absolute; left:16px; top:-60px; z-index:100; padding:10px 16px; border-radius:999px; background:var(--ink); color:#fff; text-decoration:none; } .skip-link:focus { top:12px; }
.only-mobile { display:none; }  .center { display:flex; justify-content:center; }
.arrow { width:20px; height:20px; flex:0 0 20px; transition:transform .3s var(--ease); } a:hover .arrow { transform:translateX(4px); }

/* ボタン */
.pill { display:inline-flex; align-items:center; justify-content:space-between; gap:16px; min-height:52px; padding:12px 26px; border:0; border-radius:999px; background:var(--ink); color:#fff; font-size:15px; font-weight:700; line-height:1.4; text-decoration:none; transition:background .25s,color .25s,box-shadow .25s; }
.pill:hover { background:var(--accent); }
.pill-light { background:#fff; color:var(--ink); } .pill-light:hover { background:var(--accent); color:#fff; }
.pill-ghost { background:transparent; color:inherit; box-shadow:inset 0 0 0 1.5px currentColor; } .pill-ghost:hover { background:transparent; color:var(--accent); box-shadow:inset 0 0 0 1.5px var(--accent); }
.text-link { display:inline-flex; align-items:center; gap:14px; padding-block:6px; border-bottom:1.5px solid currentColor; font-weight:700; text-decoration:none; }
.text-link:hover { color:var(--accent); }
.button { display:inline-flex; align-items:center; justify-content:space-between; gap:20px; min-height:54px; padding:12px 26px; border:0; border-radius:999px; background:var(--ink); color:#fff; font-size:16px; font-weight:700; text-decoration:none; transition:background .25s; }
.button:hover { background:var(--accent); } .button:disabled { background:#d5d8de; color:#4f535c; }

/* 見出し */
.section-title { display:flex; align-items:baseline; flex-wrap:wrap; gap:6px 20px; }
.section-title .en { font:600 clamp(32px,3.4vw,48px)/1 var(--display); letter-spacing:-.02em; }
.section-title .ja { font-size:17px; font-weight:700; color:var(--muted); }

/* ヘッダー */
.site-header { position:sticky; top:0; z-index:50; background:#ffffffe6; -webkit-backdrop-filter:blur(16px); backdrop-filter:blur(16px); border-bottom:1px solid var(--rule); transition:background .35s,border-color .35s; }
.header-inner { display:flex; align-items:center; justify-content:space-between; gap:24px; height:var(--header); }
.brand img { width:184px; }
.desktop-nav { display:flex; align-items:center; gap:32px; }
.desktop-nav > a { position:relative; font-size:15px; font-weight:700; text-decoration:none; }
.desktop-nav > a:not(.header-contact)::after { content:''; position:absolute; left:0; right:0; bottom:-6px; height:2px; background:currentColor; transform:scaleX(0); transform-origin:left; transition:transform .3s var(--ease); }
.desktop-nav > a:hover::after,.desktop-nav > a[aria-current]::after { transform:scaleX(1); }
.desktop-nav .header-contact { padding:10px 22px; border-radius:999px; background:var(--ink); color:#fff; transition:background .25s; }
.desktop-nav .header-contact:hover { background:var(--accent); }
.site-header.is-over-hero { background:transparent; border-color:transparent; -webkit-backdrop-filter:none; backdrop-filter:none; }
.mobile-menu { display:none; }

/* トップ：ヒーロー */
.hero { position:relative; overflow:hidden; background:linear-gradient(100deg,#f3f8ff 0%,#e9f2fe 55%,#e2edfd 100%); }

.hero::before { content:''; position:absolute; inset:0; pointer-events:none; background:radial-gradient(circle,#2b52e340 1.5px,transparent 2px) 0 0/24px 24px; -webkit-mask-image:linear-gradient(90deg,#0000008c 0%,#000 55%); mask-image:linear-gradient(90deg,#0000008c 0%,#000 55%); }
.hero-inner { position:relative; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,520px); align-items:center; gap:56px; min-height:clamp(640px,calc(100svh - var(--header)),860px); }
.hero-copy { padding-block:64px; }
.map-title { font:700 clamp(46px,5.6vw,80px)/1.22 var(--sans); letter-spacing:-.01em; }
.type-line { position:relative; display:block; width:max-content; min-height:1.22em; white-space:nowrap; }
.type-line:nth-child(2)::before { content:''; position:absolute; left:.02em; right:1.02em; bottom:.02em; height:.07em; background:var(--accent); transform-origin:left; transition:transform .8s var(--ease); z-index:-1; }
.map-title { position:relative; z-index:0; }
html[data-typing='true']:not([data-typing-phase='confirmed']) .type-line:nth-child(2)::before { transform:scaleX(0); }
html[data-typing='true'][data-typing-phase='composing'][data-typing-line='0'] .type-line:nth-child(1),
html[data-typing='true'][data-typing-phase='composing'][data-typing-line='1'] .type-line:nth-child(2) { text-decoration:underline dotted .05em; text-underline-offset:.16em; }
html[data-typing='true'][data-typing-phase='converted'][data-typing-line='0'] .type-line:nth-child(1),
html[data-typing='true'][data-typing-phase='converted'][data-typing-line='1'] .type-line:nth-child(2) { text-decoration:underline solid .06em; text-underline-offset:.16em; background:var(--accent-soft); }

.type-line:nth-child(2)::after,html[data-typing='true'][data-typing-line='0'] .type-line:nth-child(1)::after { content:''; display:inline-block; width:.05em; height:.9em; margin-left:.08em; vertical-align:-.1em; background:var(--accent); animation:blink 1.06s steps(1) infinite; }
html[data-typing='true'][data-typing-line='0'] .type-line:nth-child(2)::after { content:none; }
html[data-motion-paused='true'] .type-line::after { animation:none; }
@keyframes blink { 50% { opacity:0; } }
.hero-text { max-width:520px; margin-top:12px; color:var(--muted); }
.hero-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:36px; }
.hero-screens { display:grid; grid-template-columns:1fr 1fr; gap:20px; height:clamp(640px,calc(100svh - var(--header)),860px); overflow:hidden; -webkit-mask-image:linear-gradient(180deg,#0000,#000 12%,#000 88%,#0000); mask-image:linear-gradient(180deg,#0000,#000 12%,#000 88%,#0000); }
.screen-column { overflow:hidden; }
.screen-column:nth-child(2) { margin-top:-140px; }
.screen-track { display:grid; gap:12px; animation:screens 60s linear infinite; }
.screen-column:nth-child(2) .screen-track { animation-duration:70s; animation-direction:reverse; }
@keyframes screens { to { transform:translateY(calc(-50% - 6px)); } }
html[data-motion-paused='true'] .screen-track { animation-play-state:paused; }

.phone img { width:100%; height:auto; filter:drop-shadow(0 24px 30px #11121426); }
.motion-toggle { position:absolute; right:var(--gutter); bottom:28px; z-index:2; display:grid; place-items:center; width:44px; height:44px; padding:0; border:1.5px solid var(--ink); border-radius:50%; background:#fff; color:var(--ink); transition:background .2s,color .2s; }
.motion-toggle::before { content:''; width:12px; height:14px; border-inline:3px solid currentColor; }
.motion-toggle[aria-pressed='true']::before { width:0; height:0; border:0; border-block:8px solid transparent; border-left:13px solid currentColor; margin-left:4px; }
.motion-toggle:hover { background:var(--ink); color:#fff; }

/* トップ：About */
.mission { padding-block:clamp(110px,14vh,160px); background:var(--soft); }
.mission-inner { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:72px; align-items:center; margin-top:56px; }
.mission-statement { font:700 clamp(26px,2.6vw,36px)/1.5 var(--sans); letter-spacing:-.01em; }
.mission-text { margin-block:24px 36px; font-size:17px; color:var(--ink-2); }
.mission-photo { position:relative; aspect-ratio:3/2; transform:rotate(1.2deg); }
.mission-photo img { width:100%; height:100%; object-fit:cover; border-radius:20px; box-shadow:0 30px 50px -34px #11121473; }
/* テープで留めた写真 */
.mission-photo::before,.mission-photo::after,.taped-photo::before,.taped-photo::after,.contact-form::before,.contact-form::after,.access-card::before { content:''; position:absolute; z-index:1; width:96px; height:28px; border-radius:2px; background:color-mix(in srgb,var(--tape,#18bdd8) 34%,transparent); box-shadow:0 1px 2px #0000000f; }
.mission-photo::before,.taped-photo::before { left:-22px; top:18px; transform:rotate(-38deg); --tape:#00c97a; }
.mission-photo::after,.taped-photo::after { right:-22px; bottom:22px; transform:rotate(-38deg); --tape:#882aff; }

.pillars { display:grid; grid-template-columns:1fr 1fr; gap:24px; margin-top:80px; }
.pillar { position:relative; display:flex; flex-direction:column; overflow:hidden; border-radius:20px; }
.pillar-publishing { background:radial-gradient(circle,#882aff1f 1.2px,transparent 1.6px) 0 0/22px 22px, #f3edfd; }
.pillar-it { background:radial-gradient(circle,#2b52e31f 1.2px,transparent 1.6px) 0 0/22px 22px, #eaf0fd; }
.pillar-text { padding:32px 40px 40px; }
.pillar h3 { font-size:clamp(24px,2.2vw,30px); line-height:1.4; }
.pillar-links { margin:24px 0 0; padding:0; list-style:none; border-top:1px solid #11121426; }
.pillar-links a { display:flex; align-items:center; gap:12px; padding-block:14px; border-bottom:1px solid #11121426; font-size:16px; font-weight:700; line-height:1.55; text-decoration:none; transition:color .2s; }
.pillar-links a > span:not(.color-dot) { flex:1; } .pillar-links .color-dot { flex:0 0 10px; } .pillar-links .arrow { width:18px; height:18px; flex:0 0 18px; } .pillar-links a:hover { color:var(--accent); }

.pillar-visual { order:-1; position:relative; height:220px; }
.pillar-photo { position:absolute; left:40px; top:40px; width:62%; padding:8px; border-radius:10px; background:var(--surface); box-shadow:0 24px 40px -24px #11121473; transform:rotate(-2deg); }
.pillar-photo img { width:100%; aspect-ratio:16/7; object-fit:cover; object-position:50% 40%; border-radius:5px; }
.pillar-photo::before { content:''; position:absolute; top:-12px; left:50%; width:80px; height:24px; border-radius:2px; background:color-mix(in srgb,#882aff 40%,transparent); transform:translateX(-50%) rotate(-5deg); }
.pillar-phone { position:absolute; top:44px; width:150px; filter:drop-shadow(0 20px 24px #0b1a5e33); }
.pillar-phone:nth-child(1) { left:40px; transform:rotate(-5deg); } .pillar-phone:nth-child(2) { left:200px; top:30px; transform:rotate(4deg); }
.pillar-it .pillar-visual { overflow:hidden; border-bottom:1px solid #2b52e31f; }

/* トップ：事業紹介 */
.business { padding-block:clamp(110px,14vh,160px); }
.biz-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:40px 28px; margin-top:56px; }
.biz-card { position:relative; display:flex; flex-direction:column; text-decoration:none; }
.biz-photo { display:block; overflow:hidden; border-radius:16px; aspect-ratio:4/5; box-shadow:0 26px 40px -30px #11121480; transition:transform .5s var(--ease), box-shadow .5s var(--ease); }
.biz-card:nth-child(1) .biz-photo { transform:rotate(-2deg); } .biz-card:nth-child(2) .biz-photo { transform:rotate(1.5deg) translateY(8px); } .biz-card:nth-child(3) .biz-photo { transform:rotate(-1.2deg) translateY(2px); } .biz-card:nth-child(4) .biz-photo { transform:rotate(2.2deg) translateY(6px); }
.biz-card:hover .biz-photo { transform:rotate(0) translateY(-8px); box-shadow:0 40px 50px -30px #11121499; }
.biz-card::before { content:''; position:absolute; top:-12px; left:50%; z-index:1; width:84px; height:26px; border-radius:2px; background:color-mix(in srgb,var(--biz) 45%,transparent); transform:translateX(-50%) rotate(-4deg); transition:transform .5s var(--ease); }
.biz-card:nth-child(even)::before { transform:translateX(-50%) rotate(4deg) translateY(6px); } .biz-card:hover::before { transform:translateX(-50%) rotate(0) translateY(-8px); }
.biz-photo img { width:100%; height:100%; object-fit:cover; transition:transform .7s var(--ease); }
.biz-card:hover .biz-photo img { transform:scale(1.05); }
.biz-card h3 { margin-top:20px; font-size:21px; }
.biz-card p { margin-top:6px; font-size:15px; color:var(--ink-2); line-height:1.7; }
.biz-more { display:inline-flex; align-items:center; gap:10px; margin-top:14px; font-size:15px; font-weight:700; }
.biz-card:hover .biz-more { color:var(--accent); } .biz-card:hover h3 { color:var(--accent); }

/* 開催実績 */
.works { padding-block:clamp(110px,14vh,160px); border-top:1px solid var(--rule); }

/* トップ：お知らせ */
.home-news { padding-block:clamp(110px,14vh,160px); background:var(--soft); }
.news-list { list-style:none; margin:48px 0 48px; padding:0; border-top:1.5px solid var(--rule-strong); }
.news-row { display:grid; grid-template-columns:auto auto minmax(0,1fr) 20px; align-items:center; gap:20px; padding:26px 8px; border-bottom:1px solid #dcdcd8; text-decoration:none; }
.news-row time { font:500 16px/1 var(--display); color:var(--muted); }
.news-category { font-size:15px; font-weight:700; color:var(--muted); white-space:nowrap; }
.news-row h3 { font-size:16px; font-weight:700; transition:color .2s; } .news-row:hover h3 { color:var(--accent); }

/* お問い合わせ帯 */
.contact-band { background:var(--night); color:#fff; }
.contact-band-inner { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:end; gap:28px 64px; padding-block:clamp(100px,13vh,150px); }
.contact-band .section-title { grid-column:1; } .contact-band .section-title .ja { color:var(--night-muted); }
.contact-lead { grid-column:1; max-width:560px; color:#d9dbe0; }
.contact-actions { grid-column:2; grid-row:1 / 3; display:grid; gap:12px; min-width:340px; }
.contact-actions .pill { min-height:60px; font-size:16px; }
.contact-actions .pill-ghost:hover { color:#fff; box-shadow:inset 0 0 0 1.5px #fff; background:#ffffff14; }

/* フッター */
.site-footer { padding-block:88px 36px; background:var(--night); color:#fff; border-top:1px solid var(--night-rule); }
.footer-top { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:48px; }
.footer-brand img { width:220px; filter:brightness(0) invert(1); }
.footer-nav { display:grid; grid-template-columns:repeat(3,auto); gap:48px 72px; }
.footer-nav h2 { margin-bottom:12px; font-size:15px; font-weight:700; color:var(--night-muted); }
.footer-nav a { display:block; padding-block:5px; font-size:15px; font-weight:500; text-decoration:none; } .footer-nav a:hover { color:#9fb3ff; }

.footer-bottom { display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px 32px; margin-top:20px; padding-top:28px; border-top:1px solid var(--night-rule); font-size:14px; color:var(--night-muted); }

/* 下層ページの冒頭 */
.page-intro h1 { font-size:clamp(18px,1.6vw,22px); font-weight:700; color:var(--muted); }
.enter-letter { display:inline-block; }

/* 事業紹介ページ */

.map-head { position:relative; padding-block:clamp(64px,9vh,96px) clamp(56px,8vh,88px); background:radial-gradient(circle,#ffffff2e 1.2px,transparent 1.6px) 0 0/24px 24px, var(--accent); color:#fff; overflow:hidden; }
.map-head .shell { position:relative; z-index:1; }
.map-head-en { font:600 clamp(38px,4.4vw,60px)/1 var(--display); letter-spacing:-.02em; color:#fff; }
.map-head h1 { margin-top:10px; font-size:clamp(18px,1.6vw,22px); color:#ffffffcc; }
.map-head-lead { word-break:auto-phrase; max-width:880px; margin-top:28px; font-size:clamp(20px,1.9vw,26px); font-weight:700; }
.map-head-overlap { padding-bottom:0; } .map-head-overlap::after { content:''; position:absolute; inset:auto 0 0; height:120px; background:var(--bg); }
.svc-trail { position:absolute; left:0; right:0; bottom:130px; width:100%; height:200px; overflow:visible; pointer-events:none; }
.svc-trail path { fill:none; stroke:#ffffff8c; stroke-width:2; stroke-dasharray:2 10; stroke-linecap:round; }

.taped-photo { position:relative; margin-top:56px; padding:10px; border-radius:12px; background:var(--surface); box-shadow:0 30px 50px -30px #0b1a5ea6; transform:rotate(-.8deg); }
.taped-photo img { width:100%; aspect-ratio:21/9; object-fit:cover; border-radius:6px; }
.company-head .shell { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,440px); grid-template-rows:auto auto 1fr; column-gap:64px; align-items:start; }
.company-head .shell > :not(.taped-photo) { grid-column:1; }
.company-head .taped-photo { grid-column:2; grid-row:1 / span 3; margin:0; transform:rotate(1.4deg); }
.company-head .taped-photo img { aspect-ratio:3/2; }
.company-head + .company-statement { padding-top:72px; }
.company-head::after { height:96px; } .company-head .map-head-lead { margin-bottom:40px; }

@media (min-width:1101px) { .contact-head .map-head-lead,.company-head .map-head-lead { max-width:none; white-space:nowrap; } }
.taped-photo::before { left:-18px; top:14px; } .taped-photo::after { right:-18px; top:14px; bottom:auto; transform:rotate(38deg); }
.svc-tiles { position:relative; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; margin-top:56px; padding-bottom:28px; }
.svc-tile { position:relative; display:flex; flex-direction:column; padding:10px 10px 0; border-radius:10px; background:var(--surface); color:var(--ink); text-decoration:none; box-shadow:0 26px 44px -28px #0b1a5e99; transition:transform .5s var(--ease), box-shadow .5s var(--ease); }
.svc-tile:nth-child(1) { transform:rotate(-2.4deg); } .svc-tile:nth-child(2) { transform:rotate(1.8deg) translateY(14px); } .svc-tile:nth-child(3) { transform:rotate(-1.3deg) translateY(4px); } .svc-tile:nth-child(4) { transform:rotate(2.5deg) translateY(12px); }
.svc-tile::before { content:''; position:absolute; top:-14px; left:50%; z-index:2; width:88px; height:28px; border-radius:2px; background:color-mix(in srgb,var(--biz) 55%,transparent); transform:translateX(-50%) rotate(-4deg); }
.svc-tile:nth-child(even)::before { transform:translateX(-50%) rotate(5deg); }
.svc-tile:hover,.svc-tile:focus-visible { z-index:3; transform:rotate(0) translateY(-10px) scale(1.03); box-shadow:0 44px 60px -30px #0b1a5eb3; }
.svc-tile-photo { display:block; aspect-ratio:4/3; overflow:hidden; border-radius:5px; } .svc-tile-photo img { width:100%; height:100%; object-fit:cover; transition:transform .7s var(--ease); } .svc-tile:hover .svc-tile-photo img { transform:scale(1.05); }
.svc-tile b { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:18px 20px 0; font-size:19px; }
.svc-tile b .arrow { width:18px; height:18px; flex:0 0 18px; transform:rotate(90deg); color:var(--accent); }
.svc-tile > span:last-child { padding:6px 20px 22px; font-size:14px; line-height:1.7; color:var(--ink-2); }
.svc-tile:hover b { color:var(--accent); }

.contest-feature { display:grid; grid-template-columns:minmax(0,7fr) minmax(0,5fr); gap:48px; align-items:center; margin-top:48px; text-decoration:none; }
.contest-feature-image { display:block; overflow:hidden; border-radius:20px; } .contest-feature-image img { width:100%; transition:transform .7s var(--ease); } .contest-feature:hover .contest-feature-image img { transform:scale(1.03); }
.contest-feature-text { display:flex; flex-direction:column; gap:14px; }
.contest-feature-text > b { font-size:clamp(22px,2vw,26px); line-height:1.45; } .contest-feature:hover .contest-feature-text > b { color:var(--accent); }
.contest-feature-text > span:not(.contest-feature-more) { font-size:16px; color:var(--ink-2); }
.contest-feature dl { border-top:1px solid var(--rule-strong); } .contest-feature dl > div { display:grid; grid-template-columns:100px 1fr; padding-block:10px; border-bottom:1px solid var(--rule); font-size:15px; } .contest-feature dt { font-weight:700; } .contest-feature dd { font-family:var(--display); }
.contest-feature-more { display:inline-flex; align-items:center; gap:10px; font-size:15px; font-weight:700; color:var(--accent); }
.row-list { padding-bottom:24px; }
.row { padding-block:96px; border-top:1px solid var(--rule); scroll-margin-top:calc(var(--header) + 8px); }
.row-main { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:80px; align-items:center; }
.row-name { display:flex; align-items:center; gap:8px; font-size:18px; font-weight:700; color:var(--ink); }
.pin-icon { display:none; flex:0 0 auto; fill:var(--biz); } .row-list:not(:has(.route)) .pin-icon { display:block; }
/* 地図のルート（route.js） */

.row-list { position:relative; --route-w:76px; --route-swing:18px; padding-left:calc(var(--gutter) + 96px); }
.route { position:absolute; top:0; left:var(--gutter); overflow:visible; pointer-events:none; }
.route-base,.route-line { fill:none; stroke-width:2.2; stroke-linecap:round; stroke-dasharray:1.5 9; }
.route-base { stroke:#c9ccd3; } .route-line { stroke:var(--accent); stroke-width:3; }
.route-pin-shape { fill:#c9ccd3; transform:scale(.7); transform-box:fill-box; transform-origin:50% 100%; transition:transform .6s cubic-bezier(.3,1.6,.5,1), fill .3s; }
.route-pin.is-reached .route-pin-shape { fill:var(--biz); transform:scale(1); }
.route-start { fill:var(--bg); stroke:var(--accent); stroke-width:2.5; }
.route-flag { fill:none; stroke:var(--ink); stroke-width:2; stroke-linejoin:round; } .route-flag circle { fill:var(--ink); stroke:none; }
.route-walker { fill:var(--accent); transition:opacity .3s; } .route-walker-ring { fill:var(--accent); opacity:.18; transform-box:fill-box; transform-origin:center; animation:route-pulse 1.8s ease-out infinite; }
@keyframes route-pulse { from { transform:scale(.5); opacity:.35; } to { transform:scale(1.6); opacity:0; } }
.route.is-still .route-pin-shape { transition:none; }
.row-text h2 { margin-top:14px; font-size:clamp(26px,2.5vw,34px); line-height:1.45; }
.row-body { margin-top:20px; font-size:17px; color:var(--ink-2); }
.row-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:36px; }
.row-photo { overflow:hidden; border-radius:24px; aspect-ratio:4/3; }
.row-photo img { width:100%; height:100%; object-fit:cover; }

.proof-band { margin-top:64px; padding:48px; border-radius:24px; background:var(--soft); }
.proof-title { font-size:20px; font-weight:700; }
.proof-label { font-size:15px; font-weight:700; color:var(--accent); }
.proof-apps { display:grid; grid-template-columns:minmax(0,7fr) minmax(0,5fr); gap:56px; align-items:center; padding-bottom:0; overflow:hidden; }
.proof-apps-screens { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; align-items:end; margin-bottom:-12%; }
.proof-apps-screens img { width:100%; filter:drop-shadow(0 18px 24px #11121426); }
.proof-apps-screens img:nth-child(odd) { transform:translateY(-8%); }
.proof-apps-text { padding-bottom:40px; } .proof-apps-text > p:not(.proof-title):not(.proof-ad) { margin-top:8px; font-size:15px; color:var(--muted); }
.store-links { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin-top:20px; } .store-links a { display:block; transition:transform .2s; } .store-links a:hover { transform:translateY(-3px); } .store-links img { height:40px; width:auto; }
.proof-ad { margin-top:24px; font-size:15px; color:var(--muted); } .proof-ad a { display:inline-flex; align-items:center; gap:8px; color:var(--accent); font-weight:700; text-decoration:none; } .proof-ad .arrow { width:18px; height:18px; flex-basis:18px; }
.proof-contest { margin-top:72px; padding-top:48px; border-top:1px solid var(--rule); } .proof-heading { font-size:20px; } .proof-heading + .contest-feature { margin-top:28px; }
.proof-case { display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:48px; align-items:center; }
.proof-case .proof-title { margin-top:6px; font-size:22px; } .proof-case p:last-child { margin-top:12px; font-size:16px; color:var(--ink-2); }
.proof-case img { border:1px solid var(--rule); border-radius:12px; box-shadow:0 30px 50px -36px #11121466; }

/* 会社概要 */
.company-statement { display:grid; grid-template-columns:auto 1fr; gap:96px; align-items:start; padding-block:120px 96px; }
.pin-links { display:grid; grid-template-columns:1fr 1fr; gap:0 32px; margin:36px 0 0; padding:0; list-style:none; border-top:1px solid var(--rule-strong); }
.pin-links a { display:flex; align-items:center; gap:12px; padding-block:18px; border-bottom:1px solid var(--rule); font-size:17px; font-weight:700; text-decoration:none; transition:color .2s; }
.pin-links a span { flex:1; } .pin-links .arrow { width:20px; height:20px; } .pin-links a:hover { color:var(--accent); }
.company-profile { padding-bottom:120px; } .company-profile > h2 { font-size:30px; }
.profile-grid { display:grid; grid-template-columns:minmax(0,7fr) minmax(0,4fr); gap:56px; align-items:start; margin-top:32px; }
.access-card { position:relative; display:flex; flex-direction:column; align-items:flex-start; gap:10px; padding:36px 32px; border-radius:16px; background:radial-gradient(circle,#2b52e324 1.2px,transparent 1.6px) 0 0/22px 22px, var(--accent-soft); transform:rotate(1deg); }
.access-card::before { left:50%; top:-14px; transform:translateX(-50%) rotate(-3deg); --tape:#18bdd8; }
.access-pin { margin-bottom:6px; fill:var(--accent); filter:drop-shadow(0 8px 8px #2b52e340); }
.access-title { font-size:20px; font-weight:700; } .access-address { font-size:15px; line-height:1.8; color:var(--ink-2); } .access-card .pill { margin-top:14px; }
.company-statement h2 { writing-mode:vertical-rl; font-size:clamp(34px,3.6vw,52px); line-height:1.5; letter-spacing:.06em; }
.company-statement > div { max-width:600px; padding-top:8px; }
.company-statement p { font-size:17px; } .company-statement .text-link { margin-top:32px; }
.company-table { border-top:1px solid var(--rule-strong); }
.company-table > div { display:grid; grid-template-columns:180px 1fr; gap:24px; padding:22px 0; border-bottom:1px solid var(--rule); }
.company-table dt { font-weight:700; } .company-table a { color:var(--accent); }

/* お知らせ一覧 */
.news-archive { padding-block:80px 120px; }
.news-list-page { margin:0; padding:0; list-style:none; }
.news-stop > a { display:grid; grid-template-columns:300px minmax(0,1fr); gap:48px; align-items:center; padding-block:40px; border-bottom:1px solid var(--rule); text-decoration:none; }
.news-stop:first-child > a { border-top:1px solid var(--rule-strong); }
.news-photo { position:relative; display:flex; align-items:center; justify-content:center; aspect-ratio:16/10; padding:8px; border-radius:10px; background:var(--surface); box-shadow:0 24px 36px -26px #11121480; transform:rotate(-1.6deg); transition:transform .5s var(--ease); }
.news-stop:nth-child(even) .news-photo { transform:rotate(1.4deg); }
.news-photo img { width:100%; height:100%; object-fit:contain; border-radius:5px; } .news-photo-logo { background:var(--soft); } .news-photo-logo img { width:70%; height:auto; object-fit:contain; }
.news-photo::before { content:''; position:absolute; top:-12px; left:50%; z-index:1; width:76px; height:24px; border-radius:2px; background:color-mix(in srgb,var(--biz) 45%,transparent); transform:translateX(-50%) rotate(-4deg); }
.news-stop > a:hover .news-photo { transform:rotate(0) translateY(-6px); }
.news-copy { display:flex; flex-direction:column; align-items:flex-start; gap:10px; }
.news-meta { display:flex; flex-wrap:wrap; align-items:center; gap:14px; }
.news-meta time { font:500 16px/1 var(--display); letter-spacing:.04em; color:var(--muted); }
.news-category { display:inline-flex; align-items:center; gap:6px; }
.news-copy h2 { font-size:clamp(20px,1.9vw,24px); line-height:1.55; } .news-stop > a:hover h2 { color:var(--accent); }
.news-desc { font-size:15px; color:var(--ink-2); }
.news-more { display:inline-flex; align-items:center; gap:10px; margin-top:4px; font-size:15px; font-weight:700; color:var(--accent); }
.back-link { display:inline-flex; align-items:center; gap:10px; font-size:15px; font-weight:700; text-decoration:none; color:var(--ink-2); } .back-link .arrow { width:18px; height:18px; transform:scaleX(-1); } .back-link:hover { color:var(--accent); } .back-link:hover .arrow { transform:scaleX(-1) translateX(4px); }
/* 記事 */
.article-head { padding-block:56px 64px; background:radial-gradient(circle,#2b52e31f 1.2px,transparent 1.6px) 0 0/24px 24px, var(--accent-soft); }
.article-head.has-image { padding-bottom:200px; }
.article-head-inner { max-width:calc(880px + var(--gutter)*2); }
.article-head .news-meta { margin-top:40px; } .article-head .news-meta time { color:var(--ink-2); } .news-category { color:var(--ink-2); }
.article-head h1 { margin-top:14px; font-size:clamp(28px,3.2vw,42px); line-height:1.5; letter-spacing:.01em; }
.article-hero { max-width:calc(880px + var(--gutter)*2); margin-top:-160px; }
.article-hero img { width:100%; border-radius:16px; box-shadow:0 40px 60px -40px #0b1a5e8c; }
.article { padding-block:64px 88px; }
.article-inner { max-width:720px; margin-inline:auto; }
.article-body p { font-size:17px; line-height:2.1; } .article-body p + p { margin-top:1.3em; }
.article-stores { margin-top:48px; padding-block:24px; border-block:1px solid var(--rule); } .article-stores p { font-size:15px; font-weight:700; } .article-stores .store-links { margin-top:12px; }
.article-related { margin-top:48px; } .article-related h2 { font-size:17px; }
.article-related ul { margin:12px 0 0; padding:0; list-style:none; border-top:1px solid var(--rule-strong); }
.related-row { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 4px; border-bottom:1px solid var(--rule); font-size:16px; font-weight:700; text-decoration:none; transition:color .2s; }
.related-row:hover { color:var(--accent); } .related-row .arrow { width:18px; height:18px; flex:0 0 18px; }
.article-more { padding-block:24px 120px; }
.article-more-head { display:flex; align-items:center; justify-content:space-between; gap:24px; padding-top:72px; border-top:1px solid var(--rule); } .article-more-head h2 { font-size:24px; }
.more-list { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px; margin:36px 0 0; padding:0; list-style:none; }
.more-list a { display:flex; flex-direction:column; gap:12px; text-decoration:none; }
.more-list .news-photo { margin-bottom:8px; } .more-list li:nth-child(even) .news-photo { transform:rotate(1.4deg); }
.more-list b { font-size:17px; line-height:1.6; } .more-list a:hover b { color:var(--accent); } .more-list a:hover .news-photo { transform:rotate(0) translateY(-6px); }

/* お問い合わせ */

.contact-layout { position:relative; z-index:1; display:grid; grid-template-columns:minmax(0,7fr) minmax(0,4fr); gap:64px; align-items:start; margin-top:-96px; padding-bottom:120px; }
.contact-aside { display:grid; gap:0; padding-top:136px; }
.contact-aside > div { padding-block:22px; border-bottom:1px solid var(--rule); } .contact-aside > div:first-child { border-top:1px solid var(--rule-strong); }
.contact-aside h2 { font-size:17px; } .contact-aside p { margin-top:6px; font-size:15px; color:var(--ink-2); } .contact-aside a { color:var(--accent); font-weight:700; }
.aside-link { display:inline-flex; align-items:center; gap:8px; text-decoration:none; } .aside-link .arrow { width:18px; height:18px; }
.topic-field { margin:0 0 24px; padding:0; border:0; min-width:0; }
.topic-field legend { display:flex; align-items:center; gap:12px; margin-bottom:12px; padding:0; font-size:16px; font-weight:700; } .topic-field legend > span { color:var(--accent); font-size:15px; }
.topic-options { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.topic-field .topic-option { position:relative; display:block; margin:0; cursor:pointer; }

.contact-head { padding-bottom:150px; } .contact-head::after { display:none; }
.topic-option input { position:absolute; inset:0; opacity:0; margin:0; cursor:pointer; }
.topic-field .topic-option > span { color:var(--ink); }
.topic-option > span { display:flex; align-items:center; gap:10px; min-height:54px; padding:12px 16px; border:1.5px solid #cdd1d9; border-radius:12px; font-size:15px; font-weight:700; line-height:1.5; transition:border-color .2s, background .2s; }
.topic-option .color-dot { background:#c9ccd3; transition:background .2s; }
.topic-option:hover > span { border-color:var(--ink); }
.topic-option input:checked + span { border-color:var(--biz); background:color-mix(in srgb,var(--biz) 9%,#fff); } .topic-option input:checked + span .color-dot { background:var(--biz); }
.topic-option input:focus-visible + span { outline:3px solid var(--accent); outline-offset:2px; }
.contact-form { position:relative; min-width:0; padding:44px 40px 40px; border-radius:16px; background:var(--surface); box-shadow:0 34px 60px -36px #0b1a5ea6, 0 0 0 1px #11121410; }
.contact-form::before { left:28px; top:-12px; transform:rotate(-4deg); --tape:#00c97a; } .contact-form::after { right:28px; top:-12px; transform:rotate(5deg); --tape:#882aff; }
.contact-field-pair { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.field { margin-bottom:24px; }
.field label { display:flex; align-items:center; flex-wrap:wrap; gap:12px; margin-bottom:9px; font-size:16px; font-weight:700; }
.field label > span { color:var(--accent); font-size:15px; } .field label > .optional { color:var(--muted); }
.field input,.field select,.field textarea { display:block; width:100%; min-width:0; min-height:54px; padding:12px 16px; border:1px solid #cdd1d9; border-radius:12px; background:#fff; font-size:16px; line-height:1.7; transition:border-color .2s,box-shadow .2s; }
.field textarea { min-height:180px; resize:vertical; }
.field input:hover,.field select:hover,.field textarea:hover { border-color:var(--ink); }
.field input:focus,.field select:focus,.field textarea:focus { outline:0; border-color:var(--accent); box-shadow:0 0 0 4px #2b52e329; }
.field-help { margin-top:8px; font-size:15px; color:var(--muted); }
.consent { display:flex; align-items:start; gap:12px; font-size:16px; } .consent input { width:22px; height:22px; flex:0 0 22px; margin:4px 0 0; accent-color:var(--accent); } .consent a { color:var(--accent); font-weight:700; }
.recaptcha-container { margin-top:24px; } .recaptcha-container:empty { display:none; }
.submit-button { width:100%; justify-content:center; margin-top:28px; min-height:60px; font-size:17px; }
.form-status { display:none; } .form-status.is-visible { display:block; margin-bottom:24px; padding:16px 20px; border-radius:14px; background:var(--accent-soft); font-size:15px; } .form-status.is-error { background:#ffe8e8; }
.honeypot { position:absolute; left:-10000px; width:1px; height:1px; overflow:hidden; }

/* プライバシーポリシー・エラー */
.page-intro { max-width:856px; padding-block:72px 28px; } .page-intro h1 { font-size:clamp(24px,2.4vw,30px); color:var(--ink); }
.policy { max-width:856px; padding-bottom:120px; }
.policy > p,.policy li { font-size:15px; } .policy h2 { margin:40px 0 10px; font-size:18px; }
.policy p + p { margin-top:12px; } .policy a { color:var(--accent); } .policy > .text-link { margin-top:32px; color:inherit; }
.error-page { padding-block:120px 140px; }
.error-number { font:600 clamp(72px,9vw,120px)/.9 var(--display); letter-spacing:-.04em; color:var(--accent); }
.error-page h1 { margin-top:24px; font-size:clamp(24px,2.6vw,32px); } .error-page p:not(.error-number) { margin-block:16px 32px; color:var(--muted); }

@media (max-width:1100px) {
  :root { --gutter:24px; }
  .svc-tile:nth-child(n) { transform:rotate(var(--tilt,0)); } .svc-tile:nth-child(1) { --tilt:-1.6deg; } .svc-tile:nth-child(2) { --tilt:1.4deg; } .svc-tile:nth-child(3) { --tilt:1.2deg; } .svc-tile:nth-child(4) { --tilt:-1.4deg; } .svc-tiles { row-gap:32px; } .svc-trail { display:none; }
  .svc-tiles { grid-template-columns:repeat(2,minmax(0,1fr)); } .contest-feature { grid-template-columns:1fr; gap:28px; }
  .biz-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .biz-photo { aspect-ratio:3/2; }
  .row-main { gap:48px; } .proof-apps,.proof-case { grid-template-columns:1fr; } .proof-apps-screens { margin-bottom:0; }
  .desktop-nav { gap:22px; }
  .footer-top { grid-template-columns:1fr; }
}
@media (max-width:860px) {
  .company-head .shell { grid-template-columns:1fr; } .company-head .taped-photo { grid-column:1; grid-row:auto; margin-top:32px; max-width:520px; }
  .mission-inner,.row-main { grid-template-columns:minmax(0,1fr); gap:40px; } .pillars { grid-template-columns:1fr; } .row-photo { order:-1; aspect-ratio:3/2; }
  .contact-band-inner { grid-template-columns:1fr; gap:36px; } .news-stop > a { grid-template-columns:220px minmax(0,1fr); gap:32px; }
  .hero-inner { grid-template-columns:1fr; gap:0; min-height:0; } .hero-copy { padding-block:72px 40px; } .hero-screens { height:520px; margin-inline:calc(var(--gutter) * -1); grid-template-columns:repeat(2,minmax(0,240px)); justify-content:center; }
  .contact-actions { grid-column:1; grid-row:auto; min-width:0; }
  .company-statement { grid-template-columns:auto 1fr; gap:48px; } .profile-grid,.contact-layout { grid-template-columns:1fr; } .contact-aside { padding-top:0; } .access-card { max-width:460px; }
}
@media (max-width:760px) {
  .row-list { --route-w:40px; --route-swing:5px; padding-left:calc(var(--gutter) + 48px); } .route { left:var(--gutter); } .route-walker { scale:.6; } .route-pin-shape { scale:.7; }
  .svc-tile { padding:6px 6px 0; } .svc-tile::before { width:60px; height:22px; top:-10px; }
  .biz-card:nth-child(n) .biz-photo { transform:rotate(var(--tilt,0)); } .biz-card:nth-child(odd) .biz-photo { --tilt:-1.2deg; } .biz-card:nth-child(even) .biz-photo { --tilt:1.2deg; }
  .mission-photo::before,.mission-photo::after,.taped-photo::before,.taped-photo::after,.contact-form::before,.contact-form::after,.access-card::before { width:72px; height:22px; }
  .svc-tiles { gap:12px; margin-top:32px; } .svc-tile b { padding:12px 14px 0; font-size:16px; } .svc-tile b .arrow { display:none; } .svc-tile > span:last-child { padding:4px 14px 16px; font-size:13px; } .map-head-overlap::after { height:80px; }
  .mission-inner { margin-top:36px; } .pillars { margin-top:48px; } .pillar-text { padding:24px 24px 28px; } .pillar-visual { height:170px; } .pillar-photo { left:24px; top:32px; width:78%; } .pillar-phone { width:110px; top:36px; } .pillar-phone:nth-child(1) { left:24px; } .pillar-phone:nth-child(2) { left:140px; top:26px; }
  .row { padding-block:64px; } .proof-band { margin-top:40px; padding:24px 20px; } .proof-apps { padding-bottom:0; } .proof-apps-screens { gap:8px; } .row-list { padding-bottom:8px; }
  :root { --gutter:20px; --header:60px; }
  .desktop-nav { display:none; }
  .brand img { width:156px; }
  .mobile-menu { display:block; }
  .mobile-menu summary { display:flex; align-items:center; gap:12px; padding:10px 0; cursor:pointer; list-style:none; font-size:15px; font-weight:700; } .mobile-menu summary::-webkit-details-marker { display:none; }
  .mobile-menu summary > span { width:22px; height:10px; border-block:2px solid; transition:transform .3s var(--ease); } .mobile-menu[open] summary > span { transform:rotate(90deg); }
  .mobile-menu nav { position:absolute; inset:100% 0 auto; display:grid; padding:8px var(--gutter) 22px; background:var(--surface); color:var(--ink); border-radius:0 0 24px 24px; box-shadow:0 30px 40px -30px #0d0e1266; }
  .mobile-menu nav a { padding:14px 0; border-bottom:1px solid var(--rule); font-size:18px; font-weight:900; text-decoration:none; }
  .map-title { font-size:clamp(38px,11vw,54px); }
  .hero-copy { padding-block:56px 32px; } .hero-text { font-size:15px; }
  .hero-screens { height:420px; gap:14px; grid-template-columns:repeat(2,minmax(0,170px)); } .screen-track { gap:10px; } .screen-column:nth-child(2) { margin-top:-90px; }
  .motion-toggle { bottom:20px; }
  .section-title .en { font-size:clamp(30px,9vw,40px); }
  .mission,.business,.works,.home-news { padding-block:88px; } .mission-statement { margin-top:36px; font-size:clamp(26px,7.6vw,36px); }
  .news-row { grid-template-columns:auto 1fr 20px; gap:10px 14px; } .news-row h3 { grid-column:1 / 3; } .news-row .arrow { grid-column:3; grid-row:1 / 3; }
  .contact-band-inner { padding-block:88px; } .contact-actions .pill { min-height:56px; font-size:15px; }
  .site-footer { padding-block:64px 28px; } .footer-nav { grid-template-columns:1fr 1fr; gap:32px; } .footer-brand img { width:190px; }
  .map-head-en { font-size:clamp(32px,9vw,44px); } .map-head-lead { font-size:18px; }
  .company-statement { grid-template-columns:1fr; gap:28px; padding-block:72px; } .company-statement h2 { writing-mode:horizontal-tb; }
  .company-profile { padding-bottom:88px; } .company-table > div { grid-template-columns:1fr; gap:4px; padding:18px 0; }
  .taped-photo { margin-top:36px; padding:6px; } .taped-photo img { aspect-ratio:3/2; }
  .news-stop > a { grid-template-columns:1fr; gap:22px; padding-block:32px; } .news-photo { max-width:300px; }
  .pin-links { grid-template-columns:1fr; } .profile-grid { gap:40px; } .company-profile { padding-bottom:88px; } .topic-options { grid-template-columns:1fr; } .contact-layout { margin-top:-80px; } .contact-head { padding-bottom:120px; } .contact-form::before { left:18px; } .contact-form::after { right:18px; }
  .article { padding-block:40px 64px; } .article-more-head { flex-direction:column; align-items:flex-start; gap:16px; } .more-list { gap:24px; } .more-list a { display:grid; grid-template-columns:120px minmax(0,1fr); gap:6px 16px; align-items:start; } .more-list .news-photo { grid-row:1 / 3; margin:0; padding:4px; } .more-list .news-photo::before { width:44px; height:16px; top:-8px; } .more-list b { font-size:15px; } .article-head { padding-block:36px 44px; } .article-head.has-image { padding-bottom:110px; } .article-hero { margin-top:-84px; } .article-hero img { border-radius:12px; } .more-list { grid-template-columns:1fr; } .article-more { padding-bottom:88px; } .article-more-head { padding-top:48px; }
  .contact-form { padding:32px 20px 24px; } .contact-field-pair { grid-template-columns:1fr; gap:0; }
  .only-mobile { display:inline; }
  .error-page { padding-block:80px 100px; }
}
@media (max-width:360px) {
  :root { --gutter:16px; }
  .brand img { width:140px; }
  .store-links img { height:38px; }
}
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; }
}
