@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100;300;400;500;700;900&family=Plus+Jakarta+Sans:wght@800&display=swap');

body { 
  font-family: 'Noto Sans JP', sans-serif; 
  -webkit-font-smoothing: antialiased;
}

/* トップページ・スマホ時はハンバーガーを最初から表示（下層は .sub-page-floating-hamburger で区別） */
@media (max-width: 1023px) {
  #floating-hamburger:not(.sub-page-floating-hamburger) {
    transform: translateY(0);
    opacity: 1;
    pointer-events: auto;
  }
}

/* トップページのベース背景（楕円以外は白に統一） */
.page-ripple-bg {
  background: #ffffff;
  position: fixed;
  inset: 0;
  z-index: -1;
}

@keyframes ripple-move {
  0%, 100% { transform: translate(-5%, -5%) scale(1); }
  50% { transform: translate(5%, 5%) scale(1.1); }
}

.page-ripple-bg::after {
  content: "";
  position: absolute;
  inset: -50%;
  background: radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0.4) 0%, rgba(255,255,255,0) 70%);
  animation: ripple-move 15s infinite ease-in-out;
}

@keyframes mesh-dynamic {
  0% { transform: translate(0, 0) scale(1.2) rotate(0deg); }
  33% { transform: translate(20%, -15%) scale(1.8) rotate(40deg); }
  66% { transform: translate(-15%, 20%) scale(1.4) rotate(-25deg); }
  100% { transform: translate(0, 0) scale(1.2) rotate(0deg); }
}

.background-mesh-vivid {
  background: 
    radial-gradient(at 0% 0%, #064e3b 0px, transparent 65%),
    radial-gradient(at 100% 0%, #facc15 0px, transparent 70%),
    radial-gradient(at 100% 100%, #3b82f6 0px, transparent 60%),
    radial-gradient(at 0% 100%, #10b981 0px, transparent 60%),
    radial-gradient(at 50% 50%, #f59e0b 0px, transparent 65%),
    radial-gradient(at 80% 20%, #bef264 0px, transparent 60%),
    radial-gradient(at 20% 80%, #06b6d4 0px, transparent 60%),
    #ffffff;
  filter: blur(100px) saturate(3) brightness(1.4); 
  animation: mesh-dynamic 14s infinite ease-in-out;
}

@keyframes organic-mask-anim {
  0% { transform: translate(0, 0) rotate(0deg); border-radius: 40% 60% 70% 30% / 40% 40% 60% 60%; }
  50% { transform: translate(10vw, -5vh) rotate(20deg); border-radius: 65% 35% 45% 55% / 45% 65% 35% 55%; }
  100% { transform: translate(0, 0) rotate(0deg); border-radius: 40% 60% 70% 30% / 40% 40% 60% 60%; }
}

.organic-mask-large {
  animation: organic-mask-anim 22s infinite ease-in-out;
  background: white;
  box-shadow: 0 0 100px rgba(255,255,255,0.9) inset;
}

.organic-mask-small {
  animation: organic-mask-anim 18s infinite ease-in-out reverse;
  background: white;
  box-shadow: 0 0 80px rgba(255,255,255,0.9) inset;
}

/* 下層ページでは背景楕円を非表示 */
body.sub-page {
  background-color: #ffffff !important;
}

body.sub-page .organic-mask-large,
body.sub-page .organic-mask-small,
body.sub-page .background-mesh-vivid,
body.sub-page .page-ripple-bg {
  display: none !important;
  opacity: 0 !important;
  visibility: hidden !important;
}

/* 下層ページの背景を確実に白にする */
body.sub-page::before,
body.sub-page::after {
  display: none !important;
}

/* 下層ページの.page-ripple-bgの疑似要素も非表示 */
body.sub-page .page-ripple-bg::before,
body.sub-page .page-ripple-bg::after {
  display: none !important;
  opacity: 0 !important;
  visibility: hidden !important;
  content: none !important;
}

.mix-blend-text {
  mix-blend-mode: multiply;
  opacity: 0.95;
}

.logo-main {
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-weight: 800;
  letter-spacing: -0.04em;
  display: inline-block;
}

.intellectual-leading-h { line-height: 1.4 !important; }
.intellectual-leading-p { line-height: 1.8 !important; }

@keyframes scroll-infinite {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
.animate-infinite-scroll {
  display: flex;
  width: max-content;
  animation: scroll-infinite 60s linear infinite;
}

/* Scramble text — hide raw text until JS wraps each char in spans */
.scramble-text {
  min-height: 1.5em;
  white-space: nowrap;
  color: transparent;
}
.scramble-text span {
  color: rgb(15 23 42);
}

/* Hero CTA — スクランブル完了直後にチョイ上からフェードイン */
.hero-cta-reveal.hero-cta-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Fullscreen menu — clip-path circle reveal */
#mobile-menu {
  clip-path: circle(0% at calc(100% - 38px) 38px);
  transition: clip-path 0.85s cubic-bezier(0.77, 0, 0.175, 1);
  will-change: clip-path;
}
#mobile-menu.menu-open {
  clip-path: circle(150% at calc(100% - 38px) 38px);
}

/* Menu items — slide + fade with stagger */
.nav-item-stagger {
  opacity: 0;
  transform: translateX(60px) skewX(-4deg);
  transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
#mobile-menu.menu-open .nav-item-stagger {
  opacity: 1;
  transform: translateX(0) skewX(0deg);
}

@keyframes scroll-line-move {
  0% { transform: translateY(-100%); }
  100% { transform: translateY(100%); }
}
.animate-scroll-line {
  animation: scroll-line-move 2.5s cubic-bezier(0.77, 0, 0.175, 1) infinite;
}

.subtle-gradient-border {
  border: 1px solid transparent;
  border-image: linear-gradient(135deg, #1e293b, #64748b, #1e293b) 1;
}

.scrollbar-hide::-webkit-scrollbar {
  display: none;
}
.scrollbar-hide {
  -ms-overflow-style: none;
  scrollbar-width: none;
}

/* Google Maps埋め込みのデフォルトピンとボタンを非表示 */
#google-map {
  pointer-events: auto;
}

/* Google Mapsの埋め込み内の要素を非表示にする（iframe内なので直接は効かないが、オーバーレイで対応） */
.map-overlay-hide {
  position: relative;
}

.map-overlay-hide::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 15;
  pointer-events: none;
  background: transparent;
}

/* Google Maps default pins hide */
iframe[src*="maps.google.com"] {
  filter: grayscale(1) contrast(1.2) opacity(0.8); /* Optional: style the map itself */
}
iframe[src*="maps.google.com"] .gm-style-iw,
iframe[src*="maps.google.com"] .gm-ui-hover-effect,
iframe[src*="maps.google.com"] .gmnoprint,
iframe[src*="maps.google.com"] .gm-fullscreen-control,
iframe[src*="maps.google.com"] .gm-svpc,
iframe[src*="maps.google.com"] .gm-style-cc,
iframe[src*="maps.google.com"] .gmnoprint a,
iframe[src*="maps.google.com"] .gmnoprint img {
  display: none !important;
}

/* 参加高校詳細ページ - 記事コンテンツエリア */
.article-content {
  position: relative;
  padding: 3rem 2rem;
  background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
  border-radius: 24px;
  box-shadow: 
    0 4px 6px -1px rgba(0, 0, 0, 0.05),
    0 10px 15px -3px rgba(0, 0, 0, 0.05),
    0 0 0 1px rgba(0, 0, 0, 0.05);
  overflow: hidden;
}

.article-content::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 8px;
  background: linear-gradient(90deg, #10b981 0%, #3b82f6 50%, #8b5cf6 100%);
}

/* 記事コンテンツ内の要素スタイル（クラスなしの要素に適用） */
.article-content > * {
  position: relative;
  z-index: 1;
}

.article-content p {
  font-size: 1.125rem;
  line-height: 1.875;
  color: #475569;
  margin-bottom: 1.5rem;
}

.article-content h2 {
  font-size: 2rem;
  font-weight: 700;
  color: #0f172a;
  margin-top: 3rem;
  margin-bottom: 1.5rem;
  line-height: 1.3;
  letter-spacing: -0.02em;
}

.article-content h3 {
  font-size: 1.5rem;
  font-weight: 700;
  color: #0f172a;
  margin-top: 2.5rem;
  margin-bottom: 1rem;
  line-height: 1.4;
  letter-spacing: -0.01em;
}

.article-content h4 {
  font-size: 1.25rem;
  font-weight: 600;
  color: #1e293b;
  margin-top: 2rem;
  margin-bottom: 0.75rem;
}

.article-content ul,
.article-content ol {
  margin: 1.5rem 0;
  padding-left: 1.5rem;
  color: #475569;
}

.article-content li {
  font-size: 1.125rem;
  line-height: 1.875;
  margin-bottom: 0.75rem;
}

.article-content ul li {
  list-style-type: disc;
}

.article-content ol li {
  list-style-type: decimal;
}

.article-content img {
  max-width: 100%;
  height: auto;
  border-radius: 12px;
  margin: 2rem 0;
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
}

.article-content a {
  color: #10b981;
  text-decoration: underline;
  text-underline-offset: 2px;
  transition: color 0.2s ease;
}

.article-content a:hover {
  color: #059669;
}

.article-content blockquote {
  border-left: 4px solid #10b981;
  padding-left: 1.5rem;
  margin: 2rem 0;
  font-style: italic;
  color: #64748b;
}

.article-content code {
  background-color: #f1f5f9;
  padding: 0.125rem 0.375rem;
  border-radius: 4px;
  font-size: 0.875em;
  color: #e11d48;
}

.article-content pre {
  background-color: #1e293b;
  color: #e2e8f0;
  padding: 1.5rem;
  border-radius: 12px;
  overflow-x: auto;
  margin: 2rem 0;
}

.article-content pre code {
  background-color: transparent;
  color: inherit;
  padding: 0;
}

.article-content table {
  width: 100%;
  border-collapse: collapse;
  margin: 2rem 0;
}

.article-content th,
.article-content td {
  padding: 0.75rem 1rem;
  border: 1px solid #e2e8f0;
  text-align: left;
}

.article-content th {
  background-color: #f8fafc;
  font-weight: 600;
  color: #0f172a;
}

@media (min-width: 768px) {
  .article-content {
    padding: 4rem 3rem;
  }
  
  .article-content h2 {
    font-size: 2.5rem;
  }
  
  .article-content h3 {
    font-size: 1.75rem;
  }
}

