:root{--bg: #0f1115;--bg-soft: #14161c;--card: #1a1e26;--border: #262b36;--text: #e6e9ef;--muted: #8b93a3;--accent: #4f8cff;--accent-soft: rgba(79, 140, 255, .15);--danger: #ff5c5c;--danger-soft: rgba(255, 92, 92, .15);--success: #3ecf8e;--success-soft: rgba(62, 207, 142, .15);--warning: #ffc107;--warning-soft: rgba(255, 193, 7, .15);--radius: 12px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.45}h1,h2,h3{margin:0;font-weight:650}h1{font-size:22px}h2{font-size:18px}h3{font-size:16px}button{font-family:inherit}.app{min-height:100%;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:50;background:#0f1115eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.topbar-inner{max-width:1200px;margin:0 auto;padding:0 20px;height:60px;display:flex;align-items:center;gap:28px}.brand{font-size:17px;font-weight:700;color:var(--accent);white-space:nowrap}.nav{display:flex;gap:6px;flex:1}.nav-link{padding:8px 14px;border-radius:10px;color:var(--muted);text-decoration:none;font-weight:550;transition:background .15s,color .15s}.nav-link:hover{color:var(--text);background:var(--bg-soft)}.nav-link.active{color:var(--accent);background:var(--accent-soft)}.topbar-user{display:flex;align-items:center;gap:12px;min-width:0}.user-email{color:var(--muted);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}.content{flex:1;max-width:1200px;width:100%;margin:0 auto;padding:24px 20px 60px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border-radius:10px;border:1px solid transparent;background:var(--accent);color:#fff;cursor:pointer;font-size:14px;font-weight:600;transition:filter .15s,background .15s,border-color .15s,color .15s}.btn:hover{filter:brightness(1.12)}.btn:disabled{opacity:.5;cursor:not-allowed;filter:none}.btn-ghost{background:transparent;border-color:var(--border);color:var(--text)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent);filter:none}.btn-danger{background:transparent;border-color:#ff5c5c59;color:var(--danger)}.btn-danger:hover{border-color:var(--danger);filter:none}.btn-danger-solid{background:var(--danger);color:#fff}.btn-sm{padding:6px 12px;font-size:13px;border-radius:8px}.btn-block{width:100%}.input,.select{width:100%;background:var(--bg-soft);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:10px 12px;font-size:14px;font-family:inherit;transition:border-color .15s}.input:focus,.select:focus{outline:none;border-color:var(--accent)}.input::placeholder{color:#5c6472}.select{cursor:pointer}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.label{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.card-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:650;white-space:nowrap}.badge-green{background:var(--success-soft);color:var(--success)}.badge-yellow{background:var(--warning-soft);color:var(--warning)}.badge-red{background:var(--danger-soft);color:var(--danger)}.badge-gray{background:#8b93a326;color:var(--muted)}.badge-blue{background:var(--accent-soft);color:var(--accent)}.dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none}.dot-on{background:var(--success);box-shadow:0 0 6px var(--success)}.dot-off{background:var(--muted)}.empty-state{display:flex;flex-direction:column;align-items:center;gap:14px;padding:48px 24px;border:1px dashed var(--border);border-radius:var(--radius);text-align:center;color:var(--muted)}.empty-state p{margin:0;max-width:420px}.error-box{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:10px;background:var(--danger-soft);border:1px solid rgba(255,92,92,.35);color:var(--danger);font-size:14px;margin-bottom:16px}.spinner-wrap{display:flex;align-items:center;justify-content:center;padding:80px 0}.spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:200;padding:12px 20px;border-radius:12px;font-size:14px;font-weight:600;box-shadow:0 8px 24px #00000073;animation:toast-in .2s ease-out}.toast-success{background:#12362a;border:1px solid var(--success);color:var(--success)}.toast-error{background:#3a1a22;border:1px solid var(--danger);color:var(--danger)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.modal{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px;width:100%;max-width:440px;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;gap:16px;animation:modal-in .18s ease-out}.modal-wide{max-width:760px}@keyframes modal-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-close{background:transparent;border:none;color:var(--muted);font-size:24px;line-height:1;cursor:pointer;padding:0 4px}.modal-close:hover{color:var(--text)}.modal-text,.confirm-text{margin:0;color:var(--muted);font-size:14px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(1000px 500px at 20% -10%,rgba(79,140,255,.12),transparent),var(--bg)}.auth-card{width:100%;max-width:400px;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:32px 28px;display:flex;flex-direction:column;gap:16px}.auth-title{font-size:22px;text-align:center}.auth-subtitle{margin:-8px 0 8px;text-align:center;color:var(--muted);font-size:14px}.auth-hint{margin:0;text-align:center;color:var(--muted);font-size:14px}.auth-hint a{color:var(--accent);text-decoration:none;font-weight:600}.auth-hint a:hover{text-decoration:underline}.device-card{display:flex;flex-direction:column;gap:12px}.device-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.device-name{cursor:pointer;word-break:break-word}.device-name:hover{color:var(--accent)}.device-online{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}.device-rows{display:flex;flex-direction:column;gap:6px}.device-row{display:flex;justify-content:space-between;gap:12px;font-size:13px}.device-row .label{text-transform:none;letter-spacing:0}.toggles{display:flex;gap:20px}.toggle-row{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:14px}.switch{position:relative;display:inline-block;width:44px;height:24px;flex:none}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;top:0;right:0;bottom:0;left:0;background:#2a3040;border-radius:999px;cursor:pointer;transition:background .2s}.slider:before{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;border-radius:50%;background:#fff;transition:transform .2s}.switch input:checked+.slider{background:var(--accent)}.switch input:checked+.slider:before{transform:translate(20px)}.geo{display:grid;grid-template-columns:1fr 1fr;gap:10px}.geo .field:last-child{grid-column:1 / -1}.code-input{font-size:22px;letter-spacing:6px;text-align:center;font-weight:700;text-transform:uppercase}.upload-card{margin-bottom:16px;display:flex;flex-direction:column;gap:10px}.upload-info{display:flex;justify-content:space-between;gap:12px;font-size:14px}.upload-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-percent{color:var(--accent);font-weight:650;flex:none}.progress{height:8px;background:#2a3040;border-radius:999px;overflow:hidden}.progress>div{height:100%;background:var(--accent);transition:width .15s}.media-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.media-card{display:flex;flex-direction:column;gap:10px}.thumb{aspect-ratio:16 / 9;background:#0b0d11;border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center}.thumb img{width:100%;height:100%;object-fit:cover}.thumb-empty{color:var(--muted);font-size:13px}.media-info{display:flex;flex-direction:column;gap:4px}.media-name{font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.media-meta{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:13px}.create-row{display:flex;gap:10px;margin-bottom:20px}.create-row .btn{flex:none}.playlist-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.playlist-card{display:flex;flex-direction:column;gap:10px}.playlist-name{cursor:pointer;word-break:break-word}.playlist-name:hover{color:var(--accent)}.playlist-meta{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted);flex-wrap:wrap}.muted{color:var(--muted)}.detail-head{display:flex;align-items:center;gap:14px;margin-bottom:20px;flex-wrap:wrap}.detail-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap;font-size:13px}.toolbar-actions{display:flex;gap:10px}.items-list{display:flex;flex-direction:column;gap:8px}.item-row{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;cursor:grab;transition:border-color .15s,opacity .15s}.item-row:hover{border-color:#343b4a}.item-row.dragging{opacity:.45}.item-row.drag-over{border-top:2px solid var(--accent);margin-top:-2px}.item-index{color:var(--muted);font-size:13px;font-weight:650;min-width:24px;text-align:center;flex:none}.item-main{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.item-name{font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-meta{color:var(--muted);font-size:12px}.item-duration{display:flex;align-items:center;gap:8px;flex:none;font-size:13px;color:var(--muted)}.item-duration .input{width:76px;padding:8px 10px}.search-input{margin-bottom:4px}.picker-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));max-height:46vh;overflow-y:auto}.picker-card{display:flex;flex-direction:column;gap:8px;background:var(--bg-soft);border:1px solid var(--border);border-radius:10px;padding:10px;cursor:pointer;color:var(--text);font-family:inherit;text-align:left;transition:border-color .15s,opacity .15s}.picker-card:hover{border-color:var(--accent)}.picker-card.disabled{cursor:not-allowed;opacity:.55}.picker-info{display:flex;flex-direction:column;gap:2px;min-width:0}.picker-name{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-meta{font-size:12px;color:var(--muted)}.picker-state{font-size:12px;font-weight:650;color:var(--accent)}.picker-card.disabled .picker-state{color:var(--muted)}@media (max-width: 720px){.topbar-inner{gap:12px;flex-wrap:wrap;height:auto;padding:10px 16px}.nav{order:3;width:100%;justify-content:space-between}.user-email{max-width:140px}.item-row{flex-wrap:wrap}.item-duration{margin-left:38px}}
