/* =========================================================
   ROOT / DESIGN TOKENS
   ========================================================= */
:root{
  --primary-dark:#0A1A2F;
  --primary-blue:hsl(215,56%,23%);
  --secondary-blue:#2D4A8A;
  --accent-gold:#C5A047;
  --light-gold:#E8D9B5;
  --white:#FFFFFF;
  --off-white:#F8F9FA;
  --light-gray:#E9ECEF;
  --medium-gray:#6C757D;
  --dark-gray:#343A40;
  --header-rgb:1,15,40;

  /* NAV */
  --nav-height:104px;
  --nav-pad-y:10px;
  --nav-max:1200px;

  /* LOGO */
  --logo-height:74px;        /* PC */
  --logo-height-md:68px;     /* <=992 */
  --logo-height-sm:60px;     /* <=768 */
  --logo-height-xs:54px;     /* <=480 */

  --logo-minw:260px;
  --actions-minw:160px;
  --menu-gap:2.25rem;

  --radius-md:10px;
  --radius-lg:14px;
  --radius-xl:18px;
  --radius-full:9999px;
  --shadow-soft:0 10px 25px rgba(10,26,47,.08);

  --transition-fast:all .18s ease;
  --transition-smooth:all .28s cubic-bezier(.4,0,.2,1);
  --transition-elegant:all .35s cubic-bezier(.22,1,.36,1);

  --font-primary:'Inter','Noto Sans JP',sans-serif;
  --font-secondary:'Noto Sans JP',sans-serif;
}

/* =========================================================
   BASE RESET
   ========================================================= */
*{margin:0;padding:0;box-sizing:border-box;}
html{
  scroll-behavior:smooth;
  color-scheme:light;
  scroll-padding-top:var(--nav-height);
}
section,[id]{scroll-margin-top:var(--nav-height);}

body{
  font-family:var(--font-secondary);
  font-weight:400;
  color:var(--dark-gray);
  background:var(--off-white);
  line-height:1.6;
  overflow-x:hidden;
}

/* 通常画像（ロゴは後で上書き） */
img{max-width:100%;height:auto;display:block;}

h1,h2,h3,h4,h5,h6{
  font-family:var(--font-primary);
  font-weight:600;
  line-height:1.2;
}
a:visited{ color: inherit; }

/* =========================================================
   NAVBAR
   ========================================================= */
.navbar{
  position:fixed;
  top:0;left:0;
  width:100%;
  height:var(--nav-height);
  z-index:1000;

  padding:var(--nav-pad-y) 0;
  display:flex;
  align-items:center;

  background:linear-gradient(
    180deg,
    rgba(var(--header-rgb),0.995) 0%,
    rgba(var(--header-rgb),0.985) 55%,
    rgba(var(--header-rgb),0.975) 100%
  );
  border-bottom:1px solid rgba(255,255,255,0.07);
  box-shadow:0 10px 30px rgba(0,0,0,0.28);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}

.nav-container{
  width:100%;
  max-width:var(--nav-max);
  margin:0 auto;
  padding:0 2rem;

  display:flex;
  align-items:center;
  gap:1.25rem;
}

/* =========================================================
   LOGO（確実に効かせる）
   ========================================================= */
.nav-logo{
  display:flex;
  align-items:center;
  flex:0 0 auto;
  min-width:var(--logo-minw);

  /* ロゴ領域が潰れないように */
  height:100%;
}

.nav-logo a{
  display:flex;
  align-items:center;
  height:100%;
}

/* ✅ ここで“強制”する（svg/pngどちらでもOK） */
.nav-logo img{
  height:var(--logo-height) !important;
  width:auto !important;

  /* img共通ルールを無効化 */
  max-width:none !important;
  max-height:none !important;

  display:block;
  object-fit:contain;
}

/* 念のため：より強いセレクタでも固定 */
nav.navbar .nav-container .nav-logo a img{
  height:var(--logo-height) !important;
  width:auto !important;
  max-height:none !important;
  max-width:none !important;
}

/* =========================================================
   MENU
   ========================================================= */
.nav-menu{
  flex:1 1 auto;
  min-width:0;
  display:flex;
  justify-content:center;
  align-items:center;
  gap:var(--menu-gap);
  overflow:hidden;
}

.nav-link,
.nav-link:visited{
  color:rgba(255,255,255,0.82);
  text-decoration:none;
  font-size:.88rem;
  font-weight:600;
  letter-spacing:.06em;
  padding:.5rem 0;
  position:relative;
  white-space:nowrap;
  transition:color .22s ease, opacity .22s ease;
}
.nav-link:hover{color:rgba(255,255,255,0.95);}
.nav-link.active{color:rgba(255,255,255,0.95);}

.nav-link::after{
  content:'';
  position:absolute;
  left:0;
  bottom:-6px;
  width:100%;
  height:2px;
  background:rgba(197,160,71,0.75);
  border-radius:9999px;
  transform:scaleX(0);
  transform-origin:center;
  transition:transform .25s ease;
  opacity:.7;
}
.nav-link.active::after,
.nav-link:hover::after{ transform:scaleX(1); }

/* =========================================================
   ACTIONS
   ========================================================= */
.nav-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  flex:0 0 auto;
  min-width:var(--actions-minw);
  gap:1rem;
}

.language-switcher{
  display:inline-flex;
  align-items:center;
  gap:.65rem;
  padding:.35rem .55rem;
  border-radius:9999px;
  background:rgba(255,255,255,0.06);
  border:1px solid rgba(255,255,255,0.10);
}
.language-switcher a,
.language-switcher a:visited{
  color:rgba(255,255,255,0.78);
  text-decoration:none;
  font-weight:800;
  letter-spacing:.08em;
  font-size:.85rem;
  padding:.18rem .34rem;
  border-radius:8px;
  transition:color .2s ease, opacity .2s ease, background .2s ease;
}
.language-switcher a.active{
  color:rgba(255,255,255,0.95);
  background:rgba(255,255,255,0.06);
}
.language-switcher a:hover{
  color:rgba(255,255,255,0.92);
  background:rgba(197,160,71,0.12);
}
.lang-separator{ color:rgba(255,255,255,0.40); }
.language-switcher *::before,
.language-switcher *::after{ content:none !important; }

/* Hamburger */
.menu-toggle{
  display:none;
  flex-direction:column;
  justify-content:space-between;
  width:30px;
  height:20px;
  background:transparent;
  border:none;
  cursor:pointer;
  padding:0;
}
.menu-toggle span{
  display:block;
  width:100%;
  height:2px;
  background:var(--white);
  border-radius:var(--radius-full);
}

/* =========================================================
   PAGE / ARTICLE
   ========================================================= */
.np-page{
  padding-top:var(--nav-height);
  background:var(--off-white);
  position:relative;
  z-index:1;
}

.np-container{
  max-width:1200px;
  margin:0 auto;
  padding:2.5rem 2rem 5rem;
}
.np-narrow{ max-width:980px; }

.np-breadcrumb{
  display:flex;
  align-items:center;
  gap:.6rem;
  flex-wrap:wrap;
  font-size:.92rem;
  color:rgba(52,58,64,.75);
  margin-bottom:1.25rem;
}
.np-bc-item,
.np-bc-item:visited{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  color:rgba(26,54,93,.88);
  text-decoration:none;
  padding:.25rem .4rem;
  border-radius:8px;
  transition:var(--transition-fast);
}
.np-bc-item:hover{ background:rgba(26,54,93,.06); color:rgba(26,54,93,1); }
.np-bc-sep{ opacity:.45; }
.np-bc-current{ color:rgba(52,58,64,.75); padding:.25rem .4rem; }

.np-article{
  background:var(--white);
  border-radius:14px;
  box-shadow:var(--shadow-soft);
  border:1px solid rgba(229,231,235,.9);
  overflow:hidden;
}

.np-article-header{
  padding:1.75rem 1.75rem 1.25rem;
  border-bottom:1px solid rgba(229,231,235,.9);
  background:linear-gradient(145deg,#FFFFFF 0%,#F8FAFC 100%);
}

.np-article-title{
  font-size:1.85rem;
  line-height:1.35;
  color:rgba(10,26,47,.95);
  margin-bottom:.75rem;
  letter-spacing:-.2px;
}

.np-article-lead{
  color:rgba(52,58,64,.78);
  font-weight:600;
  line-height:1.9;
}

.np-meta{
  display:flex !important;
  width:100% !important;
  justify-content:flex-end !important;
  align-items:center !important;
  gap:.75rem;
}
.np-date{
  display:inline-block;
  margin-left:0 !important;
  text-align:right;
  font-weight:800;
  color:rgba(26,54,93,.92);
}

.np-article-body{ padding:1.75rem; }
.np-article-body p{
  margin-bottom:1.2rem;
  color:rgba(52,58,64,.92);
  line-height:1.95;
}
.np-article-body h2{
  margin-top:2.2rem;
  margin-bottom:.9rem;
  font-size:1.25rem;
  color:rgba(10,26,47,.95);
  padding-left:.8rem;
  border-left:4px solid rgba(197,160,71,.85);
}
.np-article-body h3{
  margin-top:1.8rem;
  margin-bottom:.7rem;
  font-size:1.12rem;
  color:rgba(10,26,47,.95);
}

.np-figure{
  margin:1.6rem 0 1.2rem;
  border-radius:14px;
  overflow:hidden;
  border:1px solid rgba(229,231,235,.9);
  background:#fff;
}
.np-figure img{ width:100%; }
.np-figure figcaption{
  padding:.8rem 1rem;
  font-size:.9rem;
  color:rgba(52,58,64,.72);
  background:rgba(248,249,250,.92);
}

.np-list{ padding-left:1.25rem; margin:.25rem 0 0; }
.np-list li{ margin-bottom:.55rem; color:rgba(52,58,64,.92); line-height:1.9; }

.np-article-body a,
.np-article-body a:visited{
  color:rgba(26,54,93,.95);
  text-decoration:none;
  border-bottom:1px solid rgba(26,54,93,.18);
  padding-bottom:2px;
  transition:var(--transition-fast);
}
.np-article-body a:hover{
  color:rgba(197,160,71,.95);
  border-bottom-color:rgba(197,160,71,.55);
}

.np-links{ list-style:none; padding-left:0; margin-top:.5rem; }
.np-links li{
  display:flex;
  align-items:flex-start;
  gap:.5rem;
  margin-bottom:.55rem;
  line-height:1.85;
}

.np-footnotes{
  margin:1.8rem 0 0;
  padding-left:1.2rem;
  color:rgba(52,58,64,.7);
  font-size:.92rem;
}
.np-footnotes li{ margin-bottom:.45rem; }

.np-contact-box{
  border-radius:14px;
  border:1px solid rgba(229,231,235,.9);
  background:linear-gradient(145deg,#ffffff 0%,#f8fafc 100%);
  padding:1.25rem 1.25rem;
  margin-top:.75rem;
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:2rem;
  align-items:start;
}

.np-contact-title{
  grid-column:1 / -1;
  margin:0 0 .75rem;
  font-size:1.05rem;
  color:rgba(10,26,47,.95);
  padding-left:.75rem;
  border-left:4px solid rgba(197,160,71,.85);
}

.np-contact-org{
  position:relative;
  padding-left:.75rem;
  font-weight:800;
  color:rgba(26,54,93,.95);
  margin-bottom:.45rem;
}
.np-contact-org::before{
  content:'';
  position:absolute;
  left:0;
  top:.15em;
  bottom:.15em;
  width:2px;
  background:rgba(197,160,71,.85);
  border-radius:9999px;
}

.np-contact-lines div{ margin-bottom:.3rem; color:rgba(52,58,64,.9); }
.np-contact-lines a,
.np-contact-lines div{
  overflow-wrap:anywhere;
  word-break:break-word;
}

.np-article-actions{
  margin-top:2rem;
  display:flex;
  justify-content:flex-start;
}
.np-back,
.np-back:visited{
  border:none !important;
  background:transparent !important;
  box-shadow:none !important;
  padding:0 !important;
  border-radius:0 !important;
  font-weight:700;
  color:rgba(26,54,93,.95);
  text-decoration:none;
  display:inline-flex;
  align-items:center;
  gap:.55rem;
}
.np-back:hover{
  transform:none !important;
  color:rgba(26,54,93,1);
  text-decoration:underline;
}

/* =========================================================
   FOOTER
   ========================================================= */
footer{
  background:var(--primary-dark);
  color:#fff;
  padding:4rem 0 2rem;
  position:relative;
  overflow:hidden;
  display:block;
}
footer::before{
  content:'';
  position:absolute;
  top:0;left:0;right:0;
  height:1px;
  background:linear-gradient(90deg, transparent, rgba(197,160,71,0.3), transparent);
}

.footer-container{
  max-width:1280px;
  margin:0 auto;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:2.5rem;
  padding:0 2rem;
}

.footer-column{ display:flex; flex-direction:column; }

.footer-column h3{
  color:var(--accent-gold);
  margin-bottom:1.2rem;
  font-size:1.1rem;
  position:relative;
  padding-bottom:.5rem;
  font-weight:600;
  letter-spacing:.5px;
}
.footer-column h3::after{
  content:'';
  position:absolute;
  bottom:0;left:0;
  width:30px;height:2px;
  background:var(--accent-gold);
  border-radius:9999px;
}

.footer-column p{
  color:rgba(255,255,255,0.82);
  line-height:1.5;
  margin-bottom:1.2rem;
  font-size:.9rem;
}

.footer-column ul{ list-style:none; padding:0; margin:0; }
.footer-column li{ margin-bottom:.6rem; }

.footer-column a,
.footer-column a:visited{
  color:rgba(255,255,255,0.78);
  text-decoration:none;
  transition:var(--transition-fast);
  font-size:.9rem;
  display:inline-block;
  padding:.15rem 0;
  position:relative;
}
.footer-column a:hover{ color:var(--accent-gold); padding-left:8px; }

.footer-column a::before{
  content:'›';
  position:absolute;
  left:-12px;
  opacity:0;
  transition:var(--transition-fast);
  color:var(--accent-gold);
}
.footer-column a:hover::before{ left:0; opacity:1; }

.contact-info{ margin-top:1rem; }
.contact-item{
  display:flex;
  align-items:flex-start;
  gap:.6rem;
  margin-bottom:.8rem;
}
.contact-icon{
  color:var(--accent-gold);
  font-size:.9rem;
  margin-top:.1rem;
  min-width:16px;
  text-align:center;
}

.copyright{
  text-align:center;
  padding-top:2rem;
  margin-top:2rem;
  border-top:1px solid rgba(255,255,255,0.1);
  color:rgba(255,255,255,0.62);
  font-size:.85rem;
  max-width:1280px;
  margin-left:auto;
  margin-right:auto;
  padding-left:2rem;
  padding-right:2rem;
}

/* =========================================================
   Responsive
   ========================================================= */
@media (max-width: 992px){
  :root{ --nav-height:96px; }

  .nav-container{ padding:0 1.25rem; }
  .menu-toggle{ display:flex; }

  .nav-logo{ min-width:240px; }
  .nav-logo img{ height:var(--logo-height-md) !important; }

  .nav-menu{
    position:fixed;
    top:var(--nav-height);
    left:0;
    width:100%;
    background:rgba(var(--header-rgb),0.995);
    border-bottom:1px solid rgba(255,255,255,0.10);
    flex-direction:column;
    align-items:center;
    gap:0;
    transform:translateY(-110%);
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transition:var(--transition-elegant);
    z-index:1001;
    overflow:visible;
  }
  .nav-menu.active{
    transform:translateY(0);
    opacity:1;
    visibility:visible;
    pointer-events:auto;
  }

  .nav-link,
  .nav-link:visited{
    width:100%;
    text-align:center;
    padding:1.1rem 0;
    border-bottom:1px solid rgba(255,255,255,0.10);
    font-size:1.05rem;
  }
  .nav-link::after{ display:none; }

  .footer-container{
    grid-template-columns:repeat(2,1fr);
    gap:2rem;
    padding:0 1.5rem;
  }
  .copyright{
    padding-left:1.5rem;
    padding-right:1.5rem;
  }

  .np-contact-box{
    grid-template-columns:repeat(2, minmax(0,1fr));
    gap:1.5rem;
  }
}

@media (max-width: 768px){
  :root{ --nav-height:92px; }

  .nav-logo{ min-width:210px; }
  .nav-logo img{ height:var(--logo-height-sm) !important; }

  .np-container{ padding:1.75rem 1rem 3.5rem; }
  .np-article-header{ padding:1.25rem 1.1rem 1rem; }
  .np-article-title{ font-size:1.35rem; }
  .np-article-body{ padding:1.1rem; }

  .np-contact-box{
    grid-template-columns:1fr;
    gap:1.25rem;
    padding:1.05rem 1.05rem;
  }

  footer{ padding:3rem 0 1.5rem; }
  .footer-container{
    grid-template-columns:1fr;
    gap:1.75rem;
    padding:0 1rem;
  }
  .copyright{
    margin-top:1.5rem;
    padding-left:1rem;
    padding-right:1rem;
  }
}

@media (max-width: 480px){
  :root{ --nav-height:88px; }

  .nav-container{ padding:0 1rem; }
  .nav-logo{ min-width:180px; }

  .nav-logo img{
    height:var(--logo-height-xs) !important;
    width:auto !important;
    max-width:85vw !important;
  }

  .footer-column a:hover{ padding-left:0; }
  .footer-column a:hover::before{ opacity:0; }
}