:root{
--text:#333;
--gray:#666;
--light:#f5f6f7;
--blue:#2f7cf6;
--accent:#8B85DD;
}

*{
margin:0;
padding:0;
box-sizing:border-box;
}

body{
font-family:"Helvetica Neue",Arial,"Hiragino Sans","Yu Gothic",Meiryo,sans-serif;
color:var(--text);
line-height:1.8;
background:white;
scroll-behavior:smooth;
}

a{text-decoration:none;color:inherit;}

.container{
width:min(1100px,calc(100% - 48px));
margin:auto;
}

/* header */

.header{
position:fixed;
width:100%;
top:0;
background:rgba(255,255,255,.45);
border-bottom:1px solid #eee;
z-index:10;
backdrop-filter:blur(10px);
}

.header-inner{
height:80px;
display:flex;
align-items:center;
justify-content:space-between;
}

.logo{
display:flex;
align-items:center;
gap:12px;
font-weight:700;
font-size:1.2rem;
}

.brand-mark{
width:28px;
height:28px;
display:block;
object-fit:contain;
flex-shrink:0;
}

.nav ul{
display:flex;
gap:24px;
list-style:none;
font-size:.9rem;
}

.nav a {
transition: .3s;
}
.nav a:hover {
color:var(--accent);
}

.menu-toggle{
display:none;
}

.menu-overlay{
display:none;
}

/* hero */

.hero{
position:relative;
overflow:hidden;

background:url("img/pexels-googledeepmind-18069160.jpg");

background-size:cover;
background-position:center;

padding:280px 0 240px;
}

.hero::before{
content:"";
position:absolute;
inset:0;
background:
linear-gradient(
120deg,
rgba(255,255,255,0.95) 35%,
rgba(255,255,255,0.7) 60%,
rgba(255,255,255,0.2) 75%
);
opacity:0.5;
pointer-events:none;
animation:heroGradientBuild 2.6s ease-out forwards;
}

@keyframes heroFloatDown{
from{
opacity:0;
transform:translate3d(0,-12px,0);
}

to{
opacity:1;
transform:translate3d(0,0,0);
}
}

@keyframes heroGradientBuild{
from{
opacity:0.5;
}

to{
opacity:1;
}
}

@keyframes aboutFadeUp{
from{
opacity:0;
}

to{
opacity:1;
}
}

.js-enabled .reveal-on-scroll{
opacity:0;
will-change:transform, opacity;
}

.js-enabled .reveal-on-scroll.is-visible{
opacity:1;
}

.hero-title{
font-size:clamp(3rem,7vw,5rem);
line-height:1.1;
margin-bottom:24px;
opacity:0;
animation:heroFloatDown 1.2s cubic-bezier(.22,1,.36,1) 0.12s forwards;
}

.hero-text{
color:var(--gray);
margin-bottom:28px;
max-width:520px;
opacity:0;
animation:heroFloatDown 1.2s cubic-bezier(.22,1,.36,1) 0.32s forwards;
}

@media (prefers-reduced-motion: reduce){
.reveal-on-scroll,
.reveal-on-scroll.is-visible{
opacity:1;
animation:none;
transform:none;
will-change:auto;
}

.hero-title,
.hero-text{
opacity:1;
animation:none;
transform:none;
}

.hero::before{
animation:none;
opacity:1;
}
}

.hero-img{
border-radius:20px;
overflow:hidden;
height:420px;
}

.hero-img img{
width:100%;
height:100%;
object-fit:cover;
}

/* sections */

.section{
padding:110px 0;
}

.section-title{
font-size:2.5rem;
margin-bottom:20px;
border-left: 8px solid var(--accent);
padding-left: 20px;
}

.lead{
color:var(--gray);
max-width:700px;
}

/* about */
.section.about {
    padding-bottom: 60px;
}

.about .section-head,.about .section-head .lead {
text-align:center;
margin:auto;
}

.about .section-title {
border-left: none;
padding-left: 0;
}

.js-enabled .reveal-soft.reveal-on-scroll:not(.is-visible){
opacity:0;
transform:translate3d(0,12px,0);
transition:
opacity 1.15s ease-out,
transform 1.15s cubic-bezier(.22,1,.36,1);
transition-delay:var(--reveal-delay, 0s);
}

.js-enabled .reveal-soft.reveal-on-scroll.is-visible{
opacity:1;
transform:translate3d(0,0,0);
}

.js-enabled .about .section-head .reveal-soft.reveal-on-scroll:not(.is-visible){
transform:none;
transition:none;
}

.js-enabled .about .section-head .reveal-soft.reveal-on-scroll.is-visible{
animation:aboutFadeUp 1.8s cubic-bezier(.22,1,.36,1) forwards;
animation-delay:var(--reveal-delay, 0s);
}

.about-grid{
display:grid;
grid-template-columns:1fr 1fr;
gap:40px;
align-items:center;
margin-top:100px;
}

.about-img{
border-radius:18px;
overflow:hidden;
height:340px;
}

.about-img img{
width:100%;
height:100%;
object-fit:cover;
filter: brightness(1.1) contrast(0.85) saturate(0.9);
}

/* service */

.service-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:32px;
    margin-top:60px;
  }
  
  .service-card{
    display:flex;
    flex-direction:column;
    background:#fff;
    border: 1px solid #eee;
    border-radius:12px;
    box-shadow:0 4px 12px rgba(0,0,0,0.05);
  }
  
  .service-card img{
    width:100%;
    height:160px;
    object-fit:cover;
    border-radius:12px 12px 0 0;
    filter: brightness(1.1) contrast(0.85) saturate(0.8);
  }
  
  .service-card .service-text{
    padding: 24px;
  }
  
  .service-card h3{
    font-size:22px;
    margin:0 0 8px;
  }
  
  .service-card p{
    font-size:14px;
    line-height:1.6;
  }

  @media (max-width: 900px){
    .service-grid{
      grid-template-columns:repeat(2,1fr);
    }
  }
  
  @media (max-width: 600px){
    .service-grid{
      grid-template-columns:1fr;
    }
  }

/* recruit */

.recruit{
background:var(--light);
}

.recruit-grid{
display:grid;
grid-template-columns:1fr 1fr;
gap:40px;
align-items:center;
}

.recruit-img{
border-radius:20px;
overflow:hidden;
height:360px;
}

.recruit-img img{
width:100%;
height:100%;
object-fit:cover;
filter: brightness(1.1) contrast(0.85) saturate(0.9);
}

/* news */
.section.news{
    padding-bottom: 0;
}

.news-list{
margin-top:40px;
}

.news-item{
padding:20px;
border:1px solid #eee;
border-radius:12px;
background:#fff;
box-shadow:0 6px 16px rgba(0,0,0,0.03);
}
.news-badge{
display:inline-block;
font-size:10px;
font-weight: 800;
color:#fff;
background:var(--accent);
padding:2px 10px;
margin-left: 8px;
border-radius:16px;
width:fit-content;
}
.news-date{
width:auto;
font-size:12.5px;
font-weight: 800;
color:#999;
}
.news-text{
display: block;
margin-top:8px;
}

/* company */
.company-table{
margin-top:40px;
width:100%;
border-collapse:collapse;
}

.company-table th,
.company-table td{
padding:14px 10px;
border-bottom:1px solid #eee;
text-align:left;
}

.company-table th{
width:160px;
color:var(--gray);
}

/* contact */

.contact{
background: url(img/pexels-googledeepmind-18069160.jpg) center / cover no-repeat;
text-align:center;
position:relative;
}
.contact::before {
content: "";
position: absolute;
inset: 0;
background: rgba(255, 255, 255, 0.8);
}
.contact-box{
margin-top:20px;
position:relative;
z-index: 1;
max-width:820px;
margin-inline:auto;
}

.contact .section-title {
border-left: none;
padding-left: 0;
margin-bottom: 10px;
}

.contact-form{
margin-top:50px;
text-align:left;
}

.contact-form-grid{
display:grid;
grid-template-columns:repeat(2,minmax(0,1fr));
gap:14px 18px;
margin-top:28px;
}

.contact-field{
display:flex;
flex-direction:column;
gap:6px;
font-weight:600;
}

.contact-field span{
display:flex;
align-items:center;
gap:10px;
font-size:.95rem;
line-height:1.35;
}

.contact-field input,
.contact-field select,
.contact-field textarea{
width:100%;
padding:11px 14px;
border:1px solid rgba(17,17,17,.12);
border-radius:8px;
background:rgba(255,255,255,.92);
font:inherit;
color:var(--text);
transition:border-color .3s, box-shadow .3s, background .3s;
appearance:none;
}

.contact-field textarea{
resize:vertical;
min-height:140px;
}

.contact-field input:focus,
.contact-field select:focus,
.contact-field textarea:focus{
outline:none;
border-color:var(--accent);
box-shadow:0 0 0 4px rgba(139,133,221,.16);
background:#fff;
}

.contact-field input[aria-invalid="true"],
.contact-field select[aria-invalid="true"],
.contact-field textarea[aria-invalid="true"]{
border-color:#b42318;
box-shadow:0 0 0 4px rgba(180,35,24,.12);
}

.contact-field-full{
grid-column:1 / -1;
}

.contact-field span.contact-required{
display:inline-flex;
align-items:center;
justify-content:center;
padding:2px 8px;
border-radius:999px;
background:rgba(139,133,221,.12);
color:var(--accent);
font-size:.85rem;
line-height:1.1;
font-weight:700;
letter-spacing:.02em;
transform:translateY(-1px);
}

.contact-note{
margin-top:14px;
color:var(--gray);
font-size:.95rem;
}

.contact-btn{
display: inline-block;
background: var(--accent);
color: #fff;
margin-top: 40px;
padding: 14px 46px;
font-weight: 600;
width: 280px;
max-width: 100%;
text-align: center;
border: 2px solid var(--accent);
border-radius: 5px;
transition: 0.3s;
position: relative;
overflow: hidden;
z-index: 1;
cursor:pointer;
font:inherit;
}

.contact-form .contact-btn{
display:block;
margin-inline:auto;
}
.contact-btn:hover{
background: #fff;
color: var(--accent);
}

.contact-btn:disabled{
opacity:.72;
cursor:wait;
}

.contact-status{
min-height:1.8em;
margin-top:16px;
font-size:.95rem;
font-weight:600;
text-align:center;
}

.contact-status.is-success{
color:#166534;
}

.contact-status.is-error{
color:#b42318;
}

/* footer */

.footer{
padding:60px 0;
border-top:1px solid #eee;
}

.footer-inner{
display:flex;
justify-content:space-between;
align-items:flex-start;
gap:24px;
font-size:.9rem;
color:#666;
}

.footer-logo {
display:flex;
align-items:center;
gap:12px;
font-weight: 700;
font-size: 1rem;
}

.footer-logo .brand-mark{
width:22px;
height:22px;
}

.footer-nav {
display: flex;
flex-wrap:wrap;
gap: 24px;
list-style: none;
font-size: .9rem;
transition:.3s;
}

.footer-nav a:hover{
color:var(--accent);
}

.copyright {
margin-top:10px;
font-size:.9rem;
color:#666;
}

/* back to top */

.back-to-top{
position:fixed;
right:24px;
bottom:24px;
width:52px;
height:52px;
border:none;
border-radius:999px;
background:var(--accent);
color:#fff;
cursor:pointer;
box-shadow:0 10px 24px rgba(0,0,0,.16);
opacity:0;
visibility:hidden;
transform:translateY(12px);
transition:opacity .3s, transform .3s, visibility .3s, background .3s;
z-index:20;
}

.back-to-top::before{
content:"";
position:absolute;
top:50%;
left:50%;
width:12px;
height:12px;
border-top:3px solid currentColor;
border-left:3px solid currentColor;
transform:translate(-50%,-28%) rotate(45deg);
}

.back-to-top:hover{
background:#fff;
color:var(--accent);
border:2px solid var(--accent);
}

.back-to-top.is-visible{
opacity:1;
visibility:visible;
transform:translateY(0);
}

/* responsive */

@media(max-width:900px){

.header{
background:rgba(255,255,255,.75);
}

.header-inner{
position:relative;
}

.menu-overlay{
position:fixed;
inset:80px 0 0;
height:100vh;
display:block;
border:none;
background:rgba(17,17,17,.48);
opacity:0;
visibility:hidden;
backdrop-filter:blur(2px);
transition:opacity .35s ease, visibility .35s ease;
z-index:5;
}

.menu-overlay.is-visible{
opacity:1;
visibility:visible;
}

.hero-grid,
.about-grid,
.service-grid,
.recruit-grid{
grid-template-columns:1fr;
}

.menu-toggle{
display:inline-flex;
flex-direction:column;
justify-content:center;
align-items:center;
gap:5px;
width:48px;
height:48px;
border:none;
border-radius:999px;
background:transparent;
cursor:pointer;
flex-shrink:0;
}

.menu-toggle span{
display:block;
width:22px;
height:2px;
background:var(--text);
border-radius:999px;
transition:transform .3s, opacity .3s, background .3s;
}

.menu-toggle[aria-expanded="true"] span:nth-child(1){
transform:translateY(7px) rotate(45deg);
}

.menu-toggle[aria-expanded="true"] span:nth-child(2){
opacity:0;
}

.menu-toggle[aria-expanded="true"] span:nth-child(3){
transform:translateY(-7px) rotate(-45deg);
}

.nav{
position:absolute;
top:calc(100% + 12px);
right:0;
left:0;
display:block;
padding:20px 24px;
background:rgba(255,255,255,.9);
backdrop-filter:blur(14px);
border:1px solid #eee;
border-radius:20px;
box-shadow:0 22px 44px rgba(17,17,17,.12);
opacity:0;
visibility:hidden;
pointer-events:none;
filter:blur(8px);
transform:translateY(-14px) scale(.965);
transform-origin:top center;
transition:opacity .42s cubic-bezier(.22,1,.36,1), transform .42s cubic-bezier(.22,1,.36,1), visibility .42s ease, filter .42s cubic-bezier(.22,1,.36,1);
z-index:6;
}

.nav.is-open{
opacity:1;
visibility:visible;
pointer-events:auto;
transform:translateY(0) scale(1);
filter:blur(0);
}

.nav ul{
flex-direction:column;
gap:0;
}

.nav li{
opacity:0;
transform:translateY(-8px);
transition:opacity .38s cubic-bezier(.22,1,.36,1), transform .38s cubic-bezier(.22,1,.36,1);
}

.nav.is-open li{
opacity:1;
transform:translateY(0);
}

.nav.is-open li:nth-child(1){transition-delay:.04s;}
.nav.is-open li:nth-child(2){transition-delay:.08s;}
.nav.is-open li:nth-child(3){transition-delay:.12s;}
.nav.is-open li:nth-child(4){transition-delay:.16s;}
.nav.is-open li:nth-child(5){transition-delay:.2s;}
.nav.is-open li:nth-child(6){transition-delay:.24s;}

.nav li + li{
border-top:1px solid #eee;
}

.nav a{
display:block;
padding:14px 0;
}

.hero-title{
font-size:2.8rem;
}

.section-title{
font-size:1.6rem;
}

.contact-form-grid{
grid-template-columns:1fr;
}

.logo{
font-size:1rem;
}

.brand-mark{
width:24px;
height:24px;
}

.footer{
padding:48px 0;
}

.footer-inner{
flex-direction:column;
align-items:flex-start;
}

.footer-nav{
gap:12px 20px;
justify-content:flex-end;
width:100%;
}

.footer-logo .brand-mark{
width:20px;
height:20px;
}

.copyright{
margin-top:24px;
}

.back-to-top{
display:none;
}

body.menu-open{
overflow:hidden;
}

}
