:root{--bg: #ffffff;--surface: #f3f3f3;--surface-2: #f6f6f6;--raised: #ffffff;--line: #eeeeee;--ink: #111111;--ink-2: #444444;--muted: #6b6b6b;--faint: #d0d0d0;--pos: #0a7a3b;--neg: #b3261e;--neg-bg: #fbecec;--on-ink: #ffffff;--scrim: rgba(0, 0, 0, .45);--shade-1: #111111;--shade-2: #5c5c5c;--shade-3: #9e9e9e;--shade-4: #d0d0d0;--brand: #f2b705;--brand-soft: #fff6d6;--brand-ink: #6b5300;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--kb: 0px;color-scheme:light;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Inter,PingFang TC,Noto Sans TC,Microsoft JhengHei,sans-serif;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #000000;--surface: #1c1c1e;--surface-2: #161618;--raised: #2c2c2e;--line: #2a2a2c;--ink: #f5f5f5;--ink-2: #c8c8c8;--muted: #9a9a9a;--faint: #444444;--pos: #4cc17a;--neg: #ff6b5e;--neg-bg: #3a1a18;--on-ink: #111111;--scrim: rgba(0, 0, 0, .6);--shade-1: #f5f5f5;--shade-2: #b0b0b0;--shade-3: #707070;--shade-4: #444444;--brand-soft: #2e2608;--brand-ink: #f2cf5b;color-scheme:dark}}:root[data-theme=dark]{--bg: #000000;--surface: #1c1c1e;--surface-2: #161618;--raised: #2c2c2e;--line: #2a2a2c;--ink: #f5f5f5;--ink-2: #c8c8c8;--muted: #9a9a9a;--faint: #444444;--pos: #4cc17a;--neg: #ff6b5e;--neg-bg: #3a1a18;--on-ink: #111111;--scrim: rgba(0, 0, 0, .6);--shade-1: #f5f5f5;--shade-2: #b0b0b0;--shade-3: #707070;--shade-4: #444444;--brand-soft: #2e2608;--brand-ink: #f2cf5b;color-scheme:dark}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--bg);color:var(--ink);overscroll-behavior:none}button,input,select{font:inherit;color:inherit}input,select,textarea{font-size:16px}button{cursor:pointer}input,select{outline:none}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.app{max-width:480px;height:100%;height:100dvh;margin:0 auto;position:relative;display:flex;flex-direction:column;overflow:hidden;background:var(--bg)}.screen{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-top:calc(var(--safe-top) + 12px)}.pad{padding-left:20px;padding-right:20px}.row{display:flex;align-items:center;gap:12px}.col{display:flex;flex-direction:column}.grow{flex:1;min-width:0}.muted{color:var(--muted)}.small{font-size:13px}.tiny{font-size:12px}.label{font-size:12px;font-weight:600;color:var(--muted)}.title{font-size:28px;font-weight:900;letter-spacing:-.5px;margin:0}.section-title{font-size:16px;font-weight:800}.pos{color:var(--pos)}.neg{color:var(--neg)}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.icon-btn{width:44px;height:44px;border-radius:22px;border:0;background:var(--surface);display:flex;align-items:center;justify-content:center;flex-shrink:0}.icon-btn.plain{background:none}.btn{height:52px;border-radius:26px;border:0;font-size:16px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px;width:100%;flex-shrink:0}.btn.primary{background:var(--ink);color:var(--on-ink)}.btn.secondary{background:var(--surface)}.btn.danger{background:var(--neg-bg);color:var(--neg)}.btn.ghost{background:none;color:var(--muted);height:44px;font-weight:500}.btn.ghost.neg{color:var(--neg)}.btn:disabled{opacity:.4}.chip{height:36px;padding:0 14px;border-radius:18px;border:1px solid var(--faint);background:var(--bg);font-size:14px;font-weight:500;flex-shrink:0;display:inline-flex;align-items:center;gap:6px}.chip.on{background:var(--brand);color:#111;border:2px solid var(--ink);font-weight:800;padding:0 13px}.chip.on.check:before{content:"✓";font-weight:900}.tick{width:24px;height:24px;border-radius:7px;border:1.5px solid var(--faint);background:var(--bg);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:#111}.tick.on{border:2px solid var(--ink);background:var(--brand)}.chip.dashed{border-style:dashed}.chip.soft{border:0;background:var(--surface)}.chips{display:flex;gap:8px;flex-wrap:wrap}.chips.scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -20px;padding:0 20px}.chips.scroll::-webkit-scrollbar{display:none}.seg{display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;background:var(--surface);border-radius:12px;padding:3px;gap:3px;flex-shrink:0}.seg button{height:34px;border:0;border-radius:9px;background:transparent;font-size:14px;font-weight:500;color:var(--muted)}.seg button.on{background:var(--raised);color:var(--ink);font-weight:600;box-shadow:0 1px 3px #0000001f}.field{display:flex;flex-direction:column;gap:6px}.input{height:48px;border-radius:12px;border:2px solid transparent;background:var(--surface);padding:0 14px;font-size:16px;width:100%;min-width:0}.input:focus{border-color:var(--ink);background:var(--bg)}.list-row{display:flex;align-items:center;gap:14px;padding:10px 0;border:0;border-bottom:1px solid var(--line);background:none;width:100%;text-align:left}.avatar{width:40px;height:40px;border-radius:20px;background:var(--surface);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:14px;font-weight:600}.avatar.sm{width:28px;height:28px;font-size:12px;border-radius:14px}.card{background:var(--surface-2);border-radius:20px;padding:16px 18px}.group-list{border-radius:16px;background:var(--surface-2);overflow:hidden;flex-shrink:0}.group-list>button,.group-list>.item{min-height:52px;width:100%;border:0;background:none;padding:0 14px;display:flex;align-items:center;gap:12px;font-size:15px;text-align:left;border-bottom:1px solid var(--line)}.group-list>:last-child{border-bottom:0}.switch{display:inline-flex;width:44px;height:26px;border-radius:13px;padding:2px;background:var(--faint);justify-content:flex-start;flex-shrink:0;transition:background .15s}.switch>span{width:22px;height:22px;border-radius:11px;background:var(--bg)}.switch.on{background:var(--ink);justify-content:flex-end}.tabbar{height:calc(64px + var(--safe-bottom));padding:8px 24px var(--safe-bottom);border-top:1px solid var(--line);background:var(--bg);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));flex-shrink:0}.tabbar button{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:11px;font-weight:500;color:var(--muted)}.tabbar button{position:relative}.tabbar button.on{color:var(--ink);font-weight:600}.tabbar button.on:before{content:"";position:absolute;top:-8px;width:22px;height:3px;border-radius:2px;background:var(--brand)}.fab{position:absolute;right:20px;bottom:calc(84px + var(--safe-bottom));width:60px;height:60px;border-radius:30px;border:0;background:var(--brand);color:#111;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 20px #f2b70573;z-index:5}#overlay-root{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:20}#overlay-root>*{pointer-events:auto}.scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--scrim);animation:fade .15s ease-out}.sheet{position:absolute;left:0;right:0;bottom:var(--kb);max-height:calc(90% - var(--kb));background:var(--bg);border-radius:24px 24px 0 0;display:flex;flex-direction:column;animation:up .22s ease-out;transition:transform .2s ease-out,bottom .2s ease-out,max-height .2s ease-out;box-shadow:0 -8px 30px #0000001f}.sheet.tall{height:min(78%,calc(100% - var(--kb) - 24px))}.kb-open .sheet-body{padding-bottom:16px}.kb-open .full,.kb-open .screen{padding-bottom:var(--kb)}.sheet-head{padding:10px 20px 4px;touch-action:none;cursor:grab;flex-shrink:0;display:flex;flex-direction:column;gap:12px}.sheet-head h2{font-size:20px;margin:0 0 4px}.sheet .grabber{width:36px;height:5px;border-radius:3px;background:var(--faint);align-self:center;flex-shrink:0}.sheet-body{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:8px 20px calc(20px + var(--safe-bottom));display:flex;flex-direction:column;gap:16px}.sheet-body>*{flex-shrink:0}.toast{position:absolute;left:20px;right:20px;bottom:calc(156px + var(--safe-bottom));background:var(--ink);color:var(--on-ink);border-radius:14px;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;z-index:30;font-size:14px;animation:up .2s ease-out}.toast button{border:0;background:none;color:var(--on-ink);font-weight:700}.full{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--bg);display:flex;flex-direction:column;animation:up .2s ease-out}.topbar{display:flex;align-items:center;justify-content:space-between;padding:calc(var(--safe-top) + 8px) 8px 0;min-height:52px;flex-shrink:0}.topbar .t{font-size:17px;font-weight:600}.key{height:46px;border-radius:12px;border:0;font-size:22px;font-weight:500;background:var(--surface)}.key.op{background:var(--faint)}@keyframes up{0%{transform:translateY(24px);opacity:0}}@keyframes fade{0%{opacity:0}}.report{color:#111;background:#fff;padding:24px 20px;font-size:12px;line-height:1.45}.report h1{font-size:22px;margin:0}.report h2{font-size:15px;margin:22px 0 8px;break-after:avoid}.report .sub,.report .muted{color:#6b6b6b}.report .sub{margin:4px 0 0}.report .summary{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;padding:14px;background:#f6f6f6;border-radius:10px}.report .summary>div{display:flex;flex-direction:column;gap:2px}.report .k{font-size:11px;color:#6b6b6b;font-weight:600}.report .v{font-size:13px;font-weight:600}.report .v.big{font-size:22px;font-weight:700}.report table{width:100%;border-collapse:collapse}.report th,.report td{padding:6px 4px;border-bottom:1px solid #eee;text-align:left;vertical-align:top}.report th{font-size:11px;color:#6b6b6b;font-weight:600}.report .num{text-align:right;white-space:nowrap}.report .strong{font-weight:700}.report tr.unit td{font-weight:600}.report tr.member td{color:#444}.report tr{break-inside:avoid}.report .details td:last-child{font-size:11px;color:#444}.report .foot{margin-top:18px;font-size:11px;color:#6b6b6b}.print-only{display:none}@media print{@page{margin:12mm}html,body{height:auto;background:#fff}#root{display:none!important}.print-only{display:block}.print-only .report{padding:0}}.report td:first-child,.report .details td:first-child{white-space:nowrap}@keyframes tj-pop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.06);opacity:1}to{transform:scale(1)}}@keyframes tj-draw{0%{stroke-dashoffset:140}to{stroke-dashoffset:0}}@keyframes tj-dot{0%{transform:scale(0)}70%{transform:scale(1.35)}to{transform:scale(1)}}.tj-icon{animation:tj-pop .5s cubic-bezier(.2,.8,.2,1) both}.tj-path{stroke-dasharray:140;animation:tj-draw .7s .35s ease-out both}.tj-dot{transform-origin:24px 22px;animation:tj-dot .35s 1s ease-out both}.landing{position:relative;flex:1;overflow:hidden;background:var(--brand);color:#111;display:flex;flex-direction:column;padding:calc(var(--safe-top) + 48px) 22px calc(24px + var(--safe-bottom))}.lp-line{font-size:clamp(64px,24vw,100px);font-weight:900;letter-spacing:-.03em;line-height:.98;animation:lp-up .6s cubic-bezier(.2,.9,.3,1.2) both}.lp-brand{align-self:flex-start;margin-top:12px;font-size:clamp(40px,14vw,56px);font-weight:900;letter-spacing:-.02em;background:#111;color:#fff;padding:4px 14px 8px;border-radius:14px;animation:lp-pop .7s .7s cubic-bezier(.2,.9,.3,1.2) both}.lp-stage{position:relative;flex:1;min-height:0;container-type:size}.lp-lion{position:absolute;left:50%;bottom:-112px;width:min(120vw,520px,calc(100cqh + 172px));margin-left:calc(min(120vw,520px,calc(100cqh + 172px))/-2);pointer-events:none;filter:drop-shadow(0 18px 22px rgba(120,70,0,.35));animation:lp-fade .6s 1s both,lp-walk 1.4s 1.6s ease-in-out infinite}.lp-btns{position:relative;z-index:1;display:flex;flex-direction:column;gap:10px;animation:lp-up .5s 1.4s ease-out both}@keyframes lp-up{0%{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}@keyframes lp-pop{0%{transform:scale(.4) rotate(-8deg);opacity:0}70%{transform:scale(1.06) rotate(2deg);opacity:1}to{transform:none;opacity:1}}@keyframes lp-fade{0%{opacity:0}to{opacity:1}}@keyframes lp-walk{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@media(prefers-reduced-motion:reduce){.tj-icon,.tj-path,.tj-dot,.lp-line,.lp-brand,.lp-lion,.lp-btns,.lp-up{animation:none}}.ob{flex:1;display:flex;flex-direction:column;overflow-y:auto;padding:calc(var(--safe-top) + 12px) 20px calc(20px + var(--safe-bottom))}.ob-q{font-size:32px;font-weight:900;letter-spacing:-.5px;line-height:1.25;margin:0}.ob-in{animation:lp-up .45s ease-out both}.ob-note{font-size:13px;line-height:1.6;color:var(--ink-2);background:var(--brand-soft);border-radius:14px;padding:10px 12px}.ob-big:focus-visible{outline:none;box-shadow:0 0 0 3px var(--brand)}.ob-big{height:56px;border-radius:16px;border:2px solid var(--ink);background:var(--bg);padding:0 16px;font-size:20px;font-weight:800;width:100%}.ob-yellow{background:var(--brand);color:#111}.ob-yellow .muted{color:#3a3a3a}.ob-mascot{width:140px;height:140px;object-fit:contain}.tip{position:relative;background:var(--ink);color:var(--on-ink);border-radius:16px;padding:12px 12px 12px 16px;display:flex;align-items:center;gap:12px;font-size:14px;line-height:1.45;animation:up .25s ease-out}.tip:before{content:"";width:8px;height:8px;border-radius:4px;background:var(--brand);flex-shrink:0}.tip button{height:30px;padding:0 12px;border-radius:15px;border:0;background:var(--bg);color:var(--ink);font-size:13px;font-weight:600;flex-shrink:0}.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));row-gap:4px}.cal .wd{text-align:center;font-size:12px;color:var(--muted);padding-bottom:4px}.cal .d{height:44px;display:flex;align-items:center;justify-content:center;border:0;background:none;padding:0;position:relative}.cal .d>span{width:40px;height:40px;border-radius:20px;display:flex;align-items:center;justify-content:center;font-size:16px;position:relative;z-index:1}.cal .d.sun>span{color:var(--neg)}.cal .d.in:before,.cal .d.from:before,.cal .d.to:before{content:"";position:absolute;top:2px;bottom:2px;left:0;right:0;background:var(--brand-soft)}.cal .d.from:before{left:50%}.cal .d.to:before{right:50%}.cal .d.from.to:before{display:none}.cal .d.in>span{font-weight:600}.cal .d.from>span,.cal .d.to>span{background:var(--brand);color:#111;font-weight:700}.cal .d:disabled{visibility:hidden}@keyframes cheer{0%{transform:translateY(20px) scale(.9);opacity:0}70%{transform:translateY(-3px) scale(1.02);opacity:1}to{transform:none}}.toast.cheer{justify-content:center;gap:8px;font-weight:600;animation:cheer .35s ease-out}.coach{position:absolute;top:0;right:0;bottom:0;left:0;z-index:60}.coach-hole{position:absolute;border-radius:18px;box-shadow:0 0 0 2000px #0000009e;transition:all .25s ease;animation:coach-pulse 1.8s ease-in-out infinite;pointer-events:none}@keyframes coach-pulse{0%,to{outline:0 solid rgba(242,183,5,.9)}50%{outline:5px solid rgba(242,183,5,.9)}}.coach-card{position:absolute;left:16px;right:16px;background:var(--bg);border-radius:18px;padding:16px 18px;display:flex;flex-direction:column;gap:8px;box-shadow:0 12px 30px #0000004d;animation:coach-in .3s .1s ease-out both}.coach-card .arrow{position:absolute;left:var(--ax, 50%);width:14px;height:14px;margin-left:-7px;background:var(--bg);transform:rotate(45deg)}@keyframes coach-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.coach-hole,.coach-card{animation:none}}.steps{display:flex;gap:6px;flex:1}.steps span{flex:1;height:5px;border-radius:3px;background:var(--line)}.steps span.on{background:var(--brand)}.btn.brand{background:var(--brand);color:#111}.party{position:absolute;top:0;right:0;bottom:0;left:0;z-index:90;display:flex;align-items:center;justify-content:center;background:#00000052;overflow:hidden;animation:party-fade 2.8s ease both}@keyframes party-fade{0%{opacity:0}8%{opacity:1}82%{opacity:1}to{opacity:0}}.party-sky{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.party-sky .burst line{stroke-dasharray:.35 1;stroke-dashoffset:.35;animation:burst-line 1.1s cubic-bezier(.2,.7,.3,1) both}.party-sky .burst circle{transform-origin:center;transform-box:fill-box;animation:burst-core 1.1s ease-out both}@keyframes burst-line{0%{stroke-dashoffset:.35;opacity:1}70%{opacity:1}to{stroke-dashoffset:-.75;opacity:0}}@keyframes burst-core{0%{transform:scale(0);opacity:1}40%{transform:scale(1.6);opacity:1}to{transform:scale(.4);opacity:0}}.confetti{position:absolute;top:-16px;height:14px;border-radius:2px;animation-name:confetti-fall;animation-timing-function:linear;animation-fill-mode:both}@keyframes confetti-fall{0%{transform:translateY(0) rotate(0)}to{transform:translateY(110vh) rotate(calc(var(--spin) * 540deg))}}.party-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:22px 28px 0;margin:0 28px;border-radius:26px;background:var(--brand);color:#111;overflow:hidden;box-shadow:0 18px 40px #00000047;text-align:center;animation:party-pop .55s .15s cubic-bezier(.2,.9,.3,1.35) both}.party-title{font-size:24px;font-weight:900;letter-spacing:-.4px}.party-lion{width:150px;height:150px;object-fit:contain;margin-top:4px;filter:drop-shadow(0 10px 14px rgba(120,70,0,.3))}.party-sub{font-size:30px;font-weight:900;color:#111;background:#fff;border-radius:12px;padding:0 12px 2px;letter-spacing:.5px}@keyframes party-pop{0%{transform:scale(.4);opacity:0}to{transform:none;opacity:1}}@media(prefers-reduced-motion:reduce){.party-sky,.confetti{display:none}.party-card{animation:none}}.mascot-card{border-radius:26px;background:var(--brand);color:#111;padding:18px 18px 0;display:flex;flex-direction:column;align-items:center;text-align:center;overflow:hidden}.mascot-card img{width:200px;height:200px;object-fit:contain;filter:drop-shadow(0 14px 18px rgba(120,70,0,.3));animation:lp-walk 1.6s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.mascot-card img{animation:none}}.ob-jump{display:inline-block;animation:ob-jump 1.1s .4s ease-in-out infinite}@keyframes ob-jump{0%,to{transform:translateY(0)}40%{transform:translateY(-16px) rotate(-3deg)}60%{transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.ob-jump,.ob-in{animation:none}}
