/*
 * Ghislaine Vermette — main stylesheet.
 * Brand: cyan #40D9F1, pink #EA6485, accent #CFEFF5, font Source Sans Pro.
 */

:root {
        --gv-primary: #40D9F1;
        --gv-primary-dark: #1FBFD9;
        --gv-secondary: #EA6485;
        --gv-accent: #CFEFF5;
        --gv-bg: #ffffff;
        --gv-muted-bg: #f5f5f5;
        --gv-text: #595959;
        --gv-heading: #1f1f1f;
        --gv-muted: #8a8a8a;
        --gv-border: #e0eef2;
        --gv-card: #ffffff;
        --gv-radius: 0.75rem;
        --gv-radius-pill: 999px;
        --gv-shadow-sm: 0 1px 3px rgba(20, 30, 40, 0.05);
        --gv-shadow-md: 0 8px 24px rgba(20, 30, 40, 0.08);
        --gv-container: 1200px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
        margin: 0;
        font-family: 'Source Sans Pro', sans-serif;
        color: var(--gv-text);
        background: var(--gv-bg);
        line-height: 1.6;
        -webkit-font-smoothing: antialiased;
}

img { max-width: 100%; height: auto; display: block; }
a { color: var(--gv-primary-dark); text-decoration: none; transition: color .2s ease; }
a:hover { color: var(--gv-secondary); }

h1, h2, h3, h4, h5 {
        color: var(--gv-heading);
        font-weight: 700;
        margin: 0 0 .5em;
        line-height: 1.2;
}

p { margin: 0 0 1em; }

.gv-skip-link {
        position: absolute;
        left: -9999px;
        top: -9999px;
}
.gv-skip-link:focus {
        left: 1rem; top: 1rem; z-index: 9999;
        background: #fff; padding: .5rem 1rem;
        border: 2px solid var(--gv-primary);
}

.gv-container {
        max-width: var(--gv-container);
        margin: 0 auto;
        padding: 0 1rem;
}
.gv-narrow { max-width: 800px; }
.gv-text-center { text-align: center; }

/* ---------- Header ---------- */
.gv-site-header {
        position: sticky; top: 0; z-index: 50;
        background: rgba(255, 255, 255, 0.95);
        backdrop-filter: blur(8px);
        border-bottom: 1px solid var(--gv-border);
}
.gv-header-inner {
        display: flex; align-items: center; justify-content: space-between;
        min-height: 80px; gap: 1.5rem;
}
.gv-logo img,
.gv-logo .custom-logo { height: 40px; width: auto; }
.gv-primary-nav { flex: 1; }
.gv-menu {
        display: flex; gap: .25rem; list-style: none; margin: 0; padding: 0;
}
.gv-menu li { position: relative; }
.gv-menu a {
        display: inline-block; padding: .5rem .9rem;
        color: var(--gv-text); font-weight: 600; font-size: .95rem;
        border-radius: .5rem;
        transition: background .2s, color .2s;
}
.gv-menu a:hover,
.gv-menu .current-menu-item > a,
.gv-menu .current_page_item > a {
        color: var(--gv-primary-dark);
        background: var(--gv-accent);
}
.gv-menu .sub-menu {
        position: absolute; top: 100%; left: 0; z-index: 50;
        background: #fff; border: 1px solid var(--gv-border);
        border-radius: .5rem; box-shadow: var(--gv-shadow-md);
        list-style: none; margin: .25rem 0 0; padding: .5rem;
        min-width: 220px; opacity: 0; pointer-events: none;
        transform: translateY(4px); transition: opacity .15s, transform .15s;
}
.gv-menu .sub-menu .sub-menu {
        top: 0; left: 100%; margin: 0 0 0 .25rem; transform: translateX(4px);
}
.gv-menu .sub-menu a {
        display: block; white-space: nowrap;
}
.gv-menu li:hover > .sub-menu,
.gv-menu li:focus-within > .sub-menu {
        opacity: 1; pointer-events: auto; transform: translateY(0);
}
.gv-menu .sub-menu li:hover > .sub-menu,
.gv-menu .sub-menu li:focus-within > .sub-menu {
        transform: translateX(0);
}
.gv-menu .menu-item-has-children > a::after {
        content: " \25BE"; font-size: .8em; opacity: .7;
}
.gv-menu .sub-menu .menu-item-has-children > a::after {
        content: " \25B8";
}

@media (max-width: 880px) {
        .gv-primary-nav { display: none; }
}

.gv-header-actions {
        display: flex; align-items: center; gap: 1rem;
}
.gv-lang-toggle {
        display: inline-flex; align-items: center; justify-content: center;
        min-width: 48px; height: 36px;
        border: 1px solid rgba(64, 217, 241, 0.25);
        border-radius: var(--gv-radius-pill);
        color: var(--gv-primary-dark);
        font-weight: 700; font-size: .85rem;
        background: transparent;
        transition: background .2s, color .2s;
}
.gv-lang-toggle:hover {
        background: rgba(64, 217, 241, 0.12);
}

.gv-mobile-toggle {
        display: none; background: none; border: none;
        width: 40px; height: 40px; cursor: pointer;
        flex-direction: column; justify-content: center; gap: 5px;
}
.gv-mobile-toggle .gv-bar {
        display: block; width: 22px; height: 2px;
        background: var(--gv-heading); border-radius: 2px;
        margin: 0 auto; transition: transform .2s;
}
@media (max-width: 880px) {
        .gv-mobile-toggle { display: flex; }
}
.gv-mobile-menu {
        border-top: 1px solid var(--gv-border);
        background: #fff;
        padding: 1rem;
}
.gv-mobile-menu .gv-mobile-menu-list {
        list-style: none; margin: 0; padding: 0;
}
.gv-mobile-menu .gv-mobile-menu-list li { padding: .25rem 0; }
.gv-mobile-menu .gv-mobile-menu-list a {
        display: block; padding: .6rem .25rem;
        font-size: 1.05rem; font-weight: 600;
        color: var(--gv-heading);
}
.gv-mobile-menu .gv-mobile-menu-list .sub-menu {
        list-style: none; margin: 0 0 .5rem; padding-left: 1rem;
        border-left: 2px solid var(--gv-accent);
}
.gv-mobile-menu .gv-mobile-menu-list .sub-menu a {
        font-size: .95rem; color: var(--gv-muted); padding: .35rem .25rem;
}
.gv-mobile-menu .gv-mobile-menu-list .sub-menu .sub-menu {
        padding-left: 1rem;
}

/* ---------- Buttons ---------- */
.gv-button {
        display: inline-block; padding: .75rem 1.75rem;
        border-radius: var(--gv-radius-pill);
        font-weight: 600; font-size: .95rem; cursor: pointer;
        border: 1px solid transparent;
        transition: background .2s, color .2s, border-color .2s, transform .15s, box-shadow .2s;
}
.gv-button:hover { transform: translateY(-1px); box-shadow: var(--gv-shadow-md); }
.gv-button-primary {
        background: var(--gv-primary); color: #fff;
}
.gv-button-primary:hover { background: var(--gv-primary-dark); color: #fff; }
.gv-button-outline {
        background: transparent; color: var(--gv-primary-dark);
        border-color: rgba(64, 217, 241, 0.4);
}
.gv-button-outline:hover {
        background: var(--gv-primary); color: #fff; border-color: var(--gv-primary);
}
.gv-button-block { display: block; text-align: center; }

/* ---------- Sections / titles ---------- */
.gv-section { padding: 4rem 0; }
@media (min-width: 768px) { .gv-section { padding: 6rem 0; } }

.gv-page-header { margin-bottom: 3rem; }
.gv-page-title {
        position: relative; display: inline-block;
        font-size: 2.25rem; line-height: 1.15;
}
@media (min-width: 768px) { .gv-page-title { font-size: 3rem; } }
.gv-section-title {
        position: relative; display: inline-block;
        font-size: 1.75rem;
}
.gv-underline {
        display: block; height: 6px; width: 96px;
        border-radius: var(--gv-radius-pill);
        margin-top: 1rem;
}
.gv-underline-primary { background: var(--gv-primary); }
.gv-underline-secondary { background: var(--gv-secondary); }
.gv-underline-center { margin-left: auto; margin-right: auto; }
.gv-section-cta { margin-top: 1.5rem; }

.gv-prose { color: var(--gv-text); font-size: 1.05rem; line-height: 1.75; }
.gv-prose p { margin-bottom: 1.25em; }

/* ---------- Carousel ---------- */
.gv-carousel {
        position: relative; overflow: hidden;
        background: rgba(207, 239, 245, 0.3);
        padding: 3rem 0;
}
@media (min-width: 768px) { .gv-carousel { padding: 5rem 0; } }
.gv-carousel-decor {
        position: absolute; border-radius: 9999px; filter: blur(60px); pointer-events: none; opacity: .3;
}
.gv-carousel-decor-a { top: -100px; right: -100px; width: 280px; height: 280px; background: var(--gv-primary); }
.gv-carousel-decor-b { bottom: -120px; left: -120px; width: 320px; height: 320px; background: var(--gv-secondary); opacity: .15; }

.gv-carousel-viewport { overflow: hidden; max-width: 1100px; margin: 0 auto; padding: 0 1rem; }
.gv-carousel-track {
        display: flex; transition: transform .6s cubic-bezier(.5,0,.25,1);
        will-change: transform;
}
.gv-carousel-slide {
        flex: 0 0 100%;
        display: flex; flex-direction: column;
        align-items: center; gap: 2rem;
        padding: 1rem;
}
@media (min-width: 768px) {
        .gv-carousel-slide { flex-direction: row; gap: 4rem; padding: 2rem; }
}
.gv-carousel-cover {
        width: 200px; flex-shrink: 0;
}
@media (min-width: 768px) { .gv-carousel-cover { width: 32%; } }
.gv-carousel-cover img {
        width: 100%; border-radius: 8px;
        box-shadow: 0 18px 40px rgba(0,0,0,.18);
        transition: transform .6s ease;
}
.gv-carousel-cover:hover img { transform: scale(1.04); }
.gv-carousel-info {
        flex: 1; text-align: center;
}
@media (min-width: 768px) { .gv-carousel-info { text-align: left; } }
.gv-carousel-title { font-size: 2rem; }
@media (min-width: 768px) { .gv-carousel-title { font-size: 3rem; } }
.gv-carousel-desc { font-size: 1.1rem; color: var(--gv-muted); margin: 1.5rem 0 2rem; max-width: 540px; }

.gv-carousel-nav {
        position: absolute; top: 50%; transform: translateY(-50%);
        width: 44px; height: 44px;
        background: rgba(255,255,255,.85);
        border: 1px solid rgba(64, 217, 241, 0.25);
        border-radius: 9999px; cursor: pointer;
        color: var(--gv-primary-dark); font-size: 1.1rem;
        display: none; align-items: center; justify-content: center;
        box-shadow: var(--gv-shadow-sm);
}
.gv-carousel-nav:hover { background: #fff; }
.gv-carousel-prev { left: 1rem; }
.gv-carousel-next { right: 1rem; }
@media (min-width: 768px) {
        .gv-carousel-nav { display: flex; }
        .gv-carousel-prev { left: 1.5rem; }
        .gv-carousel-next { right: 1.5rem; }
}

/* ---------- Home grid ---------- */
.gv-home-grid {
        display: grid; gap: 3rem;
        grid-template-columns: 1fr;
}
@media (min-width: 1024px) {
        .gv-home-grid { grid-template-columns: 3fr 2fr; gap: 2.5rem; align-items: start; }
}

.gv-upcoming-events { margin-top: 1.5rem; display: flex; flex-direction: column; gap: 1.25rem; }
.gv-upcoming-event {
        display: flex; gap: 1.25rem; align-items: stretch;
        background: var(--gv-card); border: 1px solid var(--gv-border);
        border-radius: var(--gv-radius); padding: 1.25rem;
        box-shadow: var(--gv-shadow-sm);
        transition: box-shadow .2s, transform .2s;
}
.gv-upcoming-event:hover { box-shadow: var(--gv-shadow-md); transform: translateY(-2px); }
.gv-upcoming-date {
        display: flex; flex-direction: column; align-items: center; justify-content: center;
        background: var(--gv-accent); color: var(--gv-heading);
        border-radius: .5rem; padding: 1rem; min-width: 84px;
}
.gv-upcoming-event:hover .gv-upcoming-date { background: var(--gv-primary); color: #fff; }
.gv-upcoming-day { font-size: 1.75rem; font-weight: 800; line-height: 1; }
.gv-upcoming-month { font-size: .8rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; margin-top: .25rem; }
.gv-upcoming-body { flex: 1; }
.gv-upcoming-title { font-size: 1.2rem; margin-bottom: .35rem; }
.gv-upcoming-event:hover .gv-upcoming-title { color: var(--gv-primary-dark); }
.gv-upcoming-meta { display: flex; flex-wrap: wrap; gap: .25rem 1rem; font-size: .85rem; color: var(--gv-muted); margin-bottom: .35rem; }
.gv-upcoming-desc { font-size: .9rem; color: var(--gv-muted); margin: 0; }

.gv-empty {
        background: var(--gv-muted-bg); border-radius: var(--gv-radius);
        padding: 2rem; text-align: center; color: var(--gv-muted);
}

/* ---------- Calendar ---------- */
.gv-home-calendar { position: relative; }
@media (min-width: 1024px) {
        .gv-home-calendar::before {
                content: ""; position: absolute; inset: 0;
                background: rgba(207, 239, 245, 0.4);
                border-radius: 1rem; transform: rotate(3deg); z-index: -1;
        }
}
.gv-calendar {
        background: var(--gv-card); border: 1px solid var(--gv-border);
        border-radius: var(--gv-radius); box-shadow: var(--gv-shadow-sm);
        padding: 1.25rem; max-width: 420px; margin: 0 auto;
}
.gv-calendar-head {
        display: flex; align-items: center; justify-content: space-between;
        margin-bottom: 1rem;
}
.gv-calendar-title {
        font-size: 1.2rem; text-transform: capitalize; margin: 0;
}
.gv-calendar-nav {
        background: none; border: none; cursor: pointer; color: var(--gv-muted);
        font-size: 1rem; padding: .25rem .5rem; border-radius: .5rem;
}
.gv-calendar-nav:hover { color: var(--gv-primary-dark); background: var(--gv-accent); }
.gv-calendar-weekdays,
.gv-calendar-grid {
        display: grid; grid-template-columns: repeat(7, 1fr); gap: .25rem;
}
.gv-calendar-weekdays { margin-bottom: .25rem; }
.gv-calendar-weekday { text-align: center; font-size: .75rem; font-weight: 600; color: var(--gv-muted); padding: .5rem 0; }
.gv-calendar-cell {
        aspect-ratio: 1 / 1; display: flex; align-items: center; justify-content: center;
        font-size: .9rem; color: var(--gv-text);
        border-radius: 9999px; position: relative;
}
.gv-calendar-cell.is-empty { visibility: hidden; }
.gv-calendar-cell.is-today { background: var(--gv-primary); color: #fff; font-weight: 700; }
.gv-calendar-cell.has-events { cursor: pointer; }
.gv-calendar-cell.has-events:hover { background: var(--gv-accent); }
.gv-calendar-cell.has-events .gv-calendar-marker {
        position: absolute; bottom: .25rem; width: 6px; height: 6px;
        background: var(--gv-secondary); border-radius: 50%;
}

/* ---------- Books grid ---------- */
.gv-books-grid {
        display: grid; gap: 2rem;
        grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}
.gv-book-card {
        background: var(--gv-card); border: 1px solid var(--gv-border);
        border-radius: 1rem; overflow: hidden; box-shadow: var(--gv-shadow-sm);
        display: flex; flex-direction: column;
        transition: box-shadow .25s, transform .25s; scroll-margin-top: 6rem;
}
.gv-book-card:hover { box-shadow: var(--gv-shadow-md); transform: translateY(-3px); }
.gv-book-card-cover {
        display: block; aspect-ratio: 3 / 4; overflow: hidden; background: var(--gv-muted-bg);
}
.gv-book-card-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s; }
.gv-book-card:hover .gv-book-card-cover img { transform: scale(1.05); }
.gv-book-card-placeholder { width: 100%; height: 100%; background: linear-gradient(135deg, var(--gv-accent), var(--gv-muted-bg)); }
.gv-book-card-body { padding: 1.5rem; display: flex; flex-direction: column; flex: 1; }
.gv-book-card-title { font-size: 1.4rem; margin-bottom: .5rem; }
.gv-book-card-title a { color: var(--gv-heading); }
.gv-book-card:hover .gv-book-card-title a { color: var(--gv-primary-dark); }
.gv-book-card-desc { color: var(--gv-muted); flex: 1; margin-bottom: 1.25rem; }

/* ---------- Single book ---------- */
.gv-single-book-grid {
        display: grid; gap: 3rem; align-items: start;
        grid-template-columns: 1fr;
}
@media (min-width: 768px) {
        .gv-single-book-grid { grid-template-columns: 1fr 1.5fr; }
}
.gv-cover-img { border-radius: 1rem; box-shadow: var(--gv-shadow-md); }

/* ---------- Events archive ---------- */
.gv-events-grid {
        display: grid; gap: 2.5rem; grid-template-columns: 1fr;
}
@media (min-width: 1024px) {
        .gv-events-grid { grid-template-columns: 2fr 1fr; align-items: start; }
}
.gv-events-list { display: flex; flex-direction: column; gap: 1.5rem; }
.gv-event-card {
        background: var(--gv-card); border: 1px solid var(--gv-border);
        border-radius: 1rem; padding: 1.5rem; position: relative; overflow: hidden;
        box-shadow: var(--gv-shadow-sm); transition: box-shadow .2s;
}
.gv-event-card:hover { box-shadow: var(--gv-shadow-md); }
.gv-event-accent {
        position: absolute; top: 0; left: 0; bottom: 0; width: 6px;
        background: rgba(64, 217, 241, 0.25); transition: background .2s;
}
.gv-event-card:hover .gv-event-accent { background: var(--gv-primary); }
.gv-event-body { display: grid; gap: 1.5rem; grid-template-columns: 1fr; padding-left: 1rem; }
@media (min-width: 768px) { .gv-event-body { grid-template-columns: 1fr 2fr; } }
.gv-event-when { display: flex; flex-direction: column; gap: .25rem; }
.gv-event-day { color: var(--gv-primary-dark); font-weight: 700; font-size: 1.15rem; text-transform: capitalize; }
.gv-event-month { color: var(--gv-heading); font-size: 1.7rem; font-weight: 800; text-transform: capitalize; line-height: 1; }
.gv-event-year { color: var(--gv-muted); font-size: .9rem; }
.gv-event-meta { display: flex; flex-direction: column; gap: .35rem; margin-top: .75rem; font-size: .85rem; color: var(--gv-muted); }
.gv-event-city { color: var(--gv-muted); }
.gv-event-content { border-top: 1px solid var(--gv-border); padding-top: 1rem; }
@media (min-width: 768px) { .gv-event-content { border-top: 0; border-left: 1px solid var(--gv-border); padding-top: 0; padding-left: 1.5rem; } }
.gv-event-title { font-size: 1.4rem; margin-bottom: .5rem; }
.gv-event-card:hover .gv-event-title { color: var(--gv-primary-dark); }

/* ---------- Buy page ---------- */
.gv-buy-inner { display: flex; flex-direction: column; align-items: center; }
.gv-buy-icon {
        width: 64px; height: 64px; border-radius: 9999px;
        background: rgba(64, 217, 241, 0.15); color: var(--gv-primary-dark);
        display: flex; align-items: center; justify-content: center;
        font-size: 1.75rem; margin-bottom: 1.25rem;
}
.gv-buy-subtitle { font-size: 1.15rem; color: var(--gv-muted); margin-bottom: 3rem; }
.gv-retailers {
        display: grid; gap: 1.5rem; width: 100%;
        max-width: 760px; grid-template-columns: 1fr;
}
@media (min-width: 640px) { .gv-retailers { grid-template-columns: 1fr 1fr; } }
.gv-retailer-card {
        background: var(--gv-card); border: 2px solid var(--gv-border);
        border-radius: 1rem; padding: 2rem; display: flex; flex-direction: column;
        align-items: center; gap: 1rem; box-shadow: var(--gv-shadow-sm);
        color: var(--gv-heading);
        transition: box-shadow .2s, transform .15s, border-color .2s;
}
.gv-retailer-card:hover {
        box-shadow: var(--gv-shadow-md); transform: translateY(-2px);
        border-color: var(--gv-primary); color: var(--gv-primary-dark);
}
.gv-retailer-name { font-size: 1.5rem; margin: 0; }

/* ---------- About ---------- */
.gv-about-grid {
        display: grid; gap: 3rem; align-items: center; grid-template-columns: 1fr;
}
@media (min-width: 768px) { .gv-about-grid { grid-template-columns: 1fr 1fr; gap: 4rem; } }
.gv-about-portrait { position: relative; }
.gv-about-portrait::before,
.gv-about-portrait::after {
        content: ""; position: absolute; inset: -1rem; border-radius: 1.25rem; z-index: -1;
}
.gv-about-portrait::before { background: rgba(64, 217, 241, 0.12); transform: rotate(3deg); }
.gv-about-portrait::after { background: rgba(234, 100, 133, 0.10); transform: rotate(-3deg); }
.gv-portrait-img { border-radius: 1rem; box-shadow: var(--gv-shadow-md); aspect-ratio: 3/4; object-fit: cover; }
.gv-about-bio p:first-of-type::first-letter {
        font-size: 3rem; font-weight: 700; color: var(--gv-primary-dark);
        float: left; line-height: 1; padding: .25rem .5rem 0 0;
}

/* ---------- 404 ---------- */
.gv-404-inner { text-align: center; max-width: 480px; margin: 0 auto; padding: 4rem 1rem; }
.gv-404-code { font-size: 6rem; font-weight: 800; color: rgba(64, 217, 241, 0.2); margin: 0 0 .5rem; line-height: 1; }
.gv-404-title { font-size: 1.75rem; margin-bottom: .75rem; }
.gv-404-message { color: var(--gv-muted); margin: 1rem auto 2rem; }

/* ---------- Footer ---------- */
.gv-site-footer {
        background: var(--gv-muted-bg);
        border-top: 1px solid var(--gv-border);
        margin-top: 4rem; padding-top: 3rem;
}
.gv-footer-grid {
        display: grid; gap: 2rem; grid-template-columns: 1fr;
        padding-bottom: 2rem;
}
@media (min-width: 768px) { .gv-footer-grid { grid-template-columns: 2fr 1fr 1fr; } }
.gv-footer-brand .gv-footer-logo img { height: 48px; opacity: .7; filter: grayscale(1); transition: filter .25s, opacity .25s; }
.gv-footer-brand .gv-footer-logo:hover img { filter: grayscale(0); opacity: 1; }
.gv-footer-tag { color: var(--gv-muted); font-size: .9rem; max-width: 320px; margin-top: .75rem; }
.gv-footer-col h3 { font-size: 1.05rem; margin-bottom: 1rem; color: var(--gv-heading); }
.gv-footer-col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; font-size: .9rem; }
.gv-footer-col a { color: var(--gv-muted); }
.gv-footer-col a:hover { color: var(--gv-primary-dark); }
.gv-footer-website { color: var(--gv-muted); font-size: .9rem; }
.gv-footer-website:hover { color: var(--gv-primary-dark); }
.gv-footer-meta {
        border-top: 1px solid var(--gv-border);
        padding: 1.5rem 0; font-size: .85rem; color: var(--gv-muted);
        text-align: center;
}
