:root{--bg: #f5f7fb;--surface: #ffffff;--surface-2: #f0f3fa;--ink: #16202e;--ink-2: #5b6879;--ink-3: #93a0b1;--line: #e2e8f1;--accent: #3b5bdb;--accent-ink: #ffffff;--accent-soft: #edf1fe;--good: #2f9e44;--warn: #e8590c;--bad: #c92a2a;--radius: 12px;--shadow: 0 1px 2px rgba(16, 24, 40, .05), 0 8px 24px rgba(16, 24, 40, .07);--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);background:var(--bg);color:var(--ink);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit;color:inherit}h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.01em}a{color:var(--accent)}.app{min-height:100%;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:1rem;padding:0 1.25rem;height:60px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:baseline;gap:.5rem;font-weight:700;letter-spacing:-.02em}.brand small{color:var(--ink-3);font-weight:500;letter-spacing:0}.nav{display:flex;gap:.25rem;margin-left:auto}.nav button{background:transparent;border:0;padding:.5rem .85rem;border-radius:999px;color:var(--ink-2);cursor:pointer;font-weight:550}.nav button:hover{background:var(--surface-2);color:var(--ink)}.nav button.active{background:var(--accent-soft);color:var(--accent)}.nav .badge{display:inline-block;margin-left:.4rem;padding:0 .4rem;border-radius:999px;background:var(--accent);color:#fff;font-size:12px;line-height:18px}.account{display:flex;align-items:center;gap:.6rem;font-size:13px;color:var(--ink-2)}.dot{width:7px;height:7px;border-radius:50%;background:var(--good);display:inline-block}.dot.local{background:var(--warn)}main{flex:1;width:min(1180px,100%);margin:0 auto;padding:1.5rem 1.25rem 4rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.5rem .9rem;border-radius:9px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-weight:550;cursor:pointer;transition:background .12s ease,border-color .12s ease,transform .05s ease}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover:not(:disabled){background:#3149b8}.btn.ghost{border-color:transparent;background:transparent;color:var(--ink-2)}.btn.ghost:hover{background:var(--surface-2);color:var(--ink)}.btn.danger{color:var(--bad)}.btn.sm{padding:.3rem .6rem;font-size:13px}.btn.block{width:100%}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card.pad{padding:1.15rem 1.25rem}.field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.9rem}.field label{font-size:13px;font-weight:600;color:var(--ink-2)}input[type=text],input[type=url],input[type=email],input[type=password],textarea{width:100%;padding:.55rem .7rem;border:1px solid var(--line);border-radius:9px;background:var(--surface);outline:none}input:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #3b5bdb1f}textarea{resize:vertical;min-height:110px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}.hint{font-size:12.5px;color:var(--ink-3)}.error{font-size:13px;color:var(--bad);margin-top:.5rem}.notice{font-size:13px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;padding:.6rem .75rem;border-radius:9px}.notice-actions{display:flex;gap:.5rem;margin-top:.6rem}.row{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.spacer{flex:1}.muted{color:var(--ink-2)}.empty{text-align:center;padding:2.5rem 1rem;color:var(--ink-2)}.section-head{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.section-head h2{font-size:1.15rem}.auth-wrap{min-height:100%;display:grid;place-items:center;padding:2rem 1rem}.auth-card{width:min(400px,100%);padding:1.75rem}.auth-card h1{font-size:1.5rem;margin-bottom:.35rem}.auth-card>p{margin:0 0 1.25rem;color:var(--ink-2)}.tabs{display:flex;background:var(--surface-2);padding:3px;border-radius:10px;margin-bottom:1.1rem}.tabs button{flex:1;border:0;background:transparent;padding:.45rem;border-radius:8px;cursor:pointer;color:var(--ink-2);font-weight:600}.tabs button.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #0000000f}.divider{display:flex;align-items:center;gap:.75rem;margin:1.1rem 0;color:var(--ink-3);font-size:12px}.divider:before,.divider:after{content:"";height:1px;background:var(--line);flex:1}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:1rem}.video{overflow:hidden;display:flex;flex-direction:column}.video .thumb{position:relative;aspect-ratio:16/9;background:var(--surface-2)}.video .thumb img{width:100%;height:100%;object-fit:cover;display:block}.video .thumb .tag{position:absolute;left:8px;bottom:8px;padding:2px 7px;border-radius:6px;background:#0a0e16c7;color:#fff;font-size:11.5px;font-weight:600}.video .body{padding:.8rem .9rem .9rem;display:flex;flex-direction:column;gap:.55rem;flex:1}.video h3{font-size:14.5px;line-height:1.35}.video .actions{margin-top:auto}.player-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(320px,1fr);gap:1.1rem;align-items:start}@media (max-width: 940px){.player-grid{grid-template-columns:1fr}}.frame{position:relative;aspect-ratio:16/9;background:#0b0f16;border-radius:var(--radius);overflow:hidden}.frame iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0}.frame .fallback{position:absolute;inset:auto 0 0;padding:.7rem .9rem;color:#dbe3ee;font-size:13px;background:linear-gradient(transparent,#080b10d9)}.panel{padding:1rem 1.1rem}.panel-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.7rem}.panel-head h3{font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-2)}.cues{max-height:62vh;overflow:auto;display:flex;flex-direction:column;gap:.1rem}.cue{padding:.5rem .6rem;border-radius:8px;cursor:pointer}.cue:hover{background:var(--surface-2)}.cue .t{font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums;margin-right:.45rem}.cue.past{opacity:.55}.cue.active{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent);opacity:1}.w{cursor:pointer;border-radius:4px;padding:0 1px}button.w{border:0;background:transparent;font:inherit;color:inherit;line-height:inherit}.w:hover{background:#ffe9c2;box-shadow:0 0 0 2px #ffe9c2}.w.known{color:var(--ink-3);text-decoration:line-through}.w.saved{background:#dcf5e3;box-shadow:0 0 0 2px #dcf5e3}.w.selected{background:#ffd43b;box-shadow:0 0 0 2px #ffd43b}.now-playing{margin-top:.9rem;padding:.85rem;border-radius:10px;background:var(--surface-2);font-size:1.05rem}.now-playing .w{font-size:1.05rem}.popover-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#0c111a47;display:flex;align-items:flex-end;justify-content:center;padding:0}@media (min-width: 720px){.popover-backdrop{align-items:center;padding:2rem}}.popover{width:min(560px,100%);background:var(--surface);border-radius:14px 14px 0 0;box-shadow:0 -8px 40px #00000038;padding:1.15rem 1.25rem 1.25rem;max-height:84vh;overflow:auto}@media (min-width: 720px){.popover{border-radius:14px}}.popover h2{font-size:1.35rem;display:flex;align-items:baseline;gap:.55rem;flex-wrap:wrap}.popover .phon{font-size:14px;color:var(--ink-2);font-weight:400}.pos{font-size:12.5px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.04em;margin:.9rem 0 .25rem}.def{margin:0 0 .45rem}.def .ex{display:block;color:var(--ink-2);font-style:italic;font-size:13.5px;margin-top:2px}.src{font-size:12px;color:var(--ink-3);margin-top:.8rem}blockquote.source{margin:.7rem 0;padding:.5rem .7rem;border-left:3px solid var(--accent);background:var(--accent-soft);font-size:13.5px;border-radius:0 8px 8px 0;color:#243b8f}.filters{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin-bottom:1rem}.filters input[type=text]{max-width:240px}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);padding:.5rem .6rem;border-bottom:1px solid var(--line)}.table td{padding:.7rem .6rem;border-bottom:1px solid var(--line);vertical-align:top}.table tr:hover td{background:var(--surface-2)}.chip{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;background:var(--surface-2);color:var(--ink-2)}.chip.due{background:#fff0e6;color:#c2500f;font-weight:600}.chip.new{background:#e7f5ec;color:#2b7a3d}.word-cell{font-weight:650}.review-wrap{max-width:660px;margin:0 auto}.review-card{padding:2.2rem 1.5rem;text-align:center;min-height:250px;display:flex;flex-direction:column;justify-content:center;gap:.8rem}.review-card .big{font-size:2.4rem;font-weight:700;letter-spacing:-.02em}.review-card .answer{text-align:left}.progress{height:5px;background:var(--line);border-radius:999px;overflow:hidden;margin-bottom:1rem}.progress>div{height:100%;background:var(--accent);transition:width .25s ease}.grade{display:flex;gap:.6rem;justify-content:center;margin-top:1.1rem;flex-wrap:wrap}.grade .btn{min-width:118px}.grade .again{color:var(--bad)}.grade .good{color:var(--good)}.grade .easy{color:var(--accent)}.spin{animation:spin 1s linear infinite;width:15px;height:15px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;left:50%;bottom:22px;transform:translate(-50%);background:#16202e;color:#fff;padding:.6rem 1rem;border-radius:10px;font-size:13.5px;box-shadow:0 10px 30px #00000040;z-index:60;display:flex;gap:.6rem;align-items:center}details.help{margin-top:.9rem}details.help summary{cursor:pointer;font-weight:600;color:var(--ink-2);font-size:13.5px}details.help .inner{font-size:13.5px;color:var(--ink-2);padding-top:.5rem}kbd{background:var(--surface-2);border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;padding:0 5px;font-size:12px}
