/* Homepage only. Editorial artwork and titles must always remain complete. */
body.gem-renewal { background:#fff; color:#183d40; font-family:Arial,Helvetica,sans-serif; }
.gem-renewal #main_contents { width:100%; max-width:none; margin:0; padding:0; }
.gem-renewal #site_loader_overlay { display:none !important; }
.gem-main { --ink:#183d40; --muted:#526b6d; --green:#087567; --line:#d9e4df; font-size:16px; line-height:1.65; }
.gem-main *, .gem-main *::before, .gem-main *::after { box-sizing:border-box; }
.gem-main a { color:inherit; text-decoration:none; }
.gem-main a:hover { color:var(--green); }
.gem-main a:focus-visible, .gem-main button:focus-visible, .gem-main input:focus-visible, .gem-main summary:focus-visible { outline:3px solid #bc6a20; outline-offset:5px; }
.gem-main h1, .gem-main h2, .gem-main h3, .gem-main p, .gem-main figure { margin:0; padding:0; }
.gem-main h1, .gem-main h2 { letter-spacing:-.045em; }
.gem-main h2 { font-size:clamp(29px,3.3vw,43px); line-height:1.16; font-weight:700; }
.gem-main h3 { font-size:21px; line-height:1.4; }
.gem-main p { color:var(--muted); }
.gem-main img { display:block; max-width:100%; height:auto; }
.gem-main section[id] { scroll-margin-top:100px; }
.gem-wrap { width:min(1240px,92%); margin-inline:auto; }
.gem-portal { display:flex; align-items:center; justify-content:space-between; gap:20px; padding-block:21px; font-size:11px; font-weight:700; letter-spacing:.1em; }
.gem-portal a { padding-block:8px; letter-spacing:0; font-size:13px; }
.gem-portal > span { color:var(--muted); margin-left:auto; }
.gem-hero { display:grid; grid-template-columns:1fr 1.1fr; align-items:center; gap:56px; padding:30px 0 58px; }
.gem-main .gem-eyebrow { display:block; color:var(--green); font-size:11px; font-weight:700; letter-spacing:.13em; line-height:1.6; margin-bottom:14px; }
.gem-main h1 { font-size:clamp(48px,5.4vw,73px); line-height:1.05; margin-bottom:24px; font-weight:700; }
.gem-main h1 em { color:var(--green); font-family:Georgia,serif; font-weight:400; }
.gem-main .gem-lead { font-size:17px; line-height:1.8; max-width:490px; }
.gem-actions { display:flex; flex-wrap:wrap; align-items:center; gap:18px 24px; margin-top:28px; }
.gem-main .gem-button { display:inline-flex; justify-content:center; align-items:center; gap:24px; min-height:50px; background:var(--green); color:#fff; border-radius:6px; padding:14px 22px; font-size:14px; font-weight:700; }
.gem-main .gem-button:hover { background:#075b51; color:#fff; }
.gem-main .gem-text-link { display:inline-block; font-size:14px; font-weight:700; padding:10px 0; border-bottom:1px solid currentColor; }
.gem-main .gem-hero-note { font-size:12px; margin-top:24px; }
.gem-hero-visual { min-width:0; }
.gem-hero-visual > img { width:100%; height:auto; border-radius:80px 8px 8px 8px; }
.gem-hero-visual figcaption { display:flex; gap:20px; align-items:center; justify-content:space-between; padding:18px 0 0; font-size:12px; }
.gem-hero-visual figcaption strong { display:block; font-size:9px; letter-spacing:.13em; margin-bottom:5px; color:var(--green); }
.gem-hero-visual figcaption a { font-weight:700; padding-block:10px; }
.gem-search-band { padding:28px 32px; background:#edf4f0; border-radius:8px; display:grid; grid-template-columns:1fr 1.4fr; align-items:center; gap:28px; }
.gem-search-band .gem-eyebrow { margin-bottom:5px; font-size:10px; }
.gem-search-band p { font-size:20px; color:var(--ink); font-weight:700; }
.gem-search-band form { display:flex; border:1px solid #b6cec2; background:#fff; border-radius:6px; padding:5px; gap:5px; }
.gem-search-band input { flex:1; min-width:0; border:0; width:100%; background:#fff; padding:12px; font:inherit; font-size:14px; color:var(--ink); border-radius:4px; }
.gem-search-band button { cursor:pointer; border:0; border-radius:4px; background:var(--ink); color:#fff; padding:14px 18px; font:700 13px Arial,sans-serif; }
.gem-sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.gem-section { padding-block:80px; }
.gem-section-head { display:flex; align-items:flex-end; justify-content:space-between; gap:30px; margin-bottom:32px; }
.gem-section-head > p { font-size:14px; max-width:340px; }
.gem-main .gem-section-intro { margin:-14px 0 30px; max-width:700px; }
.gem-islands { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; }
.gem-island-card { position:relative; isolation:isolate; min-width:0; min-height:440px; padding:26px; border-radius:10px; background:#183d40 center/cover no-repeat; display:flex; flex-direction:column; justify-content:space-between; gap:150px; color:#fff; }
.gem-island-card::before { content:""; position:absolute; inset:0; z-index:-1; border-radius:inherit; background:linear-gradient(180deg,rgba(9,30,34,.18) 10%,rgba(9,30,34,.48) 38%,rgba(9,30,34,.94) 72%); }
.gem-island-okinawa { background-image:url('gem-card-okinawa.jpg'); }
.gem-island-miyako { background-image:url('gem-card-miyako.jpg'); }
.gem-island-ishigaki { background-image:url('gem-card-ishigaki.jpg'); }
.gem-island-no { align-self:flex-start; padding:6px 10px; border-radius:4px; background:rgba(9,30,34,.78); font-size:9px; letter-spacing:.1em; font-weight:700; }
.gem-islands h3 { color:#fff; font-family:Georgia,serif; font-weight:400; font-size:38px; margin:0 0 12px; letter-spacing:-.02em; text-shadow:0 1px 4px rgba(0,0,0,.3); }
.gem-islands p { color:#fff; font-size:14px; line-height:1.65; text-shadow:0 1px 4px rgba(0,0,0,.35); }
.gem-island-actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:22px; }
.gem-island-actions a { display:inline-flex; align-items:center; justify-content:center; gap:12px; min-height:46px; padding:11px 14px; border:1px solid #fff; border-radius:5px; font-size:12px; font-weight:700; }
.gem-island-actions .gem-island-book { background:#fff; color:#183d40; }
.gem-island-actions .gem-island-guide { color:#fff; background:rgba(9,30,34,.45); }
.gem-island-actions a:hover { background:#d8ebbc; border-color:#d8ebbc; color:#183d40; }
.gem-regional-booking { display:flex; align-items:center; flex-wrap:wrap; gap:12px 24px; padding:24px; margin-top:24px; background:#edf4f0; border-radius:8px; }
.gem-regional-booking > span { margin-right:auto; font-size:14px; font-weight:700; }
.gem-regional-booking a { display:inline-flex; align-items:center; min-height:44px; padding:9px 14px; border:1px solid #adc8bb; border-radius:5px; font-size:13px; font-weight:700; }
.gem-region-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); margin-top:24px; border-top:1px solid var(--line); }
.gem-region-entry { min-width:0; padding:24px 20px 24px 0; border-bottom:1px solid var(--line); }
.gem-region-entry h3 { font-size:19px; margin-bottom:6px; }
.gem-region-entry h3 a { display:inline-block; padding:5px 0; }
.gem-region-entry h3 span { font-size:14px; color:var(--green); margin-left:5px; }
.gem-region-entry p { font-size:13px; }
.gem-region-entry nav { display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }
.gem-region-entry nav a { display:inline-flex; align-items:center; min-height:42px; padding:9px 11px; border:1px solid #bdcec4; border-radius:5px; font-size:12px; font-weight:700; background:#f3f7f4; }
.gem-region-entry nav a:first-child { background:#087567; color:#fff; border-color:#087567; }
.gem-region-entry nav a:hover { background:#d8ebbc; color:#183d40; border-color:#b9d59a; }
.gem-region-detail { padding:24px 0 0; }
.gem-region-detail h3 { font-size:14px; margin-bottom:12px; }
.gem-region-detail nav, .gem-airport nav { display:flex; flex-wrap:wrap; gap:10px; }
.gem-region-detail a, .gem-airport nav a { padding:10px 16px; border:1px solid var(--line); border-radius:24px; font-size:12px; min-height:44px; }
.gem-tint { background:#f6f7f2; }
.gem-story-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:36px 24px; }
.gem-story { min-width:0; }
.gem-story > a { display:block; }
.gem-story-image { background:#e9eeea; border-radius:8px; aspect-ratio:1; display:flex; align-items:center; justify-content:center; }
.gem-main .gem-story-image img { width:100%; height:100%; max-height:100%; object-fit:contain; border-radius:8px; }
.gem-story-copy { padding:20px 0 0; }
.gem-story .gem-eyebrow { margin-bottom:8px; font-size:10px; }
.gem-main .gem-story h3 { font-size:20px; font-weight:700; line-height:1.45; white-space:normal; overflow:visible; text-overflow:clip; display:block; height:auto; max-height:none; -webkit-line-clamp:unset; overflow-wrap:anywhere; }
.gem-read { display:block; margin-top:15px; font-size:12px; color:var(--green); font-weight:700; }
.gem-essentials { display:grid; grid-template-columns:.8fr 1.4fr; gap:80px; }
.gem-essentials-intro > p { margin:24px 0 15px; }
.gem-prep-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:26px; }
.gem-prep-grid > a { border-top:1px solid var(--line); padding-top:20px; }
.gem-prep-no { display:flex; justify-content:space-between; color:var(--green); font:italic 24px Georgia,serif; margin-bottom:18px; }
.gem-prep-no > span { font:18px Arial,sans-serif; }
.gem-prep-grid h3 { font-size:19px; margin-bottom:9px; }
.gem-prep-grid p { font-size:14px; }
.gem-airport { display:flex; justify-content:space-between; gap:28px; align-items:center; padding:28px 32px; border:1px solid var(--line); border-radius:8px; }
.gem-airport .gem-eyebrow { font-size:9px; margin-bottom:4px; }
.gem-airport h3 { font-size:21px; }
.gem-airport nav { justify-content:flex-end; }
.gem-topics { background:#edf4f0; border-radius:8px; padding:38px; display:grid; grid-template-columns:.9fr 1.1fr; gap:50px; }
.gem-topics h2 { font-size:32px; }
.gem-topics nav { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 24px; }
.gem-topics a { display:block; padding:12px 0; border-bottom:1px solid #c9dbd0; font-size:13px; }
.gem-topics strong { display:flex; justify-content:space-between; gap:10px; }
.gem-faq { border-top:1px solid var(--line); padding-block:50px 70px; display:grid; grid-template-columns:.8fr 1.2fr; gap:80px; }
.gem-faq h2 { font-size:32px; }
.gem-faq details { border-bottom:1px solid var(--line); padding:18px 0; }
.gem-faq summary { cursor:pointer; font-weight:700; line-height:1.5; padding-right:12px; }
.gem-faq details p { font-size:14px; padding:16px 0 4px; }
.gem-faq details a { text-decoration:underline; color:var(--green); }
.gem-booking { background:#183d40; color:#fff; border-radius:8px; padding:42px; display:flex; align-items:center; justify-content:space-between; gap:40px; margin-bottom:70px; }
.gem-booking .gem-eyebrow { color:#bce2ce; }
.gem-booking h2 { font-size:34px; }
.gem-booking p { color:#d6e4df; margin-top:13px; }
.gem-booking .gem-actions { flex-direction:column; align-items:flex-start; margin:0; flex-shrink:0; }
.gem-booking .gem-button { background:#d8ebbc; color:#183d40; }
.gem-booking .gem-text-link { color:#fff; }
@media (max-width:1100px) {
  .gem-hero { gap:32px; }
  .gem-essentials, .gem-faq { gap:40px; }
  .gem-search-band { grid-template-columns:1fr 1.2fr; }
  .gem-airport { align-items:flex-start; flex-direction:column; }
  .gem-airport nav { justify-content:flex-start; }
}
@media (max-width:960px) {
  .gem-hero { grid-template-columns:1fr 1fr; }
  .gem-main h1 { font-size:50px; }
  .gem-search-band { grid-template-columns:1fr; gap:18px; }
  .gem-islands { gap:14px; }
  .gem-island-card { padding:20px; }
  .gem-islands h3 { font-size:30px; }
  .gem-story-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .gem-essentials { grid-template-columns:1fr; }
  .gem-essentials-intro { max-width:600px; }
  .gem-topics { gap:30px; }
  .gem-booking { flex-direction:column; align-items:flex-start; }
  .gem-booking .gem-actions { flex-direction:row; flex-wrap:wrap; }
}
@media (max-width:600px) {
  .gem-wrap { width:90%; }
  .gem-portal { padding-block:12px; gap:12px; }
  .gem-portal > span { font-size:8px; max-width:90px; text-align:right; }
  .gem-hero { grid-template-columns:1fr; gap:30px; padding:22px 0 35px; }
  .gem-main h1 { font-size:clamp(45px,12vw,65px); }
  .gem-main .gem-lead { font-size:16px; }
  .gem-hero .gem-eyebrow { font-size:9px; }
  .gem-hero-visual > img { border-top-left-radius:48px; }
  .gem-hero-visual figcaption { gap:12px; font-size:11px; }
  .gem-hero-visual figcaption a { max-width:95px; }
  .gem-main .gem-hero-note { font-size:11px; }
  .gem-actions { gap:12px 20px; }
  .gem-search-band { padding:22px; }
  .gem-search-band p { font-size:18px; }
  .gem-search-band form { flex-direction:column; }
  .gem-search-band input { min-height:48px; }
  .gem-search-band button { min-height:46px; }
  .gem-section { padding-block:52px; }
  .gem-section-head { align-items:flex-start; flex-direction:column; gap:18px; margin-bottom:24px; }
  .gem-main .gem-section-intro { font-size:14px; margin:0 0 24px; }
  .gem-islands { grid-template-columns:1fr; gap:14px; }
  .gem-island-card { padding:24px; min-height:420px; gap:145px; }
  .gem-islands h3 { font-size:35px; }
  .gem-regional-booking { align-items:flex-start; flex-direction:column; padding:22px; gap:12px; }
  .gem-region-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 16px; }
  .gem-region-entry { padding:20px 0; }
  .gem-region-entry h3 { font-size:17px; }
  .gem-region-entry p { font-size:12px; }
  .gem-region-entry nav { flex-direction:column; align-items:flex-start; }
  .gem-region-detail nav { gap:8px; }
  .gem-story-grid { grid-template-columns:1fr; gap:32px; }
  .gem-main .gem-story h3 { font-size:20px; }
  .gem-prep-grid { gap:28px 20px; }
  .gem-prep-grid h3 { font-size:18px; }
  .gem-prep-grid p { font-size:13px; }
  .gem-airport { padding:24px; }
  .gem-topics { display:block; padding:28px 24px; }
  .gem-topics nav { margin-top:24px; gap:0 16px; }
  .gem-faq { grid-template-columns:1fr; gap:24px; padding-block:36px 48px; }
  .gem-booking { padding:30px 24px; margin-bottom:48px; gap:25px; }
  .gem-booking h2 { font-size:30px; }
  .gem-booking .gem-actions { flex-direction:column; }
}
@media (prefers-reduced-motion:reduce) { .gem-main *, .gem-main *::before, .gem-main *::after { scroll-behavior:auto; transition:none; } }
