:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-brand:#718a78;--color-brand-dark:#566d5d;--color-background:#f7f7f4;--color-surface:#fff;--color-surface-secondary:#f1f3f0;--color-text-primary:#171918;--color-text-secondary:#686c69;--color-text-muted:#949a95;--color-border:#e5e7e3;--color-success:#68816f;--color-warning:#b78b4b;--color-error:#b85c59;--color-error-soft:#f9eeed;--color-error-text:#783c3a;--color-success-soft:#edf3ee;--color-success-text:#3c6545;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--shadow-subtle:0 6px 24px #1719180d;--duration-fast:.15s;--duration-normal:.22s;--duration-stamp:.35s;--font-family-primary:Inter, "SF Pro Text", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box}html{background:var(--color-background)}body{background:var(--color-background);color:var(--color-text-primary);font-family:var(--font-family-primary);-webkit-font-smoothing:antialiased;margin:0;line-height:1.5}a{color:inherit;text-decoration:none}button,input{font:inherit}button,.primary-link{border-radius:var(--radius-md);background:var(--color-brand-dark);min-height:52px;color:var(--color-surface);cursor:pointer;text-align:center;transition:background-color var(--duration-fast), border-color var(--duration-fast), opacity var(--duration-fast);border:1px solid #0000;padding:13px 20px;font-weight:600;display:inline-block}button:hover:not(:disabled),.primary-link:hover{background:var(--color-text-primary)}button:active:not(:disabled),.primary-link:active{opacity:.88}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--color-brand-dark);outline-offset:3px}.secondary{background:var(--color-surface);color:var(--color-text-primary);border-color:var(--color-border)}.secondary:hover:not(:disabled){background:var(--color-surface-secondary)}.brand{color:var(--color-text-primary);letter-spacing:-.04em;align-items:center;gap:10px;font-size:24px;font-weight:700;display:inline-flex}.brand:before{content:"";background:url(/taptreat-mark.png) 50%/150% no-repeat;flex:0 0 38px;width:38px;height:38px;display:block}.shell{max-width:1120px;padding:var(--space-8) var(--space-6) 100px;margin:auto}header{justify-content:space-between;align-items:center;gap:var(--space-6);display:flex}h1{margin:var(--space-3) 0 var(--space-1);letter-spacing:-.04em;font-size:clamp(30px,5vw,38px);font-weight:600;line-height:1.15}h2{margin:var(--space-8) 0 var(--space-5);letter-spacing:-.025em;font-size:24px;font-weight:600}h3{letter-spacing:-.02em;margin:0;font-size:21px;font-weight:600}p{margin:var(--space-2) 0}.muted{color:var(--color-text-secondary);font-size:14px}.counter-link{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);text-align:center;min-height:48px;transition:background-color var(--duration-fast), border-color var(--duration-fast);padding:12px 18px;font-weight:600}.counter-link:hover{background:var(--color-surface-secondary);border-color:var(--color-brand)}.text-link{text-underline-offset:3px;align-items:center;min-height:48px;text-decoration:underline;display:flex}nav{gap:var(--space-1);margin:var(--space-8) 0 var(--space-4);border-bottom:1px solid var(--color-border);display:flex}nav a{min-height:48px;padding:var(--space-3) var(--space-2);text-align:center;color:var(--color-text-secondary);transition:color var(--duration-fast), background-color var(--duration-fast), border-color var(--duration-fast);border-bottom:2px solid #0000;flex:1;font-weight:500}nav a:hover{color:var(--color-text-primary);background:var(--color-surface-secondary)}nav a[aria-current]{color:var(--color-brand-dark);border-bottom-color:var(--color-brand);font-weight:600}.section-heading{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.stats{gap:var(--space-4);margin-bottom:var(--space-6);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.stats article{padding:var(--space-6);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);flex-direction:column;display:flex}.stats strong{letter-spacing:-.04em;font-size:38px;font-weight:600;line-height:1.1}.stats span{color:var(--color-text-secondary);margin-top:var(--space-2);font-size:14px}.activity{padding:0;list-style:none}.activity li{justify-content:space-between;gap:var(--space-4);padding:var(--space-5) 0;border-bottom:1px solid var(--color-border);display:flex}time{color:var(--color-text-secondary)}.requests{gap:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));display:grid}.request,.program{padding:var(--space-6);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.badge{background:var(--color-surface-secondary);color:var(--color-text-secondary);white-space:nowrap;border-radius:999px;padding:6px 10px;font-size:13px}.expired{color:var(--color-error-text);font-size:14px}.progress{margin:var(--space-4) 0;color:var(--color-text-secondary);font-size:32px}.progress strong{color:var(--color-text-primary);letter-spacing:-.05em;font-size:48px;font-weight:600}.request button{width:100%;margin-top:var(--space-3)}.counter{max-width:900px}.counter .request button{min-height:72px;font-size:24px}.counter .request h3{font-size:28px}.counter .progress{margin:var(--space-4) 0}.counter .section-heading .muted{text-align:right;max-width:130px}.empty{text-align:center;background:var(--color-surface);padding:56px var(--space-6);border:1px dashed var(--color-border);border-radius:var(--radius-lg)}.empty>span{color:var(--color-brand-dark);font-size:36px}.empty p{color:var(--color-text-secondary)}.alert,.notice{padding:var(--space-4) var(--space-5);border-radius:var(--radius-md);margin:var(--space-4) 0}.alert{background:var(--color-error-soft);color:var(--color-error-text)}.notice{background:var(--color-success-soft);color:var(--color-success-text)}.alert button{margin-top:var(--space-3);display:block}.reward-rule{letter-spacing:-.03em;font-size:28px;font-weight:600}.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-secondary);font-size:12px}dl{background:var(--color-surface);border:1px solid var(--color-border);padding:var(--space-6);border-radius:var(--radius-lg)}dt{color:var(--color-text-secondary);margin-top:var(--space-5);font-size:13px}dt:first-child{margin-top:0}dd{margin:var(--space-1) 0;overflow-wrap:anywhere;font-weight:600}.login{max-width:460px;padding:var(--space-6);margin:8vh auto}.login h1{margin-top:var(--space-8)}.login form{margin:var(--space-8) 0;gap:var(--space-3);flex-direction:column;display:flex}.login label{font-weight:600}.login input{min-height:54px;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);font-size:16px}.login input:hover{border-color:var(--color-brand)}.request.redemption{border-color:var(--color-brand);background:var(--color-surface)}.redemption .eyebrow,.reward-ready{color:var(--color-brand-dark);font-weight:600}.reward-name{margin:var(--space-5) 0 var(--space-2);font-size:1.75rem;font-weight:600}.request .eyebrow{letter-spacing:.06em;font-size:.8rem}@media (max-width:520px){.shell{padding:var(--space-6) 18px var(--space-12)}header{align-items:flex-start}.counter-link{max-width:120px;font-size:14px}nav a{padding:var(--space-3) 6px;font-size:14px}.stats{gap:var(--space-2)}.stats article{padding:var(--space-4) 10px}.stats strong{font-size:30px}.stats span,.section-heading>.muted{font-size:12px}.request{padding:var(--space-5)}.counter header .text-link{max-width:100px;font-size:13px}.reward-rule{font-size:24px}}.workspace-shell{grid-template-columns:238px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--color-border);background:#fbfbf9;flex-direction:column;height:100vh;padding:34px 18px 24px;display:flex;position:sticky;top:0}.sidebar .brand{padding-left:12px}.sidebar-location{border-bottom:1px solid var(--color-border);flex-direction:column;gap:2px;margin:42px 12px 24px;padding-bottom:22px;display:flex}.sidebar-location strong{font-size:14px}.sidebar-location span,.sidebar-foot{color:var(--color-text-secondary);font-size:12px}.sidebar nav{border:0;flex-direction:column;gap:4px;margin:0;display:flex}.sidebar nav a{text-align:left;border:0;border-radius:10px;flex:auto;min-height:44px;padding:11px 14px;font-size:14px}.sidebar nav a[aria-current]{color:#3d6247;background:#edf2ed}.sidebar-foot{margin:auto 12px 0}.workspace-content{min-width:0}.topbar{border-bottom:1px solid var(--color-border);background:#fbfbf9;height:84px;padding:0 clamp(24px,4vw,64px)}.topbar>div{flex-direction:column;display:flex}.topbar h1{letter-spacing:0;margin:0;font-size:14px}.topbar span{color:var(--color-text-secondary);font-size:12px}.page-content{max-width:1180px;margin:0 auto;padding:38px clamp(24px,4vw,64px) 90px}.page-intro{margin-bottom:28px}.page-intro .eyebrow{margin:0 0 7px}.page-intro h2{margin:0 0 7px;font-size:clamp(30px,3vw,39px);line-height:1.15}.page-intro>p:last-child{color:var(--color-text-secondary);margin:0}.section-heading h3{font-size:20px}.section-top{margin-top:36px;margin-bottom:14px}.stats{margin-top:16px;margin-bottom:28px}.stats article{min-height:155px;box-shadow:var(--shadow-subtle)}.stats article span{color:var(--color-text-secondary);order:0;margin:0}.stats article strong{order:1;margin-top:13px}.stats article small{color:var(--color-text-muted);order:2;margin-top:6px;font-size:12px}.stats article small.trend{color:var(--color-brand-dark);margin-top:12px;font-weight:600}.dashboard-grid,.detail-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.feature-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);min-height:212px;box-shadow:var(--shadow-subtle);flex-direction:column;justify-content:space-between;align-items:flex-start;padding:26px;display:flex}.feature-card h3{margin:6px 0;font-size:24px}.feature-card p:not(.eyebrow){color:var(--color-text-secondary)}.feature-card .primary-link{min-height:46px;margin-top:18px;padding:10px 16px}.feature-card.supporting{background:#f1f4ef}.inline-link{color:var(--color-brand-dark);font-size:14px;font-weight:600}.inline-link:hover{text-underline-offset:3px;text-decoration:underline}.activity-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);margin:0;padding:2px 24px}.activity-card li:last-child{border-bottom:0}.activity-card li>div{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.activity-card li a{color:var(--color-text-secondary)}.activity-card li a:hover{text-decoration:underline}.activity-dot{background:var(--color-brand);border-radius:50%;width:8px;height:8px}.secondary-metrics{color:var(--color-text-secondary);flex-wrap:wrap;gap:24px;margin-top:18px;font-size:13px;display:flex}.secondary-metrics a{color:var(--color-brand-dark);font-weight:600}.empty.compact{text-align:left;padding:24px}.search-label{margin-bottom:8px;font-size:14px;font-weight:600;display:block}.search-input{border:1px solid var(--color-border);border-radius:var(--radius-md);background:#fff;width:min(100%,440px);min-height:50px;padding:12px 15px}.customer-list{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:#fff;overflow:hidden}.customer-row{border-bottom:1px solid var(--color-border);align-items:center;gap:16px;padding:18px 22px;display:flex}.customer-row:last-child{border-bottom:0}.customer-row:hover{background:var(--color-surface-secondary)}.guest-avatar{width:44px;height:44px;color:var(--color-brand-dark);background:#eaf0e9;border-radius:50%;flex:0 0 44px;place-items:center;font-size:13px;font-weight:700;display:grid}.customer-main{flex-direction:column;flex:1;min-width:0;display:flex}.customer-main small,.customer-meta small{color:var(--color-text-secondary);font-size:12px;display:block}.customer-meta{min-width:155px;color:var(--color-text-primary);font-size:14px}.detail-grid{margin-top:24px}.detail-facts{grid-template-columns:1fr 1fr;gap:14px;margin:0;display:grid}.detail-facts div{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:17px}.detail-facts dt{margin:0}.detail-facts dd{font-size:20px}.analytics-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.counter-shell{max-width:1000px;margin:auto;padding:30px 24px 80px}.counter-shell .page-content{padding:20px 0}.counter-header{border-bottom:1px solid var(--color-border);padding-bottom:24px}.header-actions,.login-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.language-switch{white-space:nowrap;min-height:40px;padding:7px 12px;font-size:13px}.topbar .header-actions{flex-direction:row;align-items:center}.login-head .brand{margin:0}[lang=zh-HK]{font-family:"PingFang HK", "Noto Sans TC", "Microsoft JhengHei", var(--font-family-primary)}[lang=zh-HK] .eyebrow{letter-spacing:.04em}.counter-shell .request button{min-height:72px;font-size:23px}.skeleton{border-radius:var(--radius-lg);background:linear-gradient(90deg,#eceeeb,#f5f6f3,#eceeeb);min-height:155px}@media (max-width:850px){.workspace-shell{display:block}.sidebar{border-right:0;border-bottom:1px solid var(--color-border);height:auto;padding:16px 20px 10px;position:relative}.sidebar .brand{padding-left:0}.sidebar-location,.sidebar-foot{display:none}.sidebar nav{white-space:nowrap;flex-direction:row;margin-top:14px;overflow-x:auto}.sidebar nav a{text-align:center}.topbar{height:65px}.page-content{padding-top:28px}}@media (max-width:620px){.topbar,.header-actions{gap:8px}.topbar .counter-link{min-height:40px;padding:8px 10px}.counter-header .header-actions{flex-direction:column;align-items:flex-end}.stats,.analytics-stats{grid-template-columns:1fr}.stats article{min-height:120px}.dashboard-grid,.detail-grid{grid-template-columns:1fr}.customer-meta{text-align:right;min-width:auto}.customer-row{gap:10px;padding:14px}.guest-avatar{flex-basis:38px;width:38px;height:38px}.activity-card{padding:0 16px}.activity-card li{flex-direction:column;align-items:flex-start;gap:3px}.topbar{padding:0 18px}.page-content{padding-left:18px;padding-right:18px}}
