/* Komeuta Rice & Song Cruise
   Rice-field greens, warm soil and clay, wood-plank accents, hand-drawn frames. */
:root {
  --straw: #f3ead3;
  --straw-2: #e9dcbc;
  --husk: #fbf6e8;
  --field: #5f8a24;
  --field-deep: #33521a;
  --field-night: #1f3312;
  --sprout: #a9c95a;
  --clay: #b8612f;
  --clay-deep: #8a3f1a;
  --chili: #962e1b;
  --soil: #43301f;
  --loam: #6e5640;
  --rule: #c9ae80;
  --wood: #8d6037;
  --wood-dark: #5a3a1c;
  --wood-light: #c4935c;
  --woodgrain:
    repeating-linear-gradient(178deg, rgba(255, 240, 210, .08) 0 2px, transparent 2px 9px, rgba(40, 20, 5, .09) 9px 10px, transparent 10px 19px),
    repeating-linear-gradient(90deg, rgba(40, 20, 5, .06) 0 1px, transparent 1px 140px),
    linear-gradient(180deg, #9a6a3c, #7b4f29);
  --sketch: 18px 6px 22px 8px / 8px 22px 6px 18px;
  --sketch-2: 8px 20px 10px 24px / 22px 8px 18px 6px;
  --drop: 4px 5px 0 rgba(67, 48, 31, .2);
  --title: "Alegreya", Georgia, "Times New Roman", serif;
  --hand: "Caveat", "Segoe Print", "Comic Sans MS", cursive;
  --body: "Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --squiggle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='10' viewBox='0 0 120 10'%3E%3Cpath d='M2 6 C 14 1, 22 9, 34 5 S 56 1, 68 5 S 90 9, 102 4 S 114 3, 118 5' fill='none' stroke='%23b8612f' stroke-width='2.6' stroke-linecap='round'/%3E%3C/svg%3E");
  --rows: repeating-linear-gradient(104deg, transparent 0 26px, rgba(95, 138, 36, .10) 26px 28px);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; background: var(--straw); color: var(--soil); font: 400 1rem/1.68 var(--body); overflow-x: hidden; }
img { max-width: 100%; display: block; }
a { color: var(--clay-deep); text-decoration-thickness: 1.5px; text-underline-offset: 3px; }
a:hover { color: var(--chili); }
h1, h2, h3 { font-family: var(--title); font-weight: 700; line-height: 1.12; margin: 0 0 .5em; color: var(--soil); }
h1 { font-size: clamp(2.2rem, 5.6vw, 3.8rem); }
h2 { font-size: clamp(1.7rem, 3.6vw, 2.4rem); }
h3 { font-size: 1.3rem; }
p { margin: 0 0 1em; }
:focus-visible { outline: 3px dashed var(--clay); outline-offset: 3px; }

.wrap { width: min(1120px, 100% - 32px); margin-inline: auto; }
.narrow { width: min(780px, 100% - 32px); margin-inline: auto; }
.skip { position: absolute; left: -999px; top: 0; background: var(--soil); color: #fff; padding: 8px 14px; z-index: 100; }
.skip:focus { left: 8px; top: 8px; }
.kicker { font: 600 1.45rem/1.1 var(--hand); color: var(--clay); margin: 0 0 .35em; }
.lead { font-size: 1.12rem; color: var(--loam); max-width: 62ch; }
.muted { color: var(--loam); }
.small { font-size: .9rem; }
.nw { white-space: nowrap; }
.hand { font-family: var(--hand); font-weight: 600; }

/* hand-drawn heading underline */
.section-head h2::after, .page-head h1::after { content: ""; display: block; width: 120px; height: 10px; margin-top: 10px; background: var(--squiggle) no-repeat; }

/* the hand-drawn frame */
.frame, .stop-card, .track, .form-card, .faq details, .contact-list div, .help-list li, .games li, .table-wrap, .modal-box, .hotel-tile, .route-mini li .leg, .help-strip .frame-in {
  border: 2px solid var(--soil);
  border-radius: var(--sketch);
  box-shadow: var(--drop);
}

/* ---------- 18+ strip ---------- */
.ribbon { background: var(--chili); color: #fff4e0; font-size: .86rem; }
.ribbon p { margin: 0; padding: 7px 0; text-align: center; }
.ribbon strong { display: inline-block; background: #fff4e0; color: var(--chili); border-radius: 50%; width: 30px; height: 30px; line-height: 30px; text-align: center; font-size: .78rem; margin-right: 8px; vertical-align: middle; }
.ribbon a { color: #fff; font-weight: 600; }

/* ---------- Brand bar + wooden plank nav ---------- */
.brandbar { background: var(--husk) var(--rows); border-bottom: 1px solid var(--rule); }
.brandbar .wrap { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 0; }
.brand { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--soil); }
.brand svg { width: 52px; height: 52px; flex: none; }
.brand-name { display: block; font: 700 2rem/1 var(--title); letter-spacing: .01em; }
.brand-sub { display: block; font: 600 1.15rem/1.1 var(--hand); color: var(--field); margin-top: 2px; }
.brand-note { margin: 0; text-align: right; font-size: .88rem; color: var(--loam); line-height: 1.4; }
.brand-note .hand { font-size: 1.25rem; color: var(--clay); }

.plank { position: sticky; top: 0; z-index: 30; background: var(--woodgrain); border-top: 3px solid var(--wood-dark); border-bottom: 3px solid var(--wood-dark); box-shadow: 0 4px 0 rgba(67, 48, 31, .18); }
.plank .wrap { display: flex; align-items: center; min-height: 54px; }
.nav-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 2px 4px; }
.nav-list a { display: block; color: #fbeed2; text-decoration: none; font-weight: 600; font-size: .9rem; letter-spacing: .06em; text-transform: uppercase; padding: 15px 11px 13px; position: relative; }
.nav-list a:hover { color: #fff; background: rgba(40, 20, 5, .18); }
.nav-list a[aria-current="page"] { color: #fff; background: rgba(40, 20, 5, .3); }
.nav-list a[aria-current="page"]::after { content: ""; position: absolute; left: 10px; right: 10px; bottom: 6px; height: 7px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='8' viewBox='0 0 80 8'%3E%3Cpath d='M2 5 C 14 1, 24 7, 38 4 S 62 1, 78 4' fill='none' stroke='%23a9c95a' stroke-width='2.6' stroke-linecap='round'/%3E%3C/svg%3E") center / 100% 100% no-repeat; }
.menu-toggle { display: none; font: 600 .95rem var(--body); letter-spacing: .06em; text-transform: uppercase; color: #fbeed2; background: transparent; border: 2px solid #fbeed2; border-radius: var(--sketch-2); padding: 7px 16px; margin: 8px 0; cursor: pointer; }

@media (max-width: 1080px) {
  .menu-toggle { display: inline-block; }
  .plank .wrap { flex-direction: column; align-items: stretch; }
  .nav-list { display: none; flex-direction: column; padding: 4px 0 12px; }
  .nav-list.open { display: flex; }
  .nav-list a { padding: 11px 6px; border-top: 1px dashed rgba(251, 238, 210, .3); }
  .nav-list a[aria-current="page"]::after { left: 6px; right: auto; width: 90px; }
  .menu-toggle { align-self: flex-start; }
}
@media (max-width: 640px) { .brand-note { display: none; } .brand svg { width: 44px; height: 44px; } .brand-name { font-size: 1.7rem; } }

/* ---------- Buttons ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; font: 700 1rem/1 var(--body); padding: 14px 22px; border: 2px solid var(--soil); border-radius: var(--sketch-2); background: var(--field); color: #fff; text-decoration: none; cursor: pointer; box-shadow: 3px 3px 0 var(--soil); transition: transform .12s, box-shadow .12s; }
.btn:hover { color: #fff; background: var(--field-deep); transform: translate(-1px, -1px); box-shadow: 4px 4px 0 var(--soil); }
.btn:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 var(--soil); }
.btn-line { background: var(--husk); color: var(--soil); }
.btn-line:hover { background: var(--straw-2); color: var(--soil); }
.btn-gold { background: var(--wood-light); color: var(--soil); }
.btn-gold:hover { background: #d6a670; color: var(--soil); }
.btn-clay { background: var(--clay); }
.btn-clay:hover { background: var(--clay-deep); }
.btn-light { background: transparent; color: #fbeed2; border-color: #fbeed2; box-shadow: 3px 3px 0 rgba(0, 0, 0, .35); }
.btn-light:hover { background: rgba(255, 255, 255, .1); color: #fff; box-shadow: 4px 4px 0 rgba(0, 0, 0, .35); }
.btns { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 1.4em; }

/* ---------- Sections ---------- */
.section { padding: clamp(52px, 8vw, 92px) 0; }
.section.tint { background: var(--straw-2) var(--rows); }
.section.dark { background: var(--field-night); color: #efe6cf; }
.section.dark h2, .section.dark h3 { color: #fff6e2; }
.section.dark .kicker { color: var(--sprout); }
.section.dark a:not(.btn) { color: #f0cf96; }
.section-head { max-width: 700px; margin-bottom: 34px; }
.page-head { background: var(--husk) var(--rows); padding: clamp(40px, 7vw, 76px) 0 clamp(30px, 5vw, 48px); border-bottom: 2px dashed var(--rule); }
.page-head h1 { max-width: 20ch; }

/* ---------- Home: hero over the rice field ---------- */
.hero-field { position: relative; background: var(--field-night); }
.hero-photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .85; }
.hero-field::before { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(31, 51, 18, .78) 0%, rgba(31, 51, 18, .25) 60%, rgba(31, 51, 18, .1) 100%); }
.hero-grid { position: relative; z-index: 1; padding: clamp(48px, 9vw, 110px) 0 clamp(90px, 11vw, 130px); }
.hero-panel { background: var(--husk); max-width: 600px; padding: clamp(24px, 4vw, 40px); border: 2px solid var(--soil); border-radius: var(--sketch); box-shadow: 8px 9px 0 rgba(0, 0, 0, .35); outline: 1.5px solid rgba(67, 48, 31, .35); outline-offset: 6px; }
.hero-panel h1 .hand { color: var(--clay); font-size: 1.15em; margin-right: .18em; }
.hero-panel .lead { font-size: 1.08rem; }
.hero-tags { position: relative; z-index: 2; list-style: none; margin: -46px auto 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.hero-tags li { background: var(--woodgrain); color: #fbeed2; border: 2px solid var(--wood-dark); border-radius: var(--sketch-2); padding: 14px 16px; box-shadow: var(--drop); font-size: .92rem; line-height: 1.35; }
.hero-tags b { display: block; font: 700 1.25rem/1.15 var(--title); color: #fff; }

/* recipe cards (food & music) */
.songbook { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px 24px; }
.track { position: relative; background: var(--husk); padding: 12px 12px 20px; display: flex; flex-direction: column; }
.track::before { content: ""; position: absolute; top: -12px; left: 50%; width: 92px; height: 24px; margin-left: -46px; background: rgba(169, 201, 90, .7); border: 1px solid rgba(67, 48, 31, .25); transform: rotate(-3deg); z-index: 1; }
.track:nth-child(even)::before { transform: rotate(4deg); background: rgba(196, 147, 92, .7); }
.track figure { margin: 0; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 4px 12px 4px 10px; background: var(--straw-2); }
.track figure img { width: 100%; height: 100%; object-fit: cover; }
.track .body { padding: 14px 6px 0; }
.track .no { font: 600 1.2rem var(--hand); color: var(--clay); }
.track h3 { margin: 2px 0 6px; }
.track p { margin: 0; color: var(--loam); }
.songsheet { aspect-ratio: 4 / 3; border-radius: 4px 12px 4px 10px; display: grid; place-items: center; color: #fbeed2;
  background: repeating-linear-gradient(180deg, transparent 0 20px, rgba(251, 238, 210, .35) 20px 21.5px) 0 40% / 100% 110px no-repeat, var(--woodgrain); }
.songsheet span { font: 600 clamp(1.5rem, 3vw, 2rem)/1.1 var(--hand); text-align: center; background: var(--wood-dark); border-radius: var(--sketch-2); padding: 8px 18px; }

/* compact route on the home page: a bamboo pole */
.route-mini { list-style: none; margin: 0; padding: 0; position: relative; max-width: 760px; }
.route-mini::before { content: ""; position: absolute; left: 20px; top: 8px; bottom: 8px; width: 10px; border-radius: 6px; background: var(--woodgrain); border: 1px solid var(--wood-dark); }
.route-mini li { position: relative; padding: 0 0 18px 66px; }
.route-mini .knot { position: absolute; left: 6px; top: 8px; width: 38px; height: 38px; border-radius: 50%; background: var(--husk); border: 3px solid var(--wood-dark); display: grid; place-items: center; font: 700 1rem var(--title); }
.route-mini li.stay .knot { background: var(--sprout); }
.route-mini .leg { background: var(--husk); padding: 12px 16px; }
.route-mini .leg strong { font: 700 1.15rem var(--title); }
.route-mini .leg .when { float: right; font: 600 1.15rem var(--hand); color: var(--field-deep); margin-left: 10px; }
.route-mini .leg p { margin: 2px 0 0; color: var(--loam); font-size: .95rem; clear: both; }

/* hotel tiles */
.hotel-row { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.hotel-tile { background: var(--husk); padding: 20px 22px; }
.hotel-tile h3 { margin-bottom: 4px; }
.hotel-tile .where { font: 600 1.2rem var(--hand); color: var(--field-deep); margin: 0 0 10px; }
.hotel-tile ul { margin: 0; padding-left: 1.1em; }

/* help strip */
.help-strip .frame-in { background: var(--husk); padding: 22px 26px; display: grid; grid-template-columns: 1.3fr 1fr; gap: 18px 30px; align-items: center; }
.help-strip p { margin: 0; }

/* ---------- Ticket labels (rice-sack style) ---------- */
.stubs { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.stub { position: relative; padding: 30px 28px 28px; border: 2px solid var(--soil); border-radius: var(--sketch-2); box-shadow: var(--drop); outline: 2px dashed var(--clay); outline-offset: -11px;
  background: repeating-linear-gradient(45deg, rgba(110, 86, 64, .05) 0 2px, transparent 2px 6px), repeating-linear-gradient(-45deg, rgba(110, 86, 64, .05) 0 2px, transparent 2px 6px), #f7eed8; }
.stub.casino { background: repeating-linear-gradient(45deg, rgba(110, 86, 64, .06) 0 2px, transparent 2px 6px), #efd9a6; outline-color: var(--chili); }
.stub-head { margin-bottom: 14px; }
.stub h2, .stub h3 { margin: 0; font-size: 1.6rem; }
.stub .tag { font: 600 1.25rem/1.2 var(--hand); color: var(--field-deep); margin: 0; }
.stub.casino .tag { color: var(--chili); }
.stub ul { margin: 0 0 16px; padding-left: 1.1em; }
.stub li { margin-bottom: 6px; }
.prices { width: 100%; border-collapse: collapse; margin: 6px 0 18px; }
.prices td { padding: 9px 0; border-bottom: 1.5px dashed var(--rule); }
.prices td:last-child { text-align: right; font: 700 1.3rem var(--title); white-space: nowrap; }
.seats { display: flex; align-items: center; gap: 12px; margin: 0 0 14px; font-size: .95rem; }
.seat-bar { flex: 1; height: 10px; background: #e2c88a; border: 1.5px solid var(--soil); border-radius: 8px 3px 8px 3px; overflow: hidden; }
.seat-bar i { display: block; height: 100%; background: var(--chili); }
.from { font: 700 1.9rem var(--title); }

/* ---------- Route page: wooden pole timeline ---------- */
.river { list-style: none; margin: 0; padding: 0; position: relative; }
.river::before { content: ""; position: absolute; left: 21px; top: 10px; bottom: 10px; width: 12px; border-radius: 7px; background: var(--woodgrain); border: 1px solid var(--wood-dark); }
.river > li { position: relative; padding: 0 0 32px 76px; }
.river > li:last-child { padding-bottom: 0; }
.grain { position: absolute; left: 3px; top: 2px; width: 48px; height: 48px; border-radius: 50%; background: var(--husk); border: 3px solid var(--wood-dark); display: grid; place-items: center; font: 700 1.15rem var(--title); color: var(--soil); }
.river .sea .grain { background: #dbe7c2; border-style: dashed; }
.river .hotel .grain { background: var(--sprout); }
.stop-card { background: var(--husk); padding: 18px 22px; }
.stop-top { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 16px; }
.stop-top h2 { font-size: 1.5rem; margin: 0; }
.chip { display: inline-block; font: 600 1.15rem/1.2 var(--hand); padding: 2px 12px; border: 1.5px solid var(--soil); border-radius: var(--sketch-2); background: var(--straw); color: var(--soil); white-space: nowrap; }
.chip.red { background: var(--clay); border-color: var(--clay-deep); color: #fff; }
.stop-card .country { color: var(--loam); font-size: .92rem; margin: 2px 0 8px; }
.stop-card p:last-child { margin-bottom: 0; }
.hotel-box { margin-top: 14px; border-top: 1.5px dashed var(--rule); padding-top: 14px; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px 18px; }
.hotel-box div span { display: block; font-size: .76rem; letter-spacing: .08em; text-transform: uppercase; color: var(--loam); }
.hotel-box div strong { font-weight: 600; }
.hotel-rule { grid-column: 1 / -1; }
.passport { color: var(--chili); font-weight: 600; }
.hotel-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }

/* ---------- Tables ---------- */
.table-wrap { overflow-x: auto; background: var(--husk); }
table.data { width: 100%; border-collapse: collapse; min-width: 640px; }
table.data th, table.data td { text-align: left; padding: 13px 16px; border-bottom: 1.5px dashed var(--rule); vertical-align: top; }
table.data thead th { background: var(--woodgrain); color: #fbeed2; font-size: .86rem; letter-spacing: .05em; text-transform: uppercase; border-bottom: 2px solid var(--wood-dark); }
table.data tr:last-child td { border-bottom: 0; }

/* ---------- Casino page, side boards ---------- */
.split { display: grid; grid-template-columns: 1.3fr .7fr; gap: clamp(24px, 5vw, 56px); align-items: start; }
.rules { list-style: none; padding: 0; margin: 0 0 1.5em; counter-reset: r; }
.rules li { position: relative; padding: 10px 0 10px 46px; border-bottom: 1.5px dashed var(--rule); counter-increment: r; }
.rules li::before { content: counter(r); position: absolute; left: 0; top: 8px; width: 32px; height: 32px; border-radius: 50%; border: 2px solid var(--soil); background: var(--sprout); color: var(--soil); font: 700 1rem/28px var(--title); text-align: center; }
.games { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin: 0 0 1.5em; padding: 0; list-style: none; }
.games li { background: var(--husk); padding: 16px; text-align: center; }
.games b { display: block; font: 700 2rem/1 var(--title); color: var(--clay); }
.side { background: var(--woodgrain); color: #fbeed2; border: 2px solid var(--wood-dark); border-radius: var(--sketch-2); padding: 24px; box-shadow: var(--drop); position: sticky; top: 76px; }
.side h3 { color: #fff; }
.side a:not(.btn) { color: #ffe0a8; }
.figures { display: grid; gap: 10px; margin: 0; }
.figures div { background: rgba(251, 238, 210, .94); color: var(--soil); border-radius: var(--sketch-2); border: 1.5px solid var(--wood-dark); padding: 10px 14px; }
.figures dt { font-size: .76rem; letter-spacing: .08em; text-transform: uppercase; color: var(--loam); }
.figures dd { margin: 2px 0 0; font: 700 1.45rem/1.15 var(--title); color: var(--soil); }
.alert { border: 2px solid var(--chili); background: #f6e0d3; border-radius: var(--sketch); padding: 16px 20px; display: flex; gap: 14px; align-items: flex-start; box-shadow: var(--drop); }
.alert p { margin: 0; }
.badge18 { display: inline-grid; place-items: center; width: 52px; height: 52px; border-radius: 50%; background: var(--chili); color: #fff4e0; font: 700 1rem var(--body); border: 2px dashed #fff4e0; outline: 2px solid var(--chili); flex: none; }
.alert .badge18 { width: 44px; height: 44px; font-size: .88rem; }
.note { border: 1.5px dashed var(--clay); background: rgba(196, 147, 92, .14); padding: 12px 16px; border-radius: var(--sketch-2); font-size: .95rem; }
.section.dark .note { background: rgba(255, 255, 255, .06); border-color: var(--sprout); }

/* ---------- Responsible gaming ---------- */
.help-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; }
.help-list li { background: var(--husk); padding: 16px 18px; }
.help-list strong { font-family: var(--title); font-size: 1.15rem; display: block; margin-bottom: 4px; }
.checklist { padding-left: 0; list-style: none; }
.checklist li { position: relative; padding-left: 28px; margin-bottom: 9px; }
.checklist li::before { content: ""; position: absolute; left: 2px; top: .55em; width: 13px; height: 8px; border-left: 3px solid var(--field); border-bottom: 3px solid var(--field); transform: rotate(-45deg); }

/* ---------- Form ---------- */
.form-card { background: var(--husk); padding: clamp(22px, 4vw, 36px); }
.field { margin-bottom: 16px; border: 0; padding: 0; min-width: 0; }
.field label, .field legend { display: block; font-weight: 600; font-size: .93rem; margin-bottom: 6px; padding: 0; }
.field input[type="text"], .field input[type="email"], .field input[type="tel"], .field select, .field textarea {
  width: 100%; font: inherit; padding: 12px 14px; border: 2px solid var(--loam); border-radius: 10px 4px 12px 5px; background: #fffdf6; color: var(--soil); }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--field); outline: 3px solid rgba(95, 138, 36, .25); outline-offset: 0; }
.field-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.field-row.two { grid-template-columns: 1fr 1fr; }
.choice { display: flex; gap: 10px; align-items: flex-start; border: 2px dashed var(--rule); border-radius: var(--sketch-2); padding: 12px 14px; margin-bottom: 8px; cursor: pointer; background: #fffdf6; font-weight: 500 !important; }
.choice input { margin-top: 5px; accent-color: var(--field); }
.choice:has(input:checked) { border-style: solid; border-color: var(--field); background: #eef4dc; }
.choice:has(input:disabled) { opacity: .55; cursor: not-allowed; }
.check { display: flex; gap: 10px; align-items: flex-start; font-size: .93rem; margin: 6px 0 18px; }
.check input { margin-top: 5px; accent-color: var(--field); }
.invalid { border-color: var(--chili) !important; }
.form-msg { margin: 14px 0 0; padding: 12px 16px; border-radius: var(--sketch-2); font-size: .95rem; border: 1.5px solid currentColor; }
.form-msg.error { background: #f6e0d3; color: var(--chili); }
.form-msg.ok { background: #e7f0d2; color: var(--field-deep); }
.form-msg.info { background: #f6e9c4; color: #5e4210; }
.total { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; background: var(--straw-2); border: 1.5px dashed var(--loam); border-radius: var(--sketch-2); padding: 12px 16px; margin: 4px 0 16px; }
.total strong { font: 700 1.6rem var(--title); }

/* ---------- Modal ---------- */
.modal { position: fixed; inset: 0; background: rgba(31, 22, 12, .66); display: grid; place-items: center; padding: 16px; z-index: 60; }
.modal[hidden] { display: none; }
.modal-box { background: var(--husk); max-width: 460px; width: 100%; padding: 30px 28px 26px; text-align: center; box-shadow: 8px 9px 0 rgba(0, 0, 0, .35); }
.modal-box .badge18 { margin: 0 auto 14px; }
.modal-box .btns { justify-content: center; }
body.no-scroll { overflow: hidden; }

/* ---------- Added pages ---------- */
.ph { background: #f6e9c4; color: #5e4210; border: 1px dashed #b88a2e; border-radius: 4px; padding: 0 4px; font-weight: 600; }
.photo-wide { border: 2px solid var(--soil); border-radius: var(--sketch); overflow: hidden; box-shadow: var(--drop); background: var(--field-night); }
.photo-wide img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.faq details { background: var(--husk); margin-bottom: 14px; }
.faq summary { cursor: pointer; list-style: none; padding: 16px 54px 16px 20px; font: 700 1.15rem/1.35 var(--title); position: relative; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; position: absolute; right: 16px; top: 13px; width: 30px; height: 30px; border-radius: 50%; border: 2px solid var(--soil); background: var(--sprout); color: var(--soil); font: 700 1.1rem/26px var(--body); text-align: center; }
.faq details[open] summary::after { content: "–"; background: var(--wood-light); }
.faq details p { padding: 0 20px 18px; margin: 0; color: var(--loam); }
.doc h2 { font-size: 1.45rem; margin-top: 1.6em; }
.doc h2:first-child { margin-top: 0; }
.doc dl { margin: 0 0 1em; }
.doc dt { font-weight: 700; margin-top: 10px; }
.doc dd { margin: 2px 0 0 0; color: var(--loam); }
.contact-list { display: grid; gap: 14px; margin: 0; }
.contact-list div { background: var(--husk); padding: 14px 18px; }
.contact-list dt { font: 600 1.2rem/1.2 var(--hand); color: var(--clay); }
.contact-list dd { margin: 4px 0 0; font-weight: 600; overflow-wrap: anywhere; }

/* ---------- Footer ---------- */
.soil { background: var(--soil); color: #e3d6bd; }
.soil a { color: #f0cf96; }
.rg-box { background: var(--field-night); padding: 26px 0; }
.rg-frame { display: flex; gap: 18px; align-items: center; border: 2px dashed rgba(169, 201, 90, .6); border-radius: var(--sketch); padding: 16px 20px; color: #efe6cf; }
.rg-frame p { margin: 0; font-size: .96rem; }
.soil-top { height: 14px; background: var(--woodgrain); border-top: 2px solid var(--wood-dark); border-bottom: 2px solid var(--wood-dark); }
.soil-grid { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1fr; gap: 28px; padding: 40px 0 26px; }
.soil h3 { color: #fff4e0; font-size: 1.15rem; }
.soil ul { list-style: none; margin: 0; padding: 0; }
.soil li { margin-bottom: 6px; }
.legal { border-top: 1px dashed rgba(227, 214, 189, .3); padding: 18px 0 28px; font-size: .84rem; color: #bfae92; margin: 0; }

/* ---------- Responsive ---------- */
@media (max-width: 960px) {
  .split, .help-strip .frame-in { grid-template-columns: 1fr; }
  .songbook { grid-template-columns: 1fr 1fr; }
  .hero-tags { grid-template-columns: 1fr 1fr; }
  .soil-grid { grid-template-columns: 1fr 1fr; }
  .side { position: static; }
}
@media (max-width: 760px) {
  .hotel-row, .hotel-cards, .stubs { grid-template-columns: 1fr; }
  .hero-photo { position: static; height: 230px; opacity: 1; }
  .hero-field::before { display: none; }
  .hero-grid { padding: 0 0 70px; margin-top: -40px; }
  .hero-panel { box-shadow: 5px 6px 0 rgba(0, 0, 0, .35); }
}
@media (max-width: 640px) {
  .ribbon { font-size: .76rem; line-height: 1.45; }
  .ribbon p { padding: 6px 0; }
  .songbook, .field-row, .field-row.two, .games, .soil-grid, .hero-tags { grid-template-columns: 1fr; }
  .river::before { left: 15px; }
  .river > li { padding-left: 56px; }
  .grain { width: 40px; height: 40px; font-size: 1rem; left: 0; }
  .route-mini li { padding-left: 58px; }
  .route-mini .leg .when { float: none; display: block; margin: 0; }
  .rg-frame { align-items: flex-start; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } .btn { transition: none; } }
