@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/e3486bdde5b50ff9-s.39_5ogqfb20zu.woff2?dpl=dpl_4TuPjjrcCD5KxEubuCLhysKapSq7)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8f0e93347af35af6-s.2gwtk7wf2n5-x.woff2?dpl=dpl_4TuPjjrcCD5KxEubuCLhysKapSq7)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/f3b6bc6f21a9e120-s.p.0yy4mrhy923po.woff2?dpl=dpl_4TuPjjrcCD5KxEubuCLhysKapSq7)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Fallback;src:local(Times New Roman);ascent-override:84.71%;descent-override:22.09%;line-gap-override:0.0%;size-adjust:115.45%}.fraunces_de3456c3-module__xRTryq__className{font-family:Fraunces,Fraunces Fallback;font-style:normal}.fraunces_de3456c3-module__xRTryq__variable{--font-display:"Fraunces", "Fraunces Fallback"}
@font-face{font-family:Figtree;font-style:normal;font-weight:300 900;font-display:swap;src:url(../media/400bf8aa837fcb7e-s.19g-lkcx7iw64.woff2?dpl=dpl_4TuPjjrcCD5KxEubuCLhysKapSq7)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Figtree;font-style:normal;font-weight:300 900;font-display:swap;src:url(../media/f7aa21714c1c53f8-s.p.0-95eo-012xnf.woff2?dpl=dpl_4TuPjjrcCD5KxEubuCLhysKapSq7)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Figtree Fallback;src:local(Arial);ascent-override:94.32%;descent-override:24.82%;line-gap-override:0.0%;size-adjust:100.72%}.figtree_f6da4f8a-module__6F4JWG__className{font-family:Figtree,Figtree Fallback;font-style:normal}.figtree_f6da4f8a-module__6F4JWG__variable{--font-body:"Figtree", "Figtree Fallback"}
:root{--night:#212547;--night-deep:#171a35;--paper:#faf5ec;--paper-warm:#f5ead9;--ink:#2b2521;--ink-soft:#6b5f56;--lantern:#d9482f;--lantern-deep:#b03520;--amber:#f0a03c;--amber-soft:#fbe3bd;--jade:#2e7d5f;--jade-deep:#1f5c45;--jade-soft:#e0efe7;--line:#e6dccb;--radius:14px;--radius-sm:8px;--text-base:clamp(1rem, .95rem + .3vw, 1.08rem);--text-lg:clamp(1.15rem, 1.05rem + .5vw, 1.35rem);--text-title:clamp(1.5rem, 1.2rem + 1.5vw, 2.2rem);--text-hero:clamp(2.1rem, 1.4rem + 4vw, 3.6rem);--space-section:clamp(2.5rem, 2rem + 2.5vw, 4.5rem);--duration-fast:.15s;--duration-normal:.3s;--ease-out:cubic-bezier(.16, 1, .3, 1)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-body), "Avenir Next", system-ui, sans-serif;font-size:var(--text-base);margin:0;line-height:1.6}h1,h2,h3{font-family:var(--font-display), Georgia, serif;text-wrap:balance;margin:0 0 .5em;line-height:1.15}h1{font-size:var(--text-hero);font-weight:640}h2{font-size:var(--text-title);font-weight:600}h3{font-size:var(--text-lg);font-weight:600}p{margin:0 0 1em}a{color:var(--jade-deep)}img,svg{max-width:100%;height:auto}.container{max-width:46rem;margin:0 auto;padding:0 1.1rem}.container-wide{max-width:62rem;margin:0 auto;padding:0 1.1rem}.nav{z-index:50;background:var(--night);color:var(--paper);border-bottom:3px solid var(--lantern);position:sticky;top:0}.nav-inner{align-items:center;gap:1rem;max-width:62rem;margin:0 auto;padding:.6rem 1.1rem;display:flex}.nav-brand{font-family:var(--font-display), Georgia, serif;color:var(--paper);white-space:nowrap;align-items:center;gap:.5rem;font-size:1.1rem;font-weight:640;text-decoration:none;display:flex}.nav-brand .zh{color:var(--amber);font-size:.95em}.nav-links{gap:.15rem;margin-left:auto;display:flex}.nav-links a{color:#faf5ecd1;border-radius:var(--radius-sm);white-space:nowrap;transition:background var(--duration-fast) ease, color var(--duration-fast) ease;padding:.45rem .7rem;font-size:.92rem;font-weight:500;text-decoration:none}.nav-links a:hover{color:var(--paper);background:#faf5ec1f}.nav-links a.active{background:var(--lantern);color:var(--paper)}.nav-toggle{cursor:pointer;z-index:70;background:0 0;border:none;margin-left:auto;padding:.5rem;display:none;position:relative}.burger{flex-direction:column;justify-content:space-between;width:1.5rem;height:1.1rem;display:flex}.burger span{background:var(--paper);width:100%;height:2.5px;transition:transform var(--duration-normal) var(--ease-out), opacity var(--duration-fast) ease;border-radius:2px;display:block}.burger.x span:first-child{transform:translateY(.42rem)rotate(45deg)}.burger.x span:nth-child(2){opacity:0}.burger.x span:nth-child(3){transform:translateY(-.42rem)rotate(-45deg)}.nav-backdrop{display:none}@media (max-width:720px){.nav-toggle{display:block}.nav-links{background:var(--night-deep);border-left:3px solid var(--lantern);visibility:hidden;width:min(72vw,17rem);height:100dvh;transition:transform var(--duration-normal) var(--ease-out), visibility 0s var(--duration-normal);z-index:60;flex-direction:column;gap:.35rem;margin:0;padding:4.6rem 1rem 2rem;position:fixed;top:0;right:0;transform:translate(105%);box-shadow:-12px 0 32px #00000059}.nav-links.open{visibility:visible;transition:transform var(--duration-normal) var(--ease-out), visibility 0s;transform:none}.nav-links a{padding:.8rem .9rem;font-size:1.08rem}.nav-backdrop{cursor:pointer;z-index:55;background:#171a358c;border:none;padding:0;display:block;position:fixed;inset:0}}@media (prefers-reduced-motion:reduce){.nav-links,.nav-links.open,.burger span{transition:none}}.nav-links a:focus-visible,a:focus-visible,button:focus-visible{outline:2px solid var(--amber);outline-offset:2px}.hero{background:linear-gradient(180deg, var(--night-deep) 0%, var(--night) 72%, #2c3157 100%);color:var(--paper);padding-bottom:0;overflow:hidden}.hero-inner{text-align:center;max-width:62rem;margin:0 auto;padding:clamp(2rem,5vw,3.5rem) 1.1rem 0}.hero-eyebrow{color:var(--amber);letter-spacing:.16em;text-transform:uppercase;margin-bottom:.6rem;font-size:.78rem;font-weight:600}.hero h1{color:var(--paper);margin-bottom:.4rem}.hero .hero-zh{font-family:var(--font-display), Georgia, serif;color:var(--amber);font-size:var(--text-lg);margin-bottom:.8rem}.hero-dates{color:#faf5ecd9;flex-wrap:wrap;justify-content:center;gap:.5rem 1.2rem;margin-bottom:.5rem;font-size:.95rem;display:inline-flex}.hero-art{width:100%;margin-top:-1rem;display:block}.section{padding:var(--space-section) 0}.section-tight{padding:calc(var(--space-section) * .6) 0}.card{border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:1.3rem 1.4rem;box-shadow:0 1px 2px #2b25210d}.card.has-photo{flex-direction:column;padding:0;display:flex;overflow:hidden}.card.has-photo .card-body{padding:1.1rem 1.4rem 1.3rem}.card-photo{aspect-ratio:5/3;object-fit:cover;width:100%;display:block}.card-grid{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:1rem;display:grid}.card h3{align-items:center;gap:.55rem;display:flex}.eyebrow{color:var(--lantern);letter-spacing:.14em;text-transform:uppercase;margin-bottom:.4rem;font-size:.75rem;font-weight:600}.stat-row{flex-wrap:wrap;justify-content:center;gap:.8rem;display:flex}.stat{border-radius:var(--radius);text-align:center;background:#faf5ec1a;border:1px solid #faf5ec40;min-width:6.2rem;padding:.7rem 1.1rem}.stat .num{font-family:var(--font-display), Georgia, serif;color:var(--amber);font-variant-numeric:tabular-nums;font-size:1.7rem;font-weight:640;line-height:1.1}.stat .label{color:#faf5eccc;font-size:.8rem}.btn{background:var(--lantern);color:#fff;cursor:pointer;transition:transform var(--duration-fast) var(--ease-out), background var(--duration-fast) ease;border:none;border-radius:999px;padding:.75rem 1.7rem;font-family:inherit;font-size:1rem;font-weight:600;text-decoration:none;display:inline-block}.btn:hover{background:var(--lantern-deep);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn.jade{background:var(--jade)}.btn.jade:hover{background:var(--jade-deep)}.btn:disabled{opacity:.6;cursor:default;transform:none}.field{margin-bottom:1.15rem}.field-label{margin-bottom:.35rem;font-weight:600;display:block}.field-hint{color:var(--ink-soft);margin:-.2rem 0 .45rem;font-size:.88rem}input[type=text],input[type=number],input[type=password],textarea,select{width:100%;font:inherit;color:var(--ink);border:1.5px solid var(--line);border-radius:var(--radius-sm);transition:border-color var(--duration-fast) ease;background:#fff;padding:.6rem .75rem}input:focus,textarea:focus,select:focus{border-color:var(--jade);box-shadow:0 0 0 3px var(--jade-soft);outline:none}textarea{resize:vertical;min-height:4.5rem}.choice-list{flex-direction:column;gap:.45rem;display:flex}.choice{border:1.5px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;transition:border-color var(--duration-fast) ease, background var(--duration-fast) ease;background:#fff;align-items:flex-start;gap:.6rem;padding:.6rem .75rem;display:flex}.choice:hover{border-color:var(--amber)}.choice:has(input:checked){border-color:var(--jade);background:var(--jade-soft)}.choice input{accent-color:var(--jade);flex-shrink:0;margin-top:.28rem}.chip-group{flex-wrap:wrap;gap:.45rem;display:flex}.chip-choice{border:1.5px solid var(--line);cursor:pointer;transition:border-color var(--duration-fast) ease, background var(--duration-fast) ease;background:#fff;border-radius:999px;align-items:center;gap:.4rem;padding:.42rem .9rem;font-size:.93rem;display:inline-flex}.chip-choice:hover{border-color:var(--amber)}.chip-choice:has(input:checked){border-color:var(--lantern);background:var(--amber-soft)}.chip-choice input{accent-color:var(--lantern)}.matrix{flex-direction:column;gap:.55rem;display:flex}.matrix-row{border:1.5px solid var(--line);border-radius:var(--radius-sm);background:#fff;grid-template-columns:1fr auto;align-items:center;gap:.6rem;padding:.55rem .75rem;display:grid}.matrix-opts{gap:.25rem;display:flex}.matrix-opts label{border:1.5px solid var(--line);cursor:pointer;white-space:nowrap;border-radius:999px;padding:.3rem .55rem;font-size:.78rem}.matrix-opts label:has(input:checked){background:var(--jade);border-color:var(--jade);color:#fff}.matrix-opts input{opacity:0;pointer-events:none;position:absolute}@media (max-width:520px){.matrix-row{grid-template-columns:1fr}.matrix-opts{justify-content:flex-start}}.survey-section{border:1px solid var(--line);border-radius:var(--radius);background:#fff;margin-bottom:1.4rem;padding:1.4rem 1.4rem .6rem}.survey-section>h2{border-bottom:2px solid var(--amber);align-items:center;gap:.6rem;padding-bottom:.5rem;font-size:1.25rem;display:flex}.survey-sec-num{background:var(--lantern);color:#fff;font-family:var(--font-body), sans-serif;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:1.7rem;height:1.7rem;font-size:.8rem;font-weight:700;display:inline-flex}.kid-row{grid-template-columns:1fr 5.5rem auto;gap:.6rem;margin-bottom:.6rem;display:grid}.kid-row button{border:1.5px solid var(--line);border-radius:var(--radius-sm);color:var(--lantern);cursor:pointer;background:0 0;padding:0 .7rem;font-size:1.1rem}.badge-admin{background:var(--amber-soft);color:#8a5a13;letter-spacing:.06em;text-transform:uppercase;vertical-align:middle;border-radius:4px;padding:.15rem .5rem;font-size:.72rem;font-weight:600;display:inline-block}.notice{background:var(--jade-soft);border-radius:var(--radius);padding:1rem 1.2rem;font-size:.95rem}.notice.warm{background:var(--amber-soft)}.error-text{color:var(--lantern-deep);font-weight:600}.day-card{border:1px solid var(--line);border-radius:var(--radius);background:#fff;overflow:hidden}.day-photo{aspect-ratio:7/3;object-fit:cover;width:100%;display:block}.day-card-inner{grid-template-columns:3.4rem 1fr;gap:1rem;padding:1.1rem 1.2rem;display:grid}.kids-line{background:var(--jade-soft);border-radius:var(--radius-sm);margin-bottom:.55rem;padding:.5rem .75rem;font-size:.93rem}.link-chips{flex-wrap:wrap;gap:.45rem;margin-top:.55rem;display:flex}.link-chip{color:var(--jade-deep);background:var(--jade-soft);transition:background var(--duration-fast) ease, transform var(--duration-fast) var(--ease-out);border-radius:999px;align-items:center;gap:.35rem;padding:.32rem .85rem;font-size:.84rem;font-weight:600;text-decoration:none;display:inline-flex}.link-chip:hover{background:#cfe5da;transform:translateY(-1px)}.link-chip.map{color:#8a5a13;background:var(--amber-soft)}.link-chip.map:hover{background:#f5d69a}.day-num{font-family:var(--font-display), Georgia, serif;color:var(--lantern);text-align:center;font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:640;line-height:1.1}.day-num .sub{font-family:var(--font-body), sans-serif;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em;font-size:.68rem;display:block}.day-list{flex-direction:column;gap:.8rem;display:flex}.tag{border-radius:4px;margin-right:.35rem;padding:.12rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.tag.jade{background:var(--jade-soft);color:var(--jade-deep)}.tag.amber{background:var(--amber-soft);color:#8a5a13}.quote-msg{background:var(--paper-warm);border:1px dashed var(--amber);border-radius:var(--radius-sm);font-family:var(--font-body), sans-serif;white-space:pre-wrap;-webkit-user-select:all;user-select:all;margin:.6rem 0 .8rem;padding:.9rem 1rem;font-size:.88rem;line-height:1.55;overflow-x:auto}.bite-progress{margin:1rem 0 1.2rem}.bite-progress-bar{background:var(--paper-warm);border-radius:999px;height:.7rem;margin-bottom:.4rem;overflow:hidden}.bite-progress-fill{background:linear-gradient(90deg, var(--jade) 0%, var(--amber) 100%);height:100%;transition:width var(--duration-normal) var(--ease-out);border-radius:999px}.bite-progress-label{color:var(--ink-soft);font-size:.92rem}.bite-list{flex-direction:column;gap:.55rem;margin:0;padding:0;list-style:none;display:flex}.bite{border:1.5px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;transition:border-color var(--duration-fast) ease, background var(--duration-fast) ease;background:#fff;align-items:flex-start;gap:.7rem;padding:.75rem .85rem;display:flex}.bite:hover{border-color:var(--amber)}.bite.done{border-color:var(--jade);background:var(--jade-soft)}.bite.done .bite-name{text-decoration:line-through;-webkit-text-decoration-color:var(--jade);text-decoration-color:var(--jade);text-decoration-thickness:2px}.bite input{accent-color:var(--jade);flex-shrink:0;width:1.15rem;height:1.15rem;margin-top:.3rem}.bite-body{flex-direction:column;gap:.15rem;display:flex}.bite-name{font-weight:700}.bite-zh{color:var(--lantern);font-weight:500}.bite-what{font-size:.95rem}.bite-where{color:var(--ink-soft);font-size:.85rem}.spot-status{background:var(--lantern);color:#fff;letter-spacing:.05em;text-transform:uppercase;border-radius:4px;margin-bottom:.35rem;padding:.16rem .5rem;font-size:.72rem;font-weight:700;display:inline-block}.spot-status.local{background:var(--jade)}.table-wrap{overflow-x:auto}table.data{border-collapse:collapse;width:100%;font-size:.92rem}table.data th,table.data td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.55rem .7rem}table.data th{text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft);font-size:.78rem}.footer{background:var(--night);color:#faf5ecbf;text-align:center;margin-top:var(--space-section);padding:1.6rem 1.1rem 2rem;font-size:.88rem}.footer .zh{color:var(--amber)}@media (prefers-reduced-motion:no-preference){html.fx-ready [data-reveal]{opacity:0;transform:translateY(18px)}html.fx-ready [data-reveal].revealed{opacity:1;transition:opacity .65s ease, transform .65s var(--ease-out);transform:none}html.fx-ready .card-grid>[data-reveal].revealed:nth-child(2){transition-delay:90ms}html.fx-ready .card-grid>[data-reveal].revealed:nth-child(3){transition-delay:.18s}html.fx-ready .card-grid>[data-reveal].revealed:nth-child(4){transition-delay:90ms}html.fx-ready .card-grid>[data-reveal].revealed:nth-child(5){transition-delay:.18s}html.fx-ready .card-grid>[data-reveal].revealed:nth-child(6){transition-delay:.27s}.plx-lanterns{transform:translateY(calc(var(--sy,0) * -.09px))}.plx-moon{transform:translateY(calc(var(--sy,0) * .05px))}.card{transition:transform var(--duration-normal) var(--ease-out), box-shadow var(--duration-normal) ease}.card:hover{transform:translateY(-4px);box-shadow:0 10px 24px #2b25211a}}.flight-wrap{background:linear-gradient(180deg, var(--paper) 0%, var(--night-deep) 6%, var(--night) 94%, var(--paper) 100%);height:240vh;margin:var(--space-section) 0}.flight-sticky{flex-direction:column;justify-content:center;height:100dvh;padding:1rem 1.1rem;display:flex;position:sticky;top:0;overflow:hidden}.flight-svg{width:min(56rem,100%);margin:0 auto;display:block}.flight-label{font-family:var(--font-body), sans-serif;letter-spacing:.12em;fill:var(--paper);opacity:.9;font-size:15px;font-weight:700}.flight-arc{stroke:var(--amber);stroke-width:2.5px;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:0}.flight-captions{text-align:center;width:min(30rem,100%);height:5.2rem;margin:.4rem auto 0;position:relative}.flight-caption{opacity:0;transition:opacity .4s ease, transform .4s var(--ease-out);color:#faf5ecd9;flex-direction:column;gap:.2rem;display:flex;position:absolute;inset:0;transform:translateY(8px)}.flight-caption strong{font-family:var(--font-display), Georgia, serif;font-size:var(--text-lg);color:var(--amber)}.flight-caption span{font-size:.95rem}.flight-caption.on{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.flight-wrap{height:auto}.flight-sticky{height:auto;padding:3rem 1.1rem;position:static}.flight-caption{display:none}.flight-caption:last-child{opacity:1;display:flex;position:static;transform:none}}@media (prefers-reduced-motion:no-preference){.float-a{animation:5.5s ease-in-out infinite floaty}.float-b{animation:7s ease-in-out .8s infinite floaty}.float-c{animation:6.2s ease-in-out 1.6s infinite floaty}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-9px)}}.fade-up{animation:fadeUp .5s var(--ease-out) both}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}}
