/* oepasa 1.5 — fondo de ondas animado detrás, tarjeta de cristal ahumado delante, avisos siempre abajo */
:root{
  --bg:#eef0f4;
  --s1:rgba(255,255,255,.55); --s2:rgba(17,19,24,.06); --s3:rgba(17,19,24,.11);
  --t1:#111318; --t2:#5d6270; --t3:#9aa0ad;
  --ac:#2f6bff; --ac-s:rgba(47,107,255,.14); --ac-t:#1d4fd8; --on-ac:#fff;
  --bad:#e5484d; --live:#21b26b; --idle:#f2a33a;
  --smoke:rgba(236,238,244,.32); --edge:rgba(255,255,255,.75);
  --sheet:rgba(240,242,247,.66); --scrim:rgba(14,16,22,.38); --dotring:rgba(255,255,255,.95);
  --note:rgba(20,22,28,.74); --note-t:#f4f5f8;
  --r:18px; --w:460px;
}
@media (prefers-color-scheme: dark){
  :root{
    --bg:#0b0c10;
    --s1:rgba(255,255,255,.06); --s2:rgba(255,255,255,.08); --s3:rgba(255,255,255,.14);
    --t1:#f3f4f7; --t2:#a3a8b5; --t3:#626876;
    --ac:#4c7dff; --ac-s:rgba(76,125,255,.18); --ac-t:#9db6ff;
    --smoke:rgba(10,11,15,.35); --edge:rgba(255,255,255,.14);
    --sheet:rgba(22,24,30,.62); --scrim:rgba(0,0,0,.5); --dotring:rgba(24,26,32,.95);
    --note:rgba(30,32,40,.78);
    color-scheme:dark;
  }
}
*{box-sizing:border-box;margin:0}
html,body{height:100%;overflow:hidden}
body{
  background:var(--bg); color:var(--t1);
  font:15px/1.45 -apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
}
button,input,textarea{font:inherit;color:inherit;border:0;outline:0;background:none}
button{cursor:pointer;-webkit-tap-highlight-color:transparent}
.hidden{display:none!important}

/* fondo animado */
#bg{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
#vMain{position:relative;z-index:1}

/* tarjeta de cristal ahumado */
.glass{
  background:var(--smoke);
  -webkit-backdrop-filter:blur(34px) saturate(120%);backdrop-filter:blur(34px) saturate(120%);
  box-shadow:inset 0 1px 0 var(--edge),inset 0 0 0 1px rgba(255,255,255,.06),0 24px 60px rgba(10,14,30,.14);
  border-radius:30px;
}

/* bienvenida */
.welcome{position:fixed;inset:0;z-index:1;display:flex;align-items:center;justify-content:center;padding:24px 16px;overflow:auto}
.welcome .panel{width:100%;max-width:300px;padding:24px 18px 20px}
.brand{display:block;width:90px;height:90px;margin:0 auto 14px;overflow:visible}
.brand .lg{fill:#fff}
#iName{text-align:center}
.stack{display:flex;flex-direction:column;gap:10px}
.stack input,#iRename,textarea{width:100%;background:var(--s1);border-radius:14px;padding:14px 16px;font-size:16px}
input::placeholder,textarea::placeholder{color:var(--t3)}
input:focus,textarea:focus{box-shadow:0 0 0 1px var(--ac)}
.hint{font-size:13px;color:var(--t2);text-align:center}
.err{color:var(--bad);font-size:13px;text-align:center;min-height:18px}
.err:empty{min-height:0}

.primary{background:var(--ac);color:var(--on-ac);border-radius:14px;padding:14px;font-weight:600;transition:opacity .15s}
.primary:disabled{opacity:.5}
.soft{background:var(--s2);border-radius:14px;padding:13px;font-weight:500;transition:background .15s}
.soft:hover{background:var(--s3)}
.small{padding:8px 12px;font-size:13px;border-radius:10px}
.danger{color:var(--bad)}

/* principal: una tarjeta siempre al centro; solo la lista se desplaza */
.shell{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;
  padding:max(16px,env(safe-area-inset-top,0px)) 16px max(16px,env(safe-area-inset-bottom,0px))}
.app{width:100%;max-width:var(--w);max-height:100%;padding:16px;display:flex;flex-direction:column;gap:16px;overflow:hidden}
.top{position:relative;flex-shrink:0}
.top-in{display:flex;align-items:center;justify-content:space-between;gap:12px}
.me{display:flex;align-items:center;gap:10px;min-width:0}
.me-av{width:38px;height:38px;background:var(--ac);color:var(--on-ac)}
.me-av svg{width:19px;height:19px}
.me-txt{min-width:0}
.me-name{font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.me-group{font-size:12px;color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.me-group:empty{display:none}
.ctrls{display:flex;align-items:center;gap:6px;flex-shrink:0}
.seg{display:flex;background:var(--s1);border-radius:999px;padding:3px}
.seg button{padding:6px 12px;border-radius:999px;font-size:13.5px;font-weight:550;color:var(--t1);transition:background .15s}
.seg button:hover{background:var(--s2)}
.icon{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;color:var(--t1);background:var(--s1);transition:background .15s}
.icon:hover{background:var(--s2)}
.icon svg{width:19px;height:19px}

/* lista */
.list{display:flex;flex-direction:column;gap:18px;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;
  margin:0 -6px;padding:0 6px 4px;scrollbar-width:thin}
.groups{display:flex;flex-direction:column;gap:18px}
.sec{display:flex;flex-direction:column}
.label{font-size:12.5px;font-weight:600;color:var(--t2);padding:0 6px 7px}
.sublabel{font-size:12px;color:var(--t3);padding:14px 6px 7px}
.none{font-size:13.5px;color:var(--t2);padding:16px 8px;text-align:center;background:var(--s1);border-radius:var(--r)}
.group{display:flex;flex-direction:column;gap:3px}
.dev{border-radius:6px}
.group > .dev:first-child{border-top-left-radius:var(--r);border-top-right-radius:var(--r)}
.group > .dev:last-child{border-bottom-left-radius:var(--r);border-bottom-right-radius:var(--r)}
.group:empty{display:none}
.dev{position:relative;display:flex;align-items:center;gap:12px;padding:11px 11px 11px 13px;background:var(--s1);transition:background .15s;overflow:hidden;will-change:transform}
.dev.drop{background:var(--ac-s)}
.av{position:relative;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;background:var(--ac-s);color:var(--ac-t)}
.av .ring{position:absolute;inset:0;border-radius:50%;background:var(--live);opacity:0;pointer-events:none}
/* estado: arriba a la derecha del ícono */
.av .pres{position:absolute;right:-1px;top:-1px;width:12px;height:12px;border-radius:50%;background:var(--live);box-shadow:0 0 0 2px var(--dotring)}
.dev.idle .pres{background:var(--idle)}
.dim .av .pres,.me-av .pres{display:none}
.av svg{width:21px;height:21px}
.av .ico{display:grid;place-items:center}
.dim .av{background:var(--s2);color:var(--t3)}
.info{flex:1;min-width:0}
.nm{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dim .nm{color:var(--t2)}
.st{font-size:12.5px;color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st:empty{display:none}
.acts{display:flex;gap:6px}
.act{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--s2);color:var(--t1);transition:background .15s}
.act:hover{background:var(--s3)}
.act svg{width:18px;height:18px}
.bar{position:absolute;left:0;bottom:0;height:3px;background:var(--ac);width:0}

/* avisos y mensajes: siempre abajo, en el mismo lugar */
.dock{position:fixed;left:50%;bottom:0;transform:translateX(-50%);width:calc(100% - 24px);max-width:var(--w);
  padding-bottom:calc(14px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:8px;z-index:20;pointer-events:none}
.dock > *{pointer-events:auto}
.inbox{display:flex;flex-direction:column;gap:8px}
.msg,.toast{background:var(--note);color:var(--note-t);
  -webkit-backdrop-filter:blur(30px) saturate(180%);backdrop-filter:blur(30px) saturate(180%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 14px 34px rgba(0,0,0,.2)}
.msg{border-radius:20px;padding:13px 14px;overflow:hidden}
.msg .from{font-size:12px;opacity:.6;margin-bottom:3px}
.msg .body{word-break:break-word;white-space:pre-wrap;max-height:180px;overflow:auto}
.msg .body a{color:inherit}
.msg .file{font-weight:600;word-break:break-all}
.msg .size{font-size:12px;opacity:.6}
.msg .head{display:flex;align-items:center;gap:12px}
.msg .meta{min-width:0;flex:1}
.msg .thumb{width:48px;height:48px;border-radius:12px;object-fit:cover;flex-shrink:0;background:rgba(255,255,255,.12)}
.msg .thumb.ico{display:grid;place-items:center;opacity:.8}
.msg .thumb.ico svg{width:22px;height:22px}
.msg .btns{display:flex;gap:8px;margin-top:12px}
.msg .btns button{flex:1;border-radius:12px;padding:10px;font-weight:600;font-size:14px;background:rgba(255,255,255,.12)}
.msg .btns .go{background:var(--ac);color:#fff}
.msg .btns button:disabled{opacity:.55;cursor:default}
.msg .head + .prog{margin-top:12px}
.msg .prog{height:3px;border-radius:2px;background:rgba(255,255,255,.18);margin-top:12px;overflow:hidden}
.msg .prog i{display:block;height:100%;width:0;background:var(--ac)}
.toast{align-self:center;opacity:0;visibility:hidden;padding:9px 16px;border-radius:999px;font-size:14px;max-width:100%;text-align:center}

/* ventanas: todo lo de atrás queda oscuro y desenfocado */
.sheet{position:fixed;inset:0;background:var(--scrim);
  -webkit-backdrop-filter:blur(12px) saturate(120%);backdrop-filter:blur(12px) saturate(120%);
  display:flex;align-items:center;justify-content:center;padding:16px;z-index:30}
.sheet .card{width:100%;max-width:380px;background:var(--sheet);
  -webkit-backdrop-filter:blur(30px) saturate(160%);backdrop-filter:blur(30px) saturate(160%);
  box-shadow:inset 0 1px 0 var(--edge),0 24px 60px rgba(0,0,0,.25);
  border-radius:28px;padding:18px;display:flex;flex-direction:column;gap:10px}
.ttl{font-weight:650;font-size:16px;padding:2px 4px 4px}
textarea{resize:none;min-height:120px}
.row-btns{display:flex;gap:10px}
.row-btns button{flex:1}
.pin{display:flex;gap:7px;justify-content:center}
.pin input{width:46px;height:56px;text-align:center;font-size:22px;font-weight:600;background:var(--s1);border-radius:12px;padding:0}
.created{display:flex;flex-direction:column;gap:12px}
.bigpin{font-size:38px;font-weight:650;letter-spacing:.14em;text-align:center;background:var(--s1);border-radius:16px;padding:16px 0;font-variant-numeric:tabular-nums}
.bigpin span{display:inline-block}
.mgroups{display:flex;flex-direction:column;gap:6px}
.mgroups:empty{display:none}
.mgroup{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--s1);border-radius:14px;padding:10px 10px 10px 14px}
.mgroup > div:first-child{min-width:0;flex:1}
.mgroup .mg-acts{display:flex;gap:6px}
.ask-m{text-align:left;padding:0 4px 4px}
.mg-name{font-weight:600}
.mg-pin{font-size:13px;color:var(--t2);letter-spacing:.08em;font-variant-numeric:tabular-nums}

/* móvil: la tarjeta ocupa casi todo el ancho */
@media (max-width:520px){
  .shell{padding:max(10px,env(safe-area-inset-top,0px)) 10px max(10px,env(safe-area-inset-bottom,0px))}
  .app{padding:12px;border-radius:26px;gap:14px}
  .me-av{width:34px;height:34px}
  .seg button{padding:6px 9px;font-size:13px}
  .act{width:36px;height:36px}
  .pin input{width:42px;height:52px}
}
