:root{--space-xxs: var(--spacing-1);--space-xs: var(--spacing-2);--space-sm: var(--spacing-3);--space-md: var(--spacing-4);--space-lg: var(--spacing-6);--space-xl: var(--spacing-8);--radius-card: var(--radii-card, var(--radii-lg));--radius-control: var(--radii-control, var(--radii-md));--field-width-sm: 140px;--field-width-md: 160px;--field-width-lg: 200px}*{box-sizing:border-box}html,body{margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--typography-font-family-body, var(--font-family-sans));background:var(--surface-primary);color:var(--text-primary);line-height:var(--typography-line-height-base, 1.5)}body[data-locale=zh-Hant],body[data-locale=zh-Hans]{line-height:1.65}h1,h2,h3{font-family:var(--typography-font-family-display, inherit);font-weight:var(--typography-font-weight-display, 400)}a{color:var(--text-link);text-decoration:none}a:hover{text-decoration:underline}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:none;box-shadow:var(--elevation-focus-glow);border-radius:var(--radius-control)}img{max-width:100%;display:block}button{font:inherit;cursor:pointer;border-radius:var(--radius-control);border:var(--border-spec-width-default) solid var(--border-default);background:var(--surface-secondary);color:var(--text-primary);padding:var(--density-control-padding-y) var(--density-control-padding-x);min-height:var(--density-control-height)}button.primary{background:var(--accent-default);color:var(--text-on-accent);border-color:transparent;font-weight:var(--typography-font-weight-strong)}button.primary:hover{background:var(--accent-hover)}button.danger{background:var(--status-error);color:var(--neutral-1000);border-color:transparent}button.ghost{background:transparent;border-color:transparent;color:var(--text-link)}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{font:inherit;padding:var(--density-control-padding-y) var(--space-sm);border-radius:var(--radii-input, var(--radius-control));border:var(--border-spec-width-default) solid var(--border-default);background:var(--surface-secondary);color:var(--text-primary);width:100%;min-height:var(--density-control-height)}label{display:block;font-size:var(--type-scale-sm);font-weight:var(--font-weight-semibold);margin:var(--space-sm) 0 var(--space-xxs)}table{width:100%;border-collapse:collapse;font-size:var(--type-scale-sm)}th,td{text-align:left;padding:var(--space-xs) var(--space-sm);border-bottom:var(--border-spec-width-default) solid var(--border-subtle)}th{font-size:var(--type-scale-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary)}dl.kv{display:grid;grid-template-columns:auto 1fr;gap:var(--space-xxs) var(--space-md);margin:0}dl.kv dt{color:var(--text-secondary);font-size:var(--type-scale-sm)}dl.kv dd{margin:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.uat-banner{background:var(--status-warning-muted);color:var(--text-primary);text-align:center;font-weight:var(--font-weight-semibold);font-size:var(--type-scale-xs);padding:var(--space-xxs) var(--space-md);letter-spacing:.08em}.notice{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-card);margin:var(--space-sm) 0;border:var(--border-spec-width-default) solid transparent}.notice.ok{background:var(--status-success-muted);color:var(--text-primary)}.notice.err{background:var(--status-error-muted);color:var(--text-primary)}.notice.info{background:var(--status-info-muted);color:var(--text-primary)}.notice.warn{background:var(--status-warning-muted);color:var(--text-primary)}.badge{display:inline-block;font-size:var(--type-scale-xs);padding:.15rem .55rem;border-radius:var(--radii-badge);background:var(--status-info-muted);color:var(--text-primary)}.badge.ok{background:var(--status-success-muted)}.badge.warn{background:var(--status-warning-muted)}.badge.err{background:var(--status-error-muted)}.badge.muted{background:var(--surface-tertiary);color:var(--text-secondary)}.badge.accent{background:var(--accent-muted);color:var(--text-primary)}.public-header{display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap;padding:var(--space-sm) var(--space-lg);background:var(--surface-secondary);border-bottom:var(--border-spec-width-default) solid var(--border-subtle);position:sticky;top:0;z-index:var(--z-index-sticky)}.public-header .brand{font-weight:var(--font-weight-bold);font-size:var(--type-scale-md);letter-spacing:.02em}.public-header .brand small{display:block;font-weight:var(--font-weight-regular);font-size:var(--type-scale-xs);color:var(--text-secondary)}.public-header nav{display:flex;gap:var(--space-xxs);flex-wrap:wrap;flex:1}.public-header nav a{padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-control);font-size:var(--type-scale-sm);color:var(--text-primary);min-height:var(--density-control-height);display:inline-flex;align-items:center}.public-header nav a.active{background:var(--interactive-selected);color:var(--text-link);text-decoration:none;font-weight:var(--font-weight-semibold)}.public-header .member-cta{display:flex;gap:var(--space-xs);align-items:center}.public-header select{width:auto;padding:var(--space-xxs) var(--space-xs);font-size:var(--type-scale-sm)}.hero{position:relative;overflow:hidden;min-height:320px;display:flex;align-items:flex-end}.hero img.hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero .hero-veil{position:absolute;inset:0;background:linear-gradient(180deg,#0000 30%,#0000009e)}.hero .hero-inner{position:relative;padding:var(--space-xl) var(--space-lg);color:#fff;max-width:720px}.hero h1{font-size:var(--type-scale-3xl);margin:0 0 var(--space-xs)}.hero p{font-size:var(--type-scale-md);margin:0 0 var(--space-md);opacity:.95}.hero .row{gap:var(--space-sm)}.container{max-width:1100px;margin:0 auto;padding:var(--space-lg)}.grid{display:grid;gap:var(--space-md);grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.grid-fit-lg{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.row{display:flex;gap:var(--space-sm);flex-wrap:wrap;align-items:center}.spread{justify-content:space-between}.muted{color:var(--text-muted);font-size:var(--type-scale-sm)}.secondary{color:var(--text-secondary)}.card{background:var(--surface-secondary);border:var(--border-spec-width-default) solid var(--border-subtle);border-radius:var(--radius-card);padding:var(--space-md);box-shadow:var(--elevation-sm)}.card h2,.card h3{margin-top:0}.stack>*+*{margin-top:var(--space-md)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-sm);margin:var(--space-lg) 0 var(--space-sm)}.section-head h2{margin:0;font-size:var(--type-scale-xl)}.section-head h2:first-letter{text-transform:none}.photo-card{position:relative;overflow:hidden;border-radius:var(--radius-card);border:var(--border-spec-width-default) solid var(--border-subtle);background:var(--surface-secondary);display:flex;flex-direction:column}.photo-card .ph{position:relative;aspect-ratio:16/9;background:var(--surface-tertiary);overflow:hidden}.photo-card .ph img{width:100%;height:100%;object-fit:cover}.photo-card .ph .illus{position:absolute;left:var(--space-xs);bottom:var(--space-xs);background:#0000008c;color:#fff;font-size:var(--type-scale-xs);padding:.1rem .5rem;border-radius:var(--radii-badge)}.photo-card .body{padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-xs);flex:1}.photo-card .body h3{margin:0}.photo-card .actions{margin-top:auto;padding-top:var(--space-xs)}a.photo-card{color:var(--text-primary)}a.photo-card:hover{text-decoration:none;box-shadow:var(--elevation-md)}.member-shell{display:flex;min-height:100vh}.member-sidebar{width:232px;flex-shrink:0;display:flex;flex-direction:column;background:var(--surface-secondary);border-right:var(--border-spec-width-default) solid var(--border-subtle);padding:var(--space-md) var(--space-sm);position:sticky;top:0;height:100vh;overflow-y:auto}.member-sidebar .brand{font-weight:var(--font-weight-bold);font-size:var(--type-scale-md);padding:var(--space-xs) var(--space-sm) var(--space-md)}.member-sidebar .brand small{display:block;font-weight:var(--font-weight-regular);font-size:var(--type-scale-xs);color:var(--text-secondary)}.member-nav{display:flex;flex-direction:column;gap:var(--space-xxs);flex:1}.member-nav a{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-sm);border-radius:var(--radius-control);color:var(--text-primary);font-size:var(--type-scale-base);min-height:var(--touch-target-minimum)}.member-nav a:hover{background:var(--interactive-hover);text-decoration:none}.member-nav a.active{background:var(--interactive-selected);color:var(--text-link);font-weight:var(--font-weight-semibold)}.member-nav a svg{flex-shrink:0}.sidebar-foot{border-top:var(--border-spec-width-default) solid var(--border-subtle);padding-top:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-xs)}.sidebar-foot select{font-size:var(--type-scale-sm)}.member-main{flex:1;min-width:0;display:flex;flex-direction:column}.member-topbar{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-lg);border-bottom:var(--border-spec-width-default) solid var(--border-subtle);background:var(--surface-secondary);position:sticky;top:0;z-index:var(--z-index-sticky)}.member-topbar .hello{font-weight:var(--font-weight-semibold)}.member-topbar .spacer{flex:1}.member-content{padding:var(--space-lg);max-width:1100px;width:100%;margin:0 auto;flex:1}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--touch-target-minimum);height:var(--touch-target-minimum);border-radius:var(--radii-full);border:none;background:transparent;color:var(--text-primary);position:relative;padding:0}.icon-btn:hover{background:var(--interactive-hover)}.icon-btn .dot{position:absolute;top:8px;right:8px;min-width:8px;height:8px;border-radius:var(--radii-full);background:var(--status-error)}.bottomnav{display:none;position:fixed;left:0;right:0;bottom:0;z-index:var(--z-index-sticky);background:var(--surface-secondary);border-top:var(--border-spec-width-default) solid var(--border-subtle);padding-bottom:env(safe-area-inset-bottom,0)}.bottomnav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-xs) 0 calc(var(--space-xs) + 2px);color:var(--text-secondary);font-size:var(--type-scale-xs);min-height:var(--touch-target-spacious)}.bottomnav a.active{color:var(--text-link);font-weight:var(--font-weight-semibold)}.bottomnav a:hover{text-decoration:none}@media(max-width:1024px)and (min-width:701px){.member-sidebar{width:76px}.member-sidebar .brand small,.member-sidebar .brand span.brand-name,.member-nav a span.nav-label,.sidebar-foot{display:none}.member-nav a{justify-content:center}}@media(max-width:700px){.member-sidebar{display:none}.bottomnav{display:flex}.member-content{padding:var(--space-md);padding-bottom:calc(var(--touch-target-spacious) + var(--space-xl))}.member-topbar{padding:var(--space-xs) var(--space-md)}.container{padding:var(--space-md)}.hero{min-height:240px}.hero h1{font-size:var(--type-scale-2xl)}.member-content h1{font-size:var(--type-scale-xl);margin-bottom:var(--space-xxs)}.member-card{padding:var(--space-md)}.member-card .num{font-size:var(--type-scale-lg)}.empty-state{padding:var(--space-md) var(--space-sm)}.empty-state svg{width:28px;height:28px;margin-bottom:var(--space-xs)}.empty-state h3{font-size:var(--type-scale-md);margin:0 0 var(--space-xxs)}}.member-card{background:linear-gradient(135deg,var(--surface-inverse),var(--accent-active));color:var(--text-inverse);border-radius:var(--radius-card);padding:var(--space-lg);max-width:420px;box-shadow:var(--elevation-md)}.member-card .tier{text-transform:uppercase;font-size:var(--type-scale-xs);letter-spacing:.2em;opacity:.85}.member-card .num{font-size:var(--type-scale-xl);letter-spacing:.12em;font-weight:var(--font-weight-bold);margin:var(--space-xs) 0}.member-card .name{font-size:var(--type-scale-md)}.member-card .since{opacity:.8;font-size:var(--type-scale-sm);margin-top:var(--space-xs)}.qr-panel{background:#fff;border-radius:var(--radius-card);padding:var(--space-lg);display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);max-width:340px;border:var(--border-spec-width-default) solid var(--border-subtle)}.qr-panel svg{display:block;width:232px;height:232px}.qr-panel .hint{color:#404040;font-size:var(--type-scale-sm);text-align:center}.steps{display:flex;gap:var(--space-xs);margin-bottom:var(--space-md)}.steps span{flex:1;height:4px;border-radius:2px;background:var(--border-subtle)}.steps span.done{background:var(--accent-default)}.step-labels{display:flex;justify-content:space-between;font-size:var(--type-scale-xs);color:var(--text-secondary);margin-bottom:var(--space-md)}.slot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:var(--space-xs)}.slot-grid button{min-height:var(--touch-target-minimum);padding:var(--space-xs)}.slot-grid button[aria-pressed=true]{background:var(--accent-default);color:var(--text-on-accent);border-color:transparent;font-weight:var(--font-weight-semibold)}.chip-row{display:flex;gap:var(--space-xs);flex-wrap:wrap}.chip{display:inline-flex;align-items:center;min-height:var(--touch-target-minimum);padding:var(--space-xs) var(--space-md);border-radius:var(--radii-full);border:var(--border-spec-width-default) solid var(--border-default);background:var(--surface-secondary);color:var(--text-primary);cursor:pointer}.chip[aria-pressed=true]{background:var(--accent-muted);border-color:var(--border-accent);font-weight:var(--font-weight-semibold)}.booking-card{display:flex;gap:var(--space-md);align-items:flex-start}.booking-card .when{min-width:84px;text-align:center;background:var(--surface-tertiary);border-radius:var(--radius-card);padding:var(--space-xs)}.booking-card .when .d{font-size:var(--type-scale-xl);font-weight:var(--font-weight-bold);display:block}.booking-card .when .m{font-size:var(--type-scale-xs);text-transform:uppercase;color:var(--text-secondary)}.entrance{display:grid;grid-template-columns:1fr 1fr;min-height:60vh}.entrance .entrance-photo{position:relative;overflow:hidden;border-radius:var(--radius-card) 0 0 var(--radius-card)}.entrance .entrance-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.entrance .entrance-photo .illus{position:absolute;left:var(--space-xs);bottom:var(--space-xs);background:#0000008c;color:#fff;font-size:var(--type-scale-xs);padding:.1rem .5rem;border-radius:var(--radii-badge)}.entrance .entrance-form{padding:var(--space-xl);background:var(--surface-secondary);border-radius:0 var(--radius-card) var(--radius-card) 0;border:var(--border-spec-width-default) solid var(--border-subtle);border-left:none}@media(max-width:800px){.entrance{grid-template-columns:1fr}.entrance .entrance-photo{min-height:160px;border-radius:var(--radius-card) var(--radius-card) 0 0}.entrance .entrance-form{border-radius:0 0 var(--radius-card) var(--radius-card);border-left:var(--border-spec-width-default) solid var(--border-subtle);border-top:none}}.form-card{max-width:460px;margin:0 auto}.auth-links{display:flex;flex-direction:column;gap:var(--space-xs);margin-top:var(--space-md);padding-top:var(--space-md);border-top:var(--border-spec-width-default) solid var(--border-subtle)}.legal-body{white-space:pre-wrap}.empty-state{text-align:center;padding:var(--space-xl) var(--space-md);color:var(--text-secondary)}.empty-state svg{margin:0 auto var(--space-sm);opacity:.6}.skeleton{background:var(--surface-tertiary);border-radius:var(--radius-card);min-height:96px}.service-tile{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md);border:var(--border-spec-width-default) solid var(--border-subtle);border-radius:var(--radius-card);background:var(--surface-secondary)}.service-tile.off{opacity:.65}.service-tile .grow{flex:1}footer.site{text-align:center;padding:var(--space-xl);color:var(--text-secondary);font-size:var(--type-scale-sm)}footer.site .dev-links{margin-top:var(--space-xs);font-size:var(--type-scale-xs)}footer.site .dev-links a{color:var(--text-muted)}.tabbar{display:flex;gap:var(--space-xs);border-bottom:var(--border-spec-width-default) solid var(--border-subtle);margin-bottom:var(--space-md);flex-wrap:wrap}.tabbar a{padding:var(--space-sm) var(--space-md);color:var(--text-secondary);border-bottom:2px solid transparent;min-height:var(--touch-target-minimum);display:inline-flex;align-items:center}.tabbar a.active{color:var(--text-link);border-bottom-color:var(--accent-default);font-weight:var(--font-weight-semibold)}.tabbar a:hover{text-decoration:none}
