:root{--teal: #32707c;--teal-deep: #1f4a52;--iron: #a8371c;--iron-deep: #702414;--oak: #d4c4b7;--oak-warm: #f5e9d6}[data-theme=dark]{--bg-grad-1: #0b1f24;--bg-grad-2: #1b3a3f;--bg-grad-3: #2a1410;--surface: rgba(20, 36, 40, .55);--surface-strong: rgba(13, 28, 32, .85);--surface-input: rgba(255, 255, 255, .06);--border: rgba(213, 196, 183, .18);--border-strong: rgba(213, 196, 183, .32);--text: #f5e9d6;--text-dim: rgba(245, 233, 214, .72);--text-muted: rgba(245, 233, 214, .5);--primary: var(--teal);--primary-hover: #3d8694;--accent: var(--iron);--accent-hover: #c6492a;--danger: #d04848;--success: #4faa6f;--warning: #d29541;--shadow: 0 16px 40px rgba(0, 0, 0, .45);--shadow-soft: 0 4px 14px rgba(0, 0, 0, .25)}[data-theme=light]{--bg-grad-1: #f5e9d6;--bg-grad-2: #e0d3c2;--bg-grad-3: #c8d7d9;--surface: rgba(255, 255, 255, .65);--surface-strong: rgba(255, 255, 255, .92);--surface-input: rgba(255, 255, 255, .85);--border: rgba(50, 112, 124, .22);--border-strong: rgba(50, 112, 124, .4);--text: #1b3a3f;--text-dim: rgba(27, 58, 63, .78);--text-muted: rgba(27, 58, 63, .55);--primary: var(--teal);--primary-hover: var(--teal-deep);--accent: var(--iron);--accent-hover: var(--iron-deep);--danger: #b13a3a;--success: #3d8a5e;--warning: #b87a2a;--shadow: 0 14px 36px rgba(31, 74, 82, .18);--shadow-soft: 0 4px 12px rgba(31, 74, 82, .12)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;min-height:100%}body{font-family:Poppins,system-ui,-apple-system,Segoe UI,sans-serif;color:var(--text);background:radial-gradient(at 0% 0%,var(--bg-grad-1) 0%,transparent 55%),radial-gradient(at 100% 0%,var(--bg-grad-3) 0%,transparent 60%),radial-gradient(at 50% 100%,var(--bg-grad-2) 0%,transparent 60%),linear-gradient(180deg,var(--bg-grad-1),var(--bg-grad-2));background-attachment:fixed;overflow-x:hidden}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-hover);text-decoration:underline}.glass{background:var(--surface);backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow)}.glass-soft{background:var(--surface);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-soft)}.field{position:relative;margin-bottom:22px}.field input,.field select,.field textarea{width:100%;background:var(--surface-input);border:none;border-bottom:1.5px solid var(--border-strong);color:var(--text);font:inherit;padding:12px 8px 10px;outline:none;transition:border-color .2s ease}.field input:focus,.field select:focus,.field textarea:focus{border-bottom-color:var(--primary)}.field select option,select option{background:var(--surface-strong);color:var(--text)}.field label{position:absolute;left:8px;top:12px;color:var(--text-muted);pointer-events:none;transition:.2s ease;font-size:14px}.field input:focus+label,.field input:not(:placeholder-shown)+label,.field textarea:focus+label,.field textarea:not(:placeholder-shown)+label{top:-10px;font-size:11px;color:var(--primary);font-weight:500}.field.with-select{padding-top:18px}.field.with-select label{position:absolute;top:0;left:0;font-size:11px;color:var(--primary);font-weight:500}.field.with-select select{padding-right:28px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;cursor:pointer;font:inherit;font-weight:600;letter-spacing:.4px;padding:11px 18px;border-radius:10px;transition:transform .12s ease,background .18s ease,box-shadow .18s ease;color:var(--oak-warm);background:var(--primary)}.btn:hover{background:var(--primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-soft)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-accent{background:var(--accent)}.btn-accent:hover{background:var(--accent-hover)}.btn-ghost{background:transparent;border:1px solid var(--border-strong);color:var(--text)}.btn-ghost:hover{background:var(--surface)}.btn-danger{background:var(--danger)}.btn-sm{padding:7px 12px;font-size:13px;border-radius:8px}.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:var(--surface-input);border:1px solid var(--border);font-size:12px;color:var(--text-dim)}.pill-accent{background:#a8371c26;color:var(--accent);border-color:#a8371c59}.pill-primary{background:#32707c2e;color:var(--primary);border-color:#32707c66}.app-shell{display:grid;grid-template-rows:auto 1fr;min-height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;margin:16px;gap:12px;position:sticky;top:16px;z-index:20}.topbar .brand{display:flex;align-items:center;gap:12px;font-weight:600;letter-spacing:.5px}.topbar .brand .mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--accent));box-shadow:var(--shadow-soft);display:grid;place-items:center;color:var(--oak-warm);font-weight:700}.topbar .brand .brand-logo{height:40px;width:auto;object-fit:contain;border-radius:8px}:root[data-theme=dark] .brand-logo-light,:root.dark .brand-logo-light{display:none}:root[data-theme=light] .brand-logo-dark,:root:not([data-theme=dark]):not(.dark) .brand-logo-dark{display:none}.topbar-actions{display:flex;align-items:center;gap:10px}.content{padding:0 24px 80px}.fluid-tabs{position:relative;display:inline-flex;padding:6px;border-radius:999px;gap:4px}.fluid-tabs button{position:relative;z-index:2;background:transparent;border:none;color:var(--text-dim);font:inherit;font-weight:500;padding:9px 18px;border-radius:999px;cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:color .2s ease}.fluid-tabs button.active{color:var(--text);font-weight:600}.fluid-tabs .slider{position:absolute;top:6px;bottom:6px;left:6px;background:var(--surface-strong);border:1px solid var(--border-strong);border-radius:999px;transition:transform .5s cubic-bezier(.4,0,.5,1),width .5s cubic-bezier(.4,0,.5,1);box-shadow:var(--shadow-soft);z-index:1}.grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));padding:18px 0}.card-item{display:flex;flex-direction:column;border-radius:16px;overflow:hidden;background:var(--surface);border:1px solid var(--border);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:transform .18s ease,box-shadow .18s ease;cursor:pointer}.card-item:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.card-item .cover{aspect-ratio:4 / 5.2;background:linear-gradient(135deg,var(--primary),var(--accent));display:grid;place-items:center;overflow:hidden}.cover svg,.cover img{width:100%;height:100%;object-fit:cover;display:block}.card-item .meta{padding:12px 14px 4px}.card-item .meta .title{font-weight:600;font-size:14px;line-height:1.25}.card-item .meta .sub{color:var(--text-muted);font-size:12px;margin-top:4px}.card-bottom-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 14px 12px;flex-wrap:nowrap}.card-bottom-row .pills{display:flex;gap:4px;flex:1;min-width:0;flex-wrap:nowrap;overflow:hidden}.card-bottom-row .pills .pill{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;max-width:160px}.card-completed-btn{font-size:11px;padding:4px 10px;flex-shrink:0}.cover-progress-overlay{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(0deg,#000000d9,#0000);padding:16px 12px 8px;display:flex;align-items:flex-end;justify-content:flex-end;color:var(--oak-warm);font-weight:600;font-size:13px}.cover-progress-overlay:before{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;background:#ffffff26}.cover-progress-bar{position:absolute;left:0;bottom:0;height:4px;background:linear-gradient(90deg,var(--primary),var(--accent));transition:width .4s ease}.card-edit{position:absolute;top:8px;right:8px;z-index:3;width:30px;height:30px;border-radius:50%;background:#142428b3;color:var(--oak-warm);display:grid;place-items:center;text-decoration:none;font-size:14px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;transition:opacity .15s ease}.card-item:hover .card-edit{opacity:1}.card-edit:hover{background:var(--accent);color:var(--oak-warm);text-decoration:none}.list-table-wrap{padding:0}.list-table{width:100%;border-collapse:collapse;font-size:14px}.list-table th,.list-table td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--border)}.list-table th{font-weight:500;color:var(--text-muted);font-size:12px;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.list-table th:hover{color:var(--text)}.list-table tr:hover td{background:var(--surface-input)}.list-table tr:last-child td{border-bottom:none}.list-table .list-cover{width:44px;height:44px;border-radius:8px;overflow:hidden;background:linear-gradient(135deg,var(--primary),var(--accent))}.list-table .list-cover svg,.list-table .list-cover img{width:100%;height:100%;object-fit:cover;display:block}.list-view{padding:4px}.list-row{display:grid;grid-template-columns:56px 1fr auto;gap:14px;align-items:center;padding:10px 14px;border-radius:12px;text-decoration:none;color:var(--text);transition:background .15s ease}.list-row:hover{background:var(--surface-input);text-decoration:none}.list-row+.list-row{border-top:1px solid var(--border)}.list-cover{width:56px;height:56px;border-radius:8px;overflow:hidden;background:linear-gradient(135deg,var(--primary),var(--accent));flex-shrink:0}.list-cover svg,.list-cover img{width:100%;height:100%;object-fit:cover;display:block}.list-meta{min-width:0}.list-meta .title{font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-meta .sub{color:var(--text-muted);font-size:12px;margin-top:4px}.new-content{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;margin:12px 0 18px;border:1px dashed var(--accent);border-radius:14px;background:#a8371c14;color:var(--accent);font-weight:500;cursor:pointer}.new-content:hover{background:#a8371c24}[data-theme=dark] .new-content{color:#f0a07c;background:#a8371c2e}[data-theme=dark] .new-content:hover{background:#a8371c47}.new-content .pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);margin-right:10px;box-shadow:0 0 #a8371c99;animation:pulse 1.6s infinite}@keyframes pulse{70%{box-shadow:0 0 0 12px #a8371c00}to{box-shadow:0 0 #a8371c00}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b1f248c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:grid;place-items:center;z-index:9999;padding:16px}.modal{width:100%;max-width:480px;background:var(--surface-strong);border:1px solid var(--border-strong);border-radius:18px;box-shadow:var(--shadow);padding:24px}.modal h3{margin-bottom:10px;font-weight:600}.modal .modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:16px;background:radial-gradient(circle at 25% 15%,rgba(168,55,28,.4),transparent 45%),radial-gradient(circle at 75% 80%,rgba(50,112,124,.45),transparent 50%),linear-gradient(180deg,var(--bg-grad-1),var(--bg-grad-2));position:relative;color:var(--text)}.login-wrap:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(120deg,#0b1f2440,#2a141040);z-index:1}.login-box{position:relative;z-index:2;width:100%;max-width:400px;padding:40px 36px;background:var(--surface-strong);border:1px solid var(--border-strong);border-radius:20px;backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);box-shadow:var(--shadow);color:var(--text)}.login-box h1{text-align:center;letter-spacing:2px;font-weight:500;font-size:28px;margin-bottom:30px;color:var(--text)}.login-box .field{margin-bottom:22px}.login-box .field input{background-color:var(--surface-input);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:12px 14px;font-size:15px;width:100%;font-family:inherit}.login-box .field input::placeholder{color:var(--text-muted)}.login-box .field input:focus{outline:none;border-color:var(--primary);background-color:var(--surface-strong)}.login-box .field label{position:static;display:block;margin-bottom:6px;color:var(--primary);font-size:12px;font-weight:600;letter-spacing:.4px;text-transform:uppercase}.login-box .field input:-webkit-autofill,.login-box .field input:-webkit-autofill:hover,.login-box .field input:-webkit-autofill:focus,.login-box .field input:-webkit-autofill:active{-webkit-text-fill-color:var(--text)!important;-webkit-box-shadow:0 0 0 1000px var(--surface-input) inset!important;caret-color:var(--text)!important;transition:background-color 99999s ease-in-out 0s,color 99999s ease-in-out 0s!important}.login-box .btn{width:100%;margin-top:6px}.login-box .footnote{text-align:center;color:#f5e9d6b3;margin-top:16px;font-size:13px}.version-badge{display:inline-flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--border);color:var(--text-dim);padding:5px 11px;border-radius:999px;font-size:12px;cursor:pointer;transition:background .15s ease}.version-badge:hover{background:var(--surface-strong)}.version-badge .dot{width:6px;height:6px;border-radius:50%;background:var(--success)}.player-wrap{display:grid;gap:16px;grid-template-columns:1fr}@media (min-width: 980px){.player-wrap{grid-template-columns:2fr 1fr;align-items:stretch;min-height:0}.player-right-pane{overflow-y:auto;padding-right:4px;min-height:0}.player-left-pane{overflow-y:auto;min-height:0}}.player-wrap video{width:100%;border-radius:14px 14px 0 0;background:#000;display:block}.player-wrap video::-webkit-media-text-track-display,.player-wrap video::-webkit-media-text-track-container,.player-wrap video::-webkit-media-text-track-background{display:none!important}.player-wrap video::cue{background:transparent;color:transparent;text-shadow:none}.subtitle-area{background:var(--surface-strong);border-top:1px solid var(--border);color:var(--text);padding:14px 20px;text-align:center;font-size:16px;line-height:1.45;font-weight:500;white-space:pre-line;min-height:60px;display:flex;align-items:center;justify-content:center}[data-theme=dark] .subtitle-area{background:#142428d9;color:#f5e9d6}[data-theme=light] .subtitle-area{background:#ffffffeb;color:#1b3a3f}.player-wrap .playlist{display:flex;flex-direction:column;gap:8px;padding:14px}.player-wrap .playlist .file{padding:10px 12px;border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px}.player-wrap .playlist .file:hover{background:var(--surface-input)}.player-wrap .playlist .file.active{background:var(--surface-strong);border:1px solid var(--border-strong)}.big-play{position:fixed;right:18px;bottom:18px;width:64px;height:64px;border-radius:50%;background:var(--accent);color:var(--oak-warm);border:none;cursor:pointer;font-size:24px;box-shadow:var(--shadow);z-index:30}.view-toggle{display:flex;gap:2px;border:1px solid var(--border-strong);border-radius:999px;padding:3px;background:var(--surface-input)}.view-toggle button{background:transparent;border:none;cursor:pointer;font:inherit;padding:6px 12px;border-radius:999px;color:var(--text-dim)}.view-toggle button.active{background:var(--primary);color:var(--oak-warm);font-weight:500}.view-toggle button:hover:not(.active){color:var(--text)}.list-table th .sort-ind{display:inline-block;margin-left:4px;color:var(--accent);font-weight:700}.player-header-1line{display:flex;align-items:center;gap:18px;overflow-x:auto}.player-header-1line .title-block{flex:2 1 320px;min-width:240px}.player-header-1line .title{font-size:19px;font-weight:700;line-height:1.2;color:var(--primary);letter-spacing:-.2px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-header-1line .sub{color:var(--text-muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-header-1line .ctrl-cell{display:flex;flex-direction:column;gap:4px;flex-shrink:0;align-self:center}.player-header-1line .ctrl-cell.flex{flex:1 1 160px;min-width:120px;max-width:260px}@media (max-width: 980px){.player-header-1line{flex-wrap:wrap}.player-header-1line .title-block{flex:1 1 100%;min-width:0}.player-header-1line .ctrl-cell.flex{max-width:none}}.player-header-1line .ctrl-cell .lbl{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);font-weight:600}.topic-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:6px 14px}.topic-row{display:flex;align-items:center;gap:10px;padding:6px 10px;border-radius:8px;background:var(--surface-input);border:1px solid var(--border);overflow:hidden;min-width:0}.topic-row select{flex-shrink:0;max-width:130px}.topic-row .btn{flex-shrink:0}.topic-row:hover{background:var(--surface-strong)}.topic-label{flex:1;cursor:pointer;font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topic-label:hover{color:var(--primary)}.kv-table{width:100%;border-collapse:collapse}.kv-table th,.kv-table td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--border)}.kv-table th{color:var(--text-muted);font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:.5px}.code-inline{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--surface-input);padding:2px 6px;border-radius:6px}.row{display:flex;gap:12px;align-items:center}.row-end{display:flex;gap:12px;align-items:center;justify-content:flex-end}.col{display:flex;flex-direction:column;gap:12px}.spacer{flex:1}.muted{color:var(--text-muted)}.center{text-align:center}.small{font-size:12px}.section-title{font-size:18px;font-weight:600;margin:4px 0 12px}.h-pad{padding:16px 18px}
