:root {
  --purple:#5b2a86; --purple-dark:#3f1765; --purple-soft:#f1eafa;
  --red:#d82235; --red-dark:#a90f20; --green:#16865f; --ink:#1d1830;
  --muted:#706a7d; --line:#e8e3ec; --surface:#fff; --bg:#f6f4f8;
  --shadow:0 20px 50px rgba(34,20,50,.12);
}
*{box-sizing:border-box} body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}
a{text-decoration:none;color:inherit} button,input{font:inherit} button{cursor:pointer}
.eyebrow{font-size:.75rem;font-weight:800;letter-spacing:.12em;margin:0 0 .5rem}.purple{color:var(--purple)}.muted{color:var(--muted)}
.btn{border:0;border-radius:12px;padding:.82rem 1rem;font-weight:800;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;transition:.18s}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--purple);color:#fff}.btn.secondary{background:#f0ecf4;color:var(--ink)}.btn.secondary.enabled{background:#e7f6ef;color:var(--green)}.btn.ghost{background:transparent;border:1px solid var(--line)}.btn.danger-btn{background:var(--red);color:#fff}.btn.full{width:100%}.btn.small{padding:.6rem .78rem;border-radius:9px;font-size:.88rem}.ghost-link{font-weight:800;color:var(--purple)}.ghost-link.light{color:#fff}
.login-body{min-height:100vh;display:grid;place-items:center;padding:2rem;background:radial-gradient(circle at 10% 10%,#7746a3 0,#4d2076 35%,#29113f 100%)}.login-shell{width:min(960px,100%);display:grid;grid-template-columns:1fr 1fr;background:#fff;border-radius:28px;overflow:hidden;box-shadow:0 35px 80px rgba(0,0,0,.28)}.brand-panel{padding:4rem;color:#fff;background:linear-gradient(145deg,#6b3296,#39165c);display:flex;flex-direction:column;justify-content:center;min-height:560px}.brand-mark,.mini-logo{display:inline-grid;place-items:center;font-weight:900;color:#fff;background:linear-gradient(145deg,#7d48a6,#4a1e72)}.brand-mark{width:64px;height:64px;border-radius:20px;margin-bottom:2rem}.brand-panel h1{font-size:4rem;line-height:.93;margin:.25rem 0 1rem}.brand-copy{font-size:1.25rem;opacity:.85}.login-card{padding:4rem;display:flex;flex-direction:column;justify-content:center;gap:1.5rem}.login-card h2{font-size:2.2rem;margin:.15rem 0}.login-card form{display:grid;gap:1rem}.login-card label{font-size:.9rem;font-weight:800;display:grid;gap:.45rem}.login-card input{width:100%;padding:1rem;border:1px solid #d8d1dd;border-radius:12px;outline:0}.login-card input:focus{border-color:var(--purple);box-shadow:0 0 0 3px rgba(91,42,134,.12)}.alert{padding:.9rem 1rem;border-radius:12px}.alert.error{background:#fff0f2;color:#a90f20}.demo-box{background:#f7f4f9;border:1px dashed #cfc3d8;padding:1rem;border-radius:14px;display:grid;gap:.35rem;font-size:.85rem}.demo-box span{color:var(--muted)}
.victim-body{min-height:100vh;background:linear-gradient(180deg,#fff 0,#f9f6fb 100%)}.mobile-header{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 max(1.2rem,env(safe-area-inset-left));border-bottom:1px solid var(--line);background:rgba(255,255,255,.93);position:sticky;top:0;z-index:2}.mobile-header>div{display:flex;align-items:center;gap:.7rem}.mini-logo{width:38px;height:38px;border-radius:12px;font-size:.8rem}.victim-main{width:min(520px,100%);margin:auto;padding:2.5rem 1.3rem 3rem;text-align:center}.welcome h1{font-size:2rem;margin:.25rem}.welcome p:last-child{color:var(--muted);line-height:1.5}.panic-zone{padding:2rem 0}.panic-button{width:min(330px,80vw);aspect-ratio:1;border-radius:50%;border:12px solid #fbe3e6;background:radial-gradient(circle at 35% 25%,#f04a5a,#c91327 62%,#9f0717);color:#fff;box-shadow:0 28px 55px rgba(199,19,39,.28),inset 0 0 0 4px rgba(255,255,255,.18);position:relative;overflow:hidden;touch-action:none;user-select:none;transition:.2s;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem}.panic-button:active,.panic-button.holding{transform:scale(.97)}.panic-ring{position:absolute;inset:0;background:conic-gradient(rgba(255,255,255,.34) 0deg,transparent 0deg);opacity:0}.panic-button.holding .panic-ring{opacity:1;animation:holdProgress 3s linear forwards}.panic-label{font-size:2rem;line-height:1;font-weight:950;letter-spacing:-.04em;z-index:1}.panic-hint{font-size:.8rem;font-weight:850;letter-spacing:.06em;opacity:.87;z-index:1}.panic-button.sent{animation:pulse .85s infinite}.panic-button.confirmed{background:linear-gradient(145deg,#20a976,#0c7652);border-color:#d9f5e9;box-shadow:0 25px 55px rgba(22,134,95,.2)}@keyframes holdProgress{to{background:conic-gradient(rgba(255,255,255,.34) 360deg,transparent 360deg)}}@keyframes pulse{50%{transform:scale(.96)}}.status-card{display:flex;gap:.8rem;text-align:left;padding:1rem 1.1rem;background:#fff;border:1px solid var(--line);border-radius:16px;margin:1.6rem auto 0;box-shadow:0 10px 30px rgba(39,22,51,.05)}.status-card div:last-child{display:grid;gap:.25rem}.status-card span{font-size:.85rem;color:var(--muted)}.status-dot{width:10px;height:10px;border-radius:50%;background:var(--purple);margin-top:.28rem;flex:none}.status-card.success .status-dot{background:var(--green)}.status-card.error .status-dot{background:var(--red)}.status-card.sending .status-dot{animation:blink 1s infinite}.support-message{font-size:.82rem;font-weight:900;letter-spacing:.14em;color:var(--purple);margin-top:1.2rem}@keyframes blink{50%{opacity:.2}}
.guard-body{background:#f4f2f6}.guard-topbar{height:76px;background:#251532;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 2rem;position:sticky;top:0;z-index:5}.guard-brand{display:flex;align-items:center;gap:.8rem}.guard-brand>div{display:grid}.guard-brand span:last-child{font-size:.75rem;opacity:.7}.guard-actions{display:flex;align-items:center;gap:.8rem}.operator-name{font-size:.9rem;opacity:.85}.dashboard{width:min(1320px,calc(100% - 3rem));margin:2rem auto}.dashboard-heading{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:1.5rem}.dashboard-heading h1{font-size:2.2rem;margin:.2rem 0}.connection{padding:.65rem .9rem;border-radius:999px;font-size:.85rem;font-weight:800}.connection.online{background:#e6f7ef;color:#13714f}.connection.offline{background:#feecef;color:#ad1425}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.stat-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:1.2rem 1.4rem;display:grid;gap:.35rem;box-shadow:0 8px 24px rgba(50,30,67,.04)}.stat-card span{font-size:.82rem;color:var(--muted);font-weight:750}.stat-card strong{font-size:2.1rem}.stat-card.danger{border-color:#ffd6dc;background:#fffafb}.stat-card.danger strong{color:var(--red)}.calls-panel{margin-top:1.2rem;background:#fff;border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:var(--shadow)}.panel-title{padding:1.3rem 1.5rem;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.panel-title h2{margin:0}.panel-title p{margin:.2rem 0 0;color:var(--muted);font-size:.85rem}.live-pill{background:#fff0f2;color:var(--red);padding:.5rem .7rem;border-radius:999px;font-size:.75rem;font-weight:900}.calls-list{display:grid}.empty-state{padding:4rem;text-align:center;color:var(--muted)}.call-row{display:grid;grid-template-columns:48px 1fr auto;align-items:center;gap:1rem;padding:1.1rem 1.4rem;border-bottom:1px solid #f0edf2}.call-row:last-child{border-bottom:0}.call-row.new-call{background:#fff9fa}.call-priority{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:#f1eafa;color:var(--purple);font-weight:950}.new-call .call-priority{background:#ffe3e7;color:var(--red)}.call-main{display:grid;gap:.45rem}.call-title{display:flex;gap:.7rem;align-items:center}.call-title span{font-size:.82rem;color:var(--muted)}.call-meta{display:flex;gap:1rem;color:var(--muted);font-size:.85rem}.call-actions{display:flex;gap:.5rem}.modal-backdrop{position:fixed;inset:0;background:rgba(19,10,27,.72);display:grid;place-items:center;padding:1.5rem;z-index:20}.modal-backdrop.hidden{display:none}.emergency-modal{width:min(620px,100%);background:#fff;border-radius:24px;padding:2rem;box-shadow:0 40px 100px rgba(0,0,0,.4);text-align:center;border-top:8px solid var(--red);animation:modalIn .2s ease-out}.alarm-icon{width:64px;height:64px;border-radius:50%;background:var(--red);color:#fff;display:grid;place-items:center;font-size:2rem;font-weight:950;margin:-.3rem auto 1rem}.danger-text{color:var(--red)}.emergency-modal h2{font-size:2rem;margin:.35rem}.modal-details{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;margin:1.4rem 0}.modal-details>div{text-align:left;background:#f7f5f8;border-radius:12px;padding:1rem;display:grid;gap:.25rem}.modal-details span{font-size:.75rem;color:var(--muted);font-weight:750}.modal-actions{display:flex;gap:.7rem;justify-content:center;flex-wrap:wrap}@keyframes modalIn{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
@media(max-width:760px){.login-body{padding:0;background:#fff}.login-shell{grid-template-columns:1fr;border-radius:0;min-height:100vh}.brand-panel{display:none}.login-card{padding:2rem;min-height:100vh}.guard-topbar{padding:0 1rem;height:auto;min-height:76px;gap:1rem;flex-wrap:wrap;padding-block:.75rem}.guard-actions{flex-wrap:wrap}.operator-name{display:none}.dashboard{width:min(100% - 1.5rem,1320px)}.dashboard-heading{align-items:flex-start;gap:1rem;flex-direction:column}.stats-grid{grid-template-columns:1fr 1fr}.call-row{grid-template-columns:42px 1fr}.call-actions{grid-column:2}.call-meta{flex-direction:column;gap:.25rem}.modal-details{grid-template-columns:1fr}.brand-panel h1{font-size:3rem}}

/* PATCH MOBILE: impede seleção de texto/callout durante o pressionamento do botão do pânico. */
.panic-zone,
.panic-zone *,
.panic-button,
.panic-button * {
  -webkit-user-select: none !important;
  -moz-user-select: none !important;
  -ms-user-select: none !important;
  user-select: none !important;
  -webkit-touch-callout: none !important;
}

.panic-button {
  touch-action: none;
  -webkit-tap-highlight-color: transparent;
  -webkit-user-drag: none;
  user-drag: none;
  outline: none;
}

.panic-button * {
  pointer-events: none;
  -webkit-user-drag: none;
}

.panic-zone ::selection {
  background: transparent;
}

.panic-zone ::-moz-selection {
  background: transparent;
}

/* PATCH MOBILE V2 — iOS/Safari:
   A tela da vítima inteira não permite seleção. Isso evita que o Safari,
   ao não conseguir selecionar o botão, desloque a seleção para textos vizinhos. */
body.victim-body,
body.victim-body * {
  -webkit-user-select: none !important;
  -moz-user-select: none !important;
  -ms-user-select: none !important;
  user-select: none !important;
  -webkit-touch-callout: none !important;
}

body.victim-body {
  -webkit-tap-highlight-color: transparent;
}

body.victim-body ::selection,
body.victim-body *::selection {
  background: transparent !important;
}

body.victim-body ::-moz-selection,
body.victim-body *::-moz-selection {
  background: transparent !important;
}

/* O gesto de emergência pertence integralmente ao botão. */
body.victim-body .panic-button {
  touch-action: none !important;
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-touch-callout: none !important;
  -webkit-tap-highlight-color: transparent !important;
  -webkit-user-drag: none !important;
  overscroll-behavior: contain;
}

body.victim-body .panic-button * {
  pointer-events: none !important;
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-touch-callout: none !important;
  -webkit-user-drag: none !important;
}
