@font-face{font-family:Geist;src:url(/projects/travel/fonts/Geist-Variable.sub.woff2) format("woff2");font-weight:100 900;font-display:swap}@font-face{font-family:Geist Mono;src:url(/projects/travel/fonts/GeistMono-Variable.sub.woff2) format("woff2");font-weight:100 900;font-display:swap}@font-face{font-family:Geist Fallback;src:local("Arial"),local("Helvetica"),local("Liberation Sans");size-adjust:104%;ascent-override:92%;descent-override:24%;line-gap-override:0%}[data-app],:root{color-scheme:light;--canvas:#fbfbfa;--surface:#ffffff;--subtle:#f5f5f3;--raised:#ffffff;--hover:rgba(13,22,38,.04);--press:rgba(13,22,38,.07);--border:rgba(13,22,38,.09);--border-strong:rgba(13,22,38,.15);--text:#0d1626;--text-2:#4a5160;--text-3:#646b78;--primary:#2c66f5;--primary-hover:#2458d9;--primary-fg:#ffffff;--primary-text:#2459e0;--primary-soft:rgba(47,107,255,.08);--ring:#2f6bff;--pos:#0f7a52;--pos-soft:rgba(15,122,82,.1);--neg:#c93434;--neg-soft:rgba(201,52,52,.09);--warn:#9a5b00;--warn-soft:rgba(154,91,0,.1);--deal:#c2410c;--deal-soft:rgba(194,65,12,.09);--shadow-1:0 1px 0 rgba(13,22,38,.06);--shadow-pop:0 8px 24px -8px rgba(13,22,38,.18),0 2px 6px rgba(13,22,38,.06);--shadow-modal:0 24px 64px -16px rgba(13,22,38,.28),0 6px 16px rgba(13,22,38,.08);--backdrop:rgba(10,11,13,.4);--skel:rgba(13,22,38,.06);--skel-hi:rgba(13,22,38,.11);--radius:10px;--r-xs:4px;--r-sm:6px;--r-md:8px;--r-lg:10px;--r-xl:14px;--r-full:9999px;--dur-instant:80ms;--dur-fast:.12s;--dur-base:.16s;--dur-slow:.2s;--ease-out:cubic-bezier(.2,.8,.2,1);--ease-in:cubic-bezier(.4,0,1,1);--ease-pop:cubic-bezier(.34,1.56,.64,1);--topbar-h:52px;--tabbar-h:56px;--font: "Geist", "Geist Fallback", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;background:var(--canvas);color:var(--text);-webkit-font-smoothing:antialiased}[data-app][data-theme=dark],:root[data-theme=dark]{color-scheme:dark;--canvas:#0a0b0d;--surface:#121418;--subtle:#16181c;--raised:#1a1d22;--hover:rgba(255,255,255,.05);--press:rgba(255,255,255,.09);--border:rgba(255,255,255,.09);--border-strong:rgba(255,255,255,.15);--text:#e7e9ea;--text-2:#a1a7b0;--text-3:#848a93;--primary:#2c66f5;--primary-hover:#2458d9;--primary-text:#6b9bff;--primary-soft:rgba(107,155,255,.14);--ring:#6b9bff;--pos:#35c58f;--pos-soft:rgba(53,197,143,.14);--neg:#ff6b6b;--neg-soft:rgba(255,107,107,.14);--warn:#f2b54a;--warn-soft:rgba(242,181,74,.14);--deal:#fb923c;--deal-soft:rgba(251,146,60,.14);--shadow-1:0 1px 0 rgba(0,0,0,.5);--shadow-pop:0 8px 24px -8px rgba(0,0,0,.7);--shadow-modal:0 24px 64px -16px rgba(0,0,0,.85);--backdrop:rgba(0,0,0,.62);--skel:rgba(255,255,255,.05);--skel-hi:rgba(255,255,255,.1)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font);font-size:14px;line-height:20px;background:var(--canvas);color:var(--text)}[data-app]{font-family:var(--font);min-height:100vh;display:flex;flex-direction:column}img{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--primary-text);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:2px}h1,h2,h3,h4{margin:0;font-weight:600;color:var(--text)}h1{font-size:28px;line-height:34px;letter-spacing:-.02em}h2{font-size:22px;line-height:28px;letter-spacing:-.015em}h3{font-size:18px;line-height:24px;letter-spacing:-.01em}p{margin:0}.display{font-size:clamp(28px,4.2vw,36px);line-height:1.12;letter-spacing:-.025em;font-weight:600}.body-lg{font-size:16px;line-height:24px}.small{font-size:13px;line-height:18px}.caption{font-size:12px;line-height:16px;letter-spacing:.01em;font-weight:500}.muted{color:var(--text-2)}.meta{color:var(--text-3)}.num,.money{font-variant-numeric:tabular-nums}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:0}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[data-app] :focus-visible,:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:var(--r-sm)}.skip-link{position:absolute;left:8px;top:-48px;z-index:100;background:var(--surface);color:var(--text);padding:8px 12px;border-radius:var(--r-md);border:1px solid var(--border-strong);transition:top var(--dur-fast) var(--ease-out)}.skip-link:focus{top:8px}.no-scroll{overflow:hidden}.wrap{width:100%;max-width:1280px;margin:0 auto;padding:0 16px}@media (min-width:640px){.wrap{padding:0 24px}}.reading{max-width:720px}.btn{--h:40px;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--h);padding:0 16px;border-radius:var(--r-md);border:1px solid transparent;font-weight:500;font-size:14px;line-height:20px;cursor:pointer;text-decoration:none!important;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background-color var(--dur-instant) var(--ease-out),border-color var(--dur-instant) var(--ease-out),transform var(--dur-instant) var(--ease-out),color var(--dur-instant) var(--ease-out)}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);color:var(--primary-fg)}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}[data-theme=dark] .btn-primary:hover:not(:disabled){background:#2458d9}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.btn-secondary:hover:not(:disabled){background:var(--subtle)}.btn-ghost{background:transparent;color:var(--text)}.btn-ghost:hover:not(:disabled){background:var(--hover)}.btn-pill{border-radius:var(--r-full)}.btn-lg{--h:48px;font-size:16px;padding:0 20px}.btn-block{width:100%}.btn .spin{width:16px;height:16px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.icon-btn{width:40px;height:40px;display:inline-grid;place-items:center;border-radius:var(--r-md);border:0;background:transparent;color:var(--text-2);cursor:pointer;transition:background-color var(--dur-instant) var(--ease-out),transform var(--dur-instant) var(--ease-out)}.icon-btn:hover{background:var(--hover);color:var(--text)}.icon-btn:active{transform:scale(.94)}@media (max-width:639px){.btn{--h:44px}.btn-lg{--h:48px}.icon-btn{width:44px;height:44px}}.chip{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 12px;border-radius:var(--r-full);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:13px;line-height:18px;font-weight:500;cursor:pointer;white-space:nowrap;transition:background-color var(--dur-instant) var(--ease-out),border-color var(--dur-instant) var(--ease-out),transform var(--dur-instant) var(--ease-out)}.chip:hover{background:var(--subtle);text-decoration:none}.chip:active{transform:scale(.97)}.chip[aria-pressed=true],.chip.on{background:var(--primary-soft);border-color:color-mix(in srgb,var(--primary) 45%,transparent);color:var(--primary-text)}@media (max-width:639px){.chip{min-height:40px;padding:0 14px}}.badge{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:var(--r-full);font-size:12px;line-height:16px;font-weight:500;background:var(--subtle);color:var(--text-2);white-space:nowrap}.badge-deal{background:var(--deal-soft);color:var(--deal)}.badge-pos{background:var(--pos-soft);color:var(--pos)}.badge-neg{background:var(--neg-soft);color:var(--neg)}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-primary{background:var(--primary-soft);color:var(--primary-text)}kbd{font-family:var(--mono);font-size:11px;line-height:16px;padding:1px 6px;border-radius:var(--r-xs);border:1px solid var(--border-strong);background:var(--subtle);color:var(--text-2)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg)}.card-pad{padding:16px}@media (min-width:1024px){.card-pad{padding:20px}}.card-link{transition:border-color var(--dur-instant) var(--ease-out),transform var(--dur-instant) var(--ease-out)}.card-link:hover{border-color:var(--border-strong)}.card-link:active{transform:scale(.99)}.hairline{border:0;border-top:1px solid var(--border);margin:16px 0}.img{position:relative;display:block;overflow:hidden;background:var(--subtle)}.img:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;background-image:var(--lqip);filter:blur(12px);transform:scale(1.08)}.img img{position:relative;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity var(--dur-slow) var(--ease-out)}.img.ok img{opacity:1}.img-fallback{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--subtle)}.ratio-43{aspect-ratio:4/3}.ratio-169{aspect-ratio:16/9}.ratio-32{aspect-ratio:3/2}.ratio-11{aspect-ratio:1/1}.skeleton{background:linear-gradient(90deg,var(--skel) 0,var(--skel-hi) 50%,var(--skel) 100%) 0 0/200% 100%;animation:skel 1.2s linear infinite;border-radius:var(--r-sm)}@keyframes skel{to{background-position:-200% 0}}.skel-delay{animation:fadein var(--dur-fast) var(--ease-out) .3s both}@keyframes fadein{0%{opacity:0}to{opacity:1}}.topbar{position:sticky;top:0;z-index:40;height:var(--topbar-h);background:color-mix(in srgb,var(--canvas) 92%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid transparent;transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.topbar.scrolled{border-bottom-color:var(--border);box-shadow:var(--shadow-1)}.topbar .wrap{height:100%;display:flex;align-items:center;gap:12px}.crumb{display:flex;align-items:center;gap:6px;color:var(--text-3);font-size:13px;line-height:18px;white-space:nowrap}.crumb a{color:var(--text-3);display:inline-flex;align-items:center;gap:6px}.crumb a:hover{color:var(--text);text-decoration:none}.crumb .avm{color:var(--text);display:inline-flex}.brand{display:inline-flex;align-items:center;gap:8px;color:var(--text)!important;font-weight:600;font-size:16px;letter-spacing:-.01em;text-decoration:none!important}.brand-dot{width:24px;height:24px;border-radius:7px;background:var(--primary);color:#fff;display:grid;place-items:center;font-size:13px;font-weight:600}.topnav{display:none;gap:2px;margin-left:8px}.topnav a{color:var(--text-2);padding:6px 10px;border-radius:var(--r-md);font-weight:500;transition:background-color var(--dur-instant) var(--ease-out),color var(--dur-instant) var(--ease-out)}.topnav a:hover{background:var(--hover);color:var(--text);text-decoration:none}.topnav a.active{color:var(--text);background:var(--hover)}.top-actions{margin-left:auto;display:flex;align-items:center;gap:4px}.kbar-trigger{display:none;align-items:center;gap:8px;height:32px;width:220px;padding:0 8px 0 10px;border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface);color:var(--text-3);cursor:pointer;font-size:13px;transition:border-color var(--dur-instant) var(--ease-out)}.kbar-trigger:hover{border-color:var(--text-3)}.kbar-trigger kbd{margin-left:auto}.select-pill{height:32px;border-radius:var(--r-full);border:1px solid var(--border-strong);background:var(--surface);padding:0 10px;font-size:13px;font-weight:500;color:var(--text);cursor:pointer}@media (max-width:639px){[data-app]{--topbar-h:48px;font-size:15px;line-height:22px}body{font-size:15px;line-height:22px}.crumb .crumb-text{display:none}.select-pill{height:40px}}@media (min-width:768px){.topnav{display:flex}}@media (min-width:1024px){.kbar-trigger{display:inline-flex}}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:45;display:flex;background:color-mix(in srgb,var(--surface) 96%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.tabbar a,.tabbar button{flex:1;height:var(--tabbar-h);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--text-3);font-size:11px;line-height:14px;font-weight:500;border:0;background:none;cursor:pointer;text-decoration:none!important;transition:color var(--dur-instant) var(--ease-out);position:relative}.tabbar a.active{color:var(--primary-text)}.tabbar .count{position:absolute;top:6px;left:calc(50% + 6px);min-width:16px;height:16px;border-radius:8px;background:var(--primary);color:#fff;font-size:10px;line-height:16px;text-align:center;padding:0 4px;animation:pop var(--dur-base) var(--ease-pop)}@keyframes pop{0%{transform:scale(.6)}to{transform:scale(1)}}@media (min-width:768px){.tabbar{display:none}}.has-tabbar{padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom))}@media (min-width:768px){.has-tabbar{padding-bottom:0}}.route{animation:route-in var(--dur-fast) var(--ease-out) backwards;flex:1}@keyframes route-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.progress-hair{position:fixed;top:0;left:0;height:2px;background:var(--primary);z-index:60;animation:hair 1.2s var(--ease-out) forwards}@keyframes hair{0%{width:0}to{width:80%}}.footer{border-top:1px solid var(--border);margin-top:56px;padding:32px 0 24px;background:var(--subtle)}.footer-grid{display:grid;gap:24px;grid-template-columns:1fr 1fr}@media (min-width:768px){.footer-grid{grid-template-columns:2fr 1fr 1fr 1fr}}.footer h2,.footer h4{font-size:13px;line-height:18px;color:var(--text);margin-bottom:8px}.footer ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}.footer a{color:var(--text-2);font-size:13px}.footer-base{display:flex;flex-wrap:wrap;gap:8px 16px;justify-content:space-between;margin-top:24px;padding-top:16px;border-top:1px solid var(--border);color:var(--text-3);font-size:12px;line-height:16px}.built-by{color:var(--text-3)!important;display:inline-flex;align-items:center;gap:6px;font-size:12px!important}.built-by:hover{color:var(--text)!important}.hero{padding:24px 0 8px}@media (min-width:1024px){.hero{padding:40px 0 16px}}.hero-grid{display:grid;gap:20px;align-items:center}@media (min-width:1024px){.hero-grid{grid-template-columns:1.05fr .95fr;gap:40px}}.hero h1{margin:8px 0}.hero-sub{color:var(--text-2);max-width:52ch}.hero-photo{border-radius:var(--r-xl);overflow:hidden;border:1px solid var(--border)}.hero-photo .img{aspect-ratio:4/3}@media (max-width:1023px){.hero-photo .img{aspect-ratio:16/9}}.search-card{margin-top:20px;padding:12px;border-radius:var(--r-xl);background:var(--surface);border:1px solid var(--border);display:grid;gap:8px}@media (min-width:768px){.search-card{grid-template-columns:1.4fr 1fr 1fr auto;align-items:end;padding:10px}}.field{display:grid;gap:4px;min-width:0}.field>label,.field>.label{font-size:13px;line-height:18px;font-weight:500;color:var(--text)}.search-card .field{padding:6px 10px;border-radius:var(--r-md);transition:background-color var(--dur-instant) var(--ease-out)}.search-card .field:hover{background:var(--hover)}.search-card .field label{font-size:12px;color:var(--text-3)}.search-card input,.search-card .stepper-trigger{border:0;background:transparent;padding:0;height:24px;font-size:15px;font-weight:500;outline:none;width:100%;color:var(--text);text-align:left;cursor:pointer}.search-card input::placeholder{color:var(--text-3);font-weight:400}.search-card .btn{height:48px}.suggest{position:absolute;z-index:30;top:calc(100% + 6px);left:0;right:0;background:var(--raised);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);padding:6px;list-style:none;margin:0;animation:pop-in var(--dur-fast) var(--ease-out);max-height:320px;overflow:auto}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.suggest li{display:flex;gap:10px;align-items:center;padding:8px 10px;border-radius:var(--r-md);cursor:pointer}.suggest li[aria-selected=true],.suggest li:hover{background:var(--hover)}.suggest mark{background:none;color:var(--primary-text);font-weight:600}.trending{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;align-items:center}.trust{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;margin-top:24px}@media (min-width:768px){.trust{grid-template-columns:repeat(4,1fr)}}.trust>div{background:var(--surface);padding:14px 16px;display:grid;gap:2px}.trust b{font-size:18px;line-height:24px;font-weight:600;font-variant-numeric:tabular-nums}.section{margin-top:48px}@media (min-width:1024px){.section{margin-top:56px}}.section-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:16px}.section-head p{color:var(--text-2);margin-top:4px}.grid{display:grid;gap:16px;grid-template-columns:1fr}@media (min-width:640px){.grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}}.dest-row{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(150px,1fr);gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:4px;scrollbar-width:thin}.dest{scroll-snap-align:start;display:grid;gap:8px;color:var(--text)!important;text-decoration:none!important}.dest .img{aspect-ratio:4/3;border-radius:var(--r-lg)}.dest:hover .img img{transform:scale(1.03)}.dest .img img{transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-base) var(--ease-out)}.why{display:grid;gap:12px;grid-template-columns:1fr}@media (min-width:768px){.why{grid-template-columns:repeat(4,1fr)}}.why .card{display:grid;gap:6px}.why svg{color:var(--primary-text)}.pcard{position:relative;display:flex;flex-direction:column;overflow:hidden;color:var(--text)}.pcard a.cover-link{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;border-radius:var(--r-lg)}.pcard a.cover-link-text{position:relative;z-index:2}.pcard .img{aspect-ratio:4/3}@media (max-width:639px){.pcard{border-radius:var(--r-xl)}}.pcard-body{padding:14px 16px 16px;display:grid;gap:8px;flex:1}.pcard-top{display:flex;gap:8px;align-items:center;justify-content:space-between}.pcard h3{font-size:16px;line-height:22px}.cities{color:var(--text-3);font-size:13px;line-height:18px}.price-row{display:flex;align-items:end;justify-content:space-between;gap:8px;margin-top:auto;padding-top:4px}.price{text-align:right;display:grid;justify-items:end}.price .now{font-size:18px;line-height:24px;font-weight:600;font-variant-numeric:tabular-nums}.price .was{font-size:12px;line-height:16px;color:var(--text-3);text-decoration:line-through;font-variant-numeric:tabular-nums}.price .per{font-size:12px;color:var(--text-3)}.rating{display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:500}.rating svg{color:var(--warn)}.heart{position:absolute;z-index:2;top:10px;right:10px;width:36px;height:36px;border-radius:50%;border:0;display:grid;place-items:center;background:color-mix(in srgb,var(--surface) 88%,transparent);color:var(--text-2);cursor:pointer;transition:transform var(--dur-instant) var(--ease-out),color var(--dur-instant) var(--ease-out)}.heart:active{transform:scale(.9)}.heart.on{color:var(--neg)}.heart.on svg{animation:pop var(--dur-base) var(--ease-pop)}.pcard .tag-row{position:absolute;z-index:2;top:10px;left:10px;display:flex;gap:6px}.pcard .tag-row .badge{background:color-mix(in srgb,var(--surface) 92%,transparent)}.pcard .tag-row .badge-deal{background:var(--surface)}.pcard .callback{position:relative;z-index:2}.list-head{padding-top:20px;padding-bottom:8px;display:grid;gap:4px}.filterbar{position:sticky;top:var(--topbar-h);z-index:30;background:color-mix(in srgb,var(--canvas) 94%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.filterbar .wrap{position:relative;display:flex;gap:8px;align-items:center;padding-top:10px;padding-bottom:10px;overflow-x:auto;scrollbar-width:none}.filterbar .wrap::-webkit-scrollbar{display:none}.filterbar .sep{width:1px;height:20px;background:var(--border-strong);flex:none}.filterbar .sort{margin-left:auto;flex:none}.results-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;color:var(--text-2)}.popover{position:absolute;z-index:35;margin-top:6px;min-width:260px;background:var(--raised);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);padding:12px;animation:pop-in var(--dur-fast) var(--ease-out)}.range{width:100%;accent-color:var(--primary)}.empty{display:grid;justify-items:center;text-align:center;gap:8px;padding:48px 16px;color:var(--text-2)}.empty svg{color:var(--text-3)}.detail-head{padding:16px 0 12px;display:grid;gap:8px}.detail-meta{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;color:var(--text-2);font-size:13px}.gallery{display:grid;gap:8px;grid-template-columns:1fr;border-radius:var(--r-xl);overflow:hidden}.gallery button{padding:0;border:0;background:none;cursor:zoom-in;display:block;position:relative}.gallery .img{height:100%}.gallery .g-main .img{aspect-ratio:16/10}.gallery .g-side{display:none}@media (min-width:768px){.gallery{grid-template-columns:2fr 1fr;height:420px}.gallery .g-main .img{aspect-ratio:auto;height:420px}.gallery .g-side{display:grid;gap:8px;grid-template-rows:1fr 1fr}.gallery .g-side .img{aspect-ratio:auto;height:206px}}.gallery .more{position:absolute;right:10px;bottom:10px;z-index:1}.detail-grid{display:grid;gap:24px;margin-top:24px}@media (min-width:1024px){.detail-grid{grid-template-columns:minmax(0,1fr) 380px;gap:40px;align-items:start}}.rail{position:sticky;top:calc(var(--topbar-h) + 16px);display:grid;gap:12px}.anchor-nav{display:flex;gap:4px;overflow-x:auto;border-bottom:1px solid var(--border);margin-bottom:8px;scrollbar-width:none;position:sticky;top:var(--topbar-h);background:var(--canvas);z-index:20}.anchor-nav a{padding:10px 12px;color:var(--text-2);font-weight:500;white-space:nowrap;border-bottom:2px solid transparent}.anchor-nav a:hover{color:var(--text);text-decoration:none}.anchor-nav a.active{color:var(--primary-text);border-bottom-color:var(--primary)}.dsec{padding:24px 0;border-bottom:1px solid var(--border);scroll-margin-top:calc(var(--topbar-h) + 52px)}.dsec:last-child{border-bottom:0}.dsec h2{margin-bottom:12px}.hl-list{display:grid;gap:8px;grid-template-columns:1fr;list-style:none;padding:0;margin:0}@media (min-width:640px){.hl-list{grid-template-columns:1fr 1fr}}.hl-list li{display:flex;gap:8px;align-items:flex-start}.hl-list svg{color:var(--pos);flex:none;margin-top:2px}.incl-grid{display:grid;gap:16px}@media (min-width:768px){.incl-grid{grid-template-columns:1fr 1fr}}.incl li svg.x{color:var(--neg)}.acc{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);overflow:hidden}.acc+.acc{margin-top:8px}.acc-btn{width:100%;display:flex;align-items:center;gap:12px;padding:14px 16px;border:0;background:none;text-align:left;cursor:pointer;transition:background-color var(--dur-instant) var(--ease-out)}.acc-btn:hover{background:var(--hover)}.acc-btn .dayno{flex:none;width:44px;height:44px;border-radius:var(--r-md);background:var(--primary-soft);color:var(--primary-text);display:grid;place-items:center;font-size:12px;font-weight:600;line-height:14px;text-align:center}.acc-btn .chev{margin-left:auto;color:var(--text-3);transition:transform var(--dur-base) var(--ease-out);flex:none}.acc-btn[aria-expanded=true] .chev{transform:rotate(180deg)}.acc-panel{padding:0 16px 16px 72px;color:var(--text-2);display:grid;gap:8px;animation:fadein var(--dur-base) var(--ease-out)}@media (max-width:639px){.acc-panel{padding-left:16px}}.facts{display:flex;flex-wrap:wrap;gap:6px}.map-ph{position:relative;border-radius:var(--r-lg);border:1px solid var(--border);background:linear-gradient(var(--border) 1px,transparent 1px) 0 0/32px 32px,linear-gradient(90deg,var(--border) 1px,transparent 1px) 0 0/32px 32px,var(--subtle);aspect-ratio:16/7;display:grid;place-items:center;overflow:hidden}.map-ph .pin{display:grid;justify-items:center;gap:6px;color:var(--primary-text);text-align:center}.map-ph .pin span{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-full);padding:4px 10px;color:var(--text);font-size:13px}.hist{display:grid;gap:6px}.hist-row{display:grid;grid-template-columns:28px 1fr 40px;gap:8px;align-items:center;font-size:13px;color:var(--text-2)}.hist-bar{height:6px;border-radius:3px;background:var(--subtle);overflow:hidden}.hist-bar span{display:block;height:100%;background:var(--primary);border-radius:3px}.reviews-grid{display:grid;gap:16px;grid-template-columns:minmax(0,1fr);align-items:start}@media (min-width:640px){.reviews-grid{grid-template-columns:minmax(0,220px) minmax(0,1fr)}}.review{display:grid;gap:6px;padding:14px 0;border-top:1px solid var(--border)}.avatar{width:32px;height:32px;border-radius:50%;background:var(--primary-soft);color:var(--primary-text);display:grid;place-items:center;font-size:12px;font-weight:600;flex:none}.mobile-bar{position:fixed;left:0;right:0;max-width:100%;box-sizing:border-box;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom));z-index:44;background:var(--surface);border-top:1px solid var(--border);padding:10px 16px;display:flex;align-items:center;gap:12px}@media (min-width:768px){.mobile-bar{bottom:0}}@media (min-width:1024px){.mobile-bar{display:none}}.has-mobile-bar{padding-bottom:72px}@media (min-width:1024px){.has-mobile-bar{padding-bottom:0}}.cal{display:grid;gap:8px}.cal-head{display:flex;align-items:center;justify-content:space-between}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-dow{text-align:center;font-size:11px;line-height:16px;color:var(--text-3);font-weight:500}.cal-day{min-height:48px;border-radius:var(--r-md);border:1px solid transparent;background:transparent;display:grid;align-content:center;justify-items:center;gap:1px;cursor:pointer;padding:2px;transition:background-color var(--dur-instant) var(--ease-out),border-color var(--dur-instant) var(--ease-out),transform var(--dur-instant) var(--ease-out)}.cal-day:hover:not(:disabled){background:var(--hover)}.cal-day:active:not(:disabled){transform:scale(.95)}.cal-day .d{font-size:13px;line-height:16px;font-weight:500}.cal-day .p{font-size:10px;line-height:12px;color:var(--text-3);font-variant-numeric:tabular-nums}.cal-day.cheap .p{color:var(--pos);font-weight:600}.cal-day.peak .p{color:var(--warn)}.cal-day:disabled{opacity:.35;cursor:default}.cal-day[aria-pressed=true]{background:var(--primary);border-color:var(--primary)}.cal-day[aria-pressed=true] .d,.cal-day[aria-pressed=true] .p{color:#fff}.cal-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--text-3)}.cal-legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;vertical-align:middle}.stepper{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0}.stepper+.stepper{border-top:1px solid var(--border)}.stepper .ctl{display:flex;align-items:center;gap:10px}.stepper .ctl button{width:36px;height:36px;border-radius:50%;border:1px solid var(--border-strong);background:var(--surface);cursor:pointer;display:grid;place-items:center;transition:background-color var(--dur-instant) var(--ease-out),transform var(--dur-instant) var(--ease-out)}.stepper .ctl button:hover:not(:disabled){background:var(--subtle)}.stepper .ctl button:active:not(:disabled){transform:scale(.92)}.stepper .ctl button:disabled{opacity:.4;cursor:not-allowed}.stepper output{min-width:20px;text-align:center;font-weight:600;font-variant-numeric:tabular-nums}@media (max-width:639px){.stepper .ctl button{width:44px;height:44px}}.input,.select,.textarea{width:100%;height:40px;padding:0 12px;border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);transition:border-color var(--dur-instant) var(--ease-out),box-shadow var(--dur-instant) var(--ease-out)}.textarea{height:auto;min-height:96px;padding:10px 12px;resize:vertical}.input:hover,.select:hover,.textarea:hover{border-color:var(--text-3)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.input[aria-invalid=true],.select[aria-invalid=true]{border-color:var(--neg)}.input::placeholder{color:var(--text-3)}@media (max-width:639px){.input,.select{height:44px;font-size:16px}}.help{min-height:18px;font-size:13px;line-height:18px;color:var(--text-3)}.help.err{color:var(--neg);display:flex;gap:6px;align-items:flex-start}.help.err svg{flex:none;margin-top:1px}.help.ok{color:var(--pos);display:flex;gap:6px}.form-grid{display:grid;gap:4px 16px;grid-template-columns:1fr}@media (min-width:640px){.form-grid{grid-template-columns:1fr 1fr}.form-grid .span2{grid-column:span 2}.form-grid-3{grid-template-columns:2fr 1fr 1fr}}.seg{display:inline-flex;padding:3px;border-radius:var(--r-full);background:var(--subtle);border:1px solid var(--border);gap:2px}.seg button{min-height:32px;padding:0 12px;border-radius:var(--r-full);border:0;background:transparent;cursor:pointer;font-weight:500;color:var(--text-2);transition:background-color var(--dur-instant) var(--ease-out),color var(--dur-instant) var(--ease-out)}.seg button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:0 0 0 1px var(--border-strong)}@media (max-width:639px){.seg button{min-height:40px}}.err-summary{border:1px solid color-mix(in srgb,var(--neg) 35%,transparent);background:var(--neg-soft);color:var(--neg);border-radius:var(--r-lg);padding:12px 14px;display:grid;gap:4px}.err-summary ul{margin:0;padding-left:18px}.err-summary a{color:var(--neg);text-decoration:underline}.note{border:1px solid var(--border);background:var(--subtle);border-radius:var(--r-lg);padding:12px 14px;color:var(--text-2);display:flex;gap:10px;align-items:flex-start;font-size:13px;line-height:18px}.note svg{flex:none;color:var(--text-3);margin-top:1px}.note-warn{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 30%,transparent);color:var(--warn)}.note-warn svg{color:var(--warn)}.co-grid{display:grid;gap:20px;padding-top:16px}@media (min-width:1024px){.co-grid{grid-template-columns:minmax(0,1fr) 380px;gap:32px;align-items:start}}.step{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg)}.step+.step{margin-top:12px}.step-head{width:100%;display:flex;align-items:center;gap:12px;padding:16px;border:0;background:none;text-align:left;cursor:pointer;border-radius:var(--r-lg)}.step-head:hover{background:var(--hover)}.step-no{width:28px;height:28px;border-radius:50%;flex:none;display:grid;place-items:center;font-size:13px;font-weight:600;background:var(--subtle);color:var(--text-2);border:1px solid var(--border-strong)}.step.done .step-no{background:var(--pos);border-color:var(--pos);color:#fff}.step.open .step-no{background:var(--primary);border-color:var(--primary);color:#fff}.step-sum{margin-left:auto;color:var(--text-3);font-size:13px;text-align:right}.step-body{padding:0 16px 16px;animation:fadein var(--dur-base) var(--ease-out)}@media (min-width:1024px){.step-body{padding:0 20px 20px}.step-head{padding:16px 20px}}.trav{padding:12px 0;border-top:1px solid var(--border)}.trav:first-child{border-top:0;padding-top:0}.pay-methods{display:grid;gap:8px}.pm{border:1px solid var(--border-strong);border-radius:var(--r-lg);background:var(--surface);transition:border-color var(--dur-instant) var(--ease-out),background-color var(--dur-instant) var(--ease-out)}.pm.on{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.pm-head{width:100%;display:flex;align-items:center;gap:12px;padding:14px 16px;border:0;background:none;text-align:left;cursor:pointer;min-height:56px}.pm-head .radio{width:18px;height:18px;border-radius:50%;border:2px solid var(--border-strong);flex:none;display:grid;place-items:center}.pm.on .radio{border-color:var(--primary)}.pm.on .radio:after{content:"";width:8px;height:8px;border-radius:50%;background:var(--primary);animation:pop var(--dur-base) var(--ease-pop)}.pm-head .sub{color:var(--text-3);font-size:12px;line-height:16px}.pm-head .badge{margin-left:auto}.pm-body{padding:0 16px 16px;display:grid;gap:12px;animation:fadein var(--dur-base) var(--ease-out)}.qr-box{display:grid;gap:12px;justify-items:center;text-align:center;padding:16px;border:1px dashed var(--border-strong);border-radius:var(--r-lg);background:var(--subtle)}.qr-box .qr{width:200px;height:200px;background:#fff;border-radius:var(--r-md);padding:10px;border:1px solid var(--border)}.qr-box .qr svg{width:100%;height:100%;display:block}.apps{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.summary{display:grid;gap:12px}.sum-pkg{display:flex;gap:12px}.sum-pkg .img{width:84px;height:63px;border-radius:var(--r-md);flex:none}.lines{display:grid;gap:6px;font-size:14px}.line{display:flex;justify-content:space-between;gap:12px;color:var(--text-2)}.line span:last-child{font-variant-numeric:tabular-nums;color:var(--text)}.line.disc span:last-child{color:var(--pos)}.line.total{border-top:1px solid var(--border);padding-top:10px;margin-top:4px;font-size:16px;font-weight:600;color:var(--text)}.line.total span:last-child{font-size:20px;line-height:26px}.coupon-row{display:flex;gap:8px}.coupon-row .input{text-transform:uppercase}.coupon-chips{display:flex;gap:6px;flex-wrap:wrap}.secure{display:flex;gap:8px;align-items:center;justify-content:center;color:var(--text-3);font-size:12px}.pay-status{border-radius:var(--r-lg);padding:12px 14px;display:flex;gap:10px;align-items:flex-start;border:1px solid var(--border)}.pay-status.failed{background:var(--neg-soft);border-color:color-mix(in srgb,var(--neg) 30%,transparent);color:var(--neg)}.pay-status.working{background:var(--primary-soft);color:var(--primary-text)}.pay-status.pending{background:var(--warn-soft);color:var(--warn)}.demo-banner{display:flex;gap:8px;align-items:center;padding:8px 12px;border-radius:var(--r-md);background:var(--subtle);border:1px solid var(--border);color:var(--text-2);font-size:12px;line-height:16px}.mock-bank{display:grid;gap:12px}.mock-bank .bank-logo{display:flex;gap:10px;align-items:center;padding:12px;border-radius:var(--r-md);background:var(--subtle)}.confirm-hero{display:grid;justify-items:center;text-align:center;gap:8px;padding:32px 0 16px}.check-ring{width:56px;height:56px;border-radius:50%;background:var(--pos-soft);color:var(--pos);display:grid;place-items:center;animation:pop var(--dur-base) var(--ease-pop)}.check-ring.pending{background:var(--warn-soft);color:var(--warn)}.invoice{background:#fff;color:#0d1626;border:1px solid var(--border);border-radius:var(--r-lg);padding:24px}[data-theme=dark] .invoice{background:var(--surface);color:var(--text)}.inv-head{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.inv-table{width:100%;border-collapse:collapse;margin-top:16px;font-size:13px}.inv-table th,.inv-table td{padding:8px 6px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.inv-table th{color:var(--text-2);font-weight:500;background:var(--subtle)}.inv-table td.r,.inv-table th.r{text-align:right;font-variant-numeric:tabular-nums}.inv-table tfoot td{font-weight:600;border-bottom:0}.actions{display:flex;gap:8px;flex-wrap:wrap}.trip{display:grid;grid-template-columns:96px 1fr;gap:12px;padding:12px}@media (min-width:640px){.trip{grid-template-columns:140px 1fr auto;align-items:center;padding:14px}}.trip .img{border-radius:var(--r-md);aspect-ratio:4/3}.trip-actions{grid-column:1 / -1;display:flex;gap:8px;flex-wrap:wrap}@media (min-width:640px){.trip-actions{grid-column:auto;justify-content:flex-end}}.table-wrap{border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;background:var(--surface)}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th{position:sticky;top:0;background:var(--subtle);color:var(--text-2);font-weight:500;text-align:left;padding:8px 12px;border-bottom:1px solid var(--border);white-space:nowrap}table.data td{padding:8px 12px;border-bottom:1px solid var(--border);height:48px}table.data tr:last-child td{border-bottom:0}table.data tr:hover td{background:var(--hover)}table.data td.r,table.data th.r{text-align:right;font-variant-numeric:tabular-nums}table.data .row-actions{display:flex;gap:4px;justify-content:flex-end}.admin-cards{display:grid;gap:8px}@media (min-width:768px){.admin-cards{display:none}}@media (max-width:767px){.table-wrap.admin{display:none}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:var(--backdrop);display:grid;place-items:center;padding:16px;animation:fadein var(--dur-base) var(--ease-out)}.modal{width:100%;max-width:480px;max-height:calc(100vh - 32px);overflow:auto;background:var(--raised);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow-modal);animation:modal-in var(--dur-base) var(--ease-out)}.modal-wide{max-width:960px}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 6px 20px}.modal-head h2{font-size:18px;line-height:24px}.modal-body{padding:8px 20px 20px}@keyframes modal-in{0%{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}@media (max-width:639px){.modal-backdrop.sheet-mobile{place-items:end center;padding:0}.sheet-mobile .modal{max-width:none;border-radius:var(--r-xl) var(--r-xl) 0 0;max-height:92vh;animation:sheet-in var(--dur-slow) var(--ease-out);padding-bottom:env(safe-area-inset-bottom)}.sheet-mobile .modal:before{content:"";display:block;width:36px;height:4px;border-radius:2px;background:var(--border-strong);margin:8px auto 0}}@keyframes sheet-in{0%{transform:translateY(12%);opacity:.6}to{transform:none;opacity:1}}.lightbox .modal-body{padding:0 12px 12px}.lightbox .lb-img .img{aspect-ratio:3/2;border-radius:var(--r-lg)}.lb-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px}.kbar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;background:var(--backdrop);animation:fadein var(--dur-fast) var(--ease-out)}.kbar{position:fixed;z-index:91;left:50%;top:15vh;transform:translate(-50%);width:min(640px,calc(100vw - 24px));background:var(--raised);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow-modal);overflow:hidden;animation:kbar-in var(--dur-base) var(--ease-out)}@keyframes kbar-in{0%{opacity:0;transform:translate(-50%,-6px) scale(.985)}to{opacity:1;transform:translate(-50%)}}.kbar-input{display:flex;align-items:center;gap:10px;padding:0 16px;border-bottom:1px solid var(--border)}.kbar-input input{flex:1;height:52px;border:0;outline:none;background:transparent;font-size:16px}.kbar-list{max-height:min(420px,60vh);overflow:auto;padding:6px;list-style:none;margin:0}.kbar-group{padding:8px 10px 4px;font-size:12px;line-height:16px;color:var(--text-3);font-weight:500}.kbar-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--r-md);cursor:pointer}.kbar-item[aria-selected=true]{background:var(--primary-soft)}.kbar-item .hint{margin-left:auto;color:var(--text-3);font-size:12px;display:flex;gap:4px}.kbar-item mark{background:none;color:var(--primary-text);font-weight:600}.kbar-foot{display:flex;gap:12px;padding:8px 14px;border-top:1px solid var(--border);color:var(--text-3);font-size:12px}.toasts{position:fixed;z-index:95;right:16px;bottom:16px;display:grid;gap:8px;justify-items:end;pointer-events:none}@media (max-width:767px){.toasts{left:12px;right:12px;justify-items:center;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 12px)}.toasts.raised{bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 84px)}}.toast{pointer-events:auto;display:flex;align-items:center;gap:10px;min-height:44px;max-width:420px;padding:10px 10px 10px 14px;border-radius:var(--r-lg);background:var(--raised);color:var(--text);border:1px solid var(--border);box-shadow:var(--shadow-pop);animation:toast-in var(--dur-fast) var(--ease-out);font-size:14px}.toast.leaving{animation:toast-out 90ms var(--ease-in) forwards}.toast-ok svg:first-child{color:var(--pos)}.toast-err{border-color:color-mix(in srgb,var(--neg) 35%,transparent)}.toast-err svg:first-child{color:var(--neg)}.toast .t-act{margin-left:4px;height:32px;padding:0 10px;border-radius:var(--r-md);border:0;background:var(--hover);color:var(--primary-text);font-weight:600;cursor:pointer}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes toast-out{to{opacity:0;transform:translateY(4px)}}.fab{position:fixed;right:16px;bottom:16px;z-index:42;display:none}@media (min-width:768px){.fab{display:block}.toasts{bottom:76px}}.fab .btn{box-shadow:var(--shadow-pop)}.page-title{padding:20px 0 4px;display:grid;gap:4px}.stack{display:grid;gap:12px}.row{display:flex;gap:12px;align-items:center}.spacer{flex:1}.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;font-size:13px}.kv dt{color:var(--text-3)}.kv dd{margin:0}.status{display:inline-flex;gap:6px;align-items:center}.tag-mono{font-family:var(--mono);font-size:12px;padding:2px 6px;border-radius:var(--r-xs);background:var(--subtle);border:1px solid var(--border)}.shortcut-list{display:grid;gap:8px}.shortcut-list div{display:flex;justify-content:space-between;gap:12px}.offline-bar{position:fixed;top:var(--topbar-h);left:0;right:0;z-index:39;text-align:center;font-size:12px;padding:4px;background:var(--warn-soft);color:var(--warn)}@media (prefers-reduced-motion: reduce){[data-app]{--dur-instant:0ms;--dur-base:0ms;--dur-slow:0ms;--dur-fast:.1s}[data-app] *,[data-app] *:before,[data-app] *:after{animation-duration:0ms!important;animation-delay:0ms!important;scroll-behavior:auto!important}[data-app] .skeleton,.route{animation:none}}@media print{.topbar,.tabbar,.footer,.fab,.no-print,.toasts,.skip-link{display:none!important}[data-app]{background:#fff}.invoice{border:0;padding:0}.print-only{display:block!important}}.print-only{display:none}@media (min-width:1024px){.hide-lg{display:none!important}}@media (max-width:1023px){.hide-mobile{display:none!important}}.sheet-book .dep-field{display:none}.detail-grid,.co-grid,.hero-grid{grid-template-columns:minmax(0,1fr)}.detail-grid>*,.co-grid>*,.hero-grid>*,.grid>*{min-width:0}@media (min-width:1024px){.detail-grid,.co-grid{grid-template-columns:minmax(0,1fr) 380px}.hero-grid{grid-template-columns:1.05fr .95fr}}@media (max-width:1023px){[data-app]:has(.mobile-bar) .toasts{bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 84px)}[data-app]:has(.mobile-bar) .fab{display:none}}@media (min-width:768px) and (max-width:1023px){[data-app]:has(.mobile-bar) .toasts{bottom:84px}}@media (max-width:639px){.inv-head>div:last-child{text-align:left!important}.invoice{padding:16px}}.cart-btn{position:relative}.cart-count{position:absolute;top:4px;right:4px;min-width:16px;height:16px;border-radius:8px;background:var(--primary);color:#fff;font-size:10px;line-height:16px;text-align:center;padding:0 4px;font-weight:600}@media (max-width:639px){.input,.select,.textarea,.search-card input{font-size:16px}}@media (min-width:1024px){[data-app]:has(.rail) .fab{display:none}}
