*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f0f14;--bg-card:#1a1a24;--bg-card-hover:#222232;--text:#e8e8f0;--text-dim:#9090a8;--accent:#e85d9a;--accent-glow:#ff6bb0;--platform-youtube:#f44;--platform-netflix:#e50914;--platform-gmmtv:#1ec575;--platform-wetv:#00b8d4;--platform-iqiyi:#00d68f;--status-airing:#4ade80;--status-completed:#60a5fa;--status-upcoming:#fbbf24;--border:#2a2a3a;--radius:12px}html{font-size:16px}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;line-height:1.6}img{max-width:100%;display:block}button{cursor:pointer;border:none;font-family:inherit}.app{max-width:1280px;margin:0 auto;padding:24px 20px 60px}.header{text-align:center;padding:40px 0 36px}.header-title{background:linear-gradient(135deg, var(--accent-glow), #d08cf0);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:8px;font-size:2rem;font-weight:700}.header-icon{-webkit-text-fill-color:initial;margin-right:6px}.header-sub{color:var(--text-dim);font-size:1rem}.filter-bar{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:flex-start;gap:20px;margin-bottom:28px;padding:20px 24px;display:flex}.filter-group{flex-direction:column;gap:8px;display:flex}.filter-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;font-size:.8rem}.filter-chips{flex-wrap:wrap;gap:8px;display:flex}.chip{color:var(--text-dim);border:1px solid var(--border);background:0 0;border-radius:20px;padding:6px 14px;font-size:.85rem;transition:all .2s}.chip:hover{border-color:var(--accent);color:var(--text)}.chip-active{background:var(--accent);color:#fff;border-color:var(--accent)}.clear-btn{color:var(--accent);border:1px solid var(--accent);white-space:nowrap;background:0 0;border-radius:20px;margin-top:auto;padding:6px 16px;font-size:.8rem;transition:all .2s}.clear-btn:hover{background:var(--accent);color:#fff}.series-info{align-items:center;gap:8px;margin-bottom:20px;display:flex}.series-count{font-weight:600}.filter-hint{color:var(--text-dim);font-size:.85rem}.series-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:24px;display:grid}.empty{text-align:center;color:var(--text-dim);padding:60px 20px;font-size:1.1rem}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:transform .25s,box-shadow .25s,border-color .25s;overflow:hidden}.card:hover{border-color:var(--accent);transform:translateY(-4px);box-shadow:0 8px 30px #e85d9a26}.card-poster{aspect-ratio:2/3;background:#1a1a28;position:relative;overflow:hidden}.card-poster img{object-fit:cover;width:100%;height:100%;transition:transform .3s}.card:hover .card-poster img{transform:scale(1.05)}.poster-fallback{text-align:center;background:linear-gradient(135deg,#1a1a35 0%,#2a1a3a 50%,#1a2a3a 100%);flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;padding:16px;display:flex}.poster-fallback-text{color:var(--accent);margin-bottom:6px;font-size:1.1rem;font-weight:700;line-height:1.3}.poster-fallback-th{color:var(--text-dim);font-size:.7rem;line-height:1.3}.card-status{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:12px;padding:4px 10px;font-size:.75rem;font-weight:600;position:absolute;top:10px;right:10px}.status-airing{color:var(--status-airing);background:#4ade8033;border:1px solid #4ade804d}.status-completed{color:var(--status-completed);background:#60a5fa33;border:1px solid #60a5fa4d}.status-upcoming{color:var(--status-upcoming);background:#fbbf2433;border:1px solid #fbbf244d}.card-body{padding:16px}.card-title{margin-bottom:2px;font-size:1.1rem;font-weight:600}.card-title-en{color:var(--text-dim);margin-bottom:10px;font-size:.8rem}.card-meta{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.card-platform{color:var(--accent);background:#e85d9a1f;border-radius:10px;padding:2px 8px;font-size:.75rem}.card-cp{color:#d08cf0;background:#d08cf01f;border-radius:10px;padding:2px 8px;font-size:.75rem}.card-progress{margin-bottom:8px}.progress-bar{background:var(--border);border-radius:2px;height:4px;margin-bottom:4px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--accent), var(--accent-glow));border-radius:2px;height:100%;transition:width .4s}.progress-text{color:var(--text-dim);font-size:.75rem}.card-update{color:var(--status-airing);font-size:.82rem;font-weight:500}.upcoming-text{color:var(--status-upcoming)}.completed-text{color:var(--text-dim)}.card-detail{border-top:1px solid var(--border);margin-top:12px;padding-top:12px;animation:.25s fadeIn}.card-synopsis{color:var(--text-dim);margin-bottom:8px;font-size:.85rem;line-height:1.5}.card-date,.card-thai{color:var(--text-dim);font-size:.78rem}@keyframes fadeIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@media (width<=768px){.app{padding:16px 12px 40px}.header{padding:24px 0 20px}.header-title{font-size:1.5rem}.filter-bar{gap:14px;padding:16px}.series-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px}.card-body{padding:12px}.card-title{font-size:.95rem}}@media (width<=480px){.series-grid{grid-template-columns:repeat(2,1fr);gap:10px}.card-body{padding:10px}.card-title{font-size:.85rem}.card-title-en{font-size:.7rem}.chip{padding:4px 10px;font-size:.75rem}.auth-modal{padding:24px 16px}}.app-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.app-header .header{text-align:left;flex:1}.user-area{flex-shrink:0;padding-top:40px}.user-menu{align-items:center;gap:10px;display:flex}.user-name{color:var(--accent-glow);font-size:.85rem;font-weight:500}.user-btn{color:var(--text-dim);border:1px solid var(--border);white-space:nowrap;background:0 0;border-radius:20px;padding:6px 16px;font-size:.82rem;transition:all .2s}.user-btn:hover{border-color:var(--accent);color:var(--text)}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#000000b3;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-content{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:32px;animation:.2s fadeIn;position:relative}.auth-modal{width:100%;max-width:400px}.modal-close{color:var(--text-dim);background:0 0;border:none;font-size:1.5rem;transition:color .2s;position:absolute;top:12px;right:16px}.modal-close:hover{color:var(--text)}.auth-title{text-align:center;margin-bottom:20px;font-size:1.3rem}.auth-error{color:#ff6b6b;background:#ff44441a;border:1px solid #ff44444d;border-radius:8px;margin-bottom:16px;padding:8px 12px;font-size:.82rem}.form-group{margin-bottom:14px}.form-group label{color:var(--text-dim);margin-bottom:4px;font-size:.8rem;display:block}.form-group input{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);border-radius:8px;outline:none;padding:10px 12px;font-family:inherit;font-size:.9rem;transition:border-color .2s}.form-group input:focus{border-color:var(--accent)}.auth-submit{background:var(--accent);color:#fff;border-radius:8px;width:100%;margin-top:4px;padding:10px;font-size:.9rem;font-weight:600;transition:opacity .2s}.auth-submit:hover{opacity:.9}.auth-submit:disabled{opacity:.5;cursor:not-allowed}.auth-switch{text-align:center;color:var(--text-dim);margin-top:16px;font-size:.82rem}.switch-btn{color:var(--accent);cursor:pointer;background:0 0;border:none;margin-left:4px;font-size:.82rem}.switch-btn:hover{text-decoration:underline}.card-links{flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;display:flex}.watch-link{border-radius:12px;padding:3px 10px;font-size:.7rem;font-weight:500;text-decoration:none;transition:opacity .2s}.watch-link:hover{opacity:.8}.watch-youtube{color:#f44;background:#ff00001f}.watch-iqiyi,.watch-iq{color:#00d68f;background:#00d68f1f}.watch-wetv{color:#00b8d4;background:#00b8d41f}.watch-channel3,.watch-ch3{color:#ff6bb0;background:#ff6bb01f}.watch-oned{color:#d08cf0;background:#d08cf01f}.watch-bilibili{color:#00a1d6;background:#00a1d61f}.watch-netflix{color:#e50914;background:#e509141f}.watch-other{color:#9090a8;background:#9090a81f}.watch-hint{color:var(--text-dim);margin-left:4px;font-size:.65rem}.review-section{border-top:1px solid var(--border);margin-top:14px;padding-top:14px}.review-loading{color:var(--text-dim);padding:8px 0;font-size:.8rem}.review-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.review-title{font-size:.9rem;font-weight:600}.review-avg{color:#fbbf24;font-size:.9rem;font-weight:600}.review-count{color:var(--text-dim);font-size:.75rem;font-weight:400}.review-empty{color:var(--text-dim);text-align:center;padding:12px 0;font-size:.8rem}.review-form{margin-bottom:14px}.review-rating{gap:4px;margin-bottom:8px;display:flex}.star-btn{color:var(--border);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:1.2rem;transition:color .15s,transform .15s}.star-btn:hover{transform:scale(1.2)}.star-active{color:#fbbf24}.review-form textarea{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);resize:vertical;border-radius:8px;outline:none;padding:8px 10px;font-family:inherit;font-size:.8rem;transition:border-color .2s}.review-form textarea:focus{border-color:var(--accent)}.review-error{color:#ff6b6b;margin-top:4px;font-size:.75rem}.review-submit{background:var(--accent);color:#fff;border-radius:16px;margin-top:8px;padding:6px 16px;font-size:.78rem;font-weight:500;transition:opacity .2s}.review-submit:hover{opacity:.9}.review-submit:disabled{opacity:.5;cursor:not-allowed}.review-form-actions{gap:8px;margin-top:8px;display:flex}.review-cancel{color:var(--text-dim);border:1px solid var(--border);background:0 0;border-radius:16px;padding:6px 16px;font-size:.78rem}.review-cancel:hover{border-color:var(--accent);color:var(--text)}.review-list{flex-direction:column;gap:10px;display:flex}.review-item{border:1px solid var(--border);background:#ffffff08;border-radius:8px;padding:10px}.review-mine{border-color:#e85d9a4d}.review-item-header{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px;display:flex}.review-user{color:var(--accent-glow);font-size:.8rem;font-weight:600}.review-stars{color:#fbbf24;font-size:.75rem}.review-date{color:var(--text-dim);margin-left:auto;font-size:.7rem}.review-comment{color:var(--text);font-size:.82rem;line-height:1.5}.review-actions{gap:8px;margin-top:6px;display:flex}.review-actions button{color:var(--text-dim);cursor:pointer;background:0 0;border:none;font-size:.72rem;transition:color .2s}.review-actions button:hover{color:var(--accent)}.admin-link{color:var(--accent);border:1px solid var(--accent);border-radius:12px;padding:4px 12px;font-size:.8rem;text-decoration:none;transition:background .2s}.admin-link:hover{background:#e85d9a1f}.admin-page{max-width:960px;margin:0 auto;padding:20px 0}.admin-loading{text-align:center;color:var(--text-dim);padding:40px}.admin-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.admin-header h2{font-size:1.3rem;font-weight:600}.admin-header-actions{gap:8px;display:flex}.admin-btn-add,.admin-btn-close{cursor:pointer;border:none;border-radius:16px;padding:6px 16px;font-size:.8rem;transition:opacity .2s}.admin-btn-add{background:var(--accent);color:#fff}.admin-btn-close{color:var(--text-dim);border:1px solid var(--border);background:0 0}.admin-btn-add:hover,.admin-btn-close:hover{opacity:.85}.admin-message{color:#22c55e;background:#22c55e1f;border-radius:8px;margin-bottom:16px;padding:8px 14px;font-size:.82rem}.admin-error{color:#ff6b6b;background:#ff6b6b1a;border-radius:8px;margin-bottom:12px;padding:8px 14px;font-size:.82rem}.admin-form{border:1px solid var(--border);background:#ffffff06;border-radius:12px;margin-bottom:24px;padding:20px}.admin-form h3{margin-bottom:16px;font-size:1rem}.admin-form-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-bottom:12px;display:grid}.admin-form .form-group{flex-direction:column;gap:4px;display:flex}.admin-form .form-group label{color:var(--text-dim);font-size:.75rem;font-weight:500}.admin-form .form-group input,.admin-form .form-group select,.admin-form .form-group textarea{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;outline:none;padding:7px 10px;font-family:inherit;font-size:.8rem;transition:border-color .2s}.admin-form .form-group input:focus,.admin-form .form-group select:focus,.admin-form .form-group textarea:focus{border-color:var(--accent)}.admin-form-actions{gap:8px;margin-top:14px;display:flex}.admin-submit,.admin-cancel{cursor:pointer;border:none;border-radius:16px;padding:8px 20px;font-size:.82rem;font-weight:500;transition:opacity .2s}.admin-submit{background:var(--accent);color:#fff}.admin-submit:disabled{opacity:.5;cursor:not-allowed}.admin-cancel{color:var(--text-dim);border:1px solid var(--border);background:0 0}.admin-list h3{margin-bottom:12px;font-size:.95rem}.admin-table-wrap{overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:.8rem}.admin-table th,.admin-table td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 10px}.admin-table th{color:var(--text-dim);text-transform:uppercase;font-size:.72rem;font-weight:600}.admin-table td{color:var(--text)}.admin-table tbody tr:hover{background:#ffffff05}.admin-status{border-radius:10px;padding:2px 8px;font-size:.7rem;font-weight:500;display:inline-block}.admin-status-airing{color:#22c55e;background:#22c55e1f}.admin-status-completed{color:var(--accent);background:#e85d9a1f}.admin-status-upcoming{color:#fbbf24;background:#fbbf241f}.admin-edit-btn,.admin-del-btn{cursor:pointer;border:none;border-radius:10px;margin-right:4px;padding:3px 10px;font-size:.7rem;transition:opacity .2s}.admin-edit-btn{color:var(--accent);background:#e85d9a26}.admin-del-btn{color:#ff6b6b;background:#ff6b6b1f}.admin-edit-btn:hover,.admin-del-btn:hover{opacity:.8}.refresh-indicator{opacity:.5;vertical-align:middle;font-size:.8em;animation:1s linear infinite spin;display:inline-block}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (width<=768px){.app-header{flex-direction:column;gap:0}.app-header .header{text-align:center}.user-area{justify-content:center;margin-bottom:8px;padding-top:0;display:flex}}
