*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}:root{--theme:#a8cbb7;--theme-l:#c3dcc8;--theme-xl:#d9e6dc;--theme-bg:#f1f7f3;--theme-d:#6e9786;--sky:#7ab8d9;--sky-bg:#edf5fa;--peach:#e8a598;--peach-bg:#fdf2ef;--amber:#d9a84e;--amber-bg:#fbf4e5;--rose:#d4849a;--rose-bg:#faeaef;--lavender:#a494cc;--lavender-bg:#f2eef8;--lemon:#d4c564;--c-ink:#474747;--c-ink-soft:#6a6a6a;--c-ink-faint:#c4c4c4;--c-text-body:#5a5a5a;--c-text-mute:#8f8f8f;--c-text-hint:#b0b0b0;--cream:#f5f5f4;--white:#fff;--warm:#efefed;--warm-alt:#e6e6e3;--card-tint:#fafaf9;--r-sm:10px;--r-md:12px;--r-lg:16px;--r-card-lg:20px;--r-full:999px;--font-serif:"Playfair Display", "Noto Serif SC", "Source Han Serif SC", "Songti SC", serif;--font-body:"Nunito", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", system-ui, sans-serif;--font-ui:"Nunito", "PingFang SC", "Microsoft YaHei", "Noto Sans SC", system-ui, sans-serif;--font-reading:"Noto Serif SC", "Source Han Serif SC", "Songti SC", serif;--page-padding:20px;--reading-padding:24px;--shadow-ink:#3a36321f;--shadow-ink-strong:#3a36322e;--border-ink:#2e2e2e1f;--on-accent:#fff;--btn-ink:var(--theme-d);--btn-ink-hover:color-mix(in srgb, var(--theme-d) 82%, #000 18%);--btn-ink-fg:#fff;--btn-outline:color-mix(in srgb, var(--theme-d) 32%, transparent);--btn-ghost-hover-bg:color-mix(in srgb, var(--theme-d) 7%, transparent);--btn-ghost-hover-border:color-mix(in srgb, var(--theme-d) 55%, transparent)}[data-theme=dark]{--c-ink:#d8d8d5;--c-ink-soft:#b0ada8;--c-ink-faint:#555250;--c-text-body:#c5c2bd;--c-text-mute:#8a8783;--c-text-hint:#65625e;--cream:#1c1b1a;--white:#262523;--warm:#2e2d2b;--warm-alt:#3a3836;--card-tint:#282725;--theme-bg:#6b9e7d1f;--theme-xl:#6b9e7d33;--shadow-ink:#00000059;--shadow-ink-strong:#00000080;--border-ink:#ffffff14;--on-accent:#fff;--btn-ink:var(--theme-l);--btn-ink-hover:var(--theme-xl);--btn-ink-fg:#1a1a1a;--btn-outline:color-mix(in srgb, var(--theme-l) 45%, transparent);--btn-ghost-hover-bg:color-mix(in srgb, var(--theme-l) 12%, transparent);--btn-ghost-hover-border:color-mix(in srgb, var(--theme-l) 70%, transparent);--rose-bg:#3a2a2f;--sky-bg:#1e2e38;--peach-bg:#362825;--amber-bg:#332c1e;--lavender-bg:#2a2638}html,body,#root{width:100%;height:100%}body{font-family:var(--font-body);color:var(--c-ink);background:var(--cream);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='260' height='260'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='1.2' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.15  0 0 0 0 0.15  0 0 0 0.06 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");background-attachment:fixed}[data-theme=dark] body{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.035 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>")}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}.scroll-area{-webkit-overflow-scrolling:touch;scrollbar-width:none}.scroll-area::-webkit-scrollbar{display:none}.press-scale{transition:transform .12s}.press-scale:active:not(:disabled){transform:scale(.96)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes staggerIn{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.6)}60%{transform:scale(1.06)}to{opacity:1;transform:scale(1)}}@keyframes popIn{0%{opacity:0;transform:scale(0)}50%{transform:scale(1.15)}70%{transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes breathe{0%,to{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.04)}}@keyframes floatSlow{0%,to{transform:translateY(0)}50%{transform:translateY(-1.5px)}}@keyframes slowPulse{0%,to{opacity:.45;transform:scale(1)}50%{opacity:.7;transform:scale(1.06)}}@keyframes breatheGlow{0%,to{box-shadow:0 4px 20px color-mix(in srgb, var(--theme) 25%, transparent)}50%{box-shadow:0 6px 28px color-mix(in srgb, var(--theme) 40%, transparent)}}@keyframes wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-1.5deg)}75%{transform:rotate(1.5deg)}}@keyframes bubblePopExpand{0%{opacity:1;transform:scale(1)}40%{opacity:.8;transform:scale(1.35)}to{opacity:0;filter:blur(2px);transform:scale(1.8)}}@keyframes scaleFade{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.5)}}@keyframes counterBounce{0%,to{transform:scale(1)}30%{transform:scale(1.25)}60%{transform:scale(.95)}}@keyframes bounceDot{0%,to{opacity:.4;transform:scale(.6)}50%{opacity:1;transform:scale(1)}}@keyframes tabIndicatorSlide{0%{transform:scaleX(.85)}50%{transform:scaleX(1.08)}to{transform:scaleX(1)}}@keyframes activeDot{0%{opacity:0;transform:scale(0)}50%{transform:scale(1.4)}to{opacity:1;transform:scale(1)}}@keyframes doveFloat{0%{opacity:0;transform:translateY(20px)scale(.5)}40%{transform:translateY(-5px)scale(1.1)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}.stagger-1{animation-delay:40ms}.stagger-2{animation-delay:80ms}.stagger-3{animation-delay:.12s}.stagger-4{animation-delay:.16s}.stagger-5{animation-delay:.2s}.stagger-6{animation-delay:.24s}.stagger-7{animation-delay:.28s}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.layout{flex-direction:column;max-width:420px;min-height:100vh;margin:0 auto;display:flex}.layout-content{padding-bottom:calc(88px + env(safe-area-inset-bottom,0px));flex:1}.tab-bar{left:50%;bottom:calc(18px + env(safe-area-inset-bottom,0px));-webkit-backdrop-filter:blur(14px)saturate(160%);z-index:100;background:#ffffff80;border:1px solid #ffffff80;border-radius:100vmax;align-items:center;gap:0;height:54px;padding:4px 6px;display:flex;position:fixed;overflow:hidden;transform:translate(-50%);box-shadow:0 8px 24px #3c464124,0 1px 2px #3c46410f}[data-theme=dark] .tab-bar{background:#2625238c;border-color:#ffffff14;box-shadow:0 8px 24px #00000059,0 1px 2px #0003}.tab-pill{-webkit-backdrop-filter:blur(8px)saturate(180%);z-index:0;pointer-events:none;background:#ffffffb8;border:1px solid #ffffffb3;border-radius:100vmax;transition:left .38s cubic-bezier(.34,1.3,.4,1),width .38s cubic-bezier(.34,1.3,.4,1);position:absolute;top:4px;bottom:4px;box-shadow:0 2px 8px #3c464114,0 1px 2px #3c46410a,inset 0 1px #ffffffe6}[data-theme=dark] .tab-pill{background:#ffffff1f;border-color:#ffffff1a;box-shadow:0 2px 6px #00000040,inset 0 1px #ffffff14}.tab{z-index:1;border-radius:100vmax;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;min-width:70px;height:100%;padding:0 10px;transition:transform .18s cubic-bezier(.22,1,.36,1);display:flex;position:relative}.tab.pressing{transform:scale(.92)}.tab-icon-svg{color:var(--c-text-mute);transition:color .3s}.tab.active .tab-icon-svg{color:var(--theme-d)}.tab-label{font-family:var(--font-ui);color:var(--c-text-mute);letter-spacing:1.5px;font-size:10px;font-weight:500;transition:color .3s}.tab.active .tab-label{color:var(--theme-d);font-weight:600}.tab-indicator{display:none}.library-page{padding:var(--page-padding);padding-top:48px}.library-header{justify-content:space-between;align-items:center;margin-bottom:20px;animation:.5s cubic-bezier(.22,1,.36,1) both staggerIn;display:flex}.library-title{font-family:var(--font-serif);color:var(--c-ink);font-size:28px;font-weight:700;line-height:1.2}.view-toggle{gap:4px;display:flex}.toggle-btn{border-radius:var(--r-full);width:34px;height:34px;color:var(--c-text-hint);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:all .2s;display:flex}.toggle-btn.active{background:var(--btn-ink);color:var(--btn-ink-fg)}.toggle-btn:not(.active):hover{color:var(--theme-d);background:var(--btn-ghost-hover-bg)}.section-label{font-family:var(--font-ui);color:var(--c-text-hint);letter-spacing:2px;margin-bottom:10px;padding-left:2px;font-size:12px;font-weight:600}.favorites-section{margin-bottom:20px;animation:.5s cubic-bezier(.22,1,.36,1) 40ms both staggerIn}.favorites-scroll{gap:10px;padding-bottom:4px;display:flex;overflow-x:auto}.fav-card{background:color-mix(in srgb, var(--theme-bg) 60%, var(--white));border:1px solid var(--border-ink);border-radius:var(--r-md);cursor:pointer;flex-shrink:0;min-width:160px;max-width:200px;padding:14px 16px;transition:all .22s cubic-bezier(.22,1,.36,1)}.fav-card:hover{background:var(--theme-bg);transform:translateY(-2px)}.fav-card:active{transform:scale(.97)}.fav-name{font-family:var(--font-serif);color:var(--c-ink);margin-bottom:6px;font-size:14px;font-weight:600;line-height:1.4}.fav-meta{align-items:center;gap:4px;display:flex}.fav-translator{font-family:var(--font-ui);color:var(--c-text-mute);font-size:11px}.fav-sep{color:var(--c-ink-faint);font-size:11px}.fav-count{font-family:var(--font-ui);color:var(--theme);font-size:11px;font-weight:600}.sutra-list{flex-direction:column;gap:12px;display:flex}.sutra-card{background:var(--white);border:1px solid var(--border-ink);border-radius:var(--r-lg);cursor:pointer;opacity:0;padding:20px;transition:all .22s cubic-bezier(.22,1,.36,1);animation:.5s cubic-bezier(.22,1,.36,1) both staggerIn}.sutra-card:hover{background:var(--warm);transform:translateY(-2px)}.sutra-card:active:not(.disabled){transform:scale(.98)}.sutra-card.disabled{cursor:default;opacity:.45}.sutra-card.disabled:hover{background:var(--white);border-color:var(--border-ink);transform:none}.sutra-card-header{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.sutra-card-name{font-family:var(--font-serif);color:var(--c-ink);flex:1;min-width:0;font-size:18px;font-weight:600;line-height:1.5}.sutra-card-meta{align-items:center;gap:6px;display:flex}.sutra-card-translator,.sutra-card-chars{color:var(--c-text-mute);font-size:13px}.sutra-card-dot{color:var(--c-ink-faint);font-size:13px}.sutra-card-count{color:var(--theme);white-space:nowrap;flex-shrink:0;align-items:center;gap:6px;font-size:13px;font-weight:500;display:flex}.count-dot{border-radius:var(--r-full);background:var(--theme);width:6px;height:6px;animation:.35s cubic-bezier(.34,1.56,.64,1) activeDot}.sutra-card-coming{color:var(--c-text-hint);background:var(--warm);border-radius:var(--r-full);margin-top:10px;padding:3px 10px;font-size:12px;display:inline-block}.visual-view{animation:.5s cubic-bezier(.22,1,.36,1) 40ms both staggerIn}.visual-section{margin-bottom:28px}.visual-grid{grid-template-columns:repeat(auto-fill,minmax(90px,1fr));justify-content:center;gap:14px;padding:8px 0;display:grid}.visual-card{background:var(--white);cursor:pointer;opacity:0;border:1px solid #0000000a;border-radius:10px;flex-direction:column;align-items:center;min-height:220px;padding:20px 6px 14px;transition:all .3s cubic-bezier(.22,1,.36,1);animation:.6s cubic-bezier(.22,1,.36,1) both visualCardIn;display:flex;position:relative;box-shadow:0 2px 10px #0000000d,0 1px 2px #00000008}.visual-card:hover{transform:translateY(-4px);box-shadow:0 14px 36px #00000014,0 4px 10px #0000000a}.visual-card:active:not(.disabled){transform:scale(.97)}.visual-card.disabled{cursor:default;opacity:.35}.visual-card.disabled:hover{transform:none;box-shadow:0 2px 10px #0000000d,0 1px 2px #00000008}.visual-card-inner{flex-direction:column;flex:1;justify-content:center;align-items:center;width:100%;display:flex}.visual-card-name{writing-mode:vertical-rl;text-orientation:mixed;font-family:var(--font-serif);color:var(--c-ink);letter-spacing:4px;text-align:center;font-size:15px;font-weight:600;line-height:1.8}.visual-card-footer{flex-direction:column;align-items:center;gap:6px;width:100%;margin-top:auto;padding-top:14px;display:flex}.visual-card-dots{background-image:radial-gradient(circle, var(--c-ink-faint) .8px, transparent .8px);background-position:50%;background-repeat:repeat-x;background-size:4px 1px;width:36px;height:1px}.visual-card-number{font-family:var(--font-ui);color:var(--c-text-mute);letter-spacing:1px;justify-content:center;align-items:center;gap:4px;font-size:10px;line-height:1;display:flex}.visual-card-number-dot{color:var(--c-ink-faint);font-size:10px;transform:translateY(-1px)}.visual-card-count{font-family:var(--font-ui);color:var(--theme);letter-spacing:.5px;font-size:9px;font-weight:600}.visual-card-badge{color:var(--c-text-hint);background:var(--warm);letter-spacing:1px;white-space:nowrap;border-radius:2px;padding:2px 8px;font-size:8px;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}@keyframes visualCardIn{0%{opacity:0;transform:translateY(20px)scale(.92)}to{opacity:1;transform:translateY(0)scale(1)}}.detail-page{padding:var(--page-padding);flex-direction:column;min-height:80vh;padding-top:20px;display:flex}.detail-top-bar{justify-content:space-between;align-items:center;margin-bottom:28px;animation:.4s cubic-bezier(.22,1,.36,1) both staggerIn;display:flex}.back-btn{font-family:var(--font-ui);color:var(--c-text-mute);align-items:center;gap:4px;padding:8px 4px;font-size:14px;display:flex}.fav-btn{border-radius:var(--r-full);border:1px solid var(--border-ink);background:var(--white);width:38px;height:38px;color:var(--c-ink-soft);justify-content:center;align-items:center;transition:all .22s cubic-bezier(.34,1.56,.64,1);display:flex}.fav-btn:hover{border-color:var(--c-ink-faint);background:var(--warm)}.fav-btn.fav-active{border-color:var(--theme-d);background:var(--theme-bg);color:var(--theme-d)}.fav-btn.fav-active svg{animation:.35s cubic-bezier(.34,1.7,.64,1) favPop}.fav-btn:active{transform:scale(.88)}@keyframes favPop{0%{transform:scale(.6)}55%{transform:scale(1.2)}to{transform:scale(1)}}.detail-header{margin-bottom:20px;animation:.5s cubic-bezier(.22,1,.36,1) 40ms both staggerIn}.detail-name{font-family:var(--font-serif);color:var(--c-ink);letter-spacing:.04em;margin-bottom:8px;font-size:24px;font-weight:600;line-height:1.5}.detail-translator{color:var(--c-text-mute);font-size:14px;line-height:1.6}.detail-count-wrap{align-items:baseline;gap:8px;margin:16px 0;animation:.5s cubic-bezier(.34,1.56,.64,1) 80ms both scaleIn;display:flex}.detail-count-number{font-family:var(--font-body);color:var(--c-ink);font-size:48px;font-weight:800;line-height:1}.detail-count-label{color:var(--c-text-mute);font-size:16px;font-weight:500}.start-reading-btn{box-sizing:border-box;width:calc(100% + 2 * var(--page-padding));margin:24px calc(-1 * var(--page-padding)) 44px;background:var(--btn-ink);color:var(--btn-ink-fg);font-family:var(--font-serif);letter-spacing:14px;border:none;border-radius:0;align-self:stretch;padding:22px 32px 22px 46px;font-size:17px;font-weight:600;transition:background .25s,transform .2s cubic-bezier(.22,1,.36,1),box-shadow .25s;animation:.5s cubic-bezier(.22,1,.36,1) .12s both staggerIn;display:block;position:relative;box-shadow:inset 0 0 0 1px #ffffff24}.start-reading-btn:before,.start-reading-btn:after{content:"";background:#ffffff8c;border-radius:50%;width:6px;height:6px;position:absolute;top:50%;transform:translateY(-50%)}.start-reading-btn:before{left:32px}.start-reading-btn:after{right:32px}.start-reading-btn:hover{background:var(--btn-ink-hover);box-shadow:inset 0 0 0 1px #ffffff2e, 0 10px 22px color-mix(in srgb, var(--theme-d) 26%, transparent);transform:translateY(-1px)}.start-reading-btn:active{transform:scale(.97)}.detail-links{flex-direction:column;gap:4px;animation:.5s cubic-bezier(.22,1,.36,1) .16s both staggerIn;display:flex}.detail-link-btn{color:var(--c-text-body);text-align:left;border-radius:var(--r-sm);align-items:center;gap:12px;padding:12px 8px;font-size:14px;transition:background .18s;display:flex}.detail-link-btn:hover:not(:disabled){background:var(--warm)}.detail-link-btn:active:not(:disabled){transform:scale(.96)}.detail-link-btn:disabled{color:var(--c-ink-faint);cursor:default}.link-icon-wrap{border-radius:var(--r-sm);background:var(--warm);flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.detail-link-btn:disabled .link-icon-wrap{opacity:.5}.link-arrow{color:var(--c-text-hint);margin-left:auto;font-size:12px}.link-active{color:var(--theme)}.detail-panel{background:var(--warm);border-radius:var(--r-md);margin:4px 0 8px;padding:16px;animation:.25s fadeSlideDown}.panel-empty{color:var(--c-text-hint);text-align:center;padding:12px 0;font-size:14px}.glossary-list{flex-direction:column;gap:16px;display:flex}.glossary-entry{border-bottom:1px solid var(--border-ink);padding-bottom:16px}.glossary-entry:last-child{border-bottom:none;padding-bottom:0}.glossary-head{flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:6px;display:flex}.glossary-chars{font-family:var(--font-serif);color:var(--c-ink);font-size:16px;font-weight:600}.glossary-pinyin{font-family:var(--font-ui);color:var(--c-text-hint);font-size:13px}.glossary-cat{font-family:var(--font-ui);color:var(--theme);background:var(--theme-bg);border-radius:var(--r-full);white-space:nowrap;padding:2px 8px;font-size:11px;font-weight:600}.glossary-def{color:var(--c-text-body);line-break:strict;word-break:normal;font-size:14px;line-height:1.8}.about-section{flex-direction:column;gap:12px;margin-bottom:16px;display:flex}.about-row{gap:16px;display:flex}.about-label{font-family:var(--font-ui);color:var(--c-text-hint);flex-shrink:0;min-width:40px;font-size:13px}.about-value{color:var(--c-text-body);font-size:14px;line-height:1.6}.about-desc{color:var(--c-text-body);line-break:strict;word-break:normal;border-top:1px solid var(--border-ink);padding-top:16px;font-size:14px;line-height:1.8}@keyframes fadeSlideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.reading-page{background:var(--cream);min-height:100vh;padding-top:56px;padding-bottom:80px}.reading-page[data-reading=sutra]{--cream:#f2e4bf;--white:#f6e9c7;--warm:#ead9ad;--warm-alt:#e0cd9c;--c-ink:#3e2817;--c-ink-soft:#5a3e26;--c-ink-faint:#bea378;--c-text-body:#4a3220;--c-text-mute:#8b6e48;--c-text-hint:#ab8e68;--border-ink:#3e28172e}.reading-page[data-reading=dark]{--cream:#1c1b1a;--white:#262523;--warm:#2e2d2b;--warm-alt:#3a3836;--c-ink:#d8d8d5;--c-ink-soft:#b0ada8;--c-ink-faint:#555250;--c-text-body:#c5c2bd;--c-text-mute:#8a8783;--c-text-hint:#65625e;--border-ink:#ffffff14}.loading-page{justify-content:center;align-items:center;display:flex}.loading-dots{gap:8px;display:flex}.dot{border-radius:var(--r-full);background:var(--theme-l);width:8px;height:8px;animation:1.4s ease-in-out infinite bounceDot}.dot-1{animation-delay:0s}.dot-2{animation-delay:.2s}.dot-3{animation-delay:.4s}.reading-toolbar{width:100%;height:50px;padding:0 max(16px, env(safe-area-inset-left)) 0 max(12px, env(safe-area-inset-left));background:color-mix(in srgb, var(--cream) 80%, transparent);-webkit-backdrop-filter:blur(20px)saturate(1.8);z-index:50;justify-content:space-between;align-items:center;transition:opacity .3s,transform .3s;display:flex;position:fixed;top:0;left:0;right:0}.reading-toolbar.hidden{opacity:0;pointer-events:none;transform:translateY(-100%)}.reading-toolbar.visible{opacity:1;transform:translateY(0)}.toolbar-btn,.toolbar-icon-btn{width:44px;height:44px;color:var(--c-text-mute);border-radius:var(--r-full);justify-content:center;align-items:center;transition:all .2s;display:flex}.toolbar-btn:hover,.toolbar-icon-btn:hover{background:color-mix(in srgb, var(--c-ink) 6%, transparent)}.toolbar-btn:active,.toolbar-icon-btn:active{background:color-mix(in srgb, var(--c-ink) 10%, transparent);transform:scale(.9)}.toolbar-btn-active{color:var(--theme);background:var(--theme-bg)}.reading-progress-bar{z-index:51;background:0 0;width:100%;height:2px;position:fixed;top:0;left:0;right:0}.reading-progress-fill{background:var(--theme-d);border-radius:0 1px 1px 0;height:100%;transition:width .15s ease-out}.toolbar-title{font-family:var(--font-serif);color:var(--c-text-hint);letter-spacing:2px;text-align:center;text-overflow:ellipsis;white-space:nowrap;flex:1;padding:0 8px;font-size:13px;font-weight:500;overflow:hidden}.toolbar-right{gap:8px;display:flex}.reading-toc{background:color-mix(in srgb, var(--cream) 88%, transparent);-webkit-backdrop-filter:blur(20px)saturate(1.8);z-index:55;width:100%;max-height:60vh;padding:8px 0;animation:.25s fadeSlideDown;position:fixed;top:50px;left:0;right:0;overflow-y:auto}.toc-item{text-align:left;width:100%;min-height:48px;font-family:var(--font-serif);color:var(--c-text-body);letter-spacing:.02em;padding:14px 24px;font-size:15px;line-height:1.6;transition:all .18s;display:block}.toc-item:hover{background:var(--warm)}.toc-item:active{background:var(--theme-bg);color:var(--theme)}.font-panel{background:color-mix(in srgb, var(--cream) 90%, transparent);-webkit-backdrop-filter:blur(20px)saturate(1.8);border-radius:var(--r-lg);z-index:60;gap:4px;padding:6px;animation:.25s fadeSlideDown;display:flex;position:fixed;top:52px;right:12px;box-shadow:0 4px 24px #00000014}.font-panel-item{width:44px;height:38px;font-family:var(--font-serif);color:var(--c-text-mute);border-radius:var(--r-sm);cursor:pointer;justify-content:center;align-items:center;transition:all .2s;display:flex}.font-panel-item:hover{background:color-mix(in srgb, var(--c-ink) 6%, transparent)}.font-panel-item.active{color:var(--theme);background:var(--theme-bg);font-weight:600}.reading-meta{text-align:center;padding:24px 0 40px;animation:.5s cubic-bezier(.22,1,.36,1) both staggerIn}.reading-meta-title{font-family:var(--font-serif);color:var(--c-ink);letter-spacing:.04em;margin-bottom:8px;font-size:24px;font-weight:600;line-height:1.5}.reading-meta-translator{font-family:var(--font-ui);color:var(--c-text-hint);letter-spacing:.02em;font-size:14px}.reading-content{max-width:680px;padding:0 max(24px, env(safe-area-inset-left));margin:0 auto}.reading-section{margin-bottom:32px;scroll-margin-top:60px}.reading-paragraph{content-visibility:auto;contain-intrinsic-size:auto 200px;margin-bottom:24px}.paragraph-label{font-family:var(--font-ui);color:var(--theme);letter-spacing:.02em;margin-bottom:8px;font-size:13px;font-weight:600}.char-grid{font-family:var(--font-reading);color:var(--c-ink);line-break:strict;word-break:normal;overflow-wrap:break-word;letter-spacing:.02em;line-height:2}.char-grid.with-pinyin{line-height:2.8}.char-ruby{ruby-align:center;cursor:default;-webkit-user-select:text;user-select:text}.char-grid rt{font-size:10px;font-family:var(--font-ui);color:var(--c-text-hint);letter-spacing:0;ruby-align:center;font-weight:400}.char-plain{cursor:default;-webkit-user-select:text;user-select:text}.char-q{white-space:nowrap}.reading-footer{background:linear-gradient(transparent, var(--cream) 40%);justify-content:center;width:100%;padding:12px 16px 28px;display:flex;position:fixed;bottom:0;left:0;right:0}.complete-btn{background:var(--btn-ink);color:var(--btn-ink-fg);border-radius:var(--r-full);font-family:var(--font-ui);letter-spacing:1px;border:none;align-items:center;gap:6px;padding:12px 28px;font-size:14px;font-weight:600;transition:all .18s;animation:.5s cubic-bezier(.34,1.56,.64,1) scaleIn;display:flex}.complete-btn:hover{background:var(--btn-ink-hover);box-shadow:0 6px 18px color-mix(in srgb, var(--theme-d) 22%, transparent);transform:translateY(-1px)}.complete-btn:active{transform:scale(.97)}.completion-page{background:var(--white);flex-direction:column;justify-content:center;align-items:center;display:flex}.completion-icon{border-radius:var(--r-full);background:var(--theme-bg);justify-content:center;align-items:center;width:72px;height:72px;animation:.8s cubic-bezier(.22,1,.36,1) .3s both doveFloat;display:flex}.completion-text{font-family:var(--font-serif);color:var(--theme);margin-top:16px;font-size:24px;font-weight:600;animation:.5s cubic-bezier(.22,1,.36,1) .15s both staggerIn}.completion-count{color:var(--c-text-mute);margin-top:8px;margin-bottom:40px;font-size:16px;animation:.5s cubic-bezier(.22,1,.36,1) .25s both staggerIn}.completion-actions{flex-direction:column;align-items:center;gap:12px;animation:.5s cubic-bezier(.22,1,.36,1) .35s both staggerIn;display:flex}.completion-btn-primary{font-family:var(--font-ui);color:var(--btn-ink-fg);background:var(--btn-ink);border-radius:var(--r-full);letter-spacing:1px;border:none;padding:12px 32px;font-size:14px;font-weight:600;transition:background .25s,transform .2s cubic-bezier(.22,1,.36,1),box-shadow .25s}.completion-btn-primary:hover{background:var(--btn-ink-hover);box-shadow:0 6px 16px color-mix(in srgb, var(--theme-d) 22%, transparent);transform:translateY(-1px)}.completion-btn-primary:active{transform:scale(.96)}.completion-btn{font-family:var(--font-ui);color:var(--c-ink);border:1px solid var(--btn-outline);border-radius:var(--r-full);letter-spacing:.5px;background:0 0;padding:10px 28px;font-size:14px;transition:background .25s,border-color .25s,color .25s}.completion-btn:hover{background:var(--btn-ghost-hover-bg);border-color:var(--btn-ghost-hover-border);color:var(--theme-d);background:var(--warm)}.completion-btn:active{transform:scale(.96)}.reading-toast{background:color-mix(in srgb, var(--c-ink) 80%, transparent);color:var(--white);font-family:var(--font-ui);border-radius:var(--r-full);z-index:200;pointer-events:none;padding:10px 20px;font-size:13px;animation:.3s toastIn,.3s 2.2s forwards toastOut;position:fixed;bottom:80px;left:50%;transform:translate(-50%)}@keyframes toastIn{0%{opacity:0;transform:translate(-50%)translateY(8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes toastOut{0%{opacity:1}to{opacity:0}}.glossary-popup{background:color-mix(in srgb, var(--white) 90%, transparent);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-ink);border-radius:var(--r-md);z-index:100;min-width:180px;max-width:calc(100vw - 40px);padding:14px 18px;animation:.35s cubic-bezier(.34,1.56,.64,1) popIn;position:fixed;transform:translate(-50%,-100%);box-shadow:0 8px 32px #0000001a}.glossary-word{font-family:var(--font-serif);color:var(--c-ink);margin-bottom:4px;font-size:18px;font-weight:600}.glossary-pinyin-inline{font-family:var(--font-ui);color:var(--c-text-hint);margin-left:8px;font-size:13px;font-weight:400}.glossary-category{font-family:var(--font-ui);color:var(--theme);background:var(--theme-bg);border-radius:var(--r-full);margin-bottom:6px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.glossary-definition{color:var(--c-text-body);font-size:14px;line-height:1.8}.counter-page{padding:var(--page-padding);flex-direction:column;align-items:center;min-height:80vh;padding-top:48px;display:flex}.counter-tabs{border-radius:var(--r-full);background:#00000008;width:100%;margin-bottom:28px;padding:4px;animation:.5s cubic-bezier(.22,1,.36,1) both staggerIn;display:flex;position:relative;overflow:hidden}.counter-tabs-pill{background:var(--white);border-radius:var(--r-full);pointer-events:none;z-index:0;width:calc(50% - 4px);transition:transform .4s cubic-bezier(.34,1.3,.4,1);position:absolute;top:4px;bottom:4px;left:4px;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a}.counter-tabs[data-active=history] .counter-tabs-pill{transform:translate(100%)}.counter-tab{border-radius:var(--r-full);font-family:var(--font-ui);color:var(--c-text-mute);text-align:center;letter-spacing:.5px;z-index:1;flex:1;padding:10px 16px;font-size:14px;font-weight:500;transition:color .3s;position:relative}.counter-tab.active{color:var(--theme-d);font-weight:600}.counter-tab:not(.active):hover{color:var(--c-ink)}[data-theme=dark] .counter-tabs{background:#ffffff0a}[data-theme=dark] .counter-tabs-pill{background:#ffffff14;box-shadow:0 1px 3px #0003}.counter-display{text-align:center;margin-bottom:32px;animation:.5s cubic-bezier(.22,1,.36,1) both staggerIn}.counter-number{font-family:var(--font-body);color:var(--c-ink);font-size:56px;font-weight:800;line-height:1;transition:transform .4s cubic-bezier(.34,1.56,.64,1),color .3s;display:block}.counter-number.bounce{animation:.4s cubic-bezier(.34,1.56,.64,1) counterBounce}.counter-number.hit{color:var(--theme)}.counter-target{font-family:var(--font-ui);color:var(--c-text-hint);font-size:18px;font-weight:500}.counter-ring-wrap{aspect-ratio:1;width:55vw;max-width:240px;margin-bottom:32px;animation:.6s cubic-bezier(.34,1.56,.64,1) 80ms both scaleIn;position:relative}.counter-ring{width:100%;height:100%}.ring-bg{opacity:.5}.ring-progress{transition:stroke-dashoffset .6s}.counter-circle{cursor:pointer;background:radial-gradient(circle at 32% 28%,#ffe8be8c 0%,#0000 35%),radial-gradient(at 50% 115%,#3c1c068c 0%,#0000 65%),radial-gradient(#c48449 0%,#a86a33 45%,#7f4c22 85%,#5e3614 100%);border-radius:55% 55% 50% 50%/48% 48% 55% 55%;justify-content:center;align-items:center;transition:transform .16s cubic-bezier(.34,1.56,.64,1),box-shadow .2s;animation:4.5s ease-in-out infinite woodBreathe;display:flex;position:absolute;inset:10%;box-shadow:0 14px 32px #46230a61,0 4px 10px #46230a40,inset 0 3px 8px #ffdcaf73,inset 0 -6px 12px #1e0c0273,inset 0 0 0 1px #140a004d}.counter-circle:before{content:"";pointer-events:none;background:linear-gradient(#190c02bf 0%,#0a0500d9 50%,#46260e66 100%);border-radius:3px;width:62%;height:5px;position:absolute;top:54%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 1px 2px #0009,0 1px #ffdcaa33}.counter-circle:after{content:"";pointer-events:none;background:radial-gradient(circle at 35% 30%,#5e3614 0%,#1e0e04 70%);border-radius:50%;width:9%;height:9%;position:absolute;top:30%;right:28%;box-shadow:inset 0 1px 1px #0009,0 1px #ffdcaa33}.counter-circle:hover{transform:translateY(-3px);box-shadow:0 18px 40px #46230a73,0 6px 14px #46230a4d,inset 0 3px 8px #ffdcaf80,inset 0 -6px 12px #1e0c0273,inset 0 0 0 1px #140a004d}.counter-circle.pressed{animation:.25s cubic-bezier(.34,1.8,.5,1) woodKnock;transform:scale(.94)translateY(1px);box-shadow:0 4px 10px #46230a59,inset 0 2px 6px #ffdcaf59,inset 0 -3px 6px #1e0c0280,inset 0 0 0 1px #140a0059}@keyframes woodBreathe{0%,to{filter:brightness()}50%{filter:brightness(1.02)}}@keyframes woodKnock{0%{transform:scale(1)translateY(0)}40%{transform:scale(.94)translateY(2px)}to{transform:scale(1)translateY(0)}}[data-theme=dark] .counter-circle{background:radial-gradient(circle at 32% 28%,#ffd2a04d 0%,#0000 35%),radial-gradient(at 50% 115%,#140800b3 0%,#0000 65%),radial-gradient(#8b5a2b 0%,#6f4322 45%,#4a2b10 85%,#2e1a06 100%);box-shadow:0 14px 32px #00000080,0 4px 10px #0006,inset 0 3px 8px #ffc89640,inset 0 -6px 12px #0009,inset 0 0 0 1px #0006}.circle-label{font-family:var(--font-serif);color:var(--btn-ink-fg);letter-spacing:2px;font-size:28px;font-weight:700}.counter-actions{gap:12px;margin-bottom:32px;animation:.5s cubic-bezier(.22,1,.36,1) .16s both staggerIn;display:flex}.counter-action-btn{font-family:var(--font-ui);color:var(--c-ink-soft);border-radius:var(--r-full);border:1px solid var(--btn-outline);letter-spacing:1px;background:0 0;padding:9px 22px;font-size:13px;transition:background .3s,border-color .3s,color .3s,transform .22s cubic-bezier(.22,1,.36,1)}.counter-action-btn:hover{background:var(--btn-ghost-hover-bg);border-color:var(--btn-ghost-hover-border);color:var(--theme-d);transform:translateY(-1px)}.counter-action-btn:active{transform:scale(.96)}.counter-action-btn.danger{color:var(--rose);border-color:#d4849a66}.counter-action-btn.danger:hover{background:color-mix(in srgb, var(--rose) 8%, transparent);border-color:color-mix(in srgb, var(--rose) 60%, transparent);color:var(--rose)}.counter-action-btn.save-btn{background:var(--btn-ink);color:var(--btn-ink-fg);border-color:var(--btn-ink);padding:9px 24px}.counter-action-btn.save-btn:hover{background:var(--btn-ink-hover);border-color:var(--btn-ink-hover);color:var(--btn-ink-fg);box-shadow:0 4px 12px color-mix(in srgb, var(--theme-d) 20%, transparent);transform:translateY(-1px)}.history-tab-content{width:100%;animation:.25s fadeIn}.history-empty{text-align:center;color:var(--c-text-hint);padding:60px 20px;font-size:14px}.history-total{align-items:baseline;gap:6px;margin-bottom:16px;padding:0 4px;display:flex}.history-total-number{font-family:var(--font-body);color:var(--theme);font-size:28px;font-weight:800}.history-total-label{font-family:var(--font-ui);color:var(--c-text-mute);font-size:13px}.history-list{flex-direction:column;gap:6px;display:flex}.history-row{background:var(--white);border:1px solid var(--border-ink);border-radius:var(--r-md);justify-content:space-between;align-items:center;padding:14px 16px;transition:all .2s;display:flex}.history-row.deleting{background:var(--rose-bg);border-color:#d4849a33}.history-left{flex:1;align-items:center;gap:12px;min-width:0;display:flex}.history-count-badge{font-family:var(--font-body);color:var(--theme);text-align:center;min-width:40px;font-size:16px;font-weight:700}.history-detail{flex-direction:column;gap:1px;min-width:0;display:flex}.history-note{color:var(--c-ink);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;overflow:hidden}.history-date{font-family:var(--font-ui);color:var(--c-text-hint);font-size:11px}.history-actions{flex-shrink:0;gap:4px;display:flex}.history-edit-btn,.history-delete-btn{font-family:var(--font-ui);color:var(--c-text-hint);border-radius:var(--r-full);padding:4px 10px;font-size:12px;transition:all .18s}.history-edit-btn:hover{color:var(--theme);background:var(--theme-bg)}.history-delete-btn:hover{color:var(--rose);background:var(--rose-bg)}.history-delete-btn.confirm{color:var(--on-accent);background:var(--rose);font-weight:600}.history-note-input{width:100%;font-family:var(--font-body);color:var(--c-ink);background:var(--warm);border:1px solid var(--border-ink);border-radius:var(--r-sm);outline:none;padding:8px 12px;font-size:13px;transition:border-color .2s}.history-note-input:focus{border-color:var(--theme)}.target-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:200;background:#0000004d;justify-content:center;align-items:flex-end;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.target-sheet{background:color-mix(in srgb, var(--white) 90%, transparent);-webkit-backdrop-filter:blur(20px);border-radius:var(--r-card-lg) var(--r-card-lg) 0 0;width:100%;max-width:420px;padding:24px var(--page-padding) 40px;animation:.3s cubic-bezier(.22,1,.36,1) slideUp}.target-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.target-title{font-family:var(--font-serif);font-size:18px;font-weight:600}.target-close{border-radius:var(--r-full);background:var(--warm);width:28px;height:28px;color:var(--c-text-mute);justify-content:center;align-items:center;transition:all .18s;display:flex}.target-close:active{transform:scale(.9)}.target-input{width:100%;font-size:16px;font-family:var(--font-body);border:1px solid var(--c-ink-faint);border-radius:var(--r-md);background:var(--white);color:var(--c-ink);outline:none;margin-bottom:16px;padding:14px 16px;transition:border-color .2s,box-shadow .25s}.target-input:focus{border-color:var(--theme);box-shadow:0 0 0 3px color-mix(in srgb, var(--theme) 10%, transparent)}.target-confirm{background:var(--btn-ink);width:100%;color:var(--btn-ink-fg);border-radius:var(--r-full);font-family:var(--font-ui);letter-spacing:1px;border:none;padding:14px;font-size:15px;font-weight:600;transition:background .25s,transform .2s cubic-bezier(.22,1,.36,1),box-shadow .25s}.target-confirm:hover{background:var(--btn-ink-hover);box-shadow:0 6px 16px color-mix(in srgb, var(--theme-d) 22%, transparent);transform:translateY(-1px)}.target-confirm:active{transform:scale(.97)}.save-summary{color:var(--c-text-body);text-align:center;margin-bottom:16px;font-size:16px}.save-summary strong{color:var(--theme);font-size:24px;font-weight:800}.preset-notes{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.preset-btn{font-family:var(--font-ui);color:var(--c-ink-soft);border-radius:var(--r-full);border:1px solid var(--btn-outline);background:0 0;padding:7px 16px;font-size:13px;transition:background .3s,border-color .3s,color .3s}.preset-btn:hover{background:var(--btn-ghost-hover-bg);border-color:var(--btn-ghost-hover-border);color:var(--theme-d)}.preset-btn.active{color:var(--btn-ink-fg);border-color:var(--btn-ink);background:var(--btn-ink)}.profile-page{padding:var(--page-padding);padding-top:48px}.profile-title{font-family:var(--font-serif);margin-bottom:24px;font-size:32px;font-weight:700;animation:.5s cubic-bezier(.22,1,.36,1) both staggerIn}.profile-card{text-align:left;background:color-mix(in srgb, var(--white) 80%, transparent);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-ink);border-radius:var(--r-lg);align-items:center;gap:16px;width:100%;margin-bottom:28px;padding:20px;transition:all .18s;animation:.5s cubic-bezier(.22,1,.36,1) 40ms both staggerIn;display:flex}button.profile-card:active{background:var(--warm);transform:scale(.98)}.profile-avatar{border-radius:var(--r-full);background:var(--warm);border:1px solid var(--border-ink);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;transition:opacity .18s;display:flex;position:relative}button.profile-avatar:active{opacity:.7}.avatar-img{object-fit:cover;border-radius:var(--r-full);width:44px;height:44px;position:absolute;top:-1px;left:-1px}.avatar-edit-badge{border-radius:var(--r-full);background:var(--theme);width:18px;height:18px;color:var(--on-accent);border:1.5px solid var(--white);z-index:1;justify-content:center;align-items:center;font-size:10px;display:flex;position:absolute;bottom:-1px;right:-1px}.avatar-input-hidden{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.profile-card-body{flex:1;min-width:0}.profile-card-text{font-family:var(--font-body);margin-bottom:2px;font-size:16px;font-weight:600}.profile-name-btn{text-align:left;align-items:center;gap:6px;transition:color .18s;display:flex}.name-edit-icon{color:var(--c-text-hint);opacity:0;font-size:12px;transition:opacity .18s}.profile-name-btn:hover .name-edit-icon,.profile-name-btn:active .name-edit-icon{opacity:1}.profile-card-meta{font-family:var(--font-ui);color:var(--c-text-hint);flex-wrap:wrap;align-items:center;gap:0;margin-bottom:4px;font-size:11px;display:flex}.meta-dot{margin:0 5px}.name-edit-row{align-items:center;gap:8px;margin-bottom:4px;display:flex}.name-edit-input{font-family:var(--font-ui);color:var(--c-ink);background:var(--white);border:1px solid var(--border-ink);border-radius:var(--r-sm);outline:none;flex:1;padding:6px 10px;font-size:14px;font-weight:500;transition:border-color .2s}.name-edit-input:focus{border-color:var(--theme)}.name-edit-input::placeholder{color:var(--c-text-hint);font-weight:400}.name-edit-save{font-family:var(--font-ui);color:var(--theme);border-radius:var(--r-sm);background:var(--theme-bg);border:1px solid var(--theme-xl);flex-shrink:0;padding:6px 12px;font-size:13px;font-weight:500;transition:all .18s}.name-edit-save:active{opacity:.8;transform:scale(.94)}.profile-card-sub{color:var(--c-text-mute);font-size:13px}.profile-sync-btn{font-family:var(--font-ui);color:var(--theme);font-size:13px;font-weight:500;transition:opacity .18s}.profile-sync-btn:active{opacity:.6}.profile-logout-btn{color:var(--c-text-hint)}.profile-section{margin-bottom:24px;animation:.5s cubic-bezier(.22,1,.36,1) 80ms both staggerIn}.section-title{font-family:var(--font-ui);color:var(--c-text-hint);text-transform:uppercase;letter-spacing:2px;margin-bottom:12px;padding-left:4px;font-size:12px;font-weight:600}.section-card{background:color-mix(in srgb, var(--white) 80%, transparent);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-ink);border-radius:var(--r-lg);overflow:hidden}.record-item{border-bottom:1px solid var(--border-ink);justify-content:space-between;align-items:center;padding:14px 16px;font-size:14px;display:flex}.record-item:last-child{border-bottom:none}.record-name{font-family:var(--font-serif);color:var(--c-ink);font-weight:500}.record-count{font-family:var(--font-ui);color:var(--theme);align-items:center;gap:6px;font-size:13px;font-weight:600;display:flex}.record-dot{border-radius:var(--r-full);background:var(--theme);width:5px;height:5px}.setting-item{border-bottom:1px solid var(--border-ink);justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.setting-item:last-child{border-bottom:none}.setting-label{color:var(--c-ink);align-items:center;font-size:14px;display:flex}.setting-link{cursor:pointer;width:100%;transition:background .18s}.setting-link:active{background:var(--warm)}.setting-arrow{color:var(--c-text-hint);font-size:16px;transition:transform .2s}.setting-arrow.open{transform:rotate(90deg)}.font-choice-options{gap:8px;display:flex}.font-choice-btn{border-radius:var(--r-sm);border:1px solid var(--border-ink);background:var(--white);flex-direction:column;align-items:center;gap:4px;min-width:52px;padding:8px 12px;transition:all .2s;display:flex}.font-choice-btn.active{border-color:var(--theme);background:var(--theme-bg)}.font-choice-btn:active{transform:scale(.94)}.font-sample{color:var(--c-ink);font-size:18px;font-weight:600;line-height:1}.font-sample-serif{font-family:Noto Serif SC,Georgia,serif}.font-sample-sans{font-family:Nunito,Noto Sans SC,system-ui,sans-serif}.font-sample-system{font-family:system-ui,-apple-system,sans-serif}.font-label{font-family:var(--font-ui);color:var(--c-text-mute);font-size:10px;font-weight:500}.font-choice-btn.active .font-label{color:var(--theme)}.font-size-options{gap:6px;display:flex}.font-size-btn{border-radius:var(--r-sm);width:36px;height:32px;font-family:var(--font-ui);color:var(--c-text-mute);border:1px solid var(--border-ink);background:var(--white);justify-content:center;align-items:center;font-size:12px;font-weight:500;transition:all .2s;display:flex}.font-size-btn.active{color:var(--theme);border-color:var(--theme);background:var(--theme-bg)}.font-size-btn:active{transform:scale(.94)}.setting-theme{flex-direction:column;align-items:stretch;gap:10px}.theme-header{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.theme-current{font-family:var(--font-ui);color:var(--c-text-mute);letter-spacing:1px;font-size:11px}.theme-chip-grid{grid-template-columns:repeat(4,1fr);gap:10px 8px;width:100%;display:grid}.theme-chip{cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:center;gap:5px;padding:0;transition:transform .15s cubic-bezier(.22,1,.36,1);display:flex}.theme-chip:active{transform:scale(.94)}.theme-chip-swatch{aspect-ratio:1;border-radius:10px;justify-content:center;align-items:center;width:100%;transition:box-shadow .22s;display:flex;position:relative;box-shadow:inset 0 0 0 1px #0000000f}.theme-chip.active .theme-chip-swatch{box-shadow:inset 0 0 0 1px #00000014, 0 0 0 2px var(--theme-d)}.theme-chip-check{background:var(--theme-d);color:#fff;border-radius:var(--r-full);width:16px;height:16px;padding:2px;animation:.35s cubic-bezier(.34,1.56,.64,1) activeDot;position:absolute;top:5px;right:5px;box-shadow:0 1px 3px #0003}.theme-chip-label{font-family:var(--font-ui);color:var(--c-text-mute);letter-spacing:.5px;font-size:11px;transition:color .22s}.theme-chip.active .theme-chip-label{color:var(--c-ink);font-weight:600}.theme-chip-custom .theme-chip-swatch{background-image:linear-gradient(135deg,#f4848a 0%,#f4c76a 25%,#95d390 50%,#6ab8f0 75%,#b88ce0 100%);position:relative}.theme-chip-custom .theme-chip-swatch:before{content:"";background:var(--white);border-radius:8px;position:absolute;inset:3px}.theme-chip-custom .theme-chip-swatch>svg,.theme-chip-custom .theme-chip-swatch>.theme-chip-check{z-index:1;position:relative}.theme-chip-custom .theme-chip-swatch>svg:not(.theme-chip-check){color:var(--c-ink-soft)}.theme-chip-custom.active .theme-chip-swatch:before{display:none}.theme-chip-custom.active .theme-chip-swatch{background-image:none}.color-input-hidden{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.color-panel{background:var(--white);border:1px solid var(--border-ink);border-radius:12px;width:100%;margin-top:4px;padding:14px;animation:.3s cubic-bezier(.22,1,.36,1) both staggerIn}.color-palette{grid-template-columns:repeat(6,1fr);gap:8px;margin-bottom:12px;display:grid}.palette-dot{aspect-ratio:1;border-radius:var(--r-full);cursor:pointer;border:2px solid #0000;width:100%;transition:all .18s cubic-bezier(.34,1.56,.64,1);box-shadow:inset 0 0 0 1px #0000000f}.palette-dot:hover{transform:scale(1.08)}.palette-dot.active{border-color:var(--theme-d);box-shadow:inset 0 0 0 1px #0000001a, 0 2px 8px color-mix(in srgb, var(--theme-d) 24%, transparent);transform:scale(1.12)}.palette-dot:active{transform:scale(.9)}.color-hex-row{background:var(--cream);border:1px solid var(--border-ink);border-radius:var(--r-sm);align-items:center;gap:6px;padding:6px 10px;display:flex}.hex-hash{font-family:var(--font-ui);color:var(--c-text-hint);font-size:13px;font-weight:600}.hex-input{font-family:var(--font-ui);color:var(--c-ink);letter-spacing:1px;text-transform:uppercase;background:0 0;border:none;outline:none;flex:1;font-size:13px;font-weight:500}.hex-pick-btn{font-family:var(--font-ui);color:var(--theme-d);border-radius:var(--r-full);background:var(--btn-ghost-hover-bg);border:1px solid var(--btn-ghost-hover-border);letter-spacing:.5px;flex-shrink:0;padding:5px 12px;font-size:12px;font-weight:600;transition:all .18s}.hex-pick-btn:hover{background:color-mix(in srgb, var(--theme-d) 14%, transparent)}.hex-pick-btn:active{transform:scale(.94)}.toggle{border-radius:var(--r-full);background:var(--warm-alt);border:1px solid var(--border-ink);cursor:pointer;flex-shrink:0;width:44px;height:24px;padding:0;transition:all .22s;position:relative}.toggle.on{background:var(--theme-l);border-color:var(--theme)}.toggle-knob{border-radius:var(--r-full);background:var(--white);border:1px solid var(--border-ink);width:18px;height:18px;transition:all .22s;position:absolute;top:2px;left:2px}.toggle.on .toggle-knob{left:22px}.about-body{margin-bottom:20px}.about-row{border-bottom:1px solid var(--border-ink);justify-content:space-between;align-items:center;padding:12px 0;display:flex}.about-row-last{border-bottom:none}.about-row-label{font-family:var(--font-ui);color:var(--c-text-mute);font-size:14px}.about-row-value{font-family:var(--font-ui);color:var(--c-ink);font-size:14px;font-weight:500}.about-row-link{font-family:var(--font-ui);color:var(--theme);font-size:13px;font-weight:500;text-decoration:none}.about-row-link:active{opacity:.7}.crop-modal{z-index:1000;background:#000000e0;flex-direction:column;justify-content:center;align-items:center;gap:24px;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.crop-hint{font-family:var(--font-ui);color:#ffffff80;font-size:13px}.crop-area{touch-action:none;cursor:grab;border:2px solid #fff3;border-radius:50%;flex-shrink:0;position:relative;overflow:hidden}.crop-area:active{cursor:grabbing}.crop-area img{pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;position:absolute}.crop-slider{width:200px;accent-color:var(--theme);height:4px}.crop-buttons{gap:16px;display:flex}.crop-btn{border-radius:var(--r-full);font-family:var(--font-ui);padding:10px 32px;font-size:14px;font-weight:500;transition:all .18s}.crop-btn:active{transform:scale(.95)}.crop-btn-cancel{color:#ffffffd9;letter-spacing:1px;background:0 0;border:1.5px solid #ffffff59}.crop-btn-confirm{color:var(--btn-ink-fg);background:var(--btn-ink);letter-spacing:1px;border:none;font-weight:600}.install-modal{z-index:1000;background:#00000080;justify-content:center;align-items:center;padding:24px;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.install-content{background:var(--cream);border-radius:var(--r-lg);width:100%;max-width:320px;padding:28px 24px;animation:.3s cubic-bezier(.34,1.56,.64,1) both scaleIn}.install-title{font-family:var(--font-serif);color:var(--c-ink);text-align:center;margin-bottom:20px;font-size:20px;font-weight:600}.install-steps{flex-direction:column;gap:14px;margin-bottom:24px;display:flex}.install-step{font-family:var(--font-ui);color:var(--c-ink);align-items:flex-start;gap:12px;font-size:14px;line-height:1.5;display:flex}.step-num{border-radius:var(--r-full);background:var(--theme-bg);width:24px;height:24px;color:var(--theme);flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.install-close-btn{border-radius:var(--r-full);background:var(--btn-ink);width:100%;color:var(--btn-ink-fg);font-family:var(--font-ui);letter-spacing:1px;border:none;padding:14px;font-size:14px;font-weight:600;transition:all .18s;display:block}.install-close-btn:hover{background:var(--btn-ink-hover)}.install-close-btn:active{transform:scale(.97)}.login-page{min-height:100vh;padding:var(--page-padding);background:var(--cream);flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative}.login-close{border-radius:var(--r-full);background:var(--warm);border:1px solid var(--border-ink);width:32px;height:32px;color:var(--c-text-mute);z-index:10;justify-content:center;align-items:center;transition:all .18s;display:flex;position:absolute;top:16px;right:16px}.login-close:active{transform:scale(.9)}.login-hero{text-align:center;margin-bottom:40px;animation:.5s cubic-bezier(.22,1,.36,1) both staggerIn}.login-title{font-family:var(--font-serif);color:var(--c-ink);margin-bottom:6px;font-size:28px;font-weight:700}.login-desc{font-family:var(--font-ui);color:var(--c-text-mute);font-size:14px}.login-form{width:100%;max-width:340px;animation:.5s cubic-bezier(.22,1,.36,1) 60ms both staggerIn}.google-btn{background:var(--white);border:1px solid var(--btn-outline);border-radius:var(--r-full);width:100%;font-family:var(--font-ui);color:var(--c-ink);letter-spacing:.5px;justify-content:center;align-items:center;gap:10px;padding:13px 16px;font-size:14px;font-weight:600;transition:all .18s;display:flex}.google-btn:hover{background:var(--btn-ghost-hover-bg);border-color:var(--btn-ghost-hover-border)}.google-btn:active{transform:scale(.97)}.google-icon{flex-shrink:0}.login-divider{align-items:center;gap:12px;margin:20px 0;display:flex}.divider-line{background:var(--border-ink);flex:1;height:1px}.divider-text{font-family:var(--font-ui);color:var(--c-text-hint);font-size:12px}.form-fields{flex-direction:column;gap:10px;margin-bottom:16px;display:flex}.form-input{width:100%;font-family:var(--font-body);color:var(--c-ink);background:var(--white);border:1px solid var(--c-ink-faint);border-radius:var(--r-md);outline:none;padding:13px 16px;font-size:14px;transition:border-color .2s,box-shadow .25s}.form-input::placeholder{color:var(--c-text-hint)}.form-input:focus{border-color:var(--theme);box-shadow:0 0 0 3px color-mix(in srgb, var(--theme) 10%, transparent)}.login-error{font-family:var(--font-ui);color:var(--rose);text-align:center;margin-bottom:12px;font-size:13px;animation:.2s fadeIn}.submit-btn{background:var(--btn-ink);width:100%;color:var(--btn-ink-fg);border-radius:var(--r-full);font-family:var(--font-ui);letter-spacing:1px;border:none;padding:14px;font-size:15px;font-weight:600;transition:all .18s}.submit-btn:hover{background:var(--btn-ink-hover);box-shadow:0 6px 16px color-mix(in srgb, var(--theme-d) 22%, transparent);transform:translateY(-1px)}.submit-btn:active{transform:scale(.97)}.mode-switch{text-align:center;font-family:var(--font-ui);color:var(--c-text-mute);margin-top:20px;font-size:13px}.mode-link{font-family:var(--font-ui);color:var(--theme);margin-left:2px;font-size:13px;font-weight:600;transition:opacity .18s}.mode-link:active{opacity:.7}.forgot-row{text-align:right;margin:-8px 0 12px}.forgot-link{font-family:var(--font-ui);color:var(--c-text-hint);font-size:13px;transition:color .18s}.forgot-link:hover{color:var(--theme)}.sent-content{text-align:center;width:100%;max-width:340px;animation:.5s cubic-bezier(.22,1,.36,1) both staggerIn}.sent-icon{margin-bottom:16px;font-size:48px;animation:.5s cubic-bezier(.34,1.56,.64,1) both scaleIn}.sent-icon-wrap{border-radius:var(--r-full);background:var(--theme-bg);justify-content:center;align-items:center;width:64px;height:64px;margin:0 auto 16px;animation:.5s cubic-bezier(.34,1.56,.64,1) both scaleIn;display:flex}.sent-title{font-family:var(--font-serif);color:var(--c-ink);margin-bottom:8px;font-size:22px;font-weight:600}.sent-desc{font-family:var(--font-ui);color:var(--c-text-mute);margin-bottom:8px;font-size:14px;line-height:1.6}.sent-email{font-family:var(--font-ui);color:var(--c-ink);margin-bottom:24px;font-size:14px;font-weight:600}.sent-open-btn{background:var(--btn-ink);width:100%;color:var(--btn-ink-fg);border-radius:var(--r-full);font-family:var(--font-ui);text-align:center;letter-spacing:1px;border:none;margin-bottom:12px;padding:14px;font-size:15px;font-weight:600;text-decoration:none;transition:all .18s;display:block}.sent-open-btn:hover{background:var(--btn-ink-hover);box-shadow:0 6px 16px color-mix(in srgb, var(--theme-d) 22%, transparent);transform:translateY(-1px)}.sent-open-btn:active{transform:scale(.97)}.sent-back-btn{font-family:var(--font-ui);color:var(--c-ink);border:1px solid var(--btn-outline);border-radius:var(--r-full);background:0 0;padding:10px 28px;font-size:14px;transition:all .18s}.sent-back-btn:hover{background:var(--btn-ghost-hover-bg);border-color:var(--btn-ghost-hover-border);color:var(--theme-d)}.sent-back-btn:active{transform:scale(.96)}.password-strength{align-items:center;gap:8px;padding:0 4px;display:flex}.strength-bar{background:var(--warm-alt);border-radius:var(--r-full);flex:1;height:3px;overflow:hidden}.strength-fill{border-radius:var(--r-full);height:100%;transition:width .3s,background .3s}.password-strength.weak .strength-fill{background:var(--rose);width:33%}.password-strength.medium .strength-fill{background:var(--amber);width:66%}.password-strength.strong .strength-fill{background:var(--theme);width:100%}.strength-label{font-family:var(--font-ui);min-width:16px;font-size:11px;font-weight:600}.password-strength.weak .strength-label{color:var(--rose)}.password-strength.medium .strength-label{color:var(--amber)}.password-strength.strong .strength-label{color:var(--theme)}
