/* Current typographic roles. Loaded after structural / historical styles.
   References: Apple HIG typography, Radix Themes scale, Impeccable typeset.
   One system family; the supplied raster artwork is intentionally untouched. */
:root{
 --type-family:'PingFang TC','Noto Sans TC',-apple-system,BlinkMacSystemFont,system-ui,sans-serif;
 --text-display:clamp(2rem,1.5rem + 1.5vw,2.75rem);
 --text-section:clamp(1.625rem,1.25rem + 1vw,2.125rem);
 --text-item:1.375rem;
 --text-subtitle:1.125rem;
 --text-body:1rem;
 --text-ui:.875rem;
 --text-caption:.8125rem;
 --text-price:1.375rem;
 --weight-display:600;--weight-heading:600;--weight-emphasis:500;--weight-reading:400;
 --type-ink:#294d42;--type-body:#465b50;--type-muted:#56644f;
}
html body{font-family:var(--type-family);font-size:var(--text-body);font-weight:var(--weight-reading);line-height:1.8;color:var(--type-body)}
html body :is(h1,h2,h3,h4,button,input,select,textarea){font-family:var(--type-family)}
html body :is(h1,h2,h3,h4){word-break:normal;overflow-wrap:break-word;color:var(--type-ink)}
/* Display: a single lead message. */
html body .welcome h2{font-size:var(--text-display);font-weight:var(--weight-display);line-height:1.3;letter-spacing:-.025em;text-wrap:balance}
/* Section: all major destinations share one role, including gifts and stores. */
html body :is(.section-heading h2,.collection-heading h2,.gifts-showcase .gift-section-heading h2,.stores-section .heading h2){font-size:var(--text-section);font-weight:var(--weight-heading);line-height:1.4;letter-spacing:-.02em;text-wrap:balance}
/* Item: dishes, merchandise, activities, locations and their detail dialogs. */
html body :is(.food-info h3,.merch-info h3,.gift-display-heading h3,.birthday-title-row h3,.store-detail h3,.product-copy h3){font-size:var(--text-item);font-weight:var(--weight-heading);line-height:1.45;letter-spacing:-.015em;text-wrap:balance}
html body :is(.dialogbar strong,.dialogbar>span,#menu-dialog .dialogbar strong){font-size:var(--text-subtitle);font-weight:var(--weight-heading);line-height:1.5;letter-spacing:0}
/* Subtitle: atmospheric copy should never outweigh an item name. */
html body :is(.merch-story,.merch-card-0 .merch-story){font-size:var(--text-subtitle);font-weight:var(--weight-emphasis);line-height:1.65;letter-spacing:0;color:var(--type-body);margin:16px 0 8px;text-wrap:balance}
html body .footer-invite>p{font-size:clamp(1.125rem,1rem + .35vw,1.375rem);font-weight:var(--weight-emphasis);line-height:1.6;letter-spacing:-.015em}
/* Reading copy: comfortable CJK leading and bounded measure. */
html body :is(.welcome-copy,.food-info p,.product-copy p,.heading>p,.store-detail p,.store-detail>a){font-size:var(--text-body);font-weight:var(--weight-reading);line-height:1.85;letter-spacing:0;color:var(--type-body)}
html body :is(.welcome-copy,.food-info p,.product-copy p){max-width:32em;text-wrap:pretty}
html body .food-info p{margin-top:18px}
html body :is(.merch-info p,.shop-host p){font-size:var(--text-ui);font-weight:var(--weight-reading);line-height:1.85;color:var(--type-body);letter-spacing:0}
html body .gift-offers p{font-size:1rem;font-weight:var(--weight-reading);line-height:1.85;letter-spacing:0}
html body .offer-copy strong{font-size:1rem;font-weight:var(--weight-heading);line-height:1.85}
html body .offer-copy b{font-weight:var(--weight-emphasis)}
/* Numbers are readable data, subordinate to item titles. */
html body :is(.food-price,.merch-price,.offer-copy .offer-amount){font-size:var(--text-price);font-weight:var(--weight-emphasis);line-height:1.5;color:var(--type-ink);letter-spacing:-.01em;font-variant-numeric:tabular-nums}
html body .food-price small{font-size:var(--text-caption);font-weight:var(--weight-reading)}
html body .store-hours dd{font-size:1.125rem;font-weight:var(--weight-emphasis);line-height:1.8;letter-spacing:0}
html body .store-hours dd:last-child{font-size:var(--text-ui);font-weight:var(--weight-reading)}
/* Labels and controls: medium emphasis, without headline treatment. */
html body :is(.eyebrow,.collection-heading .eyebrow,.welcome-kicker,.food-who,.merch-overline,.store-detail>span,.gift-display-heading>span,.store-hours dt,.offer-label,.birthday-service){font-size:var(--text-caption);font-weight:var(--weight-emphasis);line-height:1.6;color:var(--type-muted);letter-spacing:.025em}
html body .eyebrow{margin-bottom:16px}
html body .welcome-kicker{margin-bottom:18px}
html body .food-who{font-size:var(--text-ui);margin-bottom:10px}
html body :is(.filters button,.variants button,.merch-card .variants button,.store-actions a,.menu-reader-button,.footer-booking,.crew-label,.book-index button,#book-zoom){font-size:var(--text-ui);font-weight:var(--weight-emphasis);line-height:1.5;letter-spacing:0}
html body .filters button{font-size:1rem}
html body :is(.filters button[aria-pressed=true],.book-index button[aria-pressed=true],.variants button[aria-pressed=true]){font-weight:var(--weight-heading)}
html body .store-tabs button{font-size:var(--text-subtitle);font-weight:var(--weight-emphasis);line-height:1.5}
html body .store-tabs button[aria-pressed=true]{font-weight:var(--weight-heading)}
html body .store-tabs span{font-size:var(--text-ui);font-weight:var(--weight-reading);letter-spacing:0}
html body .floating-nav a{font-size:var(--text-ui);font-weight:var(--weight-emphasis);line-height:1.5}
/* Fine print: lower priority through weight and spacing, never tiny type. */
html body :is(.fine,.menu-note,.collection-note,.gift-intro .gift-caption,.gift-policy p,.footer-disclaimer,.footer-organizers,.menu-toolbar>span,.carousel-bottom>span,.food-no,.food-status,.crew-hint,#menu-dialog .dialogbar p,.reader-note,.book-controls span,.footer-social a,.gift-display .gift-picture span){font-size:var(--text-caption);font-weight:var(--weight-reading);line-height:1.85;letter-spacing:0;color:var(--type-muted)}
html body .gift-policy h3{font-size:var(--text-ui);font-weight:var(--weight-heading);line-height:1.85}
html body .footer-social a{font-size:var(--text-ui);color:var(--type-body)}
html body .footer-disclaimer{max-width:62em}
html body .event-date{font-size:1rem;font-weight:var(--weight-emphasis);letter-spacing:.01em;line-height:1.7}
html body .event-date>span{font-size:var(--text-caption);font-weight:var(--weight-reading);letter-spacing:0}
/* Responsive type changes by role; hierarchy remains consistent. */
@media(max-width:600px){
 :root{--text-display:2rem;--text-section:1.625rem;--text-item:1.25rem;--text-subtitle:1rem;--text-body:1rem;--text-price:1.25rem}
 html body .welcome-copy{line-height:1.85;max-width:25em}
 html body .welcome-copy br{display:none}
 html body .collection-heading{align-items:flex-end}
 html body .collection-heading>div:first-child{min-width:0;flex:1}
 html body .gift-display-heading{align-items:flex-start}
 html body .gift-offers p{gap:14px}
 html body .offer-label{flex-basis:5.25rem}
 html body .floating-nav{flex-wrap:wrap;max-width:calc(100% - 24px);justify-content:center}
 html body .floating-nav a{font-size:var(--text-caption)}
 html body .birthday-title-row{gap:10px 14px}
 html body .footer-invite>p{font-size:1.125rem}
 html body .dialogbar{gap:14px}
}
@media(max-width:360px){html body .shop-host{width:52px}html body .shop-host img{width:52px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* Long copy and enlarged text may wrap the offer label above its details. */
html body .gift-offers p{flex-wrap:wrap}
html body .gift-offers .offer-copy{min-width:0;flex:1 1 9rem;overflow-wrap:anywhere}
@media(max-width:600px){html body .floating-nav a{height:auto;min-height:42px;padding:.4em .45em}}

/* V20 — each offer follows one quiet, left-aligned reading order. */
html body .gift-terms{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:32px;padding:24px 36px}
html body .gift-terms p{display:block;min-width:0;margin:0;font-size:1rem;line-height:1.8}
html body .gift-terms .offer-condition{display:block;font-size:1rem;font-weight:400;line-height:1.8;color:var(--type-body);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
html body .gift-terms strong{display:block;margin-top:6px;font-size:1rem;font-weight:600;line-height:1.8;color:var(--type-ink)}
html body .gift-terms-single{grid-template-columns:minmax(0,1fr)}
@media(max-width:700px){html body .gift-terms{grid-template-columns:minmax(0,1fr);gap:22px;padding:20px 24px}}

/* V22 — consistent subject scale, product context, compact gift terms */
html body .food-visual{container-type:inline-size;height:420px;max-height:none;padding:24px 0;overflow:visible}
html body .dish-frame{position:relative;width:100%;height:min(320px,46cqw);flex:none}
html body .dish-frame>.food-cutout{position:absolute;left:50%;top:var(--image-top);height:calc(100% * var(--image-height));width:auto;max-width:none;max-height:none;object-fit:contain;transform:translateX(var(--image-center));filter:drop-shadow(0 12px 12px #37472b12)}
html body .food-info{padding-top:12px;padding-bottom:12px}
html body .merch-card:is(.merch-card-1,.merch-card-2) .merch-art{flex:none;height:320px;min-height:0;margin:20px 0 24px;padding:0;overflow:hidden;border-radius:10px;background:#fff}
html body .merch-card:is(.merch-card-1,.merch-card-2) .merch-art img{width:100%;height:100%;max-height:none;object-fit:contain;filter:none;transform:none}
html body .merch-card-2 .merch-art{background:#202224}
html body .merch-card:is(.merch-card-1,.merch-card-2) .variants{margin:22px 0 0;gap:8px;flex-wrap:wrap}
html body .merch-card:is(.merch-card-1,.merch-card-2) .variants button{font-size:14px;padding:10px 16px;min-height:44px;line-height:1.5}
html body .gift-terms{row-gap:12px;padding:22px 26px}
html body .gift-terms .gift-inline-note{grid-column:1/-1;display:block;font-size:13px;line-height:1.75;font-weight:400;color:var(--type-muted);text-align:left}
html body .gift-common-note{margin:18px 0 0;font-size:13px;line-height:1.75;font-weight:400;color:var(--type-muted)}
html body .gift-display{padding-bottom:32px}
html body .gifts-showcase{padding-bottom:48px}
@media(max-width:900px){html body .food-visual{height:340px}html body .merch-card:is(.merch-card-1,.merch-card-2) .merch-art{height:260px}}
@media(max-width:600px){html body .food-visual{height:240px;padding:24px 0}html body .dish-frame{height:46cqw}html body .food-info{padding-top:8px}html body .merch-card:is(.merch-card-1,.merch-card-2) .merch-art{height:240px;margin:16px 0 22px}html body .gift-terms{padding:18px 20px;row-gap:14px}html body .gifts-showcase{padding-bottom:32px}}
html body .merch-card:is(.merch-card-1,.merch-card-2) .merch-art{height:auto;aspect-ratio:3/2}
html body .merch-card-2 .merch-art{background:#202224}

/* V24: generated alpha masks only; original approved RGB artwork remains the image source. */
html body img[src$="approved-0916/stand-three.png"]{-webkit-mask-image:url("assets/approved-0916-masks/stand-three.png");mask-image:url("assets/approved-0916-masks/stand-three.png");mask-mode:alpha;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;}
html body img[src$="approved-0916/glass-box.png"]{-webkit-mask-image:url("assets/approved-0916-masks/glass-box.png");mask-image:url("assets/approved-0916-masks/glass-box.png");mask-mode:alpha;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;}
html body img[src$="approved-0916/glass-detail.png"]{-webkit-mask-image:url("assets/approved-0916-masks/glass-detail.png");mask-image:url("assets/approved-0916-masks/glass-detail.png");mask-mode:alpha;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;}
html body .merch-card:is(.merch-card-1,.merch-card-2) .merch-art{background:transparent;overflow:visible}

/* V25: confirmed sale units, shared by card and detail. */
html body .merch-price small,html body .product-copy .food-price small{font-size:var(--text-ui);font-weight:400;white-space:nowrap;margin-left:3px;letter-spacing:0}
html body .merch-price small,html body .product-copy .food-price small{display:inline}
html body .merch-price{white-space:nowrap}
html body .merch-price{display:block}

/* V27: calmer typography and a tighter, consistent reading rhythm. */
html body .welcome{min-height:0;padding-top:72px}
html body .welcome h2{line-height:1.45;letter-spacing:0}
html body .welcome-copy{margin-top:22px;line-height:1.8}
html body :is(.section-heading h2,.collection-heading h2,.gifts-showcase .gift-section-heading h2,.stores-section .heading h2){line-height:1.5;letter-spacing:0}
html body :is(.food-info h3,.merch-info h3,.gift-display-heading h3,.birthday-title-row h3,.store-detail h3,.product-copy h3){line-height:1.5;letter-spacing:0}
html body .eyebrow{margin-bottom:12px}
html body .menu-section{padding-top:76px;padding-bottom:54px}
html body .section-heading{margin-bottom:32px}
html body .menu-toolbar{margin-bottom:20px}
html body .collection-section{padding-top:76px;padding-bottom:54px}
html body .collection-heading{margin-bottom:32px}
html body .gifts-showcase{padding-top:72px}
html body .gift-intro{padding-bottom:40px}
html body .gift-intro .gift-section-heading{margin-bottom:24px;padding-top:0}
html body .gift-intro-character{max-width:150px;justify-self:end}
html body .stores-section{padding-top:76px;padding-bottom:60px}
html body .stores-section .heading{margin-bottom:32px}
html body .stores-section .heading>p{max-width:24em;line-height:1.8}
html body .title-with-icon>.library-icon{width:58px;height:48px;object-fit:contain}
html body .food-info p{margin-top:14px;line-height:1.8}
html body .store-hours dd{font-size:1rem}
html body .merch-story{margin-top:12px;margin-bottom:4px}
@media(max-width:600px){
 html body .welcome{padding-top:40px}
 html body .welcome-kicker{margin-bottom:14px}
 html body .welcome-copy{margin-top:18px}
 html body .menu-section,html body .collection-section,html body .gifts-showcase,html body .stores-section{padding-top:48px}
 html body .section-heading,html body .collection-heading,html body .stores-section .heading{margin-bottom:24px}
 html body .title-with-icon>.library-icon{width:46px;height:40px}
 html body .gift-intro{gap:14px;padding-bottom:28px}
 html body .gift-intro .gift-section-heading{margin-bottom:20px}
 html body .gift-intro-character{max-width:72px;justify-self:start}
 html body .birthday-title-row{gap:8px 12px}
}
/* Reserve a separate lane for the store character beside the heading. */
html body .stores-section .store-companion{width:110px;right:7vw;top:76px}
html body .stores-section .heading{padding-right:150px}
@media(max-width:600px){
 html body .stores-section .store-companion{width:72px;right:24px;top:48px}
 html body .stores-section .heading{padding-right:90px}
}

/* V30: keep the brand crop from shrinking inside the mobile home button. */
.floating-nav .brand-symbol{flex:none}
@media(max-width:600px){html body .floating-nav .nav-home{padding:0}}

/* V31: compact birthday invitation and readable, self-contained gift offers. */
html body .gift-intro-compact{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:center;padding:0 0 32px}
html body .gift-intro-compact .gift-section-heading{margin:0;padding:0;text-align:left}
html body .birthday-compact{display:flex;align-items:center;gap:20px;justify-self:end}
html body .birthday-compact>img{width:76px;height:104px;object-fit:contain;flex:none}
html body .birthday-kicker{display:block;font-size:12px;font-weight:500;line-height:1.6;color:var(--type-muted);margin-bottom:3px;letter-spacing:.06em}
html body .birthday-compact h3{font-size:20px;line-height:1.5;font-weight:600;margin:0;color:var(--type-ink)}
html body .birthday-compact p{font-size:13px;line-height:1.8;font-weight:400;margin:8px 0 0;color:var(--type-body)}
html body .gift-benefits{margin-top:28px;padding:24px 28px 20px;background:#f8f5ed;border-radius:12px;color:var(--type-ink)}
html body .benefit-options{display:grid;grid-template-columns:1fr 1fr;gap:28px}
html body .benefit-option{display:flex;gap:14px;align-items:flex-start;min-width:0}
html body .benefit-label{flex:none;display:block;padding:4px 9px;border-radius:4px;background:#e2e7dd;color:#375649;font-size:12px;line-height:1.5;font-weight:600;margin-top:1px;white-space:nowrap}
html body .benefit-copy p,html body .spend-condition>p,html body .spend-reward p{margin:0;font-size:15px;font-weight:400;line-height:1.7;color:var(--type-body)}
html body .benefit-copy strong,html body .spend-reward>strong{display:block;margin:4px 0 0;font-size:18px;line-height:1.6;font-weight:600;color:var(--type-ink)}
html body .benefit-copy time{white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:500}
html body .gift-benefits .benefit-note{margin:18px 0 0;padding-top:14px;border-top:1px solid #d8dacd;font-size:12px;line-height:1.8;font-weight:400;letter-spacing:0;color:#646e60}
html body .sponge-benefits{background:#e5e9df}
html body .spend-benefit{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:center}
html body .spend-condition .spend-threshold{display:flex;align-items:baseline;gap:10px;margin-top:2px}
html body .spend-threshold strong{font-size:32px;font-weight:600;line-height:1.3;color:var(--type-ink);white-space:nowrap;font-variant-numeric:tabular-nums}
html body .spend-threshold small{font-size:14px;font-weight:500;margin-right:4px}
html body .spend-reward p{font-size:14px;margin-top:4px}
@media(max-width:700px){
 html body .gift-intro-compact{grid-template-columns:1fr;gap:18px;padding-bottom:24px}
 html body .gift-intro-compact .gift-section-heading h2{font-size:24px;line-height:1.5}
 html body .birthday-compact{justify-self:stretch;gap:16px;flex-direction:row-reverse;justify-content:space-between}
 html body .birthday-compact>img{width:62px;height:88px;margin-right:4px}
 html body .birthday-compact h3{font-size:19px}
 html body .birthday-compact p{font-size:13px;margin-top:6px}
 html body .gift-benefits{margin-top:24px;padding:20px 18px 16px;border-radius:10px}
 html body .benefit-options{grid-template-columns:1fr;gap:16px}
 html body .benefit-option{gap:12px}
 html body .benefit-copy p{font-size:14px}
 html body .benefit-copy strong,html body .spend-reward>strong{font-size:17px;margin-top:3px}
 html body .benefit-option+.benefit-option{padding-top:16px;border-top:1px solid #e2e3d8}
 html body .spend-benefit{grid-template-columns:1fr;gap:10px}
 html body .spend-condition>p{font-size:14px}
 html body .spend-threshold strong{font-size:30px}
 html body .spend-reward p{font-size:13px;margin-top:2px}
 html body .gift-benefits .benefit-note{margin-top:16px;padding-top:12px;font-size:12px}
 html body .gift-display,html body .sponge-feature.gift-display{padding-top:28px;padding-bottom:28px}
}

/* V32: one birthday information group and a shared character scale. */
html body .section-character{display:block;position:static;width:auto;height:112px;max-width:none;max-height:none;object-fit:contain;flex:none;transform:none;opacity:1}
html body .birthday-header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:0 0 32px}
html body .birthday-header .gift-section-heading{padding:0;margin:0;text-align:left}
html body .birthday-header .birthday-kicker{font-size:13px;margin:0 0 8px}
html body .birthday-header .birthday-details{font-size:14px;font-weight:400;line-height:1.8;color:var(--type-body);margin:12px 0 0}
html body .shop-host{align-items:center;padding:0;gap:28px}
html body .shop-host .section-character{order:2;width:auto}
html body .shop-host p{padding:0;margin:0}
html body .stores-section .heading{padding-right:0;display:flex;align-items:center;justify-content:space-between;gap:32px}
@media(max-width:700px){
 html body .section-character{height:84px}
 html body .birthday-header{gap:16px;padding-bottom:24px}
 html body .birthday-header-copy{min-width:0}
 html body .birthday-header .gift-section-heading h2{font-size:24px}
 html body .birthday-header .birthday-kicker{font-size:12px;margin-bottom:6px}
 html body .birthday-header .birthday-details{font-size:13px;margin-top:8px}
 html body .birthday-details br{display:none}
 html body .shop-host{display:block;width:auto;padding:0}
 html body .shop-host p{display:none}
 html body .collection-heading{align-items:center}
 html body .stores-section .heading{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px 16px}
 html body .stores-section .heading>div{grid-column:1;grid-row:1}
 html body .stores-section .heading>.section-character{grid-column:2;grid-row:1 / 3;align-self:center}
 html body .stores-section .heading>p{grid-column:1;grid-row:2;margin:0;font-size:14px}
}

/* Uniform photo area; contain the entire supplied photograph without cropping or stretching. */
html body .dish-frame>.food-cutout{left:0;top:0;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;transform:none}
