:root{--bg-0:#0a0d1a;--bg-1:#0f1424;--bg-2:#151b30;--panel:#171e33bf;--panel-solid:#171e33;--panel-2:#1e2744;--border:#94a3b824;--border-strong:#94a3b847;--text:#e6ebf5;--text-2:#b9c2d6;--muted:#7f8aa8;--accent:#7c5cff;--accent-2:#5b8dff;--accent-glow:#7c5cff59;--accent-hover:#8f74ff;--success:#22c55e;--success-soft:#22c55e1f;--danger:#ef4444;--danger-soft:#ef444424;--warn:#f59e0b;--warn-soft:#f59e0b24;--info:#38bdf8;--r-sm:8px;--r:12px;--r-lg:18px;--r-xl:24px;--shadow-1:0 1px 2px #0000004d;--shadow-2:0 10px 30px #00000059;--shadow-glow:0 0 0 1px #7c5cff40, 0 12px 40px #7c5cff40;--t-fast:.12s;--t:.2s;--ease:cubic-bezier(.2,.7,.2,1)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:var(--text);background:var(--bg-0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:radial-gradient(1200px 700px at 10% -10%,#7c5cff2e,#0000 60%),radial-gradient(900px 600px at 100% 0,#5b8dff1f,#0000 55%),radial-gradient(700px 500px at 50% 100%,#38bdf814,#0000 60%);background-attachment:fixed;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5}h1,h2,h3,h4{letter-spacing:-.01em;margin:0 0 .5rem;font-weight:700}h1{font-size:1.8rem}h2{font-size:1.4rem}h3{font-size:1.1rem}p{margin:.5rem 0}code,.mono{font-family:JetBrains Mono,ui-monospace,Menlo,monospace}a{color:var(--accent-2);transition:color var(--t) var(--ease);text-decoration:none}a:hover{color:var(--accent-hover)}button{cursor:pointer;border:1px solid var(--border-strong);color:var(--text);border-radius:var(--r-sm);transition:background var(--t) var(--ease), border-color var(--t) var(--ease), transform var(--t-fast) var(--ease), box-shadow var(--t) var(--ease);background:#ffffff08;align-items:center;gap:.45rem;padding:.55rem 1rem;font-family:inherit;font-size:.9rem;font-weight:500;display:inline-flex}button:hover:not(:disabled){background:#ffffff12;border-color:#94a3b866}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible{box-shadow:0 0 0 3px var(--accent-glow);outline:none}button.primary{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#fff;border-color:#0000;font-weight:600;box-shadow:0 6px 16px #7c5cff59}button.primary:hover:not(:disabled){filter:brightness(1.08);box-shadow:0 8px 22px #7c5cff73}button.success{color:#fff;background:linear-gradient(135deg,#16a34a,#22c55e);border-color:#0000;font-weight:600;box-shadow:0 6px 16px #22c55e4d}button.success:hover:not(:disabled){filter:brightness(1.08)}button.danger{color:#fff;background:linear-gradient(135deg,#dc2626,#ef4444);border-color:#0000;font-weight:600;box-shadow:0 6px 16px #ef44444d}button.danger:hover:not(:disabled){filter:brightness(1.08)}button.ghost{border-color:var(--border);background:0 0}button.icon{justify-content:center;width:36px;height:36px;padding:.45rem}input,select,textarea{border-radius:var(--r-sm);border:1px solid var(--border-strong);width:100%;color:var(--text);transition:border-color var(--t) var(--ease), box-shadow var(--t) var(--ease);background:#0b0f1a99;padding:.65rem .85rem;font-family:inherit;font-size:.95rem}input::placeholder,textarea::placeholder{color:#566080}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);outline:none}textarea{resize:vertical;min-height:90px}label{color:var(--text-2);margin:.85rem 0 .35rem;font-size:.85rem;font-weight:500;display:block}.container{max-width:1080px;margin:0 auto;padding:1.75rem 1.5rem 3rem}.container.wide{max-width:1180px}.card{background:var(--panel);-webkit-backdrop-filter:blur(16px)saturate(140%);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-2);padding:1.5rem}.card.solid{background:var(--panel-solid);-webkit-backdrop-filter:none;backdrop-filter:none}.center{justify-content:center;align-items:center;min-height:100vh;padding:2rem 1rem;display:flex}.form-narrow{width:100%;max-width:460px}.row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.row-between{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.stack{flex-direction:column;gap:1.25rem;display:flex}.stack-sm{flex-direction:column;gap:.5rem;display:flex}.muted{color:var(--muted);font-size:.88rem}.text-2{color:var(--text-2)}.error{color:#fca5a5;background:var(--danger-soft);border-radius:var(--r-sm);border:1px solid #ef44444d;margin-top:.75rem;padding:.65rem .85rem;font-size:.9rem}.success-msg{color:#86efac;background:var(--success-soft);border-radius:var(--r-sm);border:1px solid #22c55e4d;margin-top:.75rem;padding:.65rem .85rem;font-size:.9rem}hr{border:none;border-top:1px solid var(--border);margin:1.25rem 0}.navbar{z-index:20;-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border);background:#0a0d1abf;justify-content:space-between;align-items:center;padding:.85rem 1.5rem;display:flex;position:sticky;top:0}.navbar .brand{letter-spacing:-.01em;align-items:center;gap:.55rem;font-size:1.05rem;font-weight:700;display:flex}.navbar .brand-icon{background:linear-gradient(135deg, var(--accent), var(--accent-2));border-radius:9px;place-items:center;width:32px;height:32px;font-size:1rem;display:grid;box-shadow:0 4px 12px #7c5cff66}.navbar nav{align-items:center;gap:.35rem;display:flex}.nav-link{color:var(--text-2);border-radius:var(--r-sm);transition:background var(--t) var(--ease), color var(--t) var(--ease);padding:.4rem .85rem;font-size:.9rem;font-weight:500}.nav-link:hover{color:var(--text);background:#ffffff0f;text-decoration:none}.nav-link.active{color:var(--accent);background:#7c5cff26}.avatar{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#fff;border-radius:50%;place-items:center;width:34px;height:34px;font-size:.85rem;font-weight:700;display:grid;box-shadow:0 3px 10px #7c5cff59}.badge{border:1px solid var(--border);background:#ffffff0a;border-radius:999px;align-items:center;gap:.35rem;padding:3px 10px;font-size:.75rem;font-weight:500;display:inline-flex}.badge.ok{background:var(--success-soft);color:#86efac;border-color:#22c55e59}.badge.warn{background:var(--warn-soft);color:#fcd34d;border-color:#f59e0b59}.badge.err{background:var(--danger-soft);color:#fca5a5;border-color:#ef444459}.badge.info{color:#7dd3fc;background:#38bdf81f;border-color:#38bdf859}.table-wrap{-webkit-overflow-scrolling:touch;width:100%;margin:0 -.25rem;overflow-x:auto}table{border-collapse:separate;border-spacing:0;width:100%;min-width:480px}th,td{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;padding:.75rem;font-size:.9rem}th{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;background:#ffffff05;font-size:.78rem;font-weight:600}tbody tr{transition:background var(--t) var(--ease)}tbody tr:hover{background:#ffffff08}tbody tr:last-child td{border-bottom:none}.report-box{border:1px solid var(--border);border-radius:var(--r);white-space:pre-wrap;background:#0b0f1ab3;min-height:180px;padding:1.5rem 1.75rem;font-size:1.05rem;line-height:1.7}.lang-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin-top:1.25rem;display:grid}.lang-card{border:1px solid var(--border-strong);border-radius:var(--r);text-align:center;cursor:pointer;transition:transform var(--t) var(--ease), border-color var(--t) var(--ease), background var(--t) var(--ease), box-shadow var(--t) var(--ease);background:#ffffff08;padding:1.5rem 1rem}.lang-card:hover{border-color:var(--accent);box-shadow:var(--shadow-glow);background:#7c5cff14;transform:translateY(-3px)}.lang-card .flag{margin-bottom:.6rem;font-size:2.2rem;display:block}.lang-card .lbl{font-size:1rem;font-weight:600}.lang-card .sub{color:var(--muted);margin-top:.25rem;font-size:.8rem}.record-wrap{flex-direction:column;align-items:center;gap:.75rem;padding:1rem 0;display:flex}.record-btn{color:#fff;background:linear-gradient(135deg, var(--accent), var(--accent-2));width:96px;height:96px;transition:transform var(--t) var(--ease), box-shadow var(--t) var(--ease);border:none;border-radius:50%;place-items:center;font-size:2rem;display:grid;box-shadow:0 10px 28px #7c5cff66}.record-btn:hover:not(:disabled){transform:scale(1.05)}.record-btn.recording{background:linear-gradient(135deg,#dc2626,#ef4444);animation:1.4s ease-in-out infinite pulse}@keyframes pulse{0%,to{box-shadow:0 0 #ef44448c,0 10px 28px #ef444466}50%{box-shadow:0 0 0 18px #ef444400,0 10px 28px #ef444466}}.timer{letter-spacing:.05em;color:var(--text);font-family:JetBrains Mono,ui-monospace,monospace;font-size:1.75rem;font-weight:600}.timer.recording{color:#ef4444}audio{filter:invert(.85)hue-rotate(180deg);border-radius:8px;width:100%;margin-top:.75rem}.progress-bar{background:#ffffff0f;border-radius:999px;height:8px;position:relative;overflow:hidden}.progress-bar>div{background:linear-gradient(90deg, var(--accent), var(--accent-2));height:100%;transition:width .5s var(--ease);box-shadow:0 0 12px var(--accent-glow);border-radius:999px}.progress-inline{flex-wrap:wrap;align-items:center;gap:.85rem;display:flex}.progress-inline .progress-bar{flex:1;min-width:160px}.progress-inline .count{color:var(--text-2);font-family:JetBrains Mono,monospace;font-size:.9rem}.progress-inline .count strong{color:var(--text);font-weight:700}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1rem;display:grid}.stat-card{background:var(--panel);-webkit-backdrop-filter:blur(14px)saturate(140%);backdrop-filter:blur(14px)saturate(140%);border:1px solid var(--border);border-radius:var(--r);transition:transform var(--t) var(--ease), border-color var(--t) var(--ease);align-items:flex-start;gap:.9rem;padding:1.25rem;display:flex}.stat-card:hover{border-color:var(--border-strong);transform:translateY(-2px)}.stat-card .stat-icon{color:#fff;border-radius:10px;flex-shrink:0;place-items:center;width:42px;height:42px;display:grid}.stat-card .stat-icon.violet{background:linear-gradient(135deg,#7c5cff,#5b8dff)}.stat-card .stat-icon.green{background:linear-gradient(135deg,#16a34a,#22c55e)}.stat-card .stat-icon.amber{background:linear-gradient(135deg,#d97706,#f59e0b)}.stat-card .stat-icon.red{background:linear-gradient(135deg,#dc2626,#ef4444)}.stat-card .stat-icon.blue{background:linear-gradient(135deg,#0284c7,#38bdf8)}.stat-card .stat-body{flex:1;min-width:0}.stat-card .stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.78rem;font-weight:600}.stat-card .stat-value{letter-spacing:-.02em;margin-top:.15rem;font-size:1.85rem;font-weight:700}.stat-card .stat-sub{color:var(--muted);margin-top:.15rem;font-size:.8rem}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;animation:fadeIn var(--t) var(--ease);background:#04060cb3;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:var(--panel-solid);border:1px solid var(--border);border-radius:var(--r-lg);width:min(520px,100%);max-height:calc(100vh - 2rem);box-shadow:var(--shadow-2);animation:slideUp var(--t) var(--ease);padding:1.5rem;overflow:auto}.confirm-modal{max-width:440px}.confirm-icon{background:#7c5cff26;border-radius:50%;place-items:center;width:56px;height:56px;margin:0 0 1rem;font-size:1.8rem;display:grid}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.tabs{border:1px solid var(--border);border-radius:var(--r);background:#ffffff08;gap:.35rem;padding:.35rem;display:flex}.tabs button{box-shadow:none;color:var(--text-2);border-radius:calc(var(--r) - 4px);background:0 0;border:none;padding:.5rem 1rem;font-weight:500}.tabs button.active{color:#fff;background:#7c5cff2e}.tabs button:hover:not(.active){color:var(--text);background:#ffffff0d}.toast-region{z-index:1000;flex-direction:column;gap:.6rem;max-width:90vw;display:flex;position:fixed;bottom:1.5rem;right:1.5rem}.toast{background:var(--panel-solid);border:1px solid var(--border-strong);border-left:3px solid var(--accent);border-radius:var(--r-sm);min-width:260px;max-width:380px;box-shadow:var(--shadow-2);animation:toastIn var(--t) var(--ease);padding:.8rem 1rem;font-size:.9rem}.toast.ok{border-left-color:var(--success)}.toast.err{border-left-color:var(--danger)}.toast.warn{border-left-color:var(--warn)}@keyframes toastIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:none}}.empty{text-align:center;color:var(--muted);padding:2.5rem 1rem}.empty .icon{opacity:.5;margin-bottom:.5rem;font-size:2.5rem}.dots:after{content:"…";text-align:left;width:1em;animation:1.2s steps(4,end) infinite dots;display:inline-block}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}to{content:"…"}}.word-tokens{word-spacing:4px;line-height:1.9}.word-tokens span{transition:background var(--t) var(--ease);border-radius:4px;padding:1px 4px;display:inline-block}.word-tokens span:hover{background:#ffffff0f}.filter-bar select,.filter-bar input{width:auto;min-width:140px}.rec-row{cursor:pointer}.rec-detail-modal{width:min(740px,100%)}.aligning-box{gap:.35rem}.export-actions select{width:auto}.page-hero{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.5rem 0 .25rem;display:flex}.page-hero h1{margin:0}.page-hero .subtitle{color:var(--muted);margin-top:.25rem;font-size:.95rem}.nav-icon{display:none}.nav-link{align-items:center;gap:.4rem;display:inline-flex}.logout-btn{display:inline-flex}@media (width<=780px){.container{padding:1.1rem 1rem 2.5rem}.navbar{padding:.7rem .9rem}h1{font-size:1.35rem}h2{font-size:1.2rem}.lang-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.75rem}.lang-card{padding:1.2rem .8rem}.lang-card .flag{font-size:1.9rem}.stat-card{padding:1rem}.stat-card .stat-value{font-size:1.55rem}.page-hero{flex-direction:column;align-items:flex-start}.toast-region{bottom:.75rem;left:.75rem;right:.75rem}.toast{width:100%;min-width:0;max-width:none}}@media (width<=560px){.navbar{gap:.5rem;padding:.6rem .75rem}.navbar nav{gap:.2rem}.brand-name,.nav-label{display:none}.nav-icon{font-size:1.1rem;display:inline}.nav-link{padding:.4rem .55rem}.logout-btn{padding:.45rem .6rem}.avatar{width:30px;height:30px;font-size:.75rem}.card{border-radius:14px;padding:1rem}.report-box{padding:1.15rem;font-size:1rem}.record-btn{width:82px;height:82px;font-size:1.7rem}.timer{font-size:1.4rem}.record-header .row-between{flex-direction:column;align-items:stretch;gap:.85rem}.record-header .progress-inline{width:100%}.record-header .progress-inline .progress-bar{flex:1;width:auto}.tabs{width:100%;overflow-x:auto}.tabs button{white-space:nowrap}.stat-grid{grid-template-columns:1fr 1fr}.modal{border-radius:14px;padding:1.1rem}.confirm-icon{width:48px;height:48px;font-size:1.5rem}th,td{padding:.6rem .5rem;font-size:.85rem}}@media (width<=380px){.stat-grid,.lang-grid{grid-template-columns:1fr}}.report-box,.word-tokens{overflow-wrap:anywhere;word-wrap:break-word}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#94a3b833;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:#94a3b859}
