*{box-sizing:border-box}
body{margin:0;background:#fff;font-family:'Noto Sans JP',system-ui,sans-serif;color:#2b2f3a}
a{color:#000099;text-decoration:none}a:hover{color:#3a5cf5}
@keyframes sbob{0%,100%{transform:translateY(0);opacity:.9}50%{transform:translateY(7px);opacity:.5}}
@keyframes rdrift{0%,100%{transform:rotate(-9deg) translateY(0) scale(1)}50%{transform:rotate(-9deg) translateY(-16px) scale(1.03)}}
@keyframes blobmorph{0%,100%{border-radius:47% 53% 54% 46%/48% 47% 53% 52%}25%{border-radius:53% 47% 46% 54%/51% 53% 47% 49%}50%{border-radius:46% 54% 53% 47%/54% 46% 54% 46%}75%{border-radius:51% 49% 48% 52%/47% 51% 49% 53%}}
@keyframes blobmorph2{0%,100%{border-radius:53% 47% 48% 52%/52% 53% 47% 48%}33%{border-radius:47% 53% 54% 46%/49% 47% 53% 51%}66%{border-radius:54% 46% 51% 49%/46% 54% 46% 54%}}
details.exp summary{list-style:none;cursor:pointer}
details.exp summary::-webkit-details-marker{display:none}
details.exp .chev{transition:transform .3s ease}
details.exp[open] .chev{transform:rotate(90deg)}
details.exp .expbody{overflow:hidden;animation:expopen .32s ease}
@keyframes expopen{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
html { scroll-behavior: smooth; }

/* =============================================================
   REFACTORED INLINE STYLES — added 2026-10-06
   ============================================================= */

/* ---- page wrapper ---- */
.page-wrapper { width:100%; overflow-x:hidden; }

/* ---- header ---- */
#site-header { position:fixed; top:0; left:0; right:0; z-index:20; background:#fff; box-shadow:0 2px 12px rgba(0,0,60,.08); }
#header-topbar { width:100%; background:rgba(0,0,120,.04); }
.header__topbar-inner { max-width:1320px; margin:0 auto; display:flex; justify-content:flex-end; align-items:center; gap:26px; padding:11px 44px; font:600 12px 'Noto Sans JP',sans-serif; color:#000099; letter-spacing:.02em; }
.header__contact-info { display:flex; gap:22px; }
.header__fax { opacity:.55; }
.header__lang { display:flex; gap:10px; align-items:center; }
.header__lang-en { font-weight:600; }
.header__lang-sep { opacity:.4; }
.header__lang-zh { opacity:.7; }
.header__lang a { color:inherit; }
.header__lang-sp { display:none; gap:8px; align-items:center; margin-left:auto; margin-right:12px; padding-left:12px; flex-shrink:0; white-space:nowrap; font:600 13px 'Noto Sans JP',sans-serif; color:#000099; letter-spacing:.02em; }
.header__lang-sp a { color:inherit; }
.header__inner { max-width:1320px; margin:0 auto; display:flex; justify-content:space-between; align-items:center; padding:14px 44px; }
.header__logo-link { display:flex; align-items:center; }
.header__logo-img { height:40px; width:auto; display:block; }
#pc-nav { display:flex; gap:26px; font:700 14px 'Noto Sans JP',sans-serif; color:#1b2340; align-items:center; }
.header__nav-link { color:#1b2340; }
.header__nav-cta { background:linear-gradient(135deg,#000099,#2f7fe0); color:#fff; padding:10px 18px; border-radius:24px; }
#hamburger { display:none; flex-direction:column; justify-content:center; gap:5px; width:44px; height:44px; background:none; border:none; cursor:pointer; padding:8px; }
.hb-line { display:block; width:100%; height:2px; background:#000099; border-radius:2px; transition:transform .3s,opacity .3s; }

/* ---- SP menu ---- */
#sp-menu { display:none; position:fixed; inset:0; z-index:19; background:#fff; flex-direction:column; padding:24px; overflow-y:auto; }
.sp-menu__links { flex:1; display:flex; flex-direction:column; justify-content:center; gap:4px; margin-top:60px; }
.sp-nav-link { display:block; padding:18px 8px; font:700 20px 'Noto Sans JP',sans-serif; color:#1b2340; border-bottom:1px solid #eef0f8; text-decoration:none; }
.sp-menu__cta-wrap { padding:24px 8px 16px; }
.sp-menu__cta { display:block; text-align:center; background:linear-gradient(135deg,#000099,#2f7fe0); color:#fff; font:700 16px 'Noto Sans JP',sans-serif; padding:16px; border-radius:8px; text-decoration:none; }

/* ---- section common ---- */
.section-inner { position:relative; max-width:1180px; margin:0 auto; padding:0 44px; }
.section-label { font:700 14px 'Noto Sans JP',sans-serif; color:#000099; letter-spacing:.24em; margin-bottom:8px; }
.section-heading { font:800 92px/.98 Archivo,sans-serif; letter-spacing:-.015em; margin-bottom:44px; background:linear-gradient(92deg,#000099,#2f7fe0 70%,#12a8e8); -webkit-background-clip:text; background-clip:text; color:transparent; width:fit-content; }
.section-heading--mb40 { margin-bottom:40px; }
.section-heading--mb20 { margin-bottom:20px; }
.section-heading--mb16 { margin-bottom:16px; }
.section-heading--light { background:linear-gradient(92deg,#ffffff,#bcdcff 70%,#6ec3ff); -webkit-background-clip:text; background-clip:text; color:transparent; font:800 80px/.98 Archivo,sans-serif; letter-spacing:-.015em; }
.section-body-text { max-width:640px; font:500 16px/2.05 'Noto Sans JP',sans-serif; color:#2b2f3a; text-wrap:pretty; margin:0 0 60px; }

/* ---- HERO ---- */
.hero { position:relative; width:100%; height:78vh; min-height:620px; max-height:820px; overflow:hidden; background:#eef4ff; }
.hero__video { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center 38%; }
.hero__scrim { position:absolute; inset:0; background:linear-gradient(115deg,rgba(255,255,255,0) 45%,rgba(6,10,60,.05) 62%,rgba(6,10,60,.34) 100%); }
.hero__catch { position:absolute; right:6.5%; bottom:150px; z-index:6; text-align:right; color:#fff; font:900 40px/1.42 'Noto Sans JP',sans-serif; text-shadow:0 2px 22px rgba(0,0,50,.5); }
.hero__catch-large { font-size:48px; }
.hero__scroll { position:absolute; left:44px; bottom:104px; z-index:6; display:flex; align-items:center; gap:9px; color:#fff; font:700 12px 'Noto Sans JP',sans-serif; letter-spacing:.14em; }
.hero__scroll-dot { width:8px; height:8px; border-radius:50%; background:#12a8e8; animation:sbob 1.8s ease-in-out infinite; }
.hero__curve { position:absolute; left:-8%; right:-8%; bottom:-2px; height:120px; background:#fff; border-radius:50% 50% 0 0/100% 100% 0 0; z-index:4; }
.hero__line { position:absolute; left:0; right:0; bottom:56px; height:5px; background:linear-gradient(90deg,#000099,#2f7fe0 60%,#12a8e8); opacity:.9; z-index:3; border-radius:3px; transform:scaleX(.7); }

/* ---- ABOUT ---- */
#about { position:relative; overflow:hidden; padding:75px 0; }
.about__blob { position:absolute; top:120px; right:-220px; width:600px; height:600px; border-radius:54% 46% 58% 42%/49% 55% 45% 51%; background:linear-gradient(120deg,#e9edff,#c9dbff 60%,#bfe4fb); opacity:.7; animation:rdrift 9s ease-in-out infinite; pointer-events:none; }
.about__body-text { max-width:640px; font:500 16px/2.05 'Noto Sans JP',sans-serif; color:#2b2f3a; text-wrap:pretty; margin:0 0 60px; }
.about__diagram { max-width:1000px; margin:0 auto; }
.about__diagram-root { display:flex; justify-content:center; margin-bottom:24px; }
.about__root-node { background:linear-gradient(135deg,#000099,#2f7fe0); color:#fff; font:800 18px/1 'Noto Sans JP',sans-serif; padding:17px 44px; border-radius:5px; letter-spacing:.1em; }
.about__connectors { position:relative; height:44px; }
.about__conn-v-top { position:absolute; left:calc(50% - 1px); top:0; width:2px; height:22px; background:#c3cee6; }
.about__conn-h { position:absolute; left:16.667%; right:16.667%; top:21px; height:2px; background:#c3cee6; }
.about__conn-v-l { position:absolute; left:calc(16.667% - 1px); top:21px; width:2px; height:23px; background:#c3cee6; }
.about__conn-v-m { position:absolute; left:calc(50% - 1px); top:21px; width:2px; height:23px; background:#c3cee6; }
.about__conn-v-r { position:absolute; left:calc(83.333% - 1px); top:21px; width:2px; height:23px; background:#c3cee6; }
.about__branches { display:grid; grid-template-columns:repeat(3,1fr); align-items:start; }
.about__branch { padding:0 14px; display:flex; flex-direction:column; align-items:center; }
.about__branch-label { width:100%; max-width:230px; text-align:center; background:linear-gradient(135deg,#2f7fe0,#3f92e6); color:#fff; font:700 15px 'Noto Sans JP',sans-serif; padding:8px 14px; border-radius:5px; min-height:52px; display:flex; flex-direction:column; align-items:center; justify-content:center; }
.about__branch-label--p0 { padding:0 14px; }
.about__branch-sub { font-weight:500; font-size:11.5px; opacity:.85; }
.about__branch-vline { width:2px; height:20px; background:#c3cee6; }
.about__leaf-group { width:100%; max-width:250px; background:#eef2ff; border-radius:5px; padding:12px; display:flex; flex-direction:column; gap:9px; }
.about__leaf { background:#fff; border:1px solid rgba(13,0,152,.4); border-radius:5px; padding:11px 12px; text-align:center; font:600 13.5px 'Noto Sans JP',sans-serif; color:#1b2340; }
.about__leaf-en { font-weight:500; font-size:11px; color:#2f7fe0; }
.about__note { margin-top:9px; font:500 11px 'Noto Sans JP',sans-serif; color:#0D0098; letter-spacing:.02em; }
.about__caption { margin-top:18px; text-align:right; font:500 11px 'Noto Sans JP',sans-serif; color:#0D0098; letter-spacing:.12em; }

/* ---- LINE UP ---- */
#lineup { position:relative; background:#fff; overflow:hidden; padding:75px 0; }
.lineup__tabs { display:flex; gap:12px; margin:0 0 38px; flex-wrap:wrap; }
.lu-tab--default { cursor:pointer; background:#fff; color:#1b2340; border:1px solid rgba(13,0,152,.4); border-radius:5px; padding:10px 20px; font:700 14px 'Noto Sans JP',sans-serif; }
.lu-tab--init-active { cursor:pointer; background:#000099; color:#fff; border-radius:5px; padding:10px 20px; font:700 14px 'Noto Sans JP',sans-serif; }
.lineup__grid { display:grid; grid-template-columns:repeat(4,1fr); gap:26px; }
.lu-card { background:#F2F2FA; border-radius:10px; padding:14px; }
.lu-card__img-wrap { height:170px; border-radius:12px; overflow:hidden; background:#fff; }
.lu-card__img-wrap--gray { background:#eef2f8; }
.lu-card__img { width:100%; height:100%; object-fit:cover; display:block; }
.lu-card__title { margin-top:13px; font:700 14.5px 'Noto Sans JP',sans-serif; color:#1b2340; }
.lineup__footer { display:flex; justify-content:space-between; align-items:center; margin-top:44px; flex-wrap:wrap; gap:20px; }
.lineup__footer-text { margin:0; font:500 14px/1.8 'Noto Sans JP',sans-serif; color:#2b2f3a; }

/* ---- FOR EXPERT ---- */
#expert { position:relative; overflow:hidden; padding:75px 0; }
.expert__blob { position:absolute; top:60px; left:0; right:auto; width:520px; height:420px; border-radius:53% 47% 48% 52%/52% 53% 47% 48%; background:linear-gradient(120deg,#eef2ff,#dbe7ff); opacity:.6; pointer-events:none; animation:blobmorph 15s ease-in-out infinite; }
.expert__body-text { max-width:660px; font:500 16px/2.05 'Noto Sans JP',sans-serif; color:#2b2f3a; text-wrap:pretty; margin:0 0 52px; }
.expert__accordion-list { display:flex; flex-direction:column; gap:16px; }
.exp { background:#fff; border-radius:5px; box-shadow:0 3px 10px rgba(0,0,60,.04); overflow:hidden; }
.exp__summary-inner { display:flex; align-items:center; gap:16px; padding:22px 26px; }
.exp__title { flex:1; font:700 19px 'Noto Sans JP',sans-serif; color:#1b2340; }
.exp__title-en { font:600 12px 'Noto Sans JP',sans-serif; color:#2f7fe0; letter-spacing:.06em; }
.exp__body-wrap { border-top:1px solid #eef1f8; padding:8px 26px 20px; }
.exp__body-wrap--sensor { border-top:1px solid #eef1f8; padding:18px 26px 22px; display:flex; flex-direction:column; gap:24px; }
.pdf-row { display:flex; align-items:center; gap:16px; padding:16px 4px; border-bottom:1px solid #f0f2f8; }
.pdf-row--last { display:flex; align-items:center; gap:16px; padding:16px 4px; }
.pdf-row__badge { font:700 10px 'Noto Sans JP',sans-serif; color:#fff; background:#000099; padding:5px 8px; border-radius:4px; letter-spacing:.04em; }
.pdf-row__badge--sm { font:700 9px 'Noto Sans JP',sans-serif; color:#fff; background:#000099; padding:3px 6px; border-radius:3px; letter-spacing:.04em; }
.pdf-row__title { flex:1; font:600 15px 'Noto Sans JP',sans-serif; color:#1b2340; }
.pdf-row__title--sm { flex:1; font:600 14px 'Noto Sans JP',sans-serif; color:#1b2340; }
.pdf-row__date { font:600 12px 'Noto Sans JP',sans-serif; color:#0D0098; }
.pdf-sub-link { display:flex; align-items:center; gap:10px; padding:6px 4px 6px 22px; font:600 14px 'Noto Sans JP',sans-serif; color:#1b2340; }
.sensor-section { }
.sensor-section--mt { margin-top:20px; }
.sensor-section__header { display:flex; align-items:baseline; justify-content:space-between; gap:12px; padding-bottom:9px; border-bottom:1px solid #eef1f8; margin-bottom:12px; }
.sensor-section__title { font:700 16px 'Noto Sans JP',sans-serif; color:#1b2340; }
.sensor-section__date { font:600 12px 'Noto Sans JP',sans-serif; color:#0D0098; }
.sensor-vendor-list { display:flex; flex-direction:column; gap:14px; }
.sensor-vendor { }
.sensor-vendor__name { font:700 14px 'Noto Sans JP',sans-serif; color:#1b2340; margin-bottom:6px; }

/* ---- BUSINESS ---- */
#business { position:relative; background:#fff; overflow:hidden; padding:75px 0; }
.business__blob { position:absolute; top:50%; right:-200px; left:auto; transform:translateY(-50%); width:560px; height:460px; border-radius:53% 47% 48% 52%/52% 53% 47% 48%; background:linear-gradient(120deg,#e2ecff,#cfe4ff); opacity:.55; pointer-events:none; animation:blobmorph 15s ease-in-out infinite; }
.business__body-text { max-width:680px; font:500 16px/2.05 'Noto Sans JP',sans-serif; color:#2b2f3a; text-wrap:pretty; margin:0 0 60px; }
.business__accent { color:#000099; }
.business__grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:56px; align-items:center; }
.business__diagram-card { background:#fff; border-radius:12px; padding:38px 34px; }
.business__diagram-title { font:700 18px 'Noto Sans JP',sans-serif; color:#0D0098; letter-spacing:.04em; text-align:center; margin-bottom:28px; }
.business__diagram-flow { display:flex; flex-direction:column; align-items:center; gap:0; }
.business__flow-node { width:100%; max-width:360px; text-align:center; background:#eef2ff; border:1.5px solid rgba(13,0,152,.4); border-radius:8px; padding:16px 18px; }
.business__flow-node-title { font:700 16px 'Noto Sans JP',sans-serif; color:#1b2340; }
.business__flow-node-sub { font:500 12.5px 'Noto Sans JP',sans-serif; color:#5b6488; margin-top:3px; }
.business__flow-arrows { display:flex; align-items:flex-start; gap:14px; padding:12px 0; }
.business__flow-arrows-col { display:flex; flex-direction:row; align-items:center; gap:6px; padding-top:2px; }
.business__flow-up-label { font:600 11px 'Noto Sans JP',sans-serif; color:#000099; }
.business__flow-up-arrow { color:#000099; font-size:15px; line-height:1; }
.business__flow-right-col { display:flex; flex-direction:column; align-items:center; gap:8px; }
.business__flow-down-wrap { display:flex; flex-direction:row; align-items:center; gap:6px; }
.business__flow-down-arrow { color:#12a8e8; font-size:15px; line-height:1; }
.business__flow-down-label { font:600 11px 'Noto Sans JP',sans-serif; color:#12a8e8; }
.business__flow-note { background:#fff; border:1.5px solid rgba(13,0,152,.4); border-radius:8px; padding:8px 12px; font:600 11.5px/1.45 'Noto Sans JP',sans-serif; color:#000099; text-align:center; display:flex; align-items:center; gap:6px; }
.business__flow-note-icon { font-size:13px; }
.business__flow-cta-node { width:100%; max-width:360px; text-align:center; background:linear-gradient(135deg,#000099,#2f7fe0); border-radius:8px; padding:18px; color:#fff; }
.business__flow-cta-title { font:800 18px 'Noto Sans JP',sans-serif; }
.business__flow-cta-sub { font:500 12.5px 'Noto Sans JP',sans-serif; opacity:.9; margin-top:3px; }
.business__flow-mid-arrows { display:flex; align-items:center; gap:14px; padding:12px 0; }
.business__flow-mid-left { display:flex; flex-direction:row; align-items:center; gap:6px; }
.business__flow-mid-right { display:flex; flex-direction:row; align-items:center; gap:6px; }
.business__flow-contract-label { font:600 11px 'Noto Sans JP',sans-serif; color:#12a8e8; }
.business__side { }
.business__side-text { font:500 15.5px/2.0 'Noto Sans JP',sans-serif; color:#2b2f3a; text-wrap:pretty; margin:0 0 30px; }
.business__strengths { display:flex; flex-direction:column; gap:16px; margin-bottom:36px; }
.business__strength-item { display:flex; gap:16px; align-items:flex-start; }
.business__strength-icon { flex:none; display:inline-grid; place-items:center; width:30px; height:30px; border-radius:50%; background:linear-gradient(135deg,#000099,#2f7fe0); color:#fff; font-size:15px; }
.business__strength-text { margin:0; font:500 15px/1.85 'Noto Sans JP',sans-serif; color:#2b2f3a; }
.business__strength-bold { color:#000099; }
.btn-gradient { display:inline-flex; align-items:center; gap:14px; background:linear-gradient(135deg,#000099,#2f7fe0); color:#fff; font:700 15px 'Noto Sans JP',sans-serif; padding:15px 26px; border-radius:6px; border:none; cursor:pointer; }
.btn-gradient__arrow { display:inline-grid; place-items:center; width:26px; height:26px; border-radius:50%; background:rgba(255,255,255,.2); font-size:15px; }

/* ---- NEWS ---- */
#news { position:relative; overflow:hidden; padding:75px 0; }
.news__list { border-top:1px solid #e7ecf5; }
.news__item { width:100%; display:flex; align-items:center; gap:20px; padding:22px 8px; border:none; border-bottom:1px solid #e7ecf5; background:none; cursor:pointer; text-align:left; }
.news__item-body { flex:1; display:flex; flex-direction:column; gap:9px; }
.news__item-meta { display:flex; align-items:center; gap:12px; }
.news__item-date { font:600 13.5px 'Noto Sans JP',sans-serif; color:#000099; letter-spacing:.02em; }
.news__item-tag { font:700 11.5px 'Noto Sans JP',sans-serif; color:#000099; border:1px solid rgba(13,0,152,.4); border-radius:5px; padding:5px 12px; text-align:center; }
.news__item-badge { font:700 10px 'Noto Sans JP',sans-serif; color:#fff; background:linear-gradient(135deg,#12a8e8,#2f7fe0); border-radius:5px; padding:3px 9px; letter-spacing:.06em; }
.news__item-title { font:600 15px/1.6 'Noto Sans JP',sans-serif; color:#1b2340; text-wrap:pretty; }
.news__item-arrow { flex:none; color:#98a2be; font-size:20px; line-height:1; }

/* ---- COMPANY ---- */
#company { position:relative; background:#fff; overflow:hidden; padding:75px 0; }
.company__blob { position:absolute; top:120px; left:-200px; width:520px; height:420px; border-radius:53% 47% 48% 52%/52% 53% 47% 48%; background:linear-gradient(120deg,#e2ecff,#cfe4ff); opacity:.5; pointer-events:none; animation:blobmorph 15s ease-in-out infinite; }
.company__grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.82fr); gap:48px; align-items:start; }
.company__table-wrap { background:#fff; border-radius:5px; overflow:hidden; }
.company__dl { margin:0; }
.company__dl-row { display:grid; grid-template-columns:150px 1fr; border-bottom:1px solid #e7ecf5; }
.company__dl-row--last { display:grid; grid-template-columns:150px 1fr; }
.company__dt { font:700 13.5px 'Noto Sans JP',sans-serif; color:#000099; background:#fff; padding:16px 18px 16px 33px; display:flex; align-items:center; }
.company__dt--top { display:flex; align-items:flex-start; }
.company__dd { margin:0; font:500 14.5px/1.7 'Noto Sans JP',sans-serif; color:#2b2f3a; padding:16px 20px; display:flex; align-items:center; }
.company__dd--top { margin:0; font:500 14.5px/1.75 'Noto Sans JP',sans-serif; color:#2b2f3a; padding:16px 20px; }
.company__dd--tel { flex-direction:column; align-items:flex-start; }
.company__side { display:flex; flex-direction:column; gap:20px; }
.company__photo-wrap { height:320px; border-radius:5px; overflow:hidden; }
.company__map-wrap { height:238px; border-radius:5px; overflow:hidden; }
.company__photo { width:100%; height:100%; object-fit:cover; display:block; }
.company__map { width:100%; height:100%; border:0; display:block; }

/* ---- OVERSEAS ---- */
#overseas { position:relative; overflow:hidden; padding:75px 0; }
.overseas__body-text { max-width:720px; font:500 15.5px/2.0 'Noto Sans JP',sans-serif; color:#2b2f3a; text-wrap:pretty; margin:0 0 44px; }
.overseas__photos { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-bottom:36px; }
.overseas__photo-wrap { height:240px; border-radius:5px; overflow:hidden; }
.overseas__photo { width:100%; height:100%; object-fit:cover; display:block; }
.overseas__grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.82fr); gap:48px; align-items:start; }
.overseas__merits { background:#eef2ff; border-radius:5px; padding:34px 32px; }
.overseas__merits-title { font:700 16px 'Noto Sans JP',sans-serif; color:#000099; margin-bottom:22px; }
.overseas__merits-list { display:flex; flex-direction:column; gap:22px; }
.overseas__merit-item { display:flex; gap:14px; align-items:flex-start; }
.overseas__merit-num { flex:none; display:inline-grid; place-items:center; width:28px; height:28px; border-radius:50%; background:linear-gradient(135deg,#000099,#2f7fe0); color:#fff; font:700 13px 'Noto Sans JP',sans-serif; }
.overseas__merit-title { font:700 14.5px 'Noto Sans JP',sans-serif; color:#000099; margin-bottom:7px; }
.overseas__merit-text { margin:0; font:500 14.5px/1.85 'Noto Sans JP',sans-serif; color:#2b2f3a; text-wrap:pretty; }

/* ---- PHILOSOPHY ---- */
#philosophy { position:relative; overflow:hidden; background:#000a6b; padding:75px 0; }
.philosophy__bg { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center 78%; display:block; }
.philosophy__overlay { position:absolute; inset:0; background:rgba(15,13,159,.7); pointer-events:none; }
.philosophy__inner { position:relative; max-width:1180px; margin:0 auto; padding:0 44px; text-align:center; }
.philosophy__label { font:700 14px 'Noto Sans JP',sans-serif; color:#9fd0ff; letter-spacing:.24em; margin-bottom:12px; }
.philosophy__heading { font:800 80px/.98 Archivo,sans-serif; letter-spacing:-.015em; margin-bottom:52px; background:linear-gradient(92deg,#ffffff,#bcdcff 70%,#6ec3ff); -webkit-background-clip:text; background-clip:text; color:transparent; width:fit-content; margin-left:auto; margin-right:auto; }
.philosophy__catch { max-width:900px; margin:0 auto 40px; font:700 32px/1.85 'Noto Sans JP',sans-serif; color:#fff; letter-spacing:.02em; text-wrap:pretty; }
.philosophy__divider { width:60px; height:2px; background:linear-gradient(90deg,#6ec3ff,#9fd0ff); margin:0 auto 38px; }
.philosophy__sub { max-width:760px; margin:0 auto 48px; font:400 15.5px/2.1 'Noto Sans JP',sans-serif; color:rgba(255,255,255,.82); text-wrap:pretty; font-style:italic; }
.philosophy__company-name { font:700 16px 'Noto Sans JP',sans-serif; color:#fff; letter-spacing:.04em; }
.philosophy__company-en { font:600 12.5px Archivo,sans-serif; color:#9fd0ff; letter-spacing:.14em; margin-top:5px; }

/* ---- CONTACT ---- */
#contact { position:relative; overflow:hidden; padding:75px 0 150px; }
.contact__blob { position:absolute; top:120px; left:20%; transform:translateX(-20%); width:520px; height:420px; border-radius:53% 47% 48% 52%/52% 53% 47% 48%; background:linear-gradient(120deg,#e2ecff,#cfe4ff); opacity:.5; pointer-events:none; animation:blobmorph 15s ease-in-out infinite; }
.contact__body-text { max-width:720px; font:500 15.5px/2.0 'Noto Sans JP',sans-serif; color:#2b2f3a; text-wrap:pretty; margin:0 0 48px; }
.contact__grid { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); gap:48px; align-items:stretch; }
.contact__form-card { background:linear-gradient(140deg,#000a6b,#000099 45%,#1b42b8); border-radius:5px; padding:52px 48px; display:flex; flex-direction:column; justify-content:center; position:relative; overflow:hidden; }
.contact__form-inner { position:relative; }
.contact__form-title { font:800 22px/1.6 'Noto Sans JP',sans-serif; color:#fff; letter-spacing:.02em; margin-bottom:14px; }
.contact__form-text { font:500 14px/1.95 'Noto Sans JP',sans-serif; color:rgba(255,255,255,.82); text-wrap:pretty; margin:0 0 30px; }
.contact__form-btn { align-self:flex-start; display:inline-flex; align-items:center; gap:16px; background:#fff; color:#000099; font:700 15px 'Noto Sans JP',sans-serif; padding:16px 40px; border-radius:5px; text-decoration:none; letter-spacing:.04em; }
.contact__form-btn-arrow { display:inline-grid; place-items:center; width:26px; height:26px; border-radius:50%; background:linear-gradient(135deg,#000099,#2f7fe0); color:#fff; font-size:14px; }
.contact__side { display:flex; flex-direction:column; gap:16px; }
.contact__tel-card { background:#eef2ff; border-radius:5px; padding:30px 30px; }
.contact__tel-title { font:700 15px 'Noto Sans JP',sans-serif; color:#000099; margin-bottom:20px; }
.contact__tel-list { display:flex; flex-direction:column; gap:16px; }
.contact__tel-label { font:700 11px 'Noto Sans JP',sans-serif; color:#5566a8; letter-spacing:.1em; margin-bottom:4px; }
.contact__tel-num { font:800 26px Archivo,sans-serif; color:#000099; letter-spacing:.01em; }
.contact__fax-num { font:800 22px Archivo,sans-serif; color:#1b2340; letter-spacing:.01em; }
.contact__hours { font:500 12.5px/1.7 'Noto Sans JP',sans-serif; color:#2b2f3a; border-top:1px solid #d9e2f5; padding-top:14px; }

/* ---- FOOTER ---- */
footer { position:relative; overflow:hidden; background:linear-gradient(115deg,#000a5e 0%,#0b1a86 58%,#2f6fd8 100%); color:#fff; }
.footer__inner { position:relative; max-width:1180px; margin:0 auto; padding:64px 44px 0; }
.footer__top { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.1fr); gap:48px; align-items:start; padding-bottom:32px; }
.footer__brand-name { font:900 22px 'Noto Sans JP',sans-serif; color:#fff; letter-spacing:.02em; margin-bottom:6px; }
.footer__brand-en { font:600 12px Archivo,sans-serif; color:#9fd0ff; letter-spacing:.16em; margin-bottom:22px; }
.footer__brand-address { font:500 13.5px/1.9 'Noto Sans JP',sans-serif; color:rgba(255,255,255,.8); }
.footer__brand-address a { color:rgba(255,255,255,.8); text-decoration:none; }
.footer__nav { display:flex; flex-wrap:wrap; gap:14px 24px; align-self:center; font:700 14px 'Noto Sans JP',sans-serif; }
.footer__nav-link { color:rgba(255,255,255,.86); }
.footer__bottom { display:flex; justify-content:space-between; align-items:center; padding:15px 78px 24px 0; flex-wrap:wrap; gap:12px; }
.footer__copy { font:500 12px 'Noto Sans JP',sans-serif; color:rgba(255,255,255,.6); letter-spacing:.02em; }
.footer__totop { position:absolute; right:28px; bottom:22px; display:inline-grid; place-items:center; width:52px; height:52px; border-radius:50%; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.28); color:#fff; text-decoration:none; font-size:20px; backdrop-filter:blur(4px); }

/* ---- MODALS common ---- */
.modal { position:fixed; inset:0; z-index:9000; align-items:center; justify-content:center; padding:20px; }
.modal__backdrop { position:absolute; inset:0; background:rgba(0,0,80,.55); backdrop-filter:blur(4px); }
.modal__box { position:relative; max-width:680px; width:100%; max-height:90vh; overflow-y:auto; background:#fff; border-radius:14px; box-shadow:0 24px 60px rgba(0,0,60,.25); padding:48px 52px 52px; }
.modal__box--wide { max-width:780px; }
.modal__close { position:absolute; top:14px; right:14px; background:none; border:none; cursor:pointer; color:#888; font-size:34px; line-height:1; }
.modal__meta { display:flex; align-items:center; gap:10px; margin-bottom:16px; }
.modal__tag { font:700 11.5px 'Noto Sans JP',sans-serif; color:#000099; border:1px solid rgba(13,0,152,.4); border-radius:5px; padding:5px 12px; }
.modal__date { font:600 13.5px 'Noto Sans JP',sans-serif; color:#000099; }
.modal__title { font:800 22px/1.4 'Noto Sans JP',sans-serif; color:#0d0098; margin:0 0 28px; }
.modal__body { font:500 15px/2.0 'Noto Sans JP',sans-serif; color:#2b2f3a; }
.modal__body p { margin:0 0 8px; }
.modal__body p:last-child { margin:0; }
.modal__body p + p { margin-top:4px; }
.modal__footer { margin-top:36px; text-align:center; }
.modal__btn-close { background:linear-gradient(135deg,#000099,#2f7fe0); color:#fff; font:700 15px 'Noto Sans JP',sans-serif; padding:13px 40px; border-radius:6px; border:none; cursor:pointer; }

/* ---- TS MODAL ---- */
.ts-modal__label { font:700 13px 'Noto Sans JP',sans-serif; color:#000099; letter-spacing:.22em; margin-bottom:6px; }
.ts-modal__title { font:800 26px/1.3 'Noto Sans JP',sans-serif; color:#0d0098; margin:0 0 6px; }
.ts-modal__sub { font:500 14px/1.9 'Noto Sans JP',sans-serif; color:#555; margin:0 0 36px; }
.ts-modal__steps { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:16px; }
.ts-modal__step { display:flex; gap:16px; align-items:flex-start; background:#f4f6fb; border-radius:10px; padding:20px 22px; }
.ts-modal__step--final { background:linear-gradient(135deg,#eef2ff,#e8f0fe); border:1.5px solid #b3c4f5; }
.ts-modal__step-num { flex:none; min-width:44px; height:44px; border-radius:50%; background:linear-gradient(135deg,#000099,#2f7fe0); color:#fff; font:700 13px 'Noto Sans JP',sans-serif; display:grid; place-items:center; text-align:center; line-height:1.2; font-size:11px; }
.ts-modal__step-title { font:700 15px 'Noto Sans JP',sans-serif; color:#0d0098; margin-bottom:4px; }
.ts-modal__step-body { font:500 14px/1.8 'Noto Sans JP',sans-serif; color:#2b2f3a; }

/* ---- modal display states (moved from inline <style>) ---- */
#ts-modal,
#news-modal-1, #news-modal-2, #news-modal-3, #news-modal-4 { display:none; }
#ts-modal.is-open,
#news-modal-1.is-open, #news-modal-2.is-open, #news-modal-3.is-open, #news-modal-4.is-open { display:flex; }

/* LINE UPタブ */
.lu-tab { transition: background .2s, color .2s; }
.lu-tab--active { background:#000099 !important; color:#fff !important; }
.lu-card { transition: opacity .25s, transform .25s; }
.lu-card--hidden { display:none !important; }
#sp-menu.is-open { display:flex !important; }

@media (max-width: 999px) {
  #header-topbar { display:none !important; }
  #pc-nav { display:none !important; }
  #hamburger { display:flex !important; }
  .header__lang-sp { display:flex; }
  #site-header > div:last-of-type { padding:12px 20px !important; }
}

@media (max-width: 767px) {
  section { padding:50px 0 !important; }
  section > div,
  section > div > div:first-child { padding-left:20px !important; padding-right:20px !important; }

  .section-heading,
  .philosophy__heading { font-size:44px !important; line-height:1 !important; margin-bottom:24px !important; }

  .hero__scroll { left:50% !important; bottom:28px !important; transform:translateX(-50%) !important; color:#000099 !important; }

  .header__logo-img { height:28px !important; }

  .hero__catch {
    top:50% !important; left:50% !important; right:auto !important; bottom:auto !important;
    transform:translate(-50%,-50%) !important; width:90% !important;
    font-size:22px !important; text-align:center !important;
  }
  .hero__catch-large { font-size:28px !important; }

  .business__grid,
  .company__grid,
  .contact__grid,
  .footer__top,
  .overseas__grid { grid-template-columns:1fr !important; gap:28px !important; }

  .overseas__photos { grid-template-columns:1fr !important; }

  .lineup__grid { grid-template-columns:repeat(2,1fr) !important; gap:14px !important; }
  .lu-card__img-wrap { height:120px !important; }

  .lineup__tabs { display:grid !important; grid-template-columns:repeat(3,1fr) !important; gap:8px !important; }
  .lineup__tabs .lu-tab,
  .lineup__tabs .lu-tab--default,
  .lineup__tabs .lu-tab--init-active { text-align:center !important; white-space:nowrap !important; font-size:12px !important; padding:9px 6px !important; }

  .company__dl-row,
  .company__dl-row--last { grid-template-columns:100px 1fr !important; }
  .company__dt { padding:12px 12px !important; font-size:12px !important; }

  .business__diagram-card { padding:24px 18px !important; }

  .about__connectors { display:none !important; }
  .about__branches { grid-template-columns:1fr !important; gap:16px !important; }
  .about__branch { padding:0 !important; }
  .about__branch-label { max-width:100% !important; }
  .about__leaf-group { max-width:100% !important; }

  .business__flow-up-label,
  .business__flow-down-label,
  .business__flow-contract-label { font-size:12px !important; }

  .philosophy__catch { font-size:20px !important; }

  .contact__form-card { padding:28px 24px !important; }

  .footer__inner { padding:40px 20px 0 !important; }

  .overseas__photo-wrap { height:180px !important; }
  .company__photo-wrap { height:200px !important; }

  .modal__box,
  .modal__box--wide { padding:32px 20px 36px !important; }
  .ts-modal__steps { gap:12px !important; }
}

/* ---- hover additions ---- */
.header__nav-cta { transition:background .2s,color .2s; }
.header__nav-cta:hover { background:#fff; color:#000099; }

.contact__form-btn { transition:background .2s,color .2s; }
.contact__form-btn:hover { background:#000099; color:#fff; }

.btn-gradient { transition:color .2s; }
.btn-gradient:hover { color:rgba(255,255,255,.65); }

a.pdf-row:hover .pdf-row__title,
a.pdf-row--last:hover .pdf-row__title { color:#3a5cf5; }

/* 全商品タブ: 他ボタンがアクティブの時は白に */
.lu-tab--init-active:not(.lu-tab--active) { background:#fff !important; color:#1b2340 !important; border:1px solid rgba(13,0,152,.4) !important; }

/* タブ切り替えふわっとアニメーション */
@keyframes luCardIn { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }
.lu-card:not(.lu-card--hidden) { animation:luCardIn .3s ease both; }

/* 言語切替（SP）：極小画面でロゴを縮める */
@media (max-width: 374px) {
  .header__logo-img { height:22px !important; }
  .header__lang-sp { gap:6px; margin-right:6px; font-size:12px; }
}
