.app-shell{min-height:100svh}.app-header{z-index:50;border-bottom:1px solid color-mix(in srgb, var(--border) 72%, transparent);background:color-mix(in srgb, var(--bg) 86%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);justify-content:space-between;align-items:center;gap:20px;width:100%;min-height:66px;padding:0 clamp(18px,6vw,88px);display:flex;position:sticky;top:0}.app-main{min-height:100svh}.app-shell-auth .app-main{margin-left:0}.app-logo{color:var(--text-h);align-items:center;gap:11px;font-size:18px;font-weight:800;text-decoration:none;display:inline-flex}.app-logo-mark{object-fit:contain;width:48px;height:48px;display:block}.app-logo-text{flex-direction:column;align-items:flex-start;line-height:1.05;display:flex}.app-logo-name{color:var(--text-h);font-family:var(--cjk-sans);font-size:16px;font-weight:850}.app-logo-subtitle{color:var(--text);letter-spacing:.18em;text-transform:uppercase;margin-top:5px;font-size:10px;font-weight:700}.app-nav{justify-content:flex-end;align-items:center;gap:12px;min-width:0;display:flex}.app-nav-links{background:color-mix(in srgb, var(--surface-container-low) 68%, transparent);box-shadow:none;border:0;border-radius:999px;align-items:center;gap:4px;padding:4px;display:flex}.app-nav-link{min-height:34px;color:var(--text);border-radius:999px;justify-content:center;align-items:center;gap:7px;padding:0 14px;font-size:14px;font-weight:700;text-decoration:none;transition:background .18s,color .18s,transform .18s;display:inline-flex;position:relative}.app-nav-link:hover{color:var(--accent);background:#b9342f0f}.app-nav-link.active{background:var(--surface-container-lowest);color:var(--text-h);box-shadow:0 1px 4px #2d1f161f}.app-nav-link:after{content:none}.app-account-menu{position:relative}.app-user{width:36px;max-width:36px;min-height:36px;color:var(--text);cursor:pointer;box-shadow:none;background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:0;font-size:13px;font-weight:700;transition:border-color .18s,color .18s,transform .18s;display:inline-flex}.app-user:hover{color:var(--accent);background:var(--accent-bg);border-color:#0000}.app-user span,.app-user svg:last-child{display:none}.app-account-dropdown{z-index:100;border:1px solid var(--border);background:var(--surface-container-lowest);min-width:210px;box-shadow:var(--shadow);transform-origin:100% 0;border-radius:12px;padding:6px;animation:.16s both menu-in;position:absolute;inset:calc(100% + 8px) 0 auto auto}.app-account-item{width:100%;color:var(--text-h);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;justify-content:flex-start;align-items:center;gap:10px;padding:10px 12px;font-size:14px;text-decoration:none;display:flex}.app-account-item:hover{background:var(--accent-bg);color:var(--accent)}.app-account-logout{color:var(--text)}.app-login-link{border:1px solid var(--accent);min-height:36px;color:var(--accent);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;padding:0 12px;font-size:13px;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.app-login-link:hover{background:var(--accent-bg)}.app-anon-actions{align-items:center;gap:8px;display:flex}.app-start-link{border:1px solid var(--accent);background:var(--accent);color:#fffaf4;white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;min-height:38px;padding:0 17px;font-size:13px;font-weight:750;line-height:1;text-decoration:none;transition:transform .16s,background .16s,box-shadow .16s;display:inline-flex;box-shadow:0 6px 16px #b9342f2e}.app-start-link:hover{background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 8px 20px #b9342f3d}@media (width<=760px){.app-header{flex-direction:column;align-items:flex-start;gap:10px;padding:12px 16px}.app-nav{justify-content:space-between;width:100%}.app-anon-actions{gap:6px}.app-login-link{border-color:#0000;padding:0 8px}.app-start-link{min-height:36px;padding:0 13px}.app-nav-links{max-width:100%;overflow-x:auto}.app-nav-link{white-space:nowrap;padding:0 12px}.app-user span,.app-user svg:last-child{display:none}}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (width<=760px){.app-header{border-right:0;border-bottom:1px solid var(--border);flex-direction:row;justify-content:space-between;align-items:center;gap:12px;width:auto;padding:10px 16px;position:sticky;top:0;bottom:auto}.app-main{margin-left:0}.app-logo-mark{width:36px;height:36px}.app-logo-name{font-size:14px}.app-logo-subtitle{display:none}.app-nav{flex-direction:row;flex:auto;justify-content:flex-end;align-items:center;gap:8px;width:auto}.app-nav-links{flex-direction:row;flex:none;gap:6px}.app-nav-link{border-radius:12px;gap:0;width:44px;height:40px;padding:0;font-size:0}.app-nav-link.active:before,.app-nav-link:after{display:none}.app-user{border-radius:12px;width:44px;max-width:44px;min-height:40px}.app-account-dropdown{transform-origin:100% 0;inset:calc(100% + 8px) 0 auto auto}}.dashboard{text-align:left;max-width:1152px;margin:0 auto;padding:32px 24px 88px}.paper-panel{border:1px solid color-mix(in srgb, var(--border) 72%, transparent);background:linear-gradient(90deg,#795a3e0e 1px,#0000 1px) 0 0/46px 46px,linear-gradient(#795a3e0a 1px,#0000 1px) 0 0/46px 46px,linear-gradient(135deg,#b9342f1a,#e1aa5c14 44%,#fffaf4b8);position:relative;overflow:hidden}.dashboard-header{text-align:center;margin-bottom:30px}.settings-page-header{margin-bottom:28px}.settings-section{margin-bottom:36px}.settings-section-help{color:var(--text);margin:0 0 12px;font-size:14px}.settings-placement-link{color:var(--accent);margin-top:16px;font-size:14px;text-decoration:none;display:inline-block}.settings-placement-link:hover{text-decoration:underline}.settings-placement-cta{border:1px solid var(--accent-border);background:var(--accent-bg);color:var(--accent);border-radius:14px;justify-content:space-between;align-items:center;gap:14px;margin-top:18px;padding:14px 18px;text-decoration:none;transition:background .16s,transform .16s,border-color .16s;display:flex}.settings-placement-cta:hover{background:color-mix(in srgb, var(--accent) 14%, var(--surface-container-lowest));border-color:var(--accent);transform:translateY(-1px)}.settings-placement-cta-text{flex-direction:column;gap:2px;display:flex}.settings-placement-cta-text strong{color:var(--text-h);font-size:15px}.settings-placement-cta-text span{color:var(--text);font-size:13px}.settings-placement-cta svg{flex-shrink:0}.settings-choice-stacked{flex-direction:column;align-items:center;gap:2px;line-height:1.2;display:inline-flex}.settings-choice-hint{opacity:.72;font-size:11px;font-weight:600}.settings-saved-toast{background:var(--text-h);color:#fff;opacity:0;pointer-events:none;z-index:60;border-radius:999px;align-items:center;gap:7px;padding:9px 16px;font-size:13px;font-weight:700;transition:opacity .2s,transform .2s;display:inline-flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%,12px);box-shadow:0 12px 28px #2d292638}.settings-saved-toast.visible{opacity:1;transform:translate(-50%)}.settings-saved-toast svg{color:var(--success,#2f9e44)}@media (prefers-reduced-motion:reduce){.settings-saved-toast{transition:opacity .2s;transform:translate(-50%)}}.settings-checkbox-row{color:var(--text);cursor:pointer;align-items:center;gap:12px;font-size:15px;display:flex}.settings-checkbox-row input{appearance:none;border:1px solid var(--border);background:var(--surface-container-highest);cursor:pointer;border-radius:999px;flex-shrink:0;width:42px;height:24px;margin:0;transition:background .18s,border-color .18s;position:relative}.settings-checkbox-row input:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:left .18s;position:absolute;top:50%;left:2px;transform:translateY(-50%);box-shadow:0 1px 3px #2d292647}.settings-checkbox-row input:checked{background:var(--accent);border-color:var(--accent)}.settings-checkbox-row input:checked:after{left:20px}.settings-checkbox-row input:focus-visible{outline:3px solid color-mix(in srgb, var(--accent) 34%, transparent);outline-offset:2px}.settings-level-grid{margin-top:4px}.dashboard-loading{text-align:center;color:var(--text);padding:60px 0;font-size:16px}.dashboard-error{text-align:center;color:#e53e3e;padding:60px 0;font-size:16px}.dashboard-top{justify-content:space-between;align-items:flex-end;gap:18px;margin:0 0 28px;display:flex}.dashboard-greeting{color:var(--text-h);letter-spacing:0;margin:0 0 4px;font-size:34px;font-weight:800;line-height:1.15}.dashboard-greeting-sub{color:var(--text);margin:0;font-size:15px}.dashboard-top-meta{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.dashboard-streak-chip{border:1px solid var(--border);background:var(--surface-container-lowest);color:var(--text);border-radius:999px;align-items:center;gap:6px;padding:5px 14px;font-size:14px;font-weight:700;display:inline-flex}.dashboard-streak-chip svg{color:var(--border-strong)}.dashboard-streak-chip[data-active]{color:#8a5410;background:#fdf3e2;border-color:#b56f165c}.dashboard-streak-chip[data-active] svg{color:#d8821c}.dashboard-streak-chip small{font-family:var(--cjk-sans);opacity:.72;font-size:12px;font-weight:600}.dashboard-level-pill{border:1px solid var(--accent-border);background:color-mix(in srgb, var(--surface-container-lowest) 82%, transparent);color:var(--accent);border-radius:999px;align-items:center;gap:6px;padding:5px 14px;font-size:14px;font-weight:700;text-decoration:none;transition:background .16s,border-color .16s;display:inline-flex}.dashboard-level-pill:hover{background:color-mix(in srgb, var(--accent) 14%, var(--surface-container-lowest));border-color:var(--accent)}.dashboard-section-title{font-family:Georgia, "Times New Roman", var(--heading);color:var(--text-h);letter-spacing:0;margin:0 0 16px;font-size:20px;font-weight:760;line-height:28px}.dashboard-section-head{justify-content:space-between;align-items:center;gap:16px;margin:0 0 16px;display:flex}.dashboard-section-head .dashboard-section-title{margin:0}.dashboard-today{margin:0 0 28px}.dashboard-today-cards{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:stretch;gap:18px;display:grid}.dashboard-today-card{border:1px solid color-mix(in srgb, var(--border) 75%, transparent);background:var(--surface-container-lowest);border-radius:18px;box-shadow:0 2px 8px #2d1f1612}.dashboard-read-card{grid-template-columns:minmax(180px,230px) minmax(0,1fr);display:grid;overflow:hidden}.dashboard-read-thumb{background:linear-gradient(90deg,#795a3e14 1px,#0000 1px) 0 0/32px 32px,linear-gradient(#795a3e0f 1px,#0000 1px) 0 0/32px 32px,#f1d59b;min-height:100%;position:relative;overflow:hidden}.dashboard-read-thumb img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.dashboard-read-thumb-fallback{color:#ffffffeb;font-family:var(--cjk-sans);place-items:center;font-size:64px;font-weight:850;display:grid;position:absolute;inset:0}.dashboard-read-badge{z-index:2;color:#236b47;background:#e5f6eb;border:1px solid #236b472e;border-radius:999px;align-items:center;padding:3px 10px;font-size:12px;font-weight:700;display:inline-flex;position:absolute;top:12px;left:12px}.dashboard-read-body{flex-direction:column;align-items:flex-start;min-width:0;padding:22px 24px;display:flex}.dashboard-read-empty{grid-column:1/-1}.dashboard-card-kicker{color:var(--accent);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:7px;margin:0 0 10px;font-size:12px;font-weight:800;display:inline-flex}.dashboard-read-title{color:var(--text-h);font-family:var(--cjk-sans);letter-spacing:0;margin:0 0 6px;font-size:32px;font-weight:820;line-height:1.16}.dashboard-read-meta{color:var(--text);margin:0;font-size:15px;line-height:22px}.dashboard-read-resume{color:var(--accent);font-weight:650}.dashboard-card-actions{flex-wrap:wrap;align-items:center;gap:14px;margin-top:auto;padding-top:18px;display:flex}.dashboard-encouragement{border:1px solid color-mix(in srgb, var(--accent) 20%, #ead7c6);background:#fff6ed;border-radius:16px 16px 16px 6px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:11px;width:100%;margin-top:14px;padding:12px 14px;display:grid}.dashboard-encouragement-icon{background:var(--accent);color:#fffaf4;width:36px;height:36px;font-family:var(--cjk-sans);border:2px solid #ffffffe0;border-radius:13px 13px 13px 6px;align-self:start;place-items:center;font-size:18px;font-weight:900;display:grid}.dashboard-encouragement-copy{min-width:0;display:grid}.dashboard-encouragement-copy strong{color:#a52e2a;letter-spacing:.1em;text-transform:uppercase;margin-bottom:2px;font-size:10px;font-weight:850;display:block}.dashboard-encouragement-copy p{color:var(--text-h);font-family:Georgia, "Times New Roman", var(--heading);margin:0;font-size:14px;font-weight:680;line-height:20px}.dashboard-practice-card{flex-direction:column;align-items:flex-start;padding:22px 24px;display:flex}.dashboard-practice-title{color:var(--text-h);letter-spacing:0;margin:0 0 6px;font-size:22px;font-weight:800;line-height:1.25}.dashboard-practice-detail{color:var(--text);margin:0 0 14px;font-size:15px;line-height:22px}.dashboard-memory-row{flex-wrap:wrap;gap:7px;display:flex}.dashboard-memory-chip{border:1px solid var(--border);background:var(--surface-container-low);color:var(--text);border-radius:999px;align-items:baseline;gap:5px;padding:5px 11px;font-size:12.5px;font-weight:650;display:inline-flex}.dashboard-memory-chip strong{color:var(--text-h);font-size:14px;font-weight:800}.dashboard-memory-chip[data-tone=red]{border-color:color-mix(in srgb, var(--accent) 26%, transparent);background:var(--accent-bg)}.dashboard-memory-chip[data-tone=red] strong{color:var(--accent)}.dashboard-memory-chip[data-tone=amber]{background:#fdf3e2;border-color:#b56f164d}.dashboard-memory-chip[data-tone=amber] strong{color:#b56f16}.dashboard-memory-chip[data-tone=green]{border-color:color-mix(in srgb, var(--accent-2) 28%, transparent);background:#e5f6eb}.dashboard-memory-chip[data-tone=green] strong{color:var(--accent-2)}.dashboard-primary-cta{background:var(--accent);color:#fff;border-radius:999px;flex:none;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 20px;font-weight:700;text-decoration:none;transition:background .18s,transform .18s,box-shadow .18s;display:inline-flex;box-shadow:0 12px 24px #99002724}.dashboard-primary-cta:hover{background:var(--accent-hover);transform:translateY(-2px);box-shadow:0 14px 28px #9900272e}.dashboard-card-actions .dashboard-primary-cta,.dashboard-card-actions .dashboard-primary-cta:hover{box-shadow:none}.dashboard-goal{border:1px solid color-mix(in srgb, var(--border) 75%, transparent);background:var(--surface-container-lowest);border-radius:18px;align-items:center;gap:28px;margin:0 0 32px;padding:16px 22px;display:flex;box-shadow:0 2px 8px #2d1f1612}.dashboard-goal-main{flex:1;min-width:0}.dashboard-goal-labels{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px;display:flex}.dashboard-goal-title{color:var(--text-h);font-size:14px;font-weight:750}.dashboard-goal-count{color:var(--text);align-items:center;gap:5px;font-size:13px;font-weight:700;display:inline-flex}.dashboard-goal-count[data-met]{color:var(--accent-2)}.dashboard-goal-bar{background:var(--surface-container);border-radius:999px;height:10px;overflow:hidden}.dashboard-goal-bar>span{background:linear-gradient(90deg, var(--accent), #d8821c);border-radius:999px;min-width:0;height:100%;transition:width .4s;display:block}.dashboard-goal-bar>span[data-met]{background:var(--accent-2)}.dashboard-goal-week{align-items:flex-start;gap:9px;display:flex}.dashboard-week-dot{justify-items:center;gap:4px;display:grid}.dashboard-week-dot i{border:2px solid var(--border);background:0 0;border-radius:50%;width:14px;height:14px;display:block}.dashboard-week-dot[data-state=active] i{background:#fdf3e2;border-color:#d8821c}.dashboard-week-dot[data-state=met] i{border-color:var(--accent-2);background:var(--accent-2)}.dashboard-week-dot[data-today] i{outline:2px solid color-mix(in srgb, var(--accent) 30%, transparent);outline-offset:2px}.dashboard-week-dot small{color:var(--text);letter-spacing:.06em;font-size:10px;font-weight:700}.dashboard-level{margin:0 0 36px}.dashboard-level-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.dashboard-level-metric{border:1px solid color-mix(in srgb, var(--border) 75%, transparent);background:var(--surface-container-lowest);border-radius:16px;padding:16px 18px;box-shadow:0 2px 8px #2d1f1612}.dashboard-metric-head{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:10px;display:flex}.dashboard-metric-head span{color:var(--text);font-size:13px;font-weight:700}.dashboard-metric-head strong{color:var(--text-h);white-space:nowrap;font-size:15px;font-weight:800}.dashboard-metric-bar{background:var(--surface-container);border-radius:999px;height:8px;margin-bottom:8px;overflow:hidden}.dashboard-metric-bar>span{background:var(--accent);border-radius:999px;height:100%;transition:width .4s;display:block}.dashboard-level-metric small{color:color-mix(in srgb, var(--text) 82%, transparent);font-size:12.5px;display:block}.dashboard-metric-empty{margin-top:2px}.dashboard-hub{margin-bottom:0}.dashboard-section-heading{align-items:center;gap:9px;margin:0;display:flex}.dashboard-section-heading svg{color:var(--accent)}.dashboard-hub-title{font-family:Georgia, "Times New Roman", var(--heading);color:var(--text-h);letter-spacing:0;flex:1;margin:0;font-size:20px;font-weight:760;line-height:28px}.dashboard-library-head{justify-content:space-between;align-items:center;gap:16px;margin:0 0 24px;display:flex}.dashboard-view-all{color:var(--accent);align-items:center;gap:5px;font-size:14px;font-weight:700;text-decoration:none;transition:transform .16s;display:inline-flex}.dashboard-view-all:hover{transform:translate(2px)}.dashboard-filter-pills{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.dashboard-filter-pills a{background:var(--surface-container-low);min-height:28px;color:var(--text-h);border-radius:999px;justify-content:center;align-items:center;padding:0 12px;font-size:12px;font-weight:700;text-decoration:none;transition:background .16s,color .16s,box-shadow .16s;display:inline-flex}.dashboard-filter-pills a.active{background:var(--accent);color:#fffaf4;box-shadow:0 1px 3px #2d1f161a}.dashboard-filter-pills a.current:not(.active){color:var(--accent)}.dashboard-story-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.dashboard-card-eyebrow{letter-spacing:0;text-transform:none;color:#7f001f;font-size:14px;font-weight:800;margin:0 0 6px!important}.stories-daily-feature{border:1px solid color-mix(in srgb, var(--border) 72%, transparent);background:var(--surface-container-lowest);border-radius:16px;justify-content:space-between;align-items:center;gap:18px;margin:0 0 24px;padding:16px 18px;display:flex;box-shadow:0 1px 3px #2d1f1614}.stories-daily-feature h2{color:var(--text-h);margin:0 0 4px;font-size:20px;font-weight:760}.stories-daily-feature p:not(.dashboard-card-eyebrow){color:var(--text);font-size:14px}.stories-page-nav{margin-bottom:24px}.stories-page-back{color:var(--text);align-items:center;gap:6px;font-size:14px;text-decoration:none;transition:color .16s,transform .16s;display:inline-flex}.stories-page-back:hover{color:var(--text-h);transform:translate(-2px)}.stories-page-back svg{width:18px;height:18px}.stories-page-header{margin-bottom:24px}.stories-page-title{font-family:Georgia, "Times New Roman", var(--heading);color:var(--text-h);margin:0;font-size:20px;font-weight:760;line-height:28px}.stories-page-lead{margin-bottom:0}.stories-catalog .level-row:first-of-type{margin-top:0}.dashboard-section-lead{color:var(--text);margin:0 0 24px;font-size:15px;line-height:1.5}@media (width<=980px){.dashboard-story-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-today-cards,.dashboard-level-grid{grid-template-columns:1fr}}@media (width<=1024px){.dashboard{padding:24px 16px 60px}.stories-page-title{font-size:20px}}@media (width<=760px){.dashboard{padding:24px 16px 72px}.dashboard-top{flex-direction:column;align-items:flex-start}.dashboard-top-meta{justify-content:flex-start}.dashboard-greeting{font-size:28px}.dashboard-read-card{grid-template-columns:1fr}.dashboard-read-thumb{aspect-ratio:16/9;min-height:0}.dashboard-read-title{font-size:28px}.dashboard-goal{flex-direction:column;align-items:stretch;gap:16px}.dashboard-goal-week{justify-content:space-between}.dashboard-library-head{flex-direction:column;align-items:flex-start}.dashboard-filter-pills{justify-content:flex-start}.dashboard-story-grid{grid-template-columns:1fr}.stories-daily-feature{flex-direction:column;align-items:stretch}}.practice-page{text-align:left;max-width:560px;margin:0 auto;padding:32px 24px 80px}.practice-page-nav{margin-bottom:28px}.practice-page-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:28px;display:flex}.practice-page-header .practice-page-nav{margin-bottom:0}.practice-page-back{color:var(--text);align-items:center;gap:6px;font-size:14px;text-decoration:none;display:inline-flex}.practice-page-back:hover{color:var(--text-h)}.practice-page-back svg{width:18px;height:18px}.practice-page h1{color:var(--text-h);margin:0 0 8px;font-size:26px;font-weight:700}.practice-page .practice-lead{color:var(--text);margin:0 0 28px;font-size:15px;line-height:1.5}.practice-stub{border:1px dashed var(--border);background:var(--accent-bg,#00000008);color:var(--text);border-radius:10px;padding:20px;font-size:14px;line-height:1.5}.practice-stub h2{color:var(--text-h);margin:0 0 8px;font-size:15px;font-weight:600}.practice-page-title-row{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:8px;display:flex}.practice-page-title-row h1{margin:0}.practice-coming-soon-tag{background:var(--accent-bg);border:1px solid var(--accent-border);color:var(--accent);letter-spacing:.02em;border-radius:999px;align-items:center;padding:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.practice-stub-actions{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}.practice-stub-cta{background:var(--accent);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-height:40px;padding:0 18px;font-size:14px;font-weight:700;text-decoration:none;transition:background .16s,transform .16s;display:inline-flex}.practice-stub-cta:hover{background:var(--accent-hover);transform:translateY(-1px)}.practice-stub-cta-ghost{border:1px solid var(--accent-border);color:var(--accent);background:0 0}.practice-stub-cta-ghost:hover{background:var(--accent-bg)}.pronunciation-page{max-width:640px}.pronunciation-page-lead{color:var(--text);margin:-4px 0 18px}.pronunciation-level-picker{border:1px solid var(--border);background:var(--code-bg);color:var(--text-h);border-radius:10px;justify-content:space-between;align-items:center;gap:16px;margin:18px 0;padding:14px 16px;font-weight:700;display:flex}.pronunciation-level-picker select{border:1px solid var(--border);background:var(--bg);min-width:180px;color:var(--text-h);font:inherit;border-radius:8px;padding:9px 34px 9px 12px}.pronunciation-prompt,.pronunciation-recorder,.pronunciation-results{border:1px solid var(--border);background:var(--code-bg);border-radius:10px}.pronunciation-prompt{text-align:center;padding:24px;position:relative}.pronunciation-word{cursor:pointer;background:0 0;border:0;border-radius:12px;flex-direction:column;align-items:center;gap:6px;width:100%;padding:22px 16px 18px;display:flex;position:relative}.pronunciation-word:hover{background:var(--accent-bg)}.pronunciation-word .hanzi-char-large{margin:0;line-height:1.18}.pronunciation-word .hanzi-pinyin-line{margin:8px 0 0}.pronunciation-word-speaker{background:var(--accent-bg);width:44px;height:44px;color:var(--accent);border-radius:50%;justify-content:center;align-items:center;margin-top:10px;display:inline-flex}.pronunciation-word:hover .pronunciation-word-speaker{background:var(--accent);color:#fff}.pronunciation-meaning{color:var(--text);margin:0;font-size:15px}.pronunciation-story-source{color:var(--accent);margin-top:-8px;font-size:13px;font-weight:650;text-decoration:none;display:inline-block}.pronunciation-story-source:hover{text-decoration:underline}.pronunciation-skip{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;align-items:center;gap:6px;margin:14px auto 0;padding:6px 12px;font-size:13px;font-weight:600;display:inline-flex}.pronunciation-skip:hover{color:var(--text-h)}.pronunciation-recorder{border:0;border-top:1px solid var(--border);background:0 0;border-radius:0;flex-direction:column;align-items:center;gap:12px;margin:22px -24px 0;padding:24px 24px 4px;display:flex}.pronunciation-mic{background:var(--accent);color:#fff;cursor:pointer;width:96px;height:96px;box-shadow:0 8px 20px color-mix(in srgb, var(--accent) 26%, transparent);border:0;border-radius:50%;justify-content:center;align-items:center;transition:transform .12s,box-shadow .12s,background .12s;display:inline-flex}.pronunciation-mic:hover{transform:translateY(-2px)scale(1.03)}.pronunciation-mic:active{transform:scale(.97)}.pronunciation-mic.recording{background:#e53e3e;animation:1.4s ease-out infinite pronunciation-pulse;box-shadow:0 0 #e53e3e8c}.pronunciation-mic.scoring{background:var(--muted);cursor:progress;box-shadow:none}.pronunciation-mic:disabled{cursor:progress}.pronunciation-mic-label{color:var(--text-h);font-size:15px;font-weight:700}.pronunciation-mic-hint{max-width:32ch;color:var(--text);text-align:center;opacity:.8;margin:0;font-size:12.5px;line-height:1.4}.pronunciation-playback{width:100%;max-width:320px;height:38px;margin:14px auto 0}.pronunciation-spin{animation:.9s linear infinite pronunciation-rotate}@keyframes pronunciation-pulse{0%{box-shadow:0 0 #e53e3e8c}70%{box-shadow:0 0 0 22px #0000}to{box-shadow:0 0 #0000}}@keyframes pronunciation-rotate{to{transform:rotate(360deg)}}.pronunciation-results{margin-top:16px;padding:18px}.pronunciation-overall{border-radius:14px;flex-direction:column;align-items:center;gap:4px;padding:16px;display:flex}.pronunciation-overall-score{font-size:64px;font-weight:800;line-height:1}.pronunciation-overall-label{font-size:16px;font-weight:700}.tier-good{color:var(--success,#2f9e44)}.tier-ok{color:var(--accent)}.tier-weak{color:#d9920a}.tier-bad{color:#e53e3e}.pronunciation-overall.tier-good{background:color-mix(in srgb, var(--success,#2f9e44) 12%, transparent)}.pronunciation-overall.tier-ok{background:var(--accent-bg)}.pronunciation-overall.tier-weak{background:#d9920a1f}.pronunciation-overall.tier-bad{background:#e53e3e1f}.pronunciation-syllables{flex-direction:column;gap:10px;margin-top:18px;display:flex}.pronunciation-syllable-row{border:1px solid var(--border);background:var(--bg);border-radius:8px;grid-template-columns:minmax(76px,.7fr) minmax(0,1.8fr) minmax(40px,auto);align-items:center;gap:12px;padding:12px;display:grid}.pronunciation-syllable-hanzi,.pronunciation-syllable-pinyin{display:block}.pronunciation-syllable-hanzi{color:var(--text-h);font-family:var(--cjk-sans);font-size:26px;font-weight:700}.pronunciation-syllable-pinyin{color:var(--text);font-size:13px}.pronunciation-syllable-scores{flex-wrap:wrap;gap:6px;display:flex}.pronunciation-syllable-scores span{background:color-mix(in srgb, currentColor 14%, transparent);border-radius:999px;padding:4px 8px;font-size:12px;font-weight:700}.pronunciation-syllable-row strong{text-align:right;font-size:22px;font-weight:800}.hanzi-practice-subtitle{color:var(--text-h);margin:20px 0 10px;font-size:15px;font-weight:600}.hanzi-level-grid{flex-direction:column;gap:10px;display:flex}.hanzi-level-btn{text-align:left;border:1px solid var(--border);background:var(--code-bg);color:var(--text);cursor:pointer;border-radius:10px;padding:12px 14px;font-size:14px;transition:border-color .15s,background .15s}.hanzi-level-btn:hover{border-color:var(--accent);background:var(--accent-bg)}.hanzi-level-btn.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-border)}.hanzi-length-row{flex-wrap:wrap;gap:10px;display:flex}.hanzi-length-btn{border:1px solid var(--border);background:var(--bg);min-width:52px;color:var(--text-h);cursor:pointer;border-radius:8px;padding:10px 14px;font-size:15px}.hanzi-length-btn.selected{border-color:var(--accent);background:var(--accent-bg)}.hanzi-start-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;width:100%;margin-top:28px;padding:14px 20px;font-size:16px;font-weight:600}.hanzi-start-btn:hover{filter:brightness(1.05)}.hanzi-secondary-btn{border:1px solid var(--border);width:100%;color:var(--text-h);cursor:pointer;background:0 0;border-radius:10px;margin-top:12px;padding:12px 20px;font-size:15px}.hanzi-secondary-btn:hover{background:var(--accent-bg)}.hanzi-empty-msg{color:#e53e3e;margin-top:12px;font-size:14px}.hanzi-start-card{border:1px solid var(--accent-border);background:radial-gradient(circle at 18% 12%, color-mix(in srgb, var(--accent) 24%, transparent), transparent 28%), linear-gradient(145deg, var(--accent-bg), var(--code-bg) 72%);box-shadow:var(--shadow);text-align:center;border-radius:24px;margin-top:22px;padding:30px 24px 24px;position:relative;overflow:hidden}.hanzi-start-card:after{content:"";background:color-mix(in srgb, var(--accent) 12%, transparent);pointer-events:none;border-radius:50%;width:170px;height:170px;position:absolute;inset:auto -48px -68px auto}.hanzi-start-orb{z-index:1;border:1px solid color-mix(in srgb, var(--accent) 32%, transparent);background:color-mix(in srgb, var(--bg) 82%, transparent);width:72px;height:72px;color:var(--accent);font-family:var(--cjk-sans);box-shadow:0 16px 34px color-mix(in srgb, var(--accent) 18%, transparent);border-radius:24px;justify-content:center;align-items:center;margin-bottom:18px;font-size:38px;font-weight:700;display:inline-flex;position:relative}.hanzi-start-eyebrow{z-index:1;color:var(--accent);letter-spacing:.1em;text-transform:uppercase;margin:0 0 8px;font-size:12px;font-weight:800;position:relative}.hanzi-start-card h2{z-index:1;color:var(--text-h);letter-spacing:0;margin:0;font-size:40px;line-height:1;position:relative}.hanzi-start-level{z-index:1;border:1px solid var(--accent-border);background:color-mix(in srgb, var(--bg) 72%, transparent);min-height:32px;color:var(--text-h);border-radius:999px;align-items:center;margin:16px 0 0;padding:0 14px;font-size:14px;font-weight:800;display:inline-flex;position:relative}.hanzi-start-meta{z-index:1;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:18px;display:flex;position:relative}.hanzi-start-meta span{background:color-mix(in srgb, var(--bg) 58%, transparent);min-height:28px;color:var(--text);border-radius:999px;align-items:center;padding:0 12px;font-size:13px;font-weight:700;display:inline-flex}.hanzi-start-card-btn{z-index:1;box-shadow:0 14px 28px color-mix(in srgb, var(--accent) 28%, transparent);border-radius:999px;margin-top:24px;position:relative}.hanzi-plan-card{border:1px solid var(--border);background:var(--code-bg);border-radius:14px;margin-top:22px;padding:16px}.hanzi-plan-card h2{margin:0 0 6px;font-size:18px}.hanzi-plan-card p{color:var(--text);margin:0;line-height:1.45}.hanzi-plan-eyebrow{letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:700;color:var(--accent)!important;margin-bottom:8px!important}.hanzi-plan-counts{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.hanzi-plan-counts span,.hanzi-reason-pill{background:var(--accent-bg);min-height:24px;color:var(--text-h);border-radius:999px;align-items:center;padding:0 10px;font-size:12px;font-weight:700;display:inline-flex}.hanzi-plan-muted{font-size:13px;margin-top:8px!important}.hanzi-progress-wrap{background:var(--border);border-radius:3px;height:6px;margin-bottom:8px;overflow:hidden}.hanzi-progress-bar{background:var(--accent);border-radius:3px;height:100%;transition:width .25s}.hanzi-progress-label{color:var(--text);margin:0 0 16px;font-size:13px}.hanzi-level-badge{color:var(--text);opacity:.85;margin:0 0 16px;font-size:13px}.hanzi-reason-pill{margin:-6px 0 14px}.hanzi-prompt-card{border:1px solid var(--border);background:var(--code-bg);text-align:center;border-radius:12px;margin-bottom:20px;padding:24px 20px;position:relative}.hanzi-prompt-instruction{color:var(--text);margin:0 0 12px;font-size:14px}.hanzi-audio-replay-btn{width:28px;height:28px;color:var(--accent);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;bottom:14px;right:14px}.hanzi-audio-replay-btn:hover{color:var(--text-h)}.hanzi-audio-replay-btn:disabled{color:var(--muted);cursor:not-allowed;opacity:.55}.hanzi-audio-replay-btn svg{width:18px;height:18px}.hanzi-char-large{color:var(--text-h);font-size:44px;font-weight:600;font-family:var(--cjk-sans);margin:0}.hanzi-pinyin-line{color:var(--text);letter-spacing:.04em;opacity:.85;margin:12px 0 0;font-size:16px}.hanzi-audio-status{color:var(--muted);margin:10px 0 0;font-size:12px;font-weight:700}.hanzi-audio-status.warning{color:var(--negative)}.hanzi-item-history{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:18px;display:flex}.hanzi-item-history span{border:1px solid var(--border);background:var(--bg);min-height:26px;color:var(--text);border-radius:999px;align-items:center;padding:0 10px;font-size:12px;font-weight:700;display:inline-flex}.hanzi-item-history span.is-new,.hanzi-session-new{border-color:var(--mc-correct-border);background:var(--mc-correct-bg);color:var(--mc-correct-text)}.hanzi-mc-options{flex-direction:column;gap:10px;display:flex}.hanzi-mc-option{border:1px solid var(--border);background:var(--code-bg);color:var(--text);cursor:pointer;text-align:left;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;font-size:15px;line-height:1.45;transition:background .15s,border-color .15s;display:flex}.hanzi-mc-continue{border:1px solid var(--mc-correct-border);background:var(--mc-correct-bg);width:100%;color:var(--mc-correct-text);cursor:pointer;text-align:left;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;font-size:15px;font-weight:800;line-height:1.45;transition:background .15s,border-color .15s,transform .15s;display:flex}.hanzi-mc-continue:hover{border-color:var(--mc-correct-border);background:color-mix(in srgb, var(--success) 28%, var(--bg));transform:translateY(-1px)}.hanzi-mc-continue span{flex:none;font-size:18px;line-height:1}.hanzi-option-next-arrow{opacity:.8;flex:none;font-size:18px;font-weight:800;line-height:1}.hanzi-mc-option:hover:not(:disabled){background:var(--accent-bg);border-color:var(--accent)}.hanzi-mc-option.correct,.hanzi-mc-option.correct:hover{background:var(--mc-correct-bg);border-color:var(--mc-correct-border);color:var(--mc-correct-text)}.hanzi-mc-option.incorrect,.hanzi-mc-option.incorrect:hover{background:var(--mc-incorrect-bg);border-color:var(--mc-incorrect-border);color:var(--mc-incorrect-text)}.hanzi-mc-option:disabled{cursor:default}.hanzi-next-btn{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text-h);cursor:pointer;border-radius:10px;margin-top:20px;padding:12px 16px;font-size:15px;font-weight:600}.hanzi-next-btn:hover{background:var(--accent-bg)}.hanzi-answer-entry{border:1px solid var(--accent-border);background:color-mix(in srgb, var(--accent-bg) 72%, var(--bg));color:var(--text);border-radius:14px;margin-top:16px;padding:14px 16px}.hanzi-answer-entry-label{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;margin:0 0 10px;font-size:11px;font-weight:800}.hanzi-answer-entry-main{align-items:baseline;gap:10px;margin-bottom:6px;display:flex}.hanzi-answer-entry-word{color:var(--text-h);font-family:var(--cjk-sans);font-size:28px;font-weight:700;line-height:1}.hanzi-answer-entry-pinyin{color:var(--text);opacity:.78;font-size:14px;font-weight:700}.hanzi-answer-entry-meaning{color:var(--text-h);margin:0;font-size:16px;font-weight:700;line-height:1.4}.hanzi-usage-context{gap:12px;margin-top:14px;display:grid}.hanzi-usage-context p{color:var(--text-h);margin:4px 0 0;font-size:14px;font-weight:650;line-height:1.45}.hanzi-usage-context code{border:1px solid var(--border);background:var(--bg);color:var(--text-h);border-radius:8px;margin-top:5px;padding:5px 8px;font-size:13px;font-weight:800;display:inline-flex}.hanzi-usage-context-label{color:var(--accent);letter-spacing:.06em;text-transform:uppercase;font-size:11px;font-weight:800}.hanzi-usage-examples{gap:8px;margin-top:8px;display:grid}.hanzi-usage-example{border:1px solid var(--border);background:var(--bg);border-radius:10px;gap:3px;padding:9px 10px;display:grid}.hanzi-usage-example strong{color:var(--text-h);font-family:var(--cjk-sans);font-size:17px;line-height:1.25}.hanzi-usage-example em{color:var(--accent);font-size:12px;font-style:normal;font-weight:800}.hanzi-usage-example span{color:var(--text);font-size:13px;font-weight:700}.hanzi-answer-senses{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.hanzi-answer-senses span{border:1px solid var(--accent-border);color:var(--text);background:var(--bg);border-radius:999px;padding:4px 8px;font-size:13px;font-weight:700}.hanzi-character-context{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-top:12px;display:grid}.hanzi-character-context-item{border:1px solid var(--border);background:var(--bg);border-radius:10px;grid-template-columns:auto 1fr;align-items:baseline;gap:2px 8px;padding:8px 10px;display:grid}.hanzi-character-context-item strong{color:var(--text-h);font-family:var(--cjk-sans);grid-row:span 2;font-size:24px;line-height:1}.hanzi-character-context-item em{color:var(--accent);font-size:12px;font-style:normal;font-weight:800}.hanzi-character-context-item span{color:var(--text);font-size:12px;font-weight:700;line-height:1.25}.hanzi-summary{text-align:center;padding:16px 0}.hanzi-summary-hero{flex-direction:column;align-items:center;margin-bottom:22px;display:flex}.hanzi-summary-ring{--pct:0;--ring-color:var(--accent-2);background:conic-gradient(var(--ring-color) calc(var(--pct) * 1%), var(--surface-container) 0);border-radius:50%;place-items:center;width:132px;height:132px;margin-bottom:16px;display:grid;position:relative}.hanzi-summary-ring[data-grade=mid]{--ring-color:#d8821c}.hanzi-summary-ring[data-grade=low]{--ring-color:var(--accent)}.hanzi-summary-ring-inner{background:var(--surface-container-lowest);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:2px;width:104px;height:104px;line-height:1;display:flex;box-shadow:0 2px 8px #2d1f1614}.hanzi-summary-ring-inner strong{color:var(--text-h);align-items:baseline;font-size:28px;font-weight:820;line-height:1;display:inline-flex}.hanzi-summary-ring-pct{font-size:.58em;font-weight:750;line-height:1}.hanzi-summary-ring-inner small{color:var(--text);letter-spacing:.02em;font-size:11px;font-weight:700;line-height:1;display:block}.hanzi-summary-headline{color:var(--text-h);margin:0 0 4px;font-size:22px;font-weight:800}.hanzi-summary-headline [lang=zh]{font-family:var(--cjk-sans)}.hanzi-summary-sub{color:var(--text);margin:0;font-size:14px}.hanzi-sync-note,.hanzi-sync-error{color:var(--text);margin:10px 0 0;font-size:14px}.hanzi-sync-error{color:#e53e3e}.hanzi-summary-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 18px;display:grid}.hanzi-summary-stat{border:1px solid color-mix(in srgb, var(--border) 75%, transparent);background:var(--surface-container-lowest);border-radius:14px;padding:12px 8px;box-shadow:0 1px 3px #2d1f1612}.hanzi-summary-stat strong{color:var(--text-h);font-size:22px;font-weight:820;line-height:1.1;display:block}.hanzi-summary-stat[data-tone=green] strong{color:var(--accent-2)}.hanzi-summary-stat[data-tone=red] strong{color:var(--accent)}.hanzi-summary-stat[data-tone=amber] strong{color:#b56f16}.hanzi-summary-stat span{color:var(--text-h);margin-top:3px;font-size:12.5px;font-weight:700;display:block}.hanzi-summary-stat small{color:color-mix(in srgb, var(--text) 78%, transparent);font-family:var(--cjk-sans);font-size:11.5px;display:block}.hanzi-summary-goal{border:1px solid color-mix(in srgb, var(--border) 75%, transparent);background:var(--surface-container-lowest);text-align:left;border-radius:14px;margin:0 0 24px;padding:14px 16px;box-shadow:0 1px 3px #2d1f1612}.hanzi-summary-goal-labels{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px;display:flex}.hanzi-summary-goal-labels>span:first-child{color:var(--text-h);font-size:13px;font-weight:750}.hanzi-summary-goal-count{color:var(--text);align-items:center;gap:5px;font-size:13px;font-weight:700;display:inline-flex}.hanzi-summary-goal[data-met] .hanzi-summary-goal-count{color:var(--accent-2)}.hanzi-summary-goal-bar{background:var(--surface-container);border-radius:999px;height:8px;overflow:hidden}.hanzi-summary-goal-bar>span{background:linear-gradient(90deg, var(--accent), #d8821c);border-radius:999px;height:100%;transition:width .4s;display:block}.hanzi-summary-goal[data-met] .hanzi-summary-goal-bar>span{background:var(--accent-2)}@media (width<=520px){.hanzi-summary-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.hanzi-session-breakdown{text-align:left;margin:0 0 24px}.hanzi-session-breakdown h2{color:var(--text-h);margin:0 0 12px;font-size:18px}.hanzi-session-row{border-top:1px solid var(--border);align-items:center;gap:14px;padding:14px 0;display:flex}.hanzi-session-row:last-child{border-bottom:1px solid var(--border)}.hanzi-session-mark{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;display:inline-flex}.hanzi-session-mark.correct{background:var(--mc-correct-bg);color:var(--mc-correct-border)}.hanzi-session-mark.incorrect{background:var(--mc-incorrect-bg);color:var(--mc-incorrect-border)}.hanzi-session-info{flex:1;min-width:0}.hanzi-session-word{color:var(--text-h);font-family:var(--cjk-sans);font-size:24px;font-weight:700;line-height:1.15;display:block}.hanzi-session-pinyin{color:var(--text);opacity:.75;margin-top:2px;font-size:13px;display:block}.hanzi-session-new{border:1px solid var(--mc-correct-border);border-radius:999px;align-items:center;min-height:22px;margin-top:8px;padding:0 9px;font-size:11px;font-weight:800;display:inline-flex}.hanzi-session-stats{color:var(--text);white-space:nowrap;flex-direction:column;align-items:flex-end;gap:4px;font-size:13px;font-weight:700;display:flex}.hanzi-session-stats .positive{color:var(--mc-correct-text)}.hanzi-session-stats .negative{color:var(--mc-incorrect-text)}.settings-choice-row{flex-wrap:wrap;gap:10px;margin:10px 0 18px;display:flex}.settings-mini-heading{color:var(--text-h);margin:18px 0 8px;font-size:14px}.settings-checkbox-spaced{margin-top:8px}.hanzi-summary-actions{flex-direction:column;gap:4px;display:flex}.hanzi-summary-actions .hanzi-start-btn{margin-top:0}.placement-muted{opacity:.82;font-size:14px}.placement-done{text-align:left}.placement-done-lead{color:var(--text);margin:0 0 8px;font-size:15px}.placement-done-copy{margin-bottom:24px!important}.placement-done-settings-link{text-align:center;color:var(--accent);margin-top:16px;font-size:14px;text-decoration:none;display:block}.placement-done-settings-link:hover{text-decoration:underline}.hanzi-level-up-hint{color:var(--text);text-align:center;margin:-8px 0 24px;font-size:14px;line-height:1.45}.hanzi-level-up-link{color:var(--accent);text-decoration:none}.hanzi-level-up-link:hover{text-decoration:underline}.auth-page{justify-content:center;align-items:center;min-height:100svh;padding:24px;display:flex}.auth-card{background:var(--surface-container-lowest);border:1px solid var(--border);width:100%;max-width:400px;box-shadow:var(--shadow);border-radius:16px;padding:38px 34px}.auth-card h1{color:var(--text-h);text-align:center;margin:0 0 8px;font-size:24px;font-weight:700}.auth-card .auth-subtitle{color:var(--text);text-align:center;margin:0 0 28px;font-size:14px}.auth-field{margin-bottom:18px}.auth-field label{color:var(--text-h);margin-bottom:6px;font-size:13px;font-weight:600;display:block}.auth-field input{border:1px solid var(--border);background:var(--surface-container-lowest);width:100%;color:var(--text-h);box-sizing:border-box;border-radius:8px;outline:none;padding:10px 14px;font-size:15px;transition:border-color .15s,box-shadow .15s}.auth-field input:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-bg)}.auth-password-wrap{align-items:center;display:flex;position:relative}.auth-password-wrap input{padding-right:44px}.auth-password-toggle{width:34px;height:34px;color:var(--text);cursor:pointer;background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;padding:0;transition:color .15s,background .15s;display:inline-flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.auth-password-toggle:hover{color:var(--text-h);background:var(--accent-bg)}.auth-password-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.auth-field-hint{color:var(--text);opacity:.85;margin:6px 0 0;font-size:12px}.auth-error{color:#e53e3e;background:#e53e3e1a;border-radius:8px;margin-bottom:18px;padding:10px 14px;font-size:13px}.auth-success{color:#166534;background:#1665341f;border-radius:8px;margin-bottom:18px;padding:10px 14px;font-size:13px;line-height:1.45}.auth-submit{color:#fff;background:var(--accent);cursor:pointer;border:none;border-radius:999px;width:100%;padding:12px;font-size:15px;font-weight:600;transition:opacity .15s,transform .15s}.auth-submit:hover{opacity:.9;transform:translateY(-1px)}.auth-submit:disabled{opacity:.5;cursor:not-allowed}.auth-link{text-align:center;color:var(--text);margin-top:18px;font-size:14px}.auth-link-secondary{margin-top:10px}.auth-link a{color:var(--accent);font-weight:600;text-decoration:none}.auth-link a:hover{text-decoration:underline}@media (width<=420px){.auth-page{align-items:flex-start;padding:18px 14px}.auth-card{padding:28px 22px}}.onboarding-page{background:radial-gradient(circle at 6% 4%, #b9342f17, transparent 28%), radial-gradient(circle at 94% 92%, #16865b17, transparent 30%), var(--bg);min-height:100svh;padding:32px 20px 72px;position:relative;overflow:hidden}.onboarding-orb{border:1px solid color-mix(in srgb, var(--accent) 15%, transparent);pointer-events:none;opacity:.6;border-radius:48% 52% 57% 43%;position:fixed}.onboarding-orb-one{width:280px;height:280px;top:-110px;right:-90px;transform:rotate(24deg)}.onboarding-orb-two{border-color:color-mix(in srgb, var(--accent-2) 15%, transparent);width:330px;height:330px;bottom:-140px;left:-100px;transform:rotate(-18deg)}.onboarding-shell{z-index:1;width:min(100%,920px);margin:0 auto;position:relative}.onboarding-header{justify-content:space-between;align-items:center;gap:20px;margin-bottom:52px;display:flex}.onboarding-brand{color:var(--text-h);align-items:center;gap:9px;font-size:15px;font-weight:800;display:flex}.onboarding-brand img{object-fit:contain;width:43px;height:43px}.onboarding-header>p{color:var(--text);align-items:center;gap:7px;font-size:13px;font-weight:650;display:flex}.onboarding-header>p svg{color:var(--accent)}.onboarding-intro{max-width:640px;margin-bottom:44px}.onboarding-kicker{color:var(--accent);letter-spacing:.13em;text-transform:uppercase;font-size:12px;font-weight:850}.onboarding-intro h1{letter-spacing:-.035em;margin:8px 0 12px;font-size:clamp(34px,6vw,56px);line-height:1.03}.onboarding-intro p{max-width:55ch;color:var(--text);font-size:17px;line-height:1.55}.onboarding-section{border:1px solid color-mix(in srgb, var(--border) 82%, transparent);background:color-mix(in srgb, var(--surface-container-lowest) 92%, transparent);box-shadow:var(--shadow-soft);border-radius:24px;margin-top:26px;padding:28px}.onboarding-section-heading{align-items:flex-start;gap:13px;margin-bottom:20px;display:flex}.onboarding-section-heading>span{background:var(--accent);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:30px;height:30px;font-size:13px;font-weight:850;display:inline-flex}.onboarding-section-heading h2{margin:0 0 2px;font-size:20px;line-height:1.25}.onboarding-section-heading p{color:var(--text);font-size:13px}.onboarding-goal-grid,.onboarding-pinyin-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.onboarding-choice{border:1px solid var(--border);background:var(--surface-container-lowest);width:100%;min-width:0;color:var(--text);text-align:left;cursor:pointer;border-radius:15px;align-items:center;gap:13px;padding:16px;transition:border-color .16s,background .16s,box-shadow .16s,transform .16s;display:flex;position:relative}.onboarding-choice:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--border));transform:translateY(-1px)}.onboarding-choice[data-selected]{border-color:var(--accent);background:color-mix(in srgb, var(--accent-bg) 56%, var(--surface-container-lowest));box-shadow:0 0 0 1px var(--accent-border)}.onboarding-choice>span:not(.onboarding-choice-icon,.onboarding-pinyin-sample){flex-direction:column;flex:auto;min-width:0;display:flex}.onboarding-choice strong{color:var(--text-h);font-size:14px;font-weight:800;line-height:1.3}.onboarding-choice small{color:var(--text);margin-top:3px;font-size:12px;line-height:1.4}.onboarding-choice-icon{background:var(--surface-container-low);width:40px;height:40px;color:var(--accent);border-radius:12px;flex:none;justify-content:center;align-items:center;display:inline-flex}.onboarding-choice[data-selected] .onboarding-choice-icon{background:var(--accent);color:#fff}.onboarding-check{color:var(--accent);opacity:0;flex:none;transition:opacity .16s,transform .16s;transform:scale(.7)}.onboarding-choice[data-selected] .onboarding-check{opacity:1;transform:scale(1)}.onboarding-level-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.onboarding-level{align-items:flex-start;min-height:116px}.onboarding-level .onboarding-choice-icon{width:32px;height:32px;margin-top:-3px}.onboarding-level .onboarding-check{position:absolute;top:13px;right:13px}.onboarding-pinyin{min-height:92px}.onboarding-pinyin-sample{background:var(--surface-container-low);border-radius:12px;flex-direction:column;flex:none;justify-content:center;align-items:center;width:62px;min-height:58px;display:flex}.onboarding-pinyin-sample b{color:var(--text-h);font-family:var(--cjk-sans);font-size:21px;line-height:1.1}.onboarding-pinyin-sample em{color:var(--accent);margin-top:4px;font-size:11px;font-style:normal;font-weight:750;line-height:1}.onboarding-pinyin-sample .onboarding-pinyin-hidden{visibility:hidden}.onboarding-error{color:#b42318;background:#e53e3e14;border:1px solid #e53e3e40;border-radius:12px;margin-top:20px;padding:12px 16px;font-size:13px}.onboarding-footer{justify-content:flex-end;align-items:center;gap:20px;margin-top:26px;display:flex}.onboarding-footer p{color:var(--text);font-size:13px;font-weight:650}.onboarding-footer button{background:var(--accent);color:#fff;cursor:pointer;min-width:230px;min-height:52px;box-shadow:0 12px 26px color-mix(in srgb, var(--accent) 22%, transparent);border:0;border-radius:999px;justify-content:center;align-items:center;gap:9px;padding:0 24px;font-size:15px;font-weight:800;transition:background .16s,transform .16s,opacity .16s;display:inline-flex}.onboarding-footer button:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-1px)}.onboarding-footer button:disabled{cursor:not-allowed;opacity:.45;box-shadow:none}.onboarding-loading{min-height:100svh;color:var(--text);place-items:center;font-size:14px;display:grid}@media (width<=760px){.onboarding-page{padding:22px 14px 48px}.onboarding-header{margin-bottom:38px}.onboarding-header>p{display:none}.onboarding-intro{margin-bottom:32px}.onboarding-intro p{font-size:15px}.onboarding-section{border-radius:19px;padding:20px}.onboarding-goal-grid,.onboarding-pinyin-grid,.onboarding-level-grid{grid-template-columns:1fr}.onboarding-level{min-height:0}.onboarding-footer{z-index:3;border:1px solid color-mix(in srgb, var(--border) 78%, transparent);background:color-mix(in srgb, var(--surface-container-lowest) 92%, transparent);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:18px;flex-direction:column;align-items:stretch;gap:8px;padding:13px;position:sticky;bottom:10px}.onboarding-footer p{text-align:center}.onboarding-footer button{width:100%}}.mahjong-game-page{--mj-ink:#17231e;--mj-felt:#174f3f;--mj-felt-light:#236b55;--mj-felt-dark:#0e392e;--mj-gold:#e9bd6a;--mj-gold-bright:#ffda8d;--mj-cream:#fff9e9;--mj-red:#b93d36;min-height:calc(100vh - 72px);color:var(--text-h);background:#091812;padding:14px clamp(12px,2.5vw,38px) 30px}.mahjong-game-header{grid-template-columns:minmax(270px,1fr) auto minmax(270px,1fr);align-items:center;gap:18px;width:min(1260px,100%);min-height:56px;margin:0 auto 10px;display:grid}.mahjong-game-title{align-items:center;gap:12px;min-width:0;display:flex}.mahjong-game-seal{background:var(--mj-red);color:#fff8e8;border:1px solid #741f1b8c;border-radius:13px;flex:none;place-items:center;width:46px;height:46px;font:800 26px/1 Georgia,Songti SC,serif;display:grid;transform:rotate(-2deg);box-shadow:inset 0 0 0 2px #ffeecc24,0 8px 20px #5d1d1938}.mahjong-game-kicker,.mahjong-dialog-kicker{color:var(--muted);letter-spacing:.14em;text-transform:uppercase;margin-bottom:3px;font-size:8px;font-weight:900;display:block}.mahjong-game-title h1{text-overflow:ellipsis;white-space:nowrap;margin:0;font:800 clamp(19px,1.55vw,24px)/1 Georgia,Songti SC,serif;overflow:hidden}.mahjong-game-title h1 small{color:var(--muted);font:700 8px/1.2 var(--font-sans,system-ui, sans-serif);letter-spacing:.05em;text-transform:uppercase;margin-left:6px}.mahjong-round-stats{border:1px solid color-mix(in srgb, var(--border) 84%, transparent);background:color-mix(in srgb, var(--surface-container-lowest) 96%, transparent);border-radius:13px;align-items:stretch;padding:2px;display:flex;box-shadow:0 7px 22px #30231814}.mahjong-round-stats>span{border-right:1px solid var(--border);text-align:center;place-items:center;min-width:58px;padding:3px 8px;display:grid}.mahjong-round-stats>span:last-child{border-right:0}.mahjong-round-stats span>small{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:7px;font-weight:900}.mahjong-round-stats strong{color:var(--text-h);font-variant-numeric:tabular-nums;font-size:13px;line-height:2}.mahjong-round-stats em{color:var(--muted);font-size:8px;font-style:normal}.mahjong-round-stats>.mahjong-wall-stat.endgame{background:#b83a3221;border-radius:8px;box-shadow:inset 0 0 0 1px #f2c26338}.mahjong-round-stats>.mahjong-wall-stat.endgame small,.mahjong-round-stats>.mahjong-wall-stat.endgame strong,.mahjong-round-stats>.mahjong-wall-stat.endgame strong em{color:#ffdc94}.mahjong-round-stats>.mahjong-wall-stat.endgame strong{align-items:baseline;gap:3px;display:flex}.mahjong-round-stats>.mahjong-wall-stat.endgame strong em{letter-spacing:.06em;text-transform:uppercase;font-size:6px;font-weight:900}.mahjong-round-stats>.mahjong-wall-stat.empty{background:#b83a3238;box-shadow:inset 0 0 0 1px #f09a8e66}.mahjong-header-actions{justify-content:flex-end;gap:8px;display:flex}.mahjong-exit-button,.mahjong-header-actions button,.mahjong-dialog-actions button,.mahjong-rules-done,.mahjong-dialog-cancel{border:1px solid var(--border);background:var(--surface-container-lowest);min-height:38px;color:var(--text-h);cursor:pointer;font:inherit;border-radius:10px;justify-content:center;align-items:center;gap:7px;padding:0 13px;font-size:12px;font-weight:800;transition:border-color .15s,background .15s,color .15s,transform .15s;display:inline-flex}.mahjong-header-actions button:hover,.mahjong-header-actions button:focus-visible,.mahjong-exit-button:hover,.mahjong-exit-button:focus-visible,.mahjong-dialog-cancel:hover{border-color:color-mix(in srgb, var(--mj-red) 55%, var(--border));background:color-mix(in srgb, var(--mj-red) 8%, var(--surface-container-lowest));color:var(--mj-red);outline:none;transform:translateY(-1px)}.mahjong-table-scroll{overscroll-behavior-x:contain;scrollbar-color:#77522e73 transparent;scrollbar-width:thin;border-radius:28px;width:min(1260px,100%);margin:0 auto;padding:0 0 5px;overflow-x:auto}.mahjong-table{background:var(--mj-felt);isolation:isolate;border:9px solid #5a3923;border-radius:28px;grid-template:"corner-a top corner-b"86px"left center right"minmax(250px,1fr)"corner-c human corner-d"138px/166px minmax(648px,1fr) 166px;min-width:980px;height:clamp(480px,100vh - 235px,620px);min-height:480px;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 0 0 2px #b1814e,inset 0 0 0 7px #29190f57,inset 0 0 70px #031b148c,0 18px 42px #2e1e1338}.mahjong-table:before{z-index:0;content:"";pointer-events:none;border:1px solid #f8d99738;border-radius:15px;position:absolute;inset:11px;box-shadow:inset 0 0 30px #ffe7ae09}.mahjong-table:after{display:none}.mahjong-table-corner{z-index:1;color:#f9db9b57;pointer-events:none;border:1px solid #ecc26f38;border-radius:50%;place-items:center;width:22px;height:22px;font:700 9px Georgia,Songti SC,serif;display:grid;position:absolute}.mahjong-table-corner.corner-nw{top:15px;left:15px}.mahjong-table-corner.corner-ne{top:15px;right:15px}.mahjong-table-corner.corner-sw{bottom:15px;left:15px}.mahjong-table-corner.corner-se{bottom:15px;right:15px}.mahjong-player-area,.mahjong-human-area,.mahjong-table-center{z-index:2;position:relative}.mahjong-player-area{color:#fff3d5;min-width:0;min-height:0;transition:background .2s,box-shadow .2s}.mahjong-player-area.top{grid-area:top;grid-template-columns:minmax(125px,.72fr) auto minmax(125px,.9fr);align-items:center;gap:10px;padding:9px 12px 7px;display:grid}.mahjong-player-area.left,.mahjong-player-area.right{grid-template-rows:auto minmax(100px,1fr) auto;align-items:center;gap:7px;padding:12px 10px;display:grid}.mahjong-player-area.left{border-right:1px solid #ffefc714;grid-area:left}.mahjong-player-area.right{border-left:1px solid #ffefc714;grid-area:right;padding-right:18px}.mahjong-player-area.active{background:#eec2691a;box-shadow:inset 0 -2px #eec26940}.mahjong-human-area.active:before{z-index:-1;content:"";pointer-events:none;background:#eec2691a;position:absolute;inset:0 0 58px;box-shadow:inset 0 -2px #eec26940}.mahjong-player-area.left.active{box-shadow:inset -2px 0 #eec26940}.mahjong-player-area.right.active{box-shadow:inset 2px 0 #eec26940}.mahjong-player-heading{min-width:0;min-height:31px;color:inherit;align-items:center;gap:7px;display:flex;position:relative}.mahjong-player-heading:before{content:"";background:#fff8e233;border-radius:50%;flex:none;width:6px;height:6px}.mahjong-player-heading.active:before{background:var(--mj-gold-bright);animation:1.8s ease-in-out infinite mahjong-turn-pulse;box-shadow:0 0 0 4px #eec2691f,0 0 12px #ffd37dcc}@keyframes mahjong-turn-pulse{50%{opacity:.58;transform:scale(.78)}}.mahjong-player-identity{flex-direction:column;min-width:0;line-height:1.05;display:flex;overflow:hidden}.mahjong-player-identity strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.mahjong-player-identity small{color:#fff3d58f;letter-spacing:.08em;text-transform:uppercase;margin-top:3px;font-size:7px;font-weight:800}.mahjong-player-score{color:var(--mj-gold-bright);font-variant-numeric:tabular-nums;flex-direction:column;align-items:flex-end;margin-left:auto;font-size:12px;font-weight:900;line-height:1;display:flex}.mahjong-player-score small{color:#fff3d570;letter-spacing:.08em;text-transform:uppercase;margin-top:3px;font-size:7px}.mahjong-wind-badge{color:#fff2cd;background:#07261d80;border:1px solid #ffefc74d;border-radius:9px;flex:none;place-items:center;width:28px;height:28px;font:900 14px Georgia,Songti SC,serif;display:grid;box-shadow:inset 0 0 8px #ffffff0a}.mahjong-wind-badge.dealer{background:var(--mj-red);color:#fff9e9;border-color:#efc66f;box-shadow:0 0 0 3px #efc66f1f,0 4px 10px #270e0c33}.mahjong-ready-label{color:var(--mj-gold-bright);background:#eec26921;border:1px solid #eec26947;border-radius:999px;padding:2px 6px;font-size:9px;font-weight:900}.mahjong-opponent-rack-wrap{place-items:center;min-width:0;min-height:0;display:grid;position:relative}.mahjong-opponent-rack{filter:drop-shadow(1px 3px 2px #02120d47);justify-content:center;max-width:100%;display:flex}.mahjong-player-area.left .mahjong-opponent-rack,.mahjong-player-area.right .mahjong-opponent-rack{flex-direction:column;max-height:165px}.mahjong-rack-count{color:#f8d98f;background:#082920e6;border:1px solid #eec26961;border-radius:50%;place-items:center;min-width:19px;height:19px;font-size:8px;font-weight:900;display:grid;position:absolute;bottom:-6px;right:-2px}.mahjong-player-area.top .mahjong-rack-count{bottom:-2px;right:-10px}.mahjong-tile-back{background:#164c3c;border:1px solid #b9965d;border-radius:4px;flex:none;width:28px;height:38px;margin-left:-8px;display:block;position:relative;box-shadow:inset 0 0 0 2px #2a755b,inset 0 -3px #031e1647}.mahjong-tile-back:first-child{margin-left:0}.mahjong-player-area.left .mahjong-tile-back,.mahjong-player-area.right .mahjong-tile-back{width:38px;height:26px;margin-top:-16px;margin-left:0}.mahjong-player-area.left .mahjong-tile-back:first-child,.mahjong-player-area.right .mahjong-tile-back:first-child{margin-top:0}.mahjong-player-area .mahjong-tile-face.compact{width:27px;height:37px}.mahjong-meld-row{justify-content:center;align-items:center;gap:5px;min-width:0;min-height:28px;display:flex}.mahjong-player-area.left .mahjong-meld-row,.mahjong-player-area.right .mahjong-meld-row{flex-wrap:wrap;gap:3px;max-width:142px}.mahjong-meld{border-right:1px solid #fff0cb38;padding:2px 4px 2px 0;display:inline-flex}.mahjong-meld:last-child{border-right:0}.mahjong-flowers{background:#0a2b2240;border:1px solid #e8b65f4d;border-radius:5px;padding:2px;display:inline-flex}.mahjong-mini-back{background:#194f3e;border:1px solid #ae925f;border-radius:3px;width:17px;height:24px;box-shadow:inset 0 0 0 2px #2f755d}.mahjong-table-center{background:#082b2147;border:1px solid #ffefc721;grid-area:center;min-width:0;min-height:0;overflow:hidden;box-shadow:inset 0 0 28px #031c151f}.mahjong-table-center:before{content:"";border:1px solid #f5d5940d;border-radius:50%;width:210px;height:210px;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.mahjong-center-mark{z-index:5;color:#ffdf96;text-align:center;background:#07281ff2;border:1px solid #ecc066a3;border-radius:17px;place-items:center;width:104px;min-height:80px;padding:8px 10px;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 0 0 3px #e7bb610f,0 10px 25px #0317116b}.mahjong-center-round{font:900 27px/1 Georgia,Songti SC,serif}.mahjong-center-hand{color:#f1ca79;letter-spacing:.08em;margin-top:-3px;font-size:8px;font-weight:900}.mahjong-center-mark small{color:#fff2cf85;letter-spacing:.06em;text-transform:uppercase;border-top:1px solid #ecc06633;padding-top:5px;font-size:7px;font-weight:800}.mahjong-center-mark.endgame{border-color:#f2c263eb;box-shadow:inset 0 0 0 3px #e7bb611a,0 0 18px #f4c15b24,0 10px 25px #0317116b}.mahjong-center-mark.endgame small{color:#ffdc94}.mahjong-center-mark.empty{border-color:#f09a8ed1}.mahjong-discards{z-index:2;align-items:flex-start;gap:5px;display:flex;position:absolute}.mahjong-discards.seat-2,.mahjong-discards.seat-0{justify-content:center;width:min(390px,62%);left:50%;transform:translate(-50%)}.mahjong-discards.seat-2{top:7px}.mahjong-discards.seat-0{bottom:7px}.mahjong-discards.seat-3,.mahjong-discards.seat-1{width:min(215px,34%);top:50%;transform:translateY(-50%)}.mahjong-discards.seat-3{left:7px}.mahjong-discards.seat-1{flex-direction:row-reverse;right:7px}.mahjong-discard-label{color:#ffe8b49e;background:#06251c7a;border:1px solid #eec26933;border-radius:50%;flex:none;place-items:center;width:18px;height:18px;margin-top:2px;font:800 9px Georgia,Songti SC,serif;display:grid}.mahjong-discard-tiles{grid-template-columns:repeat(9,24px);place-content:start center;gap:2px;min-height:35px;display:grid}.mahjong-discards.seat-3 .mahjong-discard-tiles,.mahjong-discards.seat-1 .mahjong-discard-tiles{grid-template-columns:repeat(5,24px)}.mahjong-human-area{color:#fff3d5;border-top:1px solid #ffefc71a;grid-template:"heading extras"31px"hand hand"minmax(78px,1fr)/minmax(165px,.65fr) 1fr;grid-area:human;gap:4px 12px;min-width:0;padding:8px 16px 11px;display:grid;overflow:visible}.mahjong-human-area>.mahjong-player-heading{grid-area:heading}.mahjong-human-area>.mahjong-player-heading .mahjong-player-score{margin-left:8px}.mahjong-human-extras{grid-area:extras;overflow:hidden}.mahjong-human-extras .mahjong-meld-row{justify-content:flex-end;height:31px}.mahjong-human-hand{grid-area:hand;justify-content:center;align-items:flex-end;gap:2px;min-width:0;padding:5px 2px 1px;display:flex}.mahjong-hand-tile{cursor:pointer;touch-action:manipulation;background:#f4ecdf;border:1px solid #b69d78;border-radius:6px 6px 5px 5px;width:clamp(32px,3vw,42px);height:clamp(45px,4.18vw,59px);padding:2px;transition:transform .14s,border-color .14s,filter .14s,box-shadow .14s;position:relative;box-shadow:inset 0 1px #fff,inset 0 -4px #b2977047,2px 5px 5px #04181257}.mahjong-hand-tile:after{content:"";background:#b8a37e;border-radius:0 0 3px 3px;height:3px;position:absolute;bottom:-3px;left:2px;right:2px}.mahjong-hand-tile:hover:not(:disabled),.mahjong-hand-tile:focus-visible{z-index:4;outline-offset:2px;border-color:#e3aa42;outline:2px solid #ffd889e0;transform:translateY(-9px);box-shadow:2px 9px 9px #04181257}.mahjong-hand-tile:disabled{cursor:default;filter:saturate(.82)brightness(.93)}.mahjong-hand-tile.drawn{margin-left:11px}.mahjong-hand-tile.drawn:before{background:var(--mj-gold-bright);content:"";border-radius:50%;width:4px;height:4px;position:absolute;top:-8px;left:50%;transform:translate(-50%);box-shadow:0 0 7px #ffd684cc}.mahjong-hand-tile.auto-discard{z-index:4;filter:none;border-color:#f0bd55;transform:translateY(-6px);box-shadow:0 0 0 3px #f4c15b33,2px 8px 8px #0418125c}.mahjong-hand-tile.auto-discard:after{transform-origin:0;background:#f4c15b;height:4px;animation:1.1s linear forwards mahjong-auto-discard-countdown;bottom:-4px;left:3px;right:3px}@keyframes mahjong-auto-discard-countdown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.mahjong-hand-tile.ready-option{border-color:#f4c15b;transform:translateY(-6px);box-shadow:0 0 0 3px #f4c15b40,2px 6px 5px #0418124d}.mahjong-hand-tile.selected,.mahjong-hand-tile.selected:hover,.mahjong-hand-tile.selected:focus-visible{z-index:5;outline-offset:2px;filter:none;border-color:#ffcf70;outline:2px solid #ffda91f5;transform:translateY(-12px);box-shadow:0 0 0 5px #f4c15b29,2px 11px 10px #04181261}.mahjong-hand-tile img,.mahjong-tile-face img{object-fit:contain;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.mahjong-tile-face{background:#f4ecdf;border:1px solid #b69d78;border-radius:5px;flex:none;width:33px;height:46px;padding:2px;display:inline-block;position:relative;box-shadow:inset 0 -3px #b2977033,1px 3px 3px #04181247}.mahjong-tile-face.compact{border-radius:3px;width:24px;height:33px;padding:1px}.mahjong-tile-face.latest-discard{z-index:4;outline-offset:1px;border-color:#f3c86e;outline:2px solid #ffd684b8;transform:translateY(-2px);box-shadow:0 0 0 4px #f4c15b24,1px 5px 7px #02140e6b}.mahjong-tile-face.latest-discard:after{background:var(--mj-gold-bright);content:"";border:1px solid #6b4a1f;border-radius:50%;width:6px;height:6px;position:absolute;top:-5px;right:-5px;box-shadow:0 0 7px #ffd37dd9}.mahjong-tile-face.winning-tile{z-index:5;outline-offset:1px;border-color:#efb24d;outline:2px solid #ffda91e6;transform:translateY(-3px);box-shadow:0 0 0 4px #f4c15b2e,1px 5px 8px #02140e6b}.mahjong-tile-face.winning-tile:after{background:var(--mj-red);color:#fff8e9;content:"胡";border:1px solid #f2c874;border-radius:50%;place-items:center;width:14px;height:14px;font:900 7px/1 Georgia,Songti SC,serif;display:grid;position:absolute;top:-7px;right:-7px}.mahjong-command-bar{z-index:8;border:1px solid color-mix(in srgb, var(--border) 76%, transparent);background:color-mix(in srgb, var(--surface-container-lowest) 95%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:17px;justify-content:space-between;align-items:center;gap:20px;width:min(900px,100% - 20px);min-height:66px;margin:9px auto 0;padding:8px 10px 8px 18px;display:flex;position:relative;bottom:auto;overflow:hidden;box-shadow:0 12px 34px #291d152e}.mahjong-command-bar:before{background:var(--mj-red);content:"";border-radius:99px;flex:none;align-self:stretch;width:3px}.mahjong-turn-message{flex-direction:column;flex:auto;min-width:185px;line-height:1.2;display:flex}.mahjong-turn-message small{color:var(--mj-red);letter-spacing:.1em;text-transform:uppercase;margin-bottom:2px;font-size:8px;font-weight:900}.mahjong-turn-message strong{font-size:14px}.mahjong-turn-message span{max-width:390px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:10px;overflow:hidden}.mahjong-command-actions{justify-content:flex-end;align-items:center;gap:7px;min-height:50px;display:flex}.mahjong-command-actions:empty{display:none}.mahjong-action-button{border:1px solid var(--border);background:var(--surface-container);min-width:70px;height:50px;color:var(--text-h);cursor:pointer;font:inherit;touch-action:manipulation;border-radius:12px;place-content:center;line-height:1;transition:transform .14s,border-color .14s,background .14s,color .14s;display:grid;box-shadow:0 3px 8px #1f171114}.mahjong-action-button:hover,.mahjong-action-button:focus-visible,.mahjong-action-button.active{border-color:color-mix(in srgb, var(--mj-red) 55%, var(--border));background:color-mix(in srgb, var(--mj-red) 8%, var(--surface-container-lowest));color:var(--mj-red);outline:none;transform:translateY(-2px)}.mahjong-action-button.accent{background:var(--mj-red);color:#fff;border-color:#9f302b;box-shadow:0 6px 15px #8924203d}.mahjong-action-button span{letter-spacing:.08em;text-transform:uppercase;margin-top:3px;font-size:7px;font-weight:900}.mahjong-dialog-backdrop{z-index:100;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);background:#0b1812b8;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.mahjong-result-dialog,.mahjong-rules-dialog,.mahjong-choice-dialog{border:1px solid color-mix(in srgb, var(--border) 75%, #d1a65c);background:var(--surface-container-lowest);border-radius:24px;width:min(560px,100%);max-height:calc(100vh - 40px);padding:27px;overflow-y:auto;box-shadow:0 26px 74px #09140f75}.mahjong-result-dialog{text-align:center;width:min(700px,100%)}.mahjong-result-icon{background:var(--mj-red);color:#fff8e9;border:1px solid #962c28;border-radius:19px;place-items:center;width:66px;height:66px;margin:0 auto 13px;font:900 35px Georgia,Songti SC,serif;display:grid;transform:rotate(-3deg);box-shadow:0 9px 22px #7d211d40}.mahjong-result-dialog h2,.mahjong-rules-dialog h2,.mahjong-choice-dialog h2{margin:0;font:800 29px Georgia,Songti SC,serif}.mahjong-result-total{color:var(--mj-red);margin:7px 0 16px;font-weight:900}.mahjong-result-hand{background:#051c156b;border:1px solid #eac3762e;border-radius:13px;margin:0 0 14px;padding:10px 12px 11px}.mahjong-result-hand>small{color:#fff0cf80;letter-spacing:.1em;text-transform:uppercase;margin-bottom:8px;font-size:7px;font-weight:900;display:block}.mahjong-result-hand-tiles{flex-wrap:wrap;justify-content:center;align-items:center;gap:2px;min-height:38px;display:flex}.mahjong-result-meld,.mahjong-result-flowers{border-left:1px solid #ebc37447;gap:1px;margin-left:4px;padding-left:5px;display:inline-flex}.mahjong-pattern-list{text-align:left;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.mahjong-pattern-list span{border:1px solid color-mix(in srgb, var(--border) 80%, transparent);background:var(--surface-container);min-width:0;color:var(--muted);border-radius:10px;align-items:center;gap:5px;padding:9px 10px;font-size:10px;display:flex}.mahjong-pattern-list strong{color:var(--text-h)}.mahjong-pattern-list b{color:var(--mj-red);margin-left:auto}.mahjong-payment-list{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:6px;margin-top:8px;display:grid}.mahjong-result-ledger{grid-template-columns:minmax(0,1.25fr) minmax(210px,.75fr);align-items:start;gap:14px;margin:14px 0 16px;display:grid}.mahjong-result-ledger.draw{grid-template-columns:1fr}.mahjong-result-breakdown{min-width:0}.mahjong-payment-list>div{color:#fff0cfa8;text-align:left;background:#051c1557;border:1px solid #eac37629;border-radius:10px;grid-template-columns:1fr auto;align-items:center;gap:2px 6px;min-width:0;padding:8px 9px;font-size:9px;display:grid}.mahjong-payment-list span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mahjong-payment-list strong{color:#fff2d1}.mahjong-payment-list small{color:#fff0cf73;font-size:7px}.mahjong-payment-list b{color:var(--mj-gold-bright);font-variant-numeric:tabular-nums;grid-area:1/2/span 2}.mahjong-standings{gap:4px;margin:18px 0;display:grid}.mahjong-result-ledger .mahjong-standings{margin:0}.mahjong-standings div{border-bottom:1px solid var(--border);text-align:left;grid-template-columns:30px 1fr auto;align-items:center;gap:9px;padding:9px 12px;display:grid}.mahjong-standings div>span{background:var(--surface-container);width:24px;height:24px;color:var(--muted);border-radius:50%;place-items:center;font-size:10px;font-weight:900;display:grid}.mahjong-standings b{color:var(--mj-red);font-variant-numeric:tabular-nums}.mahjong-dialog-actions{justify-content:center;display:flex}.mahjong-dialog-actions button.primary,.mahjong-rules-done{background:var(--mj-red);color:#fff;border-color:#9f302b;min-width:155px}.mahjong-rules-dialog{width:min(720px,100%)}.mahjong-rules-heading{justify-content:space-between;align-items:flex-start;margin-bottom:18px;display:flex}.mahjong-rules-heading>button{border:1px solid var(--border);background:var(--surface-container);width:36px;height:36px;color:var(--text-h);cursor:pointer;border-radius:50%;place-items:center;padding:0;line-height:0;display:grid}.mahjong-rules-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;display:grid}.mahjong-rules-grid article{border:1px solid var(--border);background:var(--surface-container);border-radius:13px;padding:13px}.mahjong-rules-grid b{color:var(--text-h);font-size:13px}.mahjong-rules-grid p{color:var(--muted);margin:5px 0 0;font-size:11px;line-height:1.55}.mahjong-rules-note{color:var(--muted);align-items:center;gap:7px;margin:15px 0;font-size:11px;display:flex}.mahjong-choice-dialog{width:min(460px,100%)}.mahjong-choice-intro{color:#fff0cf94;margin:7px 0 0;font-size:10px;line-height:1.45}.mahjong-choice-list{gap:8px;margin:18px 0;display:grid}.mahjong-choice-list>button{border:1px solid var(--border);background:var(--surface-container);min-height:62px;color:var(--text-h);cursor:pointer;font:inherit;border-radius:12px;justify-content:space-between;align-items:center;gap:14px;padding:8px 12px;font-weight:900;display:flex}.mahjong-choice-copy{text-align:left;gap:3px;min-width:0;display:grid}.mahjong-choice-copy strong{color:#fff2d1;font-size:12px}.mahjong-choice-copy strong b{color:var(--mj-gold-bright);font-size:10px}.mahjong-choice-copy small{color:#fff0cf8c;max-width:210px;font-size:9px;font-weight:700;line-height:1.35}.mahjong-choice-list>button:hover,.mahjong-choice-list>button:focus-visible{border-color:color-mix(in srgb, var(--mj-red) 55%, var(--border));background:color-mix(in srgb, var(--mj-red) 7%, var(--surface-container));outline:none}.mahjong-dialog-actions button:focus-visible,.mahjong-dialog-cancel:focus-visible,.mahjong-rules-heading button:focus-visible,.mahjong-rules-done:focus-visible{outline-offset:2px;outline:2px solid #ffda91f5}.mahjong-choice-tiles{flex:none;gap:2px;display:flex}.mahjong-restart-dialog>p{color:#fff0cfa8;margin:10px 0 0;font-size:12px;line-height:1.6}.mahjong-restart-actions{flex-wrap:wrap;gap:8px;margin-top:21px}.mahjong-pass-hu-dialog{text-align:center;width:min(420px,100%)}.mahjong-pass-hu-dialog .mahjong-result-icon{border-radius:16px;width:54px;height:54px;margin-bottom:11px;font-size:29px}.mahjong-pass-hu-tile{justify-content:center;margin:14px 0 9px;display:flex}.mahjong-pass-hu-dialog>p{color:#fff0cfa8;max-width:310px;margin:11px auto 0;font-size:11px;line-height:1.55}.mahjong-pass-hu-actions{flex-wrap:wrap;gap:8px;margin-top:20px}@media (width<=1080px){.mahjong-game-header{grid-template-columns:1fr auto}.mahjong-round-stats{grid-area:2/1/auto/-1;justify-self:center}.mahjong-table{height:510px}}@media (width<=680px){.mahjong-game-page{padding:12px 8px 30px}.mahjong-game-header{gap:9px}.mahjong-game-seal{width:41px;height:41px}.mahjong-game-title h1 small,.mahjong-game-kicker{display:none}.mahjong-header-actions button{width:39px;padding:0;font-size:0}.mahjong-round-stats{width:100%}.mahjong-round-stats>span{flex:1 1 0;min-width:0;padding-inline:4px}.mahjong-table-scroll{border-radius:19px}.mahjong-table{height:510px}.mahjong-command-bar{flex-direction:column;align-items:stretch;gap:7px;padding:10px}.mahjong-command-bar:before{display:none}.mahjong-turn-message{padding-left:3px}.mahjong-command-actions{justify-content:flex-start;width:100%;padding-bottom:2px;overflow-x:auto}.mahjong-rules-grid,.mahjong-pattern-list,.mahjong-payment-list,.mahjong-result-ledger{grid-template-columns:1fr}}.mahjong-result-dialog,.mahjong-rules-dialog,.mahjong-choice-dialog{color:#fff3d5;background:#102f25;border-color:#ebbe6575;box-shadow:inset 0 0 0 3px #ebbe650b,0 26px 74px #00000094}.mahjong-result-dialog h2,.mahjong-rules-dialog h2,.mahjong-choice-dialog h2{color:#fff4d8}.mahjong-result-dialog .mahjong-dialog-kicker,.mahjong-rules-dialog .mahjong-dialog-kicker{color:#ffe8bb85}.mahjong-result-total,.mahjong-pattern-list b,.mahjong-standings b{color:var(--mj-gold-bright)}.mahjong-pattern-list span,.mahjong-rules-grid article,.mahjong-choice-list>button{color:#fff0cfa8;background:#051c156b;border-color:#eac37629}.mahjong-pattern-list strong,.mahjong-rules-grid b,.mahjong-choice-list>button{color:#fff2d1}.mahjong-standings div{border-bottom-color:#eac37626}.mahjong-standings div>span{color:#fff0cf8f;background:#051c1580}.mahjong-rules-heading>button{color:#fff2d1;background:#051c1570;border-color:#eac37638}.mahjong-rules-grid p,.mahjong-rules-note{color:#fff0cf9e}.mahjong-choice-list>button:hover,.mahjong-choice-list>button:focus-visible{color:#ffde95;background:#495d37b8;border-color:#f2c2639e}.mahjong-dialog-cancel{color:#fff2d1;background:#051c1570;border-color:#eac37638}.mahjong-command-bar{width:fit-content;max-width:100%;min-height:36px;box-shadow:none;background:0 0;border:0;justify-content:flex-start;gap:9px;padding:0}.mahjong-command-bar:before{display:none}.mahjong-turn-message{min-width:0;max-width:300px;min-height:34px;box-shadow:none;background:0 0;border:0;border-radius:0;flex:0 auto;justify-content:center;padding:0 2px}.mahjong-turn-message strong{color:#fff2d5c7;text-shadow:0 2px 5px #00000059;white-space:nowrap;font-size:11px;line-height:1.1}.mahjong-command-actions{min-height:36px;margin-left:0}.mahjong-action-button{min-width:56px;height:34px}.mahjong-action-button strong{font-size:14px}.mahjong-table{grid-template:"corner-a top corner-b"82px"left center right"minmax(260px,1fr)"corner-c human corner-d"138px/166px minmax(648px,1fr) 166px}.mahjong-human-area{grid-template:"heading extras"28px"hand hand"minmax(82px,1fr)/minmax(165px,.65fr) 1fr}.mahjong-table-corner.corner-sw{display:none}.mahjong-floating-controls{z-index:12;flex-wrap:wrap;align-items:center;gap:8px;max-width:calc(100% - 48px);display:flex;position:absolute;bottom:20px;left:24px}.mahjong-floating-feedback{align-items:center;gap:8px;min-width:0;max-width:min(430px,100%);display:flex}.mahjong-floating-copy{gap:3px;min-width:0;display:grid}.mahjong-floating-status{color:#fff2d5b8;text-shadow:0 2px 5px #0006;white-space:nowrap;align-items:center;gap:6px;font-size:10px;line-height:1;display:inline-flex}.mahjong-floating-status:before{background:var(--mj-gold);content:"";border-radius:50%;flex:none;width:5px;height:5px;box-shadow:0 0 7px #ffd37d99}.mahjong-floating-event{color:#b4ccbcad;text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-size:8px;font-weight:700;line-height:1.05;overflow:hidden}.mahjong-ready-waits{background:#051f17ad;border:1px solid #f0c6713d;border-radius:8px;align-items:center;gap:6px;padding:3px 6px;display:flex}.mahjong-ready-waits.dead{background:#431815b8;border-color:#d25c4d8c}.mahjong-ready-waits.committed{border-color:#f0c6716b;box-shadow:inset 2px 0 #f0bd55b3}.mahjong-ready-waits.dead.committed{border-color:#d25c4da3;box-shadow:inset 2px 0 #d25c4dd1}.mahjong-ready-waits.hit{box-shadow:inset 2px 0 0 var(--mj-gold-bright), 0 0 12px #f4c15b2e;background:#124130e6;border-color:#f5c96cc7}.mahjong-ready-waits>span{color:var(--mj-cream);text-transform:uppercase;font-size:9px;font-weight:900;line-height:1.05;display:grid}.mahjong-ready-waits>span small{color:var(--mj-gold);font-size:8px;font-weight:900}.mahjong-ready-wait-tiles{align-items:center;gap:2px;display:flex}.mahjong-ready-wait{padding:0 3px 3px 0;display:inline-flex;position:relative}.mahjong-ready-wait .mahjong-tile-face.compact{width:21px;height:29px}.mahjong-ready-wait.dead .mahjong-tile-face{opacity:.58;filter:saturate(.4)}.mahjong-ready-wait.hit .mahjong-tile-face{z-index:2;opacity:1;filter:none;border-color:#f2c874;transform:translateY(-1px);box-shadow:0 0 0 2px #f2c8744d,1px 3px 5px #04181261}.mahjong-ready-wait-count{background:var(--mj-gold-bright);color:#1a2e25;border:1px solid #765b2e;border-radius:7px;place-items:center;min-width:12px;height:12px;padding:0 2px;font:900 7px/1 system-ui,sans-serif;display:grid;position:absolute;bottom:0;right:0;box-shadow:0 1px 3px #00000059}.mahjong-ready-wait.dead .mahjong-ready-wait-count{background:var(--mj-red);color:#fff8e9;border-color:#f09a8e}.mahjong-ready-wait.hit .mahjong-ready-wait-count{z-index:3;background:var(--mj-red);color:#fff8e9;border-color:#f2c874;min-width:14px}.mahjong-floating-actions{align-items:center;gap:5px;display:flex}.mahjong-floating-actions:empty{display:none}.mahjong-floating-actions .mahjong-action-button{min-width:52px;height:32px}.mahjong-round-stats{box-shadow:none;background:0 0;border:0;border-radius:0;padding:0;line-height:normal}.mahjong-round-stats>span{border-right:0;min-width:56px;padding:2px 10px}@media (prefers-reduced-motion:reduce){.mahjong-player-heading.active:before{animation:none}.mahjong-hand-tile,.mahjong-action-button,.mahjong-header-actions button{transition:none}.mahjong-hand-tile.auto-discard:after{animation:none}}.mahjong-game-page{z-index:1000;min-height:100dvh;padding:max(8px, env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) max(10px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left));color:#fff6df;background:#091812;grid-template-rows:46px minmax(0,1fr);gap:5px;display:grid;position:fixed;inset:0;overflow:hidden}.mahjong-game-header{grid-template-columns:1fr auto 1fr;width:min(1500px,100%);min-height:46px;margin:0 auto;padding:0 4px}.mahjong-game-header .mahjong-game-kicker{color:#ffeeca80}.mahjong-game-title h1{color:#fff4d8}.mahjong-game-title h1 small{color:#ffeeca85}.mahjong-round-stats{box-shadow:none;background:0 0;border-color:#0000}.mahjong-round-stats>span{border-right-color:#efc87924}.mahjong-round-stats span>small{color:#ffeeca70}.mahjong-round-stats strong{color:#fff3d6}.mahjong-round-stats em{color:#ffeeca80}.mahjong-header-actions button{color:#fff0cd;background:#051b14d1;border-color:#efc87938}.mahjong-exit-button{color:#fff0cd;background:#051b14d1;border-color:#efc87938;flex:none}.mahjong-header-actions button:hover,.mahjong-header-actions button:focus-visible,.mahjong-exit-button:hover,.mahjong-exit-button:focus-visible{color:var(--mj-gold-bright);background:#225240eb;border-color:#f2c26399}.mahjong-table-scroll{overscroll-behavior:contain;scrollbar-color:#d6ac5b80 #04151066;border-radius:26px;width:min(1500px,100%);min-height:0;margin:0 auto;padding:0;position:relative;overflow:auto}.mahjong-table{border-width:8px;border-radius:26px;grid-template:"corner-a top corner-b"82px"left center right"minmax(260px,1fr)"corner-c human corner-d"188px/166px minmax(648px,1fr) 166px;width:100%;height:100%;min-height:560px;box-shadow:inset 0 0 0 2px #b1814e,inset 0 0 0 7px #29190f57,inset 0 0 70px #031b148c,0 16px 34px #0000006b}.mahjong-human-area{grid-template:"heading extras"28px"hand hand"minmax(72px,1fr)"command command"58px/minmax(165px,.65fr) 1fr;gap:3px 12px;padding:7px 14px 9px}.mahjong-human-hand{padding-top:2px}.mahjong-command-bar{-webkit-backdrop-filter:none;backdrop-filter:none;background:#0b2f24fa;border-color:#edc36f38;border-radius:13px;grid-area:command;width:100%;min-height:58px;margin:0;padding:5px 7px 5px 12px;position:relative;bottom:auto;box-shadow:inset 0 1px #ffffff09,0 7px 20px #00000040}.mahjong-command-bar:before{background:var(--mj-red)}.mahjong-turn-message small{color:var(--mj-gold)}.mahjong-turn-message strong{color:#fff4d8}.mahjong-turn-message span{color:#fff2d585}.mahjong-action-button{color:#fff3d5;background:#265240f5;border-color:#eecb853d;box-shadow:inset 0 1px #ffffff0f,0 3px 8px #00000029}.mahjong-action-button:hover,.mahjong-action-button:focus-visible,.mahjong-action-button.active{color:#ffdd91;background:#58522f;border-color:#f2c263b8}.mahjong-dialog-backdrop{z-index:1200}@media (width<=1080px){.mahjong-game-page{padding:max(6px, env(safe-area-inset-top)) max(7px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(7px, env(safe-area-inset-left));grid-template-rows:46px minmax(0,1fr);gap:5px}.mahjong-game-header{grid-template-columns:1fr auto 1fr;gap:9px;min-height:46px}.mahjong-game-title h1{font-size:20px}.mahjong-game-title h1 small{display:none}.mahjong-round-stats{grid-area:auto;justify-self:auto}.mahjong-round-stats>span{min-width:48px;padding-inline:5px}.mahjong-header-actions button{width:38px;padding:0;font-size:0}.mahjong-exit-button{width:38px;padding:0}.mahjong-exit-button span{display:none}.mahjong-table{height:100%}}@media (width<=680px){.mahjong-game-page{padding:max(5px, env(safe-area-inset-top)) max(5px, env(safe-area-inset-right)) max(7px, env(safe-area-inset-bottom)) max(5px, env(safe-area-inset-left))}.mahjong-game-header{grid-template-columns:1fr auto 1fr;gap:5px}.mahjong-game-title{gap:7px}.mahjong-game-seal{border-radius:10px;width:36px;height:36px;font-size:21px}.mahjong-game-title h1{font-size:17px}.mahjong-round-stats{width:auto}.mahjong-round-stats>span{min-width:39px;padding-inline:2px}.mahjong-round-stats>span:nth-child(4){display:none}.mahjong-header-actions{gap:4px}.mahjong-header-actions button,.mahjong-exit-button{width:34px;min-height:34px}.mahjong-table-scroll{border-radius:20px}.mahjong-table{height:100%;min-height:560px}.mahjong-command-bar{flex-direction:row;align-items:center;gap:10px;padding:5px 7px 5px 12px}.mahjong-command-bar:before{display:block}.mahjong-turn-message{padding-left:0}.mahjong-command-actions{justify-content:flex-end;width:auto;padding-bottom:0;overflow-x:auto}.mahjong-floating-controls{background:#07281fe6;border:1px solid #f0c67133;border-radius:12px;flex-wrap:wrap;justify-content:center;width:max-content;max-width:calc(100vw - 28px);min-height:38px;padding:4px 7px;bottom:196px;left:50%;transform:translate(-50%);box-shadow:0 7px 18px #00000047}.mahjong-floating-actions{flex-wrap:wrap;justify-content:center}.mahjong-table-scroll{touch-action:pan-y;overflow:hidden}.mahjong-table{grid-template:"top top top"58px"left center right"minmax(200px,1fr)"human human human"205px/44px minmax(0,1fr) 44px;width:100%;min-width:0;max-width:100%}.mahjong-player-area.left,.mahjong-player-area.right{padding:5px 2px}.mahjong-player-area.left .mahjong-player-heading,.mahjong-player-area.right .mahjong-player-heading,.mahjong-player-area.left .mahjong-meld-row,.mahjong-player-area.right .mahjong-meld-row,.mahjong-player-area.left .mahjong-opponent-rack-wrap,.mahjong-player-area.right .mahjong-opponent-rack-wrap{display:none}.mahjong-player-area.top{grid-template-columns:minmax(0,1fr) auto;padding:5px 8px}.mahjong-player-area.top .mahjong-opponent-rack{max-width:180px}.mahjong-human-area{grid-template:"heading extras"26px"hand hand"minmax(128px,1fr)/minmax(0,1fr) auto;padding:7px 8px 9px}.mahjong-human-hand{touch-action:manipulation;grid-template-columns:repeat(9,minmax(0,1fr));grid-auto-rows:48px;align-content:center;justify-items:center;gap:2px;padding:5px 1px 3px;display:grid;overflow:hidden}.mahjong-hand-tile{scroll-snap-align:none;width:min(100%,36px);min-width:0;height:48px}.mahjong-floating-controls{bottom:210px}}.mahjong-portrait-notice{display:none}@media (width<=900px) and (orientation:landscape){.mahjong-game-page{grid-template-rows:38px minmax(0,1fr);gap:3px;padding:4px 6px}.mahjong-game-header{min-height:38px}.mahjong-round-stats>span{min-width:38px;padding:0 3px}.mahjong-round-stats>span:nth-child(4){display:none}.mahjong-table-scroll{width:100%;overflow:hidden}.mahjong-table{border-width:5px;border-radius:16px;grid-template:"corner-a top corner-b"52px"left center right"minmax(130px,1fr)"corner-c human corner-d"88px/84px minmax(0,1fr) 84px;width:100%;min-width:0;min-height:0}.mahjong-player-area.top{grid-template-columns:minmax(56px,1fr) auto minmax(56px,1fr);gap:4px;padding:3px 6px}.mahjong-player-area.left,.mahjong-player-area.right{grid-template-rows:20px 24px minmax(0,1fr);gap:3px;padding:4px 3px;display:grid}.mahjong-player-area.left .mahjong-player-heading,.mahjong-player-area.right .mahjong-player-heading,.mahjong-player-area.left .mahjong-meld-row,.mahjong-player-area.right .mahjong-meld-row,.mahjong-player-area.left .mahjong-opponent-rack-wrap,.mahjong-player-area.right .mahjong-opponent-rack-wrap{display:grid}.mahjong-player-area.left .mahjong-player-heading,.mahjong-player-area.right .mahjong-player-heading{grid-row:1}.mahjong-player-area.left .mahjong-meld-row,.mahjong-player-area.right .mahjong-meld-row{grid-row:2}.mahjong-player-area.left .mahjong-opponent-rack-wrap,.mahjong-player-area.right .mahjong-opponent-rack-wrap{grid-row:3}.mahjong-player-identity small,.mahjong-player-score small,.mahjong-player-area.left .mahjong-player-score,.mahjong-player-area.right .mahjong-player-score{display:none}.mahjong-player-heading{gap:3px;min-height:20px}.mahjong-player-identity strong{font-size:9px}.mahjong-wind-badge{border-radius:6px;width:20px;height:20px;font-size:11px}.mahjong-player-area.left .mahjong-opponent-rack,.mahjong-player-area.right .mahjong-opponent-rack{max-height:104px}.mahjong-player-area.left .mahjong-meld-row,.mahjong-player-area.right .mahjong-meld-row{flex-wrap:nowrap;gap:1px;width:100%;max-width:100%;min-height:0;max-height:24px;overflow:hidden}.mahjong-player-area.left .mahjong-meld,.mahjong-player-area.right .mahjong-meld,.mahjong-player-area.left .mahjong-flowers,.mahjong-player-area.right .mahjong-flowers{min-width:0;padding:0}.mahjong-player-area.left .mahjong-tile-face.compact,.mahjong-player-area.right .mahjong-tile-face.compact{width:16px;height:22px;padding:1px}.mahjong-tile-back{width:19px;height:27px;margin-left:-6px}.mahjong-player-area.left .mahjong-tile-back,.mahjong-player-area.right .mahjong-tile-back{width:27px;height:19px;margin-top:-11px}.mahjong-table-center:before,.mahjong-center-mark{transform:translate(-50%,-50%)scale(.7)}.mahjong-human-area{grid-template:"heading extras"20px"hand hand"minmax(54px,1fr)/minmax(0,1fr) auto;gap:2px 6px;padding:3px 6px 5px}.mahjong-human-hand{justify-content:center;align-items:flex-end;gap:1px;padding:0;display:flex;overflow:hidden}.mahjong-hand-tile{width:clamp(25px,3.9vw,31px);min-width:0;height:42px}.mahjong-floating-controls{max-width:calc(100% - 116px);bottom:92px;left:96px}}@media (width<=680px) and (orientation:portrait){.mahjong-game-page{grid-template-rows:1fr;place-items:center;padding:20px;display:grid}.mahjong-game-header,.mahjong-table-scroll{display:none}.mahjong-portrait-notice{color:#fff3d5;text-align:center;flex-direction:column;align-items:center;gap:10px;max-width:270px;display:flex}.mahjong-portrait-notice svg{color:var(--mj-gold-bright)}.mahjong-portrait-notice strong{font-size:18px}.mahjong-portrait-notice span{color:#fff2d5a8;font-size:13px;line-height:1.45}.mahjong-portrait-notice button{color:#ffedbd;cursor:pointer;min-height:42px;font:800 13px/1 var(--font-sans,system-ui, sans-serif);background:#58522f;border:1px solid #f2c263b8;border-radius:10px;margin-top:4px;padding:0 16px}.mahjong-portrait-notice button:focus-visible{outline-offset:3px;outline:2px solid #ffda8d}}.story-card{color:inherit;background:var(--surface-container-lowest);border:1px solid color-mix(in srgb, var(--border) 72%, transparent);cursor:pointer;border-radius:16px;flex-shrink:0;width:100%;min-width:0;max-width:none;text-decoration:none;transition:transform .24s,box-shadow .24s,border-color .18s;display:block;overflow:hidden;box-shadow:0 1px 3px #2d1f161a,0 1px 2px #2d1f1614}.story-card:hover{border-color:var(--accent-border);transform:translateY(-4px);box-shadow:0 18px 34px #b9342f14,0 10px 22px #2d1f1614}.story-card-thumb{aspect-ratio:16/10;color:#ffffffe6;background:linear-gradient(90deg,#795a3e14 1px,#0000 1px) 0 0/32px 32px,linear-gradient(#795a3e0f 1px,#0000 1px) 0 0/32px 32px,#f1d59b;justify-content:center;align-items:center;width:100%;height:auto;font-size:42px;display:flex;position:relative;overflow:hidden}.story-card-thumb-img{object-fit:cover;width:100%;height:100%;transition:transform .35s;position:absolute;inset:0}.story-card:hover .story-card-thumb-img{transform:scale(1.035)}.story-card-thumb-emoji{z-index:0;position:relative}.story-card-thumb .level-badge{z-index:2;color:#236b47;letter-spacing:0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#e5f6eb;border:1px solid #236b472e;border-radius:999px;align-items:center;gap:5px;padding:3px 10px;font-size:12px;font-weight:700;display:inline-flex;position:absolute;top:12px;left:12px;right:auto}.story-card-footer{text-align:left;justify-content:space-between;align-items:flex-end;gap:16px;padding:14px 16px 15px;display:flex}.story-card-title{flex-direction:column;gap:2px;min-width:0;display:flex}.story-card-title span{color:var(--text);font-family:var(--cjk-sans);font-size:20px;font-weight:800;line-height:1.15}.story-card-title small{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700;line-height:1.3;overflow:hidden}.story-card-time{color:var(--text);white-space:nowrap;flex:none;align-items:center;gap:5px;font-size:13px;font-weight:650;line-height:1.3;display:inline-flex}.story-card-time svg{opacity:.6}.level-row-scroll>div{min-width:0}@media (prefers-reduced-motion:reduce){.story-card:hover,.story-card:hover .story-card-thumb-img{transform:none}}.landing{color:var(--text);overflow:hidden}.landing-hero{grid-template-columns:minmax(0,1.08fr) minmax(340px,.72fr);align-items:center;gap:clamp(42px,7vw,104px);max-width:1280px;min-height:calc(100svh - 66px);margin:0 auto;padding:72px clamp(24px,7vw,92px) 92px;display:grid;position:relative}.landing-hero:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(circle,#e1aa5c2e,#e1aa5c00 68%);border-radius:50%;width:520px;height:520px;position:absolute;top:8%;right:-8%}.landing-hero-copy{max-width:720px}.landing-eyebrow{color:var(--accent);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:12px;margin-bottom:24px;font-size:12px;font-weight:800;display:inline-flex}.landing-eyebrow span:first-child{background:var(--accent);color:#fffaf4;font-family:var(--cjk-sans);letter-spacing:.08em;border-radius:6px;padding:6px 10px;font-size:13px;box-shadow:0 5px 14px #b9342f2e}.landing-hero h1{max-width:760px;color:var(--text-h);font-family:Georgia, "Times New Roman", var(--heading);letter-spacing:-.045em;margin:0 0 24px;font-size:clamp(48px,6vw,78px);font-weight:760;line-height:.98}.landing-hero h1 span{color:var(--accent);margin-top:9px;display:block}.landing-lead{max-width:620px;color:var(--text);font-size:clamp(18px,2vw,21px);line-height:1.55}.landing-actions{flex-wrap:wrap;align-items:center;gap:22px;margin-top:34px;display:flex}.landing-primary-cta{border:1px solid var(--accent);background:var(--accent);color:#fffaf4;border-radius:999px;justify-content:center;align-items:center;gap:10px;min-height:54px;padding:0 24px;font-weight:780;text-decoration:none;transition:transform .18s,background .18s,box-shadow .18s;display:inline-flex;box-shadow:0 12px 28px #b9342f38}.landing-primary-cta:hover{background:var(--accent-hover);transform:translateY(-2px);box-shadow:0 16px 34px #b9342f47}.landing-primary-cta svg{transition:transform .18s}.landing-primary-cta:hover svg{transform:translate(3px)}.landing-text-link{border-bottom:1px solid var(--border-strong);color:var(--text-h);padding:8px 0;font-size:15px;font-weight:720;text-decoration:none}.landing-text-link:hover{color:var(--accent);border-color:var(--accent)}.landing-trust-row{color:var(--text);flex-wrap:wrap;gap:10px 20px;margin-top:30px;font-size:13px;font-weight:650;display:flex}.landing-trust-row span{align-items:center;gap:6px;display:inline-flex}.landing-trust-row svg{color:var(--accent-2)}.landing-preview{border:1px solid color-mix(in srgb, var(--border) 86%, transparent);background:var(--surface-container-lowest);border-radius:22px;justify-self:end;width:min(100%,420px);position:relative;box-shadow:0 28px 72px #2d1f1624,0 6px 18px #2d1f1614}.landing-preview:before,.landing-preview:after{content:"";z-index:-1;border:1px solid var(--border);background:var(--surface-container-low);border-radius:22px;position:absolute}.landing-preview:before{inset:14px -14px -14px 14px;transform:rotate(2.5deg)}.landing-preview:after{opacity:.52;inset:-10px 20px 10px -16px;transform:rotate(-2deg)}.landing-preview-top{justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;display:flex}.landing-day-pill,.landing-level-pill{letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:800}.landing-day-pill{color:var(--accent)}.landing-level-pill{background:var(--surface-container-low);color:var(--text);border-radius:999px;padding:5px 9px}.landing-preview-scene{background:var(--surface-container);border-radius:14px;height:220px;margin:0 12px;position:relative;overflow:hidden}.landing-preview-scene:after{content:"";background:linear-gradient(#0000 60%,#1f17131f);position:absolute;inset:0}.landing-preview-scene img{object-fit:cover;width:100%;height:100%;display:block}.landing-preview-stamp{z-index:1;color:#fffaf4;width:44px;height:44px;font-family:var(--cjk-sans);background:#b9342feb;border:2px solid #fffaf4e0;border-radius:10px;place-items:center;font-size:24px;display:grid;position:absolute;bottom:14px;right:14px;transform:rotate(-5deg)}.landing-preview-body{padding:22px 24px 24px}.landing-preview-label,.landing-section-kicker,.landing-quiz-count{color:var(--accent);letter-spacing:.14em;text-transform:uppercase;font-size:11px;font-weight:820}.landing-preview-body h2{font-family:var(--cjk-sans);margin:8px 0 2px;font-size:30px;line-height:1.15}.landing-preview-pinyin{color:var(--accent);font-size:13px;font-weight:700}.landing-preview-english{color:var(--text);margin-top:4px;font-size:14px}.landing-preview-progress{color:var(--text);align-items:center;margin-top:22px;font-size:12px;font-weight:750;display:flex}.landing-preview-progress span:not(.line){align-items:center;gap:6px;display:inline-flex}.landing-preview-progress .done{color:var(--accent-2)}.landing-preview-progress .line{background:var(--border);flex:1;height:1px;margin:0 10px}.landing-loop{background:var(--text-h);color:#fffaf4b3;padding:92px clamp(24px,7vw,92px) 104px}.landing-loop>*{max-width:1120px;margin-inline:auto}.landing-section-heading{grid-template-columns:.45fr 1fr;align-items:start;gap:48px;margin-bottom:48px;display:grid}.landing-section-heading>span{color:#e8b371;letter-spacing:.14em;text-transform:uppercase;padding-top:9px;font-size:12px;font-weight:800}.landing-section-heading h2{color:#fffaf4;max-width:720px;font-family:Georgia, "Times New Roman", var(--heading);letter-spacing:-.025em;margin:0;font-size:clamp(36px,4vw,52px);line-height:1.08}.landing-benefit-grid{background:#fffaf429;grid-template-columns:repeat(3,1fr);gap:1px;display:grid}.landing-benefit-grid article{background:var(--text-h);min-height:280px;padding:32px;position:relative}.landing-benefit-grid svg{color:#e8b371;margin-top:40px}.landing-step{color:#fffaf447;font-family:var(--mono);font-size:12px;position:absolute;top:28px;right:30px}.landing-benefit-grid h3{color:#fffaf4;margin:24px 0 10px;font-size:21px;line-height:1.25}.landing-benefit-grid p{max-width:290px;font-size:15px;line-height:1.6}.landing-sample{grid-template-columns:minmax(260px,.68fr) minmax(520px,1.12fr);align-items:center;gap:clamp(48px,8vw,108px);max-width:1180px;margin:0 auto;padding:112px 30px 122px;scroll-margin-top:88px;display:grid}.landing-sample-intro h2{font-family:Georgia, "Times New Roman", var(--heading);letter-spacing:-.025em;margin:14px 0 18px;font-size:clamp(36px,4vw,54px);line-height:1.05}.landing-sample-intro>p{max-width:390px;font-size:17px;line-height:1.6}.landing-sample-notes{color:var(--text-h);gap:12px;margin-top:30px;font-size:13px;font-weight:720;display:grid}.landing-sample-notes span{align-items:center;gap:9px;display:flex}.landing-sample-notes svg{color:var(--accent)}.landing-sample-card{border:1px solid var(--border);background:var(--surface-container-lowest);box-shadow:var(--shadow);border-radius:20px;overflow:hidden}.landing-sample-card-top{border-bottom:1px solid var(--border);background:var(--surface-container-low);justify-content:space-between;align-items:center;gap:16px;padding:16px 20px;font-size:12px;font-weight:760;display:flex}.landing-sample-card-top span:first-child{color:var(--text-h);font-family:var(--cjk-sans);font-size:16px}.landing-reading-lines{gap:22px;padding:28px 28px 26px;display:grid}.landing-reading-lines>div+div{border-top:1px dashed var(--border);padding-top:20px}.landing-hanzi{color:var(--text-h);font-family:var(--cjk-sans);font-size:24px;font-weight:700;line-height:1.45}.landing-pinyin{color:var(--accent);margin-top:3px;font-size:13px;font-weight:680}.landing-translation{color:var(--text);margin-top:4px;font-size:13px}.landing-quiz{border-top:1px solid var(--border);background:color-mix(in srgb, var(--surface-container-low) 54%, var(--surface-container-lowest));padding:24px 28px 28px}.landing-quiz h3{color:var(--text-h);margin:8px 0 16px;font-size:17px}.landing-answer-grid{grid-template-columns:repeat(3,1fr);gap:9px;display:grid}.landing-answer-grid button{border:1px solid var(--border);background:var(--surface-container-lowest);min-height:68px;color:var(--text-h);text-align:left;cursor:pointer;border-radius:10px;flex-direction:column;align-items:flex-start;padding:10px 13px;transition:border-color .16s,transform .16s,background .16s;display:flex;position:relative}.landing-answer-grid button:hover{border-color:var(--border-strong);transform:translateY(-1px)}.landing-answer-grid button>span{font-family:var(--cjk-sans);font-size:17px;font-weight:750}.landing-answer-grid button small{color:var(--text);margin-top:1px;font-size:10px}.landing-answer-grid button svg{position:absolute;top:9px;right:9px}.landing-answer-grid button.correct{border-color:var(--accent-2);background:color-mix(in srgb, var(--accent-2) 9%, var(--surface-container-lowest));color:var(--accent-2)}.landing-answer-grid button.incorrect{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.landing-feedback{background:var(--accent-bg);color:var(--accent);border-radius:8px;margin-top:12px;padding:10px 12px;font-size:12px;font-weight:720}.landing-feedback.correct{background:color-mix(in srgb, var(--accent-2) 10%, var(--surface-container-lowest));color:var(--accent-2)}.landing-final-cta{background:linear-gradient(90deg, #fffaf40d 1px, transparent 1px), linear-gradient(180deg, #fffaf40d 1px, transparent 1px), var(--accent);color:#fffaf4c7;text-align:center;background-size:44px 44px;flex-direction:column;align-items:center;padding:94px 24px 102px;display:flex;position:relative;overflow:hidden}.landing-final-mark{color:#fffaf4;width:48px;height:48px;font-family:var(--cjk-sans);border:1px solid #fffaf461;border-radius:10px;place-items:center;margin-bottom:22px;font-size:26px;display:grid;transform:rotate(-4deg)}.landing-final-cta h2{color:#fffaf4;max-width:800px;font-family:Georgia, "Times New Roman", var(--heading);letter-spacing:-.03em;margin:0;font-size:clamp(38px,5vw,60px);line-height:1.06}.landing-final-cta>p{margin:18px 0 30px;font-size:17px}.landing-primary-cta-light{color:var(--accent);background:#fffaf4;border-color:#fffaf4;box-shadow:0 14px 30px #45131133}.landing-primary-cta-light:hover{color:var(--accent-hover);background:#fff}.landing-final-cta small{margin-top:18px;font-size:12px}.landing-final-cta small a{color:#fffaf4;font-weight:750}@media (width<=900px){.landing-hero{grid-template-columns:1fr;min-height:auto;padding-top:64px}.landing-hero-copy{text-align:center}.landing-lead,.landing-hero-copy{margin-inline:auto}.landing-actions,.landing-trust-row{justify-content:center}.landing-preview{justify-self:center}.landing-section-heading{grid-template-columns:1fr;gap:16px}.landing-benefit-grid{grid-template-columns:1fr}.landing-benefit-grid article{min-height:220px}.landing-benefit-grid svg{margin-top:20px}.landing-sample{grid-template-columns:1fr;max-width:720px}.landing-sample-intro{text-align:center}.landing-sample-intro>p{margin-inline:auto}.landing-sample-notes{justify-content:center}}@media (width<=600px){.landing-hero{gap:52px;padding:46px 18px 70px}.landing-eyebrow{flex-direction:column;gap:9px}.landing-hero h1{font-size:clamp(42px,13vw,58px)}.landing-actions{flex-direction:column;gap:13px}.landing-primary-cta{width:100%;max-width:340px}.landing-trust-row{text-align:left;justify-content:start;width:max-content;max-width:100%;margin-inline:auto;display:grid}.landing-preview{width:calc(100% - 14px)}.landing-preview-scene{height:190px}.landing-loop{padding:72px 20px 78px}.landing-benefit-grid article{padding:26px}.landing-sample{gap:38px;padding:80px 16px 88px}.landing-sample-card-top{flex-direction:column;align-items:flex-start;gap:4px}.landing-reading-lines,.landing-quiz{padding:22px 18px}.landing-hanzi{font-size:20px}.landing-answer-grid{grid-template-columns:1fr}.landing-answer-grid button{min-height:58px}.landing-final-cta{padding:76px 20px 84px}}.level-row{margin-bottom:36px}.level-row-header{justify-content:space-between;align-items:center;margin-bottom:16px;padding:0;display:flex}.level-row-header h2{color:var(--text-h);margin:0;font-size:20px;font-weight:760}.level-row-count{color:var(--text);font-size:12px;font-weight:700}.level-row-scroll{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;padding:0;display:grid}@media (width<=980px){.level-row-scroll{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.level-row-scroll{grid-template-columns:1fr}}.story-content{text-align:left;flex-direction:column;gap:10px;max-width:100%;margin:0 auto;font-size:28px;line-height:1.55;display:flex}.story-content .char-group{text-align:center;vertical-align:top;margin:0 4px 10px;display:inline-block}.story-content .char-group.char-punct{margin:0 1px 10px}.story-content .char-group.char-punct .hanzi-text{color:var(--text);opacity:.5;font-weight:400}.story-content .pinyin-text{color:var(--accent);opacity:.72;min-height:1.2em;font-size:.42em;line-height:1.2;font-family:var(--heading);font-weight:650;display:block}.story-content .hanzi-text{font-family:var(--cjk-sans);color:var(--text-h);letter-spacing:0;font-size:1em;font-weight:400;display:block}.story-content .hanzi-group{border-radius:5px;margin:-2px -3px;padding:2px 3px;transition:background .1s,box-shadow .1s;display:inline-block}.story-content .word-hanzi-group{text-align:center;vertical-align:top}.story-content .word-pinyin-text{color:var(--accent);opacity:.72;min-height:1.2em;font-size:.42em;line-height:1.2;font-family:var(--heading);font-weight:700;display:block}.story-content:not(.show-pinyin) .pinyin-text,.story-content:not(.show-pinyin) .word-pinyin-text{min-height:0;display:none}.story-content .word-hanzi-row{display:block}.story-content .joined-word-wrapper>.word-hanzi-group .word-hanzi-row .char-group{margin-left:1px;margin-right:1px}.story-content .word-wrapper{cursor:pointer;white-space:nowrap;z-index:1;margin:0 2px;display:inline-block;position:relative}.story-content .word-wrapper:hover .hanzi-group{box-shadow:0 0 0 1px var(--accent-border), 0 10px 24px #2d1f160f;background:#b9342f12}.word-tooltip{--tooltip-arrow-left:50%;border:1px solid var(--border);background:var(--surface-container-lowest);width:min(330px,100vw - 36px);min-width:240px;box-shadow:var(--shadow);color:var(--text-h);text-align:left;white-space:normal;overflow-wrap:normal;word-break:normal;pointer-events:none;opacity:0;visibility:hidden;z-index:80;border-radius:12px;flex-direction:column;gap:10px;padding:14px 16px 15px;font-size:14px;line-height:1.45;transition:opacity .16s,transform .16s,visibility .16s;display:flex;position:fixed;transform:translateY(8px)scale(.96)}.word-tooltip:after{content:"";left:var(--tooltip-arrow-left);border-right:1px solid var(--border-strong);border-bottom:1px solid var(--border-strong);background:var(--surface-container-lowest);width:14px;height:14px;position:absolute;bottom:-7px;transform:translate(-50%)rotate(45deg)}.story-content .word-wrapper:hover{z-index:20}.word-tooltip.visible{opacity:1;visibility:visible;transform:translateY(0)scale(1)}.word-tooltip-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:9px;display:flex}.word-tooltip-hanzi{font-family:var(--cjk-sans);letter-spacing:0;font-size:24px;font-weight:700}.word-tooltip-pinyin{color:var(--accent);letter-spacing:0;text-transform:lowercase;font-size:13px;font-weight:700}.word-tooltip-body{flex-direction:column;gap:8px;display:flex}.word-tooltip-definition{color:var(--text);letter-spacing:0;padding-left:16px;font-size:13.5px;font-weight:450;display:block;position:relative}.word-tooltip-definition:before{content:"";background:var(--accent);width:6px;height:6px;box-shadow:0 0 14px color-mix(in srgb, var(--accent) 45%, transparent);border-radius:999px;position:absolute;top:.65em;left:1px}.story-content p.story-sentence{border:1px solid color-mix(in srgb, var(--border) 56%, transparent);background:color-mix(in srgb, var(--surface-container-lowest) 78%, transparent);border-radius:12px;grid-template-columns:38px minmax(0,1fr);align-items:start;column-gap:12px;margin:0;padding:14px 16px;transition:background .2s,border-color .2s;display:grid;position:relative}.story-content p.story-sentence.has-translation{cursor:pointer}.story-sentence-main{min-width:0;display:block}.story-sentence-line{display:block}.story-sentence-controls{z-index:2;flex-direction:column;align-self:start;align-items:center;gap:8px;padding-top:8px;display:inline-flex}.story-content.show-pinyin .story-sentence-controls{padding-top:22px}.story-sentence-play-btn{background:var(--accent);color:#fff;cursor:pointer;opacity:.4;border:0;border-radius:999px;justify-content:center;align-items:center;width:28px;height:28px;padding:0;transition:background .16s,filter .16s,opacity .16s,transform .16s;display:inline-flex;box-shadow:0 2px 7px #b9342f38}.story-content p.story-sentence:hover .story-sentence-play-btn,.story-content p.story-sentence:focus-within .story-sentence-play-btn,.story-content p.story-sentence.active .story-sentence-play-btn{opacity:1}@media (hover:none){.story-sentence-play-btn{opacity:1}}.story-sentence-play-btn:hover{filter:brightness(1.06)}.story-sentence-play-btn:focus-visible{outline:2px solid var(--accent-border);outline-offset:3px}.story-sentence-play-btn svg{width:14px;height:14px}.story-content p.story-sentence:hover,.story-content p.story-sentence:focus-within{background:var(--surface-container-lowest);border-color:var(--accent-border)}.story-content p.story-sentence.active{background:color-mix(in srgb, var(--accent) 8%, var(--surface-container-lowest));border-color:var(--accent-border);box-shadow:inset 3px 0 0 var(--accent), 0 1px 3px #2d1f1614}.story-content p.story-sentence:last-child{margin-bottom:0}@media (width<=1024px){.story-content{gap:12px;font-size:24px;line-height:1.5}.story-content p.story-sentence{grid-template-columns:34px minmax(0,1fr);column-gap:10px;padding:12px 10px}.story-sentence-controls{padding-top:4px}.story-content.show-pinyin .story-sentence-controls{padding-top:17px}.story-sentence-play-btn{width:28px;height:28px}.word-tooltip{width:min(280px,100vw - 64px);min-width:0}}.translation-inline{color:var(--text);margin-top:14px;font-size:.72em;font-weight:400;line-height:1.5;display:none}.translation-inline.visible{display:block}.story-quiz{border-top:1px solid var(--border);margin-top:32px;padding-top:24px}.story-progress-summary{border:1px solid var(--accent-border);background:var(--accent-bg);color:var(--text);border-radius:16px;flex-direction:column;gap:4px;margin-top:20px;padding:14px 16px;font-size:15px;line-height:1.45;display:flex}.story-progress-summary strong{color:var(--text-h)}.story-quiz h3{font-family:Georgia, "Times New Roman", var(--heading);color:var(--text-h);margin:0 0 16px;font-size:20px;line-height:28px}.quiz-start-container{justify-content:center;padding:20px 0;display:flex}.start-quiz-btn{background-color:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:999px;min-height:38px;padding:0 18px;font-size:14px;font-weight:700;transition:background-color .2s,transform .1s}.start-quiz-btn:hover{background-color:var(--accent-hover,#bc243c);transform:translateY(-1px)}.start-quiz-btn:active{transform:translateY(1px)}.quiz-question{margin-bottom:20px}.quiz-question-text{color:var(--text-h);margin-bottom:12px;font-size:16px;font-weight:500}.quiz-options{flex-direction:column;gap:10px;display:flex}.quiz-option{border:1px solid var(--border);background:var(--surface-container-lowest);color:var(--text);cursor:pointer;text-align:left;border-radius:12px;flex-direction:column;padding:12px 48px 12px 16px;font-size:16px;line-height:1.4;transition:all .2s;display:flex;position:relative}.quiz-option.correct:after,.quiz-option.incorrect:after{color:#fff;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:13px;font-weight:800;line-height:1;display:inline-flex;position:absolute;top:50%;right:14px;transform:translateY(-50%)}.quiz-option.correct:after{content:"✓";background:var(--success)}.quiz-option.incorrect:after{content:"✕";background:var(--accent)}.quiz-option-pinyin{color:var(--text);opacity:.6;margin-bottom:2px;font-size:.65em}.quiz-option-text{font-family:var(--cjk-sans);font-weight:500}.quiz-option:hover:not(:disabled){background:var(--accent-bg);border-color:var(--accent)}.quiz-option.correct{background:color-mix(in srgb, var(--success) 18%, var(--surface-container-lowest));border-color:var(--success);color:var(--mc-correct-text)}.quiz-option.incorrect{background:var(--accent-bg);border-color:var(--accent);color:var(--mc-incorrect-text)}.quiz-option:disabled{cursor:default}.audio-player{background:color-mix(in srgb, var(--surface-container-lowest) 86%, transparent);border:1px solid color-mix(in srgb, var(--border) 72%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:999px;align-items:center;gap:14px;padding:10px 18px;display:flex;box-shadow:0 8px 24px #2d1f161a,0 1px 3px #2d1f1614}.audio-play-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;transition:opacity .15s,transform .15s;display:flex}.audio-play-btn:hover{opacity:.85;transform:scale(1.04)}.audio-play-btn svg{width:18px;height:18px}.audio-progress{color:var(--text);white-space:nowrap;flex:1;font-size:12px;font-weight:700}.audio-speed{align-items:center;padding-left:14px;display:flex;position:relative}.audio-speed-toggle{background:color-mix(in srgb, var(--surface-container-low) 75%, transparent);min-height:34px;color:var(--text);cursor:pointer;border:none;border-radius:999px;align-items:center;gap:5px;padding:5px 9px 5px 8px;font-size:12px;font-weight:700;transition:background .1s,color .1s;display:inline-flex}.audio-speed-toggle:hover,.audio-speed-toggle[aria-expanded=true]{background:var(--accent-bg);color:var(--accent)}.audio-speed-menu{border:1px solid color-mix(in srgb, var(--border) 72%, transparent);background:color-mix(in srgb, var(--surface-container-lowest) 94%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);transform-origin:100% 100%;border-radius:18px;flex-direction:column;gap:8px;width:218px;padding:12px;animation:.18s cubic-bezier(.2,.8,.2,1) both audio-speed-menu-in;display:flex;position:absolute;bottom:calc(100% + 10px);right:0;box-shadow:0 14px 30px #2d1f1633,0 2px 8px #2d1f161a}.audio-speed-menu-label{color:var(--text);letter-spacing:.06em;text-transform:uppercase;padding:1px 3px 0;font-size:11px;font-weight:800}.audio-speed-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;display:grid}.audio-speed-btn{background:var(--surface-container-low);min-height:36px;color:var(--text);cursor:pointer;border:1px solid #0000;border-radius:10px;padding:5px 7px;font-size:12px;font-weight:700;transition:background .14s,border-color .14s,color .14s,transform .14s}.audio-speed-btn:hover{border-color:var(--accent-border);background:var(--accent-bg);color:var(--accent);transform:translateY(-1px)}.audio-speed-btn.active{border-color:var(--accent);background:var(--accent);color:#fff;box-shadow:0 3px 8px color-mix(in srgb, var(--accent) 30%, transparent)}@keyframes audio-speed-menu-in{0%{opacity:0;transform:translateY(8px)scale(.92)}to{opacity:1;transform:translateY(0)scale(1)}}@media (prefers-reduced-motion:reduce){.audio-speed-menu{animation:none}}@media (width<=640px){.audio-player{gap:10px;padding:12px}.audio-progress{display:none}.audio-speed{order:1;padding-left:0;position:static}.audio-play-btn{order:2;width:48px;height:48px}.audio-speed-menu{width:min(218px,100vw - 32px);bottom:calc(100% + 8px);right:0}}.pinyin-settings{display:inline-block;position:relative}.pinyin-settings-cog{background:var(--surface-container-low);border:1px solid var(--border);width:36px;height:36px;color:var(--text);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:color .15s;display:inline-flex}.pinyin-settings-cog:hover{color:var(--accent)}.pinyin-settings-cog svg{width:18px;height:18px}.pinyin-settings-menu{background:var(--surface-container-lowest);border:1px solid var(--border);min-width:190px;box-shadow:var(--shadow);z-index:100;border-radius:16px;padding:4px;animation:.12s ease-out menu-in;position:absolute;top:calc(100% + 8px);right:0}.pinyin-settings-item{color:var(--text-h);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:10px;justify-content:space-between;align-items:center;padding:10px 14px;font-size:12px;display:flex}.pinyin-settings-item:hover{background:var(--accent-bg)}.toggle-switch{background:var(--surface-container-highest);cursor:pointer;border:none;border-radius:11px;flex-shrink:0;width:38px;height:22px;padding:0;transition:background .2s;position:relative}.toggle-switch.on{background:var(--accent)}.toggle-knob{background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .2s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0003}.toggle-switch.on .toggle-knob{transform:translate(16px)}.story-page{max-width:1152px;margin:0 auto;padding:32px 24px 140px}.story-page-nav{justify-content:space-between;align-items:center;gap:12px;margin-bottom:24px;display:flex}.story-page-back{color:var(--text);border-radius:999px;align-items:center;gap:6px;padding:6px 0;font-size:14px;font-weight:700;text-decoration:none;transition:background .15s,color .15s,transform .15s;display:inline-flex}.story-page-back:hover{color:var(--accent);background:0 0;transform:translate(-2px)}.story-page-top-title{color:var(--text-h);text-align:center;flex-direction:column;align-items:center;line-height:1.35;display:none}.story-page-top-title strong{font-size:28px;line-height:36px}.story-page-top-title span{color:var(--text);letter-spacing:.02em;font-size:15px}.story-page-streak{min-height:36px;color:var(--text-h);border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 12px;font-size:13px;text-decoration:none;transition:background .16s,border-color .16s,color .16s,transform .16s;display:inline-flex}.story-page-streak:hover{border-color:var(--accent-border);background:var(--accent-bg);color:var(--accent);transform:translateY(-1px)}.story-page-streak svg{color:var(--accent)}.story-page .paper-panel{border:1px solid color-mix(in srgb, var(--border) 72%, transparent);background:linear-gradient(90deg,#795a3e0e 1px,#0000 1px) 0 0/46px 46px,linear-gradient(#795a3e0a 1px,#0000 1px) 0 0/46px 46px,linear-gradient(135deg,#b9342f1a,#e1aa5c14 44%,#fffaf4b8);position:relative;overflow:hidden}.story-page-header{text-align:left;border-radius:16px;grid-template-columns:minmax(0,1.35fr) minmax(300px,.9fr);align-items:center;gap:32px;min-height:360px;margin-bottom:32px;padding:40px;display:grid}.story-page .audio-player{z-index:30;width:fit-content;max-width:calc(100vw - 48px);margin:-6px auto 24px;position:sticky;top:78px}.story-page-header-copy{min-width:0}.story-page-kicker{color:var(--accent);letter-spacing:.18em;text-transform:uppercase;align-items:center;gap:10px;margin-bottom:16px;font-size:12px;font-weight:800;display:inline-flex}.story-page-seal{background:var(--accent);color:#fffaf4;width:28px;height:28px;font-family:var(--cjk-sans);letter-spacing:0;border-radius:6px;place-items:center;font-size:18px;display:inline-grid;box-shadow:inset 0 1px #ffffff3d,0 2px 7px #b9342f38}.story-page-header h1{font-family:Georgia, "Times New Roman", var(--heading);color:var(--text-h);letter-spacing:0;margin:0 0 8px;font-size:48px;font-weight:760;line-height:60px}.story-title-row{justify-content:center;align-items:center;min-height:36px;margin-bottom:6px;display:flex;position:relative}.story-title-row .pinyin-settings{position:absolute;right:0}.story-page-header .story-subtitle{max-width:28rem;color:var(--text);margin:0;font-size:16px;line-height:24px}.story-page-meta{flex-wrap:wrap;gap:9px;margin-top:22px;display:flex}.story-page-meta span{border:1px solid color-mix(in srgb, var(--border) 72%, transparent);background:color-mix(in srgb, var(--surface-container-lowest) 82%, transparent);min-height:30px;color:var(--text-h);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:999px;align-items:center;gap:7px;padding:6px 12px;font-size:13px;font-weight:700;display:inline-flex;box-shadow:0 2px 8px #2d1f160f}.story-page-meta svg{color:var(--accent)}.story-page-header-side{flex-direction:column;align-items:flex-end;gap:14px;display:flex;position:relative}.story-page-header-side .pinyin-settings{z-index:3}.story-hero-media{aspect-ratio:16/10;border:1px solid color-mix(in srgb, var(--border) 72%, transparent);background:linear-gradient(90deg,#795a3e14 1px,#0000 1px) 0 0/32px 32px,linear-gradient(#795a3e0f 1px,#0000 1px) 0 0/32px 32px,#f1d59b;border-radius:16px;width:100%;margin:0;position:relative;overflow:hidden;box-shadow:0 1px 3px #2d1f161a,0 1px 2px #2d1f1614}.story-hero-media img{object-fit:cover;width:100%;height:100%;display:block}.story-hero-fallback{place-items:center;display:grid}.story-hero-fallback span{color:#1f171342;font-family:var(--cjk-sans);font-size:96px;font-weight:850}.story-reader-panel{border:1px solid color-mix(in srgb, var(--border) 72%, transparent);background:var(--surface-container-lowest);border-radius:16px;max-width:900px;margin:0 auto;padding:28px;overflow-x:visible;box-shadow:0 1px 3px #2d1f1614,0 1px 2px #2d1f160f}.story-page-loading{text-align:center;color:var(--text);padding:60px 0;font-size:16px}.story-page-error{text-align:center;color:#e53e3e;padding:60px 0;font-size:16px}.story-page-progress-note{border:1px solid var(--accent-border);background:var(--accent-bg);max-width:680px;color:var(--text);border-radius:16px;justify-content:space-between;align-items:center;gap:14px;margin:20px auto 0;padding:14px;font-size:14px;display:flex}.story-page-bonus-link{background:var(--accent);color:#fff;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;min-height:38px;padding:0 14px;font-weight:700;text-decoration:none;transition:background .16s,transform .16s;display:inline-flex}.story-page-bonus-link:hover{background:var(--accent-hover);transform:translateY(-1px)}@media (width<=1024px){.story-page{padding:24px 16px 124px}.story-page-header{grid-template-columns:1fr;gap:24px;min-height:0;padding:28px}.story-page-header h1{font-size:44px;line-height:52px}.story-page-header-side{align-items:stretch}.story-page-progress-note{flex-direction:column;align-items:stretch}.story-page-nav{align-items:flex-start;margin-bottom:36px}.story-page-top-title{display:none}.story-page-streak{min-height:36px;padding:0 10px;font-size:14px}.story-hero-media{width:100%}.story-page .audio-player{max-width:calc(100vw - 32px);top:86px}.story-reader-panel{padding:16px}}@media (width<=640px){.story-page{padding:16px 16px 112px}.story-page .audio-player{top:auto;right:16px;bottom:max(16px, env(safe-area-inset-bottom));z-index:60;border-radius:999px;gap:8px;width:auto;max-width:calc(100vw - 32px);margin:0;padding:8px;position:fixed}}:root{--text:#5f534b;--text-h:#1f1713;--bg:#f8f3ea;--surface:#f8f3ea;--surface-dim:#e3d7c9;--surface-bright:#fffaf2;--surface-raised:#fffaf4;--surface-container-lowest:#fffaf4;--surface-container-low:#f0e8dc;--surface-container:#ebe1d3;--surface-container-high:#e4d8c8;--surface-container-highest:#dccfbd;--surface-variant:#e8dccd;--border:#dfd1c1;--border-strong:#a6907d;--code-bg:#f0e8dc;--accent:#b9342f;--accent-hover:#9f2926;--accent-2:#16865b;--success:#00a86b;--accent-bg:#b9342f17;--accent-border:#b9342f47;--social-bg:#f0e8dc;--shadow:#2d1f160f 0 18px 42px, #2d1f160d 0 3px 12px;--shadow-soft:#2d1f160d 0 14px 32px;--mc-correct-bg:color-mix(in srgb, #22c55e 22%, var(--bg));--mc-correct-border:#16a34a;--mc-correct-text:var(--text-h);--mc-incorrect-bg:color-mix(in srgb, #ef4444 18%, var(--bg));--mc-incorrect-border:#dc2626;--mc-incorrect-text:var(--text-h);--sans:"Hanken Grotesk", Inter, ui-sans-serif, system-ui, "Segoe UI", Roboto, sans-serif;--heading:"Hanken Grotesk", Inter, ui-sans-serif, system-ui, "Segoe UI", Roboto, sans-serif;--cjk-sans:"Kaiti SC", KaiTi, STKaiti, "Noto Sans CJK SC", "Noto Sans SC", "PingFang SC", sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:0;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (width<=1024px){:root{font-size:16px}}#root{box-sizing:border-box;flex-direction:column;width:100%;max-width:100%;min-height:100svh;margin:0 auto;display:flex}body{background:var(--bg);min-width:320px;margin:0}*,:before,:after{box-sizing:border-box}h1,h2{font-family:var(--heading);color:var(--text-h);letter-spacing:0;font-weight:750}h1{margin:32px 0;font-size:32px;line-height:40px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:0;margin:0 0 8px;font-size:24px;line-height:32px}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}a,button{-webkit-tap-highlight-color:transparent}button,input,select,textarea{font:inherit}:focus-visible{outline:3px solid color-mix(in srgb, var(--accent) 34%, transparent);outline-offset:3px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
