/* Archipelago. Photography navigates; opaque white surfaces carry reading. */
body { font-family:var(--catalog-reading); font-size:var(--catalog-body-size); line-height:var(--catalog-body-leading); color:var(--catalog-ink); background:var(--catalog-paper); }
html { scrollbar-color:var(--catalog-rule) transparent; }
h1,h2,h3,.catalog-brand { font-family:var(--catalog-display); }
button,input,select { font-family:var(--catalog-reading); }
.catalog-header { position:absolute; top:0; left:50%; transform:translateX(-50%); z-index:3; height:92px; color:var(--white); border-bottom:1px solid rgb(255 255 255 / .3); }
.catalog-brand img { filter:url(#catalog-brand-ink) brightness(0) invert(1); }
.catalog-header nav { font-size:var(--catalog-label-size); gap:32px; }
.home-link { border-color:rgb(255 255 255 / .6); font-size:var(--catalog-label-size); background:rgb(8 47 60 / .2); }
/* One outpainted photograph spans both sections. It never restarts at #islands. */
.catalog-landscape { position:relative; isolation:isolate; background:var(--catalog-paper); }
.catalog-landscape-image { position:absolute; z-index:-2; inset:0; pointer-events:none; mask-image:linear-gradient(#000 80%,rgb(0 0 0 / .96) 85%,rgb(0 0 0 / .8) 89%,rgb(0 0 0 / .45) 93%,rgb(0 0 0 / .12) 97%,transparent); }
.catalog-landscape-image img { display:block; width:100%; height:100%; object-fit:cover; object-position:center top; }
.catalog-landscape::before { content:''; position:absolute; z-index:-1; inset:0 0 auto; height:850px; pointer-events:none; background:linear-gradient(rgb(8 34 44 / .48),transparent 180px),radial-gradient(ellipse 85% 85% at 0% 12%,rgb(8 34 44 / .68),rgb(8 34 44 / .46) 56%,transparent 100%); }
.country-hero { width:100%; height:700px; min-height:0; max-height:none; margin:0; border-radius:0; background:transparent; }
.country-hero::after { content:none; }
.country-heading { inset:auto auto 96px 50%; transform:translateX(-50%); animation:atlas-heading .9s var(--catalog-ease) both; }
.country-heading > p { font:500 .75rem/1.5 var(--catalog-reading); letter-spacing:.13em; margin-bottom:20px; }
.country-heading h1 { font-size:clamp(76px,10.5vw,150px); line-height:1.02; margin-bottom:24px; letter-spacing:-.05em; }
.country-heading .hero-intro { font:400 clamp(22px,2vw,28px)/1.4 var(--catalog-display); letter-spacing:-.01em; margin:0 0 32px; }
.country-bottom { display:flex; justify-content:flex-start; align-items:center; gap:28px; }
.country-bottom .explore-hotels { order:initial; min-height:56px; font-size:15px; font-weight:600; color:var(--catalog-ink); padding:14px 18px 14px 24px; gap:24px; }
.country-bottom .islands-link { border:0; padding:12px 0; color:var(--catalog-ink); background:none; border-radius:0; font-size:14px; font-weight:600; text-shadow:0 1px 6px var(--catalog-paper); text-decoration:underline; text-underline-offset:6px; text-decoration-color:currentColor; }
.island-explorer { position:relative; isolation:isolate; color:var(--catalog-ink); padding:16px 0 var(--catalog-flow-depth); background:transparent; }
.island-explorer::before,.island-explorer::after { content:none; }
.island-explorer > .wrap { position:relative; z-index:1; }
.island-heading { display:flex; justify-content:space-between; align-items:end; gap:32px; margin-bottom:32px; }
.island-heading .eyebrow { color:var(--catalog-ink); font-size:11px; letter-spacing:.14em; margin-bottom:14px; }
.island-heading h2 { font-size:var(--catalog-heading-size); line-height:1.15; letter-spacing:-.035em; }
.island-heading > p { color:var(--catalog-ink); font-size:15px; line-height:1.65; margin:0 0 4px; }
.island-portraits { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:20px; }
.island-portrait { position:relative; isolation:isolate; overflow:hidden; min-width:0; height:280px; padding:0; text-align:left; border-radius:var(--catalog-radius); color:var(--white); background:var(--catalog-ocean); transition:transform .4s var(--catalog-ease),box-shadow .4s; }
.island-portrait > img { position:absolute; z-index:-2; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .8s var(--catalog-ease); }
.island-portrait::after { content:''; position:absolute; z-index:-1; inset:0; background:linear-gradient(transparent 30%,rgb(2 27 37 / .8)); }
.island-portrait-label { position:absolute; inset:auto 22px 24px; }
.island-portrait-label > strong { display:block; font:400 clamp(24px,2.6vw,36px)/1.1 var(--catalog-display); letter-spacing:-.035em; margin-bottom:14px; }
.island-portrait-label > span { display:flex; justify-content:space-between; flex-wrap:wrap; gap:6px 10px; font-size:12px; font-weight:500; }
.island-selected { position:absolute; top:16px; right:16px; border-radius:20px; padding:5px 12px; font-size:12px; font-weight:600; background:var(--white); color:var(--catalog-ink); opacity:0; }
.island-portrait[aria-pressed=true] { box-shadow:0 0 0 3px var(--catalog-ink); }
.island-portrait[aria-pressed=true] .island-selected { opacity:1; }
.island-portrait:focus-visible { outline:3px solid var(--catalog-ink); outline-offset:5px; }
.collection { padding-block:24px 48px; }
.collection-heading { align-items:center; margin-bottom:32px; }
.collection-heading h2 { font-size:var(--catalog-heading-size); }
.collection-heading > p { color:var(--catalog-muted); font-size:16px; line-height:1.6; }
.eyebrow { font:600 11px/1.5 var(--catalog-reading); letter-spacing:.13em; }
.catalog-filters { position:sticky; top:12px; z-index:4; grid-template-columns:1.3fr 1fr 1fr; gap:0; padding:12px; border:1px solid var(--catalog-rule); border-radius:var(--catalog-control-radius); background:var(--catalog-panel); box-shadow:0 8px 26px rgb(16 47 59 / .06); }
.search-field { padding-inline:12px 24px; }
.search-field input { font-size:16px; padding:10px 0; }
.select-field { padding:0 20px; gap:8px; flex-direction:column; align-items:stretch; border-left:1px solid var(--catalog-rule); }
.select-field > span { font-size:11px; font-weight:600; color:var(--catalog-muted); }
.select-field select { font-size:15px; line-height:1.4; padding:0 0 4px; }
.results-line { min-height:76px; }
.results-line p,.results-line button { font-size:14px; }
.results-line p { color:var(--catalog-ink); font-weight:500; }
.hotel-grid { grid-template-columns:1fr; gap:28px; }
.hotel-card { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); padding:0; border:1px solid var(--catalog-rule); border-radius:var(--catalog-radius); background:var(--catalog-panel); box-shadow:0 4px 18px rgb(16 47 59 / .035); }
.hotel-cover { height:100%; min-height:390px; aspect-ratio:auto; border-radius:calc(var(--catalog-radius) - 1px) 0 0 calc(var(--catalog-radius) - 1px); }
.hotel-cover img { position:absolute; inset:0; }
.photo-count { bottom:20px; right:20px; font:500 13px/1.4 var(--catalog-reading); padding:9px 14px; box-shadow:0 2px 12px rgb(16 47 59 / .1); }
.card-body { padding:34px 36px; }
.card-meta { font:500 13px/1.5 var(--catalog-reading); color:var(--catalog-muted); align-items:center; margin:0 0 20px; }
.card-meta .stars { letter-spacing:0; color:var(--catalog-ink); padding:5px 10px; border-radius:8px; background:var(--catalog-tint); }
.hotel-card h3 { font:400 var(--catalog-name-size)/1.18 var(--catalog-display); letter-spacing:-.035em; max-width:25ch; }
.hotel-card p { font:400 var(--catalog-body-size)/var(--catalog-body-leading) var(--catalog-reading); color:var(--catalog-muted); margin:20px 0 28px; max-width:43ch; }
.card-bottom { flex-direction:row; align-items:center; gap:20px; padding-top:22px; margin-top:auto; border-top:1px solid var(--catalog-rule); }
.card-score { font:400 12px/1.5 var(--catalog-reading); color:var(--catalog-muted); }
.card-score strong { font:600 22px/1.3 var(--catalog-reading); color:var(--catalog-ink); margin-bottom:4px; }
.card-more { width:auto; min-height:48px; padding:13px 22px; border-color:var(--catalog-action); border-radius:26px; color:var(--white); background:var(--catalog-action); font:600 14px/1.35 var(--catalog-reading); }
.hotel-card:focus-within .card-more { background:var(--catalog-ocean); border-color:var(--catalog-ocean); }
.collection-sources { margin-top:48px; color:var(--catalog-muted); font-size:14px; }
.catalog-footer { width:100%; margin:0; padding:44px max(var(--gutter),calc((100% - var(--catalog-width)) / 2)); background:var(--catalog-ocean); color:var(--catalog-on-ocean); font-size:14px; }
.catalog-footer > a:first-child { color:var(--white); font:400 18px/1.4 var(--catalog-display); }
dialog { font-family:var(--catalog-reading); color:var(--catalog-ink); background:var(--catalog-panel); }
.dialog-top { background:var(--catalog-panel); }
.dialog-top > span,.hotel-category { font-size:13px; color:var(--catalog-muted); }
.detail-copy h2 { font-family:var(--catalog-display); font-size:var(--catalog-name-size); }
.hotel-description { font:400 var(--catalog-body-size)/var(--catalog-body-leading) var(--catalog-reading); color:var(--catalog-ink); }
.hotel-photo-stage { background:var(--catalog-paper); }
.review-detail { background:var(--catalog-tint); }
.review-detail strong { font:600 26px/1.4 var(--catalog-reading); }
.review-detail p { font-size:15px; }
.review-detail small,.review-detail a { font-size:13px; }
.quiet-button { background:var(--catalog-action); font:600 14px/1.5 var(--catalog-reading); }
.gallery-controls { font-size:13px; }
.gallery-controls button:disabled { opacity:1; color:#6d7f85; }
.detail-sources { font-size:13px; }
@keyframes atlas-heading { from { opacity:0; translate:0 18px; } to { opacity:1; translate:0 0; } }
@media(hover:hover) {
  .island-portrait:hover { transform:translateY(-5px); }
  .island-portrait:hover > img { transform:scale(1.045); }
  .hotel-card:hover { transform:translateY(-2px); box-shadow:var(--catalog-shadow); }
  .hotel-card:hover .card-more { border-color:var(--catalog-ocean); background:var(--catalog-ocean); }
  .home-link:hover { background:rgb(255 255 255 / .15); }
}
@media(max-width:1000px) {
  .island-portraits { gap:14px; }
  .island-portrait { height:250px; }
  .island-portrait-label { inset-inline:16px; }
  .island-heading > p { max-width:26ch; }
  .island-heading > p br { display:none; }
  .catalog-filters { grid-template-columns:1.1fr 1fr 1fr; }
  .hotel-card { grid-template-columns:1fr 1fr; }
  .card-body { padding:26px; }
  .card-bottom { flex-wrap:wrap; gap:16px; }
  .hotel-cover { min-height:410px; }
}
@media(max-width:700px) {
  .catalog-header { height:76px; }
  .catalog-header nav { display:none; }
  .catalog-brand { font-size:13px; }
  .home-link { padding:10px 14px; font-size:12px; }
  .country-hero { height:610px; }
  .catalog-landscape::before { height:730px; background:linear-gradient(180deg,rgb(8 34 44 / .44),rgb(8 34 44 / .5) 52%,rgb(8 34 44 / .24) 75%,transparent); }
  .country-heading { inset:auto auto 54px 50%; }
  .country-heading > p { font-size:10px; letter-spacing:.08em; margin-bottom:18px; }
  .country-heading h1 { font-size:clamp(48px,13.7vw,82px); margin-bottom:22px; }
  .country-heading .hero-intro { font-size:24px; margin-bottom:28px; }
  .country-bottom { flex-direction:column; align-items:start; gap:12px; }
  .country-bottom .explore-hotels { font-size:14px; min-height:54px; padding:12px 16px 12px 22px; }
  .island-explorer { padding-top:12px; }
  .island-heading { display:block; margin-bottom:28px; }
  .island-heading h2 { font-size:34px; max-width:16ch; }
  .island-heading > p { font-size:14px; max-width:32ch; margin-top:16px; }
  .island-portraits { grid-template-columns:1fr 1fr; gap:12px; }
  .island-portrait { height:218px; border-radius:18px; }
  .island-portrait-label { inset:auto 14px 18px; }
  .island-portrait-label > strong { font-size:25px; margin-bottom:12px; }
  .island-portrait-label > span { display:block; font-size:12px; }
  .island-portrait-label > span > span { display:block; margin-top:4px; }
  .island-selected { top:12px; right:12px; font-size:10px; padding:4px 8px; }
  .collection-heading h2 { font-size:34px; }
  .collection-heading { display:block; }
  .collection-heading > p { font-size:15px; margin-top:16px; max-width:32ch; }
  .collection-heading > p br { display:none; }
  .catalog-filters { position:static; grid-template-columns:1fr 1fr; padding:10px 14px; }
  .search-field { grid-column:1/-1; padding:0 0 8px; border-bottom:1px solid var(--catalog-rule); margin-bottom:10px; }
  .select-field { min-width:0; padding:0 0 0 12px; gap:4px; min-height:52px; }
  .select-field:nth-of-type(2) { border:0; padding-left:0; padding-right:12px; }
  .select-field > span { min-width:0; }
  .select-field select { font-size:14px; height:30px; }
  .results-line { min-height:64px; gap:8px; }
  .results-line p,.results-line button { font-size:12px; white-space:nowrap; }
  .hotel-grid { gap:24px; }
  .hotel-card { display:flex; border-radius:20px; }
  .hotel-cover { height:auto; min-height:0; aspect-ratio:1.35; border-radius:19px 19px 0 0; }
  .card-body { padding:22px; }
  .card-meta { font-size:12px; margin-bottom:16px; }
  .card-meta .stars { padding:4px 8px; }
  .hotel-card h3 { font-size:27px; line-height:1.2; }
  .hotel-card p { font-size:16px; line-height:1.65; margin:18px 0 24px; }
  .card-bottom { gap:16px; flex-direction:row; align-items:center; padding-top:20px; }
  .card-score { font-size:11px; }
  .card-score strong { font-size:20px; }
  .card-more { padding:13px 18px; font-size:13px; }
  .photo-count { bottom:14px; right:14px; font-size:12px; }
  .catalog-footer { gap:24px; padding-block:36px; font-size:13px; }
  .hotel-description { font-size:16px; }
  .detail-copy h2 { font-size:28px; }
  .gallery-controls { gap:4px; font-size:12px; }
  .gallery-controls button { padding-inline:4px; }
}
@media(max-width:360px) {
  .country-heading h1 { font-size:43px; }
  .island-portrait { height:205px; }
  .island-portrait-label { inset-inline:12px; }
  .island-portrait-label > strong { font-size:23px; }
  .card-body { padding:20px; }
  .hotel-card h3 { font-size:25px; }
  .card-bottom { flex-direction:column; align-items:stretch; }
  .card-more { width:100%; }
}
@media(prefers-reduced-motion:reduce) {
  .island-portrait:hover,.island-portrait:hover > img { transform:none; }
}
