@font-face{font-family:Shantell Sans;src:url(/fonts/ShantellSans-Variable.ttf) format("truetype");font-weight:300 800;font-display:swap}@font-face{font-family:Noto Sans;src:url(/fonts/NotoSans-Variable.ttf) format("truetype");font-weight:100 900;font-display:swap}:root{--surface-100: #fdf3f7;--surface-200: #ffffff;--line: #ead7e1;--ink: #24203a;--ink-muted: #5a556e;--stroke: #24203a;--shadow: #24203a;--grove: #8ee0b0;--on-grove: #14261c;--grove-strong: #1d7348;--on-grove-strong: #ffffff;--grove-deep: #0f5a33;--grove-tint: #dcf5e6;--bloom: #ffc39e;--on-bloom: #2a1508;--sky: #b9dcff;--on-sky: #0b1a2b;--berry: #d6c4ff;--on-berry: #1c1233;--danger: #b3263e;--on-danger: #ffffff;--danger-tint: #f3d6dd;--wood: #ecd0a6;--wood-ink: #24203a;--wood-ink-muted: #5a556e;--focus: #1d7348;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--radius-sm: 12px;--radius-md: 20px;--radius-full: 999px;--font-display: "Shantell Sans", "Noto Sans", system-ui, sans-serif;--font-sans: "Noto Sans", "Shantell Sans", system-ui, sans-serif;--type-display: 34px/40px;--type-title: 24px/30px;--type-number: 32px/36px;--type-label: 15px/20px;--type-headline: 18px/24px;--type-body: 16px/24px;--type-body-sm: 14px/20px;--type-caption: 12px/16px;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--surface-100);color:var(--ink);font-family:var(--font-display);font-size:16px;line-height:24px;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--grove-strong)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}h1,h2,h3,p{margin:0}h1{font-size:24px;line-height:30px;font-weight:700}h2{font-size:18px;line-height:24px;font-weight:600}.muted{color:var(--ink-muted)}.caption{font-size:12px;line-height:16px;color:var(--ink-muted)}.body-sm{font-size:14px;line-height:20px}.danger-text{color:var(--danger)}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.row{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.spread{justify-content:space-between}.grow{flex:1 1 auto;min-width:0}.sticker{background:var(--surface-200);border:2.5px solid var(--stroke);border-radius:var(--radius-md);box-shadow:4px 4px 0 var(--shadow)}.sticker-sm{border-width:2px;box-shadow:2px 2px 0 var(--shadow);border-radius:var(--radius-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:44px;padding:8px 16px;border-radius:var(--radius-full);border:2.5px solid var(--stroke);background:var(--grove);color:var(--on-grove);font-weight:700;font-size:15px;line-height:20px;cursor:pointer;box-shadow:4px 4px 0 var(--shadow);text-decoration:none}.btn:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:5px 5px 0 var(--shadow)}.btn:active:not(:disabled){transform:translate(2px,2px);box-shadow:1px 1px 0 var(--shadow)}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:2px 2px 0 var(--shadow)}.btn.outline{background:var(--surface-200);color:var(--ink)}.btn.danger{background:var(--danger);color:var(--on-danger)}.btn.small{min-height:34px;padding:4px 12px;font-size:14px;border-width:2px;box-shadow:2px 2px 0 var(--shadow)}.btn.ghost{background:transparent;border-color:transparent;box-shadow:none;min-height:36px;padding:4px 10px}.btn.ghost:hover:not(:disabled){background:var(--surface-200);border-color:var(--stroke);transform:none;box-shadow:2px 2px 0 var(--shadow)}.tag{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px 10px;border-radius:var(--radius-full);border:2px solid var(--stroke);background:var(--surface-200);font-size:13px;line-height:19px;white-space:nowrap}.tag.sky{background:var(--sky);color:var(--on-sky)}.tag.berry{background:var(--berry);color:var(--on-berry)}.tag.grove{background:var(--grove-tint);color:var(--ink)}.tag.danger{background:var(--danger-tint);color:var(--danger)}.chip{border:2px solid var(--stroke);border-radius:var(--radius-full);background:var(--surface-200);padding:6px 14px;font-size:14px;font-weight:700;cursor:pointer;min-height:40px}.chip[aria-pressed=true]{background:var(--grove-tint);border-color:var(--grove-strong)}.chip:disabled{opacity:.45;cursor:not-allowed}.field{display:flex;flex-direction:column;gap:var(--space-1)}.field>label,.field-label{font-size:13px;font-weight:700;color:var(--ink-muted)}.input,.textarea,.select{width:100%;border:2px solid var(--stroke);border-radius:var(--radius-sm);background:var(--surface-200);color:var(--ink);padding:10px 12px;min-height:44px}.textarea{resize:vertical;min-height:84px;line-height:24px}.input:focus,.textarea:focus,.select:focus{outline:3px solid var(--focus);outline-offset:1px}.input[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--danger)}.field-error{font-size:12px;color:var(--danger)}.banner{display:flex;gap:var(--space-3);align-items:flex-start;padding:10px 14px;border:2px solid var(--stroke);border-radius:var(--radius-sm);background:var(--surface-200);box-shadow:2px 2px 0 var(--shadow)}.banner.error{background:var(--danger-tint)}.banner.info{background:var(--sky);color:var(--on-sky)}.banner.warning{background:var(--bloom);color:var(--on-bloom)}.banner.grove{background:var(--grove-tint)}.banner .grow{flex:1 1 auto}.app{display:grid;grid-template-columns:320px minmax(0,1fr);height:100%}.sidebar{border-right:1px solid var(--line);background:var(--surface-100);overflow-y:auto;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.brand{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.brand-mark{font-size:24px;font-weight:800;letter-spacing:-.5px}.tab-row{display:flex;gap:var(--space-1);flex-wrap:wrap}.tab{flex:1 1 auto;text-align:center;border:2px solid transparent;border-radius:var(--radius-full);padding:6px 10px;background:transparent;font-weight:700;cursor:pointer;min-height:40px}.tab[aria-selected=true]{border-color:var(--stroke);background:var(--surface-200);box-shadow:2px 2px 0 var(--shadow)}.sidebar-section{display:flex;flex-direction:column;gap:var(--space-2)}.sidebar-title{font-size:13px;font-weight:700;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.04em}.nav-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);width:100%;padding:8px 10px;border-radius:var(--radius-sm);border:2px solid transparent;background:transparent;text-align:left;cursor:pointer;color:var(--ink);text-decoration:none;min-height:40px}.nav-item:hover{border-color:var(--line)}.nav-item.active{background:var(--surface-200);border-color:var(--stroke);box-shadow:2px 2px 0 var(--shadow)}.section-header{font-size:12px;color:var(--ink-muted);padding:2px 4px 0}.deck-row{display:flex;flex-direction:column;gap:2px;min-width:0}.deck-row .name{font-weight:700;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main{min-width:0;display:flex;flex-direction:column;overflow:hidden}.banner-stack{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3) var(--space-4) 0}.content{flex:1 1 auto;overflow:auto;padding:var(--space-4)}.page{display:flex;flex-direction:column;gap:var(--space-4);max-width:1500px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-3)}.stat{padding:var(--space-3);background:var(--grove-tint);border-radius:var(--radius-sm);border:2px solid var(--stroke)}.stat .value{font-size:32px;line-height:36px;font-weight:800}.stat .label{font-size:13px;color:var(--ink-muted)}.table-wrap{overflow:auto;border:2px solid var(--stroke);border-radius:var(--radius-md);background:var(--surface-200);box-shadow:4px 4px 0 var(--shadow)}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{position:sticky;top:0;background:var(--surface-200);z-index:1;font-size:12px;color:var(--ink-muted);white-space:nowrap}th button{all:unset;cursor:pointer;font-weight:700;color:inherit}tbody tr:hover{background:var(--grove-tint)}td.actions{white-space:nowrap}.deck-header{display:flex;flex-direction:column;gap:var(--space-3);padding-bottom:var(--space-3);border-bottom:1px solid var(--line)}.deck-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.editor-split{display:grid;grid-template-columns:minmax(260px,380px) minmax(0,1fr);gap:var(--space-4);align-items:start}.word-list{border:2px solid var(--stroke);border-radius:var(--radius-md);background:var(--surface-200);box-shadow:4px 4px 0 var(--shadow);overflow:hidden;display:flex;flex-direction:column;max-height:calc(100vh - 230px)}.word-list-head{padding:var(--space-3);border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:var(--space-2)}.word-rows{overflow-y:auto;flex:1 1 auto}.word-row{display:flex;gap:var(--space-2);align-items:flex-start;width:100%;padding:8px 10px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;cursor:pointer;color:var(--ink)}.word-row:hover{background:var(--grove-tint)}.word-row.selected{background:var(--grove-tint);box-shadow:inset 4px 0 0 var(--grove-strong)}.word-row .lemma{font-weight:700;font-size:15px;overflow-wrap:anywhere}.word-row .meaning{font-size:13px;color:var(--ink-muted);overflow-wrap:anywhere}.marker{flex:0 0 auto;width:10px;height:10px;border-radius:50%;margin-top:6px;border:2px solid var(--stroke)}.marker.new{background:var(--sky)}.marker.changed{background:var(--berry)}.marker.problem{background:var(--danger)}.editor-pane{border:2px solid var(--stroke);border-radius:var(--radius-md);background:var(--surface-200);box-shadow:4px 4px 0 var(--shadow);padding:var(--space-4);min-height:300px}.editor-fieldset{border:0;margin:0;padding:0;min-inline-size:0;display:block}.editor-fieldset:disabled{opacity:.75}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--space-3)}.full-width{grid-column:1 / -1}.reading-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:var(--space-4);align-items:start}.reading-block{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border:2px solid var(--stroke);border-radius:var(--radius-sm);background:var(--surface-100)}.reading-block.active{border-color:var(--grove-strong);box-shadow:2px 2px 0 var(--shadow)}.reading-textarea{min-height:150px;border:2px solid var(--stroke);border-radius:var(--radius-sm);padding:10px;background:var(--surface-200);resize:vertical;line-height:26px;font-size:16px}.reading-preview{display:flex;flex-direction:column;gap:var(--space-3);max-height:480px;overflow:auto;padding:var(--space-2)}.reading-preview .paragraph{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--surface-200);border:2px solid var(--line);line-height:26px;white-space:pre-wrap;overflow-wrap:anywhere}.reading-preview .paragraph.grove{background:var(--grove-tint)}.reading-preview .link{color:var(--grove-strong);font-weight:700;background:var(--grove-tint);border-radius:4px;padding:0 2px;cursor:pointer;border:0;font:inherit}.reading-preview .review{text-decoration:underline wavy var(--danger)}.entry-picker{max-height:220px;overflow:auto;border:2px solid var(--stroke);border-radius:var(--radius-sm);background:var(--surface-200)}.entry-picker .word-row{border-bottom:1px solid var(--line)}.modal-backdrop{position:fixed;inset:0;background:#18142673;display:flex;align-items:center;justify-content:center;padding:var(--space-4);z-index:50}.modal{width:min(760px,100%);max-height:90vh;overflow:auto;background:var(--surface-100);border:2.5px solid var(--stroke);border-radius:var(--radius-md);box-shadow:6px 6px 0 var(--shadow);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}.modal.wide{width:min(980px,100%)}.modal-actions{display:flex;justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap}.diff-list{display:grid;gap:var(--space-2);max-height:300px;overflow:auto;padding:var(--space-3);background:var(--surface-200);border:2px solid var(--stroke);border-radius:var(--radius-sm)}.diff-item{font-size:14px;display:flex;gap:var(--space-2)}.diff-item.add{color:var(--grove-deep)}.diff-item.change{color:var(--ink)}.diff-item.remove{color:var(--danger)}.problem-list{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3);border-radius:var(--radius-sm);background:var(--danger-tint);border:2px solid var(--stroke)}.problem-item{display:flex;gap:var(--space-2);align-items:flex-start;background:none;border:0;padding:4px 0;text-align:left;color:var(--danger);cursor:pointer;font-size:14px}.review-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--space-3)}.review-card{padding:var(--space-4);background:var(--surface-200);border:2.5px solid var(--stroke);border-radius:var(--radius-md);box-shadow:4px 4px 0 var(--shadow);display:flex;flex-direction:column;gap:var(--space-2)}.review-card.selected{background:var(--grove-tint)}.stars{letter-spacing:1px;color:var(--wood-ink)}.quote{padding:var(--space-2) var(--space-3);border-left:4px solid var(--line);background:var(--surface-100);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:4px}.split-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--space-3)}.hint{padding:var(--space-3);border-radius:var(--radius-sm);background:var(--sky);color:var(--on-sky);border:2px solid var(--stroke);font-size:14px}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);text-align:center;padding:var(--space-8) var(--space-4);color:var(--ink-muted)}.loader{display:flex;align-items:center;justify-content:center;padding:var(--space-8);color:var(--ink-muted)}.toast-progress{height:8px;border-radius:var(--radius-full);border:2px solid var(--stroke);background:var(--surface-200);overflow:hidden}.toast-progress>div{height:100%;background:var(--grove)}.login{min-height:100%;display:grid;place-items:center;padding:var(--space-6)}.login-card{width:min(460px,100%);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}.checkbox-row{display:flex;align-items:center;gap:var(--space-2)}.checkbox-row input{width:20px;height:20px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:1100px){.editor-split,.reading-layout{grid-template-columns:1fr}.word-list{max-height:46vh}}@media(max-width:860px){.app{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);height:auto;min-height:100%}.sidebar{border-right:0;border-bottom:1px solid var(--line);max-height:45vh}.main,.content{overflow:visible}}
