/* ===== KFBSA Site Skin — base ===== */
:root{
  --color-primary:#0b2a4a;
  --color-primary-soft:#163a62;
  --color-accent:#c9a961;
  --color-accent-dark:#a88642;
  --color-text:#1a2230;
  --color-muted:#6b7480;
  --color-line:#e6e9ef;
  --color-bg:#ffffff;
  --color-bg-soft:#f6f7fa;
  --color-bg-deep:#edf0f6;
  --color-danger:#d4443c;
  --color-ok:#2e8b57;
  --color-warn:#c98a00;
  --container:1280px;
  --header-side:10%;
  --radius:4px;
  --transition:220ms cubic-bezier(.4,.0,.2,1);
  --font-sans:'Spoqa Han Sans Neo','Pretendard',-apple-system,BlinkMacSystemFont,'Malgun Gothic',sans-serif;
  --font-en:'Inter','Spoqa Han Sans Neo',sans-serif;

  /* ===== Type scale (base 17px) ===== */
  --fs-body:17px;
  --fs-sm:15px;
  --fs-xs:13px;
  --fs-lg:19px;
  --fs-h4:21px;
  --fs-h3:24px;
  --fs-h2:30px;
  --fs-h1:38px;
  --fs-display:clamp(38px,5.2vw,66px);
  --fs-sub-hero:clamp(30px,3.8vw,44px);
  --fs-section:clamp(28px,3.2vw,40px);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;font-size:var(--fs-body)}
body{margin:0;font-family:var(--font-sans);font-size:var(--fs-body);line-height:1.7;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;word-break:keep-all;overflow-x:clip;max-width:100%}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none;transition:color var(--transition)}
a:hover{color:var(--color-primary)}
button{font-family:inherit;cursor:pointer;border:0;background:transparent;color:inherit;font-size:inherit}
ul,ol,dl,dd{margin:0;padding:0;list-style:none}
h1,h2,h3,h4,h5,h6,p{margin:0}
address{font-style:normal}
.container{max-width:var(--container);margin:0 auto;padding:0 24px}
.skip-link{position:absolute;left:-9999px;top:0;background:#000;color:#fff;padding:.5rem 1rem;z-index:10000}
.skip-link:focus{left:0}

/* ===== Header — wide (10% side margins) ===== */
.site-header{position:sticky;top:0;z-index:1000;background:rgba(255,255,255,.97);backdrop-filter:blur(10px);border-bottom:1px solid var(--color-line)}
.site-header__inner{width:100%;padding:0 var(--header-side);display:flex;align-items:center;gap:28px;height:100px;position:relative}
.site-logo{margin:0;font-weight:700;flex-shrink:0}
.site-logo a{display:flex;align-items:center;gap:12px}
.site-logo__img{display:block;height:64px;width:auto;max-width:280px;object-fit:contain;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}
@media (max-width:640px){.site-logo__img{height:44px}}
.site-logo__mark{font-family:var(--font-en);font-weight:800;font-size:24px;letter-spacing:-.01em;color:var(--color-primary)}
.site-logo__name{font-size:18px;color:var(--color-text);font-weight:600;letter-spacing:-.02em}
.gnb{flex:1}
.gnb__list{display:flex;justify-content:center;gap:4px}
.gnb__item{position:relative}
.gnb__item>a{display:block;padding:32px 22px;font-size:17px;font-weight:500;color:var(--color-text);letter-spacing:-.025em;position:relative;white-space:nowrap}
.gnb__item>a::after{content:"";position:absolute;left:22px;right:22px;bottom:22px;height:2px;background:var(--color-accent);transform:scaleX(0);transform-origin:center;transition:transform var(--transition)}
.gnb__item:hover>a::after,.gnb__item:focus-within>a::after{transform:scaleX(1)}
.gnb__sub{position:absolute;top:100%;left:50%;transform:translateX(-50%) translateY(8px);min-width:220px;background:#fff;border-top:3px solid var(--color-accent);box-shadow:0 14px 36px rgba(11,42,74,.12);padding:14px 0;opacity:0;visibility:hidden;transition:all var(--transition)}
.gnb__item:hover .gnb__sub,.gnb__item:focus-within .gnb__sub{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.gnb__sub a{display:block;padding:10px 22px;font-size:15px;color:var(--color-muted);white-space:nowrap}
.gnb__sub a:hover{color:var(--color-primary);background:var(--color-bg-soft)}
.site-util{display:flex;align-items:center;gap:4px;flex-shrink:0}
.site-util__name{font-size:14px;color:var(--color-muted);padding-right:10px}
.site-util__link{font-size:14px;color:var(--color-muted);padding:7px 11px;transition:color var(--transition)}
.site-util__link:hover{color:var(--color-primary)}
.site-util__link--map{font-size:22px;padding:4px 10px;line-height:1}
.gnb-toggle{display:none;flex-direction:column;gap:5px;width:30px;padding:5px}
.gnb-toggle span{display:block;height:2px;background:var(--color-text);transition:all var(--transition)}
.gnb-bg{display:none}

/* ===== Hero slider ===== */
.hero{position:relative;min-height:calc(100vh - 100px);color:#fff;overflow:hidden;background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-soft) 100%)}
.hero-slides{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;list-style:none}
.hero-slide{position:absolute;inset:0;width:100%;height:100%;display:flex;align-items:center;opacity:0;visibility:hidden;transition:opacity 1200ms cubic-bezier(.4,.0,.2,1),visibility 0s linear 1200ms;z-index:1}
.hero-slide.is-active{opacity:1;visibility:visible;transition:opacity 1200ms cubic-bezier(.4,.0,.2,1),visibility 0s linear 0s;z-index:2}

/* 각 슬라이드 배경(PC 기본) */
.hero__bg{position:absolute;inset:0;background-size:cover;background-position:center center;background-repeat:no-repeat;transform:scale(1.05);transition:transform 8000ms ease-out}
.hero-slide.is-active .hero__bg{transform:scale(1)}
.hero__bg--1{background-image:url('/assets/img/hero/hero01-pc.jpg')}
.hero__bg--2{background-image:url('/assets/img/hero/hero02-pc.jpg')}
.hero__bg--3{background-image:url('/assets/img/hero/hero03-pc.jpg')}
@media (max-width:640px){
  .hero__bg--1{background-image:url('/assets/img/hero/hero01-mobile.jpg')}
  .hero__bg--2{background-image:url('/assets/img/hero/hero02-mobile.jpg')}
  .hero__bg--3{background-image:url('/assets/img/hero/hero03-mobile.jpg')}
}

/* 오버레이 (밝게 조정 + 좌측 텍스트 영역만 살짝 진하게) */
.hero__overlay{position:absolute;inset:0;background:
  linear-gradient(90deg,rgba(11,42,74,.55) 0%,rgba(11,42,74,.30) 55%,rgba(11,42,74,.20) 100%),
  radial-gradient(circle at 80% 25%,rgba(201,169,97,.12),transparent 55%)}
/* 텍스트 가독성 보강 (밝은 이미지에도 잘 읽히게) */
.hero__title,.hero__sub,.hero__eyebrow{text-shadow:0 2px 14px rgba(0,0,0,.35)}
@media (max-width:640px){
  .hero__overlay{background:
    linear-gradient(180deg,rgba(11,42,74,.35) 0%,rgba(11,42,74,.55) 60%,rgba(11,42,74,.75) 100%)}
}

.hero__inner{position:relative;max-width:var(--container);margin:0 auto;padding:80px 24px;width:100%;z-index:3}
.hero__eyebrow{font-family:var(--font-en);font-size:14px;letter-spacing:.25em;color:var(--color-accent);text-transform:uppercase;margin-bottom:26px;font-weight:500;opacity:0;transform:translateY(14px);transition:opacity 800ms ease 400ms,transform 800ms ease 400ms}
.hero__title{font-size:var(--fs-display);font-weight:300;line-height:1.15;letter-spacing:-.035em;margin-bottom:30px;opacity:0;transform:translateY(18px);transition:opacity 900ms ease 600ms,transform 900ms ease 600ms}
.hero__title strong{font-weight:800;background:linear-gradient(90deg,#fff 0%,var(--color-accent) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.hero__sub{font-size:clamp(17px,1.5vw,20px);color:rgba(255,255,255,.88);margin-bottom:50px;max-width:660px;line-height:1.65;opacity:0;transform:translateY(14px);transition:opacity 800ms ease 850ms,transform 800ms ease 850ms}
.hero__cta{display:flex;gap:14px;flex-wrap:wrap;opacity:0;transform:translateY(14px);transition:opacity 800ms ease 1050ms,transform 800ms ease 1050ms}
.hero-slide.is-active .hero__eyebrow,
.hero-slide.is-active .hero__title,
.hero-slide.is-active .hero__sub,
.hero-slide.is-active .hero__cta{opacity:1;transform:translateY(0)}

/* 컨트롤 (dots + prev/next) */
.hero-ctrl{position:absolute;right:var(--header-side,10%);bottom:52px;display:flex;align-items:center;gap:12px;z-index:5}
.hero-ctrl__btn{width:44px;height:44px;border-radius:50%;color:rgba(255,255,255,.7);font-size:22px;line-height:1;border:1px solid rgba(255,255,255,.25);background:rgba(0,0,0,.15);backdrop-filter:blur(6px);transition:all var(--transition);display:flex;align-items:center;justify-content:center}
.hero-ctrl__btn:hover{color:#fff;border-color:var(--color-accent);background:rgba(201,169,97,.2)}
.hero-ctrl__dots{display:flex;gap:10px;padding:0 6px}
.hero-ctrl__dot{position:relative;width:44px;height:30px;padding:0;cursor:pointer;background:transparent;border:0;display:flex;align-items:center}
.hero-ctrl__dot-bar{display:block;width:100%;height:2px;background:rgba(255,255,255,.3);position:relative;overflow:hidden;transition:background var(--transition)}
.hero-ctrl__dot-bar::after{content:"";position:absolute;left:0;top:0;width:0;height:100%;background:var(--color-accent);transition:none}
.hero-ctrl__dot.is-on .hero-ctrl__dot-bar{background:rgba(255,255,255,.5)}
.hero-ctrl__dot.is-on .hero-ctrl__dot-bar::after{animation:hero-progress 6000ms linear forwards}
.hero-ctrl__dot:hover .hero-ctrl__dot-bar{background:rgba(255,255,255,.55)}
.hero.is-paused .hero-ctrl__dot-bar::after{animation-play-state:paused}
@keyframes hero-progress{from{width:0}to{width:100%}}

.hero__scroll{position:absolute;bottom:42px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,.7);font-family:var(--font-en);font-size:11px;letter-spacing:.3em;z-index:4}
.hero__scroll::after{content:"";display:block;width:1px;height:40px;background:var(--color-accent);margin:10px auto 0;animation:scroll-hint 2s infinite}
@keyframes scroll-hint{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

/* 모바일 최적화 */
@media (max-width:640px){
  .hero-ctrl{right:20px;left:20px;bottom:36px;justify-content:center}
  .hero-ctrl__btn{width:40px;height:40px;font-size:20px}
  .hero-ctrl__dot{width:36px}
  .hero__scroll{display:none}
  .hero__inner{padding:60px 20px 120px}
}

/* ===== Buttons ===== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:15px 34px;font-size:16px;font-weight:500;letter-spacing:-.01em;border-radius:var(--radius);transition:all var(--transition);cursor:pointer;border:1px solid transparent;line-height:1.2}
.btn--primary{background:var(--color-accent);color:var(--color-primary);border-color:var(--color-accent)}
.btn--primary:hover{background:var(--color-accent-dark);border-color:var(--color-accent-dark);color:#fff}
.btn--ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.45)}
.btn--ghost:hover{background:#fff;color:var(--color-primary)}
.btn--ghost-dark{background:transparent;color:var(--color-text);border-color:var(--color-line)}
.btn--ghost-dark:hover{background:var(--color-bg-soft);border-color:var(--color-primary);color:var(--color-primary)}
.btn--light{background:#fff;color:var(--color-primary)}
.btn--light:hover{background:var(--color-accent);color:var(--color-primary)}
.btn--danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}
.btn--danger:hover{background:#b8342c}
.btn--sm{padding:9px 20px;font-size:14px}
.btn--xs{padding:5px 11px;font-size:12px}
.btn--block{display:flex;width:100%}

/* ===== Section common ===== */
.section{padding:110px 0}
.section--intro{background:var(--color-bg-soft)}
.section__head{text-align:center;margin-bottom:60px}
.section__eyebrow{font-family:var(--font-en);font-size:17px;letter-spacing:.28em;color:var(--color-accent);text-transform:uppercase;margin-bottom:16px;font-weight:500}
.section__title{font-size:var(--fs-section);font-weight:700;letter-spacing:-.03em;margin-bottom:16px;line-height:1.25}
.section__desc{color:var(--color-muted);font-size:17px;max-width:760px;margin:0 auto}

/* ===== Stats (레거시, 서브페이지에서 사용) ===== */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;max-width:1040px;margin:0 auto}
.stats__item{text-align:center;padding:46px 24px;background:#fff;border:1px solid var(--color-line);border-radius:var(--radius);transition:all var(--transition)}
.stats__item:hover{border-color:var(--color-accent);transform:translateY(-4px);box-shadow:0 10px 30px rgba(11,42,74,.08)}
.stats__item dt{font-size:14px;color:var(--color-muted);margin-bottom:10px;letter-spacing:.05em}
.stats__item dd{font-size:16px;color:var(--color-text);margin:0}
.stats__item strong{display:block;font-family:var(--font-en);font-size:40px;font-weight:700;color:var(--color-primary);margin-bottom:4px;line-height:1}

/* ===== About split section (홈 협회소개) ===== */
.about-split{display:grid;grid-template-columns:1.1fr 1fr;gap:70px;align-items:center}
.about-copy .section__eyebrow{margin-bottom:22px}
.about-copy__title{font-size:clamp(32px,3.4vw,44px);font-weight:700;letter-spacing:-.03em;line-height:1.25;margin-bottom:28px;color:var(--color-primary)}
.about-copy__title .accent{color:var(--color-accent);position:relative}
.about-copy__title .accent::after{content:"";position:absolute;left:0;right:0;bottom:4px;height:10px;background:rgba(201,169,97,.18);z-index:-1}
.about-copy__lead{font-size:19px;line-height:1.65;color:var(--color-text);margin-bottom:22px;letter-spacing:-.015em}
.about-copy__lead strong{color:var(--color-primary);font-weight:700;background:linear-gradient(to top,rgba(201,169,97,.22) 35%,transparent 35%);padding:0 3px}
.about-copy__text{font-size:16px;line-height:1.75;color:var(--color-muted);margin-bottom:22px}
.about-copy__text strong{color:var(--color-primary);font-weight:600}
.about-copy__marks{display:flex;flex-direction:column;gap:8px;margin-bottom:32px;padding:20px 22px;background:#fff;border-left:3px solid var(--color-accent);border-radius:0 var(--radius) var(--radius) 0}
.about-copy__marks li{font-size:14px;color:var(--color-text);padding-left:22px;position:relative;line-height:1.5}
.about-copy__marks li::before{content:"✓";position:absolute;left:0;top:0;color:var(--color-accent);font-weight:700}
.about-copy__cta{display:flex;gap:10px;flex-wrap:wrap}

.about-stats{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:0}
.about-stat{position:relative;padding:30px 26px 28px;background:#fff;border:1px solid var(--color-line);border-radius:var(--radius);transition:all var(--transition);overflow:hidden}
.about-stat::before{content:"";position:absolute;left:0;top:0;height:3px;width:36px;background:var(--color-primary);transition:width var(--transition)}
.about-stat--accent::before{background:var(--color-accent)}
.about-stat:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(11,42,74,.1);border-color:transparent}
.about-stat:hover::before{width:100%}
.about-stat__label{font-family:var(--font-en);font-size:11px;font-weight:600;color:var(--color-muted);letter-spacing:.25em;margin-bottom:14px;display:block}
.about-stat__value{font-family:var(--font-en);font-size:38px;font-weight:800;color:var(--color-primary);line-height:1;letter-spacing:-.03em;margin:0 0 10px}
.about-stat--accent .about-stat__value{color:var(--color-accent-dark)}
.about-stat__value em{font-style:normal;font-size:18px;color:var(--color-muted);font-weight:600;margin-left:3px;letter-spacing:0}
.about-stat__note{font-size:13px;color:var(--color-muted);line-height:1.4;letter-spacing:-.01em}
.about-stat__deco{position:absolute;right:-20px;bottom:-20px;width:80px;height:80px;border-radius:50%;border:1px solid var(--color-line);opacity:.5}
.about-stat--accent .about-stat__deco{border-color:var(--color-accent);opacity:.3}

@media (max-width:960px){
  .about-split{grid-template-columns:1fr;gap:50px}
}
@media (max-width:520px){
  .about-stats{grid-template-columns:1fr 1fr;gap:10px}
  .about-stat{padding:22px 18px 20px}
  .about-stat__value{font-size:30px}
  .about-copy__title{font-size:28px}
  .about-copy__lead{font-size:17px}
  .about-copy__cta .btn{flex:1;min-width:0}
}

/* ===== Service section (어두운 배경 + 밝은 텍스트) ===== */
.section--services{position:relative;background:var(--color-primary);color:#fff}
.section--services::before{content:"";position:absolute;inset:0;background-image:
  linear-gradient(180deg,rgba(11,42,74,.72) 0%,rgba(11,42,74,.82) 100%),
  url('/assets/img/bg/services-pc.jpg');
  background-size:cover;background-position:center;pointer-events:none;z-index:0}
.section--services > .container{position:relative;z-index:1}
.section--services .section__title{color:#fff}
.section--services .section__desc{color:rgba(255,255,255,.82)}
.section--services .section__eyebrow{color:var(--color-accent)}
@media (max-width:640px){
  .section--services::before{background-image:
    linear-gradient(180deg,rgba(11,42,74,.78),rgba(11,42,74,.88)),
    url('/assets/img/bg/services-mobile.jpg')}
}

/* ===== Service cards ===== */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.card{padding:52px 40px;background:#fff;border:1px solid var(--color-line);border-radius:var(--radius);transition:all var(--transition);position:relative;overflow:hidden}
.card::before{content:"";position:absolute;left:0;top:0;width:3px;height:0;background:var(--color-accent);transition:height var(--transition)}
.card:hover{border-color:transparent;box-shadow:0 22px 54px rgba(11,42,74,.12);transform:translateY(-6px)}
.card:hover::before{height:100%}
.card__num{font-family:var(--font-en);font-size:24px;color:var(--color-accent);letter-spacing:0;margin-bottom:24px;font-weight:600}
.card__title{font-size:28px;font-weight:700;letter-spacing:-.02em;margin-bottom:16px;color:var(--color-primary)}
.card__desc{color:var(--color-muted);font-size:16px;margin-bottom:28px;min-height:74px;line-height:1.65}
.card__link{display:inline-block;font-size:15px;color:var(--color-primary);font-weight:500;border-bottom:1px solid var(--color-primary);padding-bottom:2px}
.card__link:hover{color:var(--color-accent);border-color:var(--color-accent)}

/* ===== News grid ===== */
.section--news{background:var(--color-bg-soft)}
.news-grid{display:grid;grid-template-columns:1fr 1fr 360px;gap:32px}
.news-col{background:#fff;padding:34px;border-radius:var(--radius);border:1px solid var(--color-line)}
.news-col__head{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;padding-bottom:16px;border-bottom:2px solid var(--color-primary)}
.news-col__head h3{font-size:20px;font-weight:700;letter-spacing:-.02em}
.news-col__head a{font-size:14px;color:var(--color-muted)}
.news-col__head a:hover{color:var(--color-accent)}
.news-list li{border-bottom:1px dashed var(--color-line)}
.news-list li:last-child{border-bottom:0}
.news-list a{display:flex;justify-content:space-between;gap:16px;padding:15px 0;font-size:15px}
.news-list__title{color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.news-list__date{color:var(--color-muted);font-family:var(--font-en);font-size:13px;flex-shrink:0}
.news-list a:hover .news-list__title{color:var(--color-primary)}
.news-list__empty{padding:40px 0;text-align:center;color:var(--color-muted);font-size:15px}
.news-cta{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-soft));color:#fff;padding:52px 34px;border-radius:var(--radius);display:flex;flex-direction:column;justify-content:center;gap:16px}
.news-cta h3{font-size:25px;font-weight:700;letter-spacing:-.02em}
.news-cta p{color:rgba(255,255,255,.82);font-size:15px;margin-bottom:22px}

/* ===== Sub hero / breadcrumb ===== */
.sub-hero{padding:110px 0 80px;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-soft));color:#fff;text-align:center;position:relative;overflow:hidden}
.sub-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 80% 30%,rgba(201,169,97,.18),transparent 60%)}
.sub-hero::after{content:"";position:absolute;left:50%;top:0;width:1px;height:60px;background:linear-gradient(180deg,transparent,var(--color-accent))}
.sub-hero>.container{position:relative}
.sub-hero__eyebrow{font-family:var(--font-en);font-size:13px;letter-spacing:.3em;color:var(--color-accent);text-transform:uppercase;margin-bottom:16px;font-weight:500}
.sub-hero__title{font-size:var(--fs-sub-hero);font-weight:700;letter-spacing:-.03em;margin-bottom:22px;line-height:1.2}
.breadcrumb ol{display:flex;justify-content:center;gap:10px;font-size:14px;color:rgba(255,255,255,.72);flex-wrap:wrap}
.breadcrumb li+li::before{content:"›";margin-right:10px;color:rgba(255,255,255,.4)}
.breadcrumb a:hover{color:var(--color-accent)}
.sub{padding:80px 0 120px;min-height:400px}
/* 서브페이지 본문 좌우 여백
 * NOTE: padding:15%는 부모 너비 기준으로 계산되므로, 하위 페이지에서
 * style="max-width:520px" 같은 인라인 좁은 max-width를 지정하면
 * border-box 하에서 padding이 max-width를 초과해 콘텐츠가 0~음수 너비로 붕괴한다.
 * 따라서 고정 max-width + 픽셀 패딩으로 유지하고, 너무 좁은 인라인 max-width를 가진
 * 폼 컨테이너는 아래에서 padding을 리셋한다. */
/* 서브페이지 기본: 좌·우 15% 여백(뷰포트 기준) + 풀폭 컨테이너 */
.sub > .container{max-width:none;margin:0 auto;padding:0 15%}
/* 하위 페이지에서 인라인 max-width 를 지정한 컨테이너는 안전하게 고정 픽셀 패딩으로 폴백 */
.sub > .container[style*="max-width"]{padding:0 24px}
@media (max-width:1280px){.sub > .container{padding:0 10%}}
@media (max-width:1024px){.sub > .container{padding:0 6%}.sub > .container[style*="max-width"]{padding:0 20px}}
@media (max-width:640px){.sub > .container{padding:0 20px}.sub > .container[style*="max-width"]{padding:0 16px}}

/* ===== Board list ===== */
.board-tools{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;gap:16px;flex-wrap:wrap}
.board-search{display:flex;gap:6px;align-items:center}
.board-search select,.board-search input{height:40px;padding:0 14px;border:1px solid var(--color-line);border-radius:var(--radius);font-family:inherit;font-size:15px;background:#fff}
.board-search input{min-width:260px}
.board-table{width:100%;border-collapse:collapse;border-top:2px solid var(--color-primary)}
.board-table th{padding:16px 8px;font-size:14px;font-weight:600;color:var(--color-muted);border-bottom:1px solid var(--color-line);background:var(--color-bg-soft);letter-spacing:-.01em}
.board-table td{padding:18px 8px;font-size:15px;border-bottom:1px solid var(--color-line)}
.board-table .col-num{width:80px;text-align:center;color:var(--color-muted);font-family:var(--font-en);font-size:14px}
.board-table .col-author,.board-table .col-date,.board-table .col-views{width:130px;text-align:center;color:var(--color-muted);font-size:14px}
.board-table .col-date{font-family:var(--font-en);font-size:13px}
.board-table .col-title a{font-weight:500;color:var(--color-text)}
.board-table .col-title a:hover{color:var(--color-primary)}
.board-table tr.is-notice{background:#fafbfd}
.board-table tr.is-notice td{font-weight:500}
.board-table__empty{text-align:center;padding:80px 0;color:var(--color-muted)}
.badge{display:inline-block;padding:3px 9px;font-size:12px;border-radius:2px;margin-right:6px;font-weight:500;letter-spacing:-.01em;vertical-align:1px}
.badge--notice{background:var(--color-primary);color:#fff}
.badge--cat{background:var(--color-bg-soft);color:var(--color-muted);border:1px solid var(--color-line)}
.badge--secret{background:#888;color:#fff}
.comment-count{color:var(--color-accent);font-size:13px;margin-left:4px;font-family:var(--font-en);font-weight:600}
.ico-file,.ico-lock{font-size:12px;margin-left:4px}

/* ===== Gallery grid ===== */
.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:24px}
.gallery-item{background:#fff;border:1px solid var(--color-line);border-radius:var(--radius);overflow:hidden;transition:all var(--transition)}
.gallery-item:hover{box-shadow:0 14px 34px rgba(11,42,74,.12);transform:translateY(-4px);border-color:transparent}
.gallery-item__img{aspect-ratio:4/3;background:var(--color-bg-soft);background-size:cover;background-position:center;display:flex;align-items:center;justify-content:center}
.gallery-item__ph{font-family:var(--font-en);color:var(--color-muted);letter-spacing:.2em;font-size:14px}
.gallery-item__body{padding:18px 20px}
.gallery-item__title{font-size:15px;font-weight:500;color:var(--color-text);margin-bottom:6px;line-height:1.45}
.gallery-item__meta{display:flex;justify-content:space-between;font-size:13px;color:var(--color-muted)}

/* ===== Pagination ===== */
.pagination{display:flex;justify-content:center;gap:4px;margin-top:44px}
.pagination a,.pagination strong{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 10px;font-size:15px;border:1px solid var(--color-line);border-radius:var(--radius);font-family:var(--font-en);color:var(--color-muted);background:#fff;font-weight:500}
.pagination a:hover{border-color:var(--color-primary);color:var(--color-primary)}
.pagination strong{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}
.pagination__edge{font-family:serif;font-size:19px}

/* ===== Post view ===== */
.post{border-top:2px solid var(--color-primary);padding-top:32px}
.post__head{padding-bottom:26px;border-bottom:1px solid var(--color-line);margin-bottom:32px}
.post__title{font-size:var(--fs-h1);font-weight:700;letter-spacing:-.025em;margin:8px 0 18px;line-height:1.3}
.post__meta{display:flex;gap:22px;flex-wrap:wrap;color:var(--color-muted);font-size:14px}
.post__files{padding:18px 22px;background:var(--color-bg-soft);border-radius:var(--radius);margin-bottom:26px}
.post__files-title{font-weight:600;margin-bottom:12px;font-size:15px}
.post__files ul{display:flex;flex-direction:column;gap:6px}
.post__files li{font-size:15px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.post__files-size{color:var(--color-muted);font-size:13px}
.post__body{padding:22px 0 54px;min-height:200px;font-size:17px;line-height:1.85}
.post__body img{margin:14px 0;border-radius:var(--radius)}
.post__body p{margin:0 0 16px}
.post__body h1,.post__body h2,.post__body h3{margin:28px 0 14px;font-weight:700;letter-spacing:-.02em}
.post__body h2{font-size:var(--fs-h2)}
.post__body h3{font-size:var(--fs-h3)}
.post__body ul,.post__body ol{margin:0 0 16px 26px;list-style:disc}
.post__body ol{list-style:decimal}
.post__body a{color:var(--color-primary);text-decoration:underline}
.post__body table{border-collapse:collapse;margin:14px 0;max-width:100%}
.post__body td,.post__body th{border:1px solid var(--color-line);padding:10px}
.post__foot{display:flex;justify-content:space-between;padding-top:26px;border-top:1px solid var(--color-line);gap:8px}
.post__actions{display:flex;gap:6px}
.post-nav{margin:42px 0;border-top:1px solid var(--color-line);border-bottom:1px solid var(--color-line)}
.post-nav__item{display:flex;gap:22px;padding:18px 8px;border-bottom:1px solid var(--color-line);font-size:15px}
.post-nav__item:last-child{border-bottom:0}
.post-nav__item:hover{background:var(--color-bg-soft)}
.post-nav__label{width:60px;color:var(--color-muted);font-size:13px;flex-shrink:0}
.post-nav__title{color:var(--color-text)}
.post-nav__item:hover .post-nav__title{color:var(--color-primary)}

/* ===== Comments ===== */
.comments{margin-top:32px}
.comments__title{font-size:var(--fs-lg);font-weight:600;margin-bottom:18px;letter-spacing:-.02em}
.comments__title span{color:var(--color-accent);font-family:var(--font-en);margin-left:6px}
.comments__list{margin-bottom:22px}
.comment{padding:20px 0;border-bottom:1px solid var(--color-line)}
.comment__head{display:flex;gap:12px;align-items:baseline;margin-bottom:8px}
.comment__head strong{font-size:15px;color:var(--color-primary)}
.comment__date{font-size:13px;color:var(--color-muted);font-family:var(--font-en)}
.comment__body{font-size:15px;color:var(--color-text);line-height:1.75}
.comments__empty{padding:40px 0;text-align:center;color:var(--color-muted);font-size:15px}
.comments__login{padding:26px;text-align:center;background:var(--color-bg-soft);border-radius:var(--radius);color:var(--color-muted);font-size:15px}
.comments__login a{color:var(--color-primary);font-weight:500}
.comment-form{display:flex;flex-direction:column;gap:12px;margin-top:18px}
.comment-form textarea{width:100%;padding:14px;border:1px solid var(--color-line);border-radius:var(--radius);font-family:inherit;font-size:15px;resize:vertical}
.comment-form button{align-self:flex-end}

/* ===== Forms ===== */
.form{max-width:760px;margin:0 auto}
.form--auth{max-width:440px}
.form--write{max-width:1020px}
.auth-box{max-width:440px;margin:0 auto;padding:44px;background:#fff;border:1px solid var(--color-line);border-radius:var(--radius);box-shadow:0 10px 30px rgba(11,42,74,.05)}
.auth-box--wide{max-width:760px}
.auth-links{margin-top:22px;text-align:center;font-size:14px;color:var(--color-muted)}
.auth-links a:hover{color:var(--color-primary)}
.auth-links__sep{margin:0 8px;color:var(--color-line)}
.field{margin-bottom:20px}
.field label{display:block;font-size:15px;font-weight:500;margin-bottom:8px;color:var(--color-text)}
.field input[type=text],.field input[type=email],.field input[type=password],.field input[type=tel],.field input[type=url],.field input[type=number],.field input[type=search],.field input[type=datetime-local],.field input[type=date],.field input[type=color],.field select,.field textarea{width:100%;padding:12px 15px;border:1px solid var(--color-line);border-radius:var(--radius);font-family:inherit;font-size:15px;background:#fff;transition:border-color var(--transition)}
.field input:focus,.field select:focus,.field textarea:focus{outline:0;border-color:var(--color-primary)}
.field textarea{resize:vertical;min-height:130px;line-height:1.65}
.field input[type=color]{height:44px;padding:4px}
.field__hint{font-size:13px;color:var(--color-muted);margin-top:6px}
.field-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;align-items:start;margin-bottom:20px}
.field-row .field{margin-bottom:0}
.field--small input{max-width:130px}
.field--checks{display:flex;flex-wrap:wrap;gap:18px}
.field--checks label{font-weight:400;display:flex;gap:6px;align-items:center;cursor:pointer;font-size:15px}
.field--agreement{padding:15px 18px;background:var(--color-bg-soft);border-radius:var(--radius)}
.req{color:var(--color-danger);font-weight:400}
.form-actions{display:flex;gap:10px;justify-content:flex-end;padding-top:22px;border-top:1px solid var(--color-line);margin-top:22px}
.form-actions .btn:not(:last-child){margin-right:auto}
.mypage-head{padding-bottom:22px;border-bottom:2px solid var(--color-primary);margin-bottom:26px}
.mypage-head h2{font-size:var(--fs-h2);font-weight:700;letter-spacing:-.02em;margin-bottom:8px}
.mypage-head__meta{display:flex;gap:22px;font-size:14px;color:var(--color-muted);flex-wrap:wrap}
.mypage-head__meta strong{color:var(--color-primary);font-family:var(--font-en);font-weight:600}
.file-existing{margin-top:10px;padding-left:0;font-size:14px;color:var(--color-muted)}
.file-existing li{padding:4px 0}

/* ===== Alerts ===== */
.alert{padding:15px 20px;border-radius:var(--radius);margin-bottom:22px;font-size:15px;line-height:1.65}
.alert--ok{background:#e8f5ee;color:var(--color-ok);border:1px solid #b9e0c8}
.alert--err{background:#fdecea;color:var(--color-danger);border:1px solid #f5c6c1}
.alert--err ul{margin-left:22px;list-style:disc}

/* ===== Page body (static pages) ===== */
.page-body{font-size:17px;line-height:1.85;color:var(--color-text)}
.page-body h2{font-size:var(--fs-h2);font-weight:700;margin:36px 0 16px;letter-spacing:-.025em;color:var(--color-primary);padding-bottom:12px;border-bottom:2px solid var(--color-accent);line-height:1.3}
.page-body h3{font-size:var(--fs-h3);font-weight:600;margin:28px 0 14px;letter-spacing:-.02em;color:var(--color-primary-soft);line-height:1.35}
.page-body h4{font-size:var(--fs-h4);font-weight:600;margin:22px 0 12px}
.page-body p{margin:0 0 16px}
.page-body ul,.page-body ol{margin:0 0 18px 26px}
.page-body ul li,.page-body ol li{margin-bottom:8px}
.page-body img{margin:18px auto;border-radius:var(--radius);box-shadow:0 8px 22px rgba(11,42,74,.08)}
.page-body table{border-collapse:collapse;margin:18px 0;width:100%;font-size:16px}
.page-body td,.page-body th{border:1px solid var(--color-line);padding:12px 16px;text-align:left}
.page-body th{background:var(--color-bg-soft);font-weight:600}
.page-body blockquote{margin:18px 0;padding:18px 24px;border-left:3px solid var(--color-accent);background:var(--color-bg-soft);font-style:italic;color:var(--color-muted)}
.page-body a{color:var(--color-primary);border-bottom:1px solid rgba(11,42,74,.3)}
.page-body a:hover{border-color:var(--color-accent);color:var(--color-accent)}

/* ===== Page hero (for lead image on sub pages) ===== */
.page-lead{display:grid;grid-template-columns:1.15fr 1fr;gap:50px;align-items:center;margin-bottom:54px}
.page-lead__text h2{font-size:var(--fs-h1);font-weight:700;line-height:1.25;letter-spacing:-.025em;margin-bottom:20px;color:var(--color-primary)}
.page-lead__text h2 .accent{color:var(--color-accent)}
.page-lead__text p{font-size:17px;color:var(--color-muted);line-height:1.8;margin-bottom:12px}
.page-lead__img{position:relative;border-radius:var(--radius);overflow:hidden;aspect-ratio:5/4;background:var(--color-bg-deep) url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="60" height="60"><rect width="100%" height="100%" fill="%23eaeef5"/><path d="M10 40 L25 25 L40 40 L55 25" stroke="%23b0b7c4" fill="none" stroke-width="1.5"/></svg>') center/180px no-repeat;box-shadow:0 18px 40px rgba(11,42,74,.1)}
.page-lead__img img{width:100%;height:100%;object-fit:cover;display:block}

/* ===== Feature blocks (3-column / 4-column) ===== */
.feat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin:30px 0 40px}
.feat-grid--4{grid-template-columns:repeat(4,1fr)}
.feat{padding:34px 28px;background:var(--color-bg-soft);border-radius:var(--radius);border:1px solid var(--color-line);transition:all var(--transition)}
.feat:hover{transform:translateY(-4px);box-shadow:0 16px 34px rgba(11,42,74,.1);background:#fff;border-color:var(--color-accent)}
.feat__icon{width:52px;height:52px;border-radius:50%;background:var(--color-primary);color:var(--color-accent);display:flex;align-items:center;justify-content:center;font-size:22px;font-family:var(--font-en);font-weight:700;margin-bottom:18px}
.feat__title{font-size:var(--fs-h4);font-weight:700;margin-bottom:10px;color:var(--color-primary);letter-spacing:-.02em}
.feat__text{font-size:15px;color:var(--color-muted);line-height:1.7}

/* ===== Step list ===== */
.step-list{display:flex;flex-direction:column;gap:16px;margin:30px 0 40px}
.step{display:grid;grid-template-columns:80px 1fr;gap:24px;padding:24px 28px;background:#fff;border-left:3px solid var(--color-accent);border-radius:0 var(--radius) var(--radius) 0;box-shadow:0 2px 10px rgba(11,42,74,.04)}
.step__num{font-family:var(--font-en);font-size:34px;color:var(--color-accent);font-weight:700;line-height:1}
.step__title{font-size:var(--fs-h4);font-weight:700;margin-bottom:6px;color:var(--color-primary)}
.step__text{font-size:15px;color:var(--color-muted);line-height:1.7}

/* ===== Timeline ===== */
.timeline{position:relative;padding-left:40px;margin:30px 0 40px}
.timeline::before{content:"";position:absolute;left:10px;top:8px;bottom:8px;width:2px;background:var(--color-accent);opacity:.3}
.timeline__item{position:relative;padding-bottom:26px}
.timeline__item::before{content:"";position:absolute;left:-36px;top:6px;width:14px;height:14px;border-radius:50%;background:var(--color-accent);border:3px solid #fff;box-shadow:0 0 0 2px var(--color-accent)}
.timeline__year{font-family:var(--font-en);color:var(--color-primary);font-weight:700;font-size:20px;margin-bottom:6px}
.timeline__body{font-size:16px;color:var(--color-text)}

/* ===== Callout CTA ===== */
.cta-box{margin:50px 0;padding:56px 40px;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-soft));color:#fff;border-radius:var(--radius);text-align:center;position:relative;overflow:hidden}
.cta-box::before{content:"";position:absolute;right:-50px;top:-50px;width:260px;height:260px;border-radius:50%;border:1px solid rgba(201,169,97,.2)}
.cta-box h3{font-size:var(--fs-h2);font-weight:700;margin-bottom:14px;letter-spacing:-.025em;position:relative}
.cta-box p{font-size:17px;color:rgba(255,255,255,.85);margin-bottom:28px;position:relative}

/* ===== Sitemap page ===== */
.sitemap-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:50px 60px;max-width:1200px;margin:0 auto}
.sitemap-col__title{font-size:var(--fs-lg);font-weight:700;color:var(--color-primary);letter-spacing:-.02em;padding-bottom:14px;margin-bottom:20px;border-bottom:2px solid var(--color-primary);display:flex;align-items:baseline;gap:14px}
.sitemap-col__num{font-family:var(--font-en);font-size:14px;color:var(--color-accent);letter-spacing:.12em;font-weight:600}
.sitemap-col ul{display:flex;flex-direction:column;gap:4px}
.sitemap-col li a{display:block;padding:10px 0;font-size:16px;color:var(--color-text);border-bottom:1px dashed var(--color-line);transition:all var(--transition)}
.sitemap-col li a:hover{color:var(--color-primary);padding-left:10px;border-color:var(--color-primary)}

/* ===== Error box ===== */
.error-box{text-align:center;padding:80px 24px}
.error-box__code{font-family:var(--font-en);font-size:94px;font-weight:800;color:var(--color-accent);line-height:1;margin-bottom:12px;letter-spacing:-.05em}
.error-box__title{font-size:var(--fs-h1);font-weight:700;margin-bottom:16px;letter-spacing:-.02em}
.error-box__msg{color:var(--color-muted);margin-bottom:34px;font-size:16px}

/* ===== Footer ===== */
.site-footer{background:#0a1929;color:rgba(255,255,255,.72)}
.site-footer__top{padding:66px 0 44px}
.site-footer__top .container{display:grid;grid-template-columns:1fr auto;gap:60px;align-items:start}
.site-footer__logo{font-size:23px;font-weight:700;color:#fff;letter-spacing:-.02em;margin-bottom:10px}
.site-footer__logo-img{display:block;height:40px;width:auto;max-width:220px;margin-bottom:14px;object-fit:contain;filter:brightness(1.1)}
.site-footer__slogan{font-size:15px;color:rgba(255,255,255,.52)}
.site-footer__links{display:flex;gap:64px}
.site-footer__links dt{font-size:15px;color:#fff;font-weight:600;margin-bottom:16px}
.site-footer__links dd{font-size:14px;margin-bottom:9px}
.site-footer__links dd a{color:rgba(255,255,255,.58);transition:color var(--transition)}
.site-footer__links dd a:hover{color:var(--color-accent)}
.site-footer__bottom{border-top:1px solid rgba(255,255,255,.08);padding:26px 0}
.site-footer__bottom .container{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px}
.site-footer__info{display:flex;gap:22px;flex-wrap:wrap;font-size:14px}
.site-footer__copy{font-size:13px;color:rgba(255,255,255,.4);font-family:var(--font-en);display:inline-flex;align-items:center;gap:8px}
.site-footer__admin{
  display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;border-radius:50%;
  color:rgba(255,255,255,.3);border:1px solid rgba(255,255,255,.18);
  background:transparent;transition:all .18s ease;text-decoration:none;
}
.site-footer__admin:hover{color:#fff;border-color:rgba(255,255,255,.55);background:rgba(255,255,255,.08)}
.site-footer__admin svg{display:block}

/* ===== Responsive ===== */
@media (max-width:1400px){
  :root{--header-side:5%}
  .gnb__item>a{padding:32px 16px;font-size:16px}
}
@media (max-width:1200px){
  :root{--header-side:3%}
  .gnb__item>a{padding:32px 12px}
}
@media (max-width:1024px){
  .gnb-toggle{display:flex}
  :root{--header-side:5%}
  .gnb{position:fixed;top:100px;right:-100%;width:min(360px,92vw);height:calc(100vh - 100px);background:#fff;padding:26px;overflow-y:auto;transition:right var(--transition);box-shadow:-14px 0 34px rgba(0,0,0,.12)}
  body.nav-open .gnb{right:0}
  body.nav-open .gnb-bg{display:block;position:fixed;inset:100px 0 0 0;background:rgba(0,0,0,.45);z-index:999}
  .gnb__list{flex-direction:column;gap:0}
  .gnb__item>a{padding:15px 8px;border-bottom:1px solid var(--color-line);font-size:16px}
  .gnb__item>a::after{display:none}
  .gnb__sub{position:static;transform:none;opacity:1;visibility:visible;box-shadow:none;border-top:0;padding:8px 0 12px 16px;background:var(--color-bg-soft)}
  .gnb__sub a{font-size:14px;padding:8px 12px}
  .site-util{margin-left:auto}
  .site-util__link:not(.site-util__link--map){display:none}
  .page-lead{grid-template-columns:1fr;gap:32px}
  .stats{grid-template-columns:repeat(2,1fr)}
  .cards{grid-template-columns:1fr}
  .feat-grid,.feat-grid--4{grid-template-columns:repeat(2,1fr)}
  .news-grid{grid-template-columns:1fr}
  .section{padding:72px 0}
  .site-footer__top .container{grid-template-columns:1fr}
  .site-footer__links{flex-wrap:wrap;gap:36px}
  .board-table .col-author,.board-table .col-views{display:none}
  .board-table th,.board-table td{padding:14px 6px;font-size:14px}
  .sub-hero{padding:80px 0 56px}
  .sub{padding:56px 0 80px}
}
@media (max-width:640px){
  :root{--fs-body:16px}
  html{font-size:16px}
  .site-header__inner{height:68px;gap:12px;padding:0 5%}
  .gnb{top:68px;height:calc(100vh - 68px)}
  body.nav-open .gnb-bg{top:68px}
  .site-logo__mark{font-size:20px}
  .site-logo__name{display:none}
  .hero__inner{padding:56px 20px}
  .hero__cta{flex-direction:column;align-items:stretch}
  .hero__cta .btn{justify-content:center}
  .stats{grid-template-columns:1fr 1fr;gap:10px}
  .stats__item{padding:26px 14px}
  .stats__item strong{font-size:32px}
  .feat-grid,.feat-grid--4{grid-template-columns:1fr}
  .step{grid-template-columns:60px 1fr;gap:16px;padding:20px}
  .step__num{font-size:28px}
  .board-table .col-date{display:none}
  .board-table th,.board-table td{padding:12px 4px;font-size:13px}
  .post-nav__label{width:48px}
  .auth-box{padding:28px 20px}
  .form-actions{flex-direction:column}
  .form-actions .btn{margin:0 !important}
  .sitemap-grid{grid-template-columns:1fr;gap:32px}
  .cta-box{padding:40px 24px}
  .cta-box h3{font-size:var(--fs-h3)}
  .error-box__code{font-size:72px}
  .page-body{font-size:16px}
}
