/** 파일명: frontend.css* 위치: /wp-content/plugins/wedding-fair-schedule/assets/css/frontend.css* 기능: 웨딩박람회 프론트엔드 전용 스타일시트 - 반응형 디자인, 애니메이션 효과* 작성일: 2025-08-10* * 저작권: Copyright (C) 2025 호텔천사. All rights reserved.* 개발자: Developed by URL.KR (수정 불가)* 라이선스: 자유롭게 수정 가능하나 재배포 및 상업적 재배포 불가*//* ===================================* CSS 변수 정의* ===================================*/:root {    --wfs-primary-color: #667eea;    --wfs-secondary-color: #764ba2;    --wfs-success-color: #198754;    --wfs-info-color: #0dcaf0;    --wfs-warning-color: #ffc107;    --wfs-danger-color: #dc3545;    --wfs-light-color: #f8f9fa;    --wfs-dark-color: #212529;    --wfs-gray-color: #6c757d;    --wfs-border-color: #e9ecef;    --wfs-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);    --wfs-shadow-hover: 0 4px 8px rgba(0, 0, 0, 0.2);    --wfs-transition: all 0.3s ease;}/* ===================================* 플러그인 전용 네임스페이스* ===================================*/.wfs-container {    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;    color: var(--wfs-dark-color);    line-height: 1.6;}/* ===================================* 컨테이너 확장* ===================================*/body.page-template-page-wedding-fair .container,body.page-template-page-wedding-fair .container-fluid {    max-width: 1400px !important;    width: 100% !important;}/* ===================================* 헤더 스타일* ===================================*/.wfs-site-header {    background: linear-gradient(135deg, var(--wfs-primary-color) 0%, var(--wfs-secondary-color) 100%);    color: white;    padding: 2rem 0;    margin-bottom: 2rem;    border-radius: 0.5rem;    animation: wfsFadeIn 0.6s ease-out;}.wfs-site-header h1 {    font-size: 1.8rem;    font-weight: 700;    margin: 0;    color: white;}/* ===================================* 카드 컴포넌트* ===================================*/.wfs-card {    border: 1px solid var(--wfs-border-color);    border-radius: 0.5rem;    background-color: white;    box-shadow: var(--wfs-shadow);    margin-bottom: 1.5rem;    overflow: hidden;    animation: wfsFadeInUp 0.6s ease-out;    transition: var(--wfs-transition);}.wfs-card:hover {    box-shadow: var(--wfs-shadow-hover);}.wfs-card-header {    background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);    border-bottom: 1px solid var(--wfs-border-color);    padding: 1rem 1.25rem;    font-weight: 600;}.wfs-card-body {    padding: 1.25rem;}/* ===================================* 지역 네비게이션* ===================================*/.wfs-region-nav .wfs-card-header {    background: linear-gradient(135deg, var(--wfs-primary-color) 0%, var(--wfs-secondary-color) 100%);    border: none;}.wfs-region-nav .wfs-card-header h5 {    color: white;    margin: 0;}.wfs-region-nav .list-group-item {    transition: var(--wfs-transition);    cursor: pointer;}.wfs-region-nav .list-group-item:hover {    background-color: var(--wfs-light-color);    transform: translateX(5px);}.wfs-region-nav .list-group-item.active {    background: linear-gradient(135deg, var(--wfs-primary-color) 0%, var(--wfs-secondary-color) 100%);    color: white;    border-color: transparent;}/* 스티키 사이드바 */@media (min-width: 992px) {    .wfs-sidebar-sticky {        position: sticky;        top: 5rem;        z-index: 100;    }        .admin-bar .wfs-sidebar-sticky {        top: 7rem;    }}/* ===================================* 박람회 리스트* ===================================*/.wfs-fair-list {    list-style: none;    padding: 0;    margin: 0;}.wfs-fair-item {    padding: 1.5rem 0;    border-bottom: 1px solid var(--wfs-border-color);    transition: var(--wfs-transition);    position: relative;}.wfs-fair-item:last-child {    border-bottom: none;}.wfs-fair-item:hover {    background-color: rgba(102, 126, 234, 0.05);}/* 이미지 스타일 */.wfs-fair-image {    width: 100%;    height: 100%;    object-fit: cover;    border-radius: 0.375rem;    box-shadow: var(--wfs-shadow);    transition: var(--wfs-transition);}.wfs-fair-image:hover {    transform: scale(1.02);}.wfs-image-container {    overflow: hidden;    border-radius: 0.375rem;}/* 콘텐츠 스타일 */.wfs-fair-item h4 {    color: var(--wfs-dark-color);    font-weight: 600;    margin-bottom: 0.75rem;    line-height: 1.4;}.wfs-fair-date {    color: var(--wfs-primary-color);    font-weight: 500;    margin-bottom: 0.5rem;}.wfs-fair-date i {    margin-right: 0.25rem;}.wfs-fair-location {    color: var(--wfs-gray-color);    margin-bottom: 0.75rem;}.wfs-fair-location i {    margin-right: 0.25rem;}.wfs-fair-description {    color: #495057;    font-size: 0.9rem;    line-height: 1.5;    margin-bottom: 1rem;}/* ===================================* 버튼 스타일* ===================================*/.wfs-btn-apply {    display: inline-block;    background: linear-gradient(135deg, var(--wfs-primary-color) 0%, var(--wfs-secondary-color) 100%);    color: white !important;    padding: 0.5rem 1.5rem;    border-radius: 25px;    text-decoration: none !important;    font-weight: 500;    font-size: 0.875rem;    transition: var(--wfs-transition);    box-shadow: var(--wfs-shadow);    border: none;    position: relative;    overflow: hidden;}.wfs-btn-apply:before {    content: '';    position: absolute;    top: 50%;    left: 50%;    width: 0;    height: 0;    border-radius: 50%;    background: rgba(255, 255, 255, 0.3);    transform: translate(-50%, -50%);    transition: width 0.6s, height 0.6s;}.wfs-btn-apply:hover {    transform: translateY(-2px);    box-shadow: var(--wfs-shadow-hover);    background: linear-gradient(135deg, var(--wfs-secondary-color) 0%, var(--wfs-primary-color) 100%);}.wfs-btn-apply:hover:before {    width: 300px;    height: 300px;}.wfs-btn-apply i {    margin-left: 0.5rem;    font-size: 0.875rem;}/* ===================================* 배지 스타일* ===================================*/.wfs-badge {    padding: 0.35em 0.65em;    font-size: 0.75em;    font-weight: 500;    border-radius: 0.375rem;    display: inline-block;}.wfs-badge.wfs-bg-info {    background-color: var(--wfs-info-color);    color: #000;}.wfs-badge.wfs-bg-primary {    background-color: var(--wfs-primary-color);    color: white;}/* ===================================* 타임라인 헤더* ===================================*/.wfs-timeline-header {    background: linear-gradient(135deg, var(--wfs-primary-color) 0%, var(--wfs-secondary-color) 100%);    color: white;    padding: 1.5rem;    border-radius: 0.5rem;    margin-bottom: 2rem;    box-shadow: var(--wfs-shadow);    animation: wfsFadeIn 0.6s ease-out;}.wfs-timeline-header h2 {    color: white;    font-weight: 600;    margin: 0;}.wfs-timeline-header i {    color: white;}/* ===================================* 검색 결과* ===================================*/.wfs-no-results {    text-align: center;    padding: 3rem 2rem;    color: var(--wfs-gray-color);}.wfs-no-results p {    font-size: 1.1rem;    margin: 0;}.wfs-search-highlight {    background-color: #fff3cd;    padding: 0.1em 0.2em;    border-radius: 0.2em;    font-weight: 500;}/* ===================================* 로딩 스피너* ===================================*/.wfs-spinner {    display: inline-block;    width: 2rem;    height: 2rem;    vertical-align: text-bottom;    border: 0.25em solid currentColor;    border-right-color: transparent;    border-radius: 50%;    animation: wfsSpinner 0.75s linear infinite;}@keyframes wfsSpinner {    to { transform: rotate(360deg); }}/* ===================================* 애니메이션* ===================================*/@keyframes wfsFadeIn {    from {        opacity: 0;    }    to {        opacity: 1;    }}@keyframes wfsFadeInUp {    from {        opacity: 0;        transform: translateY(30px);    }    to {        opacity: 1;        transform: translateY(0);    }}@keyframes wfsSlideInLeft {    from {        opacity: 0;        transform: translateX(-30px);    }    to {        opacity: 1;        transform: translateX(0);    }}@keyframes wfsSlideInRight {    from {        opacity: 0;        transform: translateX(30px);    }    to {        opacity: 1;        transform: translateX(0);    }}/* ===================================* 반응형 디자인* ===================================*//* 태블릿 */@media (max-width: 991px) {    .wfs-site-header h1 {        font-size: 1.5rem;    }        .wfs-fair-item {        padding: 1rem 0;    }        .wfs-sidebar-sticky {        position: relative;        top: 0;    }}/* 모바일 */@media (max-width: 767px) {    .wfs-site-header {        padding: 1.5rem 0;        margin-bottom: 1rem;    }        .wfs-site-header h1 {        font-size: 1.25rem;    }        .wfs-timeline-header {        padding: 1rem;        margin-bottom: 1rem;    }        .wfs-timeline-header h2 {        font-size: 1.1rem;    }        .wfs-card {        border-radius: 0.375rem;        margin-bottom: 1rem;    }        .wfs-card-header {        padding: 0.75rem 1rem;    }        .wfs-card-body {        padding: 1rem;    }        .wfs-fair-item {        padding: 1rem 0;    }        .wfs-fair-item h4 {        font-size: 1.1rem;        margin-bottom: 0.5rem;    }        .wfs-fair-date,    .wfs-fair-location {        font-size: 0.9rem;    }        .wfs-fair-description {        font-size: 0.85rem;    }        .wfs-btn-apply {        width: 100%;        text-align: center;        padding: 0.75rem 1.5rem;    }        .wfs-scroll-to-top {        width: 45px;        height: 45px;        bottom: 1rem;        right: 1rem;    }        /* 모바일 이미지 정사각형 */    .wfs-mobile-image-wrapper {        width: 100%;        position: relative;        padding-bottom: 100%;        overflow: hidden;        border-radius: 0.375rem;        margin-bottom: 1rem;    }        .wfs-mobile-image-wrapper .wfs-fair-image {        position: absolute;        top: 0;        left: 0;        width: 100%;        height: 100%;        object-fit: cover;    }}/* 작은 모바일 */@media (max-width: 576px) {    .wfs-site-header h1 {        font-size: 1.125rem;    }        .wfs-timeline-header h2 {        font-size: 1rem;    }        .wfs-fair-item h4 {        font-size: 1rem;    }}/* ===================================* 인쇄 스타일* ===================================*/@media print {    .wfs-site-header,    .wfs-region-nav,    .wfs-scroll-to-top,    .wfs-btn-apply,    .wfs-mobile-region-nav {        display: none !important;    }        .wfs-fair-item {        break-inside: avoid;        page-break-inside: avoid;    }        .wfs-card {        border: 1px solid #ddd;        box-shadow: none;    }}/* ===================================* 접근성 개선* ===================================*/.wfs-container *:focus {    outline: 2px solid var(--wfs-primary-color);    outline-offset: 2px;}.wfs-btn-apply:focus {    box-shadow: 0 0 0 0.25rem rgba(102, 126, 234, 0.25);}.wfs-sr-only {    position: absolute;    width: 1px;    height: 1px;    padding: 0;    margin: -1px;    overflow: hidden;    clip: rect(0, 0, 0, 0);    white-space: nowrap;    border: 0;}/* ===================================* 다크 모드 지원 (선택사항)* ===================================*/@media (prefers-color-scheme: dark) {    .wfs-card {        background-color: #1a1a1a;        border-color: #333;    }        .wfs-card-header {        background: linear-gradient(135deg, #2a2a2a 0%, #3a3a3a 100%);        border-color: #333;    }        .wfs-card-body {        color: #e0e0e0;    }        .wfs-fair-item {        border-color: #333;    }        .wfs-fair-item h4 {        color: #e0e0e0;    }        .wfs-fair-description {        color: #b0b0b0;    }}