*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--primary:#1abdd0;--primary-bg:#e4f9fc;--text:#0b1f28;--muted:#6b7280;--subtle:#9ca3af;--card:#fff;--border:#e5e7eb;--ok:#22c55e;--ok-bg:#ecfdf5;--danger:#ef4444;--danger-bg:#fef2f2;--c-displays:#0bbdd0;--c-displays-bg:#e0f9ff;--c-media:#22c55e;--c-media-bg:#ecfdf5;--c-layouts:#f97316;--c-layouts-bg:#fff7ed;--c-playlists:#0e7c8b;--c-playlists-bg:#eaf6f8;--c-scheduler:#3b82f6;--c-scheduler-bg:#eff6ff;--c-users:#b89540;--c-users-bg:#f0fafb;--shadow-sm:0 1px 5px #0000000e;--shadow-md:0 2px 8px #0000000f;--shadow-lg:0 8px 24px #0000001a;--r-card:16px;--r-item:13px;--r-btn:10px;--r-input:11px;font-family:Poppins,system-ui,-apple-system,sans-serif;font-size:14px}html,body{-webkit-text-size-adjust:100%;height:100%}body{color:var(--text);background:linear-gradient(145deg,#dcf8fb 0%,#f0fafb 50%,#e4f5f8 100%) fixed;min-height:100dvh;overflow-x:hidden}.ms{letter-spacing:normal;text-transform:none;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;user-select:none;font-family:Material Symbols Rounded;font-size:20px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.app-shell{flex-direction:column;height:100dvh;display:flex;overflow:hidden}.app-content{-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}.screen{max-width:640px;margin:0 auto;padding:16px 14px 28px}.card{background:var(--card);border-radius:var(--r-item);box-shadow:var(--shadow-sm);align-items:center;gap:12px;margin-bottom:8px;padding:12px 13px;display:flex}.card-home{background:var(--card);border-radius:var(--r-card);box-shadow:var(--shadow-md);padding:15px}.tap{cursor:pointer;transition:transform .12s,opacity .12s}.tap:active{opacity:.85;transform:scale(.96)}button{cursor:pointer;border-radius:var(--r-btn);border:none;justify-content:center;align-items:center;gap:5px;padding:10px 14px;font-family:inherit;font-size:12px;font-weight:600;transition:opacity .15s;display:inline-flex}button:disabled{opacity:.5;cursor:default}button:active:not(:disabled){opacity:.8}.btn-primary{color:#fff;background:linear-gradient(135deg,#1abdd0,#0ea8c0)}.btn-secondary{color:var(--muted);background:#f3f4f6}.btn-danger{background:var(--danger-bg);color:var(--danger)}button.secondary{color:var(--muted);background:#f3f4f6}button.icon-btn{border-radius:var(--r-btn);color:var(--muted);background:#f3f4f6;padding:9px}input,select,textarea{background:var(--card);width:100%;color:var(--text);border:1px solid var(--border);border-radius:var(--r-input);outline:none;margin:4px 0 10px;padding:11px 14px;font-family:inherit;font-size:13px;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--primary)}input::placeholder,textarea::placeholder{color:var(--subtle)}label{color:var(--subtle);text-transform:uppercase;letter-spacing:.7px;margin-bottom:5px;font-size:10px;font-weight:600;display:block}.badge{border-radius:20px;flex-shrink:0;padding:2px 8px;font-size:10px;font-weight:600;display:inline-block}.badge-ok{background:var(--ok-bg);color:var(--ok)}.badge-off{color:var(--subtle);background:#f3f4f6}.badge-danger{background:var(--danger-bg);color:var(--danger)}.badge.on{background:var(--ok-bg);color:var(--ok)}.badge.off{color:var(--subtle);background:#f3f4f6}.dot{border:2px solid #fff;border-radius:50%;flex-shrink:0;width:10px;height:10px}.dot-ok{background:var(--ok)}.dot-off{background:var(--danger)}.section-label{color:var(--subtle);text-transform:uppercase;letter-spacing:.9px;margin-top:4px;margin-bottom:8px;font-size:10px;font-weight:600}.row{justify-content:space-between;align-items:center;gap:12px;display:flex}.muted{color:var(--muted)}.subtle{color:var(--subtle)}.center{place-items:center;min-height:100dvh;display:grid}.error{color:var(--danger);background:var(--danger-bg);border-radius:var(--r-input);margin:8px 0;padding:10px 13px;font-size:12px}@keyframes slideRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes popIn{0%{opacity:0;transform:scale(.88)translateY(-4px)}70%{transform:scale(1.03)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.view{animation:.22s cubic-bezier(.22,.61,.36,1) both slideRight}.alive{animation:2.2s ease-in-out infinite pulse}::-webkit-scrollbar{width:0}@keyframes cap-eq1{0%,to{transform:scaleY(.15)}25%{transform:scaleY(.9)}75%{transform:scaleY(.4)}}@keyframes cap-eq2{0%,to{transform:scaleY(.4)}30%{transform:scaleY(.1)}60%{transform:scaleY(1)}}@keyframes cap-eq3{0%,to{transform:scaleY(.7)}20%{transform:scaleY(.2)}50%{transform:scaleY(.95)}}@keyframes cap-eq4{0%,to{transform:scaleY(.2)}40%{transform:scaleY(1)}80%{transform:scaleY(.3)}}@keyframes cap-eq5{0%,to{transform:scaleY(.6)}35%{transform:scaleY(.15)}65%{transform:scaleY(.85)}}@keyframes cap-eq6{0%,to{transform:scaleY(.3)}50%{transform:scaleY(.95)}85%{transform:scaleY(.2)}}@keyframes cap-eq7{0%,to{transform:scaleY(.8)}15%{transform:scaleY(.1)}55%{transform:scaleY(.6)}}@keyframes cap-eq8{0%,to{transform:scaleY(.1)}45%{transform:scaleY(.9)}70%{transform:scaleY(.4)}}.cap-eq-bar{transform-origin:bottom;border-radius:3px;width:5px}.cap-eq-b1{animation:1.1s ease-in-out infinite cap-eq1}.cap-eq-b2{animation:.9s ease-in-out infinite cap-eq2}.cap-eq-b3{animation:1.3s ease-in-out infinite cap-eq3}.cap-eq-b4{animation:.8s ease-in-out infinite cap-eq4}.cap-eq-b5{animation:1s ease-in-out infinite cap-eq5}.cap-eq-b6{animation:1.2s ease-in-out infinite cap-eq6}.cap-eq-b7{animation:.95s ease-in-out infinite cap-eq7}.cap-eq-b8{animation:1.15s ease-in-out infinite cap-eq8}@keyframes cap-ring{0%{opacity:.9;transform:scale(.3)}to{opacity:0;transform:scale(2.2)}}.cap-ring{border:2.5px solid;border-radius:50%;animation:2s ease-out infinite cap-ring;position:absolute;inset:0}.cap-ring-2{animation-delay:.6s}.cap-ring-3{animation-delay:1.2s}@keyframes cap-scan{0%{opacity:0;left:-8%}5%{opacity:1}95%{opacity:1}to{opacity:0;left:108%}}.cap-scan-beam{border-radius:4px;width:8%;animation:2.2s cubic-bezier(.4,0,.6,1) infinite cap-scan;position:absolute;top:0;bottom:0}@keyframes cap-scan-line{0%,to{opacity:.3}50%{opacity:.7}}.cap-scan-line{animation:2.2s ease-in-out infinite cap-scan-line}@keyframes cap-bounce-a{0%,to{transform:translateY(0)}40%{transform:translateY(-18px)}}@keyframes cap-bounce-b{0%,to{transform:translateY(0)}40%{transform:translateY(-18px)}}@keyframes cap-bounce-c{0%,to{transform:translateY(0)}40%{transform:translateY(-18px)}}.cap-dot-a{animation:.9s ease-in-out infinite cap-bounce-a}.cap-dot-b{animation:.9s ease-in-out .15s infinite cap-bounce-b}.cap-dot-c{animation:.9s ease-in-out .3s infinite cap-bounce-c}
