@charset "UTF-8";
:root { color-scheme:light; --ink:#16333f; --body:#35474e; --blue:#234d5c; --line:#d9d9d1; --pale:#edf1ee; --sand:#eeece3; --paper:#faf9f5; --serif:"Yu Mincho","Hiragino Mincho ProN","Noto Serif JP",serif; --gold:#a88d61; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:128px; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:"Noto Sans JP","Yu Gothic",Meiryo,sans-serif; font-size:18px; line-height:1.9; -webkit-text-size-adjust:100%; }
a { color:inherit; text-decoration:none; }
button { font:inherit; cursor:pointer; }
svg { display:block; }
p { margin:0; color:var(--body); }
h1,h2,h3 { overflow-wrap:anywhere; }
a,button { -webkit-tap-highlight-color:transparent; }
a:focus-visible,button:focus-visible { outline:3px solid #a35c2b; outline-offset:5px; }
main:focus { outline:none; }
.wrap { width:min(1120px,calc(100% - 96px)); margin-inline:auto; }
.skip { position:fixed; top:-100px; left:24px; z-index:100; background:#fff; padding:12px 20px; border:2px solid var(--blue); }
.skip:focus { top:12px; }

/* Shared navigation. Without JavaScript, all links remain available. */
header { position:sticky; top:0; z-index:40; background:var(--paper); border-bottom:1px solid var(--line); }
.header-inner { min-height:102px; display:flex; justify-content:space-between; align-items:center; gap:28px; }
.brand { display:flex; align-items:center; gap:12px; flex-shrink:0; }
.mark { width:46px; height:46px; flex-shrink:0; }
.brand strong { display:block; font-size:22px; line-height:1.6; letter-spacing:.055em; white-space:nowrap; }
.brand small { display:block; color:#48616d; font-size:10px; line-height:1.6; letter-spacing:.15em; }
.nav { display:flex; align-items:center; gap:26px; }
.nav a { position:relative; display:flex; align-items:center; min-height:48px; font-size:16px; font-weight:600; white-space:nowrap; }
.nav a::after { position:absolute; content:""; left:0; right:0; bottom:0; height:2px; background:var(--blue); transform:scaleX(0); transition:transform .18s ease; }
.nav a:hover,.nav a[aria-current="page"] { color:var(--blue); }
.nav a:hover::after,.nav a[aria-current="page"]::after { transform:scaleX(1); }
.nav a[href="contact.html"] { background:var(--ink); color:#fff; padding:0 20px; border-radius:0; }
.nav a[href="contact.html"]:hover { background:#16465d; }
.nav a[href="contact.html"]::after { display:none; }
.nav a[href="contact.html"][aria-current="page"] { box-shadow:0 0 0 3px #fff,0 0 0 4px var(--blue); }
.menu { display:none; }

/* Editorial ocean image; the copy is kept separate and fully selectable. */
.hero { position:relative; overflow:hidden; margin:20px 24px 0; background:#0b2636; isolation:isolate; }
.hero::before { content:""; position:absolute; z-index:-1; inset:0; background:linear-gradient(90deg,rgba(5,25,38,.76),rgba(5,25,38,.46) 56%,rgba(5,25,38,.12)); }
.hero-photo { position:absolute; z-index:-2; inset:0; width:100%; height:100%; object-fit:cover; object-position:center; }
.hero .wrap { position:relative; z-index:1; min-height:640px; display:flex; align-items:center; }
.hero-copy { max-width:720px; padding:84px 0 92px; }
.eyebrow { color:var(--blue); margin:0 0 18px; font-size:13px; font-weight:700; letter-spacing:.14em; }
.hero .eyebrow { color:#e3e8e4; font-weight:500; letter-spacing:.18em; }
.hero .eyebrow::before { content:""; display:inline-block; vertical-align:middle; width:30px; height:1px; margin-right:14px; background:#bea87d; }
h1 { margin:0 0 26px; color:var(--ink); font-size:clamp(42px,4.6vw,64px); font-weight:700; line-height:1.5; letter-spacing:.035em; }
.hero h1 { color:#fff; font-family:var(--serif); font-size:clamp(44px,4.7vw,68px); font-weight:600; line-height:1.65; letter-spacing:.07em; margin-bottom:28px; }
.hero p:not(.eyebrow) { max-width:540px; color:#eef2f0; font-size:19px; line-height:2.1; }
.hero .solid-link { color:#fff; background:transparent; border-color:#b4c0c1; min-width:224px; font-weight:500; }
.hero .solid-link:hover { color:var(--ink); background:#f4f2e9; border-color:#f4f2e9; }
.hero .text-link { color:#fff; border-bottom-color:#94a4a9; font-weight:500; }
.hero-actions { display:flex; flex-wrap:wrap; align-items:center; gap:18px 28px; margin-top:32px; }
.solid-link { display:inline-flex; align-items:center; justify-content:center; gap:30px; min-height:56px; padding:14px 26px; border:1px solid var(--ink); border-radius:0; color:#fff; background:var(--ink); font-size:17px; font-weight:600; line-height:1.7; transition:background .18s ease; }
.solid-link:hover { background:#16465d; border-color:#16465d; }
.text-link { display:inline-flex; align-items:center; gap:24px; min-height:48px; color:var(--blue); font-size:17px; font-weight:700; border-bottom:1px solid #8caeb8; }
.text-link:hover { border-color:var(--blue); }
.home-intro { padding-top:96px; }
.home-intro .eyebrow { margin-bottom:8px; }
.home-intro h2 { margin:0; font-family:var(--serif); font-weight:600; font-size:34px; line-height:1.7; letter-spacing:.04em; }
.home-links { padding:36px 0 92px; display:grid; grid-template-columns:1fr 1fr; gap:56px; }
.feature-link { display:grid; grid-template-columns:1fr auto; align-items:center; gap:22px; padding:36px 0 12px; background:transparent; border-top:1px solid #8eaaa9; border-radius:0; }
.feature-link:nth-child(2) { background:transparent; border-top-color:#b9ab90; }
.feature-link small { color:var(--blue); font-size:12px; font-weight:700; letter-spacing:.16em; }
.feature-link:nth-child(2) small { color:#80502f; }
.feature-link h2 { margin:12px 0 14px; font-family:var(--serif); font-size:31px; font-weight:600; line-height:1.5; letter-spacing:.04em; }
.feature-link p { font-size:17px; }
.arrow { display:grid; place-items:center; width:46px; height:46px; border:0; border-radius:0; background:transparent; font-size:28px; font-weight:400; transition:transform .18s ease; }
.feature-link:nth-child(2) .arrow { color:#88714f; }
.feature-link:hover .arrow { background:transparent; transform:translateX(5px); }
.contact-band { background:#eeece3; border-top:1px solid #dfddd1; }
.contact-band .wrap { display:flex; align-items:center; justify-content:space-between; gap:36px; padding-block:60px; }
.contact-band .eyebrow { margin-bottom:6px; color:#49664e; }
.contact-band h2 { margin:0 0 12px; font-family:var(--serif); font-size:32px; font-weight:600; line-height:1.6; }
.contact-band p:not(.eyebrow) { font-size:17px; }
.contact-band .solid-link { flex-shrink:0; }

/* Interior pages keep their individual colours and a shared reading rhythm. */
.crumbs { padding:26px 0; color:#50636e; font-size:14px; }
.crumbs a { text-decoration:underline; text-underline-offset:4px; }
.crumbs span { margin:0 13px; color:#6e838d; }
.page-head { padding:36px 0 44px; border-bottom:1px solid var(--line); border-radius:0; background:transparent; }
.page-head .eyebrow { margin-bottom:5px; }
.page-head h1 { margin:0; font-family:var(--serif); font-size:clamp(36px,4vw,50px); font-weight:600; line-height:1.7; letter-spacing:.05em; }
body[data-page="company"] .page-head { border-bottom-color:#c5baa3; }
body[data-page="company"] .page-head .eyebrow { color:#80502f; }
body[data-page="products"] .page-head { border-bottom-color:#aabca8; }
body[data-page="products"] .page-head .eyebrow { color:#46633f; }
body[data-page="contact"] .page-head { border-bottom-color:#bc9d8d; }
.page-content { max-width:900px; margin-inline:auto; padding:64px 0 104px; }
.intro { margin-bottom:36px; font-size:22px; line-height:1.9; }
.section-heading { margin:0 0 28px; padding-left:16px; border-left:2px solid #9d8b67; font-size:27px; line-height:1.6; font-weight:600; }
.route { display:flex; align-items:center; justify-content:center; gap:58px; padding:34px 20px; background:#f0f2ed; border-block:1px solid var(--line); border-radius:0; font-size:30px; font-weight:600; }
.route>div:first-child { color:#80502f; }
.route small { display:block; color:#4f6570; font-size:12px; letter-spacing:.16em; text-align:center; }
.route-arrow { color:var(--blue); font-size:38px; }
.trade { display:grid; grid-template-columns:1fr 1fr; gap:40px; margin:40px 0 52px; padding:12px 0; background:transparent; border-radius:0; }
.trade h3 { margin:0 0 10px; font-size:23px; }
.trade>div+div { padding-left:34px; border-left:1px solid #cfc3b1; }
.trade>div+div h3 { color:#80502f; }
.service-section { margin-top:42px; padding:32px 0 0; border-top:1px solid var(--line); }
.service-section .solid-link { margin-top:24px; }
.related-links { display:flex; flex-wrap:wrap; gap:16px 32px; margin-top:38px; }
.back-link { display:inline-flex; align-items:center; min-height:44px; margin-top:36px; color:var(--blue); font-size:17px; text-decoration:underline; text-underline-offset:6px; }
.related-links .back-link { margin-top:0; }
.product-list { display:grid; gap:0; border-bottom:1px solid var(--line); }
.product-item { display:grid; grid-template-columns:72px 1fr; align-items:start; gap:28px; padding:36px 8px; border-top:1px solid var(--line); border-radius:0; background:transparent; }
.product-item:nth-child(2),.product-item:nth-child(3),.product-item:nth-child(4) { background:transparent; }
.product-number { padding-top:2px; color:#49664e; font-size:24px; line-height:1.6; letter-spacing:.05em; }
.product-item:nth-child(2) .product-number { color:#376884; }
.product-item:nth-child(3) .product-number { color:#876622; }
.product-item:nth-child(4) .product-number { color:#8a5237; }
.product-item h2 { margin:0 0 10px; font-size:25px; line-height:1.6; }
.product-item p { font-size:18px; }
.inquiry { margin-top:48px; padding:36px; border-radius:0; background:var(--sand); }
.inquiry .solid-link { margin-top:20px; }
dl { margin:0; }
.company-row { display:grid; grid-template-columns:164px 1fr; gap:26px; padding:28px 12px; border-bottom:1px solid var(--line); }
.company-row:first-child { border-top:1px solid #9da8a4; }
.company-row:nth-child(odd) { background:transparent; }
dt { font-weight:700; }
dd { margin:0; color:var(--body); overflow-wrap:anywhere; }
.map-link { display:inline-flex; align-items:center; min-height:44px; margin-top:5px; color:var(--blue); font-size:16px; text-decoration:underline; text-underline-offset:4px; }
.message { margin-top:48px; }
.message p { line-height:2; }
.message .signature { margin-top:22px; font-size:17px; text-align:right; }
.contact-block { padding:30px 0; border-top:1px solid var(--line); }
.contact-block h2 { margin:0 0 14px; font-size:23px; line-height:1.6; }
.contact-block p { margin-top:10px; }
.phone { display:inline-block; padding:3px 0; color:var(--blue); font-size:clamp(28px,3.5vw,38px); font-weight:700; letter-spacing:.025em; line-height:1.7; }
.mail { display:inline-block; padding:6px 0; color:var(--blue); font-size:clamp(20px,2.6vw,26px); text-decoration:underline; text-underline-offset:6px; overflow-wrap:anywhere; }
.phone:hover,.mail:hover { color:#16465d; }
.policy-note { margin-top:24px; font-size:16px; }
.policy-note a,.policy a { color:var(--blue); text-decoration:underline; text-underline-offset:4px; }
.policy { overflow-wrap:anywhere; }
.policy section { margin-top:34px; padding-top:28px; border-top:1px solid var(--line); }
.policy h2 { margin:0 0 22px; font-size:24px; line-height:1.6; }
.policy p { margin-bottom:18px; line-height:2; }
footer { padding:58px 0 28px; color:#fff; background:#122e3b; border-top:1px solid #a99572; }
.foot-top { display:flex; align-items:flex-start; justify-content:space-between; gap:32px; }
.foot-brand { font-size:20px; font-weight:700; white-space:nowrap; }
.foot-nav { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:8px 24px; max-width:680px; color:#eef4f6; font-size:15px; }
.foot-nav a { display:inline-flex; align-items:center; min-height:36px; }
.foot-nav a:hover { text-decoration:underline; text-underline-offset:5px; }
.foot-address { margin-top:18px; color:#dae4e9; font-size:14px; }
.copyright { margin-top:28px; padding-top:19px; color:#d5e0e6; border-top:1px solid #496171; font-size:12px; letter-spacing:.06em; }

@media (min-width:961px) and (max-width:1120px) {
  .wrap { width:calc(100% - 64px); } .header-inner { gap:20px; } .brand strong { font-size:20px; } .mark { width:38px; height:38px; } .nav { gap:18px; } .nav a { font-size:15px; } .nav a[href="contact.html"] { padding-inline:14px; }
}
@media (max-width:960px) {
  html { scroll-padding-top:112px; } .wrap { width:calc(100% - 56px); }
  .header-inner { min-height:84px; flex-wrap:wrap; gap:0; padding:18px 0; }
  .brand strong { font-size:21px; } .mark { width:38px; height:38px; }
  .nav { flex:1 0 100%; flex-direction:column; align-items:stretch; gap:0; padding-top:16px; }
  .nav a { min-height:54px; padding:12px 0; border-bottom:1px solid var(--line); font-size:17px; }
  .nav a::after { display:none; } .nav a[aria-current="page"] { text-decoration:underline; text-underline-offset:6px; }
  .nav a[href="contact.html"] { justify-content:center; margin-top:12px; padding:12px 18px; border-bottom:0; }
  .nav a[href="contact.html"][aria-current="page"] { box-shadow:none; }
  .js .header-inner { height:84px; padding-block:0; flex-wrap:nowrap; justify-content:space-between; }
  .js .menu { display:flex; align-items:center; justify-content:center; gap:9px; min-height:44px; padding:8px 12px; color:var(--ink); background:#fff; border:1px solid #9eb2bd; border-radius:4px; font-size:14px; white-space:nowrap; }
  .js .menu::before { content:"☰"; font-size:17px; line-height:1; }
  .js .menu[aria-expanded="true"]::before { content:"×"; font-size:24px; }
  .js .nav { display:none; position:absolute; top:100%; left:0; right:0; padding:12px 28px 24px; max-height:calc(100dvh - 88px); overflow-y:auto; background:#fff; border-bottom:1px solid var(--line); box-shadow:0 16px 24px #183b5012; }
  .js .nav.open { display:flex; }
  .hero { margin:16px 16px 0; } .hero .wrap { min-height:590px; } .hero-copy { max-width:610px; padding-block:72px; }
  .hero p:not(.eyebrow) { font-size:19px; } .home-links { gap:32px; } .feature-link { padding:30px 0 8px; gap:16px; } .feature-link p { font-size:16px; }
  .foot-top { flex-direction:column; gap:18px; } .foot-nav { max-width:none; justify-content:flex-start; }
}
@media (max-width:600px) {
  body { font-size:17px; } .wrap { width:calc(100% - 40px); }
  .header-inner,.js .header-inner { min-height:78px; } .js .header-inner { height:78px; }
  .brand { gap:8px; } .brand strong { font-size:17px; letter-spacing:.01em; } .brand small { font-size:8px; letter-spacing:.08em; } .mark { width:32px; height:32px; }
  .js .menu { min-height:44px; padding:8px; font-size:13px; gap:6px; } .js .nav { padding-inline:20px; max-height:calc(100dvh - 82px); }
  .hero { margin:10px 10px 0; } .hero .wrap { min-height:570px; width:calc(100% - 40px); } .hero-copy { padding:50px 0 56px; } .eyebrow { font-size:11px; letter-spacing:.1em; }
  .hero .eyebrow::before { width:20px; margin-right:10px; } h1 { font-size:clamp(32px,8.5vw,44px); margin-bottom:22px; }
  .hero h1 { font-size:clamp(29px,8.2vw,44px); letter-spacing:.035em; line-height:1.75; } .hero p:not(.eyebrow) { font-size:17px; } .hero-actions { gap:18px 22px; margin-top:28px; }
  .solid-link { padding:13px 20px; font-size:16px; gap:22px; } .text-link { font-size:16px; gap:18px; }
  .home-intro { padding-top:60px; } .home-intro h2 { font-size:28px; } .home-links { grid-template-columns:1fr; padding:28px 0 56px; gap:28px; }
  .feature-link { padding:26px 0 8px; } .feature-link h2 { font-size:27px; } .arrow { width:42px; height:42px; }
  .contact-band .wrap { flex-direction:column; align-items:flex-start; gap:24px; padding-block:32px; } .contact-band h2 { font-size:24px; } .contact-band p:not(.eyebrow) { font-size:16px; }
  .crumbs { padding-block:20px; font-size:12px; } .crumbs span { margin-inline:10px; } .page-head { padding:24px 0 32px; } .page-head h1 { font-size:32px; }
  body[data-page="privacy"] .page-head h1 { font-size:27px; letter-spacing:0; }
  .page-content { padding:34px 0 52px; } .intro { margin-bottom:28px; font-size:19px; } .section-heading { padding-left:14px; font-size:24px; }
  .route { padding:25px 14px; gap:30px; font-size:26px; } .route-arrow { font-size:30px; }
  .trade { grid-template-columns:1fr; gap:24px; margin-block:26px 34px; padding:10px 0; background:transparent; } .trade>div+div { border-top:1px solid #cfc3b1; border-left:0; padding:24px 0 0; } .trade h3 { font-size:22px; }
  .service-section { margin-top:32px; padding-top:28px; } .related-links { display:grid; gap:10px; margin-top:28px; }
  .product-item { grid-template-columns:32px 1fr; gap:14px; padding:28px 0; } .product-number { font-size:19px; } .product-item h2 { font-size:22px; } .product-item p { font-size:17px; }
  .inquiry { padding:24px; margin-top:28px; } .company-row { grid-template-columns:1fr; gap:7px; padding:20px 18px; } dt { font-size:15px; }
  .message { margin-top:36px; } .contact-block { padding-block:26px; } .contact-block h2 { font-size:21px; } .policy h2 { font-size:21px; } .policy section { margin-top:26px; padding-top:24px; }
  footer { padding-top:30px; } .foot-nav { gap:5px 20px; font-size:14px; } .foot-nav a { min-height:44px; } .foot-address { font-size:13px; }
}
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { transition:none !important; } }
