:root{--accent:#ff6700;--bg:#0d0f12;--surface:#171a20;--surface2:#20242b;--text:#f6f7f9;--muted:#9aa3af;--border:#2b3039;--danger:#ff4d5e;--ok:#30c48d}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}a{color:inherit}.topbar{height:66px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 24px;background:rgba(13,15,18,.94);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:10px;font-weight:800}.brand-dot{width:12px;height:12px;border-radius:50%;background:var(--accent);box-shadow:0 0 18px var(--accent)}.container{width:min(1180px,calc(100% - 30px));margin:28px auto}.grid-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:20px}.stat{font-size:30px;font-weight:800}.muted{color:var(--muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:10px;padding:10px 14px;font-weight:700;cursor:pointer;text-decoration:none;background:var(--surface2);color:#fff}.btn-primary{background:var(--accent)}.btn-danger{background:var(--danger)}.btn-sm{padding:7px 10px;font-size:12px}.actions{display:flex;gap:8px;flex-wrap:wrap}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:13px 10px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}.table th{font-size:12px;text-transform:uppercase;color:var(--muted)}.badge{display:inline-block;padding:5px 8px;border-radius:999px;background:var(--surface2);font-size:12px}.badge-ok{background:rgba(48,196,141,.12);color:#69dfb3}.badge-danger{background:rgba(255,77,94,.12);color:#ff8792}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.field label{display:block;color:var(--muted);font-size:13px;margin-bottom:7px}.field input,.field select,.field textarea{width:100%;border:1px solid var(--border);background:#111419;color:#fff;padding:11px 12px;border-radius:10px;outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}.field-full{grid-column:1/-1}.flash{padding:12px 14px;border-radius:10px;margin:0 0 14px}.flash-success{background:rgba(48,196,141,.14);color:#75e2ba}.flash-error{background:rgba(255,77,94,.14);color:#ff909a}.login-shell{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:min(440px,100%);background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:26px}.login-card h1{margin-top:0}.stack{display:grid;gap:14px}.small{font-size:12px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:0 0 15px}.code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#0d1014;padding:12px;border-radius:10px;white-space:pre-wrap;word-break:break-all}.public-chat{background:var(--channel-bg,#111318);color:var(--channel-text,#f6f7f9)}
.chat-page{min-height:100vh;display:flex;justify-content:center;padding:22px;background:radial-gradient(circle at top,color-mix(in srgb,var(--channel-accent,#ff6700) 28%,transparent) 0,transparent 28%),var(--channel-bg,#111318)}
.chat-shell{width:min(820px,100%);height:calc(100vh - 44px);min-height:620px;background:var(--channel-surface,#171a20);color:var(--channel-text,#f6f7f9);border:1px solid color-mix(in srgb,var(--channel-text,#fff) 10%,transparent);border-radius:22px;display:grid;grid-template-rows:auto auto 1fr auto;overflow:hidden;box-shadow:0 30px 90px rgba(0,0,0,.35)}
.chat-head{padding:18px 20px;display:flex;align-items:center;gap:13px;border-bottom:1px solid color-mix(in srgb,var(--channel-text,#fff) 9%,transparent)}
.chat-logo{width:48px;height:48px;border-radius:12px;object-fit:cover;background:var(--channel-message,#20242b)}
.chat-logo-placeholder{position:relative}.chat-logo-placeholder:after{content:'';position:absolute;width:18px;height:18px;border-radius:50%;background:var(--channel-accent,#ff6700);inset:0;margin:auto}
.chat-head-main{min-width:0;flex:1}.chat-title{font-weight:850;font-size:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.online{font-size:12px;color:var(--channel-muted,#9aa3af);display:flex;align-items:center;gap:6px;margin-top:3px}.online-dot{width:7px;height:7px;border-radius:50%;background:#30c48d;box-shadow:0 0 10px rgba(48,196,141,.55)}
.chat-join-button{border:0;border-radius:10px;padding:9px 13px;background:var(--channel-accent,#ff6700);color:var(--channel-accent-text,#fff);font-weight:800;cursor:pointer;white-space:nowrap}.chat-join-button:disabled{opacity:.8;cursor:default}
.welcome{padding:10px 20px;background:color-mix(in srgb,var(--channel-text,#fff) 4%,transparent);font-size:13px;line-height:1.4;color:var(--channel-muted,#9aa3af)}
.messages{overflow:auto;padding:18px;display:flex;flex-direction:column;gap:10px;scrollbar-color:color-mix(in srgb,var(--channel-text,#fff) 20%,transparent) transparent}.msg{max-width:82%;padding:10px 12px;background:var(--channel-message,#20242b);border-radius:5px 14px 14px 14px;align-self:flex-start;color:var(--channel-text,#f6f7f9);box-shadow:0 4px 14px rgba(0,0,0,.08)}.msg.staff{border-left:3px solid var(--channel-accent,#ff6700);background:color-mix(in srgb,var(--channel-message,#20242b) 86%,var(--channel-accent,#ff6700) 14%)}.msg.mine{align-self:flex-end;border-radius:14px 5px 14px 14px;background:color-mix(in srgb,var(--channel-message,#20242b) 70%,var(--channel-accent,#ff6700) 30%)}
.msg-meta{display:flex;gap:8px;align-items:center;margin-bottom:4px;font-size:11px;color:var(--channel-muted,#9aa3af)}.msg-name{font-weight:800;color:var(--channel-text,#fff)}.staff-badge{padding:2px 5px;border-radius:5px;background:var(--channel-accent,#ff6700);color:var(--channel-accent-text,#fff);font-size:9px;font-weight:900;letter-spacing:.04em}.msg-body{font-size:14px;line-height:1.42;white-space:pre-wrap;word-break:break-word}.chat-empty{margin:auto;display:grid;gap:5px;text-align:center;color:var(--channel-muted,#9aa3af);padding:30px}.chat-empty strong{color:var(--channel-text,#fff)}
.composer{border-top:1px solid color-mix(in srgb,var(--channel-text,#fff) 9%,transparent);padding:13px;display:grid;grid-template-columns:1fr auto;gap:9px;background:var(--channel-surface,#171a20)}.composer-field-wrap{min-width:0}.composer textarea{width:100%;resize:none;min-height:45px;max-height:120px;border:1px solid color-mix(in srgb,var(--channel-text,#fff) 12%,transparent);border-radius:12px;background:var(--channel-bg,#0e1115);color:var(--channel-text,#fff);padding:12px;outline:0;display:block}.composer textarea::placeholder{color:var(--channel-muted,#9aa3af)}.composer textarea:focus{border-color:var(--channel-accent,#ff6700)}.composer button{background:var(--channel-accent,#ff6700);color:var(--channel-accent-text,#fff);border:0;border-radius:12px;padding:0 18px;font-weight:800;cursor:pointer}.composer button:disabled{opacity:.6}.composer-hint{display:none;color:var(--channel-muted,#9aa3af);font-size:11px;padding:6px 3px 0}.composer-readonly textarea{cursor:pointer}.composer-readonly .composer-hint{display:block}.composer-readonly button{min-height:45px}
.join-overlay{position:fixed;inset:0;background:rgba(5,7,9,.72);backdrop-filter:blur(8px);display:grid;place-items:center;padding:20px;z-index:30}.join-box{position:relative;width:min(430px,100%);background:var(--channel-surface,#171a20);color:var(--channel-text,#fff);border:1px solid color-mix(in srgb,var(--channel-text,#fff) 14%,transparent);border-radius:18px;padding:24px;box-shadow:0 25px 80px rgba(0,0,0,.45)}.join-box h2{margin:0 35px 6px 0}.join-box .muted{color:var(--channel-muted,#9aa3af)}.join-box input{width:100%;padding:12px;background:var(--channel-bg,#0e1115);border:1px solid color-mix(in srgb,var(--channel-text,#fff) 16%,transparent);border-radius:10px;color:var(--channel-text,#fff);margin:8px 0 12px;outline:0}.join-box input:focus{border-color:var(--channel-accent,#ff6700)}.join-label{font-size:12px;font-weight:800;color:var(--channel-text,#fff)}.join-submit{width:100%;background:var(--channel-accent,#ff6700)!important;color:var(--channel-accent-text,#fff)!important}.join-terms{text-align:center;margin-bottom:0}.modal-close{position:absolute;right:14px;top:12px;width:34px;height:34px;border:0;border-radius:10px;background:color-mix(in srgb,var(--channel-text,#fff) 7%,transparent);color:var(--channel-text,#fff);font-size:24px;line-height:1;cursor:pointer}
.color-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.color-control{border:1px solid var(--border);background:#111419;border-radius:12px;padding:12px}.color-control label{display:block;color:var(--muted);font-size:13px;margin-bottom:9px}.color-picker-row{display:grid;grid-template-columns:52px 1fr;gap:9px;align-items:center}.color-picker-row input[type=color]{width:52px;height:42px;padding:3px;border:1px solid var(--border);border-radius:9px;background:#0d1014;cursor:pointer}.color-picker-row input[type=text]{width:100%;border:1px solid var(--border);background:#0d1014;color:#fff;padding:11px 12px;border-radius:9px;text-transform:lowercase}.appearance-preview{margin-top:16px;border-radius:16px;padding:16px;background:var(--preview-bg,#111318);color:var(--preview-text,#f6f7f9);border:1px solid rgba(255,255,255,.08)}.appearance-preview-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border-radius:12px;background:var(--preview-surface,#171a20)}.appearance-preview-title{font-weight:800}.appearance-preview-meta{font-size:11px;color:var(--preview-muted,#9aa3af)}.appearance-preview-message{width:min(78%,460px);margin-top:12px;padding:10px 12px;border-left:3px solid var(--preview-accent,#ff6700);border-radius:5px 12px 12px 12px;background:var(--preview-message,#20242b);font-size:13px}.appearance-preview-button{border:0;border-radius:9px;background:var(--preview-accent,#ff6700);color:var(--preview-accent-text,#fff);padding:8px 10px;font-weight:800}.theme-presets{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.theme-preset{width:34px;height:34px;border-radius:50%;border:2px solid #fff2;cursor:pointer;box-shadow:inset 0 0 0 8px var(--preset-bg,#111318);background:var(--preset-accent,#ff6700)}
.hidden{display:none!important}@media(max-width:800px){.grid-cards{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.field-full{grid-column:auto}.color-grid{grid-template-columns:1fr}.topbar{padding:0 14px}.chat-page{padding:0}.chat-shell{height:100vh;min-height:0;border-radius:0;border:0}.container{width:min(100% - 20px,1180px);margin:18px auto}.chat-head{padding:14px}.chat-join-button{padding:8px 10px;font-size:12px}.messages{padding:14px}.msg{max-width:90%}.composer{padding:10px;grid-template-columns:1fr auto}.composer button{padding:0 13px}}

/* WiloChat v1.2.2 — responsive mobile refinements */
@supports (height:100dvh){
  .chat-page{min-height:100dvh}
  .chat-shell{height:calc(100dvh - 44px)}
}

@media(max-width:800px){
  .public-chat{min-width:0;overflow-x:hidden}
  .chat-page{min-height:100dvh;padding:0;overflow:hidden}
  .chat-shell{width:100%;height:100dvh;min-height:0;max-width:none;border-radius:0;border:0;box-shadow:none}
  .chat-head{padding:12px max(12px,env(safe-area-inset-right)) 12px max(12px,env(safe-area-inset-left));gap:11px;min-width:0}
  .chat-logo{width:44px;height:44px;flex:0 0 44px}
  .chat-head-main{min-width:0;overflow:hidden}
  .chat-title{font-size:16px;line-height:1.2}
  .online{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .chat-join-button{flex:0 0 auto;max-width:42vw;overflow:hidden;text-overflow:ellipsis;padding:9px 11px;font-size:12px;min-height:38px}
  .welcome{padding:9px max(12px,env(safe-area-inset-right)) 9px max(12px,env(safe-area-inset-left));font-size:12px}
  .messages{padding:12px max(12px,env(safe-area-inset-right)) 12px max(12px,env(safe-area-inset-left));overscroll-behavior:contain}
  .msg{max-width:92%}
  .composer{padding:10px max(10px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));gap:8px;min-width:0}
  .composer textarea{font-size:16px;min-height:46px}
  .composer button{min-width:84px;min-height:46px;padding:0 12px;white-space:nowrap}
  .join-overlay{padding:max(14px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));overflow-y:auto}
  .join-box{padding:22px 18px;border-radius:16px;margin:auto}
  .join-box input{font-size:16px}
}

/* Phones and narrow iframe embeds: move Participar to its own row. */
@media(max-width:430px){
  .chat-head{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center}
  .chat-logo{grid-column:1;grid-row:1}
  .chat-head-main{grid-column:2;grid-row:1}
  .chat-join-button{grid-column:1/-1;grid-row:2;width:100%;max-width:none;min-height:40px;margin-top:1px;font-size:13px}
  .welcome{line-height:1.35}
}

/* Very small phones / narrow embeds: stack composer so the action never clips. */
@media(max-width:360px){
  .chat-title{font-size:15px}
  .chat-logo{width:40px;height:40px;flex-basis:40px}
  .chat-head{grid-template-columns:40px minmax(0,1fr);padding-top:10px;padding-bottom:10px}
  .composer{grid-template-columns:1fr}
  .composer button{width:100%;min-height:42px;padding:10px 12px}
  .composer-hint{padding-bottom:2px}
  .msg{max-width:96%}
  .msg-meta{gap:6px;flex-wrap:wrap}
  .join-box h2{font-size:20px}
}


/* WiloChat v1.3.0 — emoji picker */
.composer-field-wrap{position:relative}
.composer-input-area{position:relative;min-width:0}
.composer-input-area textarea{padding-right:52px}
.emoji-toggle{position:absolute;right:7px;bottom:7px;width:34px!important;min-width:34px!important;height:34px!important;min-height:34px!important;padding:0!important;border-radius:9px!important;background:color-mix(in srgb,var(--channel-message,#20242b) 86%,var(--channel-text,#fff) 14%)!important;color:var(--channel-text,#fff)!important;display:grid;place-items:center;font-size:19px!important;line-height:1;box-shadow:none;z-index:3}
.emoji-toggle:hover,.emoji-toggle[aria-expanded="true"]{background:color-mix(in srgb,var(--channel-accent,#ff6700) 28%,var(--channel-message,#20242b) 72%)!important}
.emoji-picker{position:absolute;left:0;bottom:calc(100% + 9px);width:min(360px,calc(100vw - 30px));max-height:min(430px,55dvh);overflow:auto;background:var(--channel-surface,#171a20);color:var(--channel-text,#fff);border:1px solid color-mix(in srgb,var(--channel-text,#fff) 13%,transparent);border-radius:16px;padding:10px;box-shadow:0 18px 55px rgba(0,0,0,.45);z-index:50;overscroll-behavior:contain}
.emoji-picker-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:3px 3px 8px;font-size:13px}
.emoji-close{width:30px!important;min-width:30px!important;height:30px!important;min-height:30px!important;padding:0!important;border-radius:8px!important;background:transparent!important;color:var(--channel-muted,#9aa3af)!important;font-size:21px!important;line-height:1}
.emoji-categories{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;padding-bottom:8px;border-bottom:1px solid color-mix(in srgb,var(--channel-text,#fff) 9%,transparent);margin-bottom:8px}
.emoji-category{height:36px!important;min-height:36px!important;min-width:0!important;padding:0!important;border-radius:9px!important;background:transparent!important;color:var(--channel-text,#fff)!important;font-size:19px!important;display:grid;place-items:center}
.emoji-category:hover,.emoji-category.active{background:color-mix(in srgb,var(--channel-accent,#ff6700) 20%,var(--channel-message,#20242b) 80%)!important}
.emoji-section-title{display:block;color:var(--channel-muted,#9aa3af);font-size:11px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;padding:4px 3px 6px}
.emoji-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:2px}
.emoji-grid-recent{padding-bottom:8px;margin-bottom:4px;border-bottom:1px solid color-mix(in srgb,var(--channel-text,#fff) 8%,transparent)}
.emoji-item{aspect-ratio:1/1;width:100%!important;min-width:0!important;min-height:35px!important;padding:0!important;border-radius:8px!important;background:transparent!important;color:inherit!important;font-size:22px!important;line-height:1;display:grid;place-items:center}
.emoji-item:hover,.emoji-item:focus-visible{background:color-mix(in srgb,var(--channel-accent,#ff6700) 18%,var(--channel-message,#20242b) 82%)!important;outline:none}
.composer-readonly .emoji-toggle{opacity:.82}
@media(max-width:430px){
  .emoji-picker{position:fixed;left:10px;right:10px;bottom:max(76px,calc(68px + env(safe-area-inset-bottom)));width:auto;max-height:48dvh;border-radius:16px}
  .emoji-grid{grid-template-columns:repeat(7,1fr)}
  .emoji-item{font-size:21px!important}
}
@media(max-width:360px){
  .emoji-picker{bottom:max(126px,calc(116px + env(safe-area-inset-bottom)));left:8px;right:8px}
  .emoji-grid{grid-template-columns:repeat(6,1fr)}
}

/* WiloChat v1.4.0 — Reacciones por mensaje */
.msg{position:relative}
.msg-reaction-area{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:8px;min-height:24px}
.reaction-summary{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.reaction-chip,.reaction-trigger,.reaction-option{font-family:inherit;-webkit-tap-highlight-color:transparent}
.reaction-chip{display:inline-flex;align-items:center;gap:4px;min-height:25px;padding:2px 7px;border:1px solid color-mix(in srgb,var(--channel-text,#fff) 10%,transparent);border-radius:999px;background:color-mix(in srgb,var(--channel-bg,#111318) 64%,transparent);color:var(--channel-text,#fff);font-size:13px;line-height:1;cursor:pointer;transition:transform .12s ease,border-color .12s ease,background .12s ease}
.reaction-chip strong{font-size:11px;color:var(--channel-muted,#9aa3af);font-weight:800}
.reaction-chip:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--channel-accent,#ff6700) 55%,transparent)}
.reaction-chip.active{border-color:var(--channel-accent,#ff6700);background:color-mix(in srgb,var(--channel-accent,#ff6700) 16%,var(--channel-bg,#111318) 84%)}
.reaction-chip.active strong{color:var(--channel-text,#fff)}
.reaction-trigger{display:inline-flex;align-items:center;gap:4px;min-height:25px;padding:2px 5px;border:0;background:transparent;color:var(--channel-muted,#9aa3af);font-size:11px;font-weight:750;cursor:pointer;border-radius:7px}
.reaction-trigger:hover,.reaction-trigger:focus-visible{color:var(--channel-text,#fff);background:color-mix(in srgb,var(--channel-text,#fff) 6%,transparent);outline:none}
.reaction-plus{font-size:15px;line-height:1}.reaction-label{font-size:11px}
.reaction-picker-inline{display:flex;align-items:center;gap:4px;flex-wrap:wrap;width:max-content;max-width:100%;margin-top:7px;padding:5px;border-radius:12px;background:color-mix(in srgb,var(--channel-bg,#111318) 88%,var(--channel-message,#20242b) 12%);border:1px solid color-mix(in srgb,var(--channel-text,#fff) 9%,transparent);box-shadow:0 8px 24px rgba(0,0,0,.18)}
.reaction-picker-inline.hidden{display:none!important}
.reaction-option{width:34px;height:34px;padding:0;border:0;border-radius:9px;background:transparent;color:inherit;font-size:20px;line-height:1;display:grid;place-items:center;cursor:pointer;transition:transform .1s ease,background .1s ease}
.reaction-option:hover,.reaction-option:focus-visible{transform:scale(1.12);background:color-mix(in srgb,var(--channel-accent,#ff6700) 18%,var(--channel-message,#20242b) 82%);outline:none}
.reaction-busy .reaction-chip,.reaction-busy .reaction-trigger,.reaction-busy .reaction-option{pointer-events:none;opacity:.62}
.reaction-notice{display:none;margin-top:6px;padding:5px 7px;border-radius:7px;background:color-mix(in srgb,#ff4d5e 15%,var(--channel-bg,#111318) 85%);color:var(--channel-text,#fff);font-size:10px;line-height:1.3}
.reaction-notice.show{display:block}
@media(max-width:430px){
  .msg{max-width:90%}
  .reaction-picker-inline{gap:2px;padding:4px}
  .reaction-option{width:32px;height:32px;font-size:19px}
  .reaction-chip{min-height:24px;padding:2px 6px}
  .reaction-trigger{min-height:24px}
}
@media(max-width:340px){
  .msg{max-width:94%}
  .reaction-label,.reaction-trigger>span:not(.reaction-plus){display:none}
  .reaction-trigger{width:28px;justify-content:center;padding:2px}
  .reaction-option{width:30px;height:30px;font-size:18px}
}
