:root{--color-primary:#0C74E4;--color-primary-dark:#4656E8;--color-success:#018a3c;--color-warning:#967210;--color-danger:#ea2012;--bg-primary:#F5F7FA;--bg-secondary:#FFF;--bg-tertiary:#F0F4F8;--text-primary:#111827;--text-secondary:#6B7280;--text-tertiary:#9CA3AF;--border-color:#E5E7EB;--border-radius:12px;--font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html,body{overflow-x:hidden}body{font-family:var(--font-family);background:var(--bg-primary);color:var(--text-primary);font-size:15px;line-height:1.5;min-height:100vh;display:flex;flex-direction:column}.container{max-width:1200px;margin:0 auto;padding:0 16px}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.navbar{position:sticky;top:0;z-index:100;background:rgba(255,255,255,0.92);border-bottom:1px solid #F3F4F6;padding:6px 0}.navbar-inner{display:flex;align-items:center;justify-content:space-between;max-width:1200px;margin:0 auto;padding:0 16px}.navbar-brand{font-family:Helvetica;font-size:24px;font-weight:800;color:#0C74E4;letter-spacing:-0.5px;text-decoration:none}.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;gap:4px;list-style:none;align-items:center}.nav-link{display:inline-flex;align-items:center;justify-content:center;padding:8px;color:var(--text-secondary);border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;background:none;border:none;transition:all 0.15s ease}.nav-link:hover{background:var(--bg-tertiary);color:var(--text-primary)}.nav-icon{width:20px;height:20px}.user-name{font-size:14px;color:var(--text-secondary);padding:8px 4px;display:flex;align-items:center;gap:4px}.divider{width:1px;height:20px;background:var(--border-color);margin:0 4px}.vip-icon{color:#efbf04}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border:none;border-radius:var(--border-radius);font-size:14px;font-weight:500;cursor:pointer;transition:all 0.15s ease}.btn-primary{background:var(--color-primary);color:white}.btn-primary:hover{background:var(--color-primary-dark)}.btn-primary:active{transform:scale(0.97)}.btn-primary:disabled{opacity:0.6;cursor:not-allowed;transform:none}.btn-full{width:100%}.btn-ghost{background:transparent;color:var(--text-secondary);padding:6px 8px;border:none;cursor:pointer;border-radius:8px;transition:all 0.15s ease}.btn-ghost:hover{background:var(--bg-tertiary);color:var(--text-primary)}.login-lang{position:fixed;top:16px;right:16px;z-index:200}.login-wrapper{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;gap:16px;overflow:auto}.login-card{background:var(--bg-secondary);border-radius:var(--border-radius);padding:24px;width:100%;max-width:400px}.login-title{font-size:20px;font-weight:700;margin-bottom:8px;text-align:center}.login-subtitle{font-size:14px;color:var(--text-secondary);margin-bottom:24px;text-align:center}.form-group{margin-bottom:16px}.form-label{display:block;font-size:13px;font-weight:500;color:var(--text-secondary);margin-bottom:6px}.form-input{width:100%;padding:10px 14px;border:1px solid var(--border-color);border-radius:var(--border-radius);font-size:14px;background:var(--bg-primary);color:var(--text-primary);transition:border-color 0.15s ease}.form-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(12,116,228,0.1)}.form-error{font-size:13px;color:var(--color-danger);margin:8px 0 16px;text-align:center;display:none}.form-error.visible{display:block}.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin:20px 0;gap:12px}h1{font-size:24px;font-weight:700;margin-bottom:4px}.login-subtitle{font-size:14px;color:var(--text-secondary)}#devContainer{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.card-dev{background:var(--bg-secondary);border-radius:var(--border-radius);border:2px solid transparent;padding:12px;animation:fadeInUp 0.25s ease;display:flex;flex-direction:column;cursor:grab;margin:0}.card-dev:active{cursor:grabbing}.card-dev.inactive{opacity:0.5}.card-dev.dragg{box-shadow:0 0 20px rgba(12,116,228,0.3);transform:scale(1.02);z-index:10;opacity:0.8}.reading-item.dragg{box-shadow:0 0 10px rgba(12,116,228,0.3);transform:scale(1.01);z-index:10;opacity:0.8}.card-dev.drop-target{border:2px dashed var(--color-primary);border-radius:var(--border-radius)}.reading-item.drop-target{border:2px dashed var(--color-primary);border-radius:8px}.dev-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px}.dev-name{font-size:18px;font-weight:600;display:flex;align-items:center;gap:8px}.dev-readings{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.reading-item{background:var(--bg-tertiary);border-radius:8px;border:2px solid transparent;padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:grab}.reading-item:active{cursor:grabbing}.reading-item[draggable="true"]:hover{background:var(--border-color)}.reading-item.inactive{opacity:0.5}.reading-chart-btn{flex-shrink:0;padding:4px;color:var(--text-tertiary);width:32px;height:32px;display:flex;align-items:center;justify-content:center}.reading-chart-btn:hover{color:var(--color-primary)}.reading-toggle{display:flex;align-items:center;cursor:pointer}.toggle-track{width:36px;height:20px;border-radius:10px;position:relative;transition:background-color 0.8s ease}.toggle-track.off{background:var(--text-tertiary)}.toggle-track.on{background:var(--color-success)}.toggle-thumb{position:absolute;top:2px;width:16px;height:16px;border-radius:50%;background:white;transition:left 0.2s ease}.toggle-track.off .toggle-thumb{left:2px}.toggle-track.on .toggle-thumb{left:18px}.reading-label{font-size:14px;color:var(--text-secondary);margin-bottom:2px}.reading-value{font-size:16px;font-weight:600;color:var(--text-primary)}.reading-value-toggle{display:flex;align-items:center;gap:8px;flex-shrink:0}.reading-value-toggle .reading-value{min-width:46px;width:46px;font-variant-numeric:tabular-nums}.dev-footer{margin-top:auto;display:flex;align-items:center;justify-content:space-between}.dev-time{font-size:12px;color:var(--text-tertiary)}.last-update{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary);white-space:nowrap}.empty-state{text-align:center;padding:48px 24px;color:var(--text-secondary);grid-column:1 / -1}.loading{display:flex;align-items:center;justify-content:center;padding:48px;grid-column:1 / -1}.spinner{width:32px;height:32px;border:3px solid var(--border-color);border-top-color:var(--color-primary);border-radius:50%;animation:spin 0.8s linear infinite}.footer{margin-top:32px;padding:20px 0;text-align:center;font-size:12px;color:var(--text-tertiary);border-top:1px solid #F3F4F6}.theme-toggle{background:none;border:none;cursor:pointer;padding:5px;border-radius:8px;color:var(--text-secondary);display:flex;align-items:center;justify-content:center}.theme-toggle svg{width:18px;height:18px}.lang-switch{background:none;border:1px solid var(--border-color);cursor:pointer;padding:4px 8px;border-radius:6px;color:var(--text-secondary);font-size:11px;font-weight:600;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;transition:all 0.15s ease}.lang-switch:hover{background:var(--bg-tertiary);color:var(--text-primary)}@keyframes fadeInUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}.modal-dialog{border:none;border-radius:var(--border-radius);width:95%;max-width:900px;max-height:90vh;background:var(--bg-secondary);padding:0;overflow:hidden;margin:auto}.modal-dialog::backdrop{background:rgba(0,0,0,0.6);backdrop-filter:blur(4px)}.modal-dialog[open]{display:block}.modal-dialog:not([open]){display:none}.modal-content{display:flex;flex-direction:column;height:100%;max-height:90vh;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:10px 15px;border-bottom:1px solid var(--border-color);flex-shrink:0;background:var(--bg-secondary)}.modal-title{font-size:16px;font-weight:600}.modal-close{font-size:24px;line-height:1;padding:4px 8px;background:none;border:none;cursor:pointer;color:var(--text-secondary);border-radius:6px}.modal-close:hover{color:var(--text-primary);background:var(--bg-tertiary)}.modal-body{padding:15px;overflow-y:auto;overflow-x:hidden;flex-grow:1;background:var(--bg-secondary)}.confirm-dialog{max-width:380px}.confirm-body{padding:24px;text-align:center}.confirm-text{font-size:15px;color:var(--text-primary);margin-bottom:20px;line-height:1.5}.confirm-actions{display:flex;gap:10px;justify-content:center}.confirm-actions .btn{min-width:100px}.toast-container{position:fixed;bottom:24px;right:24px;z-index:1000;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{background:var(--bg-secondary);border-radius:var(--border-radius);padding:12px 16px;box-shadow:0 4px 24px rgba(0,0,0,0.15);font-size:14px;color:var(--text-primary);display:flex;align-items:center;gap:8px;pointer-events:auto;animation:toastIn 0.25s ease;max-width:360px}.toast.toast-out{animation:toastOut 0.2s ease forwards}.toast-success{border-left:5px solid var(--color-success)}.toast-error{border-left:5px solid var(--color-danger)}.toast-icon{flex-shrink:0;width:18px;height:18px}@keyframes toastIn{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes toastOut{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(20px)}}.chart-controls{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:8px}.chart-period-buttons{display:flex;gap:4px}.chart-btn{padding:6px 12px;border:1px solid var(--bg-primary);border-radius:6px;background:var(--bg-primary);color:var(--text-secondary);font-size:12px;font-weight:500;cursor:pointer;transition:all 0.15s ease}.chart-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.chart-btn.active{background:var(--color-primary);color:white;border-color:var(--color-primary)}.chart-btn:disabled{opacity:0.4;cursor:not-allowed}.chart-nav{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0}.chart-range-label{font-size:13px;color:var(--text-secondary);font-weight:500;min-width:200px;text-align:center}.chart-loading{display:flex;align-items:center;justify-content:center;padding:48px;color:var(--text-secondary);font-size:14px;gap:12px}.chart-loading .spinner{width:24px;height:24px;border-width:2px}#modalChartInner{width:100%}[data-theme="dark"]{--color-primary:#60A5FA;--color-primary-dark:#3B82F6;--color-success:#34D399;--color-danger:#F87171;--bg-primary:#0F172A;--bg-secondary:#1E293B;--bg-tertiary:#334155;--text-primary:#F1F5F9;--text-secondary:#94A3B8;--text-tertiary:#64748B;--border-color:#334155}[data-theme="dark"] .navbar{background:rgba(15,23,42,0.92);border-bottom-color:rgba(255,255,255,0.05)}[data-theme="dark"] .footer{border-top-color:rgba(255,255,255,0.05)}[data-theme="dark"] .apexcharts-toolbar{filter:none}[data-theme="dark"] .apexcharts-menu{background:var(--bg-secondary) !important;border-color:var(--border-color) !important}[data-theme="dark"] .apexcharts-menu-item:hover{background:var(--bg-tertiary) !important}[data-theme="dark"] .apexcharts-tooltip{background:var(--bg-secondary) !important;border-color:var(--border-color) !important;color:var(--text-primary) !important}[data-theme="dark"] .apexcharts-tooltip-title{background:var(--bg-tertiary) !important;border-color:var(--border-color) !important}[data-theme="dark"] .apexcharts-xaxistooltip,[data-theme="dark"] .apexcharts-yaxistooltip{background:var(--bg-secondary) !important;border-color:var(--border-color) !important;color:var(--text-primary) !important}[data-theme="dark"] .apexcharts-selection-rect{fill:rgba(96,165,250,0.15) !important;stroke:#60A5FA !important}@media (max-width:900px){.login-wrapper{flex-direction:column}}@media (max-width:768px){.page-header{flex-direction:column}.user-name{display:none}.divider{display:none}}@media (max-width:576px){.container{padding:0 12px}.card-dev{padding:16px}h1{font-size:20px}.login-card{padding:24px}.login-title{font-size:18px}.login-subtitle{font-size:13px}.form-input{font-size:16px}}@media (max-width:375px){.login-wrapper{padding:16px}.login-card{padding:20px}.login-title{font-size:17px}.login-subtitle{font-size:12px;margin-bottom:16px}}