@charset "UTF-8";

/* MAIN STYLESHEET - VERSION 1.0 */     

  @font-face {
            font-family: 'CustomBone';
            src: url('/fonts/cb.woff2') format('woff2');
            font-weight: normal;
            font-style: normal;
            font-display: swap;
        }

        :root {
            --deep-black: #0c0c0c;
            --antique-ivory: #E2D6B5;
            --blood-red: #ff3333;
            --harbour-green: #2E3B23;
            --panel-max: 1000px;
            --title-size: clamp(3.5rem, 15vw, 11rem);
            --header-size: clamp(3rem, 12vw, 8rem);
            --body-copy: clamp(0.98rem, 2vw, 1.35rem);
            --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        html {
            width: 100%;
            min-height: 100%;
            overflow-x: hidden;
            overflow-x: clip;
            scroll-behavior: smooth;
        }

        body {
            position: relative;
            width: 100%;
            max-width: 100%;
            min-height: 100%;
            background:
                linear-gradient(rgba(12, 12, 12, 0.85), rgba(12, 12, 12, 0.85)),
                url('/images/scrimshaw.webp');
            background-attachment: fixed, fixed;
            background-color: var(--deep-black);
            background-repeat: no-repeat, repeat;
            background-size: auto, 650px auto;
            background-position: center, top left;
            color: var(--antique-ivory);
            font-family: 'Courier New', Courier, monospace;
            text-rendering: optimizeLegibility;
            touch-action: pan-y;
            overscroll-behavior-x: none;
            overflow-x: hidden;
            overflow-x: clip;
        }

        /* Keep the panel snapping at narrow widths too.
           Touch devices get a gentler snap so visitors can still read tall panels. */
        html,
        body {
            scroll-snap-type: y mandatory;
        }

        @media (max-width: 768px) {
            html,
            body {
                scroll-snap-type: y proximity;
            }

            body {
                background-attachment: scroll, scroll;
                background-size: auto, 420px auto;
            }
        }

        @media (max-width: 768px) and (hover: hover) and (pointer: fine) {
            html,
            body {
                scroll-snap-type: y mandatory;
            }
        }

        @media (prefers-reduced-motion: reduce) {
            *,
            *::before,
            *::after {
                scroll-behavior: auto !important;
                animation-duration: 0.001ms !important;
                animation-iteration-count: 1 !important;
                transition-duration: 0.001ms !important;
            }
        }

        .visually-hidden {
            position: absolute;
            width: 1px;
            height: 1px;
            padding: 0;
            margin: -1px;
            overflow: hidden;
            clip: rect(0, 0, 0, 0);
            white-space: nowrap;
            border: 0;
        }

        /* --- FLOATING STICKY BOOKING CTA --- */

        .sticky-booking-cta {
            position: fixed;
            top: clamp(0.75rem, 2vw, 1.25rem);
            left: 50%;
            z-index: 1000;
            display: flex;
            justify-content: center;
            align-items: center;
            width: auto;
            opacity: 0;
            transform: translate3d(-50%, -150%, 0);
            transition:
                opacity 0.5s var(--ease-out),
                transform 0.5s var(--ease-out);
            pointer-events: none;
        }

        .sticky-booking-cta.visible {
            opacity: 1;
            transform: translate3d(-50%, 0, 0);
            pointer-events: auto;
        }

        .bbb-fareharbor-btn:focus-visible,
        a:focus-visible {
            outline: 2px solid var(--blood-red);
            outline-offset: 5px;
        }

        /* --- HERO TITLE --- */

        .hero-title {
            position: fixed;
            inset: 0;
            z-index: 100;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            width: 100%;
            height: 100svh;
            padding: 2rem;
            pointer-events: none;
            text-align: center;
            text-transform: uppercase;
            font-family: 'CustomBone', Georgia, serif;
            font-size: var(--title-size);
        }

        .hero-title > * {
            transition: transform 1s var(--ease-out), opacity 0.7s ease;
            will-change: transform, opacity;
        }

        .mask-text {
            display: inline-block;
            background-repeat: repeat;
            background-position: center;
            background-size: cover;
            -webkit-background-clip: text;
            background-clip: text;
            -webkit-text-fill-color: transparent;
            color: transparent;
            line-height: 1.15;
            padding-top: 0.12em;
            padding-bottom: 0.04em;
        }

        .line-1 {
            background-image: url('/images/rust.png');
            letter-spacing: 0.04em;
        }

        .line-2 {
            background-image: url('/images/bone.png');
            letter-spacing: 0.02em;
        }

        .line-3 {
            background-image: url('/images/brine.png');
            letter-spacing: 0.12em;
            margin-top: -0.24em;
        }

        .title-outline-wrap {
            display: inline-grid;
            position: relative;
            line-height: 1.15;
        }

        .title-outline-wrap .title-outline,
        .title-outline-wrap .mask-text {
            grid-area: 1 / 1;
        }

        .title-outline-wrap .mask-text {
            position: relative;
            z-index: 2;
        }

        .title-outline {
            position: relative;
            z-index: 1;
            font-family: 'CustomBone', Georgia, serif;
            letter-spacing: 0.04em;
            color: transparent;
            -webkit-text-fill-color: transparent;
            -webkit-text-stroke: 1.5px var(--antique-ivory);
            line-height: 1.15;
            padding-top: 0.12em;
            padding-bottom: 0.04em;
            pointer-events: none;
        }

        .blood-wrap {
            margin-bottom: -0.24em;
        }

        .line-2-container {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 0.08em;
            line-height: 1.15;
        }

        .rope-amp {
            height: 0.82em;
            transform: translate(-0.08em, -0.14em);
            filter: sepia(0.6) brightness(1.15) contrast(1.05);
        }

        .hero-subtitle {
            margin-top: 1.25rem;
            font-family: 'Courier New', Courier, monospace;
           font-size: clamp(0.78rem, 1.8vw, 1.35rem);
            font-weight: bold;
            color: var(--antique-ivory);
            letter-spacing: 0.45em;
            line-height: 1.35;
            text-transform: uppercase;
            opacity: 0.95;
        }

        /* --- PANELS --- */

        main {
            position: relative;
            z-index: 1;
        }

        section {
            position: relative;
            min-height: 100svh;
            min-height: 100dvh;
            width: 100%;
            padding: 8vw;
            display: flex;
            justify-content: center;
            align-items: center;
            scroll-snap-align: start;
            scroll-snap-stop: always;
            overflow: hidden;
        }

        .panel-content {
            max-width: var(--panel-max);
            text-align: center;
            opacity: 0;
            transform: translateY(30px);
            transition: opacity 0.8s ease-out, transform 0.8s ease-out;
        }

        section.active .panel-content {
            opacity: 1;
            transform: translateY(0);
        }

        .panel-content p {
            margin-bottom: 1.5rem;
            font-size: var(--body-copy);
            line-height: 1.65;
            letter-spacing: 0.12em;
            text-transform: uppercase;
        }

        .lede-red {
            color: var(--blood-red);
            margin-bottom: 2rem;
        }

        .pillar-header {
            display: block;
            margin-bottom: 1rem;
            font-family: 'CustomBone', Georgia, serif;
            font-size: var(--header-size);
            line-height: 1.15;
        }

        .details-block {
            display: block;
            margin-top: 2.5rem;
            padding-top: 2rem;
            color: var(--blood-red);
            letter-spacing: 0.2em;
            font-weight: bold;
            border-top: 1px solid rgba(226, 214, 181, 0.15);
        }

        .meeting-point {
            display: block;
            margin-top: 0.75rem;
            color: #ffffff;
            font-size: 0.85em;
            opacity: 0.95;
        }

        a {
            color: var(--antique-ivory);
            text-decoration: underline;
            text-underline-offset: 6px;
            text-decoration-thickness: 1px;
        }

        a:hover {
            color: var(--blood-red);
        }

        .scroll-hint {
            position: absolute;
            bottom: 4vh;
            left: 50%;
            transform: translateX(-50%);
            font-size: 0.7rem;
            letter-spacing: 0.4em;
            opacity: 0.45;
            text-transform: uppercase;
        }

        .phase-label {
            position: absolute;
            right: 5vw;
            bottom: 5vh;
            color: var(--harbour-green);
            font-size: 0.8rem;
            letter-spacing: 0.5em;
            text-transform: uppercase;
            writing-mode: horizontal-tb;
        }

        /* --- BOOKING SECTION --- */

        #booking {
            min-height: 100svh;
            min-height: 100dvh;
            padding: clamp(5rem, 8vw, 8rem) clamp(1.25rem, 5vw, 5rem);
            background: transparent;
            isolation: auto;
        }

        #booking::before,
        #booking::after {
            content: none;
            display: none;
        }

        .booking-mockup {
            width: min(1080px, 100%);
            max-width: 1080px;
            display: grid;
            grid-template-columns: minmax(0, 1fr) minmax(250px, 0.48fr);
            grid-template-areas: "copy action";
            gap: clamp(2.25rem, 6vw, 5.5rem);
            align-items: center;
            text-align: left;
        }

        .booking-copy-panel {
            grid-area: copy;
        }

        .booking-action-panel {
            grid-area: action;
        }

        .booking-copy-panel,
        .booking-action-panel {
            border: 0;
            background: transparent;
            box-shadow: none;
            padding: 0;
        }

        .booking-copy-text {
            max-width: 690px;
        }

        .booking-kicker {
            display: inline-block;
            margin-bottom: 1.25rem;
            color: var(--blood-red);
            font-family: 'Courier New', Courier, monospace;
            font-size: 0.78rem;
            font-weight: bold;
            letter-spacing: 0.34em;
            line-height: 1.5;
            text-transform: uppercase;
        }

        .booking-copy-text h2 {
            margin-bottom: 1.35rem;
            font-family: 'CustomBone', Georgia, serif;
            font-size: clamp(3.5rem, 8vw, 7.5rem);
            line-height: 0.95;
            letter-spacing: 0.04em;
            text-transform: uppercase;
            color: var(--antique-ivory);
            text-shadow: 0 0 22px rgba(255, 51, 51, 0.14);
        }

        .booking-copy-text p {
            max-width: 39rem;
            margin: 0;
            color: rgba(226, 214, 181, 0.9);
            font-family: 'Courier New', Courier, monospace;
            font-size: clamp(1rem, 1.65vw, 1.2rem);
            line-height: 1.7;
            letter-spacing: 0.075em;
            text-transform: uppercase;
            font-weight: normal;
            text-align: left;
        }

        .booking-copy-text p + p {
            margin-top: 1rem;
        }

        .booking-challenge {
            margin-top: 1.75rem !important;
            color: var(--blood-red) !important;
            font-weight: bold !important;
            letter-spacing: 0.18em !important;
        }

        .booking-action-panel {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 1.25rem;
        }

        .booking-big-details {
            padding: 0;
            border: 0;
            color: var(--antique-ivory);
            font-family: 'Courier New', Courier, monospace;
            font-size: clamp(0.95rem, 1.35vw, 1.2rem);
            line-height: 1.55;
            font-weight: bold;
            letter-spacing: 0.16em;
            text-transform: uppercase;
            text-align: center;
            text-shadow: 0 0 18px rgba(0, 0, 0, 0.7);
        }

        .booking-big-details div {
            margin-bottom: 0.3rem;
        }

        .booking-big-details .booking-location {
            margin-top: 0.75rem;
            color: var(--blood-red);
            font-size: 0.9em;
            letter-spacing: 0.2em;
        }

        .bbb-fareharbor-btn {
            position: relative;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: auto;
            min-width: 13.5rem;
            margin-top: 0.55rem;
            padding: 0.82rem 1.45rem 0.72rem;
            border: 1px solid rgba(226, 214, 181, 0.58);
            appearance: none;
            -webkit-appearance: none;
            background:
                linear-gradient(rgba(12, 12, 12, 0.72), rgba(12, 12, 12, 0.72)),
                url('/images/scrimshaw.webp');
            background-size: 260px auto;
            background-position: center;
            color: var(--antique-ivory);
            font-family: 'CustomBone', Georgia, serif;
            font-size: clamp(1.9rem, 3.4vw, 2.75rem);
            line-height: normal;
            letter-spacing: 0.12em;
            text-align: center;
            text-decoration: none;
            text-transform: uppercase;
            cursor: pointer;
            box-shadow:
                0 0.8rem 2rem rgba(0, 0, 0, 0.35),
                inset 0 0 0 1px rgba(255, 51, 51, 0.12);
            transition:
                transform 0.2s ease,
                border-color 0.2s ease,
                box-shadow 0.2s ease,
                filter 0.2s ease;
        }

        .bbb-fareharbor-btn span {
            display: inline-block;
            line-height: 1.2;
            padding-top: 0.12em;
            padding-bottom: 0.08em;
            background-image: url('/images/bone.png');
            background-size: cover;
            background-position: center;
            -webkit-background-clip: text;
            background-clip: text;
            color: transparent;
            -webkit-text-fill-color: transparent;
            text-shadow: none;
        }

        .bbb-fareharbor-btn::after {
            content: "";
            position: absolute;
            right: 0.55rem;
            bottom: 0.45rem;
            width: 1.6rem;
            height: 1px;
            background: var(--blood-red);
            opacity: 0.8;
            transform: rotate(-11deg);
        }

        .bbb-fareharbor-btn:hover,
        .bbb-fareharbor-btn:focus-visible {
            transform: translateY(-2px);
            border-color: rgba(255, 51, 51, 0.85);
            filter: brightness(1.08);
            box-shadow:
                0 1.1rem 2.6rem rgba(0, 0, 0, 0.5),
                0 0 1.4rem rgba(255, 51, 51, 0.18),
                inset 0 0 0 1px rgba(255, 51, 51, 0.25);
            text-decoration: none;
        }

        .bbb-sticky-btn {
            min-width: 10.5rem;
            margin-top: 0;
            padding: 0.58rem 1.05rem 0.5rem;
            font-size: clamp(1.35rem, 2.2vw, 1.9rem);
            box-shadow:
                0 0.9rem 2.2rem rgba(0, 0, 0, 0.5),
                0 0 1rem rgba(255, 51, 51, 0.12),
                inset 0 0 0 1px rgba(255, 51, 51, 0.12);
        }

        .bbb-sticky-btn::after {
            right: 0.42rem;
            bottom: 0.34rem;
            width: 1.25rem;
        }

        .booking-secondary-links {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 0.65rem;
            max-width: 24rem;
            margin-top: 0.15rem;
        }

        .bbb-secondary-btn {
            min-width: 7.6rem;
            margin-top: 0;
            padding: 0.42rem 0.78rem 0.36rem;
            font-size: clamp(0.95rem, 1.55vw, 1.25rem);
            letter-spacing: 0.1em;
            box-shadow:
                0 0.55rem 1.35rem rgba(0, 0, 0, 0.38),
                0 0 0.75rem rgba(255, 51, 51, 0.08),
                inset 0 0 0 1px rgba(255, 51, 51, 0.1);
        }

        .bbb-secondary-btn::after {
            right: 0.32rem;
            bottom: 0.26rem;
            width: 0.95rem;
        }

        .booking-payment-note {
            display: block;
            max-width: 17rem;
            margin-top: 0.35rem;
            color: rgba(226, 214, 181, 0.72);
            font-size: 0.66rem;
            line-height: 1.5;
            letter-spacing: 0.16em;
            text-align: center;
            text-transform: uppercase;
        }

        /* --- STACK BOOKING DETAILS FIRST ON NARROWER SCREENS --- */

        @media (max-width: 820px) {
            #booking {
                min-height: auto;
                overflow: visible;
                align-items: flex-start;
                padding: 6.5rem 1.15rem 5rem;
            }

            .booking-mockup {
                grid-template-columns: 1fr;
                grid-template-areas:
                    "action"
                    "copy";
                gap: 2.25rem;
                width: 100%;
                align-items: start;
                text-align: center;
            }

            .booking-action-panel {
                width: 100%;
                justify-self: center;
                gap: 1rem;
            }

            .booking-copy-text {
                max-width: 100%;
            }

            .booking-copy-text p {
                max-width: none;
                text-align: center;
            }
        }

        /* --- MOBILE --- */

        @media (max-width: 700px) {
            :root {
                --title-size: clamp(3.2rem, 18vw, 6rem);
                --header-size: clamp(3rem, 17vw, 5.8rem);
            }

            .hero-title {
                padding: 1.25rem;
            }

            .hero-subtitle {
                letter-spacing: 0.28em;
            }

            section {
                min-height: 100svh;
                min-height: 100dvh;
                padding: 7rem 1.35rem 5rem;
            }

            .panel-content p {
                letter-spacing: 0.08em;
            }

            .details-block {
                letter-spacing: 0.13em;
            }

            .phase-label {
                right: 1rem;
                bottom: 1.25rem;
                font-size: 0.68rem;
                letter-spacing: 0.28em;
            }

            .booking-kicker {
                font-size: 0.7rem;
                letter-spacing: 0.22em;
            }

            .booking-copy-text h2 {
                font-size: clamp(3.2rem, 18vw, 5.8rem);
            }

            .booking-copy-text p {
                font-size: 0.95rem;
                line-height: 1.65;
                letter-spacing: 0.065em;
            }

            .booking-big-details {
                font-size: 0.9rem;
                letter-spacing: 0.12em;
            }

            .bbb-fareharbor-btn {
                width: min(100%, 18rem);
                font-size: clamp(2rem, 13vw, 3.1rem);
                padding: 0.85rem 1.35rem 0.75rem;
            }

            .bbb-sticky-btn {
                width: auto;
                min-width: 9.75rem;
                font-size: clamp(1.35rem, 9vw, 2rem);
                padding: 0.55rem 0.95rem 0.48rem;
            }

            .booking-secondary-links {
                max-width: 19rem;
                gap: 0.5rem;
            }

            .bbb-secondary-btn {
                min-width: 8.5rem;
                font-size: clamp(1rem, 5.5vw, 1.35rem);
                padding: 0.45rem 0.75rem 0.38rem;
            }

            .booking-payment-note {
                max-width: 19rem;
            }
        }

/* --- FAQ PAGE SPECIFIC --- */

.faq-page {
    background-attachment: scroll; /* Easier on mobile browsers */
}

.faq-nav {
    padding: 2rem;
    max-width: 800px;
    margin: 0 auto;
}

.back-link {
    font-family: 'Courier New', Courier, monospace;
    text-transform: uppercase;
    text-decoration: none;
    font-weight: bold;
    font-size: 0.9rem;
    color: var(--blood-red);
}

.faq-list {
    max-width: 800px;
    margin: 0 auto;
    padding: 0 2rem 5rem;
    font-family: 'Courier New', Courier, monospace; /* Force Courier throughout */
}

.faq-item {
    margin-bottom: clamp(2rem, 5vw, 3.5rem);
    border-bottom: 1px solid rgba(226, 214, 181, 0.1);
    padding-bottom: 2rem;
}

.faq-item h3 {
    font-size: clamp(1.1rem, 2.5vw, 1.4rem);
    color: var(--blood-red);
    text-transform: uppercase;
    margin-bottom: 1rem;
    line-height: 1.2;
    text-wrap: pretty;
}

.faq-item p {
    font-size: clamp(0.95rem, 1.2vw, 1.1rem);
    line-height: 1.6;
    color: var(--antique-ivory);
    margin-bottom: 1rem;
    text-wrap: pretty; /* Prevents awkward orphans */
    text-transform: none; /* Keeps readability high for long text */
}

.faq-item strong {
    color: #ffffff;
    letter-spacing: 0.05em;
}

.faq-footer {
    margin-top: 3rem;
    text-align: center;
}

@media (max-width: 600px) {
    .faq-nav {
        padding: 1.5rem;
    }
    .faq-list {
        padding: 0 1.5rem 4rem;
    }
}

/* --- FORCED VERTICAL CARD STACK --- */

.contact-cards-vertical {
    display: flex;
    flex-direction: column; /* Force vertical */
    align-items: center;    /* Center the cards */
    gap: 1.5rem;
    margin-bottom: 4rem;
    width: 100%;
}

.contact-card {
    display: block;
    width: 100%;            /* Make card take full container width */
    max-width: 500px;       /* Keep cards from getting too wide on desktop */
    background: rgba(226, 214, 181, 0.03);
    border: 1px solid rgba(226, 214, 181, 0.15);
    padding: 2.5rem 2rem;
    text-align: center;
    text-decoration: none !important; /* No underline on the whole card */
    transition: border-color 0.3s ease, transform 0.2s ease;
}

.contact-card:hover {
    border-color: var(--blood-red); /* #ff3333 */
    transform: translateY(-3px);
}

.contact-card h3 {
    font-family: 'Courier New', Courier, monospace !important;
    font-size: 0.9rem;
    color: var(--blood-red);
    text-transform: uppercase;
    letter-spacing: 0.3em;
    margin-bottom: 1rem;
}

.contact-card p {
    font-family: 'Courier New', Courier, monospace !important;
    font-size: clamp(1rem, 2vw, 1.2rem);
    color: var(--antique-ivory); /* #E2D6B5 */
    margin: 0 !important;
    word-break: break-all; /* Prevents long emails from breaking mobile layout */
}

/* Ensure Courier New is used for all text on this page */
.contact-page * {
    font-family: 'Courier New', Courier, monospace !important;
}

/* --- DISABLE SCROLL SNAPPING FOR SUB-PAGES --- */

/* Target the specific body classes we added to questions.html and contact.html */
.faq-page, 
.faq-page html,
.contact-page,
.contact-page html {
    scroll-snap-type: none !important;
    overflow-y: auto !important;
    height: auto !important;
}

/* Ensure sections on sub-pages don't try to snap either */
.faq-page section,
.contact-page section {
    scroll-snap-align: none !important;
    scroll-snap-stop: normal !important;
    min-height: auto !important; /* Allows content to dictate height */
}

/* --- GROUPS PAGE STYLES --- */

/* Disable scroll snapping for the groups page specifically */
.groups-page, 
.groups-page html {
    scroll-snap-type: none !important;
    overflow-y: auto !important;
    height: auto !important;
}

.groups-page section {
    scroll-snap-align: none !important;
    scroll-snap-stop: normal !important;
    min-height: auto !important;
}

.groups-list {
    max-width: 800px;
    margin: 0 auto;
    padding: 0 2rem 5rem;
    font-family: 'Courier New', Courier, monospace !important;
}

.groups-header {
    margin-bottom: 3rem;
    text-align: center;
}

.groups-header p {
    font-size: clamp(1rem, 1.5vw, 1.2rem);
    line-height: 1.6;
    text-wrap: pretty;
    color: var(--antique-ivory);
}

.groups-cards-vertical {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    margin-bottom: 4rem;
    width: 100%;
}

.group-card {
    background: rgba(226, 214, 181, 0.03);
    border: 1px solid rgba(226, 214, 181, 0.15);
    padding: 2.5rem 2rem;
    text-align: left;
    transition: border-color 0.3s ease;
}

.group-card:hover {
    border-color: var(--blood-red);
}

.group-card h3 {
    font-size: clamp(1.1rem, 2.5vw, 1.4rem);
    color: var(--blood-red);
    text-transform: uppercase;
    margin-bottom: 1rem;
    letter-spacing: 0.1em;
}

.group-card p {
    font-size: clamp(0.95rem, 1.2vw, 1.1rem);
    line-height: 1.6;
    color: var(--antique-ivory);
    text-wrap: pretty;
    margin: 0 !important;
}

.groups-footer {
    margin-top: 4rem;
    text-align: center;
}

/* Ensure Courier New is used for all text on this page */
.groups-page * {
    font-family: 'Courier New', Courier, monospace !important;
}

@media (max-width: 600px) {
    .groups-list {
        padding: 0 1.5rem 4rem;
    }
}
