:root{--brand:#1f6feb;--brand-dark:#1a5fd0;--bg:#f4f6fb;--surface:#fff;--text:#1c2430;--muted:#5b6675;--border:#dce1ea;--danger:#c0392b;--danger-bg:#fdecea;--ok:#1e7e44;--ok-bg:#e7f6ed;--radius:12px;--shadow:0 8px 30px #141e3214;--font:system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);color:var(--text);background:linear-gradient(180deg, #e9eefb 0%, var(--bg) 38%);background-attachment:fixed;flex-direction:column;min-height:100vh;line-height:1.5;display:flex}main{flex-direction:column;flex:1;padding:1.6rem 1rem;display:flex}.appbar{backdrop-filter:blur(8px);border-bottom:1px solid var(--border);z-index:10;background:#ffffffd9;align-items:center;padding:.7rem 1.4rem;display:flex;position:sticky;top:0}.brand{align-items:center;gap:.7rem;display:flex}.brand .logo{border-radius:10px;width:38px;height:38px;box-shadow:0 4px 12px #1f6feb4d}.brand-text{flex-direction:column;line-height:1.1;display:flex}.brand-name{letter-spacing:.04em;color:var(--text);font-size:1.25rem;font-weight:800}.brand-sub{letter-spacing:.06em;text-transform:uppercase;color:var(--brand);font-size:.72rem;font-weight:600}.appfoot{text-align:center;color:var(--muted);padding:1.1rem;font-size:.8rem}h1,h2,h3{letter-spacing:-.01em;margin:0 0 .6rem;font-weight:650}button{font:inherit;cursor:pointer;background:var(--brand);color:#fff;border:1px solid #0000;border-radius:9px;padding:.6rem 1.1rem;font-weight:600;transition:background .15s,box-shadow .15s,opacity .15s}button:hover{background:var(--brand-dark)}button:disabled{opacity:.55;cursor:not-allowed}button[type=button]{color:var(--text);border-color:var(--border);background:#eef1f7}button[type=button]:hover{background:#e4e8f1}label{color:var(--muted);flex-direction:column;gap:.3rem;margin-bottom:.9rem;font-size:.9rem;font-weight:600;display:flex}input,textarea{font:inherit;color:var(--text);border:1px solid var(--border);background:#fff;border-radius:9px;width:100%;padding:.6rem .7rem}input:focus,textarea:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px #1f6feb26}input[type=file]{background:#f8fafc;padding:.45rem}.error{background:var(--danger-bg);color:var(--danger);border:1px solid #f3c0ba;border-radius:9px;margin:.6rem 0 0;padding:.6rem .8rem;font-size:.9rem}.aviso{background:var(--ok-bg);color:var(--ok);border:1px solid #b8e3c7;border-radius:9px;margin:0 0 1rem;padding:.6rem .8rem;font-size:.9rem}.login,.cambiar-password{background:var(--surface);border-radius:var(--radius);width:100%;max-width:380px;box-shadow:var(--shadow);margin:auto;padding:2rem}.login h1,.cambiar-password h2{text-align:center;margin-bottom:1.4rem}.login button[type=submit],.cambiar-password button[type=submit]{width:100%;margin-top:.4rem;padding:.7rem}.cambiar-password .acciones{gap:.6rem;display:flex}.cambiar-password .acciones button{flex:1;margin-top:.4rem}.portal{width:100%;max-width:980px;margin:0 auto;padding:1.2rem}.portal-header{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);align-items:center;gap:.8rem;margin-bottom:1.4rem;padding:.9rem 1.2rem;display:flex}.portal-header .usuario{margin-right:auto;font-weight:650}.portal-header .usuario:before{content:"👤 "}.mis-apps{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin:0;padding:0;list-style:none;display:grid}.mis-apps li{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:.35rem;padding:1.2rem;display:flex}.mis-apps h3{color:var(--brand)}.mis-apps .changelog{color:var(--muted);white-space:pre-line;font-size:.88rem}.mis-apps button{align-self:flex-start;margin-top:auto}.admin .tabs{gap:.5rem;margin-bottom:1.2rem;display:flex}.admin .tabs button{color:var(--text);border-color:var(--border);background:#eef1f7}.admin .tabs button[aria-pressed=true]{background:var(--brand);color:#fff;border-color:var(--brand)}.admin form,.admin .app{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:1.2rem;padding:1.2rem}.admin .app h3{color:var(--brand)}.admin .app form{box-shadow:none;border:1px solid var(--border);background:#f8fafc}.admin .accesos{border:1px solid var(--border);border-radius:9px;padding:.8rem 1rem}.admin .accesos legend{color:var(--muted);padding:0 .4rem;font-weight:650}.admin .accesos label{color:var(--text);flex-direction:row;align-items:center;gap:.5rem;margin-bottom:.4rem;font-weight:500}.admin .accesos input[type=checkbox]{width:auto}.admin .lista-clientes{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.admin .lista-clientes li{background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:.7rem 1rem}.admin .feed{border:1px solid var(--border);border-radius:9px;margin-top:.9rem;padding:.8rem 1rem}.admin .feed h4{color:var(--muted);margin:0 0 .5rem}.admin .feed-url{border:1px solid var(--border);word-break:break-all;background:#f1f5fb;border-radius:6px;margin-bottom:.5rem;padding:.45rem .6rem;font-size:.82rem;display:block}
