@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=Playfair+Display:ital,wght@0,500;1,500;1,600&display=swap');

:root { --font-sans:'DM Sans'; --font-display:'Playfair Display'; --ink:#092b4c; --deep:#041f3b; --teal:#086ea8; --mint:#d8effb; --foam:#f2f8fc; --sand:#8ed8f8; --coral:#147fca; --paper:#fbfdff; --line:rgba(9,43,76,.14); --aqua:#36d9e6; --cyan:#61c8ff; --gold:#ffd36a; --sunset:#ff7d70; --blue-glow:0 0 26px rgba(54,217,230,.26),0 14px 38px rgba(7,85,145,.24); }
body { font-family:'DM Sans',Arial,sans-serif; }
.site-header { box-shadow:0 8px 35px rgba(3,45,78,.08); }
.dark-header .site-header { box-shadow:none; }
.site-header nav a { transition:color .2s ease,text-shadow .2s ease; }.site-header nav a:hover { color:var(--aqua); text-shadow:0 0 18px rgba(54,217,230,.7); }
.eyebrow { color:#0876ba; }.eyebrow.light,.hero-kicker { color:#a8eaff; text-shadow:0 0 14px rgba(54,217,230,.34); }
.hero h1,.detail-title h1,.banigan-hero h1 { text-shadow:0 8px 34px rgba(1,21,42,.36); }
.hero-kicker i,.admin-status i { background:var(--aqua); box-shadow:0 0 0 5px rgba(54,217,230,.15),0 0 22px rgba(54,217,230,.78); }
.section-heading h2 em,.whale-copy h2 em { color:#079fc8; text-shadow:0 0 24px rgba(54,217,230,.18); }
.destination-card { position:relative; display:block; width:100%; overflow:hidden; contain:layout paint; isolation:isolate; cursor:pointer; box-shadow:0 14px 36px rgba(3,50,83,.13); }.destination-card>img { z-index:0; }.destination-card>.card-shade { z-index:1; }.destination-card>.card-number,.destination-card>.card-copy { z-index:2; }.destination-card:hover { box-shadow:0 0 0 2px rgba(54,217,230,.72),0 20px 52px rgba(5,91,148,.3); }.destination-card:hover .card-copy h3 { text-shadow:0 0 20px rgba(54,217,230,.4); }.destination-card:focus-visible { outline:4px solid var(--aqua); outline-offset:4px; }.destination-card:hover .card-link { color:#bff7ff; transform:translateX(4px); }.card-link { display:inline-block; font-size:9px; font-weight:800; text-transform:uppercase; letter-spacing:1.5px; transition:.2s ease; }
.card-number,.card-copy small { color:#80e8f0; }
.new-badge { background:linear-gradient(135deg,#ff7d70,#ff9a62); box-shadow:0 0 25px rgba(255,125,112,.4); }
.site-footer h2,.site-footer>div strong { color:var(--gold); }.site-footer a:hover { color:var(--aqua); }
.back-to-top { position:fixed; right:clamp(18px,2.6vw,42px); bottom:clamp(18px,3vw,42px); z-index:80; width:52px; height:52px; border:1px solid rgba(152,235,255,.58); border-radius:50%; display:grid; place-items:center; background:linear-gradient(145deg,rgba(8,126,194,.96),rgba(3,54,101,.98)); color:#fff; box-shadow:0 0 0 5px rgba(54,217,230,.09),0 12px 34px rgba(3,43,82,.32),0 0 28px rgba(54,217,230,.28); cursor:pointer; opacity:0; visibility:hidden; pointer-events:none; transform:translateY(16px) scale(.88); transition:opacity .22s ease,visibility .22s ease,transform .22s ease,box-shadow .22s ease; }
.back-to-top span { font-size:25px; line-height:1; transform:translateY(-1px); }
.back-to-top.is-visible { opacity:1; visibility:visible; pointer-events:auto; transform:translateY(0) scale(1); }
.back-to-top:hover { box-shadow:0 0 0 6px rgba(54,217,230,.13),0 16px 40px rgba(3,43,82,.38),0 0 36px rgba(54,217,230,.52); transform:translateY(-3px) scale(1.04); }
.back-to-top:focus-visible { outline:3px solid var(--gold); outline-offset:4px; }
.map-frame>span { top:auto; bottom:24px; left:24px; max-width:280px; padding:13px 16px; border-radius:3px; background:rgba(251,253,255,.94); backdrop-filter:blur(10px); box-shadow:0 10px 30px rgba(2,31,59,.2); }
.brand-logo { width:52px; height:52px; flex:0 0 auto; object-fit:contain; background:transparent; padding:0; border:0; border-radius:0; box-shadow:none; }
.hero-shade { background:linear-gradient(90deg,rgba(2,29,58,.88) 0%,rgba(4,60,101,.48) 48%,rgba(2,38,72,.08) 80%),linear-gradient(0deg,rgba(2,25,50,.78),transparent 48%); }
.hero h1 { max-width:900px; }
.hero-mobile-poster { display:none; }
.hero-facts { display:none!important; }
.button-primary { background:linear-gradient(135deg,#22b8e7,#0872c2 62%,#07569a); box-shadow:var(--blue-glow); }
.button-primary:hover { box-shadow:0 0 34px rgba(54,217,230,.5),0 18px 44px rgba(7,86,150,.32); }
.button-sand { background:linear-gradient(135deg,#b8efff,#61c8ff); box-shadow:0 0 24px rgba(97,200,255,.25); }
.button-ghost:hover { border-color:var(--aqua); color:#c8f8ff; box-shadow:inset 0 0 18px rgba(54,217,230,.09),0 0 22px rgba(54,217,230,.18); }
.whale-section,.admin-sidebar,.booking-intro { background:linear-gradient(145deg,#041f3b,#063e6d); }
.whale-gallery-inset { position:absolute; z-index:2; right:28px; bottom:28px; width:min(240px,34%); margin:0; padding:7px; background:rgba(251,253,255,.94); box-shadow:0 18px 50px rgba(1,22,42,.38),0 0 0 1px rgba(97,200,255,.4); transform:rotate(1.5deg); }
.whale-gallery-inset img { width:100%; height:155px; object-fit:cover; filter:none; }
.whale-gallery-inset figcaption { padding:8px 5px 4px; color:#075b91; font-size:8px; font-weight:800; text-transform:uppercase; letter-spacing:1px; }
.whale-actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:26px; }.whale-actions .button { margin:0; }
.map-section { background:linear-gradient(145deg,#063e6d,#075888); }
.site-footer { background:#031a32; }
.festival-section { background:#dceffc; }
.festival-pattern { border-color:rgba(18,111,177,.12); }
.festival-copy h2 em,.festival-date strong { color:#096cae; }
.festival-copy>p { color:#365b75; }
.festival-section:has(.festival-feature-image) { grid-template-columns:1fr .72fr; }.festival-feature-image { position:relative; z-index:2; width:100%; height:310px; object-fit:cover; grid-column:1/-1; box-shadow:0 18px 55px rgba(4,57,94,.15); }.festival-gallery { background:#f4f9fd; }
.festival-page-button { margin-top:36px; color:white; background:linear-gradient(135deg,#0a609b,#073e6a); box-shadow:0 12px 30px rgba(4,55,91,.2); }
.festival-page-button:hover { box-shadow:0 0 28px rgba(54,217,230,.32),0 16px 40px rgba(4,55,91,.27); }
.banigan-hero { min-height:820px; padding:180px clamp(24px,8vw,130px) 100px; position:relative; display:flex; align-items:center; overflow:hidden; color:white; background:linear-gradient(135deg,#052b4e,#0877b5); }.banigan-hero>img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.38; }.banigan-hero:after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(2,28,53,.94),rgba(3,57,94,.58) 62%,rgba(4,60,96,.22)); }.banigan-hero-pattern { position:absolute; z-index:1; width:620px; height:620px; right:-110px; top:90px; border:95px double rgba(142,216,248,.17); transform:rotate(45deg); }.banigan-hero-copy { position:relative; z-index:2; max-width:860px; }.banigan-hero h1 { margin:22px 0; font-size:clamp(76px,10vw,152px); line-height:.78; letter-spacing:-8px; }.banigan-hero p { max-width:720px; font-size:17px; line-height:1.8; color:rgba(255,255,255,.78); }.banigan-actions { display:flex; gap:12px; margin-top:34px; }
.banigan-story { display:grid; grid-template-columns:1fr 1fr; gap:8vw; background:#eef8fe; }.banigan-story h2 { margin:18px 0; font-size:clamp(52px,6vw,88px); line-height:.92; letter-spacing:-4px; }.banigan-story>div:last-child { padding-top:38px; }.banigan-story strong { display:block; margin-bottom:22px; color:#0877b5; font-size:11px; text-transform:uppercase; letter-spacing:1.5px; }.banigan-story p { color:#456a83; line-height:1.9; }
.banigan-gallery { background:white; }.festival-page-grid .gallery-item:nth-child(1) { grid-column:span 2; aspect-ratio:2/1; }.banigan-cta { padding:130px 25px; text-align:center; color:white; background:linear-gradient(145deg,#052b4e,#0876b4); }.banigan-cta h2 { margin:20px 0 34px; font-size:clamp(52px,7vw,100px); line-height:.92; letter-spacing:-5px; }
.festival-posts { background:#eaf6fd; }.article-link { display:inline-flex; margin-top:20px; padding:14px 18px; color:#076fae; border:1px solid #9bc8e2; font-size:10px; font-weight:800; text-transform:uppercase; }.article-video { width:min(1000px,100%); margin:60px auto; }.article-video iframe,.article-video video { width:100%; aspect-ratio:16/9; border:0; background:#031a32; }.article-gallery { width:min(1200px,100%); margin:80px auto; }.article-book { text-align:center; margin-top:70px; }
.directory-hero { padding:170px clamp(24px,8vw,130px) 100px; color:white; background:linear-gradient(135deg,#052b4e,#0877b5); }.directory-hero h1 { max-width:950px; margin:20px 0; font-size:clamp(66px,9vw,128px); line-height:.84; letter-spacing:-7px; }.directory-hero p { max-width:650px; color:rgba(255,255,255,.76); line-height:1.8; }.directory-hero>div { display:flex; gap:10px; margin-top:30px; }.directory-listing { background-color:#f2f8fc; background-image:linear-gradient(90deg,rgba(242,248,252,.99) 0%,rgba(242,248,252,.95) 42%,rgba(229,244,252,.72) 72%,rgba(219,239,250,.5)),var(--directory-bg); background-size:cover; background-position:center right; background-repeat:no-repeat; }.business-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-top:52px; }.business-card { overflow:hidden; background:rgba(255,255,255,.96); backdrop-filter:blur(8px); border:1px solid #dce8ef; box-shadow:0 15px 45px rgba(3,53,88,.12); }.business-card>img { height:250px; object-fit:cover; }.business-card>div { padding:28px; }.business-card small { color:#0877b5; font-size:9px; font-weight:800; text-transform:uppercase; letter-spacing:1.2px; }.business-card h2 { margin:10px 0; font:500 34px/1.02 var(--font-display); }.business-card address { color:#60798c; font-size:10px; font-style:normal; }.business-card p { color:#526f84; font-size:12px; line-height:1.7; }.business-contacts { display:flex; flex-wrap:wrap; gap:8px; margin-top:20px; }.business-contacts a { padding:8px 10px; color:#076da8; border:1px solid #b5d3e5; font-size:8px; font-weight:800; text-transform:uppercase; }
.directory-listing { padding-top:38px; padding-bottom:72px; }
.directory-listing .section-heading .eyebrow { font-size:8px; letter-spacing:2.2px; }
.directory-listing .section-heading h2 { margin-top:10px; font-size:clamp(36px,4.2vw,58px); line-height:1; letter-spacing:-2.5px; }
.directory-listing .business-grid { margin-top:26px; }
.directory-listing .business-card h2 { font-size:28px; }
.visitor-services { position:relative; display:grid; grid-template-columns:.72fr 1.28fr; gap:6vw; overflow:hidden; color:white; background:radial-gradient(circle at 12% 18%,rgba(54,217,230,.13),transparent 24%),linear-gradient(135deg,#031b35 0%,#052f55 58%,#064b76 100%); }
.visitor-services:before { content:""; position:absolute; width:430px; height:430px; left:-235px; bottom:-260px; border:1px solid rgba(97,200,255,.16); border-radius:50%; box-shadow:0 0 0 70px rgba(97,200,255,.035),0 0 0 140px rgba(97,200,255,.025); }
.visitor-services-copy { position:relative; z-index:1; align-self:center; }.visitor-services h2 { margin:18px 0; font-size:clamp(52px,6vw,86px); line-height:.92; letter-spacing:-4px; }.visitor-services-copy>p { max-width:520px; color:rgba(255,255,255,.68); line-height:1.8; }.service-note { margin-top:28px; display:flex; align-items:center; gap:11px; color:#9bdffb; font-size:9px; font-weight:800; letter-spacing:1.2px; text-transform:uppercase; }.service-note i { width:8px; height:8px; border-radius:50%; background:var(--aqua); box-shadow:0 0 0 5px rgba(54,217,230,.12),0 0 18px rgba(54,217,230,.7); }
.service-links { position:relative; z-index:1; display:grid; grid-template-columns:1fr 1fr; gap:18px; }.service-links>a { position:relative; min-height:410px; overflow:hidden; color:white; border:1px solid rgba(255,255,255,.16); background:#075b8f; box-shadow:0 22px 55px rgba(0,16,34,.28); isolation:isolate; transition:transform .35s ease,border-color .35s ease,box-shadow .35s ease; }.service-links>a>img,.service-shade { position:absolute; inset:0; width:100%; height:100%; }.service-links>a>img { object-fit:cover; transition:transform .65s cubic-bezier(.2,.7,.2,1); }.service-shade { z-index:1; background:linear-gradient(180deg,rgba(2,26,49,.05) 18%,rgba(2,25,47,.4) 52%,rgba(2,21,42,.95) 100%),linear-gradient(120deg,rgba(1,27,51,.36),transparent 58%); }
.service-number { position:absolute; z-index:2; top:28px; left:30px; color:#b8f2ff; font:italic 25px var(--font-display); text-shadow:0 0 18px rgba(54,217,230,.6); }.service-card-copy { position:absolute; z-index:2; left:30px; right:30px; bottom:30px; display:flex; flex-direction:column; align-items:flex-start; }.service-card-copy small { color:#8ee9f6; font-size:8px; font-weight:800; letter-spacing:1.8px; text-transform:uppercase; }.service-card-copy strong { margin:10px 0 5px; font:500 clamp(31px,3vw,43px)/1 var(--font-display); }.service-card-copy p { min-height:20px; margin:0 0 22px; color:rgba(255,255,255,.72); font-size:11px; }.service-card-copy b { padding-top:15px; border-top:1px solid rgba(255,255,255,.28); font-size:9px; letter-spacing:1.3px; text-transform:uppercase; }.service-card-copy b i { margin-left:8px; color:var(--aqua); font-style:normal; font-size:14px; transition:transform .25s ease; }
.service-links>a:hover,.service-links>a:focus-visible { transform:translateY(-7px); border-color:rgba(128,232,240,.78); box-shadow:0 0 0 1px rgba(54,217,230,.3),0 28px 65px rgba(0,17,36,.42),0 0 32px rgba(54,217,230,.16); }.service-links>a:hover>img,.service-links>a:focus-visible>img { transform:scale(1.07); }.service-links>a:hover .service-card-copy b i,.service-links>a:focus-visible .service-card-copy b i { display:inline-block; transform:translate(3px,-3px); }.service-links>a:focus-visible { outline:3px solid var(--gold); outline-offset:4px; }
.weave-card { background:linear-gradient(145deg,#052a4d,#075b8d); box-shadow:18px 18px 0 rgba(20,127,202,.32); }
h1,h2,h3,em,.panel-head span,.library-head h2 { text-wrap:balance; }
.validation-summary:empty,.field-validation:empty { display:none; }
.validation-summary { padding:13px 15px; color:#8b3624; background:#fde1d9; border-left:3px solid #f06f50; font-size:12px; }
.validation-summary ul { margin:0; padding-left:18px; }
.field-validation { color:#a6402c; font-size:10px; text-transform:none; letter-spacing:0; font-weight:600; }
.input-validation-error { border-color:#cf5438!important; }
.confirmation-page { min-height:720px; padding:80px 20px; display:grid; place-items:center; background:#f3f7f2; }
.confirmation-card { width:min(740px,100%); padding:70px; text-align:center; background:#fffdf8; box-shadow:0 25px 80px rgba(8,44,46,.12); }
.confirmation-icon { width:58px; height:58px; display:grid; place-items:center; margin:0 auto 22px; border-radius:50%; color:white; background:#0f5b5d; font-size:24px; }
.confirmation-card h1 { margin:18px 0 24px; font-size:clamp(48px,7vw,82px); line-height:.94; letter-spacing:-4px; }
.confirmation-card h1 em { color:#f06f50; }
.confirmation-card p { max-width:560px; margin:0 auto 30px; color:#5e7471; line-height:1.75; }
.confirmation-actions { display:flex; justify-content:center; gap:10px; }
.outline-button { border:1px solid #0c2f2f; }
.login-page { min-height:calc(100vh - 94px); display:grid; grid-template-columns:.85fr 1.15fr; background:#082c2e; color:white; }
.login-panel { padding:90px clamp(30px,7vw,110px); display:flex; flex-direction:column; justify-content:center; }
.login-panel h1 { font-size:clamp(52px,6vw,86px); line-height:.9; letter-spacing:-4px; margin:22px 0; }
.login-panel h1 em { color:#e9bd68; }
.login-panel>p { color:rgba(255,255,255,.65); line-height:1.7; }
.login-form { margin-top:25px; display:flex; flex-direction:column; gap:18px; }
.login-form label { display:flex; flex-direction:column; gap:8px; font-size:9px; text-transform:uppercase; letter-spacing:1.4px; font-weight:800; }
.login-form input { min-height:50px; padding:13px 15px; border:1px solid rgba(255,255,255,.22); color:white; background:rgba(255,255,255,.08); outline:none; }
.login-form input:focus { border-color:#e9bd68; }
.login-form .button { align-self:flex-start; }
.back-link { margin-top:28px; color:rgba(255,255,255,.56); font-size:10px; }
.login-photo { min-height:620px; }
.login-photo img { width:100%; height:100%; object-fit:cover; }
.admin-sidebar nav a.active { background:rgba(255,255,255,.1); color:white; }
.logout-form { margin-top:14px; }
.logout-form button { width:100%; padding:10px; border:1px solid rgba(255,255,255,.15); color:rgba(255,255,255,.55); background:transparent; cursor:pointer; }
.admin-alert { margin:24px 0 -12px; padding:13px 16px; border-radius:3px; font-size:11px; }
.admin-alert.success { color:#1f5a42; background:#d9eee2; }
.admin-alert.error { color:#8b3624; background:#fde1d9; }
.media-list article>form button { border:0; background:transparent; font-size:22px; cursor:pointer; }
.status-form select { padding:7px 9px; border:1px solid #d7e0dc; border-radius:20px; background:#fff6df; color:#76541d; text-transform:uppercase; font-size:8px; font-weight:800; }
.booking-form input[type=date] { min-height:49px; }
.booking-form .validation-summary { text-transform:none; letter-spacing:0; }
.admin-main input[type=file] { padding:10px; }
.batch-help { margin:8px 0 0; color:#6f8595; font-size:11px; line-height:1.6; }
.upload-panel label small { color:#8295a3; font-size:9px; font-weight:500; letter-spacing:0; text-transform:none; }
.media-preview { display:block; position:relative; }
.media-preview:after { content:"↗"; position:absolute; right:4px; bottom:4px; width:19px; height:19px; display:grid; place-items:center; color:white; background:rgba(3,31,59,.78); font-size:9px; }
.open-original { display:inline-block; margin-top:6px; color:#0876ba; font-size:8px; font-weight:800; text-transform:uppercase; letter-spacing:.5px; }
.media-or { display:flex; align-items:center; gap:12px; color:#7b91a0; font-size:8px; font-weight:800; text-transform:uppercase; letter-spacing:1px; }.media-or:before,.media-or:after { content:""; flex:1; height:1px; background:#d9e5ec; }
.embed-preview-icon { width:100%; height:100%; min-height:54px; display:grid; place-items:center; color:white; background:linear-gradient(145deg,#06365f,#0b91cf); font-size:20px; }
.external-video-embed { width:100%; height:100%; min-height:260px; background:#031a32; }.external-video-embed iframe { width:100%; height:100%; border:0; display:block; }
.external-video-fallback { width:100%; height:100%; min-height:260px; padding:32px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; text-align:center; color:white; background:radial-gradient(circle at 80% 15%,rgba(54,217,230,.3),transparent 33%),linear-gradient(145deg,#052a4e,#0876b4); }.external-video-fallback span { width:62px; height:62px; display:grid; place-items:center; padding-left:4px; border:1px solid rgba(255,255,255,.55); border-radius:50%; box-shadow:0 0 30px rgba(54,217,230,.28); }.external-video-fallback strong { font:500 24px var(--font-display); }.external-video-fallback small { color:rgba(255,255,255,.7); font-size:9px; text-transform:uppercase; letter-spacing:1px; }
.external-video-item figcaption { top:0; bottom:auto; pointer-events:none; background:linear-gradient(rgba(2,24,45,.88),transparent); }.article-video .external-video-fallback { min-height:420px; }
.active-period { display:block; margin-top:7px; color:#6f8798; font-size:9px; }
.filter-toolbar { margin:22px 0 8px; padding:16px; display:flex; align-items:flex-end; flex-wrap:wrap; gap:10px; background:#f4f9fc; border:1px solid #dce9f1; }.filter-toolbar label { min-width:138px; display:flex; flex-direction:column; gap:6px; color:#31536a; font-size:8px; font-weight:800; text-transform:uppercase; letter-spacing:.7px; }.filter-toolbar label small { color:#78909f; font-weight:500; text-transform:none; }.filter-toolbar .filter-grow { min-width:220px; flex:1; }.filter-toolbar input,.filter-toolbar select { min-height:39px; padding:9px 11px; border:1px solid #c9dbe6; background:white; color:#173d58; font:500 10px var(--font-body); }.filter-toolbar button,.filter-toolbar>a { min-height:39px; padding:0 16px; display:inline-flex; align-items:center; justify-content:center; border:1px solid #0876ba; color:white; background:#0876ba; font-size:9px; font-weight:800; cursor:pointer; }.filter-toolbar>a { color:#0876ba; background:white; }
.cms-pagination { margin-top:18px; padding-top:15px; display:flex; align-items:center; justify-content:space-between; gap:12px; border-top:1px solid #e1eaf0; }.cms-pagination a,.cms-pagination span { font-size:9px; font-weight:700; }.cms-pagination a { color:#0876ba; }.cms-pagination a.disabled { opacity:.35; pointer-events:none; }.cms-pagination span { color:#6f8798; }
.bookings-table .filter-toolbar { margin:0 0 22px; }.bookings-table>.cms-pagination { padding:18px 24px; }

/* Full-picture gallery viewer */
.gallery-zoomable { cursor:zoom-in; transition:transform .35s ease,filter .35s ease; }
.gallery-item:hover .gallery-zoomable { transform:scale(1.025); filter:brightness(1.04); }
.gallery-zoomable:focus-visible { outline:4px solid #36d9e6; outline-offset:-4px; }
body.lightbox-open { overflow:hidden; }
.gallery-lightbox[hidden] { display:none; }
.gallery-lightbox { position:fixed; inset:0; z-index:1000; padding:42px 86px 28px; display:grid; grid-template-columns:54px minmax(0,1fr) 54px; align-items:center; gap:18px; color:white; background:rgba(1,15,30,.96); backdrop-filter:blur(18px); }
.gallery-lightbox figure { width:100%; height:100%; min-height:0; margin:0; display:grid; grid-template-rows:minmax(0,1fr) auto; }
.gallery-lightbox figure>img { width:100%; height:100%; min-height:0; object-fit:contain; }
.gallery-lightbox figcaption { padding:16px 10px 0; display:grid; grid-template-columns:1fr auto; gap:4px 24px; }
.gallery-lightbox figcaption strong { font:500 23px var(--font-display); }
.gallery-lightbox figcaption small { grid-row:2; color:rgba(255,255,255,.65); font-size:11px; }
.gallery-lightbox figcaption span { grid-column:2; grid-row:1/3; align-self:center; color:#9cdbf7; font-size:10px; letter-spacing:1px; }
.lightbox-close,.lightbox-nav { border:1px solid rgba(255,255,255,.2); color:white; background:rgba(255,255,255,.07); cursor:pointer; transition:.2s ease; }
.lightbox-close:hover,.lightbox-nav:hover { border-color:#36d9e6; background:rgba(54,217,230,.14); box-shadow:0 0 22px rgba(54,217,230,.18); }
.lightbox-close { position:absolute; top:22px; right:26px; width:48px; height:48px; border-radius:50%; font-size:30px; line-height:1; }
.lightbox-nav { width:54px; height:70px; font-size:42px; line-height:1; }
.lightbox-prev { grid-column:1; }.lightbox-next { grid-column:3; }

@media (max-width:700px) {
  .gallery-lightbox { padding:70px 14px 20px; grid-template-columns:40px minmax(0,1fr) 40px; gap:7px; }
  .lightbox-nav { width:40px; height:58px; font-size:32px; }
  .lightbox-close { top:12px; right:14px; width:43px; height:43px; }
  .gallery-lightbox figcaption strong { font-size:18px; }
}

/* Public CMS pages */
.stories-section { background:#eef7fd; }
.story-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin:46px 0 30px; }
.story-card { background:white; border:1px solid rgba(9,43,76,.1); box-shadow:0 16px 45px rgba(3,55,91,.08); }
.story-card>img { height:250px; object-fit:cover; }
.story-card>div { padding:28px; }
.story-card small { color:#0876ba; text-transform:uppercase; letter-spacing:1.5px; font-size:8px; font-weight:800; }
.story-card h2,.story-card h3 { margin:12px 0; font:500 30px/1.05 var(--font-display); }
.story-card p { color:#557189; font-size:12px; line-height:1.7; }
.story-card a,.text-link,.map-link { color:#076fae; font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:1px; }
.text-link { display:inline-block; }
.detail-hero { height:min(78vh,760px); min-height:560px; position:relative; color:white; }
.detail-hero>img,.detail-overlay { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.detail-overlay { background:linear-gradient(0deg,rgba(2,25,50,.88),rgba(4,63,104,.08) 72%); }
.detail-title { position:absolute; left:clamp(24px,8vw,130px); right:24px; bottom:80px; }
.detail-title h1,.page-banner h1,.article-head h1 { max-width:1000px; margin:18px 0; font-size:clamp(58px,8vw,118px); line-height:.88; letter-spacing:-6px; }
.detail-title p { max-width:680px; color:rgba(255,255,255,.82); line-height:1.7; }
.detail-content { display:grid; grid-template-columns:1fr 1fr; gap:8vw; }
.detail-content h2 { font-size:clamp(44px,5vw,76px); line-height:.95; letter-spacing:-3px; }
.detail-content .prose,.article-body { font-size:16px; line-height:1.95; color:#3f6077; }
.detail-content .button { margin:24px 14px 0 0; }.map-link { display:inline-block; margin-top:24px; }
.getting-there { display:grid; grid-template-columns:.75fr 1.25fr; gap:8vw; color:white; background:linear-gradient(145deg,#06345d,#0874ad); }.getting-there h2 { margin:18px 0; font-size:clamp(52px,6vw,86px); line-height:.94; letter-spacing:-4px; }.getting-there p { max-width:760px; color:rgba(255,255,255,.78); font-size:15px; line-height:1.9; }.getting-there .button { margin-top:22px; }.travel-contact { display:block; margin-top:22px; color:#a7e2fb; font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:1px; }
.destination-gallery { background:#f1f8fd; }
.exact-map { display:grid; grid-template-columns:.75fr 1.25fr; min-height:520px; color:white; background:#052f55; }.exact-map>div { padding:clamp(55px,7vw,100px); display:flex; flex-direction:column; align-items:flex-start; justify-content:center; }.exact-map h2 { margin:16px 0; font:500 clamp(42px,5vw,72px)/.98 var(--font-display); }.exact-map p { color:rgba(255,255,255,.7); }.exact-map iframe { width:100%; height:100%; min-height:460px; border:0; }
.gallery-item figcaption small { display:block; margin-top:5px; opacity:.75; font-weight:400; }
.gallery-placeholder { padding:70px 30px; text-align:center; border:1px dashed #8bbbd8; background:#f3f9fd; color:#57768d; }
.gallery-placeholder span { display:block; font:500 32px var(--font-display); color:#092b4c; }
.page-banner { padding:170px clamp(24px,8vw,130px) 95px; color:white; background:linear-gradient(135deg,#052d53,#0875b5); }
.page-banner p { max-width:620px; color:rgba(255,255,255,.75); }
.story-banner { color:#092b4c; background-color:#eaf6fd; background-image:linear-gradient(90deg,rgba(238,248,254,.99) 0%,rgba(238,248,254,.92) 44%,rgba(224,242,252,.62) 70%,rgba(218,239,251,.35)),var(--stories-bg); background-size:cover; background-position:center; }
.story-banner p { color:#41647c; }.story-banner .eyebrow { color:#0876ba; }
.story-grid-full { grid-template-columns:repeat(2,1fr); }
.article-page { padding:150px clamp(20px,8vw,130px) 120px; background:#f8fcff; }
.article-head { max-width:1000px; margin:0 auto 58px; text-align:center; }
.article-head h1 { margin-left:auto; margin-right:auto; font-size:clamp(52px,7vw,96px); color:#092b4c; }
.article-head p { max-width:700px; margin:auto; color:#56738a; line-height:1.8; }
.article-cover { width:min(1100px,100%); max-height:650px; margin:0 auto 60px; object-fit:cover; }
.article-body { width:min(760px,100%); margin:auto; }.article-body .button { margin-top:30px; }

/* CMS workspace */
.cms-shell { grid-template-columns:280px 1fr; background:#f0f6fb; }
.cms-stats { grid-template-columns:repeat(4,1fr); }
.cms-welcome { margin-top:24px; padding:52px; display:grid; grid-template-columns:1.2fr .8fr; gap:55px; background:linear-gradient(135deg,#fff,#edf8ff); border:1px solid #d7e7f2; }
.analytics-panel { margin-top:26px; padding:34px; background:white; border:1px solid #d8e7f0; }.analytics-heading { display:flex; justify-content:space-between; align-items:flex-end; }.analytics-heading h2 { margin:8px 0 0; font:500 38px var(--font-display); }.live-count { display:flex; gap:9px; align-items:center; padding:9px 13px; color:#126b48; background:#e9f8ef; border-radius:20px; font-size:9px; font-weight:800; text-transform:uppercase; }.live-count i,.visitor-dot.online { width:8px; height:8px; border-radius:50%; background:#35c77a; box-shadow:0 0 0 5px rgba(53,199,122,.13),0 0 15px rgba(53,199,122,.45); }.traffic-stats { display:grid; grid-template-columns:repeat(5,1fr); gap:10px; margin:28px 0; }.traffic-stats article { padding:20px; border-top:3px solid #168ed8; background:#f5faff; }.traffic-stats article:nth-child(2){border-color:#36d9e6}.traffic-stats article:nth-child(3){border-color:#ffd36a}.traffic-stats article:nth-child(4){border-color:#ff9a62}.traffic-stats article.live-stat{color:white;border-color:#36d9e6;background:linear-gradient(145deg,#06365f,#0878b8);box-shadow:0 0 24px rgba(54,217,230,.16)}.traffic-stats span,.traffic-stats small { display:block; font-size:8px; color:#6d8495; }.traffic-stats .live-stat span,.traffic-stats .live-stat small { color:rgba(255,255,255,.65); }.traffic-stats strong { display:block; margin:7px 0; font:500 34px var(--font-display); }.analytics-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }.analytics-table { padding:25px; border:1px solid #e0eaf0; }.analytics-table .library-head { margin-bottom:18px; }.analytics-table .library-head h2 { font-size:28px; }.visitor-list { display:flex; flex-direction:column; }.visitor-list article { display:grid; grid-template-columns:12px 1fr auto; gap:11px; align-items:center; padding:11px 0; border-top:1px solid #e5edf2; }.visitor-dot { width:7px;height:7px;border-radius:50%;background:#b8c5cd}.visitor-list strong,.visitor-list small { display:block;font-size:9px}.visitor-list small { margin-top:4px;color:#718697}.visitor-list time { color:#718697;font-size:8px}.analytics-empty { padding:35px 10px;text-align:center;color:#718697;font-size:10px}.privacy-note { margin:20px 0 0;padding-top:17px;border-top:1px solid #e3ebf0;color:#7a8f9e;font-size:9px;line-height:1.6}
.cms-welcome h2 { margin:14px 0; font:500 48px/1 var(--font-display); }
.cms-welcome p { color:#587286; line-height:1.8; }
.quick-actions { display:flex; flex-direction:column; border-top:1px solid #d6e4ed; }
.quick-actions a { display:flex; justify-content:space-between; padding:16px 3px; border-bottom:1px solid #d6e4ed; font-size:11px; font-weight:700; }
.cms-form,.content-list { padding:32px; background:white; border:1px solid #dbe7ef; }
.festival-cms-card { position:sticky; top:36px; padding:42px; color:white; background:linear-gradient(145deg,#06365f,#0878b8); box-shadow:0 20px 60px rgba(3,54,90,.18); }.festival-cms-card>img { height:260px; margin:-42px -42px 34px; width:calc(100% + 84px); object-fit:cover; }.festival-cms-card h2 { margin:18px 0; font:500 54px/.92 var(--font-display); }.festival-cms-card strong { color:#8ed8f8; font-size:11px; }.festival-cms-card p { color:rgba(255,255,255,.72); line-height:1.8; }.festival-cms-card a { color:#8ed8f8; font-size:10px; font-weight:800; text-transform:uppercase; }
.wide-form { margin-top:36px; max-width:1100px; }
.form-intro { margin-bottom:28px; }.form-intro h2 { margin:8px 0; font:500 35px var(--font-display); }.form-intro p { color:#708697; font-size:11px; }
.cms-form { display:flex; flex-direction:column; gap:18px; }
.cms-form label { display:flex; flex-direction:column; gap:7px; color:#25475f; font-size:9px; font-weight:800; text-transform:uppercase; letter-spacing:1.1px; }
.cms-form label small { color:#8194a2; text-transform:none; letter-spacing:0; font-weight:500; }
.cms-form input,.cms-form textarea,.cms-form select,.upload-panel select { width:100%; padding:13px 14px; border:1px solid #cddce6; background:#fbfdff; outline:none; text-transform:none; letter-spacing:0; }
.cms-form input:focus,.cms-form textarea:focus,.cms-form select:focus { border-color:#168ed8; box-shadow:0 0 0 3px rgba(22,142,216,.1); }
.form-section { padding:25px 0; border-top:1px solid #e0eaf0; }.form-section h3 { margin:0 0 18px; font:500 23px var(--font-display); }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }.span-2 { grid-column:1/-1; }
.check-row { display:flex; gap:22px; }.check-row label { flex-direction:row; align-items:center; text-transform:none; letter-spacing:0; }.check-row input { width:auto; }
.cms-columns { display:grid; grid-template-columns:minmax(360px,.8fr) minmax(440px,1.2fr); gap:22px; margin-top:36px; align-items:start; }
.content-list { max-height:calc(100vh - 170px); overflow:auto; }
.content-row { display:grid; grid-template-columns:88px 1fr auto; gap:15px; align-items:center; padding:13px 0; border-top:1px solid #e3ebf1; }
.content-row>img { width:88px; height:70px; object-fit:cover; background:#e8f2f8; }
.content-row>div>small,.content-row>div>strong,.content-row>div>span { display:block; }.content-row>div>small { color:#0d78b9; font-size:8px; text-transform:uppercase; letter-spacing:1px; }.content-row>div>strong { margin:6px 0; font-size:12px; }.content-row>div>span { color:#748999; font-size:9px; }
.row-actions { display:flex; gap:8px; align-items:center; }.row-actions a,.row-actions button,.cancel-edit { border:0; background:none; color:#0b6da8; cursor:pointer; font-size:9px; font-weight:800; text-transform:uppercase; }.row-actions form { margin:0; }.row-actions button { color:#a74242; }
.cancel-edit { display:inline-block; text-align:center; }.post-row { grid-template-columns:88px 1fr auto; }
.admin-stats article { border-top:3px solid #1592dc; }
.admin-stats article:nth-child(2) { border-top-color:var(--aqua); }.admin-stats article:nth-child(3) { border-top-color:var(--gold); }.admin-stats article:nth-child(4) { border-top-color:var(--sunset); }
.admin-sidebar nav a.active { background:linear-gradient(90deg,rgba(54,217,230,.18),rgba(54,217,230,.04)); box-shadow:inset 3px 0 0 var(--aqua),0 0 24px rgba(54,217,230,.08); }
.story-card:hover,.business-card:hover { transform:translateY(-4px); border-color:rgba(54,217,230,.55); box-shadow:0 0 26px rgba(54,217,230,.14),0 24px 58px rgba(3,55,91,.15); }.story-card,.business-card { transition:.25s ease; }
.admin-sidebar nav i { background:#168ed8; }.admin-user>span { background:#8ed8f8; }
.site-menu-toggle { display:none; }

@media (max-width:1000px) {
  .hero { min-height:720px; height:100svh; max-height:860px; align-items:flex-start; }
  .hero-video { display:block!important; object-position:30% center; }
  .hero-mobile-poster { display:none; object-position:30% center; }
  .hero-shade { background:linear-gradient(90deg,rgba(2,24,48,.92) 0%,rgba(3,42,75,.72) 58%,rgba(3,50,82,.28) 100%),linear-gradient(0deg,rgba(2,25,49,.88),transparent 58%); }
  .hero-content { width:min(620px,100%); margin:0; padding:clamp(145px,18vh,185px) 28px 54px; }
  .hero-kicker { max-width:100%; font-size:9px; line-height:1.45; letter-spacing:2.1px; }
  .hero h1 { max-width:590px; margin:19px 0; font-size:clamp(48px,8.6vw,72px); line-height:.9; letter-spacing:-3.8px; overflow-wrap:normal; word-break:normal; }
  .hero-content>p { width:min(500px,100%); margin:0; font-size:14px; line-height:1.65; }
  .hero-actions { max-width:500px; flex-wrap:wrap; margin-top:27px; }
  .hero-facts,.scroll-cue,.video-credit { display:none!important; }
  .site-menu-toggle { width:46px; height:46px; flex:0 0 auto; padding:0; display:grid; place-content:center; gap:5px; border:1px solid currentColor; border-radius:50%; color:inherit; background:rgba(255,255,255,.07); cursor:pointer; position:relative; z-index:32; }
  .site-menu-toggle span { width:19px; height:2px; display:block; border-radius:2px; background:currentColor; transition:transform .22s ease,opacity .18s ease; }
  .site-header.menu-open .site-menu-toggle span:nth-child(1) { transform:translateY(7px) rotate(45deg); }
  .site-header.menu-open .site-menu-toggle span:nth-child(2) { opacity:0; }
  .site-header.menu-open .site-menu-toggle span:nth-child(3) { transform:translateY(-7px) rotate(-45deg); }
  .site-header nav { position:absolute; top:100%; left:0; right:0; max-height:calc(100vh - 94px); padding:14px clamp(22px,5vw,54px) 26px; display:flex; flex-direction:column; align-items:stretch; gap:0; overflow:auto; color:white; background:linear-gradient(145deg,rgba(3,26,50,.98),rgba(5,74,119,.98)); border-top:1px solid rgba(255,255,255,.13); box-shadow:0 24px 50px rgba(1,23,45,.3); opacity:0; visibility:hidden; pointer-events:none; transform:translateY(-10px); transition:opacity .2s ease,transform .2s ease,visibility .2s; }
  .site-header.menu-open nav { opacity:1; visibility:visible; pointer-events:auto; transform:translateY(0); }
  .site-header nav a,.site-header nav a:not(.nav-book) { display:block!important; padding:15px 4px; border-bottom:1px solid rgba(255,255,255,.12); color:rgba(255,255,255,.84); font-size:12px; }
  .site-header nav a:hover { color:#a8eaff; }
  .site-header .nav-book { margin-top:14px; padding:14px 20px; color:white; text-align:center; border:1px solid #61c8ff; border-radius:3px; background:linear-gradient(135deg,#168fd4,#0867ad); box-shadow:0 0 22px rgba(54,217,230,.16); }
}

@media (max-width:800px) {
  .hero-video { display:block!important; }
  .hero-mobile-poster { display:none; }
  .destination-grid { display:block; }
  .destination-card { position:relative!important; display:block!important; width:100%!important; min-height:440px; margin:0 0 12px; overflow:hidden!important; contain:layout paint; }
  .login-page { grid-template-columns:1fr; }
  .login-photo { display:none; }
  .confirmation-card { padding:50px 24px; }
  .confirmation-actions { flex-direction:column; }
  .story-grid,.story-grid-full,.detail-content,.getting-there,.exact-map,.cms-welcome,.cms-columns,.business-grid,.visitor-services { grid-template-columns:1fr; }.service-links { grid-template-columns:1fr; }.service-links>a { min-height:360px; }.visitor-services { gap:42px; }
  .banigan-story { grid-template-columns:1fr; }.banigan-actions { flex-direction:column; align-items:flex-start; }.banigan-hero h1 { letter-spacing:-5px; }.festival-page-grid .gallery-item:nth-child(1) { grid-column:span 2; }
  .cms-stats { grid-template-columns:1fr 1fr; }
  .traffic-stats { grid-template-columns:1fr 1fr; }.analytics-grid { grid-template-columns:1fr; }
  .filter-toolbar { align-items:stretch; }.filter-toolbar label,.filter-toolbar .filter-grow { width:100%; min-width:0; }.filter-toolbar button,.filter-toolbar>a { flex:1; }
  .form-grid { grid-template-columns:1fr; }.span-2 { grid-column:auto; }
  .content-list { max-height:none; }
  .directory-listing { padding-top:26px; padding-bottom:52px; }
  .directory-listing .section-heading h2 { font-size:36px; letter-spacing:-1.8px; }
  .directory-listing .business-grid { margin-top:20px; }
  .directory-listing { background-image:linear-gradient(180deg,rgba(242,248,252,.96),rgba(242,248,252,.88)),var(--directory-bg); }
  .story-banner { background-image:linear-gradient(180deg,rgba(238,248,254,.94),rgba(238,248,254,.82)),var(--stories-bg); }
  .whale-gallery-inset { width:155px; right:16px; bottom:16px; }.whale-gallery-inset img { height:105px; }
  .whale-actions { flex-direction:column; align-items:stretch; }.whale-actions .button { width:100%; }
  .back-to-top { right:16px; bottom:max(16px,env(safe-area-inset-bottom)); width:46px; height:46px; }
  .back-to-top span { font-size:22px; }
}

@media (max-width:600px) {
  .hero { min-height:690px; max-height:780px; }
  .hero-mobile-poster { object-position:27% center; }
  .hero-content { padding:132px 22px 38px; }
  .hero-kicker { font-size:8px; letter-spacing:1.8px; }
  .hero h1 { margin:16px 0; font-size:clamp(42px,12.5vw,50px); line-height:.91; letter-spacing:-2.7px; }
  .hero-content>p { max-width:345px; font-size:13px; line-height:1.6; }
  .hero-actions { width:min(100%,345px); display:grid; grid-template-columns:1fr; gap:10px; margin-top:23px; }
  .hero-actions .button { width:100%; min-height:48px; justify-content:space-between; padding:0 20px; }
}
