:root{
  --navy:#163a5f;
  --navy-deep:#0f2942;
  --ink:#1c1c1c;
  --ink-sub:#5a5f66;
  --line:#dcdee1;
  --paper:#faf8f5;
  --gray:#f2f3f4;
  --white:#fff;
  --wrap:1120px;
  --wrap-narrow:760px;
}
*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  font-family:"Hiragino Kaku Gothic ProN","Noto Sans JP","Noto Sans CJK JP","Yu Gothic",Meiryo,system-ui,sans-serif;
  font-size:16px;
  line-height:1.9;
  color:var(--ink);
  background:var(--white);
  font-feature-settings:"palt";
}
img{max-width:100%;height:auto;display:block;}
a{color:var(--navy);}
.mincho{font-family:"Noto Serif JP","Noto Serif CJK JP","Hiragino Mincho ProN","Yu Mincho",serif;font-weight:600;}

.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 24px;}
.wrap-narrow{width:100%;max-width:var(--wrap-narrow);margin:0 auto;padding:0 24px;}

/* ---------- header ---------- */
.header{border-bottom:1px solid var(--line);background:var(--white);position:sticky;top:0;z-index:50;}
.header-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:68px;}
.logo{display:flex;flex-direction:column;line-height:1.3;text-decoration:none;color:var(--ink);}
.logo b{font-size:17px;letter-spacing:.04em;font-weight:700;}
.logo span{font-size:11px;color:var(--ink-sub);letter-spacing:.08em;}
.gnav{display:none;}
.gnav ul{display:flex;gap:26px;list-style:none;margin:0;padding:0;}
.gnav a{text-decoration:none;color:var(--ink);font-size:14.5px;padding:6px 0;border-bottom:2px solid transparent;}
.gnav a:hover,.gnav a:focus-visible{border-bottom-color:var(--navy);}
.gnav .nav-cta{background:var(--navy);color:#fff;padding:9px 18px;border-radius:2px;border-bottom:none;}
.gnav .nav-cta:hover{background:var(--navy-deep);border-bottom-color:transparent;}
.navtoggle{background:none;border:1px solid var(--line);border-radius:2px;padding:8px 12px;font-size:13px;cursor:pointer;color:var(--ink);}
@media(min-width:900px){
  .gnav{display:block;}
  .navtoggle{display:none;}
  .header-inner{min-height:80px;}
}
@media(max-width:899px){
  .gnav.open{display:block;position:absolute;left:0;right:0;top:100%;background:var(--white);border-bottom:1px solid var(--line);box-shadow:0 10px 22px rgba(0,0,0,.07);}
  .gnav.open ul{flex-direction:column;gap:0;padding:4px 24px 20px;}
  .gnav.open a{display:block;padding:15px 0;border-bottom:1px solid var(--line);font-size:15.5px;}
  .gnav.open .nav-cta{margin-top:16px;text-align:center;border-bottom:none;border-radius:2px;}
}

/* ---------- hero ---------- */
.hero{background:var(--paper);border-bottom:1px solid var(--line);padding:52px 0 56px;}
.hero h1{
  margin:0 0 26px;
  font-size:20.5px;
  line-height:1.75;
  letter-spacing:0;
  font-weight:600;
  letter-spacing:.01em;
}
.hero h1 .l1,.hero h1 .l2{display:block;}
.hero h1 .l2{margin-top:.15em;}
.hero p{margin:0 0 18px;color:#33383e;max-width:34em;}
.hero .btns{display:flex;flex-direction:column;gap:10px;margin-top:30px;}
.btn{
  display:inline-flex;align-items:center;justify-content:space-between;gap:10px;
  text-decoration:none;font-size:15px;padding:15px 20px;border-radius:2px;
  border:1px solid var(--navy);color:var(--navy);background:#fff;
}
.btn::after{content:"→";font-size:14px;}
.btn-main{background:var(--navy);color:#fff;}
.btn:hover{background:var(--navy);color:#fff;}
.btn-main:hover{background:var(--navy-deep);}
@media(min-width:768px){
  .hero{padding:76px 0 80px;}
  .hero h1{font-size:33px;max-width:22em;}
  .hero .btns{flex-direction:row;flex-wrap:wrap;}
  .btn{flex:1 1 200px;max-width:300px;}
}
@media(min-width:1100px){
  .hero h1{font-size:40px;line-height:1.62;max-width:24em;}
}

/* ---------- facts ---------- */
.facts{border-bottom:1px solid var(--line);}
.facts ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;}
.facts li{padding:26px 24px;border-bottom:1px solid var(--line);text-align:center;}
.facts li:last-child{border-bottom:none;}
.facts .num{display:block;font-size:34px;line-height:1.2;color:var(--navy);letter-spacing:.02em;}
.facts .num small{font-size:16px;margin-left:2px;}
.facts .num-tbd{color:#9aa1a8;letter-spacing:-.05em;}
.facts .label{display:block;font-size:13.5px;color:var(--ink-sub);margin-top:8px;}
@media(min-width:768px){
  .facts ul{grid-template-columns:repeat(2,1fr);max-width:840px;margin:0 auto;}
  .facts li{border-bottom:none;border-right:1px solid var(--line);padding:38px 20px;}
  .facts li:last-child{border-right:none;}
  .facts .num{font-size:40px;}
}

/* ---------- section base ---------- */
.section{padding:60px 0;}
.section+.section{border-top:1px solid var(--line);}
.section-paper{background:var(--paper);border-top:1px solid var(--line);}
.eyebrow{font-size:12.5px;letter-spacing:.16em;color:var(--navy);margin:0 0 14px;font-weight:600;}
.section h2{
  font-size:23px;line-height:1.6;margin:0 0 22px;font-weight:600;letter-spacing:.01em;
}
.section p{margin:0 0 18px;}
.lead-strong{font-weight:600;}
@media(min-width:768px){
  .section{padding:84px 0;}
  .section h2{font-size:30px;margin-bottom:28px;}
}

/* ---------- product section ---------- */
.product-grid{display:grid;gap:28px;grid-template-columns:1fr;}
@media(min-width:900px){
  .product-grid{grid-template-columns:1.05fr .95fr;gap:52px;align-items:start;}
}
.ph{
  background:var(--gray);border:1px dashed #b9bec4;border-radius:2px;
  display:flex;align-items:center;justify-content:center;text-align:center;
  color:#7c838b;font-size:12.5px;line-height:1.7;padding:20px;
}
.photos{display:grid;gap:22px;grid-template-columns:1fr;}
.photos figure{margin:0;}
.photos img{width:100%;background:#fff;border:1px solid var(--line);}
.photos figcaption{font-size:12.5px;color:#7c838b;margin-top:8px;}
@media(min-width:560px){.photos{grid-template-columns:1fr 1fr;align-items:start;}}
@media(min-width:900px){.photos{grid-template-columns:1fr;max-width:320px;margin-left:auto;}}

.ph-photo{aspect-ratio:3/2;}

.mapfig{margin:0;}
.mapzoom{display:block;width:100%;max-width:980px;margin:0 auto;padding:0;border:1px solid var(--line);background:#fff;cursor:zoom-in;position:relative;}
.mapzoom img{width:100%;height:auto;display:block;}
.mapzoom-hint{position:absolute;right:10px;bottom:10px;background:rgba(22,58,95,.9);color:#fff;font-size:12px;padding:5px 11px;border-radius:2px;}

.lightbox{position:fixed;inset:0;background:#101a24;z-index:200;display:none;overflow:auto;-webkit-overflow-scrolling:touch;}
.lightbox.open{display:block;}
.lightbox img{display:block;max-width:none;width:1449px;margin:56px auto 40px;}
.lightbox .close{position:fixed;top:12px;right:12px;background:#fff;color:var(--ink);border:none;border-radius:2px;padding:10px 16px;font-size:14px;cursor:pointer;z-index:201;}
.lightbox .lbhint{position:fixed;top:18px;left:16px;color:#cdd6df;font-size:12.5px;}
.note{font-size:13px;color:var(--ink-sub);margin:12px 0 0;}
.textlink{display:inline-flex;align-items:center;gap:8px;text-decoration:none;font-size:15.5px;font-weight:600;color:var(--navy);border-bottom:1px solid var(--navy);padding-bottom:3px;}
.textlink::after{content:"→";}
.textlink:hover{color:var(--navy-deep);}

/* ---------- map section ---------- */
.map-head{text-align:center;max-width:44em;margin:0 auto 34px;}
.map-head h2{margin-bottom:14px;}
.map-foot{text-align:center;margin-top:24px;}

/* ---------- two column cards ---------- */
.duo{display:grid;gap:0;grid-template-columns:1fr;}
.duo>div{padding:40px 0;}
.duo>div+div{border-top:1px solid var(--line);}
@media(min-width:900px){
  .duo{grid-template-columns:1fr 1fr;gap:64px;}
  .duo>div{padding:0;}
  .duo>div+div{border-top:none;}
}
.duo h2{font-size:21px;}
@media(min-width:768px){.duo h2{font-size:24px;}}

/* ---------- news ---------- */
.news-head{display:flex;align-items:baseline;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:8px;}
.news-head h2{margin-bottom:0;}
.newslist{list-style:none;margin:22px 0 0;padding:0;border-top:1px solid var(--line);}
.newslist li{border-bottom:1px solid var(--line);}
.newslist a{display:flex;flex-direction:column;gap:4px;padding:20px 4px;text-decoration:none;color:var(--ink);}
.newslist a:hover{background:var(--paper);}
.newslist time{font-size:13px;color:var(--ink-sub);letter-spacing:.04em;}
.newslist .ttl{font-size:15.5px;line-height:1.7;}
@media(min-width:768px){
  .newslist a{flex-direction:row;align-items:baseline;gap:28px;padding:22px 8px;}
  .newslist time{flex:0 0 96px;}
}

/* ---------- contact band ---------- */
.band{background:var(--navy);color:#fff;padding:56px 0;}
.band h2{color:#fff;font-size:22px;margin:0 0 14px;font-weight:600;line-height:1.6;}
.band p{color:#d6e0ea;margin:0 0 26px;}
.band .btns{display:flex;flex-direction:column;gap:12px;}
.band .btn{background:#fff;border-color:#fff;color:var(--navy);}
.band .btn:hover{background:#e9eff5;color:var(--navy-deep);}
.band .tel{font-size:15px;color:#fff;}
.band .tel b{font-size:26px;letter-spacing:.03em;display:block;}
.band .tel a,.footer address a{color:inherit;text-decoration:none;}
.band .telnote{display:block;font-size:13px;color:#c3d1de;}
@media(min-width:768px){.band .tel b{display:inline;}.band .telnote{display:inline;margin-left:8px;}}
@media(min-width:768px){
  .band{padding:72px 0;}
  .band h2{font-size:27px;}
  .band .btns{flex-direction:row;align-items:center;gap:24px;flex-wrap:wrap;}
}

/* ---------- footer ---------- */
.footer{background:var(--white);border-top:1px solid var(--line);padding:48px 0 28px;font-size:14px;}
.footer-grid{display:grid;gap:28px;grid-template-columns:1fr;}
@media(min-width:900px){.footer-grid{grid-template-columns:1.2fr 1fr 1fr;gap:40px;}}
.footer b.fname{font-size:16.5px;display:block;margin-bottom:8px;}
.footer address{font-style:normal;color:var(--ink-sub);line-height:1.9;}
.footer ul{list-style:none;margin:0;padding:0;}
.footer ul li{margin-bottom:9px;}
.footer ul a{text-decoration:none;color:var(--ink);}
.footer ul a:hover{text-decoration:underline;}
.footer .badge{font-size:13px;color:var(--ink-sub);line-height:2;}
.copyright{margin-top:36px;padding-top:18px;border-top:1px solid var(--line);font-size:12.5px;color:var(--ink-sub);}

/* ---------- mock annotation ---------- */
.mockbar{background:#3a3f45;color:#fff;font-size:12.5px;padding:9px 16px;text-align:center;line-height:1.7;}
.mockbar b{color:#ffd97a;}
.brpc{display:none;}
.brsp{display:inline;}
@media(min-width:768px){.brsp{display:none;}}
@media(min-width:768px){.brpc{display:inline;}}
:focus-visible{outline:2px solid var(--navy);outline-offset:2px;}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;}}

/* ---------- 下層ページ共通 ---------- */
.pagehead{background:var(--paper);border-bottom:1px solid var(--line);padding:32px 0 34px;}
.breadcrumb{font-size:12.5px;color:var(--ink-sub);margin:0 0 14px;}
.breadcrumb a{color:var(--ink-sub);text-decoration:none;}
.breadcrumb a:hover,.breadcrumb a:focus-visible{text-decoration:underline;}
.pagehead h1{font-size:25px;margin:0;font-weight:700;letter-spacing:.02em;line-height:1.5;}
.pagehead .en{display:block;font-size:12px;letter-spacing:.16em;color:var(--navy);font-weight:600;margin-bottom:8px;}
.pagehead .lead{margin:14px 0 0;color:#33383e;max-width:34em;}
@media(min-width:768px){
  .pagehead{padding:46px 0 50px;}
  .pagehead h1{font-size:33px;}
}

/* 経営理念 */
.credo{list-style:none;margin:0;padding:0;}
.credo li{
  font-size:17px;line-height:1.85;font-weight:600;
  padding:16px 0 16px 22px;border-left:3px solid var(--navy);
  background:var(--paper);margin-bottom:12px;
}
@media(min-width:768px){.credo li{font-size:19px;padding:20px 0 20px 28px;}}

/* 方針 */
.policy{max-width:44em;}
.policy h3{font-size:16.5px;margin:0 0 12px;font-weight:700;}
.policy ul{margin:0 0 20px;padding-left:1.3em;}
.policy li{margin-bottom:9px;}
.policy .sub{margin:6px 0 0;padding-left:1.3em;list-style:none;color:var(--ink-sub);font-size:15px;}

/* 会社概要 */
.deflist{margin:0;border-top:1px solid var(--line);}
.deflist dt{font-weight:700;font-size:14.5px;padding:16px 0 2px;}
.deflist dd{margin:0;padding:0 0 16px;border-bottom:1px solid var(--line);}
.deflist dd ul{margin:0;padding-left:1.3em;}
.deflist dd li{margin-bottom:4px;}
@media(min-width:640px){
  .deflist{display:grid;grid-template-columns:180px 1fr;}
  .deflist dt{padding:18px 4px 18px 0;border-bottom:1px solid var(--line);}
  .deflist dd{padding:18px 0;}
}

/* 適合宣言 */
.certfig{margin:0 0 18px;}
.certfig img{width:100%;max-width:300px;border:1px solid var(--line);}

/* アクセス */
.mapembed{position:relative;padding-top:66%;border:1px solid var(--line);background:var(--gray);margin:0 0 14px;}
.mapembed iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
@media(min-width:768px){.mapembed{padding-top:42%;}}
