:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ink:#171713;--muted:#66645d;--line:#181814;--paper:#f2efe6;--panel:#fffaf0;--accent:#0f6fba;--accent-dark:#084b7e;--rose:#d1352b;--yellow:#f2c84b;--blue:#0f6fba;--shadow:10px 10px 0 #17171314}*{box-sizing:border-box}body{background:linear-gradient(90deg, #1717130d 1px, transparent 1px), linear-gradient(#1717130d 1px, transparent 1px), var(--paper);min-height:100vh;color:var(--ink);background-size:48px 48px;margin:0;font-family:Inter,Noto Sans SC,PingFang SC,Microsoft YaHei,Arial,sans-serif}button,input,textarea,select{font:inherit}button,.import-button,.image-upload-button{border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer;border-radius:0;min-height:42px;padding:0 16px;transition:transform .16s,border-color .16s,background .16s}button:hover,.import-button:hover,.image-upload-button:hover{border-color:var(--accent);transform:translateY(-1px)}button:disabled{cursor:not-allowed;opacity:.48;transform:none}.app-shell{width:min(1120px,100vw - 32px);margin:0 auto;padding:32px 0}.auth-shell{place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{border:2px solid var(--line);background:var(--panel);gap:20px;width:min(520px,100%);padding:clamp(24px,6vw,42px);display:grid;box-shadow:14px 14px #1717131a}.auth-intro{color:var(--muted);margin:16px 0 0;line-height:1.7}.auth-tabs{grid-template-columns:1fr 1fr;gap:8px;display:grid}.auth-tabs button.active{background:var(--yellow);font-weight:900}.auth-form{gap:14px;display:grid}.password-field{grid-template-columns:minmax(0,1fr) 76px;gap:8px;display:grid}.password-field input{min-width:0}.password-toggle{padding:0 10px;font-weight:900}.auth-divider{color:var(--muted);align-items:center;gap:12px;font-size:13px;font-weight:800;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--line);flex:1;height:2px}.chatgpt-login-link{border:2px solid var(--line);min-height:48px;color:var(--ink);background:#fff;justify-content:center;align-items:center;font-weight:900;text-decoration:none;display:inline-flex}.admin-login-note{color:var(--muted);margin:0;font-size:13px;line-height:1.65}.practice-panel{border:2px solid var(--line);background:#fffaf0f0;border-radius:0;flex-direction:column;min-height:calc(100vh - 64px);padding:28px;display:flex;position:relative;overflow:visible;box-shadow:14px 14px #1717131a}.practice-panel>*{z-index:1;position:relative}.editor-panel{z-index:15;position:fixed;inset:0}.topbar,.form-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.topbar{border-bottom:3px solid var(--line);padding-bottom:22px}.topbar-side{justify-items:end;gap:8px;min-width:220px;display:grid}.account-pill{border:2px solid var(--line);color:var(--ink);background:#fff;border-radius:0;align-items:center;gap:8px;padding:7px 10px;font-size:13px;display:flex}.account-pill span{text-overflow:ellipsis;white-space:nowrap;max-width:180px;overflow:hidden}.account-pill a,.account-pill button{min-height:0;color:var(--accent-dark);background:0 0;border:0;padding:0;font-weight:800;text-decoration:none}.account-pill button:hover{transform:none}.sync-state{color:var(--muted);text-align:right;background:0 0;margin:0;font-size:13px}.kicker{color:var(--ink);letter-spacing:.16em;text-transform:uppercase;margin:0 0 10px;font-size:11px;font-weight:800}h1,h2,p{margin-top:0}h1{letter-spacing:0;margin-bottom:0;font-size:clamp(30px,5vw,56px);font-weight:950;line-height:1}h2{letter-spacing:0;margin-bottom:0;font-size:20px}.stats{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.stats span{border:1px solid var(--line);color:var(--ink);white-space:nowrap;background:#fff;border-radius:0;padding:7px 10px;font-size:13px}.filters{flex-wrap:wrap;gap:8px;margin:18px 0 12px;display:flex}.filter-button.active{background:var(--yellow);border-color:var(--accent);color:var(--ink);font-weight:800}.panel-actions{flex-wrap:wrap;gap:10px;margin-bottom:22px;display:flex}.compact-import{min-height:42px}.memory-card{border:2px solid var(--line);background:var(--panel);border-radius:0;flex-direction:column;flex:1;justify-content:center;min-height:430px;padding:clamp(24px,6vw,56px);display:flex;box-shadow:8px 8px #1717131a}.goal-panel,.home-panel,.portal-panel{border:2px solid var(--line);background:var(--panel);border-radius:0;flex:1;align-content:center;gap:18px;min-height:430px;padding:clamp(28px,6vw,66px);display:grid;position:relative;overflow:hidden}.home-panel:before,.portal-panel:before{content:"";background:var(--yellow);opacity:.72;border-radius:999px;width:clamp(86px,12vw,148px);height:clamp(86px,12vw,148px);position:absolute;top:46px;right:52px}.home-panel:after,.portal-panel:after{content:"";background:var(--rose);width:190px;height:18px;position:absolute;bottom:44px;right:46px}.home-panel>*,.portal-panel>*{z-index:1;position:relative}.home-panel .kicker,.portal-panel .kicker{width:fit-content;color:var(--ink);border-bottom:6px solid var(--yellow);background:0 0;padding:0 0 5px;display:inline-block}.goal-panel h2,.home-panel h2,.portal-panel h2{max-width:720px;font-size:clamp(42px,7vw,92px);font-weight:950;line-height:.98}.goal-panel p,.home-panel p,.portal-panel p{max-width:680px;color:var(--muted);font-size:18px;line-height:1.7}.portal-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:16px;display:grid}.portal-card{text-align:left;border:2px solid var(--line);background:#fffdf8;align-content:space-between;justify-items:start;min-height:250px;padding:30px;display:grid;box-shadow:8px 8px #1717131a}.portal-card span{color:var(--rose);letter-spacing:.14em;text-transform:uppercase;font-size:12px;font-weight:900}.portal-card strong{color:var(--ink);font-size:clamp(34px,5vw,64px);line-height:1.05;display:block}.portal-card em{color:var(--muted);font-style:normal;font-weight:900}.portal-card b{border:2px solid var(--line);background:var(--yellow);color:var(--ink);padding:10px 16px;display:inline-block;box-shadow:5px 5px #17171324}.portal-card-language{background:linear-gradient(90deg, var(--blue) 0 14px, transparent 14px), #fffdf8}.portal-card-art{background:linear-gradient(90deg, var(--rose) 0 14px, transparent 14px), #fffdf8}.language-grid{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:8px 0 18px;display:grid}.language-grid button{background:#fff;justify-content:space-between;align-items:center;gap:8px;min-height:48px;font-weight:900;display:flex}.language-grid button.active{background:var(--yellow)}.language-grid span{color:var(--muted);font-size:12px}.portal-back{justify-self:start}.portal-intro,.language-hub-head{gap:12px;display:grid}.portal-intro h2,.language-hub-head h2{max-width:880px}.portal-tags{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.portal-tags span{border:2px solid var(--line);color:var(--ink);background:#fff;padding:7px 11px;font-size:13px;font-weight:900;line-height:1}.language-page-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;margin-top:12px;display:grid}.language-page-grid-focus{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.language-page-grid-compact{grid-template-columns:repeat(auto-fill,minmax(145px,1fr));margin-top:14px}.language-page-card{text-align:left;background:#fff;align-content:space-between;justify-items:start;min-height:142px;padding:18px;display:grid;box-shadow:6px 6px #17171314}.language-page-card span{color:var(--rose);letter-spacing:.14em;font-size:11px;font-weight:900}.language-page-card strong{color:var(--ink);font-size:26px;line-height:1.1}.language-page-card em{color:var(--muted);font-size:13px;font-style:normal;font-weight:800}.more-languages{border:2px solid var(--line);background:#fffdf8d1;padding:16px}.more-languages summary{cursor:pointer;color:var(--ink);font-weight:950}.language-page-grid-compact .language-page-card{min-height:112px;box-shadow:none;padding:14px}.language-page-grid-compact .language-page-card strong{font-size:21px}.dictionary-helper{border:1px dashed var(--line);background:#fffaf2;gap:12px;padding:12px;display:grid}.inline-dictionary{gap:8px;margin-top:-6px;display:grid}.dictionary-candidates{gap:8px;display:grid}.inline-dictionary p{color:var(--muted);margin:0;font-size:13px;line-height:1.5}.inline-dictionary-card{text-align:left;border:2px solid var(--accent);background:#fff;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 12px;min-height:0;padding:12px;display:grid}.dictionary-candidate-panel{grid-column:1/-1}.inline-dictionary-card span{color:var(--rose);font-size:12px;font-weight:900}.inline-dictionary-card strong{color:var(--ink);overflow-wrap:anywhere;font-size:18px;line-height:1.4}.inline-dictionary-card em{color:var(--accent-dark);white-space:nowrap;grid-area:1/2/span 2;font-style:normal;font-weight:900}.dictionary-home{border:2px solid var(--line);background:#fffdf8;gap:14px;max-width:900px;padding:18px;display:grid;box-shadow:6px 6px #17171314}.dictionary-home h3{margin:0;font-size:26px;line-height:1.1}.dictionary-search-row{grid-template-columns:minmax(0,1fr) 150px 180px;gap:10px;display:grid}.dictionary-result{gap:10px;display:grid}.dictionary-result-wide{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.dictionary-result article{border:1px solid var(--line);background:#fff;gap:8px;padding:12px;display:grid}.dictionary-result article span{color:var(--rose);font-size:12px;font-weight:900}.dictionary-result article strong{color:var(--ink);overflow-wrap:anywhere;line-height:1.5}.dictionary-result article p{color:var(--muted);margin:0;line-height:1.6}.dictionary-result article button{justify-self:start}.dictionary-example-list{gap:10px;display:grid}.dictionary-example-item{border-top:1px solid #1717132e;gap:8px;padding-top:10px;display:grid}.dictionary-example-item:first-child{border-top:0;padding-top:0}.dictionary-links{flex-wrap:wrap;gap:8px;display:flex}.dictionary-links a{border:1px solid var(--line);min-height:36px;color:var(--accent-dark);background:#fff;align-items:center;padding:0 12px;font-weight:900;text-decoration:none;display:inline-flex}.language-tool-switch{border:2px solid var(--line);background:#fff;grid-template-columns:repeat(2,minmax(120px,1fr));justify-self:start;gap:0;margin-top:6px;display:inline-grid}.language-tool-switch button{border:0;border-right:2px solid var(--line);background:#fff;min-height:48px;padding:0 18px;font-weight:900}.language-tool-switch button:last-child{border-right:0}.language-tool-switch button.active{background:var(--yellow);color:var(--ink)}.lyrics-home{gap:18px;display:grid}.lyrics-editor,.lyrics-reader,.song-list,.lyric-lookup-card{border:2px solid var(--line);background:#fffdf8;box-shadow:6px 6px #17171314}.lyrics-editor{gap:14px;padding:18px;display:grid}.lyrics-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.song-layout{grid-template-columns:minmax(160px,220px) minmax(0,1fr) minmax(190px,240px);align-items:start;gap:14px;display:grid}.song-list{gap:8px;padding:14px;display:grid}.song-list>strong,.lyric-lookup-card>strong{color:var(--rose);font-size:13px;font-weight:900}.song-list button{text-align:left;border:1px solid var(--line);background:#fff;gap:4px;min-height:0;padding:11px;display:grid}.song-list button.active{background:#fff5c8;border-width:2px}.song-list span{color:var(--ink);overflow-wrap:anywhere;font-weight:900}.song-list em{color:var(--muted);font-size:12px;font-style:normal}.song-list p{color:var(--muted);margin:0;font-size:13px;line-height:1.6}.lyrics-reader{padding:18px}.lyrics-reader-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;padding-bottom:14px;display:flex}.lyrics-reader-head h3{margin:0;font-size:26px;line-height:1.2}.lyrics-reader-head span{color:var(--muted);font-weight:800}.lyric-lines{gap:10px;display:grid}.lyric-line{border-bottom:1px solid #17171324;grid-template-columns:34px minmax(0,1fr);gap:6px 12px;padding:10px 0;display:grid}.lyric-line-number{color:var(--rose);padding-top:5px;font-size:12px;font-weight:900}.lyric-text{color:var(--ink);flex-wrap:wrap;align-items:baseline;gap:5px;margin:0;font-size:21px;font-weight:850;line-height:1.65;display:flex}.lyric-text button{min-height:0;color:var(--ink);font:inherit;background:0 0;border:0;border-bottom:2px solid #0000;padding:0 1px}.lyric-text button:hover,.lyric-text button:focus-visible{border-bottom-color:var(--accent);color:var(--accent-dark)}.lyric-translation{color:var(--muted);grid-column:2;margin:0;font-size:15px;line-height:1.7}.lyrics-empty{text-align:center;place-content:center;gap:8px;min-height:220px;display:grid}.lyrics-empty strong{font-size:24px}.lyrics-empty span{color:var(--muted)}.lyric-lookup-card{gap:10px;padding:14px;display:grid;position:sticky;top:18px}.lyric-lookup-card p{color:var(--ink);overflow-wrap:anywhere;margin:0;font-size:17px;line-height:1.65}.lyric-lookup-actions{flex-wrap:wrap;gap:8px;display:flex}.exam-home{gap:18px;display:grid}.exam-toolbar,.exam-reader,.exam-notebook{border:2px solid var(--line);background:#fffdf8;box-shadow:6px 6px #17171314}.exam-toolbar{justify-content:space-between;align-items:end;gap:18px;padding:18px;display:flex}.exam-toolbar h3{margin:0;font-size:28px;line-height:1.15}.exam-selectors{grid-template-columns:130px 130px;gap:10px;display:grid}.exam-layout{grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);align-items:start;gap:18px;display:grid}.exam-reader,.exam-notebook{padding:16px}.exam-reader-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding-bottom:12px;display:flex}.exam-reader-head strong{color:var(--ink);font-size:18px}.exam-reader-head span{color:var(--muted);font-size:13px;font-weight:900}.exam-sentence-list,.exam-note-list{gap:10px;display:grid}.exam-sentence,.exam-note{border:1px solid var(--line);background:#fff;padding:12px}.exam-sentence{grid-template-columns:34px minmax(0,1fr);gap:8px 12px;display:grid}.exam-sentence>span,.exam-note>span{color:var(--rose);font-size:12px;font-weight:900}.exam-sentence p,.exam-note p{color:var(--ink);overflow-wrap:anywhere;margin:0;line-height:1.7}.exam-sentence div{flex-wrap:wrap;grid-column:2;gap:8px;display:flex}.exam-note{gap:10px;display:grid}.exam-note-actions{flex-wrap:wrap;gap:8px;display:flex}.mode-grid{grid-template-columns:minmax(0,1.1fr) minmax(260px,.9fr);align-items:stretch;gap:22px;margin-top:18px;display:grid}.mode-card{border:2px solid var(--line);background:#fffaf0fa;border-radius:0;align-content:space-between;gap:18px;padding:28px 24px 24px;display:grid;position:relative;box-shadow:8px 8px #17171314}.mode-card:before{content:"";background:var(--rose);border:2px solid var(--line);width:70px;height:14px;position:absolute;top:-2px;left:-2px}.mode-card:nth-child(2):before{background:var(--blue)}.mode-card strong{color:var(--ink);margin:12px 0 10px;font-size:24px;line-height:1.2;display:block}.mode-card span{color:var(--muted);line-height:1.6;display:block}.wide-button{width:100%;min-height:56px}.completion-actions{flex-wrap:wrap;gap:10px;display:flex}.completion-actions button{flex:160px;min-height:52px}.home-button{border-color:var(--accent);color:var(--accent-dark);font-weight:800}.goal-controls{grid-template-columns:minmax(150px,210px) minmax(180px,1fr);align-items:end;gap:14px;display:grid}.goal-controls label{min-width:0}.goal-controls input{appearance:textfield;background:#fff;min-height:64px;font-size:30px;font-weight:900;line-height:1}.goal-controls input::placeholder{color:#17171352;opacity:1}.goal-controls input::-webkit-outer-spin-button{appearance:none;margin:0}.goal-controls input::-webkit-inner-spin-button{appearance:none;margin:0}.goal-controls button{min-height:64px}.goal-note{margin:0;font-size:14px!important}.round-refresh-button{min-height:38px;color:var(--accent-dark);background:#fff;justify-self:start;padding:0 14px;font-size:14px;font-weight:900}.session-progress{color:var(--ink);justify-content:space-between;gap:10px;margin-bottom:28px;font-weight:800;display:flex}.session-progress span{border:2px solid var(--line);background:#fff;padding:7px 10px}.floating-next{z-index:8;border:2px solid var(--line);background:var(--yellow);width:178px;height:70px;color:var(--ink);border-radius:0;justify-content:center;align-items:center;gap:10px;font-weight:900;display:flex;position:fixed;top:50%;right:max(28px,50vw - 538px);transform:translateY(-50%);box-shadow:8px 8px #1717132e}.floating-next span{font-size:30px;line-height:1}.panel-backdrop{background:#20201d47;position:absolute;inset:0}.side-panel{border:2px solid var(--line);width:min(520px,100vw - 32px);box-shadow:var(--shadow);background:#fffdfafa;border-radius:0;padding:20px;position:absolute;top:24px;bottom:24px;right:24px;overflow:auto}.side-panel-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:16px;padding-bottom:14px;display:flex}.front-cues{flex-wrap:wrap;gap:8px;margin-bottom:26px;display:flex}.front-cues span{border:2px solid var(--line);color:var(--ink);letter-spacing:0;white-space:nowrap;background:#fff;border-radius:0;padding:7px 11px;font-size:13px;font-weight:800;line-height:1.2}#frontName{letter-spacing:0;overflow-wrap:anywhere;text-wrap:balance;margin-bottom:24px;font-size:clamp(42px,9vw,88px);line-height:1.08}#frontHint{color:var(--muted);max-width:680px;font-size:18px;line-height:1.7}.answer-panel{border-top:1px solid var(--line);margin-top:32px;padding-top:24px}.language-answer{gap:24px;display:grid}.language-meaning{gap:10px;max-width:760px;display:grid}.language-meaning .kicker{color:var(--rose);margin-bottom:0}.language-meaning strong{color:var(--ink);overflow-wrap:anywhere;font-size:clamp(28px,4vw,48px);font-weight:900;line-height:1.35}.speak-button{background:var(--yellow);min-height:52px;color:var(--ink);border:2px solid var(--ink);box-shadow:6px 6px 0 var(--line);justify-self:start;margin-top:14px;padding:0 22px;font-size:18px;font-weight:900}dl{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:0;display:grid}dt{color:var(--rose);margin-bottom:7px;font-size:13px;font-weight:800}dd{overflow-wrap:anywhere;margin:0;font-size:17px;line-height:1.5}.answer-note{color:var(--muted);white-space:pre-wrap;margin:20px 0 0;font-size:17px;line-height:1.75}.answer-works{margin-top:20px}.answer-works h3{color:var(--rose);margin:0 0 10px;font-size:13px;font-weight:800}.answer-work{border:1px solid var(--line);background:linear-gradient(90deg, var(--yellow) 0 5px, transparent 5px), #fff;border-radius:8px;grid-template-columns:minmax(0,1fr) minmax(140px,260px);align-items:start;gap:18px;padding:16px 18px 16px 20px;display:grid}.answer-work-copy{align-self:start;min-width:0}.answer-work+.answer-work{margin-top:10px}.answer-work strong{overflow-wrap:anywhere;font-size:17px;line-height:1.5;display:block}.answer-work p{color:var(--muted);white-space:pre-wrap;margin:7px 0 0;line-height:1.65}.answer-work-images{grid-template-columns:1fr;align-self:start;gap:10px;width:100%;display:grid}.answer-work-image{border:1px solid var(--line);background:#fff;margin:0}.answer-work-image img{object-fit:contain;background:#eee8dc;width:100%;height:130px;display:block}.answer-speak-button{min-height:38px;padding:0 12px;font-size:13px;box-shadow:4px 4px #17171324}.empty-inline{color:var(--muted);margin:0}.answer-images{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-top:22px;display:grid}.answer-image{border:1px solid var(--line);background:#fff;border-radius:8px;margin:0;overflow:hidden}.image-open-button{background:#f4efe6;border:0;border-radius:0;width:100%;height:auto;min-height:0;padding:0;display:block}.image-open-button:hover{transform:none}.answer-image img{object-fit:contain;background:#eee8dc;width:100%;max-height:360px;display:block}.answer-image figcaption{color:var(--muted);overflow-wrap:anywhere;padding:8px 10px;font-size:12px;line-height:1.4}.actions,.data-tools{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.admin-panel{gap:16px;display:grid}.admin-box{border:2px solid var(--line);background:#fff;gap:12px;padding:14px;display:grid}.admin-box h3{margin:0}.admin-user-list{gap:10px;display:grid}.admin-user{border:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;display:grid}.admin-user-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.admin-user-actions button{min-height:34px;padding:0 10px;font-size:13px}.admin-user strong,.admin-user span{overflow-wrap:anywhere;display:block}.admin-user span{color:var(--muted);margin-top:3px;font-size:13px}.primary-button{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:800}.primary-button:hover{background:var(--accent-dark);border-color:var(--accent-dark)}.ghost-button{background:0 0}.card-form{gap:14px;display:grid}.works-editor,.work-editor-item{gap:12px;display:grid}.works-editor{border:1px dashed var(--line);background:#fffaf2;border-radius:8px;padding:12px}.section-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.section-head strong{color:var(--ink);margin-bottom:4px;display:block}.section-head span{color:var(--muted);font-size:13px;line-height:1.5;display:block}.dictionary-action-row{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.dictionary-action-row button{white-space:nowrap}.work-editor-item{border:1px solid var(--line);background:#fff;border-radius:8px;padding:12px}.remove-work{justify-self:start}.save-message{color:var(--muted);margin:0;font-size:13px;line-height:1.55}.field-row{grid-template-columns:minmax(0,1fr) 54px;gap:8px;display:grid}.field-row-art{grid-template-columns:minmax(0,1fr) 54px 96px}.field-row-single,.language-term-row{grid-template-columns:minmax(0,1fr) 96px}.speak-mini-button{background:var(--yellow);min-width:0;min-height:46px;color:var(--ink);border-color:var(--ink);padding:0 14px;font-size:15px;font-weight:900}.book-button{padding:0;font-weight:900}.auto-image-button{background:var(--yellow);min-width:0;min-height:46px;color:var(--ink);border-color:var(--ink);padding:0 10px;font-size:14px;font-weight:900}.artwork-image-candidate{border:1px dashed var(--line);background:#fffaf0;gap:10px;padding:12px;display:grid}.artwork-image-candidate p{color:var(--muted);margin:0;font-size:13px;font-weight:800;line-height:1.55}.artwork-image-candidate-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;display:grid}.artwork-image-candidate figure{border:1px solid var(--line);background:#fff;grid-template-rows:180px minmax(0,1fr) auto;align-items:start;gap:12px;margin:0;padding:10px;display:grid}.artwork-image-candidate img{object-fit:contain;border:1px solid var(--line);background:#fff;width:100%;height:180px}.artwork-image-candidate figcaption{color:var(--muted);gap:7px;font-size:13px;line-height:1.45;display:grid}.artwork-image-candidate figcaption strong{color:var(--ink);overflow-wrap:anywhere;font-size:16px;line-height:1.35}.artwork-image-actions{flex-wrap:wrap;gap:8px;display:flex}.artwork-dismiss-button{justify-self:start}.work-image-drop-zone{color:var(--muted);background:#fff;border:2px dashed #17171347;gap:8px;padding:12px;display:grid}.work-image-drop-zone strong{color:var(--ink);font-size:14px}.work-image-drop-zone span{font-size:13px;line-height:1.45}.work-image-drop-zone-active{color:var(--ink);background:#fff2b8;border-style:solid}.work-image-preview-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;display:grid}.work-image-preview{border:1px solid var(--line);background:#fff;margin:0;position:relative}.work-image-preview img{object-fit:contain;background:#eee8dc;width:100%;height:110px;display:block}.work-image-preview figcaption{color:var(--muted);overflow-wrap:anywhere;padding:6px 7px 8px;font-size:11px;line-height:1.3}.work-image-preview button{background:#fffdfaeb;border-color:#20201d2e;min-height:26px;padding:0 7px;font-size:12px;position:absolute;top:5px;right:5px}label{color:var(--muted);gap:7px;font-size:14px;font-weight:800;display:grid}input,textarea,select{border:2px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:0;outline:none;padding:12px 13px}textarea{resize:vertical}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #2f6f6824}.import-button,.image-upload-button{justify-content:center;align-items:center;display:inline-flex;position:relative}.import-button input,.image-upload-button input{opacity:0;cursor:pointer;position:absolute;inset:0}.image-picker{border:1px dashed var(--line);background:#fffaf2;border-radius:8px;gap:10px;padding:12px;display:grid}.image-picker-dragging{background:#fff2b8;border-style:solid;box-shadow:6px 6px #17171329}.image-picker strong{color:var(--ink);margin-bottom:4px;display:block}.image-picker span{color:var(--muted);font-size:13px;line-height:1.5}.image-upload-button{justify-self:start;font-weight:800}.image-drop-zone{border:2px dashed var(--line);min-height:86px;color:var(--muted);text-align:center;background:#fff;place-items:center;padding:14px;font-weight:900;line-height:1.5;display:grid}.image-picker-dragging .image-drop-zone{background:var(--yellow);color:var(--ink);border-style:solid}.image-preview-grid{grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:10px;display:grid}.image-preview{border:1px solid var(--line);background:#fff;border-radius:8px;margin:0;position:relative;overflow:hidden}.image-preview img{object-fit:contain;background:#eee8dc;width:100%;max-height:170px;display:block}.image-preview figcaption{color:var(--muted);overflow-wrap:anywhere;padding:7px 8px 9px;font-size:12px;line-height:1.35}.image-preview button{background:#fffdfaeb;border-color:#20201d2e;min-height:28px;padding:0 8px;font-size:12px;position:absolute;top:6px;right:6px}.image-empty{color:var(--muted);border:1px dashed var(--line);background:#fff;border-radius:8px;padding:12px;font-size:13px}.lightbox{z-index:20;background:#14120ed6;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.lightbox-close{background:#fffdfaf0;border-color:#ffffff47;font-weight:800;position:fixed;top:18px;right:18px}.lightbox-figure{gap:10px;width:min(1120px,100%);max-height:calc(100vh - 92px);margin:0;display:grid}.lightbox-figure img{object-fit:contain;background:#fff;border-radius:8px;width:100%;max-height:calc(100vh - 138px);display:block}.lightbox-figure figcaption{color:#fffdfa;text-align:center;overflow-wrap:anywhere;font-size:14px}.card-list-section{margin-top:18px}.card-list-section h2{margin-bottom:12px}.card-list{gap:12px;max-height:none;padding-right:4px;display:grid;overflow:auto}.export-tools{flex-wrap:wrap;gap:8px;margin:0 0 14px;display:flex}.export-tools button{flex:120px}.list-item{border:1px solid var(--line);background:#fff;border-radius:8px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px;display:grid}.select-card{color:var(--muted);align-items:center;gap:6px;font-size:12px;font-weight:800;display:flex}.select-card input{width:18px;height:18px;accent-color:var(--accent);padding:0}.list-item strong{overflow-wrap:anywhere;display:block}.list-item span{color:var(--muted);margin-top:3px;font-size:13px;display:block}.list-actions{gap:6px;display:flex}.list-actions button{min-height:34px;padding:0 10px;font-size:13px}.empty-state{color:var(--muted);border:1px dashed var(--line);border-radius:8px;padding:18px;line-height:1.7}@media (width<=1100px){.app-shell{width:min(100% - 24px,880px);padding:18px 0 30px}.practice-panel{padding:24px}.home-panel,.portal-panel,.goal-panel{align-content:start;padding:clamp(26px,5vw,48px)}.goal-panel h2,.home-panel h2,.portal-panel h2{max-width:620px;font-size:clamp(42px,6vw,70px)}.home-panel p,.portal-panel p,.goal-panel p{max-width:620px}.mode-grid{grid-template-columns:1fr;gap:18px}.song-layout,.exam-layout{grid-template-columns:1fr}.exam-toolbar{flex-direction:column;align-items:stretch}.lyric-lookup-card{position:static}.mode-card{min-width:0}.goal-controls{grid-template-columns:minmax(0,220px) minmax(180px,260px)}}@media (width<=900px){.app-shell{grid-template-columns:1fr;width:min(100% - 20px,680px);padding:10px 0 28px}.practice-panel{min-height:auto}.topbar,.form-head{flex-direction:column}.topbar{padding-bottom:16px}.topbar-side{justify-items:start;min-width:0}.sync-state{text-align:left}.stats{justify-content:flex-start}dl{grid-template-columns:1fr}}@media (width<=520px){body{background-size:28px 28px}.app-shell{gap:10px;width:100%;padding:0}.practice-panel{box-shadow:none;border-left:0;border-right:0;border-radius:0;min-height:100svh;padding:16px}h1{font-size:34px;line-height:1.05}.topbar{gap:12px}.topbar-side{width:100%}.account-pill{justify-content:space-between;width:100%}.account-pill span{max-width:calc(100vw - 120px)}.stats{width:100%}.stats span{text-align:center;flex:1}.filters{margin:20px 0 12px}.filters button{flex:1;padding:0 10px}.panel-actions button,.panel-actions .import-button{flex:130px}.memory-card{min-height:54svh;padding:22px}.goal-panel,.home-panel,.portal-panel{min-height:58svh;padding:22px}.mode-grid,.portal-grid{grid-template-columns:1fr}.home-panel:before,.portal-panel:before{width:86px;height:86px;top:26px;right:18px}.home-panel:after,.portal-panel:after{width:92px;height:12px;bottom:24px;right:22px}.goal-controls{grid-template-columns:1fr}.portal-card{min-height:180px;padding:22px}.language-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dictionary-search-row{grid-template-columns:1fr}.language-tool-switch{width:100%}.lyrics-form-grid,.exam-selectors{grid-template-columns:1fr}.exam-sentence{grid-template-columns:26px minmax(0,1fr)}.lyrics-editor,.lyrics-reader,.song-list,.lyric-lookup-card,.exam-toolbar,.exam-reader,.exam-notebook{box-shadow:4px 4px #17171314}.lyrics-reader-head{flex-direction:column}.lyric-line{grid-template-columns:24px minmax(0,1fr)}.lyric-text{font-size:18px}.field-row-art{grid-template-columns:minmax(0,1fr) 54px}.field-row-art .auto-image-button{grid-column:1/-1}#frontName{font-size:clamp(42px,17vw,74px)}#frontHint{font-size:16px}.answer-images,.answer-work{grid-template-columns:1fr}.answer-speak-button{justify-self:start}.answer-image img{max-height:52svh}.actions button,.data-tools button,.import-button,.image-upload-button{flex:130px}.side-panel{border-radius:14px 14px 0 0;width:100%;max-height:92svh;padding:16px;inset:8svh 0 0}.floating-next{width:132px;height:62px;top:auto;bottom:18px;right:16px;transform:none}.actions{padding-right:150px}.section-head{flex-direction:column}.section-head button{width:100%}.list-item{grid-template-columns:1fr}.list-actions{flex-wrap:wrap}.list-actions button{flex:1}}
