:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#f5f0e5;--paper-raised:#fffdf7;--paper-deep:#e9e0cf;--ink:#182d3a;--ink-muted:#5d6b70;--jade:#2f7569;--jade-dark:#20564e;--jade-soft:#dceae4;--coral:#c75a4a;--coral-dark:#923e33;--coral-soft:#f4dfd9;--line:#d8d0bf;--line-strong:#bcb19d;--focus:#0c6f84;--navy-deep:#10232f;--success:#236a52;--warning:#8a5b22;--radius-xs:.35rem;--radius-sm:.5rem;--radius-md:.875rem;--radius-lg:1.35rem;--shadow-paper:0 12px 35px #182d3a17;--shadow-float:0 24px 70px #10232f29;--sidebar-width:14rem;--content-width:78rem;--font-ui:"Microsoft YaHei UI", "PingFang SC", "Noto Sans CJK SC", sans-serif;--font-word:Georgia, Cambria, "Times New Roman", serif}@keyframes page-rise{0%{opacity:0;transform:translateY(.55rem)}to{opacity:1;transform:translateY(0)}}@keyframes sound-ring{0%,to{opacity:.45;transform:scale(.88)}50%{opacity:1;transform:scale(1.08)}}.page-enter{animation:.24s ease-out both page-rise}.sound-ring.is-playing:after{animation:.9s ease-in-out infinite sound-ring}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}*,:before,:after{box-sizing:border-box}html{background:var(--paper);scroll-behavior:smooth;min-width:20rem}body{min-width:20rem;min-height:100vh;color:var(--ink);background-color:var(--paper);font-family:var(--font-ui);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background-image:linear-gradient(#182d3a06 1px,#0000 1px),linear-gradient(90deg,#182d3a05 1px,#0000 1px);background-size:1.75rem 1.75rem;margin:0;font-size:1rem;line-height:1.6}button,input,textarea,select{color:inherit;font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:var(--jade-dark);text-underline-offset:.2em;text-decoration-thickness:.08em}img{max-width:100%;display:block}h1,h2,h3,p{margin-top:0}h1,h2,h3{letter-spacing:-.025em;line-height:1.2}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}::selection{color:var(--paper-raised);background:var(--jade-dark)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.full-screen-state{text-align:center;place-items:center;min-height:100vh;padding:2rem;display:grid}.state-stack{justify-items:center;gap:1rem;max-width:30rem;display:grid}.spinner{border:3px solid var(--line);border-top-color:var(--jade);border-radius:50%;width:2.6rem;height:2.6rem;animation:.85s linear infinite sound-ring}.app-layout{min-height:100vh}.sidebar{z-index:20;width:var(--sidebar-width);color:#f7f2e7;background:var(--navy-deep);border-right:1px solid #ffffff14;flex-direction:column;padding:1.4rem 1.15rem;display:flex;position:fixed;inset:0 auto 0 0}.brand{min-height:3.8rem;color:inherit;align-items:center;gap:.75rem;text-decoration:none;display:flex}.brand-mark{width:2.5rem;height:2.5rem;color:var(--navy-deep);font-family:var(--font-word);background:#e9c985;border:1px solid #ffffff3d;border-radius:50% 50% 44% 56%;place-items:center;font-size:1.3rem;font-weight:700;display:grid;transform:rotate(-4deg)}.brand-copy strong,.brand-copy small{display:block}.brand-copy strong{font-family:var(--font-word);letter-spacing:.08em;font-size:1.25rem}.brand-copy small{color:#f7f2e79e;letter-spacing:.16em;text-transform:uppercase;font-size:.7rem}.side-nav{gap:.35rem;margin-top:2.1rem;display:grid}.nav-link{color:#f7f2e7b3;border-radius:var(--radius-sm);align-items:center;gap:.75rem;min-height:2.8rem;padding:.65rem .75rem;font-size:.92rem;text-decoration:none;transition:color .16s,background .16s,transform .16s;display:flex;position:relative}.nav-link:hover{color:#fffdf7;background:#ffffff12;transform:translate(.12rem)}.nav-link.active{color:#fffdf7;background:#2f756957}.nav-link.active:before{content:"";background:#e9c985;border-radius:0 .3rem .3rem 0;width:.24rem;position:absolute;inset:.55rem auto .55rem -1.15rem}.sidebar-footer{gap:.7rem;margin-top:auto;display:grid}.user-chip{border-radius:var(--radius-md);background:#ffffff0f;border:1px solid #ffffff14;padding:.8rem}.user-chip strong,.user-chip small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.user-chip small{color:#f7f2e794}.sidebar .button.ghost{color:#f7f2e7;border-color:#ffffff2e}.app-main{min-height:100vh;margin-left:var(--sidebar-width);padding:clamp(1.4rem,3.5vw,3.6rem) clamp(1.4rem,3.5vw,3.6rem) 5rem}.content-wrap{width:min(100%, var(--content-width));margin:0 auto}.mobile-nav{display:none}.page-head{justify-content:space-between;align-items:end;gap:1.25rem;margin-bottom:2rem;display:flex}.page-head h1{max-width:18ch;font-family:var(--font-word);margin-bottom:.45rem;font-size:clamp(2rem,4vw,3.35rem);font-weight:600}.page-head p{max-width:44rem;color:var(--ink-muted);margin-bottom:0}.eyebrow{color:var(--jade-dark);letter-spacing:.15em;text-transform:uppercase;align-items:center;gap:.4rem;margin-bottom:.65rem;font-size:.76rem;font-weight:800;display:inline-flex}.paper-card{border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-paper);background:#fffdf7f0;padding:clamp(1rem,2vw,1.6rem);position:relative}.paper-card.ruled:after{background:var(--line);content:"";height:1px;position:absolute;inset:auto 1.5rem .55rem}.card-title{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.card-title h2,.card-title h3{margin:0}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;display:grid}.metric-card{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-md);min-height:9rem;box-shadow:var(--shadow-paper);padding:1.25rem}.metric-card.accent{color:#f7f2e7;background:var(--jade-dark);border-color:var(--jade-dark)}.metric-label{color:var(--ink-muted);font-size:.82rem;font-weight:700}.metric-card.accent .metric-label{color:#f7f2e7b3}.metric-value{font-family:var(--font-word);margin-top:.6rem;font-size:clamp(2.2rem,5vw,3.35rem);line-height:1;display:block}.dashboard-grid,.two-column{grid-template-columns:minmax(0,1.5fr) minmax(17rem,.8fr);gap:1rem;margin-top:1rem;display:grid}.stack{gap:1rem;display:grid}.button-row{flex-wrap:wrap;align-items:center;gap:.7rem;display:flex}.button{min-height:2.7rem;color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:0 0;justify-content:center;align-items:center;gap:.5rem;padding:.62rem 1rem;font-weight:750;text-decoration:none;transition:transform .15s,box-shadow .15s,background .15s;display:inline-flex}.button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 7px 18px #182d3a1f}.button:disabled{cursor:not-allowed;opacity:.55}.button.primary{color:#fffdf7;background:var(--jade-dark);border-color:var(--jade-dark)}.button.secondary{color:var(--jade-dark);background:var(--jade-soft);border-color:#b6d0c7}.button.danger{color:#fffdf7;background:var(--coral-dark);border-color:var(--coral-dark)}.button.ghost{background:0 0}.button.large{min-height:3.25rem;padding-inline:1.35rem;font-size:1.02rem}.icon-button{width:2.65rem;height:2.65rem;color:var(--ink);background:var(--paper-raised);border:1px solid var(--line);border-radius:50%;place-items:center;padding:0;display:inline-grid}.form-grid{gap:1rem;display:grid}.form-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.field{gap:.4rem;display:grid}.field>span,.field>label{font-size:.82rem;font-weight:800}.field small,.muted{color:var(--ink-muted)}.input,.select,.textarea{width:100%;min-height:2.85rem;color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:#fffefa;padding:.68rem .78rem;box-shadow:inset 0 1px 2px #182d3a0a}.textarea{resize:vertical;min-height:6.5rem}.input::placeholder,.textarea::placeholder{color:#8a9496}.input:focus,.select:focus,.textarea:focus{border-color:var(--focus);outline-offset:0;outline:2px solid #0c6f842e}.inline-error,.inline-success,.notice{border-radius:var(--radius-sm);padding:.8rem .9rem}.inline-error{color:var(--coral-dark);background:var(--coral-soft);border:1px solid #d9a69b}.inline-success{color:var(--success);background:#e1eee7;border:1px solid #a7c8b8}.notice{color:#654716;background:#f6ead0;border:1px solid #dcc18a}.request-id{color:inherit;margin-top:.35rem;font-family:ui-monospace,Consolas,monospace;font-size:.72rem;display:block}.badge{color:var(--ink-muted);background:var(--paper-deep);border:1px solid var(--line);border-radius:99rem;align-items:center;padding:.18rem .55rem;font-size:.72rem;font-weight:750;line-height:1.5;display:inline-flex}.badge.jade{color:var(--jade-dark);background:var(--jade-soft);border-color:#b6d0c7}.badge.coral{color:var(--coral-dark);background:var(--coral-soft);border-color:#d9a69b}.table-wrap{border:1px solid var(--line);border-radius:var(--radius-md);width:100%;overflow-x:auto}.data-table{border-collapse:collapse;background:var(--paper-raised);width:100%;min-width:46rem}.data-table th,.data-table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;white-space:pre-wrap;padding:.75rem .85rem}.data-table th{color:var(--ink-muted);letter-spacing:.03em;background:#eee7d9;font-size:.76rem}.data-table tbody tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#fbf7ee}.word-form{font-family:var(--font-word);font-size:1.18rem;font-weight:700}.filters{grid-template-columns:minmax(12rem,2fr) repeat(3,minmax(8rem,1fr)) auto;align-items:end;gap:.75rem;margin-bottom:1rem;display:grid}.pagination{justify-content:flex-end;align-items:center;gap:.75rem;margin-top:1rem;display:flex}.empty-state{min-height:16rem;color:var(--ink-muted);text-align:center;place-items:center;padding:2rem;display:grid}.empty-state svg{color:var(--jade);margin-bottom:.8rem}.book-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.book-card{background:var(--paper-raised);border:1px solid var(--line);border-radius:.35rem var(--radius-md) var(--radius-md) .35rem;min-height:22rem;box-shadow:.4rem .5rem 0 var(--paper-deep), var(--shadow-paper);flex-direction:column;padding:1.35rem 1.35rem 1.35rem 2.1rem;display:flex;position:relative;overflow:hidden}.book-card:before{background:var(--jade-dark);content:"";width:.8rem;position:absolute;inset:0 auto 0 0}.book-card:nth-child(2):before{background:var(--coral-dark)}.book-card:nth-child(3):before{background:#8a6b2f}.book-card h2{font-family:var(--font-word);margin:1rem 0 .7rem;font-size:1.55rem}.book-card .book-actions{margin-top:auto}.book-count{font-family:var(--font-word);font-size:2.3rem;line-height:1}.progress-row{gap:.35rem;display:grid}progress{width:100%;height:.55rem;accent-color:var(--jade);border:0;border-radius:99rem;overflow:hidden}.auth-page{background:var(--navy-deep);grid-template-columns:minmax(0,1.35fr) minmax(24rem,.65fr);min-height:100vh;display:grid}.auth-art{min-height:100vh;position:relative;overflow:hidden}.auth-art img{object-fit:cover;width:100%;height:100%}.auth-art:after{content:"";background:linear-gradient(90deg,#10232f1a,#10232f94);position:absolute;inset:0}.auth-art-copy{z-index:2;color:#fffdf7;text-shadow:0 2px 18px #10232f73;max-width:32rem;position:absolute;inset:auto 7% 7%}.auth-art-copy h1{font-family:var(--font-word);margin-bottom:.7rem;font-size:clamp(2.4rem,5vw,4.9rem);font-weight:500}.auth-panel{min-height:100vh;color:var(--ink);background:var(--paper);place-items:center;padding:clamp(1.5rem,5vw,4.5rem);display:grid}.auth-card{width:min(100%,28rem)}.auth-card .brand{width:max-content;color:var(--ink);margin-bottom:3rem}.auth-card .brand-copy small{color:var(--ink-muted)}.auth-card h2{font-family:var(--font-word);margin-bottom:.6rem;font-size:2.4rem;font-weight:600}.auth-footnote{color:var(--ink-muted);margin-top:1.25rem;font-size:.84rem}.dialog-backdrop{z-index:100;background:#10232f8f;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.dialog-card{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-md);width:min(100%,31rem);box-shadow:var(--shadow-float);padding:1.4rem}.dialog-card h2{margin-bottom:.55rem}.review-page{color:#f7f2e7;background-color:var(--navy-deep);background-image:radial-gradient(circle at 15% 20%,#2f756952,#0000 26rem),linear-gradient(#ffffff06 1px,#0000 1px);background-size:auto,100% 2.2rem;min-height:100vh;padding:clamp(1rem,4vw,3rem)}.review-topbar{grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;width:min(100%,58rem);margin:0 auto;display:grid}.review-topbar .icon-button{color:#f7f2e7;background:#ffffff0f;border-color:#ffffff26}.review-progress{color:#f7f2e7ad;text-align:center}.review-progress progress{margin-top:.4rem;display:block}.review-stage{align-content:center;width:min(100%,58rem);min-height:calc(100vh - 8rem);margin:0 auto;padding-block:clamp(2rem,8vh,6rem);display:grid}.review-card{color:var(--ink);background:var(--paper-raised);border-radius:var(--radius-lg);box-shadow:var(--shadow-float);text-align:center;border:1px solid #fff3;padding:clamp(1.3rem,4vw,3.2rem);position:relative}.review-card:before{border:1px solid var(--line);border-radius:calc(var(--radius-lg) - .5rem);content:"";pointer-events:none;position:absolute;inset:1.05rem}.review-inner{z-index:1;justify-items:center;gap:1.4rem;display:grid;position:relative}.audio-controls{justify-content:center;align-items:center;gap:.75rem;display:flex}.sound-ring{color:#fffdf7;background:var(--jade-dark);border:0;border-radius:50%;place-items:center;width:5.4rem;height:5.4rem;display:grid;position:relative}.sound-ring:after{border:2px solid var(--jade);border-radius:inherit;content:"";opacity:.45;position:absolute;inset:-.55rem}.answer-input{width:min(100%,34rem);font-family:var(--font-word);text-align:center;border:0;border-bottom:2px solid var(--line-strong);background:0 0;border-radius:0;outline:0;padding:.72rem .3rem;font-size:clamp(1.8rem,5vw,3.2rem);font-weight:600}.answer-input:focus{border-color:var(--jade);box-shadow:0 3px #2f756926}.key-hint{color:var(--ink-muted);font-size:.78rem}kbd{background:var(--paper-deep);border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:.3rem;padding:.1rem .38rem;font-family:ui-monospace,Consolas,monospace;font-size:.72rem}.result-stamp{width:5rem;height:5rem;color:var(--success);font-family:var(--font-word);border:3px double;border-radius:50%;place-items:center;font-weight:800;display:inline-grid;transform:rotate(-5deg)}.result-stamp.wrong{color:var(--coral-dark);transform:rotate(5deg)}.revealed-word{font-family:var(--font-word);margin:0;font-size:clamp(2.5rem,8vw,5.5rem);line-height:1}.reveal-details{max-width:40rem}.reveal-details p{margin-bottom:.45rem}.character-diff{font-family:var(--font-word);letter-spacing:.1em;font-size:1.2rem}.character-diff .mismatch{color:var(--coral-dark);background:var(--coral-soft);text-decoration:line-through}.section-divider{background:var(--line);border:0;height:1px;margin:1.5rem 0}.stat-list{gap:.7rem;margin:0;padding:0;list-style:none;display:grid}.stat-list li{justify-content:space-between;gap:1rem;display:flex}.callout-code{overflow-wrap:anywhere;color:#f7f2e7;background:var(--navy-deep);border-radius:var(--radius-sm);padding:.8rem;font-family:ui-monospace,Consolas,monospace;font-size:.82rem}@media (width<=1100px){.metric-grid,.book-grid,.filters{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=899px){.sidebar{display:none}.app-main{padding:1.1rem;margin-left:0;padding-bottom:6.5rem}.mobile-nav{z-index:50;color:#f7f2e7;box-shadow:var(--shadow-float);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#10232ff5;border:1px solid #ffffff1f;border-radius:1rem;grid-auto-columns:1fr;grid-auto-flow:column;padding:.45rem;display:grid;position:fixed;inset:auto .75rem .75rem}.mobile-nav .nav-link{justify-items:center;gap:.1rem;min-height:3.7rem;padding:.35rem;font-size:.65rem;display:grid}.mobile-nav .nav-link.active:before{border-radius:.3rem .3rem 0 0;width:auto;height:.2rem;inset:auto 30% -.45rem}.mobile-hide{display:none!important}.auth-page{grid-template-columns:1fr}.auth-art{display:none}.auth-panel{min-height:100vh}.dashboard-grid,.two-column{grid-template-columns:1fr}}@media (width<=680px){.page-head{flex-direction:column;align-items:stretch}.page-head .button-row{width:100%}.page-head .button-row .button{flex:1}.metric-grid,.book-grid,.form-row,.filters{grid-template-columns:1fr}.metric-card{min-height:7.5rem}.book-card{min-height:18rem}.review-topbar{grid-template-columns:auto 1fr}.review-topbar>:last-child{display:none}.review-page{padding:.75rem}.review-card{padding:1.25rem 1rem}.review-card:before{inset:.6rem}.data-table{min-width:42rem}}
