.study{flex-direction:column;min-height:100%;display:flex}.study__top{align-items:center;gap:var(--sp-5);margin-bottom:var(--sp-6);display:flex}.study__meter{align-items:center;gap:var(--sp-3);flex:1;display:flex}.study__count{font-size:var(--fs-sm);font-variant-numeric:tabular-nums;color:var(--c-text-muted);white-space:nowrap;min-width:52px}.study__bar{flex:1}.study__modes{border-radius:var(--r-md);background:var(--c-bg-sunken);border:1px solid var(--c-border);gap:2px;padding:3px;display:flex}.seg{padding:5px var(--sp-3);border-radius:var(--r-sm);font-size:var(--fs-xs);color:var(--c-text-secondary);transition:background var(--t-fast), color var(--t-fast);background:0 0;border:none;font-weight:600}.seg:hover{color:var(--c-text)}.seg--on{background:var(--c-bg-elevated);color:var(--c-primary-600);box-shadow:var(--sh-sm)}.study__stage{justify-content:center;align-items:center;gap:var(--sp-4);padding:var(--sp-4) 0;flex-direction:column;flex:1;display:flex}.study__tags{gap:var(--sp-2);flex-wrap:wrap;justify-content:center;min-height:22px;display:flex}.flipcard{justify-content:center;align-items:center;gap:var(--sp-3);width:100%;max-width:560px;min-height:280px;padding:var(--sp-8) var(--sp-6);background:var(--c-bg-elevated);border:1px solid var(--c-border);border-radius:var(--r-xl);box-shadow:var(--sh-md);cursor:pointer;transition:border-color var(--t-base), box-shadow var(--t-base), transform var(--t-fast);-webkit-user-select:none;user-select:none;flex-direction:column;display:flex}.flipcard:hover{border-color:var(--c-primary-200);box-shadow:var(--sh-lg)}.flipcard:active{transform:scale(.995)}.flipcard--open{justify-content:flex-start}.flipcard__word{align-items:center;gap:var(--sp-3);font-size:var(--fs-3xl);letter-spacing:-.02em;font-weight:700;font-family:var(--font-serif);text-align:center;word-break:break-word;display:flex}.speak{border:1px solid var(--c-border);border-radius:var(--r-full);background:var(--c-bg-sunken);width:32px;height:32px;transition:background var(--t-fast), transform var(--t-fast);flex:none;place-items:center;font-size:14px;display:grid}.speak:hover{background:var(--c-primary-50);transform:scale(1.06)}.flipcard__phonetic{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--c-text-muted)}.flipcard__hint{margin-top:var(--sp-4);font-size:var(--fs-sm);color:var(--c-text-muted)}.flipcard__back{gap:var(--sp-4);width:100%;margin-top:var(--sp-2);flex-direction:column;animation:.18s fadein;display:flex}.flipcard__def{font-size:var(--fs-lg);color:var(--c-text);white-space:pre-wrap;text-align:left;padding:var(--sp-4);background:var(--c-bg-sunken);border-radius:var(--r-md);border-left:3px solid var(--c-primary-500);line-height:1.75}.flipcard__phrases{gap:var(--sp-2);flex-direction:column;display:flex}.phrase{padding-left:var(--sp-3);border-left:2px solid var(--c-border);flex-direction:column;gap:1px;display:flex}.phrase__en{font-size:var(--fs-sm);color:var(--c-text);font-weight:600}.phrase__cn{font-size:var(--fs-xs);color:var(--c-text-muted)}.flipcard__due{font-size:var(--fs-xs);color:var(--c-text-muted);text-align:center}.quiz{gap:var(--sp-4);flex-direction:column;width:100%;max-width:620px;display:flex}.quiz__prompt{text-align:center;font-size:var(--fs-sm);color:var(--c-text-muted)}.quiz__def{margin-top:var(--sp-2);font-size:var(--fs-lg);color:var(--c-text);font-weight:600;line-height:1.6}.quiz__options{gap:var(--sp-2);flex-direction:column;display:flex}.quizopt{padding:var(--sp-3) var(--sp-4);border:1px solid var(--c-border);border-radius:var(--r-md);background:var(--c-bg-elevated);text-align:left;transition:border-color var(--t-fast), background var(--t-fast), transform var(--t-fast);flex-direction:column;align-items:flex-start;gap:2px;display:flex}.quizopt:hover:not(:disabled){border-color:var(--c-primary-400);background:var(--c-primary-50);transform:translate(2px)}.quizopt__w{font-size:var(--fs-lg);font-weight:600;font-family:var(--font-serif)}.quizopt__cn{font-size:var(--fs-xs);color:var(--c-text-muted);line-height:1.5}.quizopt--correct{border-color:var(--c-success);background:var(--c-success-bg)}.quizopt--wrong{border-color:var(--c-danger);background:var(--c-danger-bg)}.quizopt--dim{opacity:.5}.quiz__next{justify-content:center;display:flex}.quiz__result{font-size:var(--fs-sm);font-weight:650;animation:.18s fadein}.grader{gap:var(--sp-3);max-width:620px;margin:var(--sp-4) auto 0;grid-template-columns:repeat(3,1fr);width:100%;display:grid}.gradebtn{padding:var(--sp-3) var(--sp-2);border-radius:var(--r-md);border:1px solid var(--c-border-strong);background:var(--c-bg-elevated);transition:border-color var(--t-fast), background var(--t-fast), transform var(--t-fast);flex-direction:column;align-items:center;gap:2px;display:flex}.gradebtn:hover{transform:translateY(-2px)}.gradebtn:active{transform:translateY(0)}.gradebtn__key{color:var(--c-text-muted);font-variant-numeric:tabular-nums;font-size:10px;font-weight:700}.gradebtn__label{font-size:var(--fs-sm);font-weight:650}.gradebtn__sub{color:var(--c-text-muted);font-size:10px}.gradebtn--unknown:hover{border-color:var(--c-danger);background:var(--c-danger-bg)}.gradebtn--fuzzy:hover{border-color:var(--c-warning);background:var(--c-warning-bg)}.gradebtn--known:hover{border-color:var(--c-success);background:var(--c-success-bg)}.study__foot{padding-top:var(--sp-5);gap:var(--sp-2);flex-direction:column;margin-top:auto;display:flex}.study__footrow{font-size:var(--fs-xs);color:var(--c-text-muted);justify-content:space-between;display:flex}.study__footrow strong{color:var(--c-text-secondary);font-variant-numeric:tabular-nums}@media (max-width:640px){.flipcard{min-height:220px;padding:var(--sp-6) var(--sp-4)}.flipcard__word{font-size:var(--fs-2xl)}.study__top{align-items:stretch;gap:var(--sp-3);flex-direction:column}.grader{grid-template-columns:1fr}}.exam{flex-direction:column;display:flex}.exam__papers{gap:var(--sp-4);flex-direction:column;display:flex}.papercard{gap:var(--sp-3);flex-direction:column;display:flex}.papercard__head{justify-content:space-between;align-items:flex-start;gap:var(--sp-3);display:flex}.papercard__title{font-size:var(--fs-lg);letter-spacing:-.01em;margin:0;font-weight:650;line-height:1.45}.papercard__meta{gap:var(--sp-2) var(--sp-4);font-size:var(--fs-xs);color:var(--c-text-secondary);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.papercard__source{font-size:var(--fs-xs);color:var(--c-text-muted);padding-left:var(--sp-3);border-left:2px solid var(--c-border);margin:0;line-height:1.65}.papercard__foot{justify-content:space-between;align-items:center;gap:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--c-border);display:flex}.papercard__hist{font-size:var(--fs-xs);color:var(--c-text-muted)}.exam__top{align-items:center;gap:var(--sp-5);margin-bottom:var(--sp-4);display:flex}.exam__meter{align-items:center;gap:var(--sp-3);flex:1;min-width:0;display:flex}.exam__count{font-size:var(--fs-sm);color:var(--c-text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.exam__bar{flex:1;min-width:60px}.exam__answered{font-size:var(--fs-xs);color:var(--c-text-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.exam__meta{align-items:center;gap:var(--sp-2);display:flex}.exam__timer{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--c-text-secondary);font-variant-numeric:tabular-nums;padding:4px var(--sp-2);border-radius:var(--r-sm);background:var(--c-bg-sunken);white-space:nowrap}.qnavig{gap:var(--sp-1);margin-bottom:var(--sp-4);flex-wrap:wrap;display:flex}.qnavig__item{border-radius:var(--r-sm);border:1px solid var(--c-border);background:var(--c-bg-elevated);min-width:32px;height:30px;color:var(--c-text-secondary);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;transition:background var(--t-fast), border-color var(--t-fast), color var(--t-fast);padding:0 6px;font-weight:600}.qnavig__item:hover{border-color:var(--c-primary-400);color:var(--c-text)}.qnavig__item--on{border-color:var(--c-primary-600);background:var(--c-primary-50);color:var(--c-primary-600)}.qnavig__item--ok{border-color:color-mix(in srgb, var(--c-success) 45%, transparent);background:var(--c-success-bg);color:var(--c-success)}.qnavig__item--bad{border-color:color-mix(in srgb, var(--c-danger) 45%, transparent);background:var(--c-danger-bg);color:var(--c-danger)}.qnavig__item--neutral{border-color:color-mix(in srgb, var(--c-info) 45%, transparent);background:color-mix(in srgb, var(--c-info) 10%, transparent);color:var(--c-info)}.qcard{gap:var(--sp-3);flex-direction:column;display:flex}.qcard__head{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.qcard__passage{font-size:var(--fs-xs);color:var(--c-text-muted);padding-left:var(--sp-2);border-left:2px solid var(--c-border)}.qcard__hint{font-size:var(--fs-xs);color:var(--c-warning);background:var(--c-warning-bg);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);margin:0;line-height:1.6}.qcard__stem{font-size:var(--fs-lg);letter-spacing:-.01em;margin:0;font-weight:600;line-height:1.6}.qcard__note{font-size:var(--fs-xs);color:var(--c-text-muted);margin:0}.opts{gap:var(--sp-2);flex-direction:column;display:flex}.opt{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border:1px solid var(--c-border);border-radius:var(--r-md);background:var(--c-bg-elevated);text-align:left;transition:border-color var(--t-fast), background var(--t-fast), transform var(--t-fast);display:flex}.opt:hover:not(:disabled){border-color:var(--c-primary-400);background:var(--c-primary-50);transform:translate(2px)}.opt:disabled{cursor:default}.opt__key{border-radius:var(--r-full);background:var(--c-bg-sunken);width:24px;height:24px;color:var(--c-text-secondary);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;flex:0 0 24px;place-items:center;font-weight:700;display:grid}.opt__text{font-size:var(--fs-base);flex:1;padding-top:1px;line-height:1.55}.opt--correct{border-color:var(--c-success);background:var(--c-success-bg)}.opt--correct .opt__key{background:var(--c-success);color:#fff}.opt--wrong{border-color:var(--c-danger);background:var(--c-danger-bg)}.opt--wrong .opt__key{background:var(--c-danger);color:#fff}.opt--dim{opacity:.55}.exam__textarea{min-height:160px}.exam__submitrow{justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.exam__submitnote{font-size:var(--fs-xs);color:var(--c-text-muted)}.exam__feedback{gap:var(--sp-3);margin-top:var(--sp-2);padding-top:var(--sp-4);border-top:1px dashed var(--c-border);flex-direction:column;animation:.18s fadein;display:flex}.exam__verdict{font-size:var(--fs-sm);font-weight:700}.exam__verdict--ok{color:var(--c-success)}.exam__verdict--bad{color:var(--c-danger)}.exam__verdict--neutral{color:var(--c-info)}.exam__answer{align-items:baseline;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--r-md);background:var(--c-bg-sunken);display:flex}.exam__answerkey{font-size:var(--fs-xs);color:var(--c-text-muted);flex:none;font-weight:650}.exam__answertext{font-size:var(--fs-sm);color:var(--c-text);white-space:pre-wrap;word-break:break-word;line-height:1.7}.exam__explain{padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);border-left:3px solid var(--c-primary-500);background:var(--c-bg-sunken);font-size:var(--fs-sm);color:var(--c-text-secondary);white-space:pre-wrap;margin:0;line-height:1.85}.exam__transcript{border:1px solid var(--c-border);border-radius:var(--r-md);overflow:hidden}.exam__transcript>summary{cursor:pointer;padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);color:var(--c-primary-600);background:var(--c-bg-sunken);font-weight:600;list-style:none}.exam__transcript>summary::-webkit-details-marker{display:none}.exam__transcript>summary:before{content:"▸ ";font-size:.9em}.exam__transcript[open]>summary:before{content:"▾ "}.exam__transcriptbody{padding:var(--sp-3);font-size:var(--fs-sm);color:var(--c-text-secondary);white-space:pre-wrap;max-height:320px;margin:0;line-height:1.85;overflow-y:auto}.exam__nav{justify-content:space-between;align-items:center;gap:var(--sp-3);margin-top:var(--sp-4);display:flex}.exam__navhint{font-size:var(--fs-xs);color:var(--c-text-muted)}.exam__score{gap:var(--sp-4);flex-direction:column;display:flex}.exam__scorehead{align-items:center;gap:var(--sp-4);display:flex}.exam__scorevalue{font-size:var(--fs-3xl);letter-spacing:-.03em;font-variant-numeric:tabular-nums;background:linear-gradient(135deg, var(--c-primary-600), var(--c-accent-500));color:#0000;-webkit-background-clip:text;background-clip:text;font-weight:700;line-height:1}.exam__scoremeta{flex-direction:column;gap:2px;display:flex}.exam__scorelabel{font-size:var(--fs-sm);color:var(--c-text);font-weight:650}.exam__scorenote{font-size:var(--fs-xs);color:var(--c-text-muted);font-variant-numeric:tabular-nums}.exam__stats{margin-top:var(--sp-4)}.exam__none{font-size:var(--fs-sm);color:var(--c-text-muted);margin:0}.exam__chips{gap:var(--sp-2);flex-wrap:wrap;display:flex}.exam__chip{padding:3px var(--sp-2);border-radius:var(--r-full);background:var(--c-bg-sunken);border:1px solid var(--c-border);font-size:var(--fs-xs);color:var(--c-text-secondary);font-variant-numeric:tabular-nums}.wronglist{gap:var(--sp-2);flex-direction:column;display:flex}.wrongitem{border:1px solid var(--c-border);border-radius:var(--r-md);overflow:hidden}.wrongitem>summary{cursor:pointer;align-items:center;gap:var(--sp-2);padding:var(--sp-3);background:var(--c-bg-sunken);list-style:none;display:flex}.wrongitem>summary::-webkit-details-marker{display:none}.wrongitem__stem{font-size:var(--fs-sm);flex:1;min-width:0;font-weight:550;line-height:1.5}.wrongitem__tag{font-size:var(--fs-xs);color:var(--c-danger);white-space:nowrap;text-overflow:ellipsis;max-width:40%;overflow:hidden}.wrongitem__body{gap:var(--sp-2);padding:var(--sp-3);border-top:1px solid var(--c-border);flex-direction:column;animation:.16s fadein;display:flex}.wrongline{gap:var(--sp-3);font-size:var(--fs-sm);margin:0;line-height:1.6;display:flex}.wrongline__k{font-size:var(--fs-xs);color:var(--c-text-muted);flex:0 0 64px;padding-top:2px}.wrongline__v{word-break:break-word;flex:1}.wrongline__v--bad{color:var(--c-danger)}.wrongline__v--ok{color:var(--c-success);font-weight:600}.exam__actions{gap:var(--sp-3);margin-top:var(--sp-5);display:flex}@media (max-width:900px){.exam__top{align-items:stretch;gap:var(--sp-3);flex-direction:column}.exam__meta{justify-content:flex-end}}@media (max-width:640px){.papercard__foot{flex-direction:column;align-items:stretch}.qcard__stem{font-size:var(--fs-base)}.exam__navhint{display:none}.exam__nav{gap:var(--sp-2)}.exam__nav .btn{flex:1}.exam__scorehead{flex-wrap:wrap}.exam__actions{flex-direction:column}.wrongitem__tag{display:none}.wrongline{flex-direction:column;gap:2px}.wrongline__k{flex:none}}.import__head{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.import__note{margin:var(--sp-3) 0 0;font-size:var(--fs-sm);color:var(--c-text-secondary);line-height:1.7}.import__note strong{color:var(--c-warning)}.import__body{margin-top:var(--sp-4);gap:var(--sp-3);flex-direction:column;animation:.18s fadein;display:flex}.import__row{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.import__file{font-size:var(--fs-sm);color:var(--c-text-secondary)}.import__file::file-selector-button{margin-right:var(--sp-3);padding:7px var(--sp-4);border-radius:var(--r-md);border:1px solid var(--c-border-strong);background:var(--c-bg-elevated);color:var(--c-text);font-size:var(--fs-sm);cursor:pointer;transition:background var(--t-fast);font-weight:550}.import__file::file-selector-button:hover{background:var(--c-bg-sunken)}.import__or{font-size:var(--fs-xs);color:var(--c-text-muted)}.import__textarea{min-height:220px;font-family:var(--font-mono);font-size:var(--fs-xs);tab-size:2;line-height:1.65}.import__actions{gap:var(--sp-2);display:flex}.import__msg{font-size:var(--fs-sm);color:var(--c-success);margin:0;font-weight:550}.import__errors{padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--c-danger-bg);border:1px solid color-mix(in srgb, var(--c-danger) 30%, transparent)}.import__errorshead{justify-content:space-between;align-items:center;gap:var(--sp-3);font-size:var(--fs-sm);color:var(--c-danger);display:flex}.import__errors ul{margin:var(--sp-2) 0 0;padding-left:var(--sp-5);font-size:var(--fs-xs);color:var(--c-text-secondary)}.import__errors li{margin-bottom:3px;line-height:1.6}.import__help{font-size:var(--fs-xs);color:var(--c-text-secondary)}.import__help summary{cursor:pointer;color:var(--c-text-secondary);padding:var(--sp-2) 0;-webkit-user-select:none;user-select:none;font-weight:600}.import__help summary:hover{color:var(--c-primary-600)}.import__help ul{margin:var(--sp-2) 0 0;padding-left:var(--sp-5);line-height:1.9}.import__help code{font-size:.95em}.grade-tabs{border-radius:var(--r-md);background:var(--c-bg-sunken);border:1px solid var(--c-border);gap:2px;padding:3px;display:inline-flex}.grade-tab{border-radius:var(--r-sm);color:var(--c-text-secondary);font-size:var(--fs-sm);transition:background var(--t-fast), color var(--t-fast);background:0 0;border:none;padding:6px 16px;font-weight:600}.grade-tab:hover{color:var(--c-text)}.grade-tab--active{background:var(--c-bg-elevated);color:var(--c-primary-600);box-shadow:var(--sh-sm)}[data-theme=dark] .grade-tab--active{color:var(--c-primary-400)}.grade-editor-textarea{min-height:260px;font-family:var(--font-serif);font-size:var(--fs-base);line-height:1.85}.grade-toolbar{justify-content:space-between;align-items:center;gap:var(--sp-3);margin-top:var(--sp-3);flex-wrap:wrap;display:flex}.grade-counter{font-size:var(--fs-xs);color:var(--c-text-muted);font-variant-numeric:tabular-nums}.grade-counter--warn{color:var(--c-warning);font-weight:600}.grade-hero{align-items:center;gap:var(--sp-6);flex-wrap:wrap;display:flex}.grade-hero__score{font-variant-numeric:tabular-nums;align-items:baseline;gap:4px;display:flex}.grade-hero__num{letter-spacing:-.035em;font-size:52px;font-weight:750;line-height:1}.grade-hero__denom{font-size:var(--fs-lg);color:var(--c-text-muted);font-weight:600}.grade-hero__meta{gap:var(--sp-1);flex-direction:column;min-width:180px;display:flex}.grade-hero__range{font-size:var(--fs-sm);color:var(--c-text-secondary)}.grade-hero__scaled{font-size:var(--fs-xs);color:var(--c-text-muted)}.grade-hero--good .grade-hero__num{color:var(--c-success)}.grade-hero--mid .grade-hero__num{color:var(--c-accent-600)}.grade-hero--low .grade-hero__num{color:var(--c-danger)}.rubric-row{align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--c-border);grid-template-columns:108px 1fr 62px;display:grid}.rubric-row:last-child{border-bottom:none;padding-bottom:0}.rubric-row__name{font-size:var(--fs-sm);font-weight:600}.rubric-row__score{text-align:right;font-size:var(--fs-sm);font-variant-numeric:tabular-nums;font-weight:650}.rubric-row__denom{color:var(--c-text-muted);font-weight:500}.rubric-row__comment{font-size:var(--fs-xs);color:var(--c-text-muted);grid-column:2/-1;margin-top:-4px;line-height:1.65}.bar--tall{height:9px}.metric-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(132px,1fr));display:grid}.metric-box{padding:var(--sp-3);border-radius:var(--r-md);background:var(--c-bg-sunken);border:1px solid var(--c-border)}.metric-box__value{font-size:var(--fs-lg);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-weight:700;line-height:1.25}.metric-box__label{font-size:var(--fs-xs);color:var(--c-text-muted);margin-top:1px}.metric-box__hint{color:var(--c-text-muted);opacity:.85;margin-top:2px;font-size:11px}.correction{border:1px solid var(--c-border);border-radius:var(--r-md);overflow:hidden}.correction+.correction{margin-top:var(--sp-3)}.correction__head{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--c-bg-sunken);border-bottom:1px solid var(--c-border);font-size:var(--fs-xs);color:var(--c-text-secondary);font-weight:650;display:flex}.correction__body{grid-template-columns:1fr 1fr;display:grid}.correction__cell{padding:var(--sp-3);font-size:var(--fs-sm);word-break:break-word;line-height:1.7}.correction__cell+.correction__cell{border-left:1px solid var(--c-border)}.correction__cell-label{letter-spacing:.04em;text-transform:uppercase;color:var(--c-text-muted);margin-bottom:3px;font-size:11px;font-weight:650}.correction__orig{color:var(--c-danger);background:var(--c-danger-bg);font-family:var(--font-mono);border-radius:3px;padding:1px 4px;font-size:.94em}.correction__new{color:var(--c-success);background:var(--c-success-bg);font-family:var(--font-mono);border-radius:3px;padding:1px 4px;font-size:.94em}.correction__reason{padding:var(--sp-2) var(--sp-3);border-top:1px solid var(--c-border);font-size:var(--fs-xs);color:var(--c-text-secondary);background:var(--c-bg-elevated)}@media (max-width:760px){.correction__body{grid-template-columns:1fr}.correction__cell+.correction__cell{border-left:none;border-top:1px solid var(--c-border)}}.grade-compare{gap:var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.grade-compare__col{min-width:0}.grade-compare__label{font-size:var(--fs-xs);color:var(--c-text-muted);margin-bottom:var(--sp-2);align-items:center;gap:var(--sp-2);font-weight:650;display:flex}.grade-compare__text{padding:var(--sp-3);border-radius:var(--r-md);background:var(--c-bg-sunken);border:1px solid var(--c-border);font-family:var(--font-serif);font-size:var(--fs-sm);white-space:pre-wrap;word-break:break-word;max-height:420px;margin:0;line-height:1.85;overflow-y:auto}.grade-compare__text--improved{background:var(--c-success-bg);border-color:color-mix(in srgb, var(--c-success) 28%, transparent)}@media (max-width:900px){.grade-compare{grid-template-columns:1fr}}.history-item{padding:var(--sp-3) 0;border-bottom:1px solid var(--c-border)}.history-item:last-child{border-bottom:none;padding-bottom:0}.history-item__head{align-items:center;gap:var(--sp-3);text-align:left;width:100%;color:inherit;background:0 0;border:none;padding:0;display:flex}.history-item__main{flex:1;min-width:0}.history-item__title{font-size:var(--fs-sm);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.history-item__sub{font-size:var(--fs-xs);color:var(--c-text-muted)}.history-item__score{font-size:var(--fs-lg);font-variant-numeric:tabular-nums;flex:none;font-weight:700}.history-item__body{margin-top:var(--sp-3);padding:var(--sp-3);border-radius:var(--r-md);background:var(--c-bg-sunken);font-size:var(--fs-sm);white-space:pre-wrap;word-break:break-word;color:var(--c-text-secondary);line-height:1.75}.grade-note{font-size:var(--fs-xs);color:var(--c-text-muted);line-height:1.75}.grade-rules{margin-top:var(--sp-2);flex-wrap:wrap;gap:6px;display:flex}.muted{color:var(--c-text-muted);font-size:var(--fs-sm)}.notice{justify-content:space-between;align-items:center;gap:var(--sp-3);font-size:var(--fs-sm);border-left:3px solid var(--c-border-strong);display:flex}.notice--error{border-left-color:var(--c-danger);background:var(--c-danger-bg);color:var(--c-text)}.notice--ok{border-left-color:var(--c-success);background:var(--c-success-bg);color:var(--c-text)}.warn-text{margin:var(--sp-3) 0 0;padding:var(--sp-3);border-radius:var(--r-md);background:var(--c-warning-bg);color:var(--c-text);font-size:var(--fs-sm)}.toolbar{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);flex-wrap:wrap;display:flex}.toolbar__right{align-items:center;gap:var(--sp-3);display:flex}.segmented{border-radius:var(--r-md);background:var(--c-bg-sunken);border:1px solid var(--c-border);gap:2px;padding:3px;display:inline-flex}.segmented__btn{padding:6px var(--sp-3);border-radius:var(--r-sm);color:var(--c-text-secondary);font-size:var(--fs-sm);transition:background var(--t-fast), color var(--t-fast);background:0 0;border:none;align-items:center;gap:6px;font-weight:550;display:inline-flex}.segmented__btn:hover{color:var(--c-text)}.segmented__btn--active{background:var(--c-bg-elevated);color:var(--c-primary-600);box-shadow:var(--sh-sm)}.segmented__count{border-radius:var(--r-full);background:var(--c-bg-sunken);min-width:18px;color:var(--c-text-muted);font-variant-numeric:tabular-nums;text-align:center;padding:0 5px;font-size:11px;font-weight:700}.segmented__btn--active .segmented__count{background:var(--c-primary-50);color:var(--c-primary-600)}.segmented--inline{align-self:flex-start;max-width:100%}.wrong-list{gap:var(--sp-3);margin-top:var(--sp-4);flex-direction:column;display:flex}.wrong-item{padding:var(--sp-4)}.wrong-item__head{justify-content:space-between;align-items:flex-start;gap:var(--sp-3);flex-wrap:wrap;display:flex}.wrong-item__title{align-items:center;gap:var(--sp-2);flex-wrap:wrap;min-width:0;display:flex}.wrong-item__paper{font-size:var(--fs-base)}.wrong-item__no{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--c-text-muted)}.wrong-item__actions{gap:var(--sp-2);flex-wrap:wrap;display:flex}.wrong-item__meta{align-items:center;gap:var(--sp-4);margin-top:var(--sp-3);font-size:var(--fs-xs);color:var(--c-text-muted);flex-wrap:wrap;display:flex}.wrong-item__stem{min-width:0;color:var(--c-text-secondary);font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap;flex:320px;overflow:hidden}.wrong-item__body{margin-top:var(--sp-4);padding-top:var(--sp-4);border-top:1px dashed var(--c-border);animation:.16s fadein}.qa__passage{margin:0 0 var(--sp-1);font-size:var(--fs-xs);color:var(--c-text-muted)}.qa__stem{margin:0 0 var(--sp-3);font-size:var(--fs-base);font-weight:600;line-height:1.6}.qa__options{margin:0 0 var(--sp-3);gap:var(--sp-2);flex-direction:column;padding:0;list-style:none;display:flex}.qa__option{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--c-border);border-radius:var(--r-md);background:var(--c-bg-sunken);font-size:var(--fs-sm);display:flex}.qa__option--correct{border-color:var(--c-success);background:var(--c-success-bg)}.qa__key{background:var(--c-bg-elevated);border:1px solid var(--c-border-strong);height:22px;font-size:11px;font-weight:700;font-family:var(--font-mono);border-radius:50%;flex:0 0 22px;place-items:center;display:grid}.qa__option--correct .qa__key{background:var(--c-success);border-color:var(--c-success);color:#fff}.qa__text{color:var(--c-text-secondary);flex:1}.qa__answer{margin:0 0 var(--sp-3);padding:var(--sp-3);border-radius:var(--r-md);background:var(--c-success-bg);font-size:var(--fs-sm);white-space:pre-wrap}.qa__section{margin-top:var(--sp-3)}.qa__section-title{font-size:var(--fs-xs);color:var(--c-text-muted);letter-spacing:.06em;margin-bottom:var(--sp-1);font-weight:700}.qa__explain{font-size:var(--fs-sm);color:var(--c-text-secondary);white-space:pre-wrap;margin:0;line-height:1.75}.qa__details{margin-top:var(--sp-3)}.qa__details summary{cursor:pointer;font-size:var(--fs-sm);color:var(--c-primary-600);font-weight:600}.qa__transcript{margin:var(--sp-2) 0 0;padding:var(--sp-3);border-radius:var(--r-md);background:var(--c-bg-sunken);border:1px solid var(--c-border);max-height:320px;font-family:var(--font-mono);font-size:var(--fs-xs);white-space:pre-wrap;word-break:break-word;line-height:1.7;overflow:auto}.stats-cards{margin-bottom:var(--sp-4)}.stat-card{padding:var(--sp-4)}.stat-card__hint{margin:var(--sp-2) 0 0;font-size:var(--fs-xs);color:var(--c-text-muted)}.progress-head{justify-content:space-between;align-items:baseline;gap:var(--sp-3);margin-bottom:var(--sp-2);font-size:var(--fs-sm);color:var(--c-text-secondary);display:flex}.progress-head strong{color:var(--c-text);font-variant-numeric:tabular-nums}.progress-legend{gap:var(--sp-4);margin-top:var(--sp-3);font-size:var(--fs-xs);color:var(--c-text-secondary);flex-wrap:wrap;display:flex}.dot-legend{vertical-align:middle;border-radius:2px;width:8px;height:8px;margin-right:6px;display:inline-block}.dot-legend--primary{background:var(--c-primary-500)}.dot-legend--accent{background:var(--c-accent-500)}.dot-legend--muted{background:var(--c-bg-sunken);border:1px solid var(--c-border-strong)}.barchart{height:190px;margin-top:var(--sp-4);align-items:flex-end;gap:3px;padding-bottom:2px;display:flex}.barchart__col{flex-direction:column;flex:1 1 0;justify-content:flex-end;align-items:stretch;min-width:0;height:100%;display:flex;position:relative}.barchart__track{border-radius:var(--r-sm) var(--r-sm) 0 0;background:var(--c-bg-sunken);flex:auto;align-items:flex-end;display:flex;overflow:hidden}.barchart__bar{border-radius:var(--r-sm) var(--r-sm) 0 0;background:linear-gradient(180deg, var(--c-primary-400), var(--c-primary-600));width:100%;transition:height var(--t-base);min-height:0}.barchart__bar--today{background:linear-gradient(180deg, var(--c-accent-400), var(--c-accent-600))}.barchart__label{color:var(--c-text-muted);text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:clip;margin-top:4px;font-size:9.5px;overflow:hidden}.barchart__tip{z-index:5;min-width:132px;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);background:var(--c-text);color:var(--c-bg-elevated);white-space:nowrap;box-shadow:var(--sh-md);pointer-events:none;flex-direction:column;gap:1px;font-size:11px;line-height:1.5;display:none;position:absolute;top:0;left:50%;transform:translate(-50%,-2px)}.barchart__col:first-child .barchart__tip{left:0;transform:none}.barchart__col:last-child .barchart__tip{left:auto;right:0;transform:none}.barchart__tip strong{font-size:var(--fs-xs);margin-bottom:2px}.barchart__col:hover .barchart__tip{display:flex}.barchart__col:hover .barchart__bar{filter:brightness(1.12)}.stage-list{gap:var(--sp-3);margin-top:var(--sp-2);flex-direction:column;display:flex}.stage-row{align-items:center;gap:var(--sp-3);font-size:var(--fs-sm);grid-template-columns:132px 1fr 56px;display:grid}.stage-row__label{color:var(--c-text-secondary);font-size:var(--fs-xs);white-space:nowrap}.stage-row__track{border-radius:var(--r-full);background:var(--c-bg-sunken);height:10px;overflow:hidden}.stage-row__fill{border-radius:var(--r-full);height:100%;transition:width var(--t-base);background:var(--c-primary-500)}.stage-row__fill--2{background:var(--c-primary-400)}.stage-row__fill--3{background:color-mix(in srgb, var(--c-info) 65%, var(--c-primary-400))}.stage-row__fill--4{background:var(--c-warning)}.stage-row__fill--5{background:var(--c-accent-500)}.stage-row__fill--6{background:var(--c-success)}.stage-row__count{text-align:right;font-variant-numeric:tabular-nums;color:var(--c-text-secondary);font-weight:600}.heat{gap:var(--sp-2);margin-top:var(--sp-3);padding-bottom:2px;display:flex;overflow-x:auto}.heat__weekdays{color:var(--c-text-muted);flex:none;grid-template-rows:repeat(7,14px);gap:4px;font-size:10px;line-height:14px;display:grid}.heat__grid{grid-template-rows:repeat(7,14px);grid-auto-columns:14px;grid-auto-flow:column;gap:4px;display:grid}.heat__cell{background:var(--c-bg-sunken);border:1px solid #0000;border-radius:3px;width:14px;height:14px}.heat__cell--0{background:var(--c-bg-sunken)}.heat__cell--1{background:color-mix(in srgb, var(--c-primary-500) 26%, var(--c-bg-sunken))}.heat__cell--2{background:color-mix(in srgb, var(--c-primary-500) 48%, var(--c-bg-sunken))}.heat__cell--3{background:color-mix(in srgb, var(--c-primary-500) 72%, var(--c-bg-sunken))}.heat__cell--4{background:var(--c-primary-600)}.heat__cell--today{border-color:var(--c-accent-500)}.heat__legend{margin-top:var(--sp-3);font-size:var(--fs-xs);align-items:center;gap:4px;display:flex}.range{width:100%;accent-color:var(--c-primary-600);padding:0}.range-row{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.input--narrow{flex:0 0 96px;width:96px}.quick-chips{gap:var(--sp-2);flex-wrap:wrap;display:flex}.chip{padding:4px var(--sp-3);border-radius:var(--r-full);border:1px solid var(--c-border-strong);background:var(--c-bg-elevated);color:var(--c-text-secondary);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;transition:background var(--t-fast), color var(--t-fast), border-color var(--t-fast);font-weight:600}.chip:hover{background:var(--c-bg-sunken)}.chip--active{background:var(--c-primary-600);border-color:var(--c-primary-600);color:#fff}.option-list{gap:var(--sp-2);flex-direction:column;display:flex}.option{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--c-border);border-radius:var(--r-md);background:var(--c-bg-elevated);cursor:pointer;transition:border-color var(--t-fast), background var(--t-fast);display:flex}.option:hover{border-color:var(--c-border-strong)}.option--active{border-color:var(--c-primary-500);background:var(--c-primary-50)}.option input{accent-color:var(--c-primary-600);margin-top:3px}.option__body{flex-direction:column;gap:2px;min-width:0;display:flex}.option__label{align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);font-weight:600;display:flex}.option__hint{font-size:var(--fs-xs);color:var(--c-text-muted)}.switch-row{justify-content:space-between;align-items:center;gap:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--c-border);display:flex}.switch-row__label{font-size:var(--fs-sm);font-weight:600}.switch-row__hint{font-size:var(--fs-xs);color:var(--c-text-muted)}.switch{border-radius:var(--r-full);border:1px solid var(--c-border-strong);background:var(--c-bg-sunken);width:44px;height:26px;transition:background var(--t-base), border-color var(--t-base);flex:none;padding:0;position:relative}.switch--on{background:var(--c-primary-600);border-color:var(--c-primary-600)}.switch__knob{width:20px;height:20px;box-shadow:var(--sh-sm);transition:transform var(--t-base);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px}.switch--on .switch__knob{transform:translate(18px)}.theme-grid{gap:var(--sp-3);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.theme-card{align-items:center;gap:var(--sp-2);padding:var(--sp-4);border-radius:var(--r-md);border:1px solid var(--c-border);background:var(--c-bg-elevated);transition:border-color var(--t-fast), background var(--t-fast);flex-direction:column;display:flex}.theme-card:hover{border-color:var(--c-border-strong)}.theme-card--active{border-color:var(--c-primary-500);background:var(--c-primary-50)}.theme-card__icon{font-size:22px}.theme-card__label{font-size:var(--fs-sm);color:var(--c-text-secondary);font-weight:600}.theme-card--active .theme-card__label{color:var(--c-primary-600)}.action-row{gap:var(--sp-3);margin-top:var(--sp-4);flex-wrap:wrap;display:flex}.meta-grid{gap:var(--sp-3);margin-bottom:var(--sp-5);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.meta-item{padding:var(--sp-3);border-radius:var(--r-md);background:var(--c-bg-sunken);flex-direction:column;gap:2px;display:flex}.meta-item__label{font-size:var(--fs-xs);color:var(--c-text-muted)}.meta-item__value{font-size:var(--fs-lg);font-variant-numeric:tabular-nums;font-weight:700}.meta-item__value--sm{font-size:var(--fs-base);font-family:var(--font-mono)}.source-list,.legend-list{gap:var(--sp-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.source-item{padding:var(--sp-3);border:1px solid var(--c-border);border-radius:var(--r-md);background:var(--c-bg-sunken)}.source-item__head{align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);flex-wrap:wrap;font-weight:600;display:flex}.source-item__fields{font-size:var(--fs-xs);color:var(--c-text-muted);word-break:break-word;margin-top:2px}.legend-list li{align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--c-text-secondary);display:flex}@media (max-width:900px){.stage-row{grid-template-columns:104px 1fr 40px}.meta-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.theme-grid{grid-template-columns:1fr}.barchart{height:150px}.barchart__label{display:none}}:root{--c-primary-50:#eef2ff;--c-primary-100:#e0e7ff;--c-primary-200:#c7d2fe;--c-primary-400:#818cf8;--c-primary-500:#6366f1;--c-primary-600:#4f46e5;--c-primary-700:#4338ca;--c-accent-50:#fff7ed;--c-accent-100:#ffedd5;--c-accent-400:#fb923c;--c-accent-500:#f97316;--c-accent-600:#ea580c;--c-success:#10b981;--c-success-bg:#ecfdf5;--c-warning:#f59e0b;--c-warning-bg:#fffbeb;--c-danger:#ef4444;--c-danger-bg:#fef2f2;--c-info:#3b82f6;--c-bg:#f8fafc;--c-bg-elevated:#fff;--c-bg-sunken:#f1f5f9;--c-border:#e2e8f0;--c-border-strong:#cbd5e1;--c-text:#0f172a;--c-text-secondary:#475569;--c-text-muted:#94a3b8;--c-overlay:#0f172a73;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--r-sm:6px;--r-md:10px;--r-lg:14px;--r-xl:20px;--r-full:999px;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-mono:ui-monospace, "Cascadia Code", Consolas, "SF Mono", monospace;--font-serif:Georgia, "Songti SC", "Noto Serif SC", serif;--fs-xs:12px;--fs-sm:13px;--fs-base:15px;--fs-lg:17px;--fs-xl:20px;--fs-2xl:26px;--fs-3xl:34px;--sh-sm:0 1px 2px #0f172a0f;--sh-md:0 4px 12px #0f172a14;--sh-lg:0 12px 32px #0f172a1f;--t-fast:.12s ease;--t-base:.2s ease;--sidebar-w:232px;--content-max:1080px}[data-theme=dark]{--c-primary-50:#1e1b4b;--c-primary-100:#252058;--c-primary-200:#312e81;--c-primary-400:#818cf8;--c-primary-500:#818cf8;--c-primary-600:#a5b4fc;--c-primary-700:#c7d2fe;--c-accent-50:#2a1a0d;--c-accent-100:#3a2413;--c-accent-400:#fb923c;--c-accent-500:#fdba74;--c-accent-600:#fed7aa;--c-success:#34d399;--c-success-bg:#052e22;--c-warning:#fbbf24;--c-warning-bg:#2a2005;--c-danger:#f87171;--c-danger-bg:#2c0f0f;--c-info:#60a5fa;--c-bg:#0b1120;--c-bg-elevated:#131c2e;--c-bg-sunken:#0f172a;--c-border:#1e293b;--c-border-strong:#334155;--c-text:#e2e8f0;--c-text-secondary:#94a3b8;--c-text-muted:#64748b;--c-overlay:#000000a6;--sh-sm:0 1px 2px #0006;--sh-md:0 4px 12px #00000080;--sh-lg:0 12px 32px #0009}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{font-family:var(--font-sans);font-size:var(--fs-base);color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.6}#root{height:100%}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--c-primary-600);text-decoration:none}code{font-family:var(--font-mono);border-radius:var(--r-sm);background:var(--c-bg-sunken);border:1px solid var(--c-border);padding:1px 5px;font-size:.92em}.boot{justify-content:center;align-items:center;gap:var(--sp-4);height:100%;color:var(--c-text-secondary);flex-direction:column;display:flex}.boot__spinner{border:3px solid var(--c-border);border-top-color:var(--c-primary-500);border-radius:50%;width:34px;height:34px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.boot--error{color:var(--c-danger);padding:var(--sp-8);text-align:center}.boot__msg{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--c-text-secondary);word-break:break-all;max-width:600px}.boot__hint{color:var(--c-text-muted);font-size:var(--fs-sm)}.shell{grid-template-columns:var(--sidebar-w) 1fr;height:100%;display:grid;overflow:hidden}.sidebar{background:var(--c-bg-elevated);border-right:1px solid var(--c-border);padding:var(--sp-5) var(--sp-3);flex-direction:column;display:flex;overflow-y:auto}.sidebar__brand{align-items:center;gap:var(--sp-3);padding:0 var(--sp-2) var(--sp-5);display:flex}.sidebar__logo{border-radius:var(--r-md);background:linear-gradient(135deg, var(--c-primary-500), var(--c-primary-700));color:#fff;width:36px;height:36px;font-weight:700;font-size:var(--fs-lg);flex:0 0 36px;place-items:center;display:grid}.sidebar__title{font-weight:650;font-size:var(--fs-base);letter-spacing:-.01em}.sidebar__sub{font-size:var(--fs-xs);color:var(--c-text-muted);letter-spacing:.04em;text-transform:uppercase}.sidebar__nav{flex-direction:column;flex:1;gap:2px;display:flex}.navitem{align-items:center;gap:var(--sp-3);padding:9px var(--sp-3);border-radius:var(--r-md);color:var(--c-text-secondary);font-size:var(--fs-sm);transition:background var(--t-fast), color var(--t-fast);font-weight:500;display:flex}.navitem:hover{background:var(--c-bg-sunken);color:var(--c-text)}.navitem--active{background:var(--c-primary-50);color:var(--c-primary-700);font-weight:600}[data-theme=dark] .navitem--active{color:var(--c-primary-400)}.navitem__icon{text-align:center;flex:0 0 20px;width:20px;font-size:15px}.navitem__label{flex:1}.navitem__badge{border-radius:var(--r-full);background:var(--c-accent-500);color:#fff;font-variant-numeric:tabular-nums;place-items:center;min-width:20px;height:20px;padding:0 6px;font-size:11px;font-weight:700;display:grid}.sidebar__foot{padding:var(--sp-3) var(--sp-2) 0;border-top:1px solid var(--c-border);font-size:var(--fs-xs);color:var(--c-text-muted);align-items:center;gap:var(--sp-2);display:flex}.dot{border-radius:50%;flex:0 0 7px;width:7px;height:7px}.dot--ok{background:var(--c-success);box-shadow:0 0 0 3px color-mix(in srgb, var(--c-success) 18%, transparent)}.content{padding:var(--sp-8) var(--sp-10);animation:.22s fadein;overflow-y:auto}@keyframes fadein{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.page{max-width:var(--content-max);margin:0 auto}.page__head{margin-bottom:var(--sp-6)}.page__title{font-size:var(--fs-2xl);letter-spacing:-.02em;margin:0 0 var(--sp-1);font-weight:700}.page__desc{color:var(--c-text-secondary);font-size:var(--fs-sm);margin:0}.card{background:var(--c-bg-elevated);border:1px solid var(--c-border);border-radius:var(--r-lg);padding:var(--sp-5);box-shadow:var(--sh-sm)}.card+.card{margin-top:var(--sp-4)}.card__title{font-size:var(--fs-base);margin:0 0 var(--sp-3);font-weight:650}.btn{justify-content:center;align-items:center;gap:var(--sp-2);padding:9px var(--sp-4);border-radius:var(--r-md);border:1px solid var(--c-border-strong);background:var(--c-bg-elevated);color:var(--c-text);font-size:var(--fs-sm);transition:background var(--t-fast), border-color var(--t-fast), transform var(--t-fast);font-weight:550;display:inline-flex}.btn:hover:not(:disabled){background:var(--c-bg-sunken)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--c-primary-600);border-color:var(--c-primary-600);color:#fff}.btn--primary:hover:not(:disabled){background:var(--c-primary-700);border-color:var(--c-primary-700)}.btn--danger{background:var(--c-danger);border-color:var(--c-danger);color:#fff}.btn--danger:hover:not(:disabled){filter:brightness(.92)}.btn--ghost{background:0 0;border-color:#0000}.btn--ghost:hover:not(:disabled){background:var(--c-bg-sunken)}.btn--sm{padding:5px var(--sp-3);font-size:var(--fs-xs)}.btn--lg{padding:12px var(--sp-6);font-size:var(--fs-base)}.field{gap:var(--sp-2);margin-bottom:var(--sp-4);flex-direction:column;display:flex}.field__label{font-size:var(--fs-sm);color:var(--c-text-secondary);font-weight:600}.field__hint{font-size:var(--fs-xs);color:var(--c-text-muted)}.input,.textarea,.select{width:100%;padding:9px var(--sp-3);border-radius:var(--r-md);border:1px solid var(--c-border-strong);background:var(--c-bg-elevated);font-size:var(--fs-sm);transition:border-color var(--t-fast), box-shadow var(--t-fast)}.input:focus,.textarea:focus,.select:focus{border-color:var(--c-primary-500);box-shadow:0 0 0 3px color-mix(in srgb, var(--c-primary-500) 18%, transparent);outline:none}.textarea{resize:vertical;min-height:180px;line-height:1.7}.bar{border-radius:var(--r-full);background:var(--c-bg-sunken);height:8px;overflow:hidden}.bar__fill{border-radius:var(--r-full);background:linear-gradient(90deg, var(--c-primary-500), var(--c-accent-500));height:100%;transition:width var(--t-base)}.badge{border-radius:var(--r-full);letter-spacing:.01em;align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:650;display:inline-flex}.badge--success{background:var(--c-success-bg);color:var(--c-success)}.badge--warning{background:var(--c-warning-bg);color:var(--c-warning)}.badge--danger{background:var(--c-danger-bg);color:var(--c-danger)}.badge--neutral{background:var(--c-bg-sunken);color:var(--c-text-secondary)}.badge--primary{background:var(--c-primary-50);color:var(--c-primary-600)}.empty{text-align:center;padding:var(--sp-12) var(--sp-6);color:var(--c-text-muted)}.empty__icon{margin-bottom:var(--sp-3);opacity:.6;font-size:40px}.empty__title{font-size:var(--fs-base);color:var(--c-text-secondary);margin:0 0 var(--sp-1);font-weight:600}.empty__hint{font-size:var(--fs-sm);margin:0}.grid{gap:var(--sp-4);display:grid}.grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (max-width:1100px){.grid--4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:900px){.shell{grid-template-rows:auto 1fr;grid-template-columns:1fr}.sidebar{border-right:none;border-bottom:1px solid var(--c-border);padding:var(--sp-2) var(--sp-3);flex-direction:row;align-items:center;overflow-x:auto}.sidebar__brand{padding:0 var(--sp-3) 0 0}.sidebar__sub,.sidebar__foot{display:none}.sidebar__nav{gap:var(--sp-1);flex-direction:row}.navitem__label{display:none}.navitem{padding:8px 10px}.content{padding:var(--sp-5) var(--sp-4)}.grid--2,.grid--3{grid-template-columns:1fr}}.stat{flex-direction:column;gap:2px;display:flex}.stat__value{font-size:var(--fs-2xl);font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-weight:700;line-height:1.15}.stat__label{font-size:var(--fs-xs);color:var(--c-text-muted)}
