/* layout.css - 그리드, 헤더, 푸터, 네비게이션
   (누락 없는 전체 버전)
*/

/* Container */
.container { margin: 0 auto; max-width: 100%; width: 1400px; }
@media screen and (max-width: 1680px) { .container { width: 1200px; } }
@media screen and (max-width: 1280px) { .container { width: 960px; } }
@media screen and (max-width: 980px) { .container { width: 95%; } }
@media screen and (max-width: 840px) { .container { width: 95%; } }
@media screen and (max-width: 736px) { .container { width: 90%; } }
@media screen and (max-width: 480px) { .container { width: 100%; padding-left: 15px; padding-right: 15px; } }

/* Grid System (Basic) */
.row { display: flex; flex-wrap: wrap; box-sizing: border-box; align-items: stretch; margin-top: -50px; margin-left: -50px; }
.row > * { box-sizing: border-box; padding: 50px 0 0 50px; }
.row.gtr-uniform { margin-top: -50px; }
.row.gtr-uniform > * { padding-top: 50px; }
.row.aln-left { justify-content: flex-start; }
.row.aln-center { justify-content: center; }
.row.aln-right { justify-content: flex-end; }
.row.aln-top { align-items: flex-start; }
.row.aln-middle { align-items: center; }
.row.aln-bottom { align-items: flex-end; }
.row > .imp { order: -1; }

.row > .col-1 { width: 8.33333%; } .row > .off-1 { margin-left: 8.33333%; }
.row > .col-2 { width: 16.66667%; } .row > .off-2 { margin-left: 16.66667%; }
.row > .col-3 { width: 25%; } .row > .off-3 { margin-left: 25%; }
.row > .col-4 { width: 33.33333%; } .row > .off-4 { margin-left: 33.33333%; }
.row > .col-5 { width: 41.66667%; } .row > .off-5 { margin-left: 41.66667%; }
.row > .col-6 { width: 50%; } .row > .off-6 { margin-left: 50%; }
.row > .col-7 { width: 58.33333%; } .row > .off-7 { margin-left: 58.33333%; }
.row > .col-8 { width: 66.66667%; } .row > .off-8 { margin-left: 66.66667%; }
.row > .col-9 { width: 75%; } .row > .off-9 { margin-left: 75%; }
.row > .col-10 { width: 83.33333%; } .row > .off-10 { margin-left: 83.33333%; }
.row > .col-11 { width: 91.66667%; } .row > .off-11 { margin-left: 91.66667%; }
.row > .col-12 { width: 100%; } .row > .off-12 { margin-left: 100%; }

/* Grid Gutters */
.row.gtr-0 { margin-top: 0px; margin-left: 0px; } .row.gtr-0 > * { padding: 0px 0 0 0px; }
.row.gtr-25 { margin-top: -12.5px; margin-left: -12.5px; } .row.gtr-25 > * { padding: 12.5px 0 0 12.5px; }
.row.gtr-50 { margin-top: -25px; margin-left: -25px; } .row.gtr-50 > * { padding: 25px 0 0 25px; }
.row.gtr-150 { margin-top: -75px; margin-left: -75px; } .row.gtr-150 > * { padding: 75px 0 0 75px; }
.row.gtr-200 { margin-top: -100px; margin-left: -100px; } .row.gtr-200 > * { padding: 100px 0 0 100px; }

/* Grid Responsive - Wide */
@media screen and (max-width: 1680px) {
    .row { margin-top: -40px; margin-left: -40px; } .row > * { padding: 40px 0 0 40px; }
    .row.gtr-uniform { margin-top: -40px; } .row.gtr-uniform > * { padding-top: 40px; }
    .row.gtr-0 { margin-top: 0px; margin-left: 0px; } .row.gtr-0 > * { padding: 0px 0 0 0px; }
    .row.gtr-25 { margin-top: -10px; margin-left: -10px; } .row.gtr-25 > * { padding: 10px 0 0 10px; }
    .row.gtr-50 { margin-top: -20px; margin-left: -20px; } .row.gtr-50 > * { padding: 20px 0 0 20px; }
    .row.gtr-150 { margin-top: -60px; margin-left: -60px; } .row.gtr-150 > * { padding: 60px 0 0 60px; }
    .row.gtr-200 { margin-top: -80px; margin-left: -80px; } .row.gtr-200 > * { padding: 80px 0 0 80px; }

    .row > .col-1-wide { width: 8.33333%; } .row > .off-1-wide { margin-left: 8.33333%; }
    .row > .col-2-wide { width: 16.66667%; } .row > .off-2-wide { margin-left: 16.66667%; }
    .row > .col-3-wide { width: 25%; } .row > .off-3-wide { margin-left: 25%; }
    .row > .col-4-wide { width: 33.33333%; } .row > .off-4-wide { margin-left: 33.33333%; }
    .row > .col-5-wide { width: 41.66667%; } .row > .off-5-wide { margin-left: 41.66667%; }
    .row > .col-6-wide { width: 50%; } .row > .off-6-wide { margin-left: 50%; }
    .row > .col-7-wide { width: 58.33333%; } .row > .off-7-wide { margin-left: 58.33333%; }
    .row > .col-8-wide { width: 66.66667%; } .row > .off-8-wide { margin-left: 66.66667%; }
    .row > .col-9-wide { width: 75%; } .row > .off-9-wide { margin-left: 75%; }
    .row > .col-10-wide { width: 83.33333%; } .row > .off-10-wide { margin-left: 83.33333%; }
    .row > .col-11-wide { width: 91.66667%; } .row > .off-11-wide { margin-left: 91.66667%; }
    .row > .col-12-wide { width: 100%; } .row > .off-12-wide { margin-left: 100%; }
}

/* Grid Responsive - Normal */
@media screen and (max-width: 1280px) {
    .row > .col-1-normal { width: 8.33333%; } .row > .off-1-normal { margin-left: 8.33333%; }
    .row > .col-2-normal { width: 16.66667%; } .row > .off-2-normal { margin-left: 16.66667%; }
    .row > .col-3-normal { width: 25%; } .row > .off-3-normal { margin-left: 25%; }
    .row > .col-4-normal { width: 33.33333%; } .row > .off-4-normal { margin-left: 33.33333%; }
    .row > .col-5-normal { width: 41.66667%; } .row > .off-5-normal { margin-left: 41.66667%; }
    .row > .col-6-normal { width: 50%; } .row > .off-6-normal { margin-left: 50%; }
    .row > .col-7-normal { width: 58.33333%; } .row > .off-7-normal { margin-left: 58.33333%; }
    .row > .col-8-normal { width: 66.66667%; } .row > .off-8-normal { margin-left: 66.66667%; }
    .row > .col-9-normal { width: 75%; } .row > .off-9-normal { margin-left: 75%; }
    .row > .col-10-normal { width: 83.33333%; } .row > .off-10-normal { margin-left: 83.33333%; }
    .row > .col-11-normal { width: 91.66667%; } .row > .off-11-normal { margin-left: 91.66667%; }
    .row > .col-12-normal { width: 100%; } .row > .off-12-normal { margin-left: 100%; }

    .row.gtr-0 { margin-top: 0px; margin-left: 0px; } .row.gtr-0 > * { padding: 0px 0 0 0px; }
    .row.gtr-25 { margin-top: -7.5px; margin-left: -7.5px; } .row.gtr-25 > * { padding: 7.5px 0 0 7.5px; }
    .row.gtr-50 { margin-top: -15px; margin-left: -15px; } .row.gtr-50 > * { padding: 15px 0 0 15px; }
    .row.gtr-150 { margin-top: -45px; margin-left: -45px; } .row.gtr-150 > * { padding: 45px 0 0 45px; }
    .row.gtr-200 { margin-top: -60px; margin-left: -60px; } .row.gtr-200 > * { padding: 60px 0 0 60px; }
}

/* Grid Responsive - Narrow */
@media screen and (max-width: 980px) {
    .row { margin-top: -30px; margin-left: -30px; } .row > * { padding: 30px 0 0 30px; }
    .row.gtr-uniform { margin-top: -30px; } .row.gtr-uniform > * { padding-top: 30px; }
    .row > .col-1-narrow { width: 8.33333%; } .row > .off-1-narrow { margin-left: 8.33333%; }
    .row > .col-2-narrow { width: 16.66667%; } .row > .off-2-narrow { margin-left: 16.66667%; }
    .row > .col-3-narrow { width: 25%; } .row > .off-3-narrow { margin-left: 25%; }
    .row > .col-4-narrow { width: 33.33333%; } .row > .off-4-narrow { margin-left: 33.33333%; }
    .row > .col-5-narrow { width: 41.66667%; } .row > .off-5-narrow { margin-left: 41.66667%; }
    .row > .col-6-narrow { width: 50%; } .row > .off-6-narrow { margin-left: 50%; }
    .row > .col-7-narrow { width: 58.33333%; } .row > .off-7-narrow { margin-left: 58.33333%; }
    .row > .col-8-narrow { width: 66.66667%; } .row > .off-8-narrow { margin-left: 66.66667%; }
    .row > .col-9-narrow { width: 75%; } .row > .off-9-narrow { margin-left: 75%; }
    .row > .col-10-narrow { width: 83.33333%; } .row > .off-10-narrow { margin-left: 83.33333%; }
    .row > .col-11-narrow { width: 91.66667%; } .row > .off-11-narrow { margin-left: 91.66667%; }
    .row > .col-12-narrow { width: 100%; } .row > .off-12-narrow { margin-left: 100%; }
}

/* Grid Responsive - Narrower (Footer uses this!) */
@media screen and (max-width: 840px) {
    .row > .col-1-narrower { width: 8.33333%; } .row > .off-1-narrower { margin-left: 8.33333%; }
    .row > .col-2-narrower { width: 16.66667%; } .row > .off-2-narrower { margin-left: 16.66667%; }
    .row > .col-3-narrower { width: 25%; } .row > .off-3-narrower { margin-left: 25%; }
    .row > .col-4-narrower { width: 33.33333%; } .row > .off-4-narrower { margin-left: 33.33333%; }
    .row > .col-5-narrower { width: 41.66667%; } .row > .off-5-narrower { margin-left: 41.66667%; }
    .row > .col-6-narrower { width: 50%; } .row > .off-6-narrower { margin-left: 50%; }
    .row > .col-7-narrower { width: 58.33333%; } .row > .off-7-narrower { margin-left: 58.33333%; }
    .row > .col-8-narrower { width: 66.66667%; } .row > .off-8-narrower { margin-left: 66.66667%; }
    .row > .col-9-narrower { width: 75%; } .row > .off-9-narrower { margin-left: 75%; }
    .row > .col-10-narrower { width: 83.33333%; } .row > .off-10-narrower { margin-left: 83.33333%; }
    .row > .col-11-narrower { width: 91.66667%; } .row > .off-11-narrower { margin-left: 91.66667%; }
    .row > .col-12-narrower { width: 100%; } .row > .off-12-narrower { margin-left: 100%; }
}

/* Grid Responsive - Mobile */
@media screen and (max-width: 736px) {
    .row { margin-top: -20px; margin-left: -20px; } .row > * { padding: 20px 0 0 20px; }
    .row.gtr-uniform { margin-top: -20px; } .row.gtr-uniform > * { padding-top: 20px; }
    .row.gtr-0 { margin-top: 0px; margin-left: 0px; } .row.gtr-0 > * { padding: 0px 0 0 0px; }
    .row.gtr-25 { margin-top: -5px; margin-left: -5px; } .row.gtr-25 > * { padding: 5px 0 0 5px; }
    .row.gtr-50 { margin-top: -10px; margin-left: -10px; } .row.gtr-50 > * { padding: 10px 0 0 10px; }
    .row.gtr-150 { margin-top: -30px; margin-left: -30px; } .row.gtr-150 > * { padding: 30px 0 0 30px; }
    .row.gtr-200 { margin-top: -40px; margin-left: -40px; } .row.gtr-200 > * { padding: 40px 0 0 40px; }

    .row > .col-1-mobile { width: 8.33333%; } .row > .off-1-mobile { margin-left: 8.33333%; }
    .row > .col-2-mobile { width: 16.66667%; } .row > .off-2-mobile { margin-left: 16.66667%; }
    .row > .col-3-mobile { width: 25%; } .row > .off-3-mobile { margin-left: 25%; }
    .row > .col-4-mobile { width: 33.33333%; } .row > .off-4-mobile { margin-left: 33.33333%; }
    .row > .col-5-mobile { width: 41.66667%; } .row > .off-5-mobile { margin-left: 41.66667%; }
    .row > .col-6-mobile { width: 50%; } .row > .off-6-mobile { margin-left: 50%; }
    .row > .col-7-mobile { width: 58.33333%; } .row > .off-7-mobile { margin-left: 58.33333%; }
    .row > .col-8-mobile { width: 66.66667%; } .row > .off-8-mobile { margin-left: 66.66667%; }
    .row > .col-9-mobile { width: 75%; } .row > .off-9-mobile { margin-left: 75%; }
    .row > .col-10-mobile { width: 83.33333%; } .row > .off-10-mobile { margin-left: 83.33333%; }
    .row > .col-11-mobile { width: 91.66667%; } .row > .off-11-mobile { margin-left: 91.66667%; }
    .row > .col-12-mobile { width: 100%; } .row > .off-12-mobile { margin-left: 100%; }
}

/* Grid Responsive - Mobile Portrait (Footer uses this!) */
@media screen and (max-width: 480px) {
    .row > .col-1-mobilep { width: 8.33333%; } .row > .off-1-mobilep { margin-left: 8.33333%; }
    .row > .col-2-mobilep { width: 16.66667%; } .row > .off-2-mobilep { margin-left: 16.66667%; }
    .row > .col-3-mobilep { width: 25%; } .row > .off-3-mobilep { margin-left: 25%; }
    .row > .col-4-mobilep { width: 33.33333%; } .row > .off-4-mobilep { margin-left: 33.33333%; }
    .row > .col-5-mobilep { width: 41.66667%; } .row > .off-5-mobilep { margin-left: 41.66667%; }
    .row > .col-6-mobilep { width: 50%; } .row > .off-6-mobilep { margin-left: 50%; }
    .row > .col-7-mobilep { width: 58.33333%; } .row > .off-7-mobilep { margin-left: 58.33333%; }
    .row > .col-8-mobilep { width: 66.66667%; } .row > .off-8-mobilep { margin-left: 66.66667%; }
    .row > .col-9-mobilep { width: 75%; } .row > .off-9-mobilep { margin-left: 75%; }
    .row > .col-10-mobilep { width: 83.33333%; } .row > .off-10-mobilep { margin-left: 83.33333%; }
    .row > .col-11-mobilep { width: 91.66667%; } .row > .off-11-mobilep { margin-left: 91.66667%; }
    .row > .col-12-mobilep { width: 100%; } .row > .off-12-mobilep { margin-left: 100%; }
}

/* Header */
#header {
    text-align: center; padding: 3em 0 0 0; background-color: var(--bg-header);
    background-image: url("images/bg02.png"), url("images/bg02.png"), var(--bg-image-pattern);
    background-position: top left, top left, top left; background-size: 100% 6em, 100% 6em, auto; background-repeat: no-repeat, no-repeat, repeat;
}
#header h1 { padding: 0 0 2.75em 0; margin: 0; }
#header h1 a { font-size: 1.5em; letter-spacing: -0.025em; border: 0; color: inherit; }

/* Nav */
#nav {
    cursor: default; background-color: var(--bg-nav); padding: 0;
    background-image: linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,0.3)), var(--bg-image-pattern);
}
#nav:after { content: ''; display: block; width: 100%; height: 0.75em; background-color: var(--color-primary); background-image: var(--bg-image-pattern); }
#nav > ul { margin: 0; }
#nav > ul > li { position: relative; display: inline-block; margin-left: 1em; }
#nav > ul > li a { color: var(--text-nav); text-decoration: none; border: 0; display: block; padding: 1.5em 0.5em 1.35em 0.5em; }
#nav > ul > li:hover a, #nav > ul > li.current a { color: var(--text-invert); }
#nav > ul > li.current:before {
    transform: rotateZ(45deg); width: 0.75em; height: 0.75em; content: ''; display: block; position: absolute; bottom: -0.5em; left: 50%; margin-left: -0.375em; background-color: var(--color-primary); background-image: var(--bg-image-pattern);
}
#nav > ul > li > ul { display: none; }

/* Banner */
#banner {
    background-image: url("../images/banner.jpg"); background-position: center center; background-size: cover; height: 28em; text-align: center; position: relative;
}
#banner header {
    position: absolute; bottom: 0; left: 0; width: 100%; background: rgba(27, 27, 27, 0.75); color: var(--text-invert); padding: 1.5em 0;
}
#banner header h2 { display: inline-block; margin: 0; font-size: 1.25em; vertical-align: middle; }

/* Footer */
#footer {
    padding: 4em 0 8em 0;
    background-color: var(--bg-footer);
}

#footer .container {
    margin-bottom: 4em;
}

/* [추가] 푸터 내 링크는 기본적으로 상속받은 색(회색 등)을 따르도록 하여 차분하게 만듦 */
#footer a {
    color: inherit;
    border-bottom-color: rgba(71, 71, 71, 0.25);
}

#footer a:hover {
    color: var(--color-primary);
    border-bottom-color: transparent;
}

#footer .icons {
    text-align: center;
    margin: 0;
}

/* [추가] 소셜 아이콘 링크 색상 복구 */
#footer .icons a {
    color: #999; /* 또는 var(--text-sub) */
}

#footer .icons a:hover {
    color: var(--text-main);
}

#footer .copyright {
    color: var(--text-sub);
    margin-top: 1.5em;
    text-align: center;
    font-size: 0.9em;
}

/* Wrapper & Sections */
.wrapper { padding: 5em 0 3em 0; }
.wrapper.style1 { background: var(--bg-element); }
.wrapper.style2 {
    background-color: var(--bg-element);
    background-image: url("images/bg02.png"), url("images/bg03.png"), var(--bg-image-pattern);
    background-position: top left, bottom left, top left; background-size: 100% 6em, 100% 6em, auto; background-repeat: no-repeat, no-repeat, repeat;
}
.wrapper.style3 {
    background-color: var(--color-primary); color: var(--text-invert);
    background-image: linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,0.15)), var(--bg-image-pattern);
}
section.special, article.special { text-align: center; }
header.major { text-align: center; margin: 0 0 2em 0; }
header.major h2 { font-size: 2.25em; }
header.major p { position: relative; border-top: solid 1px var(--border-color); padding: 1em 0 0 0; margin: 0; top: -1em; font-size: 1.5em; letter-spacing: -0.025em; }

/* Mobile Navigation */
#page-wrapper { transition: transform 0.5s ease; padding-bottom: 1px; padding-top: 44px; }
#titleBar {
    display: block; height: 44px; left: 0; position: fixed; top: 0; width: 100%; z-index: 10001; background-color: var(--bg-nav); line-height: 44px; box-shadow: 0 4px 0 0 var(--color-primary);
    background-image: linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,0.3)), var(--bg-image-pattern);
}
#titleBar .title { display: block; position: relative; font-weight: 600; text-align: center; color: var(--text-invert); z-index: 1; }
#titleBar .toggle { text-decoration: none; border: 0; height: 60px; left: 0; position: absolute; top: 0; width: 80px; z-index: 2; }
#titleBar .toggle:before { content: '\f0c9'; display: block; height: 44px; width: 44px; color: var(--text-invert); opacity: 0.5; font-family: 'Font Awesome 5 Free'; font-weight: 900; text-align: center; }
#navPanel {
    background-color: #1f1f1f; transform: translateX(-275px); transition: transform 0.5s ease; display: block; height: 100%; left: 0; overflow-y: auto; position: fixed; top: 0; width: 275px; z-index: 10002;
    background-image: linear-gradient(left, rgba(0,0,0,0) 75%, rgba(0,0,0,0.15)), var(--bg-image-pattern);
}
#navPanel .link { border-top: solid 1px rgba(255, 255, 255, 0.05); color: #888; display: block; height: 48px; line-height: 48px; padding: 0 1em; text-decoration: none; }
body.navPanel-visible #page-wrapper, body.navPanel-visible #titleBar { transform: translateX(275px); }
body.navPanel-visible #navPanel { transform: translateX(0); }

/* Responsive Adjustments */
@media screen and (min-width: 841px) { #navPanel, #titleBar { display: none; } #page-wrapper { padding-top: 0; } }
@media screen and (max-width: 840px) { #header { display: none; } #banner { height: 20em; } }
@media screen and (max-width: 736px) { .wrapper { padding: 2em 0 1px 0; } }
@media screen and (max-width: 480px) {
    #banner { height: 16em; min-height: 250px; }
    #titleBar { position: fixed; top: 0; width: 100%; z-index: 10000; }
    #page-wrapper { padding-top: 44px !important; }
}