@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap";:root{--primary:#f47721;--primary-hover:#c64b08;--primary-light:#fff0e5;--primary-dark:#c64b08;--primary-bright:#ff8200;--black:#171717;--background:#fff;--white:#fff;--gray:#666;--border:#f3e4d8;--bg-base:#fff;--bg-surface:#fff;--bg-elevated:#fff0e5;--bg-card:#fff;--bg-hover:#fff0e5;--bg-sidebar:#fff;--bg-sidebar-active:#fff0e5;--border-color:#f3e4d8;--border-subtle:#faf1ea;--border-strong:#e8cdb9;--text-primary:#171717;--text-secondary:#666;--text-muted:#666;--text-inverse:#fff;--accent:#f47721;--accent-hover:#c64b08;--accent-subtle:#f4772114;--accent-glow:#f4772133;--success:#10b981;--success-hover:#059669;--success-subtle:#10b9811a;--success-glow:#10b98140;--danger:#ef4444;--danger-hover:#dc2626;--danger-subtle:#ef44441a;--warning:#f59e0b;--warning-hover:#d97706;--warning-subtle:#f59e0b1a;--info:#0284c7;--info-subtle:#0284c71a;--sidebar-width:250px;--sidebar-collapsed:68px;--topbar-height:64px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--shadow-xs:0 1px 2px 0 #1717170a;--shadow-sm:0 1px 3px 0 #0000000f, 0 1px 2px -1px #0000000f;--shadow-md:0 4px 6px -1px #00000012, 0 2px 4px -2px #0000000d;--shadow-lg:0 10px 15px -3px #00000014, 0 4px 6px -4px #0000000a;--shadow-xl:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000000a;--shadow-glow:0 0 0 3px var(--accent-glow);--font-family:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", "Cascadia Code", ui-monospace, SFMono-Regular, monospace;--text-xs:12px;--text-sm:13px;--text-base:14px;--text-md:15px;--text-lg:16px;--text-xl:18px;--text-2xl:22px;--text-3xl:28px;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-base:.2s cubic-bezier(.4, 0, .2, 1);--transition-slow:.3s cubic-bezier(.4, 0, .2, 1);--z-sidebar:100;--z-topbar:90;--z-modal:200;--z-tooltip:300}[data-theme=light]{--bg-base:#fff;--bg-surface:#fff;--bg-elevated:#fff0e5;--bg-card:#fff;--bg-hover:#fff0e5;--bg-sidebar:#fff;--bg-sidebar-active:#fff0e5;--border:#f3e4d8;--border-color:#f3e4d8;--border-subtle:#faf1ea;--border-strong:#e8cdb9;--text-primary:#171717;--text-secondary:#666;--text-muted:#666;--text-inverse:#fff;--accent:#f47721;--accent-hover:#c64b08;--accent-subtle:#f4772114;--accent-glow:#f4772133;--shadow-sm:0 1px 3px 0 #0000000f, 0 1px 2px -1px #0000000f;--shadow-md:0 4px 6px -1px #00000012, 0 2px 4px -2px #0000000d;--shadow-lg:0 10px 15px -3px #00000014, 0 4px 6px -4px #0000000a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:14px}body{font-family:var(--font-family);font-size:var(--text-base);font-weight:var(--weight-normal);color:var(--text-primary);background:var(--bg-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;line-height:1.5;overflow-x:hidden}a{color:var(--accent);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--accent-hover)}button{cursor:pointer;background:0 0;border:none;font-family:inherit}input,select,textarea{font-family:inherit}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.app-shell{background:var(--bg-base);min-height:100vh;display:flex;position:relative}.main-content{min-width:0;transition:all var(--transition-base);flex-direction:column;flex:1;display:flex}.page-body{padding:var(--space-6) var(--space-8);flex:1;width:100%;max-width:1400px;margin:0 auto;overflow-y:auto}.sidebar{width:var(--sidebar-width);background:var(--bg-sidebar);border-right:1px solid var(--border);height:100vh;z-index:var(--z-sidebar);-webkit-user-select:none;user-select:none;transition:width var(--transition-base), transform var(--transition-base);flex-direction:column;flex-shrink:0;display:flex;position:sticky;top:0;overflow:hidden}.sidebar.collapsed{width:var(--sidebar-collapsed)}.sidebar-brand{height:var(--topbar-height);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:12px;padding:0 20px;display:flex}.sidebar.collapsed .sidebar-brand{justify-content:center;padding:0 16px}.brand-logo-icon{border-radius:var(--radius-md);object-fit:cover;flex-shrink:0;width:34px;height:34px;box-shadow:0 2px 4px #f4772140}.brand-logo-img{border-radius:var(--radius-md);flex-shrink:0;width:auto;height:44px;display:block;box-shadow:0 2px 4px #f4772140}.sidebar .brand-logo-icon,.sidebar.collapsed .brand-logo-img{display:none}.sidebar.collapsed .brand-logo-icon{display:block}.brand-text{min-width:0;overflow:hidden}.sidebar.collapsed .brand-text{display:none}.brand-title{font-weight:var(--weight-bold);font-size:var(--text-md);color:var(--text-primary);letter-spacing:-.01em;white-space:nowrap;line-height:1.2}.brand-subtitle{color:var(--text-muted);white-space:nowrap;font-size:11px;font-weight:var(--weight-medium);text-transform:uppercase;letter-spacing:.04em}.sidebar-mobile-close{margin-left:auto;display:none}.sidebar-nav{flex-direction:column;flex:1;gap:4px;padding:16px 10px;display:flex;overflow-y:auto}.sidebar-section-title{font-size:10px;font-weight:var(--weight-semibold);color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;padding:0 10px 6px}.sidebar.collapsed .sidebar-section-title{display:none}.sidebar-link{border-radius:var(--radius-md);color:var(--text-secondary);font-weight:var(--weight-medium);font-size:var(--text-sm);transition:all var(--transition-fast);white-space:nowrap;background:0 0;align-items:center;gap:12px;padding:9px 12px;text-decoration:none;display:flex}.sidebar.collapsed .sidebar-link{justify-content:center;padding:10px 0}.sidebar-link:hover{background:var(--bg-hover);color:var(--text-primary)}.sidebar-link.active{color:var(--accent);background:var(--bg-sidebar-active);font-weight:var(--weight-semibold)}.sidebar-icon{flex-shrink:0}.sidebar.collapsed .sidebar-label{display:none}.sidebar-divider{background:var(--border);height:1px;margin:10px 6px}.sidebar-footer{border-top:1px solid var(--border);flex-shrink:0;align-items:center;padding:12px 10px;display:flex}.sidebar-collapse-btn{width:100%;font-size:var(--text-xs);justify-content:flex-start;gap:8px;padding:6px 10px}.sidebar.collapsed .sidebar-collapse-btn{justify-content:center;padding:6px 0}.sidebar.collapsed .sidebar-collapse-label{display:none}.topbar{height:var(--topbar-height);background:var(--bg-surface);border-bottom:1px solid var(--border);padding:0 var(--space-6);z-index:var(--z-topbar);flex-shrink:0;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.topbar-left{align-items:center;gap:var(--space-3);min-width:0;display:flex}.mobile-menu-btn{margin-right:-4px;padding:7px;display:none}.topbar-title-wrap{min-width:0}.topbar-title{font-weight:var(--weight-semibold);font-size:var(--text-base);color:var(--text-primary);white-space:nowrap;line-height:1.2}.topbar-subtitle{font-size:var(--text-xs);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.topbar-right{align-items:center;gap:var(--space-3);display:flex}.topbar-network-pill{background:var(--bg-elevated);border:1px solid var(--border);borderRadius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-medium);white-space:nowrap;align-items:center;gap:8px;padding:5px 12px;display:flex}.network-pill-text{color:var(--text-secondary)}.topbar-user-badge{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-full);font-size:var(--text-xs);color:var(--text-secondary);font-weight:var(--weight-medium);align-items:center;gap:6px;padding:5px 12px;display:flex}.user-badge-icon{color:var(--text-muted)}.page-header{margin-bottom:var(--space-6)}.page-header h1{font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--text-primary);letter-spacing:-.02em;line-height:1.25}.page-header p{color:var(--text-secondary);font-size:var(--text-sm);margin-top:var(--space-1)}.page-header-row{justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.page-header-actions{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-xs);transition:border-color var(--transition-fast), box-shadow var(--transition-fast)}.card-header{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}.card-title{font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-primary);align-items:center;gap:var(--space-2);display:flex}.card-description{font-size:var(--text-xs);color:var(--text-muted);margin-top:2px}.stat-grid{gap:var(--space-4);margin-bottom:var(--space-6);grid-template-columns:repeat(4,1fr);display:grid}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);justify-content:space-between;align-items:flex-start;gap:var(--space-4);box-shadow:var(--shadow-xs);transition:transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast);display:flex}.stat-card:hover{box-shadow:var(--shadow-sm);border-color:var(--border-strong);transform:translateY(-1px)}.stat-content{gap:var(--space-1);flex-direction:column;display:flex}.stat-label{font-size:var(--text-xs);color:var(--text-muted);font-weight:var(--weight-medium);text-transform:uppercase;letter-spacing:.05em}.stat-value{font-size:var(--text-3xl);font-weight:var(--weight-bold);color:var(--text-primary);line-height:1.1}.stat-subtext{font-size:var(--text-xs);color:var(--text-secondary)}.stat-icon-wrapper{border-radius:var(--radius-md);flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.stat-card.accent .stat-icon-wrapper{background:var(--accent-subtle);color:var(--accent)}.stat-card.success .stat-icon-wrapper{background:var(--success-subtle);color:var(--success)}.stat-card.danger .stat-icon-wrapper{background:var(--danger-subtle);color:var(--danger)}.stat-card.warning .stat-icon-wrapper{background:var(--warning-subtle);color:var(--warning)}.stat-card.info .stat-icon-wrapper{background:var(--info-subtle);color:var(--info)}.btn{justify-content:center;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-medium);border-radius:var(--radius-md);transition:all var(--transition-fast);white-space:nowrap;-webkit-user-select:none;user-select:none;cursor:pointer;border:1px solid #0000;padding:8px 14px;line-height:1.25;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.btn-primary{background:var(--accent);color:var(--text-inverse);border-color:var(--accent);box-shadow:0 1px 2px #f4772133}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-secondary{background:var(--bg-card);color:var(--text-primary);border-color:var(--border);box-shadow:var(--shadow-xs)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover);border-color:var(--border-strong)}.btn-danger{background:var(--danger-subtle);color:var(--danger);border-color:#0000}.btn-danger:hover:not(:disabled){background:var(--danger);color:#fff}.btn-success{background:var(--success-subtle);color:var(--success);border-color:#0000}.btn-success:hover:not(:disabled){background:var(--success);color:#fff}.btn-ghost{color:var(--text-secondary);background:0 0;border-color:#0000;padding:8px 10px}.btn-ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.btn-sm{font-size:var(--text-xs);border-radius:var(--radius-sm);gap:5px;padding:5px 10px}.btn-lg{font-size:var(--text-md);border-radius:var(--radius-md);padding:11px 20px}.btn-icon{aspect-ratio:1;border-radius:var(--radius-md);padding:8px}.btn-icon.btn-sm{aspect-ratio:1;padding:6px}.form-group{gap:var(--space-2);flex-direction:column;display:flex}.form-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary);justify-content:space-between;align-items:center;display:flex}.form-input,.form-select,.form-textarea{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--text-sm);width:100%;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);box-shadow:var(--shadow-xs);padding:9px 12px}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);outline:none}.form-input::placeholder{color:var(--text-muted)}.form-select{cursor:pointer}.form-select option{background:var(--bg-card);color:var(--text-primary)}.form-error{font-size:var(--text-xs);color:var(--danger);font-weight:var(--weight-medium)}.form-hint{font-size:var(--text-xs);color:var(--text-muted)}.form-row{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.search-box{align-items:center;display:flex;position:relative}.search-box .search-icon{color:var(--text-muted);pointer-events:none;display:flex;position:absolute;left:11px}.search-box .form-input{padding-left:36px}.table-container{border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--bg-card);box-shadow:var(--shadow-xs);-webkit-overflow-scrolling:touch;overflow-x:auto}table{border-collapse:collapse;text-align:left;width:100%;min-width:620px}thead{background:var(--bg-elevated)}th{padding:12px var(--space-4);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border)}td{padding:13px var(--space-4);font-size:var(--text-sm);color:var(--text-primary);border-bottom:1px solid var(--border-subtle);vertical-align:middle}tr:last-child td{border-bottom:none}tbody tr{transition:background var(--transition-fast)}tbody tr:hover{background:var(--bg-hover)}.badge{border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-medium);white-space:nowrap;align-items:center;gap:5px;padding:3px 9px;line-height:1.2;display:inline-flex}.badge-success{background:var(--success-subtle);color:var(--success);border:1px solid #10b98133}.badge-danger{background:var(--danger-subtle);color:var(--danger);border:1px solid #ef444433}.badge-warning{background:var(--warning-subtle);color:var(--warning);border:1px solid #f59e0b33}.badge-accent{background:var(--accent-subtle);color:var(--accent);border:1px solid #f4772133}.badge-info{background:var(--info-subtle);color:var(--info);border:1px solid #0284c733}.badge-neutral{background:var(--bg-elevated);color:var(--text-secondary);border:1px solid var(--border)}.dot{border-radius:50%;flex-shrink:0;width:7px;height:7px;display:inline-block}.dot-online{background:var(--success);box-shadow:0 0 0 0 var(--success-glow);animation:2s infinite pulse-online}.dot-offline{background:var(--danger)}.dot-checking{background:var(--warning);animation:1s infinite pulse-check}@keyframes pulse-online{0%{box-shadow:0 0 0 0 var(--success-glow)}70%{box-shadow:0 0 0 5px #10b98100}to{box-shadow:0 0 #10b98100}}@keyframes pulse-check{0%,to{opacity:1}50%{opacity:.35}}.modal-overlay{z-index:var(--z-modal);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:var(--space-4);background:#0f172a8c;justify-content:center;align-items:center;animation:.15s fade-in;display:flex;position:fixed;inset:0}.modal{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-6);width:100%;max-width:540px;max-height:90vh;box-shadow:var(--shadow-xl);animation:.18s slide-up;overflow-y:auto}.modal-header{margin-bottom:var(--space-5);padding-bottom:var(--space-3);border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;display:flex}.modal-title{font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--text-primary);align-items:center;gap:var(--space-2);display:flex}.modal-footer{gap:var(--space-3);margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--border-subtle);justify-content:flex-end;display:flex}.alert{border-radius:var(--radius-md);font-size:var(--text-sm);align-items:flex-start;gap:var(--space-3);border:1px solid #0000;padding:12px 14px;line-height:1.45;display:flex}.alert-icon{flex-shrink:0;margin-top:1px}.alert-success{background:var(--success-subtle);color:var(--success);border-color:#10b98140}.alert-danger{background:var(--danger-subtle);color:var(--danger);border-color:#ef444440}.alert-warning{background:var(--warning-subtle);color:var(--warning);border-color:#f59e0b40}.alert-info{background:var(--accent-subtle);color:var(--accent);border-color:#f4772140}.device-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(320px,1fr));display:grid}.media-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.upload-layout{gap:var(--space-6);grid-template-columns:minmax(0,1fr) 360px;align-items:start;display:grid}.dropzone{border:2px dashed var(--border-strong);border-radius:var(--radius-lg);padding:var(--space-10) var(--space-6);text-align:center;cursor:pointer;transition:all var(--transition-base);background:var(--bg-surface);justify-content:center;align-items:center;gap:var(--space-2);flex-direction:column;display:flex}.dropzone:hover,.dropzone.drag-over{border-color:var(--accent);background:var(--accent-subtle)}.dropzone-icon{border-radius:var(--radius-full);background:var(--accent-subtle);width:48px;height:48px;color:var(--accent);margin-bottom:var(--space-2);justify-content:center;align-items:center;display:flex}.progress-bar-wrap{background:var(--bg-elevated);border-radius:var(--radius-full);width:100%;height:6px;overflow:hidden}.progress-bar-fill{background:var(--accent);border-radius:var(--radius-full);height:100%;transition:width .2s}.ip-chip{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xs);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-primary);letter-spacing:.02em;font-weight:var(--weight-medium);align-items:center;gap:4px;padding:2px 7px;display:inline-flex}.section-label{font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:var(--space-2);display:block}.divider{background:var(--border);height:1px;margin:var(--space-4) 0}.empty-state{padding:var(--space-12) var(--space-6);text-align:center;justify-content:center;align-items:center;gap:var(--space-3);background:var(--bg-card);border:1px dashed var(--border);border-radius:var(--radius-lg);flex-direction:column;display:flex}.empty-state-icon{border-radius:var(--radius-full);background:var(--bg-elevated);width:56px;height:56px;color:var(--text-muted);margin-bottom:var(--space-1);justify-content:center;align-items:center;display:flex}.empty-state h3{font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--text-primary)}.empty-state p{color:var(--text-secondary);font-size:var(--text-sm);max-width:380px;line-height:1.5}.spinner{border:2px solid var(--border-strong);border-top-color:currentColor;border-radius:50%;flex-shrink:0;width:18px;height:18px;animation:.7s linear infinite spin;display:inline-block}.spinner-sm{border-width:2px;width:14px;height:14px}.spinner-lg{border-width:3px;width:28px;height:28px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (width>=1025px){.sidebar{position:sticky;display:flex!important}.mobile-backdrop,.mobile-menu-btn{display:none!important}}@media (width<=1024px){.page-body{padding:var(--space-5) var(--space-6)}.stat-grid{grid-template-columns:repeat(2,1fr)}.upload-layout{gap:var(--space-4);grid-template-columns:minmax(0,1fr) 300px}}@media (width<=900px){.sidebar{height:100vh;z-index:var(--z-sidebar);box-shadow:var(--shadow-xl);transition:transform var(--transition-base);top:0;bottom:0;left:0;transform:translate(-100%);width:260px!important;position:fixed!important}.sidebar.mobile-open{transform:translate(0)}.sidebar-mobile-close{display:inline-flex}.sidebar-footer{display:none}.mobile-menu-btn{display:inline-flex!important}.mobile-backdrop.open{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:calc(var(--z-sidebar) - 1);background:#0f172a8c;animation:.15s fade-in;display:block;position:fixed;inset:0}.upload-layout{grid-template-columns:1fr}}@media (width<=768px){.topbar{padding:0 var(--space-4)}.page-body{padding:var(--space-4)}.page-header h1{font-size:var(--text-xl)}.page-header-row{align-items:stretch;gap:var(--space-3);flex-direction:column}.page-header-actions{justify-content:space-between;width:100%}.stat-grid{gap:var(--space-3);grid-template-columns:1fr 1fr}.stat-card{padding:var(--space-4)}.stat-value{font-size:var(--text-2xl)}.device-grid{grid-template-columns:1fr}.media-grid{gap:var(--space-3);grid-template-columns:repeat(2,1fr)}.form-row{grid-template-columns:1fr}.modal{margin:var(--space-3);padding:var(--space-4);max-width:95vw}.modal-footer{flex-direction:column-reverse}.modal-footer .btn{width:100%}.search-box{width:100%!important}}@media (width<=520px){.topbar{padding:0 var(--space-3);gap:var(--space-2)}.topbar-subtitle{display:none}.topbar-network-pill{padding:4px 8px;font-size:11px}.network-pill-total,.user-badge-label{display:none}.topbar-user-badge{aspect-ratio:1;border-radius:var(--radius-full);padding:6px}.stat-grid{gap:var(--space-3);grid-template-columns:1fr}.media-grid{grid-template-columns:1fr}.page-header-actions .btn{flex:1}}
