:root{--bg:#F6F6F3;--surface:#FFFFFF;--surface-2:#F0F0EC;--text:#1B1B1A;--muted:#5E615F;--border:#DEDDD7;--primary:#2B59D9;--primary-hover:#2349B5;--primary-fg:#FFFFFF;--ok:#16794A;--warn:#A35F00;--danger:#C62828;--focus:#2B59D9;--score-4:#10B981;--score-3:#3B82F6;--score-2:#F59E0B;--score-1:#EF4444;--err-grammar:#C62828;--err-vocabulary:#7B3FD6;--err-spelling:#D9650B;--err-punctuation:#1A6FD6;--err-style:#16794A;--font-ui:"Hiragino Sans","Hiragino Kaku Gothic ProN","Noto Sans JP",system-ui,sans-serif;--font-essay:"Georgia","Times New Roman",serif;--font-mono:"SF Mono",ui-monospace,Menlo,monospace;--fs-xs:13px;--fs-sm:14px;--fs-md:16px;--fs-lg:18px;--fs-xl:22px;--fs-2xl:28px;--fs-score:48px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-12:48px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--shadow-1:0 1px 2px rgba(0,0,0,.06),0 4px 12px rgba(0,0,0,.06);--topbar-h:56px;--control-h:44px;--control-h-lg:52px}html.dark{--bg:#141414;--surface:#1E1E1E;--surface-2:#262626;--text:#ECECEA;--muted:#A3A3A0;--border:#353533;--primary:#6E95F5;--primary-hover:#8AA9F7;--primary-fg:#0E1424;--ok:#4CC38A;--warn:#F0B44C;--danger:#F06A6A;--err-grammar:#F06A6A;--err-vocabulary:#B08CF5;--err-spelling:#F29A55;--err-punctuation:#6EA8F5;--err-style:#4CC38A}body{font:400 var(--fs-md)/1.6 var(--font-ui);background:var(--bg);color:var(--text)}.ew-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);box-sizing:border-box;height:var(--control-h);padding:0 16px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text);font:600 15px/1 var(--font-ui);text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color .12s,border-color .12s,color .12s}.ew-btn--primary{background:var(--primary);color:var(--primary-fg)}.ew-btn--primary:hover{background:var(--primary-hover)}.ew-btn--secondary{background:var(--surface);border-color:var(--border);color:var(--text)}.ew-btn--secondary:hover{background:var(--surface-2)}.ew-btn--ghost{background:transparent;color:var(--text)}.ew-btn--ghost:hover{background:var(--surface-2)}.ew-btn--danger{background:var(--danger);color:#fff}.ew-btn--danger:hover{background:color-mix(in srgb,var(--danger) 88%,#000)}.ew-btn--block{display:flex;width:100%;height:var(--control-h-lg)}.ew-btn:disabled,.ew-btn[aria-disabled=true]{opacity:.45;cursor:not-allowed;pointer-events:none}.ew-btn:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.ew-field{display:flex;flex-direction:column;gap:6px}.ew-field__label{font-size:var(--fs-sm);font-weight:600;color:var(--text)}.ew-field__input{box-sizing:border-box;width:100%;height:var(--control-h);padding:0 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:400 16px/1.4 var(--font-ui)}textarea.ew-field__input{height:auto;padding:10px 12px;line-height:1.6;resize:vertical}.ew-field__row{display:flex;align-items:center;gap:var(--sp-2)}.ew-field__row .ew-field__input{flex:1 1 auto;min-width:0}.ew-field__hint{margin:0;font-size:var(--fs-xs);color:var(--muted)}.ew-select{box-sizing:border-box;height:var(--control-h);padding:0 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:400 16px/1.4 var(--font-ui)}.ew-field__input:focus-visible,.ew-select:focus-visible,.ew-check input:focus-visible,.ew-switch input:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.ew-check{display:inline-flex;align-items:center;gap:10px;font-size:var(--fs-md);cursor:pointer}.ew-check input{width:20px;height:20px;margin:0;accent-color:var(--primary);cursor:pointer}.ew-switch{display:inline-flex;align-items:center;gap:10px;font-size:var(--fs-md);cursor:pointer}.ew-switch input{appearance:none;-webkit-appearance:none;position:relative;flex:none;width:44px;height:24px;margin:0;border-radius:12px;background:var(--border);cursor:pointer;transition:background-color .12s}.ew-switch input:before{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .12s}.ew-switch input:checked{background:var(--primary)}.ew-switch input:checked:before{transform:translate(20px)}.ew-switch input:disabled{opacity:.45;cursor:not-allowed}.ew-badge{display:inline-flex;align-items:center;box-sizing:border-box;height:24px;padding:0 10px;border-radius:12px;background:var(--surface-2);color:var(--muted);font-size:var(--fs-xs);font-weight:600;white-space:nowrap}.ew-badge--not_submitted,.ew-badge--draft,.ew-badge--ungraded,.ew-badge--pin-none{background:var(--surface-2);color:var(--muted)}.ew-badge--submitted,.ew-badge--open,.ew-badge--grading{background:color-mix(in srgb,var(--primary) 15%,transparent);color:var(--primary)}.ew-badge--returned,.ew-badge--graded,.ew-badge--pin-ok{background:color-mix(in srgb,var(--ok) 15%,transparent);color:var(--ok)}.ew-badge--closed,.ew-badge--locked,.ew-badge--candidate{background:color-mix(in srgb,var(--warn) 15%,transparent);color:var(--warn)}.ew-cardlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--sp-4);margin:0;padding:0;list-style:none}.ew-card{box-sizing:border-box;padding:var(--sp-5);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text);transition:border-color .12s}.ew-card:hover{border-color:var(--primary)}.ew-card__link{display:block;margin:calc(var(--sp-5) * -1);padding:var(--sp-5);color:inherit;text-decoration:none}.ew-card__link:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--radius-md)}.ew-card__title{margin:0 0 6px;font-size:var(--fs-lg);font-weight:600;line-height:1.4}.ew-card__meta{margin:0;font-size:var(--fs-sm);color:var(--muted)}.ew-card .ew-badge{margin-top:var(--sp-3)}.ew-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.ew-table th,.ew-table td{height:44px;padding:0 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}.ew-table thead th,.ew-table tr:first-child>th{background:var(--surface-2);font-size:var(--fs-xs);font-weight:600}.ew-table tbody tr:hover{background:var(--surface-2)}.ew-topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:var(--sp-4);box-sizing:border-box;height:var(--topbar-h);padding:0 24px;border-bottom:1px solid var(--border);background:var(--surface)}.ew-topbar__brand{font-size:17px;font-weight:700;color:var(--text);text-decoration:none}.ew-topbar__who{margin-left:auto;font-size:var(--fs-sm);color:var(--muted)}.ew-topbar__nav{display:flex;align-items:center;gap:var(--sp-1);margin-left:var(--sp-6)}.ew-topbar__link{display:inline-flex;align-items:center;height:36px;padding:0 12px;border-radius:var(--radius-sm);font-size:var(--fs-sm);font-weight:600;color:var(--muted);text-decoration:none;transition:background-color .12s,color .12s}.ew-topbar__link:hover{background:var(--surface-2);color:var(--text)}.ew-topbar__link[aria-current=page]{background:color-mix(in srgb,var(--primary) 15%,transparent);color:var(--primary)}.ew-topbar__brand:focus-visible,.ew-topbar__link:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.ew-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--muted)}.ew-crumbs__item{color:var(--muted);text-decoration:none}.ew-crumbs__item:hover{color:var(--text);text-decoration:underline}.ew-crumbs__item[aria-current=page]{color:var(--text);font-weight:600}.ew-crumbs__item+.ew-crumbs__item:before{content:"/";margin-right:var(--sp-2);color:var(--muted);text-decoration:none;display:inline-block}.ew-tabs{display:flex;gap:var(--sp-1);border-bottom:1px solid var(--border)}.ew-tabs__tab{height:var(--control-h);padding:0 16px;margin-bottom:-1px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font:600 15px/1 var(--font-ui);cursor:pointer;transition:color .12s,border-color .12s}.ew-tabs__tab:hover{color:var(--text)}.ew-tabs__tab[aria-selected=true]{color:var(--primary);border-bottom-color:var(--primary)}.ew-tabs__tab:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.ew-section-title{margin:0 0 var(--sp-3);font-size:var(--fs-lg);font-weight:600}.ew-dialog{box-sizing:border-box;width:min(440px,100% - 32px);padding:var(--sp-6);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);color:var(--text)}.ew-dialog::backdrop{background:#0006}.ew-toast{position:fixed;bottom:var(--sp-6);inset-inline:0;z-index:100;box-sizing:border-box;width:fit-content;max-width:calc(100% - 32px);margin-inline:auto;padding:var(--sp-3) var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text);box-shadow:var(--shadow-1);font-size:var(--fs-sm)}.ew-empty{padding:var(--sp-12) var(--sp-4);text-align:center;color:var(--muted);font-size:var(--fs-md)}@media(prefers-reduced-motion:reduce){.ew-btn,.ew-card,.ew-topbar__link,.ew-tabs__tab,.ew-switch input,.ew-switch input:before{transition:none}}.ew-login{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:var(--sp-4) 0}.ew-login__card{width:min(440px,100% - 32px);padding:var(--sp-8);border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-1)}.ew-login__title{margin:0;font-size:28px;font-weight:700}.ew-login__lead{margin:var(--sp-2) 0 0;font-size:15px;color:var(--muted)}.ew-login__form{display:flex;flex-direction:column;gap:var(--sp-5);margin-top:var(--sp-6)}.ew-login .ew-field__input{height:var(--control-h-lg);font-size:20px}.ew-login .ew-field__row{display:flex;gap:var(--sp-2)}.ew-login .ew-field__row .ew-field__input{flex:1;min-width:0}.ew-login .ew-field__input--number,.ew-login .ew-field__input--pin{letter-spacing:.2em;font-variant-numeric:tabular-nums}.ew-login .ew-field__input--code{text-transform:uppercase;letter-spacing:.15em}.ew-login__reveal{height:var(--control-h-lg);flex:none}.ew-login__error{margin:0;min-height:20px;font-size:14px;line-height:20px;color:var(--danger)}.ew-login .ew-btn--block{height:var(--control-h-lg)}.ew-home{max-width:960px;margin:0 auto;padding:var(--sp-8) var(--sp-4)}.ew-home .ew-crumbs{margin-bottom:var(--sp-6)}.ew-home .ew-cardlist{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--sp-4)}.ew-home .ew-card{padding:var(--sp-5);border-radius:var(--radius-md)}.ew-home .ew-card__link{display:block;color:inherit;text-decoration:none}.ew-home .ew-card__title{margin:0;font-size:18px;font-weight:600}.ew-home .ew-card__meta{margin:var(--sp-2) 0 var(--sp-3);font-size:14px;color:var(--muted)}.ew-topbar__who{margin-left:auto;margin-right:var(--sp-3);font-size:14px;color:var(--muted)}.ew-write{box-sizing:border-box;max-width:1280px;margin:0 auto;padding:var(--sp-6);display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-6)}.ew-prompt{box-sizing:border-box;padding:var(--sp-5);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.ew-prompt__title{margin:0 0 var(--sp-3);font-size:var(--fs-xl);font-weight:700;line-height:1.4}.ew-prompt__question{font-size:var(--fs-md);line-height:1.7;white-space:pre-wrap}.ew-prompt__points{margin:var(--sp-3) 0 0;padding-left:20px;font-size:var(--fs-md);line-height:1.7}.ew-prompt__passage{margin-top:var(--sp-4);padding:var(--sp-4);border-radius:var(--radius-sm);background:var(--surface-2);font-size:var(--fs-md);line-height:1.7;white-space:pre-wrap}.ew-prompt__range{margin:var(--sp-4) 0 0;font-size:var(--fs-sm);color:var(--muted)}.ew-editor__text{display:block;box-sizing:border-box;width:100%;min-height:360px;padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:400 18px/1.8 var(--font-essay);resize:vertical}.ew-editor__text:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.ew-editor__text[readonly]{background:var(--surface-2)}.ew-editor__bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-3);box-sizing:border-box;min-height:56px}.ew-wordcount{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}.ew-wordcount--ok{color:var(--text)}.ew-wordcount--under,.ew-wordcount--over{color:var(--warn)}.ew-editor__actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--sp-2)}.ew-editor__status{margin:0;font-size:var(--fs-sm);color:var(--muted)}.ew-editor__error{margin:0;font-size:var(--fs-sm);color:var(--danger)}.ew-practices__list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--sp-2)}.ew-practices__item{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);transition:border-color .12s}.ew-practices__item:hover{border-color:var(--primary)}.ew-practices__item a{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);min-height:var(--control-h);padding:var(--sp-2) var(--sp-4);color:var(--text);text-decoration:none;border-radius:var(--radius-sm)}.ew-practices__item a:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.ew-practices__date{font-size:var(--fs-sm);color:var(--muted)}.ew-practices__score{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}.ew-dialog__text{margin:0 0 var(--sp-5);font-size:var(--fs-md);line-height:1.6}.ew-dialog__actions{display:flex;justify-content:flex-end;gap:var(--sp-2)}@media(min-width:1024px){.ew-write:not(.ew-write--state){grid-template-columns:minmax(320px,2fr) 3fr;align-items:start}.ew-prompt{grid-column:1;grid-row:1 / span 2;position:sticky;top:72px}.ew-editor{grid-column:2;grid-row:1}.ew-practices{grid-column:2;grid-row:2}}.ew-photo{box-sizing:border-box;max-width:1280px;margin:0 auto;padding:var(--sp-6)}.ew-steps{display:flex;gap:var(--sp-4);margin:0 0 var(--sp-6);padding:0;list-style:none}.ew-steps__item{flex:1 1 0;padding-bottom:var(--sp-2);border-bottom:2px solid var(--border);font-size:var(--fs-sm);color:var(--muted)}.ew-steps__item--current,.ew-steps__item[aria-current=step]{color:var(--primary);font-weight:600;border-bottom-color:var(--primary)}.ew-photo__guide{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-4)}.ew-photo__tips{margin:0;padding-left:20px;font-size:var(--fs-md);line-height:1.7}.ew-photo__shoot{cursor:pointer}.ew-photo__shoot[aria-disabled=true]{opacity:.45;cursor:not-allowed;pointer-events:none}.ew-photo__preview{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-4)}.ew-photo__img{display:block;max-width:100%;max-height:60vh;object-fit:contain;border-radius:var(--radius-sm)}.ew-photo__actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.ew-photo__busy{padding:var(--sp-12) var(--sp-4);text-align:center;font-size:var(--fs-md);color:var(--muted)}.ew-compare{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-4)}.ew-compare__photo{margin:0;height:40vh;overflow:auto;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2)}.ew-compare__photo img{display:block;width:100%;height:auto}.ew-compare__photo--zoom img{width:200%;max-width:none}.ew-compare__tools{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-2)}.ew-compare__text{display:flex;flex-direction:column;gap:var(--sp-3)}.ew-compare__note{margin:0;padding:12px 16px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--warn) 15%,transparent);font-size:15px;line-height:1.6}.ew-compare__unknown{margin:0;font-size:var(--fs-sm);color:var(--muted)}@media(min-width:900px){.ew-compare{grid-template-columns:1fr 1fr}.ew-compare__photo{height:auto;max-height:70vh}}.ew-result{box-sizing:border-box;max-width:960px;margin:0 auto;padding:24px}.ew-score{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:var(--sp-4) var(--sp-8);margin-bottom:var(--sp-6);padding:var(--sp-5) var(--sp-6);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.ew-score__kind{grid-column:1 / -1;margin:0;font-size:var(--fs-sm);font-weight:600;color:var(--muted)}.ew-score__total{display:flex;align-items:baseline;gap:var(--sp-1)}.ew-score__num{font-size:var(--fs-score);font-weight:700;line-height:1;color:var(--text)}.ew-score__num[data-tier="4"]{color:var(--score-4)}.ew-score__num[data-tier="3"]{color:var(--score-3)}.ew-score__num[data-tier="2"]{color:var(--score-2)}.ew-score__num[data-tier="1"]{color:var(--score-1)}.ew-score__max{font-size:var(--fs-lg);font-weight:600;color:var(--muted)}.ew-score__bars{display:flex;flex-direction:column;gap:var(--sp-2);margin:0;padding:0;list-style:none}.ew-score__bar{display:flex;align-items:center;gap:var(--sp-3)}.ew-score__label{flex:none;width:88px;font-size:var(--fs-sm)}.ew-score__track{flex:1 1 auto;height:8px;overflow:hidden;border-radius:4px;background:var(--surface-2)}.ew-score__fill{display:block;height:100%;border-radius:4px;background:var(--muted);transform-origin:left}.ew-score__fill[data-tier="4"]{background:var(--score-4)}.ew-score__fill[data-tier="3"]{background:var(--score-3)}.ew-score__fill[data-tier="2"]{background:var(--score-2)}.ew-score__fill[data-tier="1"]{background:var(--score-1)}.ew-score__value{flex:none;width:20px;font-size:15px;font-weight:600;text-align:right}@media(max-width:599px){.ew-score{grid-template-columns:1fr}}.ew-tabpanel{padding:var(--sp-6) 0}.ew-essay{position:relative}.ew-essay__text{margin:0;font-family:var(--font-essay);font-size:var(--fs-lg);line-height:2;white-space:pre-wrap;overflow-wrap:anywhere}.ew-mark{background:none;color:var(--text);font-weight:700;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px;cursor:pointer}.ew-mark--grammar{color:var(--err-grammar)}.ew-mark--vocabulary{color:var(--err-vocabulary)}.ew-mark--spelling{color:var(--err-spelling)}.ew-mark--punctuation{color:var(--err-punctuation)}.ew-mark--style{color:var(--err-style)}.ew-mark:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:2px}.ew-deleted{margin-top:var(--sp-6);padding-top:var(--sp-4);border-top:1px solid var(--border)}.ew-deleted__title{margin:0 0 var(--sp-2);font-size:var(--fs-sm);font-weight:600;color:var(--muted)}.ew-deleted__list{display:flex;flex-direction:column;gap:var(--sp-2);margin:0;padding:0;list-style:none}.ew-deleted__item{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-1) var(--sp-3);font-size:var(--fs-sm);line-height:1.7}.ew-deleted__orig{font-family:var(--font-essay);font-size:var(--fs-md);color:var(--danger)}.ew-deleted__explain{color:var(--muted);overflow-wrap:anywhere}.ew-popover{position:absolute;top:0;left:0;z-index:30;box-sizing:border-box;width:320px;padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text);box-shadow:var(--shadow-1)}.ew-sheet{position:fixed;right:0;bottom:0;left:0;z-index:40;box-sizing:border-box;max-height:60vh;overflow-y:auto;padding:var(--sp-3) var(--sp-6) calc(var(--sp-6) + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:var(--surface);color:var(--text);box-shadow:var(--shadow-1)}.ew-sheet__handle{width:40px;height:4px;margin:0 auto var(--sp-3);border-radius:2px;background:var(--border)}.ew-detail{display:flex;flex-direction:column;gap:var(--sp-2)}.ew-detail__cat{align-self:flex-start;box-sizing:border-box;height:24px;padding:0 10px;border-radius:12px;background:var(--surface-2);color:var(--muted);font-size:var(--fs-xs);font-weight:600;line-height:24px}.ew-detail__cat--grammar{background:color-mix(in srgb,var(--err-grammar) 15%,transparent);color:var(--err-grammar)}.ew-detail__cat--vocabulary{background:color-mix(in srgb,var(--err-vocabulary) 15%,transparent);color:var(--err-vocabulary)}.ew-detail__cat--spelling{background:color-mix(in srgb,var(--err-spelling) 15%,transparent);color:var(--err-spelling)}.ew-detail__cat--punctuation{background:color-mix(in srgb,var(--err-punctuation) 15%,transparent);color:var(--err-punctuation)}.ew-detail__cat--style{background:color-mix(in srgb,var(--err-style) 15%,transparent);color:var(--err-style)}.ew-detail__row{display:flex;gap:var(--sp-3);margin:0;font-size:var(--fs-md)}.ew-detail__key{flex:none;width:2.5em;font-size:var(--fs-sm);color:var(--muted)}.ew-detail__val{font-family:var(--font-essay);overflow-wrap:anywhere}.ew-detail__explain{margin:0;font-size:var(--fs-sm);line-height:1.7}.ew-feedback{display:flex;flex-direction:column;gap:var(--sp-4)}.ew-feedback__item{padding:var(--sp-5);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.ew-feedback__item h3{margin:0 0 var(--sp-2);font-size:var(--fs-md);font-weight:600}.ew-feedback__item p{margin:0;font-size:var(--fs-md);line-height:1.8}.ew-analysis{display:flex;flex-direction:column;gap:var(--sp-4)}.ew-analysis__item{padding:var(--sp-5);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.ew-analysis__label{margin:0 0 var(--sp-3);font-size:var(--fs-md);font-weight:600}.ew-analysis__quote{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-4);border-left:3px solid var(--border);color:var(--muted);font-family:var(--font-essay);font-size:var(--fs-md);line-height:1.8}.ew-analysis__flow{margin:0 0 var(--sp-3);font-size:var(--fs-md);line-height:1.8}.ew-analysis__good,.ew-analysis__bad{margin:0 0 var(--sp-3);padding-left:1.4em;font-size:var(--fs-md);line-height:1.8}.ew-analysis__good li::marker{color:var(--ok)}.ew-analysis__bad li::marker{color:var(--warn)}.ew-analysis__suggest{padding:var(--sp-4);border-radius:var(--radius-sm);background:var(--surface-2)}.ew-analysis__model{margin:0;font-family:var(--font-essay);font-size:17px;line-height:1.8}.ew-analysis__note{margin:var(--sp-2) 0 0;font-size:var(--fs-sm);color:var(--muted);line-height:1.7}.ew-analysis__vocab{margin:var(--sp-3) 0 0;font-size:var(--fs-sm)}.ew-analysis__vocab dt{font-weight:600}.ew-analysis__vocab dd{margin:0 0 var(--sp-2);color:var(--muted)}.ew-seg{display:inline-flex;box-sizing:border-box;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);overflow:hidden}.ew-seg__opt{box-sizing:border-box;height:var(--control-h);padding:0 16px;border:0;background:transparent;color:var(--text);font:600 15px/1 var(--font-ui);cursor:pointer;transition:background-color .12s,color .12s}.ew-seg__opt+.ew-seg__opt{border-left:1px solid var(--border)}.ew-seg__opt:hover{background:var(--surface-2)}.ew-seg__opt[aria-pressed=true]{background:var(--primary);color:var(--primary-fg)}.ew-seg__opt:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.ew-seg__opt:disabled{opacity:.45;cursor:not-allowed}.ew-tapp{min-height:100vh}.ew-dash{display:grid;grid-template-columns:280px 1fr;height:calc(100vh - var(--topbar-h))}.ew-dash__side{box-sizing:border-box;padding:var(--sp-4);border-right:1px solid var(--border);overflow-y:auto}.ew-dash__sidehead{margin-bottom:var(--sp-2)}.ew-dash__ops{display:flex;flex-wrap:wrap;gap:var(--sp-1);margin-bottom:var(--sp-3)}.ew-dash__main{box-sizing:border-box;min-width:0;padding:var(--sp-8);overflow-y:auto}.ew-dash__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-6)}.ew-dash__head button.ew-crumbs__item{padding:0;border:0;background:none;font:inherit;cursor:pointer}.ew-tree{margin:0;padding:0;list-style:none}.ew-tree .ew-tree{padding-left:var(--sp-4)}.ew-tree__label{display:flex;align-items:center;gap:6px;box-sizing:border-box;width:100%;height:36px;padding:0 8px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text);font:400 14px/1 var(--font-ui);text-align:left;cursor:pointer;transition:background-color .12s,color .12s}.ew-tree__label:before{content:"";flex:none;width:12px;font-size:11px;color:var(--muted)}.ew-tree__label[aria-expanded=false]:before{content:"▸"}.ew-tree__label[aria-expanded=true]:before{content:"▾"}.ew-tree__label:hover{background:var(--surface-2)}.ew-tree__label[aria-current=true]{background:color-mix(in srgb,var(--primary) 15%,transparent);color:var(--primary);font-weight:600}.ew-tree__label:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.ew-cardlist--teacher{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--sp-4)}.ew-counts{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3);margin:var(--sp-4) 0 0}.ew-counts__item{margin:0}.ew-counts__item dt{font-size:var(--fs-xs);color:var(--muted)}.ew-counts__item dd{margin:0;font-size:var(--fs-xl);font-weight:700}.ew-dash__dialog-error{margin:var(--sp-3) 0 0;font-size:var(--fs-sm);color:var(--danger)}.ew-dash__dialog-actions{display:flex;justify-content:flex-end;gap:var(--sp-3);margin-top:var(--sp-6)}.ew-form-page{box-sizing:border-box;max-width:760px;margin:0 auto;padding:var(--sp-8)}.ew-form-page__title{margin:0 0 var(--sp-6);font-size:var(--fs-xl);font-weight:700}.ew-form{display:flex;flex-direction:column;gap:20px}.ew-form__row>.ew-check{margin:0 var(--sp-5) var(--sp-2) 0}.ew-form__row--words{display:flex;flex-wrap:wrap;gap:var(--sp-4)}.ew-form__row--words .ew-field__input{width:120px}.ew-form__actions{display:flex;gap:var(--sp-3);margin-top:var(--sp-2)}.ew-assign{box-sizing:border-box;padding:var(--sp-8)}.ew-assign__head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-4);margin-bottom:var(--sp-6)}.ew-assign__title{margin:0;font-size:var(--fs-xl);font-weight:700}.ew-assign__meta{margin:0;font-size:var(--fs-sm);color:var(--muted)}.ew-assign__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3);margin-left:auto}.ew-cli-hint{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-6);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-sm);background:var(--surface-2)}.ew-cli-hint__cmd{flex:1 1 auto;min-width:0;background:none;font:400 14px/1.5 var(--font-mono);overflow-wrap:anywhere}.ew-stats{display:grid;grid-template-columns:repeat(4,minmax(160px,200px)) 1fr;gap:var(--sp-4);margin-bottom:var(--sp-8)}.ew-stats__kpi{display:flex;flex-direction:column;gap:4px;box-sizing:border-box;padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.ew-stats__label{font-size:var(--fs-xs);color:var(--muted)}.ew-stats__value{font-size:var(--fs-2xl);font-weight:700}.ew-hist{grid-column:5;grid-row:1;display:grid;grid-template-columns:repeat(17,1fr);grid-template-rows:100%;gap:4px;align-items:end;height:120px;margin:20px 0 24px}.ew-hist__bar{position:relative;align-self:end;min-height:2px;height:calc(var(--h) * 100%);border-radius:2px 2px 0 0;background:var(--primary)}.ew-hist__count,.ew-hist__x{position:absolute;left:0;right:0;text-align:center;font-size:var(--fs-xs);line-height:1.4;color:var(--muted)}.ew-hist__count{bottom:100%}.ew-hist__x{top:100%}.ew-toperrors{grid-column:1 / -1;margin:0;padding-left:var(--sp-6);font-size:var(--fs-sm)}.ew-toperrors__item{display:list-item;padding:6px 0}.ew-toperrors__item>*{vertical-align:middle}.ew-toperrors__fix{margin-left:var(--sp-3)}.ew-toperrors__count{float:right;font-weight:600}.ew-subs__row{cursor:pointer}.ew-subs .ew-subs__sel{width:44px}.ew-subs th:nth-child(2),.ew-subs td:nth-child(2){width:56px}.ew-subs th:nth-child(n+9):nth-child(-n+11),.ew-subs td:nth-child(n+9):nth-child(-n+11){width:64px;text-align:right}@media(max-width:1100px){.ew-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.ew-hist{grid-column:1 / -1;grid-row:auto}}@media(prefers-reduced-motion:reduce){.ew-seg__opt,.ew-tree__label{transition:none}}.ew-sub{box-sizing:border-box;padding:24px 32px}.ew-sub__nav{display:flex;align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-4)}.ew-sub__who{flex:1 1 auto;font-size:var(--fs-md);font-weight:600;text-align:center}.ew-sub__nav .ew-btn[aria-disabled=true]{opacity:.45;cursor:not-allowed;pointer-events:none}.ew-sub__grid{display:grid;grid-template-columns:1fr 360px;gap:24px;align-items:start}.ew-sub__text{min-width:0}.ew-sub__essay{padding:var(--sp-5) 0;font:400 17px/1.9 var(--font-essay);white-space:pre-wrap;overflow-wrap:anywhere}.ew-sub__photo{margin:0;padding:var(--sp-5) 0}.ew-sub__photo img{display:block;max-width:100%;height:auto;border:1px solid var(--border);border-radius:var(--radius-sm)}.ew-sub__hidden{margin:0 0 var(--sp-4);padding:var(--sp-4);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--muted);font-size:var(--fs-sm)}.ew-sub__student{margin-top:var(--sp-8)}.ew-diff{padding:var(--sp-5) 0;font:400 17px/1.9 var(--font-essay);overflow-wrap:anywhere}.ew-diff__del,.ew-diff__ins{background:color-mix(in srgb,var(--x) 12%,transparent)}.ew-diff__del{--x: var(--danger);text-decoration:line-through 2px var(--danger)}.ew-diff__ins{--x: var(--ok);text-decoration:underline 2px var(--ok)}.ew-tgrade{position:sticky;top:72px;box-sizing:border-box;padding:20px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.ew-tgrade__form{display:flex;flex-direction:column;gap:var(--sp-4)}.ew-tgrade__row{margin:0;padding:0;border:0;min-width:0}.ew-tgrade__legend{padding:0;margin-bottom:var(--sp-2);font-size:var(--fs-sm);font-weight:600}.ew-tgrade .ew-seg__opt{box-sizing:border-box;width:44px;height:44px;padding:0}.ew-tgrade .ew-seg__opt[aria-pressed=true]{background:var(--primary);color:var(--primary-fg)}.ew-tgrade__total{margin:0;font-size:28px;font-weight:700;font-variant-numeric:tabular-nums}.ew-tgrade__note{box-sizing:border-box;width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:400 16px/1.6 var(--font-ui);resize:vertical}.ew-tgrade__note:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.ew-tgrade__msg{margin:0;font-size:var(--fs-sm)}.ew-tgrade__msg--ok{color:var(--ok)}.ew-tgrade__msg--err{color:var(--danger)}.ew-gradings{margin-top:var(--sp-8)}.ew-gradings__warn{margin-top:var(--sp-4);padding:var(--sp-4);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--warn) 10%,transparent);font-size:var(--fs-sm)}.ew-gradings__warn ul{margin:var(--sp-1) 0 0;padding-left:var(--sp-5)}.ew-gradings__warnhead{margin:0;font-weight:600}@media(max-width:900px){.ew-sub{padding:16px}.ew-sub__grid{grid-template-columns:1fr}.ew-tgrade{position:static}}.ew-classes{box-sizing:border-box;max-width:1100px;margin-inline:auto;padding:32px}.ew-classes__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-4);margin:var(--sp-4) 0 var(--sp-6)}.ew-classes__head h1{margin:0;font-size:var(--fs-2xl);font-weight:700}.ew-classes__meta{margin:0;font-size:var(--fs-sm);color:var(--muted)}.ew-classes__link{color:var(--primary);font-weight:600;text-decoration:none}.ew-classes__link:hover{text-decoration:underline}.ew-classes__link:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.ew-classes__archived{margin-left:var(--sp-2)}.ew-classes__code{font-family:var(--font-mono);font-size:16px;letter-spacing:.1em}.ew-classes__error{margin:var(--sp-3) 0;font-size:var(--fs-sm);color:var(--danger)}.ew-classes__form{display:flex;flex-direction:column;gap:var(--sp-4)}.ew-classes__dialog-actions{display:flex;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-4)}.ew-roster{margin-bottom:var(--sp-8)}.ew-roster textarea.ew-roster__paste{display:block;height:200px;font-family:var(--font-mono);font-size:16px}.ew-roster__actions{display:flex;gap:var(--sp-2);margin:var(--sp-3) 0}.ew-roster__summary{margin:var(--sp-3) 0;font-size:var(--fs-sm);color:var(--muted)}.ew-roster__errors{margin:var(--sp-3) 0;padding-left:var(--sp-5);font-size:var(--fs-sm);color:var(--danger)}.ew-roster__row--add{background:color-mix(in srgb,var(--ok) 10%,transparent)}.ew-roster__row--update{background:color-mix(in srgb,var(--warn) 10%,transparent)}.ew-students__actions{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-3)}.ew-students__num{width:56px;font-variant-numeric:tabular-nums}.ew-students__locked{margin-left:var(--sp-2)}.ew-students__ops{white-space:nowrap}.ew-students__ops .ew-btn+.ew-btn{margin-left:var(--sp-1)}.ew-quality{box-sizing:border-box;max-width:1100px;margin-inline:auto;padding:32px}@page{size:A4 portrait;margin:10mm}.ew-pinsheet{background:#888;color:#000;padding:8mm 0}.ew-pinsheet__toolbar{display:flex;justify-content:center;gap:8px;margin:0 0 8mm}.ew-pinsheet .ew-empty{color:#000;background:#fff;width:190mm;margin:0 auto;padding:10mm;box-sizing:border-box;text-align:center}.ew-pinsheet__page{width:190mm;height:277mm;display:grid;grid-template-columns:95mm 95mm;grid-template-rows:repeat(5,55.4mm);break-after:page;box-sizing:border-box;background:#fff;margin:0 auto 8mm}.ew-pinsheet__page:last-child{break-after:auto;margin-bottom:0}.ew-pinsheet__slip{border:.3mm dashed #999;box-sizing:border-box;overflow:hidden;padding:5mm;background:#fff;color:#000;font-family:var(--font-ui)}.ew-pinsheet__slip p{margin:0;line-height:1.15;color:#000}.ew-pinsheet__who{font-size:14pt;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ew-pinsheet__url{font-size:11pt;margin-bottom:2mm!important}.ew-pinsheet__k{font-size:8pt}.ew-pinsheet__code{font-family:var(--font-mono);font-size:20pt;letter-spacing:3pt;margin-bottom:1.5mm!important}.ew-pinsheet__pin{font-family:var(--font-mono);font-size:24pt;letter-spacing:4.8pt;margin-bottom:1.5mm!important}.ew-pinsheet__warn{font-size:9pt}@media print{.ew-pinsheet{background:#fff;padding:0}.ew-pinsheet__toolbar{display:none}.ew-pinsheet__page{margin:0}html,body{margin:0;padding:0;background:#fff;-webkit-print-color-adjust:exact;print-color-adjust:exact}.ew-topbar{display:none}}
