/* ===== KOKOROBA corporate site — shared styles ===== */
:root{
  --blue-900:#0a2c66;
  --blue-700:#0047ad;
  --blue-600:#0060e8; /* logo blue */
  --blue-500:#2f7dff;
  --blue-100:#e8f0ff;
  --blue-50:#f4f8ff;
  --ink:#101a2c;
  --sub:#57637a;
  --line:#e3e9f4;
  --bg:#f7f9fd;
  --white:#ffffff;
  --gold:#e0a63e;
  --radius:16px;
  --shadow:0 10px 30px -12px rgba(10,44,102,.18);
  --maxw:1120px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:"Hiragino Kaku Gothic ProN","Hiragino Sans","Noto Sans JP","Yu Gothic",Meiryo,sans-serif;
  line-height:1.85; -webkit-font-smoothing:antialiased;
}
img{max-width:100%; display:block}
a{color:inherit; text-decoration:none}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 24px}
section{padding:88px 0}
@media (max-width:720px){ section{padding:56px 0} }

h1,h2,h3,h4{margin:0; letter-spacing:.01em}
.eyebrow{
  display:inline-flex; align-items:center; gap:8px; font-size:12.5px; font-weight:700;
  letter-spacing:.14em; color:var(--blue-600); margin:0 0 14px;
}
.eyebrow::before{content:""; width:22px; height:2px; background:var(--blue-600); display:inline-block}
.sec-title{font-size:clamp(24px,3.4vw,34px); font-weight:800; line-height:1.5; margin-bottom:14px}
.sec-lead{color:var(--sub); font-size:15.5px; max-width:640px}
.sec-head{margin-bottom:44px}
.sec-head.center{text-align:center; margin-left:auto; margin-right:auto}
.sec-head.center .sec-lead{margin-left:auto; margin-right:auto}
.sec-head.center .eyebrow{justify-content:center}

/* ---------- header ---------- */
header.site{
  position:sticky; top:0; z-index:50; background:rgba(255,255,255,.9);
  backdrop-filter:saturate(180%) blur(10px); border-bottom:1px solid var(--line);
}
.nav-row{display:flex; align-items:center; justify-content:space-between; height:76px; gap:20px}
.brand{display:flex; align-items:center; gap:10px; font-weight:800; font-size:17px; color:var(--ink)}
.brand img{height:34px; width:auto}
.brand .co{font-size:11.5px; font-weight:700; color:var(--sub); letter-spacing:.06em; display:block; margin-top:1px}
.brand .name{display:flex; flex-direction:column; line-height:1.25}
nav.links{display:flex; align-items:center; gap:30px}
nav.links a{font-size:14px; font-weight:700; color:var(--ink); position:relative; padding:6px 0}
nav.links a:hover{color:var(--blue-600)}
.tel-btn{
  display:inline-flex; align-items:center; gap:8px; background:var(--blue-600); color:#fff!important;
  font-weight:800; font-size:14px; padding:11px 20px; border-radius:999px; white-space:nowrap;
  box-shadow:0 8px 20px -8px rgba(0,96,232,.6);
}
.menu-btn{display:none; background:none; border:none; padding:8px; cursor:pointer}
.menu-btn svg{width:26px; height:26px}
@media (max-width:860px){
  nav.links{position:fixed; inset:76px 0 0 0; background:#fff; flex-direction:column; align-items:flex-start;
    padding:26px 24px; gap:4px; transform:translateY(-8px); opacity:0; pointer-events:none; transition:.2s;
    border-top:1px solid var(--line); max-height:calc(100vh - 76px); overflow:auto;}
  nav.links.open{opacity:1; transform:none; pointer-events:auto}
  nav.links a{width:100%; padding:14px 4px; border-bottom:1px solid var(--line); font-size:15.5px}
  nav.links .tel-btn{margin-top:14px; width:100%; justify-content:center}
  .menu-btn{display:block}
  .nav-row .tel-btn.desktop-only{display:none}
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:10px; padding:15px 26px; border-radius:999px;
  font-weight:800; font-size:15px; border:1px solid transparent; cursor:pointer;
}
.btn-primary{background:var(--blue-600); color:#fff; box-shadow:0 12px 26px -10px rgba(0,96,232,.55)}
.btn-primary:hover{background:var(--blue-700)}
.btn-ghost{background:#fff; color:var(--blue-700); border-color:var(--blue-100)}
.btn-line{background:#06C755; color:#fff; box-shadow:0 12px 26px -10px rgba(6,199,85,.5)}
.btn-row{display:flex; gap:14px; flex-wrap:wrap}

/* ---------- hero ---------- */
.hero{
  position:relative; overflow:hidden; padding:96px 0 100px;
  background:radial-gradient(120% 100% at 15% -10%, var(--blue-100) 0%, var(--bg) 55%);
}
.hero .wrap{position:relative; z-index:2}
.hero-grid{display:grid; grid-template-columns:1.15fr .85fr; gap:56px; align-items:center}
.hero h1{font-size:clamp(30px,4.6vw,50px); font-weight:800; line-height:1.42; color:var(--blue-900)}
.hero h1 .accent{color:var(--blue-600)}
.hero p.lead{margin:22px 0 34px; color:var(--sub); font-size:16.5px; max-width:520px}
.hero-mark{
  position:relative; aspect-ratio:1/1; border-radius:32px; background:linear-gradient(155deg,var(--blue-600),var(--blue-900));
  display:flex; align-items:center; justify-content:center; box-shadow:var(--shadow);
}
.hero-mark img{width:46%; opacity:.96}
.hero-mark::after{
  content:""; position:absolute; inset:14px; border:1.5px solid rgba(255,255,255,.28); border-radius:24px;
}
.blob{position:absolute; border-radius:50%; filter:blur(2px); opacity:.5}
.blob-a{width:340px; height:340px; background:var(--blue-100); top:-120px; right:-100px}
.blob-b{width:220px; height:220px; background:#fff; border:1px solid var(--line); bottom:-90px; left:38%}
@media (max-width:860px){
  .hero-grid{grid-template-columns:1fr}
  .hero-mark{max-width:280px; margin:0 auto}
}

/* trust strip */
.trust-strip{border-top:1px solid var(--line); border-bottom:1px solid var(--line); background:#fff}
.trust-strip .wrap{display:flex; flex-wrap:wrap; gap:28px 44px; padding:26px 24px; justify-content:center}
.trust-item{display:flex; align-items:baseline; gap:8px; font-size:13.5px; color:var(--sub)}
.trust-item b{color:var(--ink); font-size:15px}

/* ---------- business cards ---------- */
.biz-grid{display:grid; grid-template-columns:1fr 1fr; gap:28px}
@media (max-width:820px){ .biz-grid{grid-template-columns:1fr} }
.biz-card{
  background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:34px 32px;
  display:flex; flex-direction:column; gap:16px; transition:.2s; position:relative; overflow:hidden;
}
.biz-card:hover{box-shadow:var(--shadow); transform:translateY(-3px)}
.biz-card .tag{
  align-self:flex-start; font-size:11.5px; font-weight:800; letter-spacing:.08em; color:var(--blue-700);
  background:var(--blue-50); border:1px solid var(--blue-100); padding:5px 12px; border-radius:999px;
}
.icon-badge{
  width:56px; height:56px; border-radius:16px; background:var(--blue-50); border:1px solid var(--blue-100);
  display:flex; align-items:center; justify-content:center;
}
.icon-badge svg{width:28px; height:28px; stroke:var(--blue-600)}
.biz-card h3{font-size:20px; font-weight:800}
.biz-card p{color:var(--sub); font-size:14.5px; margin:0}
.biz-stat{
  display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; background:var(--blue-50); border-radius:10px; padding:12px 16px; margin-top:4px;
}
.biz-stat b{font-size:22px; color:var(--blue-700); font-weight:800; white-space:nowrap}
.biz-stat span{font-size:12.5px; color:var(--sub)}
@media (max-width:480px){
  .biz-stat{flex-direction:column; align-items:flex-start; gap:4px}
}
.biz-card .more{margin-top:auto; font-weight:800; font-size:13.5px; color:var(--blue-600); display:inline-flex; align-items:center; gap:6px}
.biz-card .more svg{width:15px; height:15px}

/* ---------- values strip ---------- */
.value-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:26px}
@media (max-width:820px){ .value-grid{grid-template-columns:1fr} }
.value-card{padding:28px 8px}
.value-num{font-size:13px; font-weight:800; color:var(--blue-500); letter-spacing:.1em}
.value-card h4{font-size:17.5px; font-weight:800; margin:10px 0 10px}
.value-card p{color:var(--sub); font-size:14px; margin:0}

/* ---------- philosophy teaser ---------- */
.philo{
  background:linear-gradient(160deg,var(--blue-900),var(--blue-700)); color:#fff; border-radius:28px; overflow:hidden; position:relative;
}
.philo .wrap{padding:64px 24px; position:relative; z-index:2}
.philo .eyebrow{color:#bcd4ff}
.philo .eyebrow::before{background:#bcd4ff}
.philo blockquote{font-size:clamp(20px,2.6vw,28px); font-weight:800; line-height:1.7; margin:0 0 18px; max-width:760px}
.philo p{color:#dbe6fb; font-size:14.5px; max-width:640px; margin:0 0 26px}
.philo a{color:#fff; font-weight:800; font-size:14px; display:inline-flex; align-items:center; gap:6px; border-bottom:1.5px solid rgba(255,255,255,.5); padding-bottom:2px}

/* ---------- CTA band ---------- */
.cta-band{background:var(--blue-50); border-radius:28px; text-align:center; padding:64px 24px}
.cta-band h2{font-size:clamp(22px,3vw,30px); font-weight:800; margin-bottom:14px}
.cta-band p{color:var(--sub); margin:0 0 30px}
.cta-band .btn-row{justify-content:center}

/* ---------- footer ---------- */
footer.site{background:var(--blue-900); color:#cfe0ff; padding:56px 0 26px; margin-top:40px}
.foot-grid{display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:40px; padding-bottom:36px; border-bottom:1px solid rgba(255,255,255,.12)}
@media (max-width:760px){ .foot-grid{grid-template-columns:1fr; gap:28px} }
.foot-brand{display:flex; align-items:center; gap:10px; font-weight:800; color:#fff; font-size:16px; margin-bottom:14px}
.foot-brand img{height:26px}
footer.site p{color:#9fb6de; font-size:13.5px; margin:0 0 6px}
footer.site h5{color:#fff; font-size:13px; letter-spacing:.06em; margin:0 0 14px}
footer.site ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px}
footer.site a{color:#cfe0ff; font-size:13.5px}
footer.site a:hover{color:#fff}
.foot-bottom{display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; padding-top:22px; font-size:12.5px; color:#7f97c2}

/* ---------- about page ---------- */
.page-hero{padding:64px 0 20px; text-align:center}
.page-hero .eyebrow{justify-content:center}
.page-hero h1{font-size:clamp(28px,4vw,42px); font-weight:800; color:var(--blue-900)}
.page-hero p{color:var(--sub); max-width:560px; margin:18px auto 0}

.philo-block{max-width:840px; margin:0 auto}
.philo-item{padding:30px 0; border-top:1px solid var(--line)}
.philo-item:first-child{border-top:none}
.philo-kicker{display:flex; align-items:center; gap:10px; margin-bottom:10px}
.philo-kicker .en{font-size:12px; font-weight:800; color:var(--blue-600); letter-spacing:.12em}
.philo-item h3{font-size:19px; font-weight:800; margin-bottom:10px}
.philo-item .quote{color:var(--blue-700); font-weight:700; font-size:15px; margin-bottom:8px}
.philo-item p{color:var(--sub); font-size:14.5px; margin:0}
.value-list{display:grid; gap:22px; margin-top:6px}
.value-list .vi{display:flex; gap:16px; align-items:flex-start}
.value-list .vi .n{
  flex:none; width:34px; height:34px; border-radius:10px; background:var(--blue-50); color:var(--blue-700);
  font-weight:800; font-size:14px; display:flex; align-items:center; justify-content:center;
}

/* company table */
.info-table{width:100%; border-collapse:collapse; background:#fff; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden}
.info-table tr{border-top:1px solid var(--line)}
.info-table tr:first-child{border-top:none}
.info-table th,.info-table td{text-align:left; padding:18px 22px; font-size:14.5px; vertical-align:top}
.info-table th{width:180px; color:var(--sub); font-weight:700; background:var(--blue-50)}
.info-table td{color:var(--ink)}
@media (max-width:640px){
  .info-table, .info-table tbody, .info-table tr, .info-table th, .info-table td{display:block; width:100%}
  .info-table th{padding-bottom:4px}
  .info-table td{padding-top:4px; padding-bottom:20px}
}

/* business detail sections */
.biz-detail{border-top:1px solid var(--line); padding-top:72px}
.biz-detail:first-of-type{border-top:none}
.biz-head{display:flex; align-items:center; gap:16px; margin-bottom:26px}
.biz-head .icon-badge{width:52px; height:52px}
.biz-head h2{font-size:24px; font-weight:800}
.biz-head .sub{color:var(--sub); font-size:13.5px}

.stat-row{display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin:26px 0}
@media (max-width:720px){ .stat-row{grid-template-columns:1fr} }
.stat-card{background:#fff; border:1px solid var(--line); border-radius:14px; padding:22px}
.stat-card .big{font-size:26px; font-weight:800; color:var(--blue-700)}
.stat-card .cap{font-size:13px; color:var(--sub); margin-top:6px}

.target-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin:22px 0 30px}
@media (max-width:720px){ .target-grid{grid-template-columns:1fr} }
.target-card{background:var(--blue-50); border:1px solid var(--blue-100); border-radius:14px; padding:20px}
.target-card svg{width:22px; height:22px; stroke:var(--blue-600); margin-bottom:10px}
.target-card p{margin:0; font-size:13.5px; color:var(--ink); font-weight:600; line-height:1.7}

.sim-table-wrap{overflow-x:auto; -webkit-overflow-scrolling:touch; margin:22px 0 8px; border-radius:10px}
.sim-table{width:100%; min-width:620px; border-collapse:collapse; margin:0; font-size:14px}
.sim-table th,.sim-table td{padding:14px 14px; border-bottom:1px solid var(--line); text-align:center; white-space:nowrap}
.sim-table thead th{background:var(--blue-700); color:#fff; font-weight:700; font-size:13px}
.sim-table tbody th{text-align:left; color:var(--sub); font-weight:700; background:#fafcff}
.sim-table tr.highlight td, .sim-table tr.highlight th{background:#fff3e0; font-weight:800; color:#a1590c}
.note{font-size:12.5px; color:var(--sub); margin-top:8px}

.maker-block{margin-top:34px}
.maker-block h4{font-size:14px; font-weight:800; margin-bottom:14px; color:var(--sub); letter-spacing:.04em}
.maker-grid{display:flex; flex-wrap:wrap; gap:10px}
.maker-chip{
  border:1px solid var(--line); background:#fff; border-radius:10px; padding:10px 16px; font-size:13px; font-weight:700; color:var(--ink);
}

.flow-steps{display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin:26px 0}
@media (max-width:720px){ .flow-steps{grid-template-columns:1fr} }
.flow-step{background:#fff; border:1px solid var(--line); border-radius:14px; padding:22px; position:relative}
.flow-step .fn{
  width:30px; height:30px; border-radius:50%; background:var(--blue-600); color:#fff; font-weight:800; font-size:13.5px;
  display:flex; align-items:center; justify-content:center; margin-bottom:12px;
}
.flow-step h4{font-size:14.5px; font-weight:800; margin-bottom:6px}
.flow-step p{font-size:13px; color:var(--sub); margin:0}
.flow-arrow{display:none}
@media (min-width:721px){
  .flow-steps{align-items:stretch}
}

.strength-list{display:grid; gap:14px; margin:22px 0 30px}
.strength-item{display:flex; gap:14px; align-items:flex-start; background:#fff; border:1px solid var(--line); border-radius:12px; padding:16px 18px}
.strength-item svg{flex:none; width:20px; height:20px; stroke:var(--blue-600); margin-top:2px}
.strength-item p{margin:0; font-size:14px}
.strength-item b{display:block; font-size:14.5px; margin-bottom:2px}

/* representatives */
.rep-grid{display:grid; grid-template-columns:1fr 1fr; gap:26px}
@media (max-width:720px){ .rep-grid{grid-template-columns:1fr} }
.rep-card{background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:28px; text-align:center}
.rep-avatar{
  width:96px; height:96px; border-radius:50%; margin:0 auto 18px; background:var(--blue-50); border:1px solid var(--blue-100);
  display:flex; align-items:center; justify-content:center;
}
.rep-avatar svg{width:44px; height:44px; stroke:var(--blue-500)}
.rep-role{font-size:12px; font-weight:800; color:var(--blue-600); letter-spacing:.08em; margin-bottom:6px}
.rep-name{font-size:18px; font-weight:800}
.rep-note{font-size:12.5px; color:var(--sub); margin-top:10px; background:var(--blue-50); border-radius:8px; padding:8px 12px; display:inline-block}

/* access */
.access-grid{display:grid; grid-template-columns:1fr 1.2fr; gap:28px; align-items:stretch}
@media (max-width:820px){ .access-grid{grid-template-columns:1fr} }
.access-card{background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:28px}
.access-card dl{margin:18px 0 0}
.access-card dt{font-size:12px; color:var(--sub); font-weight:700; margin-top:14px}
.access-card dd{margin:4px 0 0; font-size:15px; font-weight:700}
.map-frame{border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; min-height:260px}
.map-frame iframe{width:100%; height:100%; min-height:260px; border:0; display:block}

/* generic reveal */
.pill{display:inline-block; font-size:11.5px; font-weight:800; letter-spacing:.06em; color:var(--blue-700); background:var(--blue-100); border-radius:999px; padding:4px 12px}
