* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: "Microsoft YaHei","PingFang SC",sans-serif; background: #0b0d14; color: #e6e8f0; min-height: 100vh; overflow-x: hidden; }
.hidden { display: none !important; }
.app { display: flex; min-height: 100vh; }
.sidebar { width: 220px; background: linear-gradient(180deg,#12162a 0%,#0d1020 100%); border-right: 1px solid #232a4d; padding: 22px 12px; flex-shrink: 0; position: sticky; top: 0; height: 100vh; overflow-y: auto; }
.logo { font-size: 26px; font-weight: 900; letter-spacing: 1px; color: #fff; margin-bottom: 22px; padding-left: 8px; }
.logo span { background: linear-gradient(90deg,#7c5cff,#38e1ff); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
.nav-title { font-size: 12px; color: #5c6484; padding: 0 10px 8px; letter-spacing: 2px; }
.nav-item { display: flex; align-items: center; gap: 10px; width: 100%; padding: 11px 12px; margin-bottom: 4px; background: transparent; border: none; border-radius: 10px; color: #9aa3c4; font-size: 14px; cursor: pointer; transition: all .18s; text-align: left; }
.nav-item:hover { background: #1a2040; color: #dde3ff; }
.nav-item.active { background: linear-gradient(90deg,rgba(124,92,255,.22),rgba(56,225,255,.12)); color: #fff; box-shadow: inset 0 0 0 1px rgba(124,92,255,.4); }
.nav-ico { font-size: 16px; width: 22px; text-align: center; }
.main { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.topbar { display: flex; align-items: center; justify-content: space-between; padding: 14px 26px; background: rgba(13,16,32,.82); backdrop-filter: blur(10px); border-bottom: 1px solid #1e2442; position: sticky; top: 0; z-index: 50; }
.brand { font-size: 17px; font-weight: 700; color: #cfd6ff; }
.top-right { display: flex; align-items: center; gap: 14px; }
.btn { border: none; border-radius: 10px; cursor: pointer; font-size: 14px; font-weight: 600; padding: 10px 18px; transition: all .18s; color: #fff; }
.btn-plus { width: 40px; height: 40px; border-radius: 12px; font-size: 24px; line-height: 1; background: linear-gradient(135deg,#7c5cff,#38e1ff); box-shadow: 0 4px 18px rgba(124,92,255,.45); }
.btn-plus:hover { transform: scale(1.08); }
.btn-login { background: linear-gradient(135deg,#7c5cff,#4d3cff); box-shadow: 0 4px 14px rgba(77,60,255,.35); }
.btn-login:hover { filter: brightness(1.15); }
.user-box { display: flex; align-items: center; gap: 10px; }
.avatar { width: 38px; height: 38px; border-radius: 50%; object-fit: cover; border: 2px solid #7c5cff; display: none; }
.uname { font-weight: 700; color: #eef1ff; display: none; }
.content { padding: 26px; flex: 1; }
.view-head { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; }
.view-head h2 { font-size: 22px; }
.count-badge { background: #1a2140; color: #8f9ce8; font-size: 12px; padding: 4px 12px; border-radius: 20px; border: 1px solid #2b3570; }
.grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(200px,1fr)); gap: 18px; }
.card { background: linear-gradient(180deg,#151a30,#10152a); border: 1px solid #232a4d; border-radius: 14px; overflow: hidden; cursor: pointer; transition: all .2s; }
.card:hover { transform: translateY(-4px); border-color: #7c5cff; box-shadow: 0 10px 30px rgba(124,92,255,.2); }
.card-cover { width: 100%; aspect-ratio: 4/3; object-fit: cover; background: #0a0d1c; }
.card-body { padding: 12px 14px; }
.card-name { font-weight: 700; font-size: 15px; margin-bottom: 6px; }
.card-meta { display: flex; gap: 6px; flex-wrap: wrap; }
.tag { background: #1c2345; color: #8fa0e8; font-size: 11px; padding: 2px 8px; border-radius: 8px; border: 1px solid #2c3775; }
.empty { text-align: center; padding: 90px 0; color: #6a7190; font-size: 16px; line-height: 2; }
.empty span { font-size: 13px; color: #4d5570; }
.btn-back { background: #1a2040; color: #aab4e8; border: 1px solid #2c3775; border-radius: 10px; padding: 8px 16px; cursor: pointer; margin-bottom: 18px; font-size: 14px; }
.btn-back:hover { color: #fff; }
.detail-head { display: flex; gap: 24px; background: #12172c; border: 1px solid #232a4d; border-radius: 16px; padding: 22px; }
.d-cover { width: 280px; aspect-ratio: 4/3; object-fit: cover; border-radius: 12px; background: #0a0d1c; }
.d-info { flex: 1; }
.d-info h2 { font-size: 24px; margin-bottom: 10px; }
.d-meta { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.d-info p { color: #9aa3c4; line-height: 1.7; margin-bottom: 18px; }
.btn-play { background: linear-gradient(135deg,#ff9f43,#ff5e62); box-shadow: 0 6px 20px rgba(255,94,98,.4); font-size: 16px; padding: 13px 34px; }
.btn-play:hover { transform: scale(1.04); }
.play-area { margin-top: 22px; background: #0a0d1c; border: 1px solid #232a4d; border-radius: 14px; overflow: hidden; }
.play-head { display: flex; justify-content: space-between; align-items: center; padding: 12px 18px; background: #12172c; border-bottom: 1px solid #1e2442; }
.play-head span:first-child { font-weight: 700; }
#playHint { color: #6a7190; font-size: 12px; }
#playHost iframe { width: 100%; height: 560px; border: none; display: block; }
.dl-panel { padding: 40px; text-align: center; }
.dl-panel .dl-note { color: #8a93b8; margin-bottom: 18px; line-height: 1.8; }
.btn-dl { display: inline-block; background: linear-gradient(135deg,#38e1ff,#7c5cff); color: #fff; text-decoration: none; border-radius: 12px; padding: 13px 30px; font-weight: 700; box-shadow: 0 6px 20px rgba(56,225,255,.35); }
.pub-form { max-width: 560px; display: flex; flex-direction: column; gap: 16px; }
.f-row { display: flex; flex-direction: column; gap: 7px; }
.f-row label { font-size: 13px; color: #8fa0e8; }
.f-row input, .f-row select, .f-row textarea { background: #0f1428; border: 1px solid #2c3775; border-radius: 10px; color: #e6e8f0; padding: 11px 13px; font-size: 14px; outline: none; }
.f-row input:focus, .f-row select:focus, .f-row textarea:focus { border-color: #7c5cff; box-shadow: 0 0 0 3px rgba(124,92,255,.15); }
.upload-box { border: 1px dashed #3a4685; border-radius: 12px; padding: 18px; text-align: center; cursor: pointer; color: #8a93b8; transition: all .18s; background: #0d1124; }
.upload-box:hover { border-color: #7c5cff; color: #cfd6ff; }
.upload-box.small { padding: 10px; }
.up-preview { max-width: 140px; max-height: 140px; border-radius: 10px; margin-top: 8px; }
.btn-publish { background: linear-gradient(135deg,#7c5cff,#38e1ff); font-size: 16px; padding: 13px; margin-top: 6px; box-shadow: 0 6px 20px rgba(124,92,255,.4); }
.msg { font-size: 13px; min-height: 20px; }
.msg.err { color: #ff6b6b; }
.msg.ok { color: #4ade80; }
.modal-mask { position: fixed; inset: 0; background: rgba(5,7,16,.78); backdrop-filter: blur(6px); display: flex; align-items: center; justify-content: center; z-index: 200; }
.modal { width: 420px; max-width: 92vw; background: #10152a; border: 1px solid #2c3775; border-radius: 18px; padding: 26px; box-shadow: 0 20px 60px rgba(0,0,0,.5); }
.auth-tabs { display: flex; gap: 10px; margin-bottom: 20px; align-items: center; }
.tab { background: transparent; border: none; color: #6a7190; font-size: 16px; font-weight: 700; padding: 6px 4px; cursor: pointer; border-bottom: 2px solid transparent; }
.tab.active { color: #fff; border-bottom-color: #7c5cff; }
.modal-close { margin-left: auto; background: none; border: none; color: #6a7190; font-size: 24px; cursor: pointer; }
.modal-close:hover { color: #fff; }
.pane { display: flex; flex-direction: column; gap: 14px; }
.cap-box { display: flex; align-items: center; gap: 10px; }
#capCanvas { border-radius: 8px; background: #0d1124; border: 1px solid #2c3775; }
.cap-refresh { background: #1a2040; color: #8fa0e8; border: 1px solid #2c3775; border-radius: 8px; padding: 6px 10px; cursor: pointer; font-size: 12px; }
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: #0b0d14; }
::-webkit-scrollbar-thumb { background: #2c3775; border-radius: 8px; }