:root{--bg:#0b0b0c;--panel:#161618;--panel2:#202024;--text:#f1f1f2;--muted:#9a9aa2;--line:#2a2a30;--accent:#3ea6ff;--green:#4caf50}*{box-sizing:border-box}body,html{padding:0;margin:0;height:100%}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-thumb{background:#33333a;border-radius:6px}::-webkit-scrollbar-track{background:transparent}.app{display:grid;grid-template-columns:1fr 360px;height:100vh}.main{min-width:0;overflow:hidden}.main,.sidebar{display:flex;flex-direction:column}.sidebar{background:var(--panel);border-left:1px solid var(--line);min-height:0}@media (max-width:900px){.app{grid-template-columns:1fr;grid-template-rows:auto 1fr;height:auto}.sidebar{border-left:0;border-top:1px solid var(--line)}}.player{position:relative;background:#000;width:100%;aspect-ratio:16/9;max-height:64vh;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.player.hide-cursor{cursor:none}.player video{width:100%;height:100%;display:block;background:#000}.bigplay{position:absolute;inset:0;display:grid;place-items:center;background:rgba(0,0,0,.25);transition:opacity .15s;z-index:2}.bigplay button{width:76px;height:76px;border-radius:50%;border:0;background:rgba(20,20,22,.82);color:#fff;font-size:30px;display:grid;place-items:center}.controls{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:0 12px 8px;background:linear-gradient(transparent,rgba(0,0,0,.78));transition:opacity .2s,transform .2s}.controls.hidden{opacity:0;transform:translateY(8px);pointer-events:none}.timeline{height:18px;display:flex;align-items:center;cursor:pointer}.timeline,.track{position:relative}.track{height:4px;width:100%;border-radius:3px;background:hsla(0,0%,100%,.25);transition:height .1s}.timeline:hover .track{height:6px}.buffered{background:hsla(0,0%,100%,.35)}.buffered,.played{position:absolute;left:0;top:0;height:100%;border-radius:3px}.played,.scrubber{background:var(--accent)}.scrubber{position:absolute;top:50%;width:13px;height:13px;border-radius:50%;transform:translate(-50%,-50%);opacity:0;transition:opacity .1s}.timeline:hover .scrubber{opacity:1}.marker{position:absolute;top:50%;width:9px;height:9px;background:#ffd24a;border:1px solid #7a5b00;transform:translate(-50%,-50%) rotate(45deg);border-radius:2px;cursor:pointer;z-index:2}.marker:hover{background:#ffe488;transform:translate(-50%,-50%) rotate(45deg) scale(1.25)}.hovertip{position:absolute;bottom:22px;transform:translateX(-50%);background:#000;color:#fff;padding:2px 7px;border-radius:5px;font-size:12px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;pointer-events:none;white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}.ctlrow{display:flex;align-items:center;gap:6px;margin-top:2px;color:#fff}.ctlrow button{background:transparent;border:0;color:#fff;width:38px;height:38px;border-radius:8px;font-size:17px;display:grid;place-items:center}.ctlrow button:hover{background:hsla(0,0%,100%,.14)}.ctlrow button.active{background:rgba(62,166,255,.28);color:#cfe9ff}.ctlrow .time{font-size:13px;color:#e7e7ea;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;padding:0 6px;white-space:nowrap}.ctlrow .spacer{flex:1 1}.ctlrow .rate{width:auto;padding:0 10px;font-size:13px;font-weight:600}.volwrap{display:flex;align-items:center;gap:4px}.volwrap input[type=range]{width:0;opacity:0;transition:width .15s,opacity .15s;accent-color:var(--accent)}.volwrap:hover input[type=range]{width:78px;opacity:1}.playererr{position:absolute;inset:0;z-index:4;display:grid;place-items:center;background:rgba(0,0,0,.82);padding:24px;text-align:center}.playererr div{max-width:460px;color:#ffcf6b;font-size:14px;line-height:1.5}.playererr code{background:#2a2300;padding:1px 6px;border-radius:4px}.meta{padding:12px 16px;border-bottom:1px solid var(--line)}.meta h1{font-size:16px;margin:0;font-weight:600;line-height:1.3}.meta .sub{color:var(--muted);font-size:12px;margin-top:3px;display:flex;gap:12px}.notes{flex:1 1;overflow-y:auto;padding:12px 16px 24px}.notes h2{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 10px}.addbar{display:flex;gap:8px;margin-bottom:14px}.addbar input{flex:1 1;background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:9px;padding:10px 12px;font-size:14px}.addbar input:focus{outline:none;border-color:var(--accent)}.addbar button{background:var(--accent);color:#04121f;border:0;border-radius:9px;padding:0 16px;font-weight:700;font-size:14px}.note{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px;background:var(--panel)}.note .top{display:flex;align-items:center;gap:8px;margin-bottom:6px}.note .ts{background:var(--panel2);color:var(--accent);border:1px solid var(--line);border-radius:6px;padding:2px 9px;font-size:12px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.note .actions{margin-left:auto;display:flex;gap:2px}.note .actions button{background:none;border:0;color:var(--muted);font-size:12px;padding:2px 7px;border-radius:5px}.note .actions button:hover{color:var(--text);background:var(--panel2)}.note .body{font-size:14px;line-height:1.45;white-space:pre-wrap;word-break:break-word}.empty{color:var(--muted);font-size:13px}.plhead{padding:13px 16px;border-bottom:1px solid var(--line);display:flex;align-items:baseline;gap:8px}.plhead .title{font-weight:700;font-size:15px}.plhead .count,.plhead .logout{color:var(--muted);font-size:12px}.plhead .logout{margin-left:auto;align-self:center;background:var(--panel2);border:1px solid var(--line);border-radius:7px;padding:4px 9px;cursor:pointer}.plhead .logout:hover{color:var(--text);border-color:var(--accent)}.loginwrap{min-height:100vh;display:grid;place-items:center;padding:20px}.loginbox{width:100%;max-width:340px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:26px 24px;display:flex;flex-direction:column;gap:12px}.loginbox h1{font-size:18px;margin:0;font-weight:700}.loginbox .lsub{color:var(--muted);font-size:13px;margin:0 0 6px}.loginbox input{background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:9px;padding:11px 13px;font-size:15px;letter-spacing:.18em;text-align:center;text-transform:none}.loginbox input:focus{outline:none;border-color:var(--accent)}.loginbox button{background:var(--accent);color:#04121f;border:0;border-radius:9px;padding:11px;font-weight:700;font-size:15px;cursor:pointer}.loginbox button:disabled{opacity:.5;cursor:default}.loginbox .lerr{color:#ff6b6b;font-size:13px}.loginbox .lhint{color:var(--muted);font-size:11.5px;line-height:1.45;margin:2px 0 0}.pllist{overflow-y:auto;flex:1 1;min-height:0}.row{position:relative;display:flex;gap:10px;padding:10px 14px 12px;cursor:pointer;border-bottom:1px solid #202024}.row:hover{background:var(--panel2)}.row.active{background:#082742}.row .num{color:var(--muted);font-size:12px;min-width:22px;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;padding-top:1px}.row .name{font-size:13px;line-height:1.35}.row.active .name{color:var(--accent)}.row.watched .name{color:#7fe08a}.row .rowmeta{font-size:11px;color:var(--muted);margin-top:3px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.row.watched .rowmeta{color:var(--green)}.row .badge{margin-left:auto;align-self:center;background:var(--accent);color:#04121f;font-size:11px;font-weight:800;border-radius:10px;padding:0 7px;line-height:18px;height:18px}.row .pbar{position:absolute;left:0;right:0;bottom:0;height:3px}.row .pbar>i{display:block;height:100%;background:var(--accent)}.row.watched .pbar>i{background:var(--green)}.ctxmenu{position:fixed;z-index:1000;min-width:224px;padding:6px;background:#1c1c20;border:1px solid #34343c;border-radius:10px;box-shadow:0 12px 36px rgba(0,0,0,.55);font-size:13.5px;animation:ctxin .09s ease-out}@keyframes ctxin{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}.ctxitem{position:relative;display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:7px;color:var(--text);cursor:pointer;white-space:nowrap}.ctxitem:hover{background:#2c2c34}.ctxitem.disabled{color:#5c5c66;pointer-events:none}.ctxitem.danger{color:#ff6b6b}.ctxitem.danger:hover{background:#3a1c1c}.ctxicon{width:18px;text-align:center;flex:0 0 18px;opacity:.92}.ctxlabel{flex:1 1}.ctxarrow{color:var(--muted);font-size:11px}.ctxsep{height:1px;margin:5px 6px;background:#33333b}.ctxsubmenu{position:absolute;left:100%;top:-6px;margin-left:2px}