:root{
  --bg:#fafbfd;--surface:#ffffff;--surface-soft:#f6f9fc;--line:#e4ecf2;--ink:#16263a;--ink-soft:#5d6f83;--navy:#17385e;--navy-2:#214b76;--red:#d80a21;--red-soft:#fff0f3;--gold:#d89a18;--blue-soft:#edf7ff;--pink:#fff8f8;--shadow:0 20px 60px rgba(20,48,75,.08);--radius:28px;--container:1180px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:linear-gradient(180deg,#fff8fa 0,#fafbfd 100%);color:var(--ink);font-family:Inter,Avenir Next,Avenir,Segoe UI,Helvetica Neue,Arial,"Hiragino Sans","Yu Gothic","Noto Sans CJK JP","Apple SD Gothic Neo",sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{text-decoration:none;color:inherit}img{display:block;max-width:100%}
.container{width:min(calc(100% - 40px),var(--container));margin:auto}
.section{padding:52px 0}
.eyebrow{margin:0 0 12px;font-size:.78rem;font-weight:900;letter-spacing:.18em;text-transform:uppercase;color:var(--red)}
.section-copy h2,.section-heading h2,.contact h2{margin:0 0 14px;color:var(--navy);font-size:clamp(2.1rem,4vw,3.45rem);line-height:1.03;letter-spacing:-.05em}
.section-lead{font-size:1.09rem;line-height:1.72;color:var(--ink-soft);max-width:620px}
.section-heading{text-align:center;max-width:760px;margin:0 auto 34px}.section-heading.compact h2{font-size:clamp(2.2rem,4vw,3.25rem)}
.button{display:inline-flex;align-items:center;justify-content:center;padding:14px 22px;border-radius:999px;background:linear-gradient(135deg,var(--red),#ba081b);color:#fff;font-weight:850;letter-spacing:-.01em;box-shadow:0 14px 32px rgba(216,10,33,.18)}.button:hover,.button:focus,.button:visited{color:rgba(255,255,255,.96)}.site-header .button-small:hover,.site-header .button-small:focus{filter:brightness(1.04)}.button-soft{background:linear-gradient(135deg,#17385e,#29537e);box-shadow:0 14px 28px rgba(23,56,94,.16)}
.button-small{padding:11px 18px;font-size:.94rem}

.site-header{background:#fff8fa;border-bottom:0;position:sticky;top:0;z-index:60;padding:16px 0 2px}
.nav-wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:68px;padding:0;border-radius:0;background:transparent;backdrop-filter:none;box-shadow:none}
.brand-cluster{display:flex;align-items:center;gap:18px;min-width:0}.brand{display:flex;align-items:center;gap:12px;min-width:0}.brand img{width:56px;height:56px;object-fit:contain}.brand-word{font-size:1.52rem;font-weight:850;letter-spacing:-.03em;color:var(--navy);white-space:nowrap}
.nav-links{display:flex;align-items:center;gap:24px;font-weight:700;color:#44576b}.nav-links a:hover{color:var(--red)}
.menu-toggle{display:none;width:44px;height:44px;border:0;border-radius:14px;background:#f3f6f9}.menu-toggle span{display:block;height:2px;background:#172638;margin:7px 8px;border-radius:2px}
.language-dropdown{position:relative;margin-left:8px}.language-trigger{display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border-radius:999px;border:0;background:#f4f7fb;color:var(--navy);font:inherit;font-weight:700;cursor:pointer;box-shadow:none}.language-label{white-space:nowrap}.language-menu{position:absolute;top:calc(100% + 10px);left:0;min-width:170px;padding:8px;background:#fff;border:1px solid #eef2f6;border-radius:18px;box-shadow:0 18px 40px rgba(20,48,75,.10);display:none}.language-dropdown.open .language-menu{display:block}.language-option{width:100%;display:flex;align-items:center;gap:10px;padding:10px 12px;border:0;background:transparent;border-radius:12px;text-align:left;font:inherit;font-weight:700;color:var(--navy);cursor:pointer}.language-option.active,.language-option:hover{background:#f4f7fb}

.hero{padding:8px 0 42px;background:radial-gradient(circle at 8% 0%,#fff5f7 0,#fff 34%,#fff 100%)}
.hero-stage{position:relative;min-height:620px;border-radius:42px;overflow:hidden;box-shadow:var(--shadow);background:#e9f5ff}
.hero-photo-main{position:absolute;inset:0;background:url('../assets/images/hero-beach-placeholder.jpg') center center/cover no-repeat;overflow:hidden}.hero-photo-main img{width:100%;height:100%;object-fit:cover;filter:saturate(1.06) contrast(1.05);opacity:0;transition:opacity 1.15s ease}.hero-photo-main img.is-loaded{opacity:1}.hero-photo-main::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.74) 0%,rgba(255,255,255,.56) 35%,rgba(255,255,255,.07) 65%,rgba(255,255,255,.02) 100%),linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.1))}
.hero-copy{position:absolute;left:56px;top:52px;z-index:2;max-width:540px}.hero-copy h1{margin:0;font-family:Georgia,"Times New Roman",serif;font-size:clamp(3rem,5vw,4.8rem);line-height:.96;letter-spacing:-.06em;color:#122a47;max-width:500px}.hero-copy h1 span{color:var(--red)}
.hero-actions{display:none}.hero-link{font-weight:800;color:var(--navy);padding:10px 0}.hero-link:hover{color:var(--red)}
.hero-attraction-card{display:none}
.voucher-ticket{position:absolute;left:38px;bottom:28px;z-index:2;width:410px;display:grid;grid-template-columns:1fr 122px;border-radius:26px;overflow:hidden;background:#fff;border:1px solid #ecd6db;box-shadow:0 18px 42px rgba(20,48,75,.14)}.voucher-ticket::before,.voucher-ticket::after{display:none}.ticket-main{padding:20px 24px;background:linear-gradient(180deg,#fff 0,#fffafb 100%)}.ticket-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.ticket-label{font-size:.76rem;font-weight:900;letter-spacing:.14em;color:#7d4151}.ticket-type{padding:7px 11px;border-radius:999px;background:#fff1f3;color:var(--red);font-size:.72rem;font-weight:850}.ticket-main h3{margin:0 0 6px;font-size:1.22rem;letter-spacing:-.02em;color:var(--navy)}.ticket-offer{font-size:3rem;line-height:.95;font-weight:900;letter-spacing:-.07em;color:var(--red)}.ticket-main p{margin:12px 0 16px;color:#66778a;font-size:.82rem;line-height:1.45;max-width:290px}.ticket-meta{display:flex;justify-content:flex-start;gap:12px;font-size:.74rem;color:#7d8ea2;font-weight:850;letter-spacing:.06em}.ticket-stub{padding:18px 16px;border-left:1px dashed #dbc7cc;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#fff8f9}.ticket-qr{width:78px;height:78px;border-radius:10px;background:#fff;padding:4px;border:1px solid #e7e7e7}.ticket-stub small{font-size:.74rem;text-align:center;font-weight:900;color:#715563;letter-spacing:.09em}
.voucher-ticket-secondary{left:auto;right:54px;bottom:86px;width:336px;grid-template-columns:1fr 108px;transform:rotate(-2deg);opacity:.99;background:linear-gradient(180deg,#fffdf8 0,#fff7ea 100%)}.voucher-ticket-secondary .ticket-main{padding:18px 20px;background:linear-gradient(180deg,#fffdf8 0,#fff7ea 100%)}.voucher-ticket-secondary .ticket-main h3{font-size:1.06rem;color:#284560}.voucher-ticket-secondary .ticket-type{background:#fff0d6;color:#9c6a15}.voucher-ticket-secondary .ticket-offer{font-size:2.22rem;color:#d74224}.voucher-ticket-secondary .ticket-main p{font-size:.78rem;max-width:185px;color:#617487}.voucher-ticket-secondary .ticket-stub{background:#fff3e2}.voucher-ticket-secondary .ticket-qr{width:76px;height:76px}.voucher-ticket-secondary .ticket-meta{color:#8b7a63}.voucher-ticket-secondary::before,.voucher-ticket-secondary::after{left:calc(100% - 108px - 11px)}

.traveler-section{background:linear-gradient(180deg,#fff 0,#fbfdff 100%)}.traveler-grid{display:grid;grid-template-columns:1.02fr .98fr;gap:58px;align-items:center}.traveler-copy{max-width:520px}.traveler-benefits{display:grid;gap:14px;margin-top:30px}.traveler-benefit{display:grid;grid-template-columns:58px 1fr;gap:16px;align-items:center;padding:18px;border-radius:22px;background:#fff;border:1px solid var(--line);box-shadow:0 10px 26px rgba(20,48,75,.04)}.traveler-benefit strong{display:block;margin-bottom:4px;color:var(--navy);font-size:1.03rem}.traveler-benefit span{display:block;color:var(--ink-soft);font-size:.92rem;line-height:1.55}.benefit-icon{width:54px;height:54px;border-radius:18px;display:grid;place-items:center}.benefit-icon svg{width:29px;height:29px}.red-icon{background:#fff0f2;color:var(--red)}.blue-icon{background:#edf8ff;color:#0b77b8}.gold-icon{background:#fff8de;color:#b07a00}
.traveler-card-stack{position:relative;min-height:278px;display:flex;align-items:center;justify-content:flex-start;overflow:visible}.traveler-card-stack>*:not(.wallet-front){display:none!important}.wallet-card{border-radius:30px;box-shadow:0 18px 34px rgba(20,48,75,.10)}.wallet-back,.wallet-mid,.wallet-bottom{display:none}.wallet-front{position:relative;width:min(100%,560px);min-height:250px;left:auto;top:auto;padding:20px 116px 20px 22px;background:linear-gradient(180deg,#f8fcff 0%,#fffaf6 100%);border:1px solid #e5edf4;overflow:hidden;color:var(--navy);display:flex;flex-direction:column}.travelpass-card::before{content:'';position:absolute;inset:0 auto 0 0;width:100%;background:radial-gradient(circle at 14% 86%,rgba(221,36,61,.08),transparent 16%),radial-gradient(circle at 72% 18%,rgba(17,125,214,.10),transparent 22%);pointer-events:none}.travelpass-top{display:flex;align-items:center;justify-content:space-between;gap:16px;position:relative;z-index:1}.travelpass-brand{font-weight:900;letter-spacing:.14em;font-size:1.05rem}.travelpass-badge{padding:8px 12px;border-radius:999px;background:#de1226;color:#fff;font-size:.72rem;font-weight:900;letter-spacing:.08em;box-shadow:0 10px 18px rgba(222,18,38,.16)}.travelpass-main{position:relative;z-index:1;display:grid;grid-template-columns:1.05fr .95fr;gap:18px;align-items:center;flex:1;margin-top:12px}.travelpass-copy strong{display:block;font-size:2rem;line-height:1.03;letter-spacing:-.05em;color:var(--navy)}.travelpass-copy p{margin:11px 0 0;color:#66798d;font-size:1rem}.travelpass-perks{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.travelpass-perks span{padding:7px 12px;border-radius:999px;background:#fff3f4;color:#7d5663;font-size:.74rem;font-weight:800}.travelpass-gallery{display:flex;flex-direction:column;gap:10px}.travelpass-hero img{width:100%;height:118px;object-fit:cover;border-radius:18px;display:block;box-shadow:0 10px 20px rgba(20,48,75,.10)}.travelpass-thumbs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.travelpass-thumbs img{width:100%;height:52px;object-fit:cover;border-radius:12px;display:block;box-shadow:0 8px 16px rgba(20,48,75,.08)}.travelpass-stub{position:absolute;top:0;right:0;width:96px;height:100%;padding:18px 14px;border-left:1px dashed #d7dde5;background:linear-gradient(180deg,#fff6ef 0%,#fff 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.travelpass-stub-copy span{display:block;font-size:.68rem;letter-spacing:.12em;color:#7f8fa0;font-weight:800}.travelpass-stub-copy strong{display:block;margin-top:4px;font-size:1rem;letter-spacing:.08em;color:var(--navy)}.travelpass-barcode{width:62px;height:76px;border-radius:10px;background:#fff;border:1px solid #e5e7eb;display:flex;align-items:center;justify-content:center;padding:8px;margin:14px 0 10px;box-shadow:0 6px 14px rgba(20,48,75,.06)}.travelpass-barcode i{display:block;width:100%;height:100%;background:repeating-linear-gradient(90deg,#111 0 2px,transparent 2px 4px,#111 4px 6px,transparent 6px 8px,#111 8px 9px,transparent 9px 11px)}.travelpass-code{font-size:.68rem;letter-spacing:.08em;font-weight:900;color:#7d5663}.wallet-note{font-size:.78rem;letter-spacing:.03em;color:#eff6fb}.wallet-chip{padding:8px 12px;border-radius:999px;background:rgba(255,255,255,.2);font-size:.74rem;font-weight:900}

.merchant-section{background:linear-gradient(180deg,#f8fbff 0,#fff 100%);padding-bottom:30px}.merchant-grid{display:grid;grid-template-columns:1fr 1.02fr;gap:56px;align-items:center}.merchant-feature-list{display:grid;gap:12px;margin-top:28px}.merchant-feature-list article{display:grid;grid-template-columns:42px 1fr;gap:14px;padding:16px 0;border-top:1px solid #e5ecf2}.merchant-feature-list article:first-child{border-top:0;padding-top:0}.merchant-feature-list article>span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#edf5fc;color:var(--navy);font-size:.76rem;font-weight:900}.merchant-feature-list strong{display:block;font-size:1rem;color:var(--navy)}.merchant-feature-list p{margin:4px 0 0;color:var(--ink-soft);font-size:.93rem;line-height:1.58}.merchant-cta{display:inline-flex;margin-top:22px;padding:12px 18px;border-radius:999px;background:#17385e;color:#fff;font-weight:850}
.merchant-dashboard{position:relative}.dash-window{border-radius:30px;padding:20px;background:linear-gradient(180deg,#fff 0,#f6f9fc 100%);border:1px solid #e6edf2;box-shadow:var(--shadow)}.dash-topbar{display:flex;justify-content:space-between;align-items:center;padding:6px 4px 8px}.dash-brand{display:flex;align-items:center;gap:10px;font-weight:850;color:var(--navy)}.dash-brand img{width:36px;height:36px}.dash-quick{display:flex;gap:10px;flex-wrap:wrap}.dash-quick span{padding:8px 12px;border-radius:999px;background:#eef4fa;color:#49617a;font-size:.72rem;font-weight:800}.dash-timestamp span{background:transparent;padding:0;color:#7a8ca0;font-weight:700;font-size:.8rem}.dash-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:16px}.stat-card{background:#fff;border:1px solid #e6edf2;border-radius:18px;padding:16px}.stat-card small{display:block;color:#738295;font-size:.74rem;font-weight:700;min-height:34px}.stat-card strong{display:block;font-size:1.65rem;color:var(--navy);margin:4px 0}.stat-card span{font-size:.72rem;font-weight:800;color:#27905c;display:block;min-height:1em}.stat-note-empty{color:transparent!important}.dash-body{display:grid;grid-template-columns:1fr 180px;gap:14px;margin-top:14px}.activity-panel,.qr-panel{background:#fff;border:1px solid #e6edf2;border-radius:20px;padding:16px}.panel-title{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:8px}.panel-title strong{font-size:.9rem;color:var(--navy)}.panel-title span{font-size:.72rem;color:#2870ad;font-weight:800}.activity-row{display:grid;grid-template-columns:10px 1fr auto;gap:10px;align-items:center;padding:12px 0;border-top:1px solid #edf1f5}.activity-row:first-of-type{border-top:0}.activity-dot{width:8px;height:8px;border-radius:50%;background:#36a36d}.activity-row strong{display:block;font-size:.76rem;color:#24394f}.activity-row small{display:block;font-size:.68rem;color:#7a899a;margin-top:2px}.activity-row b{font-size:.78rem;color:#506479}.qr-panel{text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}.qr-panel small{font-size:.72rem;color:#728396;font-weight:800}.merchant-qr{width:108px;height:108px;padding:4px;margin:16px 0 10px;border-radius:12px;background:#fff;border:1px solid #e5e5e5}.qr-panel strong{font-size:.74rem;color:#53677c;letter-spacing:.05em}

.how{background:#fff;padding-top:24px}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.step{padding:24px 20px;border-radius:24px;background:#fff;border:1px solid var(--line);text-align:center;box-shadow:0 10px 28px rgba(20,48,75,.04)}.step-icon{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;margin:0 auto 15px}.step-icon svg{width:32px;height:32px}.red{background:#fff0f2;color:var(--red)}.blue{background:#edf8ff;color:#0a76b7}.yellow{background:#fff8dd;color:#b98407}.green{background:#eaf8ef;color:#1b8e58}.step h3{margin:0 0 8px;font-size:1.08rem;color:var(--navy)}.step p{margin:0;color:var(--ink-soft);font-size:.92rem;line-height:1.55}

.platforms{position:relative;background:linear-gradient(180deg,#fff 0,#fbfdff 100%);margin-top:-4px}.platforms::before{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.88),rgba(255,255,255,.92)),url('../assets/images/hero-beach-ai.png') center/cover no-repeat;opacity:.22;pointer-events:none}.platforms .container{position:relative;z-index:1}.app-showcase{display:flex;gap:18px;align-items:stretch;justify-content:center;flex-wrap:nowrap;overflow-x:auto;padding:8px 0 18px}.app-showcase::-webkit-scrollbar{height:8px}.app-showcase::-webkit-scrollbar-thumb{background:#dce5ee;border-radius:999px}.phone-mock{flex:0 0 185px;height:360px;border-radius:30px;background:#d7e0e8;padding:2px;box-shadow:0 18px 42px rgba(15,41,70,.10);position:relative}.phone-mock.tall-featured{height:360px;flex-basis:185px}.phone-notch{display:none}.screen{height:100%;background:#f8fafc;border-radius:28px;padding:12px;overflow:hidden;position:relative;display:flex;flex-direction:column}.screen-header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;font-weight:900;color:var(--navy);font-size:1.22rem;line-height:.95;letter-spacing:-.05em}.screen-header img{width:34px;height:34px;border-radius:12px;object-fit:cover;flex:0 0 34px}.chip-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.chip-row span,.mini-nav span{padding:6px 10px;border-radius:999px;background:#eef2f6;color:#52667b;font-size:.72rem;font-weight:800}.offer-card-mini{display:grid;grid-template-columns:46px 1fr;gap:10px;padding:10px;margin-top:12px;background:#fff;border-radius:18px;border:1px solid #edf1f4}.offer-card-mini img{width:46px;height:46px;border-radius:12px;object-fit:cover}.offer-card-mini strong{display:block;font-size:.84rem;color:var(--navy)}.offer-card-mini small{display:block;margin-top:4px;color:#6e7f90;line-height:1.35;font-size:.72rem}.map-card{height:112px;border-radius:22px;background:url('../assets/images/app-home-ai.jpg') center/cover no-repeat}.scan-banner{margin-top:12px;background:#173f73;border-radius:20px;padding:14px 16px;color:#fff}.scan-banner strong{display:block;font-size:1.2rem}.scan-banner small{display:block;margin-top:4px;color:#dbe7f5}.timeline-row{display:flex;align-items:flex-start;gap:10px;margin-top:14px}.timeline-row span{width:18px;height:18px;border:4px solid #df3144;border-radius:50%;margin-top:4px;box-sizing:border-box}.timeline-row strong{display:block;color:var(--navy)}.timeline-row small{display:block;color:#718397;margin-top:2px}.status-screen{background:linear-gradient(180deg,#fafcfe,#f5f8fb)}.status-head{display:flex;justify-content:center;align-items:center;margin-bottom:12px;color:var(--navy)}.status-head strong{display:none}.status-head span{font-size:.74rem;font-weight:800;background:#eef4fa;color:#49617a;padding:6px 14px;border-radius:999px;text-align:center}.status-card{padding:14px 14px 12px;border-radius:18px;background:#fff;border:1px solid #e7edf3;margin-bottom:10px}.status-card strong{display:block;color:var(--navy);font-size:.95rem}.status-card small{display:block;margin-top:4px;color:#758698;font-size:.76rem}.status-card b{display:block;margin-top:7px;color:#214066;font-size:.9rem}.status-card-primary{background:linear-gradient(180deg,#173f73,#204f89);border-color:transparent}.status-card-primary strong,.status-card-primary b{color:#fff}.status-card-primary small{color:#d6e4f7}
.screen-hero-image{width:100%;height:138px;object-fit:cover;border-radius:18px}.screen-section{padding:14px 4px 0}.screen-section strong{display:block;font-size:1.02rem;color:var(--navy)}.deal-text{display:block;margin:8px 0 4px;font-size:2rem;line-height:1;color:var(--red);font-weight:900;letter-spacing:-.06em}.screen-section small{color:#76889b;font-size:.78rem}.screen-meta{display:flex;justify-content:space-between;gap:8px;margin-top:10px;font-size:.7rem;color:#6d8094;font-weight:700}.screen-meta span{display:block}.screen-cta{margin-top:auto;height:44px;border:0;border-radius:999px;background:linear-gradient(135deg,var(--red),#c6091d);color:#fff;font:inherit;font-weight:850}
.alt-screen{background:#fffaf9}.mini-nav{display:flex;gap:8px}.mini-nav .active{background:#17385e;color:#fff}.voucher-mini-card{margin-top:12px;padding:12px;background:#fff;border-radius:18px;border:1px solid #efe4e4;display:grid;grid-template-columns:1fr 58px;gap:10px;align-items:center}.voucher-mini-card strong{display:block;color:var(--navy);font-size:.86rem}.voucher-mini-card span{display:block;margin-top:4px;color:var(--red);font-size:1.08rem;font-weight:900}.voucher-mini-card img{width:58px;height:58px;border-radius:10px;padding:3px;background:#fff;border:1px solid #ececec}
.merchant-screen{background:linear-gradient(180deg,#f7fbff,#f2f7fb)}.merchant-mini-head{display:flex;justify-content:center;align-items:flex-start;color:var(--navy);gap:8px;min-height:20px}.merchant-mini-head strong{display:none}.merchant-mini-head span{text-align:center;font-size:.68rem;font-weight:800;background:#eef4fa;color:#49617a;padding:6px 10px;border-radius:999px;white-space:nowrap}.merchant-tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.merchant-tiles div{background:#fff;border-radius:18px;padding:12px;border:1px solid #e8edf3}.merchant-tiles small{display:block;font-size:.72rem;color:#6f8090}.merchant-tiles b{display:block;margin-top:4px;font-size:1.15rem;color:var(--navy)}.mini-merchant-qr{width:104px;height:104px;margin:18px auto 10px;border-radius:12px;padding:4px;background:#fff;border:1px solid #e5e5e5}.merchant-mini-list{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.merchant-mini-list div{background:#fff;border:1px solid #e7edf3;border-radius:14px;padding:9px 10px}.merchant-mini-list span{display:block;font-size:.68rem;color:#738295}.merchant-mini-list strong{display:block;margin-top:4px;font-size:.92rem;color:var(--navy)}
.slim-screen .map-card{height:108px;border-radius:18px;background:linear-gradient(180deg,rgba(255,255,255,.1),rgba(255,255,255,.1)),url('../assets/images/traveler-scene-ai.jpg') center/cover no-repeat}.scan-banner{margin-top:12px;padding:12px 14px;border-radius:18px;background:#17385e;color:#fff}.scan-banner strong{display:block}.scan-banner small{display:block;margin-top:4px;color:#d3e1ee}.timeline-row{display:grid;grid-template-columns:18px 1fr;gap:10px;align-items:start;margin-top:12px}.timeline-row span{display:block;width:18px;height:18px;border-radius:50%;background:#fff0f2;border:5px solid #e52b3c}.timeline-row strong{display:block;font-size:.82rem;color:var(--navy)}.timeline-row small{display:block;margin-top:3px;color:#6f8090;font-size:.72rem;line-height:1.25}
.platform-mini-bar{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;margin-top:26px;padding-top:0;border-top:0}.platform-mini{display:inline-flex;align-items:center;gap:12px;padding:10px 16px;border-radius:16px;background:#fff;border:1px solid #e6edf2;box-shadow:0 10px 24px rgba(20,48,75,.04);font-weight:850;color:var(--navy)}.platform-store{padding:10px 16px}.platform-store div{display:flex;flex-direction:column;line-height:1.1}.platform-store small{font-size:.68rem;font-weight:700;color:#7d8ea0}.platform-store strong{font-size:1rem}.platform-web div{display:flex;flex-direction:column;justify-content:center}.platform-web strong{font-size:1rem;line-height:1.1}.mini-icon{width:38px;height:38px;border-radius:12px;background:#f4f7fb;display:grid;place-items:center;flex:0 0 38px}.mini-icon svg{width:24px;height:24px}.web-logo svg{width:26px;height:26px}.play-logo svg{width:28px;height:28px}

.contact{background:linear-gradient(150deg,#f3fbff 0,#fff 50%,#fff7f3 100%);padding-bottom:26px}.form-actions{margin-top:10px}.contact-grid{display:grid;grid-template-columns:1.35fr .85fr;gap:30px}.contact-form-wrap{background:linear-gradient(180deg,#fff 0,#fbfdff 100%);border:0;border-radius:32px;padding:38px;box-shadow:var(--shadow)}.contact-form-wrap p{color:var(--ink-soft)}.contact-form{margin-top:24px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.contact-form label{display:block;font-size:.83rem;font-weight:800;color:#42556a;margin-bottom:15px}.contact-form input,.contact-form select,.contact-form textarea{width:100%;margin-top:6px;padding:12px 13px;border-radius:12px;border:1px solid #dbe3ea;background:#fbfdff;color:var(--ink);font:inherit}.contact-form textarea{resize:vertical}.company-card{border-radius:32px;background:linear-gradient(180deg,#ffffff 0,#f9fbfe 100%);color:var(--navy);padding:34px;box-shadow:var(--shadow)}.company-brand{display:flex;align-items:center;gap:18px;margin-bottom:24px}.company-logo{width:78px;height:78px;object-fit:contain}.company-card h3{margin:0;font-size:1.32rem}.company-card p{margin:4px 0 0;color:#6d7f91;line-height:1.7}.info-block{padding-top:18px;border-top:1px solid #e7edf2;margin-top:18px}.info-label{display:block;font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;font-weight:800;color:#5b748e;margin-bottom:8px}.company-address{font-style:normal;display:grid;gap:4px;color:#4f6277}.address-divider{height:8px}

.contact-copyright{margin:26px auto 0;text-align:center;color:#748497;font-size:.8rem}

@media (max-width:1120px){.traveler-grid,.merchant-grid,.contact-grid{grid-template-columns:1fr}.hero-stage{min-height:700px}.hero-copy{max-width:460px}.traveler-card-stack,.merchant-dashboard{width:min(100%,660px);margin:0 auto}.steps{grid-template-columns:repeat(2,1fr)}.copyright{text-align:center}}
@media (max-width:920px){.menu-toggle{display:block}.nav-wrap{padding:0}.nav-links{position:absolute;left:20px;right:20px;top:74px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:18px;display:none;flex-direction:column;align-items:flex-start;gap:12px}.nav-links.open{display:flex}.hero-stage{min-height:760px}.hero-copy{left:28px;top:30px;max-width:420px}.hero-attraction-card{display:none}.voucher-ticket{left:22px;bottom:22px;width:390px}.voucher-ticket-secondary{right:20px;bottom:108px;width:280px}.dash-stats,.steps,.form-row{grid-template-columns:1fr}.dash-body{grid-template-columns:1fr}.platforms .section-heading{margin-bottom:16px}.dash-topbar{gap:8px;align-items:flex-start;flex-direction:column}}
@media (max-width:700px){.container{width:min(calc(100% - 28px),var(--container))}.site-header{padding-top:12px}.brand-word{font-size:1.32rem}.hero{padding-bottom:40px}.hero-stage{min-height:860px;border-radius:30px}.hero-copy{left:20px;top:20px;right:20px;max-width:none}.hero-copy h1{font-size:2.8rem;max-width:360px}.hero-attraction-card{display:none}.voucher-ticket{grid-template-columns:1fr 112px;left:14px;right:14px;bottom:150px;width:auto}.voucher-ticket-secondary{left:34px;right:auto;bottom:20px;width:270px;transform:none}.ticket-main{padding:16px 18px}.ticket-main h3{font-size:1.08rem}.ticket-offer{font-size:2.45rem}.ticket-main p{font-size:.78rem;max-width:100%}.ticket-stub{padding:12px 10px}.ticket-qr{width:72px;height:72px}.traveler-card-stack{min-height:300px}.wallet-front{width:100%;min-height:280px;padding:18px 18px 100px 18px}.travelpass-main{grid-template-columns:1fr}.travelpass-copy strong{font-size:1.9rem}.travelpass-hero img{height:124px}.travelpass-thumbs img{height:50px}.travelpass-stub{position:relative;top:auto;right:auto;width:100%;height:auto;margin-top:14px;border-left:0;border-top:1px dashed #d7dde5;padding:14px 0 0;flex-direction:row;justify-content:space-between;text-align:left;background:transparent}.travelpass-barcode{margin:0 0 0 10px;width:86px;height:40px}.travelpass-stub-copy{text-align:left}.travelpass-code{margin-left:10px}.steps{grid-template-columns:1fr}.phone-mock{flex-basis:165px;height:330px}.phone-mock.tall-featured{flex-basis:165px;height:330px}.contact-form-wrap,.company-card{padding:24px}.platform-mini-bar{gap:10px}.platform-mini{padding:10px 12px}.platform-store strong{font-size:.92rem}.platform-store small{font-size:.64rem}}
@media (max-width:480px){.brand-cluster{gap:10px}.language-trigger{padding:0 10px}.language-label{display:none}.hero-copy h1{font-size:2.45rem}.hero-attraction-card{display:none}.voucher-ticket{grid-template-columns:1fr 96px;bottom:148px}.voucher-ticket-secondary{width:240px;left:20px}.ticket-label{font-size:.7rem}.ticket-type{font-size:.66rem}.ticket-offer{font-size:2.1rem}.ticket-meta{font-size:.68rem}.ticket-qr{width:58px;height:58px}.travelpass-copy strong{font-size:1.6rem}.travelpass-perks{gap:8px}.travelpass-perks span{font-size:.68rem;padding:7px 10px}.travelpass-badge{font-size:.64rem;padding:7px 10px}.travelpass-brand{font-size:.92rem}.travelpass-thumbs{gap:6px}.travelpass-thumbs img{height:44px}.phone-mock{flex-basis:150px;height:306px}.phone-mock.tall-featured{flex-basis:150px;height:306px}.screen-header{font-size:1.15rem}.deal-text{font-size:1.7rem}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

.language-chevron{display:none}

.wallet-spacer{display:block;min-width:1px;opacity:0}

.history-screen{background:#fbfcfe}.history-screen .mini-nav{margin-bottom:10px}.history-item{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;column-gap:8px;row-gap:4px;padding:12px 10px;margin-top:12px;background:#fff;border:1px solid #ebeff3;border-radius:18px}.history-item strong{display:block;color:var(--navy);font-size:.86rem;line-height:1.25}.history-item em{font-style:normal;align-self:center;font-size:.98rem;font-weight:900;color:var(--navy)}.history-item small{display:block;color:#6f8090;font-size:.72rem;line-height:1.35;margin-top:0}.history-item b{grid-column:2;grid-row:2;align-self:start;justify-self:end;color:#8b97a4;font-size:.72rem}


/* v8.7 traveler pass refresh */
.travelpass-card.wallet-front{padding:0;min-height:270px;border:1px solid #dfe7ef;background:#d6e7f5;overflow:hidden;isolation:isolate}
.travelpass-card::before{display:none!important}
.travelpass-photo{position:absolute;inset:0;z-index:0}
.travelpass-photo img{width:100%;height:100%;object-fit:cover;display:block;filter:none;image-rendering:auto}
.travelpass-photo::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(16,37,58,.54) 0%,rgba(16,37,58,.28) 44%,rgba(16,37,58,.08) 72%,rgba(16,37,58,.14) 100%);pointer-events:none}
.travelpass-card .travelpass-top{position:absolute;top:20px;left:22px;right:22px;z-index:2}
.travelpass-card .travelpass-brand{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.18)}
.travelpass-card .travelpass-badge{background:rgba(255,255,255,.18);backdrop-filter:blur(8px);color:#fff;box-shadow:none;border:1px solid rgba(255,255,255,.22)}
.travelpass-card .travelpass-main{position:relative;z-index:2;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;height:100%;padding:28px 22px 22px;margin-top:0}
.travelpass-card .travelpass-copy{max-width:66%;margin-top:auto}
.travelpass-card .travelpass-copy strong{font-size:2.25rem;line-height:1.02;color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.22)}
.travelpass-card .travelpass-copy p{margin:12px 0 0;color:rgba(255,255,255,.9);font-size:1rem;max-width:320px;text-shadow:0 1px 6px rgba(0,0,0,.18)}
.travelpass-card .travelpass-qr{flex:0 0 auto;align-self:flex-end;background:rgba(255,255,255,.95);padding:7px;border-radius:16px;box-shadow:0 14px 28px rgba(9,22,37,.16);border:1px solid rgba(255,255,255,.7)}
.travelpass-card .travelpass-qr img{width:92px;height:92px;display:block;border-radius:10px}
.site-header .button-small:hover,.site-header .button-small:focus{color:#e5e7eb!important;filter:brightness(1.02)}
@media (max-width:700px){
  .travelpass-card.wallet-front{min-height:252px}
  .travelpass-card .travelpass-top{top:16px;left:18px;right:18px}
  .travelpass-card .travelpass-main{padding:22px 18px 18px}
  .travelpass-card .travelpass-copy{max-width:70%}
  .travelpass-card .travelpass-copy strong{font-size:1.95rem}
  .travelpass-card .travelpass-copy p{font-size:.95rem;max-width:240px}
  .travelpass-card .travelpass-qr img{width:78px;height:78px}
}
@media (max-width:480px){
  .travelpass-card.wallet-front{min-height:236px}
  .travelpass-card .travelpass-main{padding:20px 16px 16px;gap:12px}
  .travelpass-card .travelpass-copy{max-width:68%}
  .travelpass-card .travelpass-copy strong{font-size:1.65rem}
  .travelpass-card .travelpass-copy p{font-size:.88rem;line-height:1.35;max-width:210px}
  .travelpass-card .travelpass-badge{font-size:.62rem;padding:7px 10px}
  .travelpass-card .travelpass-qr{padding:5px;border-radius:14px}
  .travelpass-card .travelpass-qr img{width:64px;height:64px}
}

/* v8.9 clean travel-pass image */
.travelpass-card.wallet-front{border:0!important;background:#d6e7f5}
.travelpass-photo img{object-position:center center}

/* v8.16 — unified neutral landing background */
html,
body,
.site-header,
.hero,
.traveler-section,
.merchant-section,
.how,
.platforms,
.contact {
  background:#fff !important;
}
.platforms::before {
  display:none !important;
  background:none !important;
}

/* v8.18 stronger external-link icon in header Web App button */
.header-web-app{gap:8px;white-space:nowrap}
.header-web-icon{width:17px;height:17px;flex:0 0 17px;fill:none;stroke:currentColor;stroke-width:3.25;stroke-linecap:round;stroke-linejoin:round;transform:translateY(-1px)}
@media(max-width:900px){.header-web-icon{width:16px;height:16px;flex-basis:16px}}

/* v8.19 wallet mockup refinement */
.status-screen .status-head{margin-bottom:9px}
.status-screen .status-card{padding:10px 13px 9px;border-radius:16px;margin-bottom:7px}
.status-screen .status-card strong{font-size:.9rem;line-height:1.1}
.status-screen .status-card small{margin-top:3px;font-size:.71rem;line-height:1.2}
.status-screen .status-card b{margin-top:5px;font-size:.8rem;line-height:1.15}
.status-screen .status-card-primary{padding:11px 13px 10px}

/* v8.20 wallet voucher cleanup */
.status-screen .status-head span{white-space:nowrap}
.status-screen .status-card{padding:13px 13px 12px;margin-bottom:8px}
.status-screen .status-card .voucher-value{margin-top:7px;font-size:.92rem;line-height:1.1;font-weight:900;letter-spacing:.01em;color:#d80a21}
.status-screen .status-card-primary .voucher-value{color:#dcecff}

/* v8.22 merchant dashboard refinements */
.dash-timestamp span strong{font-weight:900;color:#536b84}
.stat-card .stat-edit{display:inline-block;margin-top:3px;font-size:.72rem;font-weight:850;color:#2870ad;text-decoration:underline;text-underline-offset:2px;min-height:1em}
.stat-card .stat-edit:hover,.stat-card .stat-edit:focus{color:#174e82}


/* v8.23 merchant dashboard + contact form refinements */
.dash-topbar{justify-content:flex-start}
.stat-card .stat-edit{display:block;margin-top:0;font-size:.72rem;line-height:normal;font-weight:800;color:#2870ad;text-decoration:none;min-height:1em}
.stat-card .stat-edit:hover,.stat-card .stat-edit:focus{color:#174e82;text-decoration:none}
.contact-form input:focus,.contact-form select:focus,.contact-form textarea:focus{outline:2px solid rgba(41,83,126,.16);outline-offset:1px;border-color:#7795b3}

/* v8.29 inline contact-form validation */
.contact-form .field-error{display:none;margin-top:7px;font-size:.72rem;line-height:1.35;font-weight:650;color:#c62828;letter-spacing:0}
.contact-form .field-error.visible{display:block}
.contact-form input.is-invalid,.contact-form textarea.is-invalid{border-color:#e06f7b;box-shadow:0 0 0 3px rgba(224,111,123,.08)}
.contact-form input.is-invalid:focus,.contact-form textarea.is-invalid:focus{outline:2px solid rgba(224,111,123,.14);border-color:#dc5e6b}

/* Release 1.0.0: server-backed contact CAPTCHA and inline submission state */
.captcha-block{margin-top:4px;padding:16px;border:1px solid #e4ebf1;border-radius:16px;background:#f9fbfd}
.captcha-heading{display:flex;align-items:center;justify-content:flex-start;gap:4px;font-size:.82rem;font-weight:850;color:#42556a;margin-bottom:10px}
.captcha-refresh{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:0;border-radius:999px;background:transparent;color:#456b92;padding:3px;cursor:pointer;flex:0 0 26px;box-shadow:none;transition:background .15s ease,color .15s ease,transform .15s ease}.captcha-refresh svg{width:17px;height:17px;display:block;fill:none;stroke:currentColor;stroke-width:2.15;stroke-linecap:round;stroke-linejoin:round}.captcha-refresh:hover,.captcha-refresh:focus-visible{background:rgba(41,83,126,.08);color:#17385e;outline:none}.captcha-refresh:active{transform:rotate(24deg)}
.captcha-row{display:grid;grid-template-columns:220px 1fr;gap:16px;align-items:center}
.captcha-image-wrap{width:220px;height:72px;border-radius:12px;overflow:hidden;border:1px solid #dbe3ea;background:#fff;display:flex;align-items:center;justify-content:center}
.captcha-image-wrap img{display:block;width:220px;height:72px;object-fit:cover}
.captcha-field{margin:0!important}
.captcha-field input{text-transform:uppercase;letter-spacing:.16em;font-weight:850}
.contact-status{display:none;margin-top:14px;padding:10px 12px;border-radius:12px;font-size:.78rem;line-height:1.4;font-weight:700}
.contact-status.visible{display:block}
.contact-status.success{background:#edf8f1;color:#24633b;border:1px solid #cfe8d7}
.contact-status.error{background:#fff1f2;color:#a92b38;border:1px solid #f0cbd0}
.contact-form button[disabled]{opacity:.65;cursor:wait}
@media (max-width:700px){.captcha-row{grid-template-columns:1fr}.captcha-image-wrap{width:100%;max-width:220px}.captcha-image-wrap img{width:220px}.captcha-heading{align-items:center}}

/* Release 1.0.7: illustrative merchant control + one-at-a-time mobile app showcase */
.stat-card .stat-edit{cursor:default;pointer-events:none}
@media (max-width:700px){
  .app-showcase{overflow:hidden;justify-content:center;min-height:430px;padding:8px 0 18px}
  .app-showcase .phone-mock{display:none;width:min(220px,72vw);height:auto;aspect-ratio:185/360;flex:0 0 auto}
  .app-showcase .phone-mock.tall-featured{height:auto;flex-basis:auto}
  .app-showcase .phone-mock.is-active{display:block}
}
@media (max-width:480px){
  .app-showcase{min-height:410px}
  .app-showcase .phone-mock{width:min(210px,72vw)}
}


/* Introduced in 1.0.8: progressive pass image, alignment, and shorter mobile showcase */
.travelpass-photo{background:url('../assets/images/okinawa-pass-placeholder.jpg') center center/cover no-repeat;overflow:hidden}
.travelpass-photo .progressive-full-image{opacity:0;transition:opacity .9s ease}
.travelpass-photo .progressive-full-image.is-loaded{opacity:1}
@media (min-width:1121px){.traveler-card-stack{transform:translateX(-16px)}}
@media (max-width:1120px){.traveler-card-stack{transform:none}}
@media (max-width:700px){
  .app-showcase{min-height:392px}
  .app-showcase .phone-mock{aspect-ratio:185/330}
}
@media (max-width:480px){
  .app-showcase{min-height:376px}
  .app-showcase .phone-mock{aspect-ratio:185/330}
}

.contact-status.warning{background:#fff8e8;color:#7a5812;border:1px solid #ecd9a7}

/* 1.0.11: mobile hero vouchers — keep the primary voucher low and place Shima Market around one-third down the beach image. */
.hero-voucher-stack{display:contents}
@media (max-width:700px){
  .hero-voucher-stack .voucher-ticket,.hero-voucher-stack .voucher-ticket-secondary{position:absolute;left:14px;right:14px;width:auto;transform:none;margin:0;z-index:2}
  .hero-voucher-stack .voucher-ticket{bottom:24px}
  .hero-voucher-stack .voucher-ticket-secondary{top:34%;bottom:auto}
}
@media (max-width:480px){
  .hero-voucher-stack .voucher-ticket,.hero-voucher-stack .voucher-ticket-secondary{left:14px;right:14px;width:auto}
  .hero-voucher-stack .voucher-ticket{bottom:18px}
  .hero-voucher-stack .voucher-ticket-secondary{top:34%}
}


/* 1.0.12: mobile voucher spacing, app-preview alignment, and compact CAPTCHA answer field. */
@media (max-width:700px){
  .hero-voucher-stack .voucher-ticket-secondary{
    top:30%;
    bottom:auto!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    align-self:start;
  }
  .captcha-row{grid-template-columns:220px 220px;justify-content:start}
  .captcha-field{width:220px;max-width:220px}
  .captcha-field input{width:160px;max-width:160px}
}
@media (max-width:480px){
  .hero-voucher-stack .voucher-ticket-secondary{top:29%}
  .captcha-row{grid-template-columns:1fr}
  .captcha-field{width:100%;max-width:220px}
  .captcha-field input{width:160px;max-width:160px}
}

/* Center the Discover screen content and anchor the merchant QR/status block toward the bottom. */
.home-screen{justify-content:center}
.merchant-screen .mini-merchant-qr{margin-top:auto}

/* 1.0.13: final mobile hero/app-preview/CAPTCHA refinements. */
@media (max-width:700px){
  /* Keep Shima Market compact. Do not combine left+right, which can make the card look stretched. */
  .hero-voucher-stack .voucher-ticket-secondary{
    left:20px!important;
    right:auto!important;
    width:min(270px,calc(100% - 40px))!important;
    top:27.5%!important;
    bottom:auto!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    transform:none!important;
    align-self:auto!important;
  }
  /* Slightly lower the first preview content within the phone. */
  .home-screen{padding-top:26px;padding-bottom:8px}
  /* Let the merchant status stack sit a touch closer to the phone bottom. */
  .merchant-screen{padding-bottom:7px}

  .captcha-row{grid-template-columns:220px 180px;justify-content:start}
  .captcha-field{width:180px;max-width:180px}
  .captcha-field input{width:140px;max-width:140px}
}
@media (max-width:480px){
  .hero-voucher-stack .voucher-ticket-secondary{
    left:18px!important;
    width:min(245px,calc(100% - 36px))!important;
    top:26.5%!important;
  }
  .captcha-row{grid-template-columns:1fr}
  .captcha-field{width:180px;max-width:180px}
  .captcha-field input{width:140px;max-width:140px}
}

/* 1.0.14: equal-width mobile hero vouchers and compact CAPTCHA answer field. */
.captcha-row{grid-template-columns:220px 180px;justify-content:start}
.captcha-field{width:180px;max-width:180px}
.captcha-field input{box-sizing:border-box;width:145px;max-width:145px}
@media (max-width:700px){
  .hero-voucher-stack .voucher-ticket-secondary{
    left:14px!important;
    right:14px!important;
    width:auto!important;
    top:26.5%!important;
    bottom:auto!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    transform:none!important;
  }
  .captcha-row{grid-template-columns:220px 180px;justify-content:start}
  .captcha-field{width:180px;max-width:180px}
  .captcha-field input{width:145px;max-width:145px}
}
@media (max-width:480px){
  .hero-voucher-stack .voucher-ticket-secondary{
    left:14px!important;
    right:14px!important;
    width:auto!important;
    top:25.5%!important;
  }
  .captcha-row{grid-template-columns:1fr}
  .captcha-field{width:180px;max-width:180px}
  .captcha-field input{width:145px;max-width:145px}
}
