:root{color-scheme:light;--bg:#fbf7ee;--bg-tint:#f3ecdd;--card:#ffffff;--ink:#3a3226;--ink-muted:#6e6350;--line:#ede5d4;--primary:#b8863b;--primary-strong:#96692a;--primary-soft:#c99b4e;--primary-wash:#e9d9b8;--primary-mid:#d9b877;--success:#527150;--success-wash:#eaf2e8;--danger:#b3301f;--danger-wash:#f9e9e6;--warning:#9a6a00;--warning-wash:#fbf0dc;--info:#4a5bc4;--on-primary:#ffffff;--shadow-sm:0 2px 8px rgba(122,100,60,0.08);--shadow-md:0 6px 18px rgba(122,100,60,0.15);--shadow-lg:0 18px 50px rgba(120,90,60,0.16);--shadow-glow:0 10px 26px rgba(184,134,59,0.38),inset 0 1px 0 rgba(255,255,255,0.3);--shadow-ambient:0 0 60px rgba(122,100,60,0.14);--radius-xs:4px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-2xl:24px;--radius-full:999px;--duration-fast:120ms;--duration-base:250ms;--duration-slow:400ms;--ease-standard:cubic-bezier(0.2,0,0,1)}[data-theme=dark]{color-scheme:dark;--bg:#0f1220;--bg-outer:#0a0d18;--card:#181c30;--card-raised:#1b2140;--ink:#ede7d8;--ink-muted:#8c89a0;--line:#262b45;--primary:#e8c56b;--primary-strong:#f5d98b;--primary-deep:#c79bd9;--info:#8fa6e8;--success:#93c49a;--danger:#f08a7a;--warning:#f2c46d;--on-primary:#0f1220;--shadow-sm:0 2px 10px rgba(0,0,0,0.35);--shadow-md:0 8px 22px rgba(0,0,0,0.4);--shadow-lg:0 18px 50px rgba(0,0,0,0.5);--shadow-glow:0 8px 22px rgba(232,197,107,0.3);--shadow-ambient:0 0 70px rgba(74,91,196,0.22)}*{margin:0;padding:0;box-sizing:border-box}body{background:var(--bg-outer,var(--bg));color:var(--ink);font-family:Noto Sans TC,-apple-system,PingFang TC,Microsoft JhengHei,sans-serif;font-size:16px;line-height:1.8;-webkit-font-smoothing:antialiased;min-height:100dvh;display:flex;justify-content:center}[data-theme=light] body{background:linear-gradient(180deg,var(--bg-tint),var(--bg) 320px)}::selection{background:var(--primary);color:var(--on-primary)}:focus-visible{outline:3px solid var(--primary);outline-offset:2px;border-radius:var(--radius-sm)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app{width:100%;max-width:430px;min-height:100dvh;background:var(--bg);box-shadow:var(--shadow-ambient);display:flex;flex-direction:column}.app,.app-header{position:relative}.app-header{padding:26px 24px 14px;text-align:center;border-bottom:1px solid var(--line)}.brand-t{font-family:"Noto Serif TC",serif;font-weight:900;font-size:20px;letter-spacing:.1em;color:var(--primary-strong)}[data-theme=dark] .brand-t{color:var(--primary)}.brand-s{font-size:11.5px;color:var(--ink-muted);letter-spacing:.28em;margin-top:2px}.hdr-actions{position:absolute;top:20px;right:16px;display:flex;gap:8px}.icon-btn{width:44px;height:44px;border:1px solid var(--line);border-radius:var(--radius-full);background:var(--card);font-size:18px;cursor:pointer;display:grid;place-items:center;transition:transform var(--duration-fast) ease-out,box-shadow var(--duration-base)}.icon-btn:active{transform:scale(.97)}.app-main{flex:1 1;padding:22px 20px 130px}.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:14px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{flex:none;min-height:44px;padding:0 18px;border-radius:var(--radius-full);border:1px solid var(--line);background:var(--card);font-family:"Noto Serif TC",serif;font-weight:600;font-size:14.5px;color:var(--ink-muted);cursor:pointer;transition:border-color var(--duration-base),background var(--duration-base),color var(--duration-base);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chip.on{background:var(--primary);color:var(--on-primary)}.chip.on,.chip:hover{border-color:var(--primary)}.ring-wrap{display:flex;flex-direction:column;align-items:center;padding:14px 0 8px}.ring{position:relative;width:240px;height:240px}.ring svg{transform:rotate(-90deg)}.ring-track{stroke:var(--line)}.ring-bar{stroke:var(--primary);transition:stroke-dashoffset .5s var(--ease-standard)}.ring-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.count{font-family:"Noto Serif TC",serif;font-weight:900;font-size:56px;line-height:1.1;color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.goal{font-size:12.5px;color:var(--ink-muted);letter-spacing:.14em;margin-top:6px}.tap{margin-top:28px;width:100%;min-height:104px;border:none;border-radius:var(--radius-xl);cursor:pointer;background:linear-gradient(180deg,var(--primary-soft),var(--primary));color:var(--on-primary);font-family:"Noto Serif TC",serif;font-weight:900;font-size:24px;letter-spacing:.3em;text-indent:.3em;box-shadow:var(--shadow-glow);transition:transform var(--duration-fast) ease-out,box-shadow var(--duration-fast);-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}[data-theme=dark] .tap{background:linear-gradient(180deg,#2a3054,#1b2140);color:var(--primary);letter-spacing:.26em;text-indent:.26em}.tap:active{transform:scale(.97);box-shadow:var(--shadow-sm)}.hint{font-size:14px;color:var(--ink-muted);margin-top:12px}.hint,.status{text-align:center}.status{font-size:12px;font-weight:500;margin-top:6px}.status.info{color:var(--info)}.status.ok{color:var(--success)}.status.muted{color:var(--ink-muted)}.status.warn{color:var(--danger)}.stat-cards{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px;margin-bottom:14px}.scard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:20px;text-align:center;box-shadow:var(--shadow-sm)}.scard.wide{width:100%}.scard .n{font-family:"Noto Serif TC",serif;font-weight:900;font-size:34px;line-height:1.2;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.scard .n,[data-theme=dark] .scard .n{color:var(--primary-strong)}.scard small{font-size:12.5px;color:var(--ink-muted);letter-spacing:.1em}.empty-hint{margin-top:16px;text-align:center;font-size:14px;color:var(--ink-muted)}.soon-card{margin-top:24px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-xl);padding:40px 24px;text-align:center;opacity:.85}.soon-icon{font-size:44px;margin-bottom:10px;filter:grayscale(.2)}.soon-title{font-family:"Noto Serif TC",serif;font-weight:900;font-size:20px;color:var(--ink-muted);margin-bottom:8px}.soon-text{font-size:14px;max-width:280px;margin:0 auto}.soon-note,.soon-text{color:var(--ink-muted)}.soon-note{font-size:12px;margin:10px 0 18px}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 24px;border:none;border-radius:var(--radius-md);font-family:inherit;font-weight:700;font-size:15px;cursor:pointer;transition:transform var(--duration-fast) ease-out,background var(--duration-base),box-shadow var(--duration-base);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn.sm{min-height:36px;padding:0 16px;font-size:14px}.btn.block{width:100%;margin-top:12px}.btn.primary{background:var(--primary-strong);color:var(--on-primary);box-shadow:var(--shadow-sm)}[data-theme=dark] .btn.primary{background:var(--primary);color:var(--on-primary)}.btn.primary:hover:not(:disabled){filter:brightness(.94);transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn.secondary{background:transparent;border:1px solid var(--line);color:var(--ink)}.btn.secondary:hover:not(:disabled){border-color:var(--primary)}.btn.ghost{background:none;color:var(--primary-strong);min-height:36px;padding:0 12px}[data-theme=dark] .btn.ghost{color:var(--primary)}.btn.destructive{background:var(--danger);color:var(--on-primary)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:active:not(:disabled){transform:scale(.97)}.input{height:48px;border:2px solid var(--line);border-radius:var(--radius-lg);background:var(--card);color:var(--ink);font-family:inherit;font-size:16px;padding:0 14px;width:100%;transition:border-color var(--duration-base)}.input:focus{outline:none;border-color:var(--primary)}.input.num{width:140px;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.backdrop{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:50}.sheet{position:fixed;bottom:0;left:0;right:0;margin:0 auto;width:100%;max-width:430px;max-height:82dvh;overflow-y:auto;background:var(--card);border:1px solid var(--line);border-bottom:none;border-radius:var(--radius-2xl) var(--radius-2xl) 0 0;padding:20px 20px calc(24px + env(safe-area-inset-bottom));z-index:60;box-shadow:var(--shadow-lg);animation:sheet-up var(--duration-base) var(--ease-standard)}@keyframes sheet-up{0%{opacity:0;transform:translateY(24px)}}.sheet-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.sheet-head h2{font-family:"Noto Serif TC",serif;font-weight:900;font-size:20px}.sheet-sec{border-top:1px dashed var(--line);padding:16px 0}.sheet-sec h3{font-family:"Noto Serif TC",serif;font-weight:700;font-size:16px;margin-bottom:12px}.row{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:15px}.add-row{margin-top:12px}.chant-list{list-style:none;display:grid;grid-gap:10px;gap:10px}.chant-list li{display:flex;gap:10px;align-items:center}.chant-list .input{flex:1 1;height:44px}.error-text{margin-top:10px;font-size:12px;color:var(--danger);background:var(--danger-wash);border-radius:var(--radius-sm);padding:8px 12px}.switch{width:52px;height:32px;flex:none;border:1px solid var(--line);background:var(--line);cursor:pointer;position:relative;transition:background var(--duration-base)}.switch,.switch .knob{border-radius:var(--radius-full)}.switch .knob{position:absolute;top:3px;left:3px;width:24px;height:24px;background:var(--card);box-shadow:var(--shadow-sm);transition:transform var(--duration-base) var(--ease-standard)}.switch.on{background:var(--primary);border-color:var(--primary)}.switch.on .knob{transform:translateX(20px)}.botnav{position:fixed;bottom:0;left:0;right:0;margin:0 auto;max-width:430px;display:flex;background:var(--card);border-top:1px solid var(--line);padding:8px 0 max(8px,env(safe-area-inset-bottom));z-index:40}.botnav-item{flex:1 1;min-height:54px;background:none;border:none;font-family:inherit;font-size:12px;color:var(--ink-muted);cursor:pointer;display:grid;grid-gap:2px;gap:2px;justify-items:center;-webkit-tap-highlight-color:transparent}.botnav-item .i{font-size:20px;line-height:1}.botnav-item.on{color:var(--primary-strong);font-weight:700}[data-theme=dark] .botnav-item.on{color:var(--primary)}.botnav-item.soon{opacity:.6}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;transition:none!important}}