body {margin:0;font-family:'Noto Sans JP',sans-serif;background:#f7f8fa;color:#1e293b;line-height:1.6;}
.container {max-width:1200px;margin:0 auto;padding:0 1rem;}
.section {max-width:1200px;margin:0 auto;padding:0 1rem;}
.news {background:#009eff;color:#fff;padding:.5rem 0;}
.news-list {list-style:none;display:flex;gap:1rem;overflow-x:auto;margin:0;padding:0;}
.news-list li {white-space:nowrap;}
.tel‑floating {position:fixed;bottom:20px;right:20px;background:#009eff;color:#fff;padding:.8rem 1.2rem;border-radius:50px;z-index:2000;text-decoration:none;}
.header {position:sticky;top:0;background:#012169;color:#fff;z-index:1000;}
.header‑inner {display:flex;justify-content:space-between;align-items:center;padding:1rem 0;}
.logo {font-size:1.5rem;font-weight:700;}
.nav ul {display:flex;list-style:none;gap:2rem;margin:0;padding:0;}
.nav a {color:#fff;text-decoration:none;font-weight:500;transition:opacity .3s;}
.nav a:hover {opacity:0.7;}
.hamburger {display:none;font-size:2rem;cursor:pointer;}
.hero {height:80vh;background-attachment:fixed;background-size:cover;background-position:center center;display:flex;align-items:center;justify-content:center;text-align:center;color:#fff;position:relative;}
.hero {background-image:url('images/main.webp');}
.hero-text {background:rgba(1,33,105,0.6);padding:2rem;border-radius:8px;animation:fadeIn 1s ease both;}
.btn {display:inline-block;margin-top:1rem;padding:.8rem 2rem;background:#009eff;color:#fff;border-radius:50px;text-decoration:none;transition:background .3s;}
.btn:hover {background:#007acc;}
.section {padding:4rem 0;}
.section h2 {display:flex;justify-content:space-between;font-size:1.8rem;border-bottom:3px solid #009eff;padding-bottom:.5rem;margin-bottom:2rem;}
.section h2 .en {font-size:1rem;color:#64748b;}
.center {text-align:center;}
.cards {display:flex;flex-wrap:wrap;gap:2rem;justify-content:center;}
.card {background:#fff;padding:2rem;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,0.05);flex:1 1 calc(33% - 2rem);max-width:300px;transition:transform .3s, box-shadow .3s;}
.card:hover {transform:translateY(-5px);box-shadow:0 8px 20px rgba(0,0,0,0.1);}
table {width:100%;border-collapse:collapse;margin:0 auto;}
th,td {border:1px solid #cbd5e1;padding:.75rem;text-align:left;}
.map-container iframe {width:100%;height:300px;border:0;border-radius:8px;}
.footer {background:#012169;color:#fff;text-align:center;padding:1rem;}
.fade-in {opacity:0;transform:translateY(30px);transition:all .6s ease;}
.in-view {opacity:1;transform:translateY(0);}
@media(max-width:768px){.nav ul {display:none;flex-direction:column;position:fixed;top:0;left:0;width:100%;height:100vh;background:#012169;justify-content:center;align-items:center;gap:2rem;}.hamburger {display:block;}.cards {flex-direction:column;}.hero {height:60vh;}.news-list {flex-direction:column;align-items:flex-start;}}
* { margin: 0; padding: 0; box-sizing: border-box; }
.kv-bg { position: relative; width: 100%; height: 100vh; overflow: hidden; }
.kv-bg video { width: 100%; height: 100%; object-fit: cover; position: absolute; top: 0; left: 0; z-index: 1; }
.kv-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); z-index: 2; }
.kv-content { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: #fff; text-align: center; z-index: 3; }
.kv-title { font-size: 3rem; font-weight: 700; margin-bottom: 1rem; }
.kv-subtitle { font-size: 1.25rem; letter-spacing: 2px; }
.scroll-message { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); z-index: 4; text-align: center; color: #fff; }
.scroll-line { width: 1px; height: 40px; background: #fff; margin: 0 auto 8px auto; animation: scrollDown 1.5s infinite; }
.scroll-text { font-size: 0.9rem; letter-spacing: 1px; opacity: 0.7; }
@keyframes scrollDown {
  0% { transform: scaleY(1); opacity: 1; }
  50% { transform: scaleY(0.5); opacity: 0.3; }
  100% { transform: scaleY(1); opacity: 1; }
}
.intro-message { background: url(images/sub-visual.webp); color: #fff; padding: 4rem 1rem; text-align: center; display: flex; justify-content: center; align-items: center; height: 800px;}
.intro-message h2 { font-size: 1.75rem; margin-bottom: 1rem; }
.intro-message p { font-size: 1rem; }
@media (max-width: 768px) {
  .kv-title { font-size: 2rem; }
  .kv-subtitle { font-size: 1rem; }
  .intro-message h2 { font-size: 1.5rem; }
}
.circle-text { position: relative; width: 300px; height: 300px; margin: 100px auto; }
.circle-text p { position: absolute; width: 100%; height: 100%; font-size: 1rem; text-transform: uppercase; letter-spacing: 3px; animation: rotateText 20s linear infinite; transform-origin: center; display: flex; align-items: center; justify-content: center; }
@keyframes rotateText {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
.circle-text p::before {content: attr(data-text); display: block; width: 100%; text-align: center;}
.svg-text { width: 200px; height: 200px; margin: 100px auto; display: block; animation: spin 30s linear infinite; }
@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
.parallax-bg { background-image: url('images/main.webp'); background-size: cover; background-position: center; background-attachment: fixed; width: 100%; height: 100vh; position: relative; z-index: 1;}
.logo img { width: 200px;}
.intro-message-container { position: relative;}
.intro-message-container::before { content: ''; width: 1000px; height: 1000px; background-image: url('images/subtitle.svg'); background-repeat: no-repeat; background-size: cover; position: absolute; left: -1000px; top: -750%; background-position: center; animation: rotateBg 120s linear infinite; mix-blend-mode: difference; z-index: 100;}
@keyframes rotateBg {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
#map img{width: 100%;}
.loop-gallery { overflow: hidden; width: 100%; padding: 2rem 0; }
.loop-track { display: flex; width: max-content; animation: scrollLoop 40s linear infinite; }
.loop-item { flex: 0 0 auto; width: 250px; margin-right: 1rem; }
.loop-item img { width: 100%; height: auto; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); }
@keyframes scrollLoop { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } }
@media (max-width: 768px) {
  .loop-gallery { padding: 1rem 0; }
  .loop-item { width: 180px; margin-right: 0.5rem; }
}