/* =========================================================
   Comtri Corporate — main.css
   白 × コントリブルー(#38B6FF / #1E73BE) × ネイビー(#0B1E30)
   ========================================================= */
:root{
  color-scheme:only light;
  --white:#FFFFFF;
  --ice:#F2F7FC;
  --ice-2:#E6F0F9;
  --navy:#0B1E30;
  --navy-2:#102A42;
  --text:#132435;
  --muted:#5B6B7A;
  --blue:#38B6FF;
  --blue-deep:#1E73BE;
  --blue-ink:#0E4D8A;
  --line:rgba(11,30,48,.1);
  --line-w:rgba(255,255,255,.16);

  --sans:"Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic",YuGothic,"Noto Sans JP","Meiryo",sans-serif;
  --mincho:"Hiragino Mincho ProN","Yu Mincho",YuMincho,"Noto Serif JP",serif;
  --latin:"Helvetica Neue",Helvetica,Arial,sans-serif;

  --wrap:1280px;
  --pad:clamp(20px,4.6vw,64px);
  --r:22px;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0}
.page{
  font-family:var(--sans);color:var(--text);background:var(--white);
  line-height:1.85;letter-spacing:.01em;font-feature-settings:"palt" 1;
  overflow-x:clip;
}
.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--pad)}
.page :where(a){color:inherit;text-decoration:none}
::selection{background:var(--blue);color:#fff}
:focus-visible{outline:2px solid var(--blue-deep);outline-offset:3px}
img{max-width:100%;height:auto}

.label{
  display:inline-flex;align-items:center;gap:.6em;
  font-family:var(--latin);font-weight:700;font-size:.72rem;
  letter-spacing:.22em;text-transform:uppercase;color:var(--blue-deep);
}
.label::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--blue)}

/* ============ header ============ */
.head{
  position:fixed;inset:0 0 auto;z-index:90;
  display:flex;align-items:center;justify-content:space-between;
  padding:16px var(--pad);
  transition:background .35s,box-shadow .35s,padding .35s;
}
.head.sc{background:rgba(255,255,255,.82);backdrop-filter:blur(14px) saturate(1.4);box-shadow:0 1px 0 var(--line);padding-block:11px}
.logo{display:flex;align-items:center;gap:11px;font-family:var(--latin);font-weight:800;font-size:1.28rem;letter-spacing:-.01em}
.logo .sq{width:26px;height:26px;border-radius:8px;background:linear-gradient(135deg,var(--blue) 0%,var(--blue-deep) 100%);position:relative;flex:none}
.logo .sq::after{content:"";position:absolute;inset:8px;border-radius:3px;background:#fff}
.gnav{display:flex;align-items:center;gap:clamp(8px,2vw,10px)}
.gnav a{font-size:.86rem;font-weight:600;letter-spacing:.04em;padding:.55em 1em;border-radius:999px;transition:background .3s,color .3s}
.gnav a:hover{background:var(--ice-2);color:var(--blue-ink)}
.gnav .cta{background:var(--navy);color:#fff;padding:.65em 1.4em;margin-left:6px}
.gnav .cta:hover{background:var(--blue-deep);color:#fff}
.gnav .lk{display:none}
@media(min-width:880px){.gnav .lk{display:inline-block}}

/* ============ hero (front) ============ */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:center;overflow:clip;background:
  radial-gradient(58vw 58vw at 86% -6%,rgba(56,182,255,.16),transparent 62%),
  radial-gradient(46vw 46vw at -8% 108%,rgba(30,115,190,.1),transparent 60%),
  var(--white);}
#dots{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.hero .wrap{position:relative;z-index:2;padding-top:120px;padding-bottom:40px}
.hero .label{margin-bottom:clamp(22px,3vh,34px)}
.hero h1{
  margin:0;font-weight:800;
  font-size:clamp(2.85rem,8.6vw,7.4rem);
  line-height:1.06;letter-spacing:.005em;text-wrap:balance;color:var(--navy);
}
.hero h1 .grad{
  background:linear-gradient(92deg,var(--blue-deep) 6%,var(--blue) 60%,#6fd0ff 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.hero .sub{
  margin:clamp(26px,3.6vh,42px) 0 0;max-width:37em;
  font-size:clamp(1rem,1.5vw,1.18rem);line-height:2.1;color:var(--muted);
}
.hero-cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:clamp(30px,4.5vh,48px)}

.btn{
  display:inline-flex;align-items:center;gap:.75em;
  font-family:var(--sans);font-weight:700;font-size:.95rem;letter-spacing:.03em;
  padding:1.05em 2em;border-radius:14px;border:0;cursor:pointer;
  transition:transform .25s,box-shadow .25s,background .25s,color .25s;
}
.btn svg{transition:transform .25s}
.btn:hover svg{transform:translateX(4px)}
.btn-blue{background:linear-gradient(120deg,var(--blue-deep),#2E9BE0);color:#fff;box-shadow:0 10px 26px -10px rgba(30,115,190,.55)}
.btn-blue:hover{transform:translateY(-2px);box-shadow:0 16px 32px -12px rgba(30,115,190,.6)}
.btn-line{background:#fff;color:var(--navy);box-shadow:inset 0 0 0 1.5px var(--line)}
.btn-line:hover{box-shadow:inset 0 0 0 1.5px var(--blue-deep);color:var(--blue-ink)}
.btn-white{background:#fff;color:var(--navy)}
.btn-white:hover{transform:translateY(-2px)}

/* marquee */
.mq{position:relative;z-index:2;border-top:1px solid var(--line);padding-block:20px;overflow:hidden;
    mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.mq-track{display:flex;gap:0;width:max-content;animation:mq 34s linear infinite}
.mq span{
  font-family:var(--latin);font-weight:800;font-size:.86rem;letter-spacing:.3em;text-transform:uppercase;
  color:var(--navy);opacity:.42;padding-inline:1.6em;white-space:nowrap;
}
.mq span.b{color:var(--blue-deep);opacity:.9}
@keyframes mq{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.mq-track{animation:none}}

/* ============ sections ============ */
.sec{padding-block:clamp(88px,12vw,152px)}
.sec-tint{background:var(--ice)}
.sec-head{margin-bottom:clamp(44px,6vw,72px);display:grid;gap:18px}
.sec-head h2{
  margin:0;font-weight:800;letter-spacing:.005em;
  font-size:clamp(1.95rem,4.2vw,3.3rem);line-height:1.28;color:var(--navy);text-wrap:balance;
}
.sec-head .lead{color:var(--muted);max-width:44em;font-size:1.02rem;margin:0}

/* ============ philosophy ============ */
.philo{background:var(--ice);border-block:1px solid var(--line)}
.philo-grid{display:grid;gap:clamp(36px,5vw,72px);grid-template-columns:1fr;align-items:start}
@media(min-width:960px){.philo-grid{grid-template-columns:1.08fr .92fr}}
.philo-say{
  font-family:var(--mincho);font-weight:600;
  font-size:clamp(1.75rem,3.4vw,2.8rem);line-height:1.62;letter-spacing:.04em;margin:0;color:var(--navy);
}
.philo-say em{font-style:normal;color:var(--blue-deep);
  background:linear-gradient(transparent 66%,rgba(56,182,255,.32) 66%)}
.philo-copy p{margin:0 0 1.5em;color:var(--muted);line-height:2.1;font-size:.99rem}
.philo-copy p:last-of-type{margin-bottom:0}
.cc-cards{display:grid;gap:14px;grid-template-columns:1fr;margin-top:30px}
@media(min-width:560px){.cc-cards{grid-template-columns:1fr 1fr}}
.cc-card{
  background:#fff;border:1px solid var(--line);border-radius:var(--r);
  padding:24px 26px;display:grid;gap:6px;
}
.cc-card .en{font-family:var(--latin);font-weight:800;font-size:1.02rem;letter-spacing:.02em;color:var(--blue-deep)}
.cc-card .ja{font-weight:700;font-size:.95rem;color:var(--navy)}
.cc-card .ds{font-size:.86rem;color:var(--muted)}

/* ============ services ============ */
.svc-grid{display:grid;gap:18px;grid-template-columns:1fr}
@media(min-width:900px){.svc-grid{grid-template-columns:repeat(3,1fr)}}
.svc{
  position:relative;border-radius:var(--r);padding:34px 30px 30px;
  background:#fff;border:1px solid var(--line);
  display:flex;flex-direction:column;gap:14px;min-height:380px;
  transition:transform .35s cubic-bezier(.2,.8,.3,1),box-shadow .35s,border-color .35s;
  overflow:hidden;
}
.svc::before{
  content:"";position:absolute;inset:auto -30% -46% auto;width:75%;aspect-ratio:1;
  border-radius:50%;background:radial-gradient(circle,rgba(56,182,255,.14),transparent 66%);
  transition:transform .5s cubic-bezier(.2,.8,.3,1);
}
.svc:hover{transform:translateY(-6px);box-shadow:0 24px 48px -22px rgba(11,30,48,.24);border-color:rgba(30,115,190,.34)}
.svc:hover::before{transform:scale(1.35)}
.svc .no{
  font-family:var(--latin);font-weight:800;font-size:3rem;line-height:1;letter-spacing:-.03em;
  background:linear-gradient(180deg,var(--blue) 0%,var(--blue-deep) 90%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.svc h3{margin:6px 0 0;font-size:1.34rem;font-weight:800;line-height:1.45;color:var(--navy)}
.svc .en{font-family:var(--latin);font-weight:700;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.svc p{margin:0;font-size:.95rem;line-height:2;color:var(--muted)}
.svc-img{
  width:100%;aspect-ratio:4/3;object-fit:cover;object-position:center;
  border-radius:14px;border:1px solid var(--line);background:#fff;display:block;
}
.svc .jx{font-weight:700;font-size:.78rem;letter-spacing:.14em;color:var(--blue-deep);margin-top:4px}
.recr-illust{
  width:min(300px,100%);border-radius:18px;display:block;margin-bottom:18px;
  box-shadow:0 18px 40px -18px rgba(11,30,48,.45);
}
.recr-side{display:flex;flex-direction:column;align-items:flex-start;gap:0}
@media(min-width:900px){.recr-side{flex-direction:column;align-items:flex-end}}
.svc .more{
  margin-top:auto;padding-top:20px;border-top:1px solid var(--line);
  display:inline-flex;align-items:center;gap:.6em;
  font-size:.88rem;font-weight:700;letter-spacing:.05em;color:#1E73BE;
}
.svc .more svg{transition:transform .3s cubic-bezier(.2,.8,.3,1)}
.svc:hover .more{color:#0E4D8A}
.svc:hover .more svg{transform:translateX(5px)}

/* ============ stats ============ */
.stats{background:linear-gradient(135deg,var(--navy) 30%,#10395d 100%);color:#fff;position:relative;overflow:clip}
.stats::after{content:"";position:absolute;inset:0;background:
  radial-gradient(40vw 40vw at 96% 10%,rgba(56,182,255,.2),transparent 60%);pointer-events:none}
.stats .wrap{position:relative;z-index:2}
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(26px,4vw,20px)}
@media(min-width:880px){.stat-grid{grid-template-columns:repeat(3,1fr)}}
.stat{border-left:2px solid rgba(56,182,255,.55);padding-left:clamp(16px,2vw,26px)}
.stat .n{font-family:var(--latin);font-weight:800;font-size:clamp(2.7rem,5.6vw,4.3rem);line-height:1.05;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.stat .n small{font-size:.5em;color:var(--blue);margin-left:.04em}
.stat .t{margin-top:.55em;font-size:.86rem;letter-spacing:.06em;color:rgba(255,255,255,.72)}

/* ============ media ============ */
.media{background:var(--ice);border-block:1px solid var(--line)}
.media-grid{display:grid;gap:22px;grid-template-columns:1fr}
@media(min-width:820px){.media-grid{grid-template-columns:1fr 1fr}}
.media-card{
  display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden;
  transition:transform .35s cubic-bezier(.2,.8,.3,1),box-shadow .35s,border-color .35s;
}
.media-card:hover{transform:translateY(-6px);box-shadow:0 24px 48px -22px rgba(11,30,48,.24);border-color:rgba(30,115,190,.34)}
.media-img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}
.media-body{display:flex;flex-direction:column;gap:10px;padding:26px 28px 24px;flex:1}
.media-body h3{margin:0;font-size:1.3rem;font-weight:800;color:var(--navy)}
.media-body p{margin:0;font-size:.94rem;line-height:2;color:var(--muted)}
.media-body .more{margin-top:auto;padding-top:16px;border-top:1px solid var(--line);
  display:inline-flex;align-items:center;gap:.6em;font-size:.88rem;font-weight:700;letter-spacing:.05em;color:#1E73BE}
.media-card:hover .more svg{transform:translateX(5px)}
.media-body .more svg{transition:transform .3s cubic-bezier(.2,.8,.3,1)}

/* ============ recruit banner ============ */
.recr{background:var(--white)}
.recr-card{
  position:relative;border-radius:calc(var(--r) + 8px);overflow:clip;
  background:linear-gradient(120deg,var(--blue-deep) 0%,#2E9BE0 55%,var(--blue) 100%);
  color:#fff;padding:clamp(44px,7vw,88px) clamp(28px,6vw,88px);
}
.recr-card::before{content:"";position:absolute;inset:0;background:
  radial-gradient(52vw 52vw at 110% 120%,rgba(255,255,255,.2),transparent 55%);pointer-events:none}
.recr-inner{position:relative;display:grid;gap:30px;grid-template-columns:1fr;align-items:center}
@media(min-width:900px){.recr-inner{grid-template-columns:1.25fr .75fr}}
.recr-card .label{color:#fff}
.recr-card .label::before{background:#fff}
.recr-card h2{margin:.6em 0 0;font-weight:800;font-size:clamp(1.9rem,4vw,3.1rem);line-height:1.4;letter-spacing:.005em;text-wrap:balance}
.recr-card p{margin:1.4em 0 0;max-width:38em;color:rgba(255,255,255,.88);line-height:2.05;font-size:.99rem}
.recr-side{display:flex;justify-content:flex-start}
@media(min-width:900px){.recr-side{justify-content:flex-end}}

/* ============ contact ============ */
.contact{background:var(--navy);color:#fff;position:relative;overflow:clip}
#dots2{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.5}
.contact .wrap{position:relative;z-index:2}
.contact-grid{display:grid;gap:44px;grid-template-columns:1fr;align-items:end}
@media(min-width:920px){.contact-grid{grid-template-columns:1.25fr .75fr}}
.contact .label{color:var(--blue)}
.contact h2{margin:.55em 0 0;font-weight:800;font-size:clamp(2.1rem,4.6vw,3.6rem);line-height:1.36;letter-spacing:.005em;text-wrap:balance}
.contact .sub{margin:1.5em 0 2.2em;color:rgba(255,255,255,.7);max-width:36em;line-height:2.05}
.c-lines{display:grid;gap:16px}
.c-line{border-top:1px solid var(--line-w);padding-top:14px}
.contact .c-line{border-color:var(--line-w)}
.c-line .k{font-family:var(--latin);font-weight:700;font-size:.68rem;letter-spacing:.24em;text-transform:uppercase;color:var(--blue)}
.c-line a,.c-line .c-plain{display:block;margin-top:.3em;font-family:var(--latin);font-weight:600;font-size:clamp(1.05rem,2vw,1.4rem);letter-spacing:.01em;font-variant-numeric:tabular-nums;transition:color .3s}
.c-line a:hover{color:var(--blue)}
.c-line .c-plain{font-family:var(--sans);font-size:1rem}

/* ============ footer ============ */
.foot{background:#081726;color:rgba(255,255,255,.66);padding:clamp(60px,8vw,90px) 0 36px;font-size:.9rem}
.foot-grid{display:grid;gap:44px;grid-template-columns:1fr}
@media(min-width:860px){.foot-grid{grid-template-columns:.8fr 1.2fr}}
.foot .logo{color:#fff;margin-bottom:16px}
.foot .tg{color:rgba(255,255,255,.45);max-width:28em;line-height:2}
.prof{width:100%;border-collapse:collapse}
.prof th,.prof td{text-align:left;vertical-align:top;padding:13px 0;border-bottom:1px solid var(--line-w);font-weight:400}
.prof th{width:8.5em;color:rgba(255,255,255,.42);font-size:.8rem;letter-spacing:.08em}
.prof td{color:#fff;font-size:.92rem}
.foot-btm{margin-top:52px;padding-top:22px;border-top:1px solid var(--line-w);display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;font-size:.78rem;color:rgba(255,255,255,.4)}
.foot-btm nav{display:flex;gap:22px;flex-wrap:wrap}
.foot-btm a:hover{color:var(--blue)}

/* ============ 下層ページ共通 ============ */
.p-hero{
  padding:clamp(140px,20vh,200px) 0 clamp(48px,7vw,80px);
  background:
    radial-gradient(50vw 50vw at 92% -20%,rgba(56,182,255,.14),transparent 60%),
    var(--white);
  border-bottom:1px solid var(--line);
}
.p-hero h1{margin:.45em 0 0;font-weight:800;font-size:clamp(2.2rem,5.4vw,3.9rem);line-height:1.2;letter-spacing:.005em;color:var(--navy)}
.p-lead{margin:1.2em 0 0;color:var(--muted);max-width:44em;line-height:2.05}
.p-cta{padding-top:0}

/* 会社概要 */
.msg-grid{display:grid;gap:clamp(32px,5vw,64px);grid-template-columns:1fr}
@media(min-width:920px){.msg-grid{grid-template-columns:1.15fr .85fr}}
.msg-body p{margin:0 0 1.6em;color:var(--muted);line-height:2.15;font-size:1rem}
.msg-sign{color:var(--navy)!important;margin-top:2.4em!important}
.msg-sign b{font-size:1.25rem;font-weight:800}
.msg-photo{
  aspect-ratio:4/5;border-radius:var(--r);background:linear-gradient(160deg,var(--ice) 0%,var(--ice-2) 100%);
  border:1px solid var(--line);display:grid;place-items:center;color:var(--muted);
  font-size:.85rem;letter-spacing:.2em;
}
.c-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.c-table tr{border-bottom:1px solid var(--line)}
.c-table tr:last-child{border-bottom:0}
.c-table th,.c-table td{text-align:left;vertical-align:top;padding:20px clamp(18px,3vw,32px);font-weight:400}
.c-table th{width:10em;background:var(--ice);color:var(--navy);font-weight:700;font-size:.9rem;letter-spacing:.06em}
.c-table td{color:var(--text);font-size:.98rem}
.c-table a{color:var(--blue-deep);font-weight:600}
.c-table a:hover{text-decoration:underline}

/* 沿革 */
.tl{list-style:none;margin:0;padding:0;display:grid;gap:0}
.tl li{
  display:grid;grid-template-columns:6.5em 1fr;gap:clamp(16px,3vw,40px);
  padding:28px 0;border-top:1px solid var(--line);
}
.tl li:last-child{border-bottom:1px solid var(--line)}
.tl-y{font-family:var(--latin);font-weight:800;font-size:1.5rem;color:var(--blue-deep);letter-spacing:-.01em;line-height:1.4}
.tl-b b{display:block;font-size:1.08rem;font-weight:800;color:var(--navy)}
.tl-b p{margin:.4em 0 0;color:var(--muted);font-size:.95rem;line-height:2}

/* お問い合わせ */
.contact-cols{display:grid;gap:clamp(32px,5vw,64px);grid-template-columns:1fr;align-items:start}
@media(min-width:920px){.contact-cols{grid-template-columns:1.3fr .7fr}}
.form-box{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:clamp(24px,4vw,44px)}
.contact-cols .c-line{border-color:var(--line)}
.contact-cols .c-line .k{color:var(--blue-deep)}
.contact-cols .c-line a:hover{color:var(--blue-deep)}

/* Contact Form 7 想定のフォーム装飾 */
.form-box p{margin:0 0 1.4em}
.form-box label{display:block;font-weight:700;font-size:.92rem;color:var(--navy);margin-bottom:.4em}
.form-box input[type="text"],
.form-box input[type="email"],
.form-box input[type="tel"],
.form-box input[type="url"],
.form-box textarea,
.form-box select{
  width:100%;font-family:var(--sans);font-size:1rem;color:var(--text);
  background:var(--ice);border:1.5px solid transparent;border-radius:12px;
  padding:.9em 1.1em;transition:border-color .25s,background .25s;
}
.form-box input:focus,
.form-box textarea:focus,
.form-box select:focus{outline:none;border-color:var(--blue-deep);background:#fff}
.form-box textarea{min-height:180px;resize:vertical}
.form-box input[type="submit"],
.form-box button[type="submit"]{
  display:inline-flex;align-items:center;gap:.75em;
  background:linear-gradient(120deg,var(--blue-deep),#2E9BE0);color:#fff;
  font-family:var(--sans);font-weight:700;font-size:1rem;letter-spacing:.04em;
  padding:1em 2.6em;border:0;border-radius:14px;cursor:pointer;
  box-shadow:0 10px 26px -10px rgba(30,115,190,.55);
  transition:transform .25s,box-shadow .25s;
}
.form-box input[type="submit"]:hover,
.form-box button[type="submit"]:hover{transform:translateY(-2px);box-shadow:0 16px 32px -12px rgba(30,115,190,.6)}
.form-box .wpcf7-not-valid-tip{color:#C62828;font-size:.82rem;margin-top:.3em}
.form-box .wpcf7-response-output{border:1.5px solid var(--blue-deep);border-radius:12px;padding:.9em 1.2em;margin:1.4em 0 0;font-size:.92rem}

/* 汎用本文 */
.prose{max-width:760px}
.prose h2{font-weight:800;font-size:1.5rem;color:var(--navy);margin:2.2em 0 .7em;line-height:1.5}
.prose h3{font-weight:700;font-size:1.15rem;color:var(--navy);margin:1.8em 0 .5em}
.prose p,.prose li{color:var(--muted);line-height:2.1;font-size:.98rem}
.prose a{color:var(--blue-deep);font-weight:600}
.prose a:hover{text-decoration:underline}

/* reveal */
.rv{opacity:0;transform:translateY(26px);transition:opacity .85s cubic-bezier(.2,.7,.2,1),transform .85s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:none}
.rv.d1{transition-delay:.08s}.rv.d2{transition-delay:.16s}.rv.d3{transition-delay:.24s}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}}

/* WPデフォルト対策 */
#wpadminbar~.page .head{top:32px}
@media screen and (max-width:782px){#wpadminbar~.page .head{top:46px}}
