:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0b0f19;--surface:#131b2e;--border:#243049;--text:#f1f5f9;--muted:#94a3b8;--cyan:#38bdf8;--violet:#a78bfa;--green:#34d399;--amber:#fbbf24;--pink:#f472b6;--radius:14px;--font:"Inter", "Segoe UI", system-ui, -apple-system, sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font);min-height:100vh;line-height:1.5}#app{max-width:1100px;margin:0 auto;padding:24px 16px 48px}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.brand{background:linear-gradient(90deg, var(--cyan), var(--violet));color:#0000;-webkit-background-clip:text;background-clip:text;font-size:1.5rem}.muted{color:var(--muted);font-size:.9rem}.tabs{border-bottom:1px solid var(--border);gap:8px;margin-bottom:20px;padding-bottom:6px;display:flex;overflow-x:auto}.tab{color:var(--muted);white-space:nowrap;border:1px solid #0000;border-radius:10px;padding:9px 16px;font-size:.92rem;font-weight:600;text-decoration:none}.tab:hover{color:var(--text);background:var(--surface)}.tab[aria-current=page]{color:var(--cyan);background:var(--surface);border-color:#38bdf859}.tab:focus-visible,.btn:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.btn{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:10px;padding:8px 14px;font-size:.85rem;font-weight:600}.btn--ghost:hover{border-color:var(--muted)}.metrics{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:22px;display:grid}.metric{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);border-left:4px solid var(--accent,var(--cyan));padding:18px}.metric[data-accent=cyan]{--accent:var(--cyan)}.metric[data-accent=violet]{--accent:var(--violet)}.metric[data-accent=green]{--accent:var(--green)}.metric[data-accent=amber]{--accent:var(--amber)}.metric[data-accent=pink]{--accent:var(--pink)}.metric__title{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.72rem;font-weight:600}.metric__value{font-variant-numeric:tabular-nums;margin:4px 0 2px;font-size:2rem;font-weight:700}.metric__desc{color:var(--muted);font-size:.8rem}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px}.panel__title{margin-bottom:14px;font-size:1.1rem}.placeholder p+p{margin-top:6px}.table-wrap{overflow-x:auto}table{border-collapse:collapse;text-align:left;width:100%;font-size:.92rem}th,td{border-bottom:1px solid var(--border);padding:12px 14px}th{color:var(--muted);font-size:.8rem;font-weight:600}em{color:var(--cyan);font-family:ui-monospace,JetBrains Mono,monospace;font-size:.85rem;font-style:normal}.badge{border-radius:999px;padding:3px 10px;font-size:.75rem;font-weight:700;display:inline-block}.badge.ok{color:var(--green);background:#34d39926}.badge.warn{color:var(--amber);background:#fbbf2426}.loading,.error{text-align:center;padding:40px 0}.error{color:#f87171}@media (width<=520px){.brand{font-size:1.25rem}.metric__value{font-size:1.7rem}}.center{text-align:center}.study{flex-direction:column;gap:14px;margin-bottom:18px;display:flex}.study__head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:4px;display:flex}.study__head .panel__title{margin-bottom:0}.study--done{text-align:center;padding:36px 22px}.panel+.panel,.study+.panel{margin-top:18px}.fcard{all:unset;perspective:1000px;cursor:pointer;border-radius:var(--radius);width:100%;max-width:460px;height:270px;margin:0 auto;display:block}.fcard:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}.fcard__inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .5s;display:block;position:relative}.fcard.is-flipped .fcard__inner{transform:rotateY(180deg)}.fcard__face{text-align:center;border-radius:var(--radius);border:1px solid var(--border);backface-visibility:hidden;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:24px;display:flex;position:absolute;inset:0}.fcard__front{background:linear-gradient(160deg,#16213a,#0e1626);border-color:#38bdf859}.fcard__back{background:linear-gradient(160deg,#1d1838,#0e1626);border-color:#a78bfa66;transform:rotateY(180deg)}.fcard__meta{color:var(--muted);font-family:ui-monospace,monospace;font-size:.75rem;position:absolute;top:14px;left:16px}.fcard__term{overflow-wrap:anywhere;font-family:ui-monospace,JetBrains Mono,monospace;font-size:2.2rem;font-weight:800}.fcard__phonetic{color:var(--amber);font-family:ui-monospace,monospace}.fcard__hint{color:var(--muted);font-size:.75rem;position:absolute;bottom:14px}.fcard__meaning{color:#c4b5fd;font-size:1.35rem;font-weight:700}.fcard__example{color:var(--muted);font-family:ui-monospace,monospace;font-size:.9rem;font-style:italic}.audio{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.rates{grid-template-columns:repeat(3,1fr);gap:10px;width:100%;max-width:460px;margin:0 auto;display:grid}.rate{font:inherit;cursor:pointer;color:var(--text);background:0 0;border:1px solid;border-radius:12px;flex-direction:column;align-items:center;gap:2px;padding:12px 8px;display:flex}.rate span{color:var(--muted);font-size:.72rem}.rate--hard{background:#f8717114;border-color:#f8717180}.rate--medium{background:#fbbf2414;border-color:#fbbf2480}.rate--easy{background:#34d39914;border-color:#34d39980}.rate:hover{filter:brightness(1.25)}.rate:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.boxes{text-align:center;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:14px;display:grid}.box{flex-direction:column;align-items:center;gap:4px;display:flex}.box__bar{background:var(--bg);border:1px solid var(--border);border-radius:8px;align-items:flex-end;width:100%;max-width:56px;height:70px;display:flex;overflow:hidden}.box__bar span{background:linear-gradient(to top, var(--cyan), var(--violet));width:100%;display:block}.btn--primary{background:var(--cyan);color:#06121f;border-color:#0000}.btn--danger:hover{border-color:#f87171}.form{gap:12px;margin:6px 0 18px;display:grid}.form__row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.form label{color:var(--muted);gap:4px;font-size:.8rem;font-weight:600;display:grid}.form input,.form textarea,.form select{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:10px;width:100%;padding:10px 12px}.form input:focus,.form textarea:focus,.form select:focus{outline:2px solid var(--cyan);outline-offset:0}.error-text{color:#f87171;font-size:.85rem}@media (width<=520px){.form__row,.rates{grid-template-columns:1fr}.fcard__term{font-size:1.8rem}}@media (prefers-reduced-motion:reduce){.fcard__inner{transition:none}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.badge.muted{color:var(--muted);background:#94a3b826}.progress-cell{min-width:200px}.progress-cell>*{vertical-align:middle}.progress-out{text-align:right;font-variant-numeric:tabular-nums;width:3.2em;margin-left:8px;font-size:.85rem;display:inline-block}.range{width:calc(100% - 4.5em);max-width:180px;accent-color:var(--cyan);cursor:pointer}.panel .muted+.form,.panel .muted+.table-wrap{margin-top:14px}@media (width<=640px){.table--stack thead{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.table--stack,.table--stack tbody,.table--stack tr,.table--stack td{width:100%;display:block}.table--stack tr{border-bottom:1px solid var(--border);padding:12px 0;position:relative}.table--stack td{border:0;padding:4px 0}.table--stack td[data-label]{justify-content:space-between;align-items:center;gap:12px;display:flex}.table--stack td[data-label]:before{content:attr(data-label);color:var(--muted);flex:none;font-size:.78rem;font-weight:600}.table--stack .cell-title{padding-right:52px}.table--stack .cell-actions{width:auto;padding:0;position:absolute;top:10px;right:0}.table--stack .progress-cell{min-width:0}.range{width:100%;max-width:none}}:root{--heat-0:#1b2540;--heat-1:#0e4429;--heat-2:#006d32;--heat-3:#26a641;--heat-4:#39d353;--cell:12px;--cell-gap:3px}.heat{margin-bottom:22px}.heat__scroll{border-radius:8px;margin-top:12px;padding:6px 0 8px;overflow-x:auto}.heat__scroll:focus-visible{outline:2px solid var(--cyan)}.heat__months,.heat__grid{grid-auto-columns:var(--cell);gap:var(--cell-gap);display:grid}.heat__months{grid-template-columns:repeat(53, var(--cell));height:16px;color:var(--muted);margin-left:34px;font-size:.7rem}.heat__months span{white-space:nowrap}.heat__body{gap:6px;display:flex}.heat__days{grid-template-rows:repeat(7, var(--cell));gap:var(--cell-gap);width:28px;color:var(--muted);font-size:.65rem;line-height:var(--cell);display:grid}.heat__grid{grid-template-rows:repeat(7, var(--cell));grid-auto-flow:column}.cell{width:var(--cell);height:var(--cell);background:var(--heat-0);border-radius:3px;display:inline-block}.cell[data-level="1"]{background:var(--heat-1)}.cell[data-level="2"]{background:var(--heat-2)}.cell[data-level="3"]{background:var(--heat-3)}.cell[data-level="4"]{background:var(--heat-4)}.cell--future{background:0 0}.heat__foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:8px;display:flex}.heat__foot .muted{font-size:.75rem}.heat__legend{color:var(--muted);align-items:center;gap:4px;font-size:.72rem;display:flex}.heat__stats{border-top:1px solid var(--border);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:16px;padding-top:14px;display:grid}.heat__stats dt{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.72rem}.heat__stats dd{font-variant-numeric:tabular-nums;font-weight:700}.form--inline{flex-wrap:wrap;align-items:end;gap:12px;display:flex}.form--inline label{flex:140px}.form--inline .error-text{flex-basis:100%}.quota{flex-wrap:wrap;align-items:end;gap:12px;margin:14px 0 4px;display:flex}.quota label{color:var(--muted);gap:4px;font-size:.8rem;font-weight:600;display:grid}.quota input{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:10px;width:120px;padding:8px 10px}.btn:disabled{opacity:.45;cursor:not-allowed}
