:root{--bg: #0b0f14;--bg-soft: #0f141b;--panel: #131a23;--panel-2: #18212c;--border: #232e3b;--border-soft: #1b2530;--text: #e7edf4;--text-2: #9aa8b8;--text-3: #64748b;--accent: #3b82f6;--accent-strong: #2563eb;--accent-soft: rgba(59, 130, 246, .14);--green: #34d399;--green-soft: rgba(52, 211, 153, .14);--red: #f87171;--red-soft: rgba(248, 113, 113, .12);--amber: #fbbf24;--amber-soft: rgba(251, 191, 36, .13);--radius: 10px;--radius-sm: 7px;--shadow: 0 8px 32px rgba(0, 0, 0, .45);font-size:15px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,PingFang SC,Segoe UI,Microsoft YaHei,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-main{flex:1;display:flex;min-height:0}.content{flex:1;min-width:0;padding:22px 26px;overflow-y:auto}.topbar{display:flex;align-items:center;gap:18px;height:54px;padding:0 20px;background:var(--bg-soft);border-bottom:1px solid var(--border-soft);position:sticky;top:0;z-index:40}.topbar .brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:15px;letter-spacing:.2px}.brand-logo{display:block;height:28px;width:auto}.brand-logo--large{height:40px}.brand-logo--small{height:24px}.brand-mark{width:26px;height:26px;border-radius:7px;background:var(--accent-strong);display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:13px}.topbar nav{display:flex;gap:4px}.topbar nav a{padding:6px 13px;border-radius:7px;color:var(--text-2);font-weight:500}.topbar nav a:hover{color:var(--text);text-decoration:none;background:var(--panel)}.topbar nav a.active{color:var(--text);background:var(--panel-2)}.topbar .spacer{flex:1}.topbar .user{color:var(--text-2);font-size:13px}.btn{display:inline-flex;align-items:center;gap:7px;padding:7px 15px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--panel);color:var(--text);font-size:13.5px;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap}.btn:hover{background:var(--panel-2)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}.btn.primary:hover{background:var(--accent)}.btn.danger{color:var(--red);border-color:#f8717159}.btn.danger:hover{background:var(--red-soft)}.btn.ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn.ghost:hover{background:var(--panel);color:var(--text)}.btn.sm{padding:4px 10px;font-size:12.5px}.input,.select,textarea.input{width:100%;padding:8px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-soft);color:var(--text);font-size:13.5px;outline:none;font-family:inherit}.input:focus,.select:focus{border-color:var(--accent)}.input::placeholder{color:var(--text-3)}label.field{display:block;margin-bottom:14px}label.field .lb{display:block;font-size:12.5px;color:var(--text-2);margin-bottom:6px;font-weight:500}.checkbox-row{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--text-2);cursor:pointer}.checkbox-row input{accent-color:var(--accent-strong);width:15px;height:15px}.card{background:var(--panel);border:1px solid var(--border-soft);border-radius:var(--radius)}.card-pad{padding:18px}.badge{display:inline-flex;align-items:center;padding:2px 9px;border-radius:99px;font-size:11.5px;font-weight:600;letter-spacing:.3px}.badge.blue{background:var(--accent-soft);color:var(--accent)}.badge.green{background:var(--green-soft);color:var(--green)}.badge.red{background:var(--red-soft);color:var(--red)}.badge.amber{background:var(--amber-soft);color:var(--amber)}.badge.gray{background:var(--panel-2);color:var(--text-2)}.page-head{display:flex;align-items:center;gap:14px;margin-bottom:20px;flex-wrap:wrap}.page-head h1{font-size:19px;margin:0;font-weight:700;letter-spacing:.2px}.page-head .sub{color:var(--text-3);font-size:12.5px}.page-head .spacer{flex:1}.state-box{padding:60px 20px;text-align:center;color:var(--text-3);border:1px dashed var(--border);border-radius:var(--radius);background:var(--bg-soft)}.state-box h3{color:var(--text-2);margin:0 0 6px;font-size:15px}.spinner{width:22px;height:22px;border-radius:50%;border:2.5px solid var(--border);border-top-color:var(--accent);animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.error-toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:#2d1517;color:#fca5a5;border:1px solid rgba(248,113,113,.4);padding:10px 18px;border-radius:9px;font-size:13px;z-index:200;box-shadow:var(--shadow);max-width:80vw}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;color:var(--text-3);font-weight:500;font-size:12px;padding:9px 12px;border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:10px 12px;border-bottom:1px solid var(--border-soft);vertical-align:middle}.table tr:hover td{background:#ffffff04}.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.proj-card{background:var(--panel);border:1px solid var(--border-soft);border-radius:var(--radius);padding:18px;cursor:pointer;transition:border-color .15s,transform .1s;display:flex;flex-direction:column;gap:8px;position:relative}.proj-card:hover{border-color:var(--accent);transform:translateY(-1px)}.proj-card h3{margin:0;font-size:15px}.proj-card .meta{color:var(--text-3);font-size:12px;display:flex;gap:12px}.proj-card .actions{position:absolute;top:10px;right:10px;display:none}.proj-card:hover .actions{display:flex;gap:4px}.assets-toolbar{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.assets-toolbar .input,.assets-toolbar .select{width:auto}.asset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}.asset-card{background:var(--panel);border:1px solid var(--border-soft);border-radius:var(--radius);overflow:hidden;cursor:pointer;transition:border-color .15s}.asset-card:hover{border-color:var(--accent)}.asset-thumb{aspect-ratio:16/9;background:#0a0e13 center/cover no-repeat;display:flex;align-items:center;justify-content:center;position:relative}.asset-thumb .no-thumb{color:var(--text-3);font-size:26px;opacity:.5}.asset-thumb .dur{position:absolute;right:8px;bottom:8px;background:#000000bf;padding:1px 7px;border-radius:5px;font-size:11px;font-variant-numeric:tabular-nums}.asset-thumb .vbadge{position:absolute;left:8px;top:8px;background:#000000b3;padding:1px 7px;border-radius:5px;font-size:11px;color:var(--accent);font-weight:600}.asset-info{padding:10px 12px}.asset-info .name{font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asset-info .meta{color:var(--text-3);font-size:11.5px;margin-top:4px;display:flex;gap:8px;align-items:center}.upload-dock{position:fixed;right:20px;bottom:20px;width:380px;max-width:calc(100vw - 32px);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);z-index:100;overflow:hidden}.upload-dock .dock-head{display:flex;align-items:center;padding:10px 14px;gap:10px;background:var(--panel-2);border-bottom:1px solid var(--border-soft);font-size:13px;font-weight:600}.upload-dock .dock-head .spacer{flex:1}.upload-dock .dock-body{max-height:300px;overflow-y:auto}.upload-item{padding:10px 14px;border-bottom:1px solid var(--border-soft);font-size:12.5px}.upload-item .row1{display:flex;align-items:center;gap:8px}.upload-item .fname{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.upload-item .pct{color:var(--text-3);font-variant-numeric:tabular-nums}.upload-item .row2{display:flex;align-items:center;gap:8px;margin-top:6px}.progress{flex:1;height:4px;background:var(--bg-soft);border-radius:99px;overflow:hidden}.progress .fill{height:100%;background:var(--accent);border-radius:99px;transition:width .3s}.progress .fill.err{background:var(--red)}.progress .fill.ok{background:var(--green)}.upload-item .errmsg{color:var(--red);margin-top:5px;font-size:11.5px}.drop-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b0f14d9;z-index:150;display:flex;align-items:center;justify-content:center;pointer-events:none}.drop-overlay .inner{border:2px dashed var(--accent);border-radius:16px;padding:60px 80px;color:var(--accent);font-size:17px;font-weight:600}.review-layout{display:grid;grid-template-columns:1fr 360px;gap:18px;height:calc(100vh - 98px)}.review-player{display:flex;flex-direction:column;min-width:0;gap:12px}.player-box{background:#000;border-radius:var(--radius);overflow:hidden;flex:1;display:flex;align-items:center;justify-content:center;min-height:0;position:relative}.player-box video,.player-box img{max-width:100%;max-height:100%;width:auto;height:auto}.player-box audio{width:90%}.review-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.review-toolbar h2{margin:0;font-size:15px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.review-toolbar .spacer{flex:1}.comments-panel{display:flex;flex-direction:column;min-height:0;background:var(--panel);border:1px solid var(--border-soft);border-radius:var(--radius)}.comments-head{padding:12px 16px;border-bottom:1px solid var(--border-soft);display:flex;align-items:center;gap:10px}.comments-head h3{margin:0;font-size:13.5px}.comments-list{flex:1;overflow-y:auto;padding:6px 0}.comment-thread{padding:10px 16px}.comment-thread.resolved{opacity:.6}.comment{display:flex;gap:10px}.avatar{width:30px;height:30px;border-radius:8px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:700}.avatar.admin{background:var(--accent-soft);color:var(--accent)}.avatar.visitor{background:var(--amber-soft);color:var(--amber)}.comment .cbody{flex:1;min-width:0}.comment .chead{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.comment .cauthor{font-size:12.5px;font-weight:650}.comment .ctime{font-size:11px;color:var(--text-3)}.tcode{background:var(--accent-soft);color:var(--accent);font-size:11px;padding:1px 7px;border-radius:5px;cursor:pointer;font-weight:600;font-variant-numeric:tabular-nums;border:none;font-family:inherit}.tcode:hover{background:#3b82f640}.comment .ctext{font-size:13px;margin-top:3px;line-height:1.5;word-break:break-word;white-space:pre-wrap}.comment .cactions{display:flex;gap:10px;margin-top:5px;opacity:0;transition:opacity .15s}.comment:hover .cactions{opacity:1}.cactions button{background:none;border:none;color:var(--text-3);font-size:11.5px;cursor:pointer;padding:0}.cactions button:hover{color:var(--accent)}.reply{margin-top:10px;margin-left:14px;padding-left:12px;border-left:2px solid var(--border)}.comment-input{border-top:1px solid var(--border-soft);padding:12px 16px;display:flex;flex-direction:column;gap:8px}.comment-input textarea{width:100%;min-height:60px;resize:vertical;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-soft);color:var(--text);font-size:13px;font-family:inherit;outline:none}.comment-input textarea:focus{border-color:var(--accent)}.comment-input .row{display:flex;align-items:center;gap:10px}.comment-input .row .spacer{flex:1}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#05080cb8;z-index:120;display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:var(--panel);border:1px solid var(--border);border-radius:14px;width:460px;max-width:100%;max-height:86vh;overflow-y:auto;box-shadow:var(--shadow)}.modal.wide{width:620px}.modal-head{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border-soft)}.modal-head h3{margin:0;font-size:15px}.modal-head .spacer{flex:1}.modal-body{padding:20px}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--border-soft)}.share-link-box{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;font-size:12.5px;word-break:break-all;font-family:ui-monospace,monospace;color:var(--accent);margin:8px 0}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse 80% 50% at 50% -10%,rgba(37,99,235,.18),transparent),var(--bg)}.login-card{width:380px;padding:36px}.login-card .brand{justify-content:center;margin-bottom:6px}.login-card .tagline{text-align:center;color:var(--text-3);font-size:12.5px;margin-bottom:26px}.share-shell{max-width:1180px;margin:0 auto;padding:20px}.share-lock{min-height:100vh;display:flex;align-items:center;justify-content:center}.share-list-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:18px}.tabs button{background:none;border:none;padding:9px 16px;color:var(--text-2);font-size:13.5px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;font-weight:500}.tabs button.active{color:var(--accent);border-bottom-color:var(--accent)}@media(max-width:960px){.review-layout{grid-template-columns:1fr;height:auto}.comments-panel{height:480px}.content{padding:14px}.upload-dock{width:calc(100vw - 24px);right:12px;bottom:12px}.topbar nav a{padding:6px 8px}}
