/* ========================================
   Theme Tokens
======================================== */
:root { --bg:#e8ecf4; --surface:#fff; --line:#d0d7e2; --text:#111722; --muted:#5a6374; --hero-text:#f4f6fa; --container:min(1120px,calc(100% - 40px)); --radius:18px; --accent-navy:#1e2a3d; --accent-gold:#8f7a4e; --hero-overlay-strong:rgba(10,16,26,.72); --hero-overlay-soft:rgba(10,16,26,.48); --font-sans:"Noto Sans JP",-apple-system,BlinkMacSystemFont,"Segoe UI","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif; --font-en:"Montserrat",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
*,
*::before,
*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;font-kerning:normal}
button,
input,
select,
textarea{font:inherit;color:inherit}
button,
input,
select,
textarea{-webkit-appearance:none;appearance:none}
/* ========================================
   Base / Global
======================================== */
a:focus-visible,button:focus-visible{outline:2px solid #33415e;outline-offset:2px}
body{font-family:var(--font-sans);color:var(--text);background:radial-gradient(980px 460px at 100% 0%,#e3e9f3 0%,transparent 72%),radial-gradient(760px 360px at 0% 40%,#e2e8f1 0%,transparent 72%),var(--bg);letter-spacing:.025em;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
img,
svg,
video,
canvas{max-width:100%;height:auto;display:block;flex-shrink:0}

:where(.container,.header-inner,.nav,.mobile-nav,.hero-wrap,.hero-copy,.hero-contact,.services-grid,.service-card,.flow-middle,.members-grid,.members-card,.members-photo,.banner-wrap,.banner-card,.banner-sp-track,.banner-sp-card,.instagram-collage,.instagram-stage,.footer-top,.footer-right,.footer-address-grid){min-width:0}
:where(.logo,.logo img,.nav a,.mobile-toggle,.contact-box,.flow-center,.banner-sp-card,.instagram-shot,.instagram-control-btn,.footer-address-value){flex-shrink:0}

main p,
main li,
main td,
main th {
  white-space: normal;
  word-break: normal;
  overflow-wrap: anywhere;
  line-break: auto;
}
/* ========================================
   Opening Animation
======================================== */
.opening{position:fixed;inset:0;z-index:9999;overflow:hidden;background:#151922;display:none}
.opening-panel{position:absolute;top:0;width:50%;height:100%;background:linear-gradient(180deg,#1a1f2a,#141923);z-index:1}
.opening-panel--left{left:0}
.opening-panel--right{right:0}
.opening-gradient{position:absolute;inset:-15%;background:radial-gradient(56% 54% at 50% 42%,rgba(83,104,136,.34),transparent 69%),radial-gradient(44% 40% at 66% 64%,rgba(182,154,100,.2),transparent 72%),radial-gradient(40% 36% at 34% 66%,rgba(56,76,108,.2),transparent 74%);filter:blur(14px);opacity:.72;transform:translate3d(0,0,0);mix-blend-mode:screen;pointer-events:none;z-index:2}
.opening-reveal-bg{position:absolute;inset:0;background:
radial-gradient(56% 54% at 50% 42%,rgba(88,112,148,.28),transparent 68%),
linear-gradient(180deg,rgba(20,28,42,.58),rgba(14,22,34,.72)),
url("./ceo.jpg") center 28%/cover no-repeat;
filter:grayscale(1) contrast(1.16) brightness(.34) sepia(.12);
mix-blend-mode:normal;opacity:0;transform:scale(1.03);z-index:0;pointer-events:none;overflow:hidden}
.opening-reveal-bg::before{content:"";position:absolute;inset:-30%;background-image:radial-gradient(rgba(255,255,255,.14) .58px,transparent .82px);background-size:2.2px 2.2px;opacity:.2;mix-blend-mode:soft-light;animation:filmGrain .9s steps(2) infinite}
.opening-reveal-bg::after{content:"";position:absolute;inset:0;background:
linear-gradient(180deg,rgba(180,198,230,.1),rgba(22,31,46,.3)),
radial-gradient(120% 90% at 50% 48%,transparent 50%,rgba(7,10,15,.38) 100%),
repeating-linear-gradient(0deg,rgba(255,255,255,.03) 0 1px,transparent 1px 3px);
mix-blend-mode:screen;opacity:.72;animation:filmFlicker 2.1s ease-in-out infinite}
.opening-center-line{position:absolute;top:0;left:50%;transform:translateX(-50%);width:1px;height:100%;background:linear-gradient(180deg,transparent,rgba(220,228,240,.38),transparent);opacity:.48;z-index:3}
.opening-title-wrap{position:absolute;inset:0;display:grid;place-items:center;padding:0;text-align:center;z-index:4}
.opening-title{font-family:var(--font-en);font-size:clamp(2rem,9vw,3.4rem);font-weight:600;letter-spacing:.08em;color:#f5f6f8;text-shadow:0 0 26px rgba(245,246,248,.36),0 0 58px rgba(165,138,87,.25);white-space:nowrap}
.opening-loader{position:absolute;left:50%;top:calc(50% + 46px);width:min(220px,58vw);height:2px;transform:translateX(-50%);background:rgba(224,231,241,.24);border-radius:999px;overflow:hidden;box-shadow:0 0 0 1px rgba(224,231,241,.16)}
.opening-loader-bar{display:block;width:0;height:100%;background:linear-gradient(90deg,rgba(238,242,248,.2),rgba(245,247,251,.9),rgba(176,154,116,.66));border-radius:999px}
img{max-width:100%;display:block}
.sp-break{display:none}
/* ========================================
   Layout Helpers
======================================== */
.container{width:var(--container);margin:0 auto}
.container,
.header-inner,
.footer-inner,
.mobile-nav{width:calc(100% - 40px);max-width:1120px}
.section{padding:84px 0}
/* ========================================
   Header / Navigation
======================================== */
.header{position:sticky;top:0;z-index:1000;padding-top:12px}
.header-inner{width:var(--container);margin:0 auto;min-height:72px;padding:10px 14px;display:flex;align-items:center;justify-content:space-between;border-radius:999px;border:1px solid #ffffff;background:#ffffff;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 10px 24px rgba(17,24,39,.08)}
.logo img{height:34px;border-radius:2px;opacity:.96}
.nav{display:flex;gap:16px;align-items:center}
.nav a{text-decoration:none;color:#253145;font-size:.82rem;font-weight:400;line-height:1.2;letter-spacing:.055em;display:inline-flex;flex-direction:column;align-items:center;position:relative;padding:4px 8px}
.nav a span{font-family:var(--font-en);font-size:.62rem;font-weight:400;color:#6d788c;letter-spacing:.16em;text-transform:uppercase;margin-top:2px}
.nav a::after{content:"";position:absolute;left:8px;right:8px;bottom:0;height:1px;background:var(--accent-navy);transform:scaleX(0);transform-origin:left;transition:transform .24s ease}
.nav a:hover::after{transform:scaleX(1)}
.mobile-toggle{display:none;width:auto;min-height:0;border:none;background:transparent;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;gap:3px}
.mobile-toggle-icon{width:42px;height:42px;border-radius:50%;border:1px solid rgba(36,46,64,.5);background:rgba(255,255,255,.9);display:flex;align-items:center;justify-content:center}
.toggle-line{width:16px;height:2px;background:#1c2433;position:relative;transition:background .2s}
.toggle-line::before,.toggle-line::after{content:"";position:absolute;left:0;width:16px;height:2px;background:#1c2433;transition:transform .26s,top .26s}
.toggle-line::before{top:-6px}.toggle-line::after{top:6px}
.mobile-toggle.is-open .toggle-line{background:transparent}
.mobile-toggle.is-open .toggle-line::before{top:0;transform:rotate(45deg)}
.mobile-toggle.is-open .toggle-line::after{top:0;transform:rotate(-45deg)}
.menu-label{font-family:var(--font-en);font-size:.5rem;letter-spacing:.12em;line-height:1;color:#1c2433;margin-top:2px}
.mobile-nav{display:none}
/* ========================================
   Hero
======================================== */
.hero{padding:0 0 72px}
.hero .hero-wrap{width:100%;max-width:none;margin:0;border-radius:0}
.hero-wrap{position:relative;min-height:clamp(560px,88vh,900px);overflow:hidden;border:none;box-shadow:0 24px 52px rgba(16,22,33,.2);display:grid;grid-template-columns:minmax(0,34rem) auto;justify-content:center;align-items:center;gap:clamp(58px,8vw,120px);padding:clamp(72px,10vh,120px) clamp(20px,4vw,48px) clamp(40px,6vh,72px)}
@supports (height:100svh){
  .hero-wrap{min-height:clamp(560px,88svh,900px)}
}
.hero-bg-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:blur(.55px) brightness(.78) saturate(.92);transform:scale(1.035) translate3d(-0.35%,0,0);transform-origin:50% 42%;z-index:0;pointer-events:none}
.hero-wrap::before{content:none}
.hero-wrap::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,var(--hero-overlay-strong) 0%,var(--hero-overlay-soft) 52%,rgba(12,18,30,.42) 100%);z-index:1}
.hero-copy,.hero-contact{position:relative;z-index:2;color:var(--hero-text)}
.hero-copy{max-width:34rem}
.hero-copy{animation:heroCopyRise 1s cubic-bezier(.22,.61,.36,1) both}
.hero-contact{animation:fadeInUp .9s ease-out .16s both}
.hero-copy{text-align:left}
.hero-title{font-family:var(--font-en);font-size:clamp(2rem,4.4vw,3.3rem);font-weight:600;letter-spacing:.04em;line-height:1.15;margin:0 0 14px;white-space:nowrap;text-shadow:0 2px 24px rgba(5,8,14,.35);font-feature-settings:"kern" 1;text-rendering:optimizeLegibility}
.hero-sub{font-family:var(--font-en),var(--font-sans);font-size:clamp(.76rem,1.05vw,.86rem);font-weight:500;line-height:1.82;letter-spacing:.03em;color:rgba(244,246,250,.92);opacity:1;white-space:nowrap}
.hero-sub br{display:none}
.hero-contact{width:clamp(178px,17vw,220px);justify-self:end}
.contact-box{min-height:92px;border-radius:6px;border:1px solid rgba(255,255,255,.45);background:rgba(14,20,32,.62);color:#f2f4f8;text-decoration:none;font-family:var(--font-en);font-size:.82rem;font-weight:600;letter-spacing:.16em;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 20px rgba(5,10,18,.28),inset 0 1px 0 rgba(255,255,255,.12);transition:transform .22s ease,background .22s ease,box-shadow .22s ease,border-color .22s ease}
.contact-box:hover{transform:translateY(-1px);background:rgba(18,26,40,.75);border-color:rgba(255,255,255,.58);box-shadow:0 12px 28px rgba(5,10,18,.32),inset 0 1px 0 rgba(255,255,255,.16)}
.section-title{font-family:var(--font-en);font-size:clamp(1.5rem,3.4vw,2.05rem);font-weight:600;letter-spacing:.1em;margin-bottom:28px;color:#1a2433}
/* ========================================
   Services
======================================== */
.services-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.service-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:28px;box-shadow:0 8px 22px rgba(20,27,44,.048);display:flex;flex-direction:column}
.services-grid .service-card{opacity:1;transform:translateX(0);transition:opacity .72s ease,transform .72s cubic-bezier(.22,.61,.36,1)}
.services-grid.is-animated .service-card{opacity:0}
.services-grid.is-animated .service-card:nth-child(odd){transform:translateX(-34px)}
.services-grid.is-animated .service-card:nth-child(even){transform:translateX(34px)}
.services-grid.is-animated .service-card.is-visible{opacity:1;transform:translateX(0)}
.services-grid.is-animated .service-card:nth-child(2).is-visible{transition-delay:.18s}
.service-card h2{font-size:1.2rem;font-weight:600;margin-bottom:16px;letter-spacing:.065em;position:relative;display:inline-block;padding-bottom:10px;color:#202b3e}
.service-card h2::after{content:"";position:absolute;left:0;bottom:0;width:42px;height:1.6px;background:linear-gradient(90deg,var(--accent-navy),var(--accent-gold))}
.service-card p{color:var(--muted);font-size:.94rem;line-height:1.92;letter-spacing:.03em}
.service-card p .service-emphasis{font-weight:600;color:#2a374c;text-decoration:underline;text-underline-offset:.14em;text-decoration-thickness:1px;text-decoration-color:#2a374c}
.service-card p + p{margin-top:8px}
.service-flow-pc{margin-top:auto;border:1px solid #d9dee6;border-radius:13px;padding:16px;background:#f7f8fa;box-shadow:inset 0 1px 0 rgba(255,255,255,.65)}
.flow-middle{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:14px}
.flow-middle img{width:100%;height:180px;object-fit:contain;background:linear-gradient(180deg,#f7f9fc,#ecf1f8);padding:6px;border-radius:11px;border:1px solid #d9e1ec}
.flow-center{min-width:98px;display:flex;flex-direction:column!important;align-items:center;justify-content:center;gap:6px}
.flow-top,.flow-bottom{color:#2a3750;font-weight:700;font-size:.84rem;letter-spacing:.04em;line-height:1.3;text-align:center;display:block}
.flow-arrow{font-size:1.55rem;color:#2f4f7f;line-height:1;display:block}
.service-flow-mobile{display:none}
/* ========================================
   Banner Slider
======================================== */
.banner{padding:30px 0 88px}
.banner-wrap{position:relative;min-height:clamp(500px,48vw,640px);height:auto;border-radius:24px;overflow:hidden;border:1px solid #d2d8e1;box-shadow:0 14px 30px rgba(17,24,39,.1);background:#e8ebf1}
.banner-slide{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:flex-start;padding:34px 34px 52px;opacity:1;transform:translate3d(100%,0,0);transition:transform .78s cubic-bezier(.16,1,.3,1);z-index:1;pointer-events:none;will-change:transform}
.banner-slide.active{transform:translate3d(0,0,0);z-index:2;pointer-events:auto}
.banner-slide img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover;filter:blur(.75px) brightness(.78);transform:scale(1.035) translate3d(-0.35%,0,0);transform-origin:50% 42%;backface-visibility:hidden;-webkit-backface-visibility:hidden;animation:bannerKen 36s cubic-bezier(.16,1,.3,1) infinite alternate;animation-play-state:paused;will-change:transform;z-index:0}
.banner-slide.active img{animation-play-state:running}
.banner-card{position:relative;left:auto;bottom:auto;z-index:2;width:min(530px,100%);height:auto;min-height:0;max-height:none;overflow:visible;background:rgba(231,236,244,.83);border:1px solid rgba(255,255,255,.68);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:14px;padding:22px 24px}
.banner-card h2{
  font-size:clamp(1.32rem,2.65vw,1.86rem);
  font-weight:500;
  letter-spacing:.12em;
  line-height:1.22;
  margin-bottom:12px;
  color:#233044;
}
.banner-card p{max-width:100%;color:#2c374b;font-size:.92rem;line-height:1.8;letter-spacing:.02em;text-wrap:auto;word-break:normal;overflow-wrap:anywhere;line-break:auto}
.banner-card p + p{margin-top:6px}
.banner-progress{position:absolute;left:50%;transform:translateX(-50%);bottom:22px;width:min(360px,70%);height:3px;background:rgba(255,255,255,.32);z-index:4;border-radius:999px;overflow:hidden}
.banner-progress-fill{height:100%;width:0;background:rgba(255,255,255,.75)}
.banner-dots{position:absolute;left:50%;transform:translateX(-50%);bottom:8px;display:flex;gap:8px;z-index:4}
.banner-dots span{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.42);cursor:pointer}
.banner-dots span.active{background:rgba(255,255,255,.9)}
.banner-sp{display:none}
.banner-sp-hint{display:none}
@keyframes bannerKen{
  from{transform:scale(1.035) translate3d(-0.35%,0,0)}
  to{transform:scale(1.085) translate3d(0.35%,-0.25%,0)}
}
@keyframes bannerKenSp{
  from{transform:scale(1.035) translate3d(-0.28%,0,0)}
  to{transform:scale(1.075) translate3d(0.28%,-0.2%,0)}
}
/* ========================================
   Members
======================================== */
.members-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.members-card,.members-photo{border-radius:var(--radius);border:1px solid var(--line);background:#fff;box-shadow:0 8px 22px rgba(20,27,44,.048);overflow:hidden}
.members-card{padding:32px}
.members-card p{color:#3f485a;line-height:1.95;margin-bottom:22px;white-space:pre-line;letter-spacing:.02em}
.members-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 20px;border-radius:999px;border:1px solid #2f3a4f;color:#2f3a4f;text-decoration:none;font-weight:700;letter-spacing:.04em}
.members-photo img{width:100%;height:100%;min-height:320px;object-fit:cover;filter:blur(1.1px) brightness(.84)}
/* ========================================
   Instagram
======================================== */
.instagram-section{background:radial-gradient(900px 420px at 50% 5%,#eff1f7 0%,#f6f7fb 60%,#f3f5fa 100%)}
.instagram-stage{background:#f6f7fb;border:1px solid #d6d9e2;border-radius:28px;padding:52px 56px 58px;box-shadow:0 18px 38px rgba(60,68,92,.12),inset 0 0 0 2px rgba(160,145,226,.24)}
.instagram-kicker{font-family:var(--font-sans);font-size:.62rem;letter-spacing:.14em;color:#5d6a83;text-align:center}
.instagram-headline{font-family:var(--font-en),var(--font-sans);font-size:1.56rem;letter-spacing:.1em;text-align:center;color:#1f2c41;margin-top:10px}
.instagram-subline{font-family:var(--font-sans);font-size:.92rem;line-height:1.8;color:#2c374b;text-align:center;margin-top:10px}
.instagram-tags{margin:30px auto 0;display:flex;justify-content:center;flex-wrap:wrap;gap:10px}
.instagram-tags a{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:0 20px;border-radius:999px;border:1px solid #7e879f;background:#f7f8fc;color:#2f3b56;font-family:var(--font-en),var(--font-sans);font-size:.82rem;letter-spacing:.08em;text-decoration:none;transition:background .2s ease,transform .2s ease}
.instagram-tags a:hover{background:#eef1f8;transform:translateY(-1px)}
.instagram-collage{position:relative;height:360px;margin-top:34px}
.instagram-shot{position:absolute;display:block;overflow:hidden;border-radius:14px;box-shadow:0 14px 28px rgba(37,45,67,.2);transition:transform .28s ease,filter .28s ease;z-index:1}
.instagram-shot img{width:100%;height:100%;object-fit:cover;display:block;transition:filter .3s ease}
.instagram-shot-wide img{object-fit:contain;background:#e8ebf1;padding:4px}
.shot-left-far{left:0;bottom:34px;width:19%;height:180px;opacity:.82;z-index:1}
.shot-left{left:11%;bottom:12px;width:26%;height:246px;z-index:2}
.shot-center{left:33%;bottom:-20px;width:36%;height:320px;z-index:4}
.shot-right{left:63%;bottom:12px;width:26%;height:246px;z-index:2}
.shot-right-far{right:0;bottom:34px;width:19%;height:180px;opacity:.82;z-index:1}
.shot-off{left:120%;bottom:24px;width:20%;height:180px;opacity:0;z-index:0;pointer-events:none}
.shot-left-far img,.shot-right-far img{filter:blur(1.2px) saturate(.92)}
.shot-left img,.shot-right img{filter:blur(.7px) saturate(.95)}
.shot-center img{filter:blur(.45px) saturate(.98)}
.instagram-collage:hover .instagram-shot{filter:brightness(.84)}
.instagram-collage:hover .instagram-shot:hover{filter:brightness(1);transform:translateY(-4px) scale(1.02);z-index:5}
.instagram-controls{margin-top:30px;display:flex;justify-content:center;gap:12px}
.instagram-control-btn{width:34px;height:34px;border-radius:50%;border:1px solid #8e98b1;background:#f7f8fc;color:#37415a;font-size:.88rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease,transform .2s ease}
.instagram-control-btn:hover{background:#edf0f8;transform:translateY(-1px)}
.follow-btn{min-height:48px;padding:0 24px;border-radius:999px;text-decoration:none;border:1px solid #2f3a4f;color:#2f3a4f;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-en);letter-spacing:.1em;background:#fff;font-weight:500;box-shadow:0 5px 12px rgba(18,28,44,.07)}
.banner-card h2,
.nav a span,
.follow-btn,
.members-btn{font-family:var(--font-en)}
/* ========================================
   Animations
======================================== */
@keyframes fadeInUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes heroCopyRise{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}
@keyframes spHeroTitleIn{from{opacity:0;transform:translateY(16px);filter:blur(3px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
@keyframes spHeroSubIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes filmGrain{0%{transform:translate(0,0)}25%{transform:translate(-2%,-1%)}50%{transform:translate(1.2%,1.8%)}75%{transform:translate(-1%,1%)}100%{transform:translate(0,0)}}
@keyframes filmFlicker{0%,100%{opacity:.64}50%{opacity:.8}}
/* ========================================
   Footer
======================================== */
.footer{margin-top:64px;padding:36px 0 24px;background:linear-gradient(180deg,#e9eff7,#e5ebf3);border-top:1px solid #d4dbe6}
.footer-inner{width:var(--container);margin:0 auto;padding:20px 22px;background:transparent}
.footer-top{display:flex;justify-content:space-between;gap:28px;align-items:flex-start}
.footer-brand{font-family:var(--font-en);font-size:1rem;letter-spacing:.1em;color:#243247;margin-bottom:10px}
.footer-meta{color:#4e5768;font-size:.9rem;line-height:1.85;letter-spacing:.015em}
.footer-right{text-align:left}
.footer-left a{display:inline-flex;color:#2e3749;text-decoration:none;border-bottom:1px solid #2e3749;font-size:.88rem;letter-spacing:.03em}
.footer-copy{margin-top:14px;padding-top:12px;border-top:1px solid #d7dde7;color:#667085;font-size:.72rem;letter-spacing:.05em;text-align:left}
.footer-address-grid{display:grid;grid-template-columns:1fr;gap:4px 0;justify-items:start}
.footer-address-value{color:#2f3e56}
/* ========================================
   Responsive: Mobile / Tablet
======================================== */
@media (max-width:900px){
  .opening{display:block}
  .nav{display:none}.mobile-toggle{display:inline-flex}
  .sp-break{display:inline}
  .header{position:sticky}
  .logo img{height:30px}
  .header-inner{min-height:66px;padding:9px 12px}
  .mobile-nav{position:absolute;top:calc(100% + 10px);left:50%;transform:translateX(-50%) translateY(-8px);width:var(--container);margin:0;display:block;max-height:0;overflow:hidden;opacity:0;border-radius:18px;border:1px solid rgba(255,255,255,.78);background:linear-gradient(160deg,rgba(255,255,255,.58),rgba(232,238,248,.42));backdrop-filter:blur(22px) saturate(190%);-webkit-backdrop-filter:blur(22px) saturate(190%);box-shadow:0 20px 44px rgba(18,27,44,.18),inset 0 1px 0 rgba(255,255,255,.82),inset 0 -1px 0 rgba(255,255,255,.35);transition:max-height .35s,opacity .25s,transform .25s}
  .mobile-nav.is-open{max-height:360px;opacity:1;transform:translateX(-50%) translateY(0);padding:8px 14px}
  .mobile-nav a{display:block;text-align:center;text-decoration:none;color:#1f2937;font-weight:700;padding:12px 2px;letter-spacing:.05em;position:relative;transform:translateY(-10px);opacity:0;transition:transform .3s,opacity .3s,background .2s}
  .mobile-nav a:hover{background:rgba(255,255,255,.36)}
  .mobile-nav a::after{content:"";position:absolute;left:50%;transform:translateX(-50%);bottom:4px;width:12em;max-width:78%;height:1px;background:#cfd5de}
  .mobile-nav.is-open a{transform:translateY(0);opacity:1}
  .hero{padding:0 0 48px}
  .hero-wrap{grid-template-columns:1fr;justify-items:center;text-align:center;min-height:clamp(560px,88vh,820px);padding:clamp(64px,11vh,100px) clamp(16px,4vw,28px) clamp(32px,5vh,56px)}
  .hero-bg-img{filter:blur(.55px) brightness(.92) saturate(1.02);animation:mvKenSp 28s cubic-bezier(.16,1,.3,1) infinite alternate}
  .hero-wrap::after{background:linear-gradient(106deg,var(--hero-overlay-strong),var(--hero-overlay-soft))}
  .hero-copy{text-align:center;background:linear-gradient(180deg,rgba(10,16,26,.38),rgba(10,16,26,.14));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:16px 18px;border-radius:8px;border:1px solid rgba(255,255,255,.12)}
  .hero-title{font-size:clamp(1.62rem,7.2vw,2.04rem);font-weight:600;letter-spacing:.05em;text-shadow:0 2px 18px rgba(6,10,18,.34),0 0 1px rgba(6,10,18,.55);animation:spHeroTitleIn .92s cubic-bezier(.22,.61,.36,1) .08s both}
  .hero-sub{font-size:.82rem;font-weight:500;letter-spacing:.03em;overflow:hidden;text-overflow:ellipsis;opacity:1;text-shadow:0 1px 10px rgba(6,10,18,.34);animation:spHeroSubIn .86s cubic-bezier(.22,.61,.36,1) .26s both}
  .hero-sub br{display:inline}
  .hero-contact{width:min(300px,82%);justify-self:center}.contact-box{min-height:74px}
  .services-grid{grid-template-columns:1fr}.service-flow-pc{display:none}
  .services-grid .service-card{opacity:1;transform:none;transition:opacity .7s ease,transform .7s ease}
  .services-grid.is-animated .service-card{opacity:0;transform:translateY(20px)}
  .services-grid.is-animated .service-card.is-visible{opacity:1;transform:translateY(0)}
  .services-grid.is-animated .service-card:nth-child(2){transition-delay:.12s}
  .service-card h2{letter-spacing:.06em}
  .service-card p{color:#4b5567;font-size:.92rem;line-height:1.92;letter-spacing:.02em;text-align:left;text-wrap:pretty;word-break:normal;overflow-wrap:break-word;line-break:auto}
  .service-flow-mobile{position:relative;display:block;margin-top:16px;padding:14px 12px;border:1px solid #d4dce8;border-radius:14px;background:linear-gradient(160deg,#f4f7fb 0%,#edf2f8 62%,#e9eff7 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.74),0 8px 20px rgba(27,38,58,.08);overflow:hidden}
  .service-mobile-track{display:grid;grid-template-columns:1fr;row-gap:10px}
  .service-mobile-img{width:100%;height:170px;object-fit:contain;background:transparent;padding:4px 2px;border-radius:0;border:none}
  .service-mobile-center{display:grid;grid-template-columns:auto auto auto;align-items:center;justify-content:center;column-gap:18px;min-height:92px;padding:8px 10px;border-radius:0;background:transparent;border:none}
  .vertical-text{writing-mode:vertical-rl!important;text-orientation:upright;display:inline-flex;align-items:center;justify-content:center;min-height:74px;font-weight:700;color:#2a3750;letter-spacing:.1em;font-size:.84rem}
  .vertical-arrow{display:inline-flex;align-items:center;justify-content:center;width:auto;height:auto;line-height:1;color:#2f4f7f;font-size:1.18rem;letter-spacing:.04em;border-radius:0;background:transparent;box-shadow:none}
  .banner{display:none}
  .banner-sp{display:block;padding:10px 0 70px}
  .banner-sp-hint{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    width:100%;
    margin:-6px auto 12px;
    color:#5c6678;
    font-family:var(--font-en),var(--font-sans);
    font-size:.66rem;
    font-weight:500;
    letter-spacing:.12em;
    line-height:1;
    opacity:.92;
    animation:swipeHintPulse 2.1s cubic-bezier(.16,1,.3,1) infinite;
  }
  .banner-sp-hint::before,
  .banner-sp-hint::after{
    content:"";
    width:22px;
    height:1px;
    flex-shrink:0;
  }
  .banner-sp-hint::before{
    background:linear-gradient(90deg,rgba(92,102,120,0),rgba(92,102,120,.55));
  }
  .banner-sp-hint::after{
    background:linear-gradient(90deg,rgba(92,102,120,.55),rgba(92,102,120,0));
  }
  .banner-sp-track{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:4px 4px 14px}
  .banner-sp-track::-webkit-scrollbar{display:none}
  .banner-sp-card{flex:0 0 88%;scroll-snap-align:center;border-radius:18px;overflow:hidden;position:relative;border:1px solid #d0d6de;background:#fff;box-shadow:0 12px 26px rgba(17,24,39,.11)}
  .banner-sp-card img{width:100%;height:190px;object-fit:cover;object-position:center 32%;filter:blur(.75px) brightness(.8);transform:scale(1.035) translate3d(-0.28%,0,0);transform-origin:50% 38%;backface-visibility:hidden;-webkit-backface-visibility:hidden;animation:bannerKenSp 36s cubic-bezier(.16,1,.3,1) infinite alternate;will-change:transform}
  .banner-sp-card .banner-card{position:static;left:auto;right:auto;bottom:auto;width:100%;max-width:none;background:#fff;border:none;backdrop-filter:none;border-radius:0;padding:16px 16px 18px}
  .banner-sp-card .banner-card h2{font-size:1.16rem;line-height:1.35;margin-bottom:10px;letter-spacing:.08em;color:#223146}
  .banner-sp-card .banner-card p{font-size:.9rem;line-height:1.88;color:#364154;letter-spacing:.024em;word-break:normal;overflow-wrap:anywhere;text-wrap:pretty}
  .banner-sp-dots{display:flex;justify-content:center;gap:8px;margin-top:8px}
  .banner-sp-dots span{width:8px;height:8px;border-radius:50%;background:#b8bfcb}
  .banner-sp-dots span.active{background:#6a7384}
  .members-grid{grid-template-columns:1fr;gap:0;border:1px solid #d0d6de;border-radius:18px;overflow:hidden;background:#fff;box-shadow:0 12px 26px rgba(17,24,39,.11)}
  .members-photo{order:1;border:none;box-shadow:none;border-radius:0;background:transparent}
  .members-photo img{min-height:0;height:220px;object-fit:cover;object-position:center 28%;filter:blur(1px) brightness(.8)}
  .members-card{order:2;border:none;box-shadow:none;border-radius:0;background:#fff;padding:18px 16px 20px}
  .members-card .section-title{font-size:1.16rem;line-height:1.35;margin-bottom:10px;letter-spacing:.08em;color:#223146}
  .members-card p{font-size:.9rem;line-height:1.88;letter-spacing:.024em;color:#364154}
  .members-btn{min-height:42px;padding:0 18px;font-size:.84rem;letter-spacing:.04em}
  .instagram-stage{padding:34px 18px 28px;border-radius:20px}
  .instagram-kicker{font-size:.54rem}
  .instagram-headline{font-size:clamp(1.05rem,4.6vw,1.3rem);letter-spacing:.06em;white-space:nowrap}
  .instagram-subline{font-size:.82rem;line-height:1.72}
  .instagram-tags{justify-content:center;margin-top:18px}
  .instagram-tags a{min-height:36px;font-size:.78rem}
  .instagram-collage{height:auto;display:flex;flex-wrap:nowrap;gap:10px;overflow-x:auto;scroll-behavior:auto;scroll-snap-type:none;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;margin-top:18px;padding:2px 2px 8px}
  .instagram-collage::-webkit-scrollbar{display:none}
  .instagram-shot{position:relative!important;left:auto!important;right:auto!important;bottom:auto!important;opacity:1!important;flex:0 0 82%;width:auto!important;height:200px!important;scroll-snap-align:center}
  .shot-left-far,.shot-left,.shot-center,.shot-right,.shot-right-far,.shot-off{flex-basis:82%!important;height:200px!important}
  .instagram-shot-wide img{object-fit:cover;background:transparent;padding:0}
  .instagram-controls{display:none}
  .footer-inner{padding:16px}
  .footer-top{flex-direction:column;gap:14px}
  .footer-address-grid{grid-template-columns:1fr;gap:4px}
  .footer-copy{text-align:center}
}
/* ========================================
   Responsive: Small Phones
======================================== */
@media (max-width:390px){
  .opening-title{font-family:var(--font-en);font-size:clamp(1.7rem,8.5vw,2.4rem);font-weight:600;letter-spacing:.08em}
  .opening-loader{top:calc(50% + 40px)}
  .instagram-collage{gap:8px}
  .instagram-shot{flex-basis:90%!important;height:188px!important}
  .shot-left-far,.shot-left,.shot-center,.shot-right,.shot-right-far,.shot-off{flex-basis:90%!important;height:188px!important}
  .instagram-headline{font-size:clamp(.94rem,4.1vw,1.08rem);letter-spacing:.04em}
}
/* ========================================
   Responsive: Narrow Phones
======================================== */
@media (max-width:375px){
  .opening-title{font-family:var(--font-en);font-size:clamp(1.56rem,8.2vw,2.2rem);font-weight:600;letter-spacing:.08em}
  .opening-loader{top:calc(50% + 36px)}
}
/* ========================================
   Responsive: Desktop
======================================== */
@media (min-width:901px){
  .header-inner{padding:10px 24px;border-color:#eef2f7;box-shadow:0 12px 26px rgba(16,24,38,.08)}
  .nav{margin-left:auto;gap:20px}
  .nav a{color:#233046;letter-spacing:.06em}
  .nav a span{letter-spacing:.17em;color:#657188}
  .hero-wrap{border-color:rgba(255,255,255,.44);box-shadow:0 26px 56px rgba(14,21,34,.24)}
  .hero-title{letter-spacing:.05em;text-shadow:0 2px 20px rgba(8,12,20,.28)}
  .hero-sub{letter-spacing:.035em;opacity:1}
  .services-grid{align-items:stretch}
  .service-card{border-color:#d6dde8;box-shadow:0 12px 30px rgba(17,27,43,.06)}
  .service-card p{color:#556076}
  .service-flow-pc{border-color:#d8dfe9;background:linear-gradient(180deg,#f8f9fb,#f5f7fa)}
  .flow-middle img{border-color:#dbe3ee;background:#edf2f7}
  .banner-wrap{border-color:#d4dbe6;box-shadow:0 20px 40px rgba(17,24,39,.14)}
  .banner-card{background:rgba(236,241,247,.56);border-color:rgba(255,255,255,.72);-webkit-backdrop-filter:blur(14px) saturate(128%);backdrop-filter:blur(14px) saturate(128%);box-shadow:0 10px 22px rgba(23,34,52,.12)}
  .members-grid{position:relative;display:block;min-height:440px}
  .members-photo{height:440px}
  .members-photo img{height:100%;min-height:0;filter:blur(1.6px) brightness(.8)}
  .members-card{position:absolute;right:28px;top:22px;bottom:22px;transform:none;display:flex;flex-direction:column;justify-content:flex-start;width:min(46%,500px);padding:22px 24px 18px;overflow:visible;z-index:2;background:linear-gradient(160deg,rgba(246,250,255,.52),rgba(227,236,248,.32));backdrop-filter:blur(15px) saturate(132%);-webkit-backdrop-filter:blur(15px) saturate(132%);border-color:rgba(255,255,255,.62);box-shadow:0 14px 32px rgba(18,27,43,.16),inset 0 1px 0 rgba(255,255,255,.58)}
  .members-card .section-title{margin-bottom:12px;font-size:1.18rem;line-height:1.2;letter-spacing:.09em}
  .members-card p{color:#2f3d52}
  .members-card p{margin-bottom:12px;font-size:.86rem;line-height:1.68;letter-spacing:.02em;max-width:none}
  .members-btn{align-self:flex-start;margin-top:auto}
  .members-card,.members-photo{border-color:#d6dde8;box-shadow:0 12px 28px rgba(18,27,43,.06)}
  .instagram-stage{padding:46px 48px 56px}
  .follow-btn,.members-btn{transition:transform .22s ease,box-shadow .22s ease,background .22s ease,color .22s ease}
  .follow-btn:hover,.members-btn:hover{transform:translateY(-2px);box-shadow:0 10px 18px rgba(19,29,46,.14)}
  .footer{border-top-color:#d5dce7}
  .footer-top{flex-direction:row-reverse;align-items:flex-start}
  .footer-left{text-align:right}
  .footer-right{text-align:left}
  .footer-left a{color:#243249;border-bottom-color:#243249}
  .footer-meta,.footer-copy{color:#5f697d}
  .footer-copy{text-align:center}
}
/* ========================================
   Accessibility: Reduced Motion
======================================== */
@media (prefers-reduced-motion: reduce){
  .instagram-shot,.instagram-shot img,.instagram-control-btn,.instagram-tags a{transition:none!important}
  .banner-slide img,.banner-slide.active img,.banner-sp-card img{animation:none!important;will-change:auto}
}

/* ========================================
   Polish Override Unit
   (layout unchanged / animation quality upgrade)
======================================== */
html{scroll-behavior:smooth}
body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}

/* Typography refinement */
.hero-title{letter-spacing:.05em}
.section-title{letter-spacing:.12em}

/* Ambient shadows and soft borders */
.header-inner{
  border-color:rgba(255,255,255,.72);
  box-shadow:0 12px 34px rgba(17,24,39,.05);
}
.service-card,
.members-card,
.members-photo,
.banner-wrap,
.instagram-stage{
  box-shadow:0 14px 34px rgba(17,24,39,.05);
}
.service-card,
.members-card,
.members-photo,
.banner-wrap,
.instagram-stage,
.contact-box{
  border-color:rgba(255,255,255,.7);
}

/* Premium easing and interaction response */
.nav a::after,
.contact-box,
.members-btn,
.follow-btn,
.instagram-shot,
.instagram-shot img,
.instagram-control-btn,
.instagram-tags a,
.banner-slide{
  transition-timing-function:cubic-bezier(.16,1,.3,1);
}
.mobile-nav,
.mobile-nav a{
  transition-timing-function:cubic-bezier(.25,.8,.25,1);
}

/* Subtle hover scale for tactile feedback */
.members-btn:hover,
.follow-btn:hover,
.instagram-control-btn:hover,
.instagram-tags a:hover{
  transform:translateY(-1px) scale(1.02);
}
.contact-box:hover{
  transform:translateY(-2px) scale(1.02);
}

@media (hover:hover){
  .service-card:hover{
    transform:translateY(-2px) scale(1.01);
    box-shadow:0 18px 36px rgba(17,24,39,.08);
  }
}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .service-card:hover,
  .members-btn:hover,
  .follow-btn:hover,
  .instagram-control-btn:hover,
  .instagram-tags a:hover,
  .contact-box:hover{
    transform:none;
  }
}

/* ========================================
   Polish Override Unit v2
   (premium motion / depth / interaction)
======================================== */
body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}

/* Upgrade easing on interactive / animated surfaces.
   Do NOT set animation-timing-function on * — it overrides timing embedded in
   `animation` shorthands and can break keyframed / layered motion sitewide. */
*,
*::before,
*::after{
  transition-timing-function:cubic-bezier(.16,1,.3,1);
}

/* Ambient occlusion style multi-layer shadows */
.header-inner{
  box-shadow:
    0 4px 6px -1px rgba(0,0,0,.02),
    0 20px 40px -10px rgba(17,24,39,.08);
}
.contact-box{
  box-shadow:
    0 4px 8px -2px rgba(10,18,30,.05),
    0 18px 34px -12px rgba(17,24,39,.18),
    inset 0 1px 0 rgba(255,255,255,.2);
}

/* Hero visual depth */
.hero-bg-img{
  animation:mvKen 28s cubic-bezier(.16,1,.3,1) infinite alternate;
  will-change:transform;
}
.hero-title{letter-spacing:.05em}

@keyframes mvKen{
  from{transform:scale(1.035) translate3d(-0.35%,0,0)}
  to{transform:scale(1.09) translate3d(0.35%,-0.25%,0)}
}

@keyframes mvKenSp{
  from{transform:scale(1.08) translate3d(-0.2%,0,0)}
  to{transform:scale(1.125) translate3d(0.2%,-0.18%,0)}
}

/* Micro-interactions */
.nav a{
  transition:transform .34s,letter-spacing .34s,color .34s;
}
.nav a:hover{
  transform:translateY(-1px) scale(1.02);
  letter-spacing:.075em;
}
.contact-box{
  transition:transform .32s,background .32s,box-shadow .32s,letter-spacing .32s;
}
.contact-box:hover{
  transform:translateY(-2px) scale(1.02);
  letter-spacing:.14em;
}

@media (prefers-reduced-motion: reduce){
  .hero-bg-img{animation:none}
  .hero-title,.hero-sub{animation:none}
  .nav a:hover,
  .contact-box:hover{transform:none}
  .banner-slide img,.banner-slide.active img,.banner-sp-card img{animation:none!important;will-change:auto}
}

/* ========================================
   Hero background motion fix
   (ensure MV zoom survives later global animation overrides)
======================================== */
@media not (prefers-reduced-motion: reduce){
  .hero-bg-img{
    animation:mvKen 28s cubic-bezier(.16,1,.3,1) infinite alternate;
    will-change:transform;
  }
}

/* ========================================
   Global Scroll Reveal Unit
======================================== */
.reveal{
  opacity:0;
  transform:translateY(30px);
  transition-property:opacity,transform;
  transition-duration:1s,1s;
  transition-timing-function:cubic-bezier(.16,1,.3,1),cubic-bezier(.16,1,.3,1);
  transition-delay:var(--reveal-delay,0s),var(--reveal-delay,0s);
}
.reveal.active{
  opacity:1;
  transform:translateY(0);
}

@media (prefers-reduced-motion: reduce){
  .reveal{
    opacity:1;
    transform:none;
    transition:none;
  }
  .banner-sp-hint{animation:none}
}

@media (max-width:1180px){
  .banner{display:none}
  .banner-sp{display:block;padding:10px 0 70px}
  .banner-sp-hint{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    width:100%;
    margin:-6px auto 12px;
    color:#5c6678;
    font-family:var(--font-en),var(--font-sans);
    font-size:.66rem;
    font-weight:600;
    letter-spacing:.12em;
    line-height:1;
    opacity:.92;
    animation:swipeHintPulse 2.1s cubic-bezier(.16,1,.3,1) infinite;
  }
  .banner-sp-hint::before,
  .banner-sp-hint::after{
    content:"";
    width:22px;
    height:1px;
    flex-shrink:0;
  }
  .banner-sp-hint::before{
    background:linear-gradient(90deg,rgba(92,102,120,0),rgba(92,102,120,.55));
  }
  .banner-sp-hint::after{
    background:linear-gradient(90deg,rgba(92,102,120,.55),rgba(92,102,120,0));
  }
  .banner-sp-track{
    display:flex;
    gap:14px;
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    -webkit-overflow-scrolling:touch;
    padding:4px 4px 14px;
  }
  .banner-sp-track::-webkit-scrollbar{display:none}
  .banner-sp-card{
    flex:0 0 96%;
    scroll-snap-align:center;
    border-radius:18px;
    overflow:hidden;
    position:relative;
    border:1px solid #d0d6de;
    background:#fff;
    box-shadow:0 12px 26px rgba(17,24,39,.11);
  }
  .banner-sp-card img{
    width:100%;
    height:190px;
    object-fit:cover;
    object-position:center 32%;
    filter:blur(.75px) brightness(.8);
    transform:scale(1.035) translate3d(-0.28%,0,0);
    transform-origin:50% 38%;
    backface-visibility:hidden;
    -webkit-backface-visibility:hidden;
    animation:bannerKenSp 36s cubic-bezier(.16,1,.3,1) infinite alternate;
    will-change:transform;
  }
  .banner-sp-card .banner-card{
    position:static;
    left:auto;
    right:auto;
    bottom:auto;
    width:100%;
    max-width:none;
    background:#fff;
    border:none;
    backdrop-filter:none;
    border-radius:0;
    padding:16px 16px 18px;
  }
  .banner-sp-card .banner-card h2{
    font-size:1.16rem;
    line-height:1.35;
    margin-bottom:10px;
    letter-spacing:.08em;
    color:#223146;
  }
  .banner-sp-card .banner-card p{
    font-size:.9rem;
    line-height:1.88;
    color:#364154;
    letter-spacing:.024em;
    word-break:normal;
    overflow-wrap:anywhere;
    text-wrap:pretty;
  }
  .banner-sp-dots{
    display:flex;
    justify-content:center;
    gap:8px;
    margin-top:8px;
  }
  .banner-sp-dots span{
    width:8px;
    height:8px;
    border-radius:50%;
    background:#b8bfcb;
  }
  .banner-sp-dots span.active{background:#6a7384}
}

@media (max-width:1180px){
  .banner-sp-card img{
    width:100%;
    height:clamp(230px, 58vw, 320px);
    margin:0;
    border-radius:0;
    aspect-ratio:auto;
    object-fit:contain;
    object-position:center center;
    background:#e8ebf1;
    filter:none;
    transform:none;
    animation:none;
    will-change:auto;
  }
}

@media (max-width:1180px){
  .instagram-stage{padding:34px 18px 28px;border-radius:20px}
  .instagram-kicker{font-size:.54rem}
  .instagram-headline{font-size:clamp(1.05rem,4.6vw,1.3rem);letter-spacing:.06em;white-space:nowrap}
  .instagram-subline{font-size:.82rem;line-height:1.72}
  .instagram-tags{justify-content:center;margin-top:18px}
  .instagram-tags a{min-height:36px;font-size:.78rem}
  .instagram-collage{height:auto;display:flex;flex-wrap:nowrap;gap:10px;overflow-x:auto;scroll-behavior:auto;scroll-snap-type:none;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;margin-top:18px;padding:2px 2px 8px}
  .instagram-collage::-webkit-scrollbar{display:none}
  .instagram-shot{position:relative!important;left:auto!important;right:auto!important;bottom:auto!important;opacity:1!important;flex:0 0 82%;width:auto!important;height:200px!important;scroll-snap-align:center}
  .shot-left-far,.shot-left,.shot-center,.shot-right,.shot-right-far,.shot-off{flex-basis:82%!important;height:200px!important}
  .instagram-shot-wide img{object-fit:cover;background:transparent;padding:0}
  .instagram-controls{display:none}
}

@media (max-width:390px){
  .instagram-collage{gap:8px}
  .instagram-shot{flex-basis:90%!important;height:188px!important}
  .shot-left-far,.shot-left,.shot-center,.shot-right,.shot-right-far,.shot-off{flex-basis:90%!important;height:188px!important}
  .instagram-headline{font-size:clamp(.94rem,4.1vw,1.08rem);letter-spacing:.04em}
}

@keyframes swipeHintPulse{
  0%,100%{transform:translateX(0);opacity:.82}
  50%{transform:translateX(4px);opacity:1}
}

/* Safari / WebKit layout stabilization */
.container,
.header-inner,
.footer-inner,
.mobile-nav{
  width:calc(100% - 40px);
  max-width:1120px;
}

@media (max-width:480px){
  .container,
  .header-inner,
  .footer-inner,
  .mobile-nav{
    width:calc(100% - 28px);
  }
}

@media (min-width:1181px){
  .banner-wrap{
    min-height:clamp(640px, 54vw, 760px);
    height:auto;
  }

  .banner-slide{
    padding:40px 40px 64px;
    overflow:visible;
  }

  .banner-card{
    width:min(560px, 100%);
    height:auto;
    min-height:0;
    max-height:none;
    overflow:visible;
    padding:24px 26px;
  }

  .banner-card p{
    white-space:normal;
    word-break:normal;
    overflow-wrap:anywhere;
    line-break:auto;
  }
}

.is-safari .banner-slide{
  opacity:0;
  transform:none!important;
  transition:opacity .45s ease!important;
  will-change:auto;
}

.is-safari .banner-slide.active{
  opacity:1;
  transform:none!important;
}

.is-safari .banner-slide img{
  transform:none!important;
  animation:none!important;
  filter:brightness(.78) saturate(.94);
  will-change:auto;
}

.is-safari .banner .banner-card{
  background:rgba(236,241,247,.94)!important;
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
  width:min(620px, calc(100% - 68px))!important;
  overflow:visible!important;
}

.is-safari .banner .banner-card p,
.is-safari .banner .banner-text{
  display:block!important;
  width:100%!important;
  max-width:100%!important;
  font-size:.88rem!important;
  line-height:1.72!important;
  letter-spacing:0!important;
  white-space:normal!important;
  word-break:break-all!important;
  overflow-wrap:anywhere!important;
  line-break:anywhere!important;
}

/* Final Safari overflow guard */
html,
body,
main{
  max-width:100vw!important;
  overflow-x:hidden!important;
}

@media (min-width:901px){
  .banner-wrap{
    min-height:470px!important;
    height:470px!important;
    max-height:none!important;
  }

  .banner-slide{
    box-sizing:border-box!important;
    padding:34px 34px 52px!important;
  }

  .banner-card{
    box-sizing:border-box!important;
    width:min(530px, calc(100% - 68px))!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    overflow:visible!important;
    padding:20px 22px!important;
  }

  .banner-card p,
  .banner-comment{
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    white-space:normal!important;
    word-break:normal!important;
    overflow-wrap:break-word!important;
    line-break:auto!important;
  }
}

.banner-card,
.banner-card h2,
.banner-card p{
  max-width:100%!important;
}

.banner-card p{
  display:block!important;
  width:100%!important;
  white-space:normal!important;
  word-break:normal!important;
  overflow-wrap:break-word!important;
  line-break:auto!important;
}
