@import"https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,300;14..32,400;14..32,500;14..32,600;14..32,700&display=swap";*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f2f2f7;--bg-card: #ffffff;--bg-inset: #f0f0f5;--border: rgba(0, 0, 0, .07);--border-med: rgba(0, 0, 0, .13);--text-1: #1c1c1e;--text-2: #636366;--text-3: #aeaeb2;--accent: #007aff;--accent-dim: rgba(0, 122, 255, .1);--green: #34c759;--green-dim: rgba(52, 199, 89, .1);--orange: #ff9500;--orange-dim: rgba(255, 149, 0, .1);--red: #ff3b30;--red-dim: rgba(255, 59, 48, .1);--purple: #af52de;--purple-dim: rgba(175, 82, 222, .1);--yellow: #ffcc00;--bg2: var(--bg-card);--bg3: var(--bg-inset);--border2: var(--border-med);--text: var(--text-1);--muted: var(--text-2);--dim: var(--text-3);--shadow-sm: 0 1px 4px rgba(0, 0, 0, .05), 0 1px 2px rgba(0, 0, 0, .03);--shadow-md: 0 4px 24px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .04);--shadow-lg: 0 16px 48px rgba(0, 0, 0, .1);--r-card: 20px;--r-sm: 12px;--r-xs: 8px;--gap: 16px;--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--ease: .18s cubic-bezier(.4, 0, .2, 1)}[data-theme=dark]{--bg: #111111;--bg-card: #1c1c1e;--bg-inset: #2c2c2e;--border: rgba(255, 255, 255, .07);--border-med: rgba(255, 255, 255, .13);--text-1: #f5f5f7;--text-2: #8e8e93;--text-3: #48484a;--accent: #0a84ff;--accent-dim: rgba(10, 132, 255, .15);--green: #30d158;--green-dim: rgba(48, 209, 88, .15);--orange: #ff9f0a;--orange-dim: rgba(255, 159, 10, .15);--red: #ff453a;--red-dim: rgba(255, 69, 58, .15);--purple: #bf5af2;--purple-dim: rgba(191, 90, 242, .15);--yellow: #ffd60a;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3), 0 0 0 1px var(--border);--shadow-md: 0 4px 24px rgba(0, 0, 0, .5), 0 0 0 1px var(--border);--shadow-lg: 0 16px 48px rgba(0, 0, 0, .7), 0 0 0 1px var(--border)}html{font-family:var(--font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background:var(--bg);color:var(--text-1);min-height:100vh;transition:background var(--ease),color var(--ease)}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--text-3);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--text-2)}.app{max-width:1640px;margin:0 auto;padding:20px var(--gap);display:flex;flex-direction:column;gap:var(--gap);min-height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:var(--bg-card);border-radius:var(--r-card);box-shadow:var(--shadow-sm);gap:12px;flex-wrap:wrap;transition:background var(--ease),box-shadow var(--ease)}.logo{font-size:17px;font-weight:700;letter-spacing:-.02em;color:var(--text-1);display:flex;align-items:baseline;gap:2px}.logo-accent{color:var(--accent)}.logo-sub{font-size:13px;font-weight:400;color:var(--text-3);margin-left:8px;letter-spacing:0}.topbar-right{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.topbar-links{display:flex;gap:6px}.topbar-link{font-size:12px;font-weight:500;padding:5px 13px;border-radius:20px;background:var(--bg-inset);color:var(--text-2);text-decoration:none;transition:all var(--ease);white-space:nowrap}.topbar-link:hover{background:var(--accent-dim);color:var(--accent)}.topbar-time{font-size:13px;font-weight:500;color:var(--text-2);font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:-.01em}.theme-toggle{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;border:none;background:var(--bg-inset);color:var(--text-2);cursor:pointer;font-size:14px;transition:all var(--ease);flex-shrink:0}.theme-toggle:hover{background:var(--accent-dim);color:var(--accent)}.theme-toggle.manual:after{content:"";position:absolute;width:5px;height:5px;background:var(--orange);border-radius:50%;top:-1px;right:-1px}.theme-toggle-wrap{position:relative}.row{display:grid;gap:var(--gap)}.row-3{grid-template-columns:repeat(3,1fr)}.row-4{grid-template-columns:repeat(4,1fr)}.row-2-1{grid-template-columns:2fr 1fr}.row-3-1{grid-template-columns:3fr 1fr}.row-1-2{grid-template-columns:1fr 2fr}.card{background:var(--bg-card);border-radius:var(--r-card);padding:20px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow-sm);transition:background var(--ease),box-shadow var(--ease)}.card-title{font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);display:flex;align-items:center;gap:8px;flex-shrink:0}.card-title:before{display:none}.dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;display:inline-block}.dot.up{background:var(--green);box-shadow:0 0 5px var(--green)}.dot.down{background:var(--red);box-shadow:0 0 5px var(--red)}.dot.warn{background:var(--orange);box-shadow:0 0 5px var(--orange)}.dot.unknown{background:var(--text-3)}.badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:20px;letter-spacing:.04em;white-space:nowrap}.badge.up{background:var(--green-dim);color:var(--green)}.badge.down{background:var(--red-dim);color:var(--red)}.badge.warn{background:var(--orange-dim);color:var(--orange)}.badge.unknown{background:var(--bg-inset);color:var(--text-3)}.spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--border-med);border-top-color:var(--accent);border-radius:50%;animation:spin .65s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.service-list{display:flex;flex-direction:column;gap:1px}.service-row{display:flex;align-items:center;justify-content:space-between;padding:7px 8px;border-radius:var(--r-xs);transition:background var(--ease)}.service-row:hover{background:var(--bg-inset)}.service-name{font-size:13px;font-weight:500;color:var(--text-1)}.service-port{font-size:11px;color:var(--text-3);margin-left:5px}.service-actions{display:flex;align-items:center;gap:8px}.restart-btn{font-size:11px;font-weight:500;padding:3px 9px;background:transparent;border:1.5px solid var(--border-med);color:var(--text-3);border-radius:20px;cursor:pointer;transition:all var(--ease);font-family:var(--font);line-height:1.4}.restart-btn:hover{border-color:var(--orange);color:var(--orange);background:var(--orange-dim)}.restart-btn.loading{color:var(--yellow);border-color:var(--yellow)}.metrics-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.metric{text-align:center}.metric-val{font-size:34px;font-weight:600;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}.metric-lbl{font-size:10px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);margin-top:4px}.bar-group{display:flex;flex-direction:column;gap:6px}.bar-label{display:flex;justify-content:space-between;font-size:11px;font-weight:500;color:var(--text-2)}.bar-track{height:4px;background:var(--bg-inset);border-radius:2px;overflow:hidden}.bar-fill{height:100%;border-radius:2px;transition:width .6s ease}.sparkline-wrap{height:48px;position:relative;margin-top:4px}.market-list{display:flex;flex-direction:column}.market-section-label{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);padding:6px 0 3px}.market-row{display:flex;align-items:center;padding:7px 0;border-bottom:1px solid var(--border);gap:8px}.market-row:last-child{border:none}.market-sym{font-size:12px;font-weight:700;color:var(--text-1);width:50px;flex-shrink:0}.market-price{font-size:13px;font-weight:500;flex:1;text-align:right;font-variant-numeric:tabular-nums;color:var(--text-1)}.market-chg{font-size:11px;font-weight:600;width:58px;text-align:right;font-variant-numeric:tabular-nums;padding:2px 7px;border-radius:20px}.market-chg.pos{color:var(--green);background:var(--green-dim)}.market-chg.neg{color:var(--red);background:var(--red-dim)}.weather-main{display:flex;align-items:center;justify-content:space-between}.weather-temp{font-size:48px;font-weight:600;letter-spacing:-.04em;color:var(--text-1);line-height:1;font-variant-numeric:tabular-nums}.weather-desc{font-size:12px;color:var(--text-2);margin-top:5px}.weather-details{text-align:right}.weather-detail{font-size:12px;color:var(--text-2);line-height:2}.news-list{display:flex;flex-direction:column;overflow:hidden}.news-item{padding:8px 0;border-bottom:1px solid var(--border);cursor:pointer;text-decoration:none}.news-item:first-child{padding-top:0}.news-item:last-child{border:none;padding-bottom:0}.news-headline{font-size:13px;font-weight:500;line-height:1.4;color:var(--text-1);transition:color var(--ease);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.news-item:hover .news-headline{color:var(--accent)}.news-meta{font-size:11px;color:var(--text-3);margin-top:3px}.cam-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.cam-slot{aspect-ratio:16/9;background:var(--bg-inset);border-radius:var(--r-sm);overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px}.cam-slot img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.cam-label{font-size:10px;font-weight:600;letter-spacing:.08em;color:var(--text-3);text-transform:uppercase;z-index:1}.cam-icon{font-size:22px;opacity:.18;z-index:1}.cam-live{position:absolute;top:7px;left:7px;font-size:9px;font-weight:700;background:#ff3b30e0;color:#fff;padding:2px 6px;border-radius:5px;letter-spacing:.06em;z-index:2}.torrent-list{display:flex;flex-direction:column;gap:10px}.torrent-item{display:flex;flex-direction:column;gap:4px}.torrent-name{font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-1)}.torrent-meta{display:flex;justify-content:space-between;font-size:11px;color:var(--text-3)}.torrent-bar{height:3px;background:var(--bg-inset);border-radius:2px;overflow:hidden}.torrent-fill{height:100%;border-radius:2px;transition:width .4s ease}.plex-list{display:flex;flex-direction:column;gap:14px}.plex-item{display:flex;gap:12px;align-items:center}.plex-thumb{width:36px;height:52px;background:var(--bg-inset);border-radius:var(--r-xs);flex-shrink:0;object-fit:cover}.plex-info{flex:1;min-width:0}.plex-title{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-1)}.plex-sub{font-size:11px;color:var(--text-3);margin-top:2px}.plex-progress{height:3px;background:var(--bg-inset);border-radius:2px;margin-top:7px;overflow:hidden}.plex-fill{height:100%;background:var(--accent);border-radius:2px}.no-content{font-size:12px;color:var(--text-3);text-align:center;padding:16px 0}.toast{position:fixed;bottom:20px;right:20px;background:var(--bg-card);border-radius:var(--r-sm);padding:12px 18px;font-size:13px;font-weight:500;box-shadow:var(--shadow-md);z-index:200;animation:toast-in .25s ease}.toast.success{color:var(--green)}.toast.error{color:var(--red)}@keyframes toast-in{0%{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:none}}.auth-screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg);padding:24px;transition:background var(--ease)}.auth-card{background:var(--bg-card);border-radius:var(--r-card);padding:40px;box-shadow:var(--shadow-md);width:100%;max-width:360px;display:flex;flex-direction:column;gap:28px;animation:auth-appear .35s cubic-bezier(.34,1.56,.64,1)}@keyframes auth-appear{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:none}}.auth-brand{text-align:center}.auth-logo{font-size:24px;font-weight:700;letter-spacing:-.03em;color:var(--text-1)}.auth-logo-dot{color:var(--accent)}.auth-subtitle{font-size:13px;color:var(--text-3);margin-top:5px;font-weight:400}.auth-form{display:flex;flex-direction:column;gap:12px}.auth-input{width:100%;padding:13px 16px;background:var(--bg-inset);border:1.5px solid var(--border);border-radius:var(--r-sm);font-size:20px;font-family:var(--font);color:var(--text-1);outline:none;transition:border-color var(--ease),background var(--ease);text-align:center;letter-spacing:.25em;font-weight:500}.auth-input::placeholder{letter-spacing:.15em;font-size:16px;font-weight:400;color:var(--text-3)}.auth-input:focus{border-color:var(--accent);background:var(--bg-card)}.auth-input.error{border-color:var(--red);animation:shake .3s ease}@keyframes shake{0%,to{transform:none}20%{transform:translate(-6px)}60%{transform:translate(6px)}}.auth-btn{width:100%;padding:13px;background:var(--accent);color:#fff;border:none;border-radius:var(--r-sm);font-size:14px;font-weight:600;font-family:var(--font);cursor:pointer;transition:opacity var(--ease),transform var(--ease);letter-spacing:.01em}.auth-btn:hover:not(:disabled){opacity:.88}.auth-btn:active:not(:disabled){transform:scale(.98)}.auth-btn:disabled{opacity:.4;cursor:not-allowed}.auth-error{font-size:12px;font-weight:500;color:var(--red);text-align:center}.auth-footer{text-align:center;font-size:11px;color:var(--text-3)}@media (max-width: 1100px){.row-3,.row-4{grid-template-columns:1fr 1fr}}@media (max-width: 700px){.app{padding:12px;gap:12px}.row-3,.row-4,.row-2-1,.row-3-1{grid-template-columns:1fr}.auth-card{padding:28px 20px}.metrics-grid{grid-template-columns:1fr 1fr}}
