/* =========================================================
   eau&company — corporate website
   Shared design system
   Brand: cyan #00B4D8 / Montserrat + Noto Sans JP
   ========================================================= */

:root{
  --cyan:#00B4D8;
  --cyan-deep:#007d96;
  --cyan-dark:#0B2A33;
  --ink:#33414d;
  --ink-strong:#1f2a33;
  --muted:#5a6873;
  --line:#00B4D8;
  --line-soft:#cdeaf3;
  --tint:#eaf8fc;
  --tint2:#f6fcfe;
  --grey:#f1f4f6;
  --white:#ffffff;
  --footer:#0e2730;
  --maxw:1120px;
  --radius:14px;
  --shadow:0 18px 50px -28px rgba(0,75,95,.45);
}

*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{
  font-family:"Noto Sans JP",sans-serif;
  color:var(--ink);
  background:var(--white);
  line-height:1.85;
  letter-spacing:.012em;
  font-feature-settings:"palt" 1;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
.en{font-family:"Montserrat",sans-serif;font-feature-settings:normal;}
a{color:inherit;text-decoration:none;}
img{max-width:100%;display:block;}
html,body{overflow-x:hidden;}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px;}

h1,h2,h3,.sec-title,.lead{text-wrap:balance;line-break:strict;}
p,.sec-sub{text-wrap:pretty;line-break:strict;}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:10px;
  font-weight:700;font-size:15px;letter-spacing:.02em;
  padding:14px 28px;border:2px solid var(--cyan);border-radius:999px;
  transition:.25s ease;cursor:pointer;
}
.btn .ar{font-family:"Montserrat",sans-serif;font-weight:800;}
.btn-primary{background:var(--cyan);color:#fff;}
.btn-primary:hover{background:var(--cyan-deep);border-color:var(--cyan-deep);transform:translateY(-2px);}
.btn-ghost{background:transparent;color:var(--cyan-deep);}
.btn-ghost:hover{background:var(--tint);transform:translateY(-2px);}
.btn-white{background:#fff;color:var(--cyan-deep);border-color:#fff;}
.btn-white:hover{transform:translateY(-2px);box-shadow:var(--shadow);}

/* ---------- header / nav ---------- */
.site-header{
  position:sticky;top:0;z-index:50;background:rgba(255,255,255,.92);
  backdrop-filter:saturate(160%) blur(10px);
  border-bottom:1px solid var(--line-soft);
}
.nav{display:flex;align-items:center;justify-content:space-between;height:72px;}
.brand{display:flex;flex-direction:column;align-items:flex-start;gap:0;line-height:1.05;}
.brand .logo{font-family:"Montserrat",sans-serif;font-weight:800;font-size:22px;color:var(--cyan);letter-spacing:.01em;}
.brand .logo b{color:inherit;font-weight:inherit;}
.brand .tagjp{font-size:10px;color:var(--muted);letter-spacing:.32em;margin-top:3px;}
.nav-links{display:flex;align-items:center;gap:30px;}
.nav-links a{font-size:14px;font-weight:500;color:var(--ink);position:relative;padding:6px 0;}
.nav-links a:not(.nav-cta)::after{content:"";position:absolute;left:0;bottom:0;width:0;height:2px;background:var(--cyan);transition:width .25s;}
.nav-links a:not(.nav-cta):hover::after,.nav-links a.active:not(.nav-cta)::after{width:100%;}
.nav-links a.active{color:var(--cyan-deep);font-weight:700;}
.nav-cta{background:var(--cyan);color:#fff!important;padding:9px 20px!important;border-radius:999px;font-weight:700;}
.nav-cta:hover{background:var(--cyan-deep);}
.nav-toggle{display:none;background:none;border:0;cursor:pointer;flex-direction:column;gap:5px;padding:8px;}
.nav-toggle span{width:24px;height:2px;background:var(--ink-strong);transition:.25s;}
@media(max-width:860px){
  .nav-links{
    position:fixed;inset:72px 0 auto 0;background:#fff;flex-direction:column;gap:0;
    border-bottom:1px solid var(--line-soft);padding:8px 0;
    transform:translateY(-120%);transition:transform .3s ease;box-shadow:var(--shadow);
  }
  .nav-links.open{transform:translateY(0);}
  .nav-links a{width:100%;padding:14px 28px;border-bottom:1px solid var(--grey);}
  .nav-links a:not(.nav-cta)::after{display:none;}
  .nav-cta{margin:12px 28px;text-align:center;justify-content:center;display:flex;}
  .nav-toggle{display:flex;}
}

/* ---------- image placeholder frames ---------- */
.imgframe{
  position:relative;width:100%;background:
    repeating-linear-gradient(45deg,var(--tint2),var(--tint2) 14px,#eef9fc 14px,#eef9fc 28px);
  border:1.5px dashed var(--line-soft);border-radius:var(--radius);
  display:flex;align-items:center;justify-content:center;text-align:center;
  color:var(--muted);overflow:hidden;
}
.imgframe::before{
  content:"";position:absolute;left:14px;top:14px;width:26px;height:26px;
  border:2px solid var(--cyan);border-radius:6px;opacity:.5;
  background:
    linear-gradient(var(--cyan),var(--cyan)) no-repeat center/10px 2px,
    linear-gradient(var(--cyan),var(--cyan)) no-repeat center/2px 10px;
  background-blend-mode:normal;
}
.imgframe .ph-label{padding:18px 22px;font-size:12.5px;line-height:1.7;max-width:90%;}
.imgframe .ph-label b{display:block;color:var(--cyan-deep);font-weight:700;font-size:13px;margin-bottom:2px;}
.imgframe .ph-ratio{font-family:"Montserrat",sans-serif;font-weight:700;font-size:10px;letter-spacing:.1em;color:var(--cyan);margin-top:6px;}
.r-16x9{aspect-ratio:16/9;}
.r-4x3{aspect-ratio:4/3;}
.r-1x1{aspect-ratio:1/1;}
.r-3x2{aspect-ratio:3/2;}

/* real images (illustrations) */
.media{width:100%;display:block;object-fit:cover;border-radius:var(--radius);background:var(--tint2);}
.media.flush{border-radius:0;}

/* ---------- generic section ---------- */
.section{padding:84px 0;position:relative;}
.section.tinted{background:var(--tint2);}
.section.grey{background:var(--grey);}
.eyebrow{
  font-family:"Montserrat",sans-serif;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  font-size:12px;color:var(--cyan-deep);display:inline-flex;align-items:center;gap:12px;margin-bottom:18px;
}
.eyebrow::before{content:"";width:30px;height:2px;background:var(--cyan);}
.sec-title{font-size:clamp(23px,3.4vw,32px);font-weight:700;color:var(--ink-strong);line-height:1.4;}
.sec-title b{color:var(--cyan-deep);}
.sec-sub{color:var(--muted);font-size:15.5px;margin-top:14px;max-width:760px;line-height:1.9;}
.sec-head{margin-bottom:46px;}
.center{text-align:center;}
.center .eyebrow{justify-content:center;}
.center .sec-sub{margin-left:auto;margin-right:auto;}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line-soft);
  background:linear-gradient(180deg,var(--tint) 0%,#fff 70%);padding:78px 0 88px;}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:54px;align-items:center;}
.hero h1{font-size:clamp(30px,5vw,52px);font-weight:700;line-height:1.32;color:var(--ink-strong);letter-spacing:-.01em;}
.hero h1 b{color:var(--cyan-deep);}
.hero h1.hero-h1{text-wrap:balance;}
.hero h1.hero-h1 span,.hero h1.hero-h1 b{display:inline-block;}
.hero .hero-en{font-family:"Montserrat",sans-serif;font-weight:800;font-size:clamp(18px,2.6vw,28px);color:var(--cyan);margin-top:16px;letter-spacing:.02em;}
.hero .hero-catch{font-weight:700;color:var(--cyan-deep);font-size:clamp(16px,2.2vw,21px);letter-spacing:.04em;margin-bottom:12px;}
.hero .lead{margin-top:22px;font-size:17px;color:var(--muted);max-width:520px;line-height:2;}
.hero-cta{margin-top:34px;display:flex;gap:14px;flex-wrap:wrap;}
@media(max-width:860px){.hero-grid{grid-template-columns:1fr;gap:34px;}}

/* hero with photo background */
.hero-photo{
  background-color:#eaf8fc;
  background-image:linear-gradient(90deg, rgba(246,252,254,.80) 0%, rgba(246,252,254,.58) 34%, rgba(246,252,254,.20) 58%, rgba(246,252,254,0) 80%), url('../img/philosophy_image.jpg');
  background-repeat:no-repeat;background-position:center center;background-size:cover;
  padding:0;border-bottom:1px solid var(--line-soft);
}
.hero-photo .hero-inner{min-height:460px;display:flex;align-items:center;padding:56px 0;}
.hero-photo .hero-text{max-width:520px;padding-left:clamp(0px,3.5vw,56px);}
/* light halo keeps text legible over the water-hand */
.hero-photo .hero-text h1,
.hero-photo .hero-text .lead,
.hero-photo .hero-text .hero-catch,
.hero-photo .hero-text .hero-en{text-shadow:0 1px 12px rgba(246,252,254,.95),0 0 4px rgba(246,252,254,.9);}
/* tablet: soften scrim a touch more */
@media(max-width:860px){
  .hero-photo{background-image:linear-gradient(90deg, rgba(246,252,254,.86) 0%, rgba(246,252,254,.64) 40%, rgba(246,252,254,.25) 66%, rgba(246,252,254,0) 92%), url('../img/philosophy_image.jpg');}
}
/* phones: stack — hand at top, text over an opaque bottom scrim */
@media(max-width:600px){
  .hero-photo{
    background-image:linear-gradient(180deg, rgba(246,252,254,.30) 0%, rgba(246,252,254,.48) 30%, rgba(246,252,254,.86) 62%, rgba(246,252,254,.98) 100%), url('../img/philosophy_image.jpg');
    background-position:center top;
  }
  .hero-photo .hero-inner{min-height:500px;align-items:flex-end;padding:32px 0 44px;}
  .hero-photo .hero-text{max-width:none;padding-left:8px;padding-right:8px;}
  .hero-photo .hero-text h1{font-size:clamp(25px,6.6vw,30px);line-height:1.42;}
  .hero-photo .hero-text .hero-catch{font-size:14px;}
}

/* ---------- intro split ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;}
.split.rev .split-media{order:2;}
@media(max-width:860px){.split{grid-template-columns:1fr;gap:30px;}.split.rev .split-media{order:0;}}

/* ---------- card grid (services / IoT support) ---------- */
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;}
.cards.col3{grid-template-columns:repeat(3,1fr);}
.cards.col2{grid-template-columns:repeat(2,1fr);}
.card{
  background:#fff;border:1px solid var(--line-soft);border-radius:var(--radius);
  padding:26px 22px;transition:.25s ease;display:flex;flex-direction:column;
}
.card .ic{
  width:52px;height:52px;border-radius:14px;background:var(--tint);
  display:flex;align-items:center;justify-content:center;margin-bottom:18px;
}
.card .ic svg{width:26px;height:26px;stroke:var(--cyan-deep);fill:none;stroke-width:1.7;}
.card .c-key{font-family:"Montserrat",sans-serif;font-weight:700;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--cyan-deep);}
.card .c-t{font-size:16.5px;font-weight:700;color:var(--ink-strong);margin-top:6px;line-height:1.5;}
.card .c-d{font-size:13.5px;color:var(--muted);margin-top:12px;flex:1;}
@media(max-width:980px){.cards,.cards.col3{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){.cards,.cards.col3,.cards.col2{grid-template-columns:1fr;}}

/* ---------- quadrant (4象限) ---------- */
.quad{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;}
.qcell{
  position:relative;border-radius:18px;overflow:hidden;aspect-ratio:3/2;
  box-shadow:0 16px 38px -20px rgba(0,75,95,.5);
}
.qcell img.media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:0;}
.qcell .qbody{
  position:absolute;left:0;right:0;bottom:0;padding:22px 24px;display:flex;flex-direction:column;align-items:flex-start;gap:8px;
  background:linear-gradient(to top, rgba(7,28,35,.92) 0%, rgba(7,28,35,.5) 55%, rgba(7,28,35,0) 100%);
}
.qcell .q-t{
  margin:0;color:#fff;font-size:20px;font-weight:700;letter-spacing:.02em;line-height:1.3;
  position:relative;padding-left:16px;text-shadow:0 2px 12px rgba(0,0,0,.4);
}
.qcell .q-t::before{content:"";position:absolute;left:0;top:.18em;bottom:.18em;width:4px;border-radius:2px;background:var(--cyan);}
.qcell .q-desc{margin:0;padding-left:16px;color:rgba(255,255,255,.92);font-size:13.5px;line-height:1.7;text-shadow:0 1px 8px rgba(0,0,0,.45);}
.qcell .q-meta{display:none;}
@media(max-width:620px){.quad{grid-template-columns:1fr;}}

/* ---------- merit / numbered cards ---------- */
.merits{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.merit{border:1px solid var(--line-soft);border-radius:var(--radius);padding:28px 24px;background:#fff;display:flex;flex-direction:column;}
.merit .m-no{font-family:"Montserrat",sans-serif;font-weight:800;font-size:14px;color:#fff;background:var(--cyan);width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:18px;}
.merit .m-t{font-size:17px;font-weight:700;color:var(--ink-strong);line-height:1.5;}
.merit .m-d{font-size:13.5px;color:var(--muted);margin-top:12px;flex:1;}
.merit .m-d b{color:var(--cyan-deep);}
.merit .m-axis{margin-top:16px;padding-top:13px;border-top:1px dashed var(--line-soft);font-family:"Montserrat",sans-serif;font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--cyan-deep);}
@media(max-width:860px){.merits{grid-template-columns:1fr;}}

/* ---------- cost reduction ---------- */
.cost{display:grid;grid-template-columns:.82fr 1.18fr;gap:30px;align-items:center;
  border:1px solid var(--line-soft);border-radius:var(--radius);padding:32px;background:#fff;}
.bars{display:flex;align-items:flex-end;justify-content:center;gap:34px;height:220px;}
.barcol{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;}
.bar{width:82px;border-radius:10px 10px 0 0;display:flex;align-items:flex-start;justify-content:center;padding-top:10px;font-family:"Montserrat",sans-serif;font-weight:800;font-size:13px;}
.bar.before{height:92%;background:var(--line-soft);color:var(--cyan-deep);}
.bar.after{height:50%;background:var(--cyan);color:#fff;}
.barlabel{margin-top:11px;font-size:13px;font-weight:700;color:var(--ink-strong);}
.barsub{font-size:11px;color:var(--muted);}
.levers{display:flex;flex-direction:column;gap:11px;}
.lever{background:var(--tint);border-radius:10px;padding:14px 18px;}
.lever .lv-h{font-weight:700;color:var(--cyan-deep);font-size:14px;}
.lever .lv-d{font-size:12.5px;color:var(--ink);margin-top:3px;}
.cost-note{margin-top:14px;font-size:11.5px;color:var(--muted);}
@media(max-width:760px){.cost{grid-template-columns:1fr;gap:24px;}}

/* ---------- flow / diagram ---------- */
.flow{display:grid;grid-template-columns:repeat(4,1fr);gap:0;align-items:stretch;}
.fstep{position:relative;border:1px solid var(--line-soft);border-radius:var(--radius);padding:22px 20px;background:#fff;margin-right:26px;}
.fstep:last-child{margin-right:0;}
.fstep::after{content:"→";position:absolute;right:-22px;top:50%;transform:translateY(-50%);color:var(--cyan);font-family:"Montserrat",sans-serif;font-weight:800;font-size:20px;}
.fstep:last-child::after{display:none;}
.fstep .f-no{font-family:"Montserrat",sans-serif;font-weight:800;font-size:12px;color:#fff;background:var(--cyan);width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-bottom:12px;}
.fstep .f-t{font-size:14.5px;font-weight:700;color:var(--ink-strong);line-height:1.45;}
.fstep .f-d{font-size:12px;color:var(--muted);margin-top:8px;}
@media(max-width:860px){
  .flow{grid-template-columns:1fr;}
  .fstep{margin-right:0;margin-bottom:30px;}
  .fstep::after{content:"↓";right:50%;top:auto;bottom:-26px;transform:translateX(50%);}
}

/* ---------- role split (役割分担) ---------- */
.roles{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:stretch;}
.role-card{border:1px solid var(--line-soft);border-radius:var(--radius);padding:28px 26px;background:#fff;display:flex;flex-direction:column;}
.role-card.you{border:2px solid var(--cyan);background:var(--tint2);}
.role-card .role-key{font-family:"Montserrat",sans-serif;font-weight:700;font-size:12px;letter-spacing:.08em;color:var(--cyan-deep);}
.role-card .role-t{font-size:20px;font-weight:700;color:var(--ink-strong);margin-top:6px;}
.role-card .role-list{margin:16px 0 0;padding:0;list-style:none;flex:1;}
.role-card .role-list li{position:relative;padding-left:24px;font-size:14px;color:var(--ink);margin-bottom:9px;line-height:1.7;}
.role-card .role-list li::before{content:"✓";position:absolute;left:0;top:0;color:var(--cyan);font-weight:800;}
.role-card .role-note{margin-top:14px;font-size:13px;color:var(--cyan-deep);font-weight:700;}
.role-card.maker .role-note{color:var(--muted);}
@media(max-width:680px){.roles{grid-template-columns:1fr;}}

/* ---------- case studies (導入事例) ---------- */
.cases{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.case{border:1px solid var(--line-soft);border-radius:var(--radius);padding:26px 26px;background:#fff;}
.case .case-tag{display:inline-block;font-family:"Montserrat",sans-serif;font-weight:700;font-size:11px;letter-spacing:.06em;color:var(--cyan-deep);background:var(--tint);border-radius:999px;padding:5px 14px;}
.case .case-t{font-size:17px;font-weight:700;color:var(--ink-strong);margin-top:14px;line-height:1.5;}
.case dl{margin:16px 0 0;display:grid;grid-template-columns:auto 1fr;gap:9px 12px;}
.case dt{font-size:11px;font-weight:700;color:#fff;background:var(--cyan);border-radius:6px;padding:3px 9px;height:fit-content;white-space:nowrap;align-self:start;}
.case dd{font-size:13.5px;color:var(--ink);margin:0;line-height:1.75;}
.case dd b{color:var(--cyan-deep);}
@media(max-width:680px){.cases{grid-template-columns:1fr;}}

/* ---------- step timeline (導入フロー) ---------- */
.steps{position:relative;max-width:740px;margin:0 auto;}
.steps::before{content:"";position:absolute;left:31px;top:34px;bottom:34px;width:2px;background:linear-gradient(var(--cyan),var(--line-soft));}
.step{position:relative;display:grid;grid-template-columns:64px 1fr;gap:24px;align-items:flex-start;padding:14px 0;}
.step-no{width:64px;height:64px;border-radius:50%;background:#fff;border:2px solid var(--cyan);color:var(--cyan-deep);font-family:"Montserrat",sans-serif;font-weight:800;font-size:20px;display:flex;align-items:center;justify-content:center;position:relative;z-index:1;box-shadow:0 8px 18px -10px rgba(0,75,95,.45);}
.step-body{padding-top:9px;}
.step-t{font-size:17.5px;font-weight:700;color:var(--ink-strong);}
.step-d{font-size:14px;color:var(--muted);margin-top:6px;line-height:1.85;}
@media(max-width:560px){.step{grid-template-columns:52px 1fr;gap:16px;}.steps::before{left:25px;}.step-no{width:52px;height:52px;font-size:17px;}}

/* ---------- product showcase ---------- */
.products{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.product{border:1px solid var(--line-soft);border-radius:var(--radius);overflow:hidden;background:#fff;display:flex;flex-direction:column;}
.product .p-body{padding:22px 22px 26px;display:flex;flex-direction:column;flex:1;}
.product .p-tag{font-family:"Montserrat",sans-serif;font-weight:700;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--cyan);}
.product .p-t{font-size:18px;font-weight:700;color:var(--ink-strong);margin-top:6px;}
.product .p-d{font-size:13px;color:var(--muted);margin-top:10px;flex:1;}
@media(max-width:860px){.products{grid-template-columns:1fr;}}

/* ---------- CTA band ---------- */
.cta{
  background:linear-gradient(120deg,var(--cyan) 0%,var(--cyan-deep) 100%);
  color:#fff;text-align:center;padding:74px 0;position:relative;overflow:hidden;
}
.cta h2{font-size:clamp(24px,3.6vw,34px);font-weight:700;line-height:1.45;}
.cta p{margin-top:16px;font-size:16px;opacity:.95;max-width:620px;margin-left:auto;margin-right:auto;}
.cta .cta-btns{margin-top:32px;display:flex;gap:14px;justify-content:center;flex-wrap:wrap;}

/* ---------- info table ---------- */
.itable{border:1px solid var(--line-soft);border-radius:var(--radius);overflow:hidden;}
.irow{display:grid;grid-template-columns:210px 1fr;border-bottom:1px solid var(--line-soft);}
.irow:last-child{border-bottom:none;}
.irow .k{background:var(--tint);font-weight:700;color:var(--cyan-deep);font-size:14px;padding:18px 24px;border-right:1px solid var(--line-soft);display:flex;align-items:center;}
.irow .v{padding:18px 26px;font-size:14.5px;color:var(--ink);line-height:1.85;}
.irow .v .sub{display:block;color:var(--muted);font-size:12.5px;margin-top:4px;}
@media(max-width:600px){.irow{grid-template-columns:1fr;}.irow .k{border-right:none;border-bottom:1px solid var(--line-soft);}}

/* ---------- page hero (sub pages) ---------- */
.page-hero{background:linear-gradient(180deg,var(--tint),#fff);border-bottom:1px solid var(--line-soft);padding:64px 0 56px;}
.page-hero .eyebrow{margin-bottom:14px;}
.page-hero h1{font-size:clamp(26px,4.4vw,42px);font-weight:700;color:var(--ink-strong);line-height:1.35;}
.page-hero .lead{margin-top:18px;font-size:16px;color:var(--muted);max-width:680px;line-height:2;}
.crumbs{font-size:12.5px;color:var(--muted);margin-bottom:20px;}
.crumbs a:hover{color:var(--cyan-deep);}
.crumbs .sep{margin:0 8px;color:var(--line-soft);}

/* ---------- footer ---------- */
.site-footer{background:var(--footer);color:#cdd9de;padding:60px 0 30px;}
.foot-grid{display:grid;grid-template-columns:1.8fr 1fr 1fr;gap:34px;}
.foot-brand .logo{font-family:"Montserrat",sans-serif;font-weight:800;font-size:22px;color:#fff;}
.foot-brand .logo b{color:inherit;font-weight:inherit;}
.foot-brand p{font-size:13px;color:#9fb2ba;margin-top:14px;line-height:1.9;max-width:300px;}
.foot-col h4{font-size:12px;font-family:"Montserrat",sans-serif;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--cyan);margin-bottom:16px;}
.foot-col a{display:block;font-size:13.5px;color:#cdd9de;padding:6px 0;transition:.2s;}
.foot-col a:hover{color:#fff;padding-left:4px;}
.foot-bottom{margin-top:46px;padding-top:22px;border-top:1px solid rgba(255,255,255,.12);display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:12px;color:#8ca0a8;}
@media(max-width:860px){.foot-grid{grid-template-columns:1fr 1fr;gap:28px;}}
@media(max-width:480px){.foot-grid{grid-template-columns:1fr;}}

/* ---------- anchor offset (sticky header) ---------- */
[id]{scroll-margin-top:88px;}

/* ---------- audience band header ---------- */
.aud-band{padding:30px 0;border-top:3px solid var(--cyan);}
.aud-band.user{background:var(--tint);}
.aud-band.maker{background:var(--cyan-dark);}
.aud-band .wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap;}
.aud-num{font-family:"Montserrat",sans-serif;font-weight:800;font-size:30px;line-height:1;width:64px;height:64px;border-radius:16px;display:flex;align-items:center;justify-content:center;flex:none;}
.aud-band.user .aud-num{background:var(--cyan);color:#fff;}
.aud-band.maker .aud-num{background:var(--cyan);color:#fff;}
.aud-band .aud-key{font-family:"Montserrat",sans-serif;font-weight:700;font-size:12px;letter-spacing:.14em;text-transform:uppercase;}
.aud-band.user .aud-key{color:var(--cyan-deep);}
.aud-band.maker .aud-key{color:#7fdcef;}
.aud-band .aud-t{font-size:clamp(22px,3.2vw,30px);font-weight:700;line-height:1.4;margin-top:4px;}
.aud-band.user .aud-t{color:var(--ink-strong);}
.aud-band.maker .aud-t{color:#fff;}
.aud-band .aud-for{font-size:13.5px;margin-top:8px;}
.aud-band.user .aud-for{color:var(--muted);}
.aud-band.maker .aud-for{color:#bcd6dd;}
.aud-band .aud-for b{color:inherit;font-weight:700;}

/* ---------- path chooser ---------- */
.paths{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.pathcard{display:flex;flex-direction:column;border:2px solid var(--cyan);border-radius:var(--radius);padding:30px 28px;background:#fff;}
.pathcard .pc-key{font-family:"Montserrat",sans-serif;font-weight:700;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--cyan);}
.pathcard .pc-t{font-size:22px;font-weight:700;color:var(--ink-strong);margin-top:8px;}
.pathcard .pc-d{font-size:14px;color:var(--muted);margin-top:12px;flex:1;line-height:1.85;}
.pathcard .pc-for{font-size:12.5px;color:var(--cyan-deep);margin-top:14px;font-weight:700;}
.pathcard .pc-go{margin-top:18px;font-weight:700;color:var(--cyan-deep);display:inline-flex;align-items:center;gap:8px;}
.pathcard .pc-go .ar{font-family:"Montserrat",sans-serif;font-weight:800;}
@media(max-width:720px){.paths{grid-template-columns:1fr;}}

/* ---------- connector model ---------- */
.model{display:grid;grid-template-columns:1fr auto 1fr;gap:0;align-items:stretch;}
.model .side{border:2px solid var(--cyan);border-radius:var(--radius);background:#fff;padding:26px 24px;display:flex;flex-direction:column;transition:.25s ease;}
a.side{cursor:pointer;}
a.side:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:var(--cyan-deep);}
a.side:hover .m-go{color:var(--cyan);}
.m-go{color:var(--cyan-deep);font-weight:700;display:inline-flex;align-items:center;gap:6px;transition:.2s;}
.model .side .m-role{font-family:"Montserrat",sans-serif;font-weight:700;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--cyan-deep);}
.model .side .m-role .jp{font-family:"Noto Sans JP",sans-serif;color:var(--ink-strong);margin-left:8px;font-size:14px;text-transform:none;}
.model .side .m-strong{font-size:20px;font-weight:700;color:var(--ink-strong);margin-top:16px;line-height:1.45;}
.model .side .m-strong em{font-style:normal;color:var(--cyan-deep);}
.model .side .m-d{font-size:13.5px;color:var(--muted);margin-top:12px;flex:1;}
.model .side .m-biz{margin-top:16px;padding-top:14px;border-top:1px dashed var(--line-soft);font-size:13.5px;}
.model .side .m-biz b{color:var(--ink-strong);}
.model .side .m-biz .verb{display:inline-block;background:var(--tint);color:var(--cyan-deep);font-weight:700;font-size:12px;padding:2px 10px;border-radius:999px;margin-left:6px;}
.hub{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 16px;min-width:210px;}
.hub-core{background:linear-gradient(135deg,var(--cyan),var(--cyan-deep));color:#fff;text-align:center;padding:22px 18px;border-radius:var(--radius);width:100%;box-shadow:var(--shadow);}
.hub-core .hub-en{font-family:"Montserrat",sans-serif;font-weight:800;font-size:16px;}
.hub-core .hub-jp{font-weight:700;font-size:18px;margin-top:4px;}
.hub-core .hub-tag{font-size:11px;opacity:.92;margin-top:10px;}
.hub .moat{margin-top:14px;border:2px solid var(--cyan);border-radius:12px;background:var(--tint);text-align:center;padding:12px;width:100%;}
.hub .moat .mh{font-family:"Montserrat",sans-serif;font-size:10px;letter-spacing:.1em;color:var(--cyan-deep);font-weight:700;}
.hub .moat .mb{font-size:13px;font-weight:700;color:var(--ink-strong);margin-top:4px;line-height:1.45;}
.hub .arrow{color:var(--cyan);font-family:"Montserrat",sans-serif;font-weight:800;font-size:24px;padding:8px 0;}
.model.two{grid-template-columns:1fr 1fr;gap:20px;}
@media(max-width:760px){.model{grid-template-columns:1fr;}.model.two{grid-template-columns:1fr;}.hub{padding:14px 0;min-width:0;}.hub .arrow{transform:rotate(90deg);}}

/* dark-section helpers (maker flow) */
.section.dark{background:var(--cyan-dark);color:#cfe6ec;}
.section.dark .sec-title{color:#fff;}
.section.dark .sec-title b{color:#7fdcef;}
.section.dark .sec-sub{color:#a9c9d2;}
.section.dark .eyebrow{color:#7fdcef;}
.section.dark .card,.section.dark .merit,.section.dark .fstep{background:rgba(255,255,255,.04);border-color:rgba(127,220,239,.35);}
.section.dark .card .c-t,.section.dark .merit .m-t,.section.dark .fstep .f-t{color:#fff;}
.section.dark .card .c-d,.section.dark .merit .m-d,.section.dark .fstep .f-d{color:#a9c9d2;}
.section.dark .card .ic{background:rgba(127,220,239,.14);}
.section.dark .card .ic svg{stroke:#7fdcef;}
.section.dark .merit .m-d b{color:#7fdcef;}
.section.dark .merit .m-axis{color:#7fdcef;border-top-color:rgba(127,220,239,.3);}

/* ---------- team / 役員紹介 ---------- */
.team{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.tmember{border:1px solid var(--line-soft);border-radius:var(--radius);padding:28px 24px;background:#fff;display:flex;flex-direction:column;}
.t-avatar{width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,var(--cyan),var(--cyan-deep));color:#fff;display:flex;align-items:center;justify-content:center;font-family:"Montserrat",sans-serif;font-weight:800;font-size:24px;margin-bottom:18px;}
.t-name{font-size:19px;font-weight:700;color:var(--ink-strong);}
.t-role{color:var(--cyan-deep);font-weight:700;font-size:13px;margin-top:6px;}
.t-role span{display:block;color:var(--muted);font-weight:500;font-size:12px;margin-top:2px;}
.t-bio{font-size:13px;color:var(--muted);margin-top:14px;line-height:1.9;}
.tmember{cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;}
.tmember:hover{transform:translateY(-4px);box-shadow:0 14px 36px rgba(11,42,51,.1);border-color:var(--cyan);}
.tmember:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;}
.t-more{margin-top:auto;padding-top:16px;color:var(--cyan-deep);font-weight:700;font-size:13px;display:inline-flex;align-items:center;gap:6px;}
.tmember:hover .t-more .ar{transform:translateX(4px);}
.t-more .ar{transition:transform .2s ease;}
@media(max-width:860px){.team{grid-template-columns:1fr;}}

/* 役員モーダル */
.member-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px;}
.member-modal[hidden]{display:none;}
.mm-backdrop{position:absolute;inset:0;background:rgba(11,42,51,.55);backdrop-filter:blur(3px);animation:mmFade .2s ease;}
.mm-card{position:relative;background:#fff;border-radius:18px;max-width:640px;width:100%;max-height:86vh;overflow-y:auto;padding:40px;box-shadow:0 30px 80px rgba(11,42,51,.3);animation:mmPop .25s cubic-bezier(.2,.8,.3,1);}
.mm-x{position:absolute;top:16px;right:18px;width:38px;height:38px;border:none;background:var(--bg-tint,#f0f9fc);border-radius:50%;font-size:24px;line-height:1;color:var(--cyan-dark);cursor:pointer;transition:background .2s;}
.mm-x:hover{background:#e0f2f8;}
.mm-head{display:flex;align-items:center;gap:18px;margin-bottom:24px;padding-right:30px;}
.mm-head .t-avatar{margin-bottom:0;flex-shrink:0;}
.mm-name{font-size:24px;font-weight:700;color:var(--ink-strong);}
.mm-role{color:var(--cyan-deep);font-weight:700;font-size:14px;margin-top:4px;}
.mm-role span{display:block;color:var(--muted);font-weight:500;font-size:13px;margin-top:2px;}
.mm-bio{font-size:14.5px;color:var(--ink);line-height:2;}
@keyframes mmFade{from{opacity:0}to{opacity:1}}
@keyframes mmPop{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:none}}
@media(max-width:560px){.mm-card{padding:28px 22px;}.mm-head{flex-direction:column;align-items:flex-start;gap:12px;}}

/* ---------- instagram ---------- */
.ig-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;}
.ig-tile{display:block;border-radius:12px;overflow:hidden;position:relative;transition:.2s;}
.ig-tile:hover{transform:translateY(-3px);box-shadow:var(--shadow);}
.ig-tile .imgframe{border-radius:12px;}
.ig-ico{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:14px;background:linear-gradient(135deg,#feda75,#d62976 45%,#962fbf 75%,#4f5bd5);margin:0 auto 14px;}
.ig-ico svg{width:24px;height:24px;stroke:#fff;fill:none;stroke-width:2;}
@media(max-width:860px){.ig-grid{grid-template-columns:repeat(3,1fr);}}
@media(max-width:480px){.ig-grid{grid-template-columns:repeat(2,1fr);}}

/* ---------- name origin ---------- */
.name-origin{display:grid;grid-template-columns:auto 1fr;gap:40px;align-items:center;}
.no-glyph{display:flex;align-items:center;gap:14px;font-family:"Montserrat",sans-serif;font-weight:800;color:var(--cyan);font-size:clamp(26px,4vw,40px);white-space:nowrap;}
.no-amp{color:var(--cyan-deep);}
.no-w{display:flex;flex-direction:column;align-items:center;}
.no-g{font-family:"Noto Sans JP",sans-serif;font-weight:700;font-size:13px;color:var(--muted);margin-top:4px;}
.no-copy{font-size:15px;color:var(--ink);line-height:2;}
.no-copy b{color:var(--cyan-deep);}
@media(max-width:640px){.name-origin{grid-template-columns:1fr;gap:20px;}}

/* ---------- news list ---------- */
.news{border-top:1px solid var(--line-soft);}
.news-item{display:grid;grid-template-columns:118px 104px 1fr;gap:20px;align-items:center;padding:18px 6px;border-bottom:1px solid var(--line-soft);transition:.2s;}
.news-item:hover{background:var(--tint2);}
.news-item .nd{font-family:"Montserrat",sans-serif;font-weight:700;color:var(--cyan-deep);font-size:14px;}
.news-item .nc{font-size:11px;font-weight:700;color:#fff;background:var(--cyan);border-radius:999px;padding:4px 0;text-align:center;}
.news-item .nt{font-size:14.5px;color:var(--ink);}
.news-item .nt b{color:var(--cyan-deep);}
@media(max-width:640px){.news-item{grid-template-columns:auto auto;gap:6px 12px;}.news-item .nt{grid-column:1 / -1;}}

/* ---------- legal / policy ---------- */
.legal{max-width:820px;margin:0 auto;}
.legal .intro{font-size:15px;color:var(--ink);margin-bottom:10px;line-height:1.95;}
.legal h2{font-size:18px;color:var(--ink-strong);margin:36px 0 12px;padding-left:14px;border-left:4px solid var(--cyan);}
.legal h3{font-size:15px;color:var(--cyan-deep);margin:22px 0 8px;}
.legal p{font-size:14.5px;color:var(--ink);margin-bottom:10px;line-height:1.95;}
.legal ul{margin:6px 0 14px;padding-left:1.3em;}
.legal li{font-size:14.5px;color:var(--ink);margin-bottom:6px;line-height:1.85;}
.legal .addr{background:var(--tint);border-radius:10px;padding:18px 22px;margin-top:10px;font-size:14px;line-height:1.9;}
.legal .meta{margin-top:34px;color:var(--muted);font-size:13px;}
.foot-bottom a{color:#9fb2ba;}
.foot-bottom a:hover{color:#fff;}

/* ---------- contact form ---------- */
.contact-form{max-width:680px;margin:0 auto;display:grid;gap:20px;}
.form-group{display:flex;flex-direction:column;gap:8px;}
.form-group label{font-weight:700;font-size:14px;color:var(--ink-strong);}
.form-group .required{color:#e0245e;font-size:12px;margin-left:4px;}
.form-group .optional{color:var(--muted);font-size:12px;font-weight:500;margin-left:4px;}
.form-group input,.form-group select,.form-group textarea{
  font-family:inherit;font-size:15px;color:var(--ink);width:100%;
  padding:13px 16px;border:1.5px solid var(--line-soft);border-radius:10px;background:#fff;transition:.2s;
}
.form-group textarea{min-height:150px;resize:vertical;}
.form-group input::placeholder,.form-group textarea::placeholder{color:#aab8c0;}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px rgba(0,180,216,.15);}
.form-cta{text-align:center;margin-top:8px;}
.submit-btn{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:15px;padding:15px 44px;border:none;border-radius:999px;background:var(--cyan);color:#fff;cursor:pointer;transition:.25s;}
.submit-btn:hover{background:var(--cyan-deep);transform:translateY(-2px);}
.submit-btn .btn-arrow{font-family:"Montserrat",sans-serif;font-weight:800;}
.contact-form-wrapper.hidden{display:none;}
.form-submitted-message{display:none;text-align:center;max-width:560px;margin:0 auto;padding:44px 36px;border:2px solid var(--cyan);border-radius:var(--radius);background:var(--tint);}
.form-submitted-message.visible{display:block;}
.form-submitted-message h3{color:var(--cyan-deep);font-size:20px;margin-bottom:14px;}
.form-note{max-width:680px;margin:18px auto 0;font-size:12px;color:var(--muted);text-align:center;}

/* ---------- detail polish ---------- */
html{scroll-padding-top:84px;}
::selection{background:rgba(0,180,216,.22);color:var(--ink-strong);}
:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;border-radius:4px;}
img{-webkit-user-drag:none;user-select:none;}
.btn:active{transform:translateY(0);}
.site-header{transition:box-shadow .25s ease,background .25s ease;}
.site-header.scrolled{box-shadow:0 8px 26px -18px rgba(0,75,95,.45);}
.page-hero{position:relative;overflow:hidden;}
.page-hero::after{content:"";position:absolute;right:-90px;top:-90px;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(0,180,216,.14),transparent 70%);pointer-events:none;}
.page-hero .wrap{position:relative;z-index:1;}
.cta{position:relative;overflow:hidden;}
.cta::before{content:"";position:absolute;left:-60px;bottom:-80px;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.14),transparent 70%);pointer-events:none;}
.cta .wrap{position:relative;z-index:1;}

/* ---------- reveal motion ---------- */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease;}
.reveal.in{opacity:1;transform:none;}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none;}}

/* ---------- cookie consent banner ---------- */
.cookie-bar{
  position:fixed;left:0;right:0;bottom:0;
  z-index:900; /* 内容より十分上 / company.htmlのモーダル(1000)より下 */
  background:var(--white);
  border-top:1px solid var(--line-soft);
  box-shadow:0 -10px 40px -22px rgba(0,75,95,.45);
}
.cookie-bar-inner{
  max-width:var(--maxw);margin:0 auto;
  padding:16px 28px;
  display:flex;align-items:center;justify-content:space-between;gap:20px;
}
.cookie-bar-text{
  font-size:13.5px;color:var(--ink);line-height:1.8;margin:0;flex:1;
}
.cookie-bar-link{
  color:var(--cyan-deep);font-weight:700;text-decoration:underline;
}
.cookie-bar-link:hover{color:var(--cyan);}
.cookie-bar-actions{
  display:flex;align-items:center;gap:12px;flex:none;
}
.cookie-btn{
  font-family:inherit;font-weight:700;font-size:14px;letter-spacing:.02em;
  cursor:pointer;transition:.25s ease;white-space:nowrap;
}
.cookie-btn-accept{
  background:var(--cyan);color:#fff;border:2px solid var(--cyan);
  padding:11px 26px;border-radius:999px;
}
.cookie-btn-accept:hover{
  background:var(--cyan-deep);border-color:var(--cyan-deep);transform:translateY(-2px);
}
.cookie-btn-decline{
  background:transparent;color:var(--muted);border:none;
  padding:11px 8px;text-decoration:underline;
}
.cookie-btn-decline:hover{color:var(--ink-strong);}
@media(max-width:600px){
  .cookie-bar-inner{flex-direction:column;align-items:stretch;gap:14px;padding:16px 20px;}
  .cookie-bar-actions{justify-content:stretch;flex-wrap:wrap;}
  .cookie-btn-accept{flex:1;text-align:center;min-height:44px;}
  .cookie-btn-decline{min-height:44px;}
}

/* =========================================================
   RESPONSIVE REFINEMENTS (consolidated — kept last so it
   layers over the per-component media queries above)
   Breakpoints: 1024 / 860 / 768 / 600 / 430
   ========================================================= */

/* ---- tablet 769–1024px ---- */
@media(max-width:1024px){
  .section{padding:72px 0;}
  .hero{padding:64px 0 72px;}
  /* itable key column relaxes so the value side isn't cramped */
  .irow{grid-template-columns:180px 1fr;}
}

/* ---- small tablet / large phone 601–860px ---- */
@media(max-width:860px){
  .section{padding:64px 0;}
  .sec-head{margin-bottom:38px;}
  .hero{padding:56px 0 60px;}
  .hero .lead{max-width:100%;}
  .cta{padding:60px 0;}
  .page-hero{padding:52px 0 46px;}
  .itable .irow{grid-template-columns:170px 1fr;}
  .news-item{grid-template-columns:100px 92px 1fr;gap:14px;}
  /* tablet 2-up grids that previously jumped straight to 1 col */
  .team{grid-template-columns:repeat(2,1fr);}
}

/* ---- phones ≤768px ---- */
@media(max-width:768px){
  .nav-links a{min-height:44px;display:flex;align-items:center;}
  .hero-photo .hero-inner{min-height:380px;}
}

/* ---- small phones ≤600px ---- */
@media(max-width:600px){
  .wrap{padding:0 20px;}
  .section{padding:56px 0;}
  .sec-head{margin-bottom:32px;}
  .sec-sub{font-size:14.5px;line-height:1.85;}
  .hero{padding:44px 0 50px;}
  .hero .lead{font-size:15.5px;line-height:1.9;margin-top:18px;}
  .hero-cta{margin-top:26px;gap:12px;}
  .hero-cta .btn{flex:1 1 100%;justify-content:center;}
  .cta{padding:52px 0;}
  .cta .cta-btns{flex-direction:column;}
  .cta .cta-btns .btn{justify-content:center;}
  .page-hero{padding:42px 0 38px;}
  .btn{padding:13px 24px;min-height:44px;}
  .nav-cta{min-height:44px;align-items:center;}
  .team{grid-template-columns:1fr;}
  /* card inner padding eases so text isn't cramped edge-to-edge */
  .card{padding:22px 18px;}
  .merit{padding:24px 20px;}
  .role-card{padding:24px 20px;}
  .case{padding:22px 20px;}
  .pathcard{padding:26px 22px;}
  .model .side{padding:22px 20px;}
  .cost{padding:24px 20px;}
}

/* ---- very small phones ≤430px ---- */
@media(max-width:430px){
  .wrap{padding:0 18px;}
  .section{padding:50px 0;}
  .hero-photo .hero-inner{min-height:440px;padding:28px 0 40px;}
  /* cost-reduction bars shrink to avoid horizontal crowding */
  .bars{gap:22px;height:190px;}
  .bar{width:64px;}
  /* news date/category labels wrap cleanly */
  .news-item .nc{padding:4px 8px;}
  .cookie-bar-text{font-size:13px;}
}
