/* ============================================================================
   Painel Alarm Mail Sender — linguagem visual INTEGRAL do DataFill
   (docs/recon/datafill-patterns.md §2 — design system herdado do painel
   Garden's GeoAPI/GeoProxy; mantido identico para consistencia entre os
   modulos da familia). Regras de mapa/Leaflet omitidas (sem mapa aqui).
   ========================================================================== */

:root{
  --sidebar-w:240px; --sidebar-bg:#0a0f1e; --sidebar-hover:rgba(255,255,255,.07);
  --sidebar-active:rgba(13,110,253,.25); --topbar-h:56px;
  --bg:#f1f3f7; --surface:#ffffff; --surface2:#f1f3f7; --border:#e3e6ea;
  --text:#212529; --muted:#6c757d; --accent:#0d6efd; --accent2:#0b5ed7;
  --good:#198754; --warn:#fd7e14; --bad:#dc3545;
  --radius:12px; --mono:ui-monospace,'JetBrains Mono',Menlo,Consolas,monospace;
}

*{box-sizing:border-box}
body{font-family:'Open Sans',sans-serif;background:var(--bg);margin:0;color:var(--text);font-size:14px}
h1,h2,h3,h4,h5,.oswald{font-family:'Oswald',sans-serif}
a{color:var(--accent);text-decoration:none}

/* ===== Sidebar ===== */
#sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-w);background:var(--sidebar-bg);display:flex;flex-direction:column;z-index:1040;overflow-y:auto}
.sidebar-logo{padding:18px 20px 14px;border-bottom:1px solid rgba(255,255,255,.08);text-align:left}
.sidebar-logo img{max-height:84px;width:auto;filter:brightness(0) invert(1)}
.sidebar-logo .tag{font-family:'Oswald',sans-serif;font-size:.7rem;letter-spacing:2px;text-transform:uppercase;color:rgba(255,255,255,.4);margin-top:8px}
.sidebar-nav{padding:12px 0;flex:1}
.sidebar-section{font-size:.68rem;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:rgba(255,255,255,.3);padding:14px 20px 4px}
.sidebar-link{display:flex;align-items:center;gap:10px;padding:9px 20px;color:rgba(255,255,255,.72);text-decoration:none;font-size:.88rem;border-left:3px solid transparent;transition:background .15s,color .15s;cursor:pointer}
.sidebar-link:hover{background:var(--sidebar-hover);color:#fff}
.sidebar-link.active{background:var(--sidebar-active);border-left-color:#0d6efd;color:#fff}
.sidebar-link i{width:18px;text-align:center;font-size:.9rem}
.sidebar-footer{padding:12px 20px;border-top:1px solid rgba(255,255,255,.08);font-size:.72rem;color:rgba(255,255,255,.4);font-family:var(--mono)}

/* ===== Main + topbar ===== */
#main{margin-left:var(--sidebar-w);min-height:100vh;display:flex;flex-direction:column}
.topbar{height:var(--topbar-h);background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 24px;gap:14px;position:sticky;top:0;z-index:100}
.topbar-title{font-family:'Oswald',sans-serif;font-size:1.1rem;color:#212529}
.hamburger{background:none;border:none;font-size:1.2rem;cursor:pointer;display:none;color:#212529}
.content-area{padding:24px 28px;flex:1;max-width:1500px;width:100%}
.mode-chip{font-size:.7rem;font-weight:700;padding:3px 10px;border-radius:12px;text-transform:uppercase;letter-spacing:.04em}
.mode-chip.dry{background:#fff3cd;color:#856404}
.mode-chip.live{background:#d1e7dd;color:#0f5132}

/* ===== Panels ===== */
.panel{display:none}.panel.active{display:block}
.ts-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;font-size:.82rem;color:var(--muted)}

/* ===== Sections ===== */
.section{margin-bottom:24px}
.section h2{font-family:'Oswald',sans-serif;font-size:1.02rem;font-weight:500;color:var(--text);margin:0 0 12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.section h2 span{font-size:.74rem;font-weight:400;color:var(--muted);font-family:'Open Sans',sans-serif}

/* ===== Cards / grids ===== */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px;margin-bottom:20px}
.metrics-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.card{background:var(--surface);border:1px solid #e9ecf1;border-radius:var(--radius);padding:18px 20px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.card h3{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:10px;font-weight:600}
.card-val{font-family:'Oswald',sans-serif;font-size:1.9rem;line-height:1;font-weight:500;color:var(--text)}
.card-sub{font-size:.74rem;color:var(--muted);margin-top:6px}
.metric-card{background:var(--surface);border:1px solid #e9ecf1;border-radius:var(--radius);padding:16px 18px;margin-bottom:14px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.metric-card h4{font-size:.82rem;color:var(--text);margin-bottom:10px;font-weight:600}
.metric-row{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px solid #f1f3f7;font-size:.82rem}
.metric-row:last-child{border:none}
.metric-row .lbl{color:var(--muted)}
.metric-row .val{font-weight:600;font-family:var(--mono)}
.good{color:var(--good)}.warn{color:var(--warn)}.bad{color:var(--bad)}
.bar-wrap{height:6px;background:#e9ecf1;border-radius:3px;margin-top:8px;overflow:hidden}
.bar-fill{height:6px;border-radius:3px;transition:width .5s}
.bar-fill.good{background:var(--good)}.bar-fill.warn{background:var(--warn)}.bar-fill.bad{background:var(--bad)}

/* ===== Badges ===== */
.badge{display:inline-block;padding:.32em .62em;border-radius:6px;font-size:.7rem;font-weight:600;background:#e9ecf1;color:var(--muted)}
.badge.ok{background:#d1e7dd;color:#0f5132}.badge.warn{background:#fff3cd;color:#664d03}.badge.err{background:#f8d7da;color:#842029}

/* ===== Tables ===== */
.tbl-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid #e9ecf1;box-shadow:0 1px 4px rgba(0,0,0,.06);background:#fff}
table{width:100%;border-collapse:collapse;font-size:.8rem}
th{text-align:left;padding:11px 12px;color:var(--muted);border-bottom:2px solid #e9ecf1;font-weight:600;background:#f8f9fb;text-transform:uppercase;font-size:.68rem;letter-spacing:.04em}
td{padding:10px 12px;border-bottom:1px solid #f1f3f7}
tr:last-child td{border-bottom:none}
tbody tr:hover td{background:#f8f9fb}
td code{font-family:var(--mono);font-size:.75rem}

/* ===== Buttons ===== */
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border-radius:8px;border:1px solid transparent;cursor:pointer;font-size:.82rem;font-weight:500;transition:.15s;font-family:'Open Sans',sans-serif;line-height:1.25;text-decoration:none}
.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{background:var(--accent2);border-color:var(--accent2)}
.btn-ghost{background:#fff;border-color:#ced4da;color:var(--text)}.btn-ghost:hover{background:#f1f3f7}
.btn-danger{background:#fff;border-color:var(--bad);color:var(--bad)}.btn-danger:hover{background:var(--bad);color:#fff}
.btn-warn{background:#fff;border-color:var(--warn);color:var(--warn)}.btn-warn:hover{background:var(--warn);color:#fff}
.btn-success{background:#fff;border-color:var(--good);color:var(--good)}.btn-success:hover{background:var(--good);color:#fff}
.btn-row{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}

/* ===== Inputs ===== */
input[type=text],input[type=number],input[type=email],input[type=password],input[type=time],select,textarea{background:#fff;border:1px solid #ced4da;border-radius:8px;color:var(--text);padding:7px 12px;font-size:.82rem;outline:none;font-family:'Open Sans',sans-serif}
input:focus,select:focus,textarea:focus{border-color:#86b7fe;box-shadow:0 0 0 .2rem rgba(13,110,253,.18)}
label.fld{display:block;font-size:.75rem;font-weight:600;color:#555;margin:10px 0 4px}
.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:0 18px}

/* ===== Log box ===== */
.log-box{background:#f8f9fb;border:1px solid #e9ecf1;border-radius:var(--radius);padding:12px 14px;font-family:var(--mono);font-size:.74rem;max-height:360px;overflow-y:auto;color:#495057;white-space:pre-wrap;line-height:1.55}

/* ===== Sub-abas ===== */
.subtabs{display:flex;gap:6px;margin-bottom:14px}
.subtab{padding:6px 16px;border-radius:20px;border:1px solid #e9ecf1;background:#f8f9fb;font-size:.8rem;font-weight:600;color:var(--muted);cursor:pointer;transition:.15s;display:inline-flex;align-items:center;gap:6px}
.subtab.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.subview{display:none}.subview.active{display:block}

/* ===== Status chips ===== */
.status-chip{display:inline-block;font-size:.67rem;font-weight:700;padding:2px 7px;border-radius:10px;background:#e9ecf1;color:var(--muted)}
.status-chip.ok{background:#d1e7dd;color:#0f5132}
.status-chip.err{background:#fdecea;color:#b71c1c}
.status-chip.warn{background:#fff3cd;color:#856404}
.up-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:middle}
.up-dot.ok{background:var(--good)}.up-dot.bad{background:var(--bad)}

/* ===== Botao-icone / modal / bloco de codigo ===== */
.btn-icon{background:none;border:1px solid #dde1ea;border-radius:6px;padding:4px 10px;cursor:pointer;color:var(--muted);font-size:.76rem;transition:all .15s;display:inline-flex;align-items:center;gap:5px}
.btn-icon:hover{border-color:var(--accent);color:var(--accent);background:#f0f4ff}
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1500;display:flex;align-items:center;justify-content:center;padding:20px}
.modal-overlay.hidden{display:none}
.modal-box{background:#fff;border-radius:14px;box-shadow:0 10px 40px rgba(0,0,0,.25);padding:22px 24px;width:100%;max-width:640px;max-height:90vh;overflow-y:auto}
.modal-box.wide{max-width:900px}
.modal-box .modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.modal-box h3{font-family:'Oswald',sans-serif;font-size:1.05rem;color:var(--text);margin:0}
.modal-close{background:none;border:none;font-size:1.2rem;cursor:pointer;color:var(--muted)}
.modal-close:hover{color:var(--bad)}
.ep-ex{font-family:var(--mono);font-size:.75rem;background:#1a1d2e;color:#c8d3f5;border-radius:8px;padding:12px 14px;white-space:pre;overflow-x:auto;line-height:1.5;margin:0}

/* ===== Mensagens de status (padrao de confirmacao do DataFill) ===== */
#runtime-msg{font-size:.8rem;color:var(--accent2);min-height:1.2em}
.msg-banner{border-radius:8px;padding:10px 14px;font-size:.82rem;margin-bottom:14px}
.msg-banner.ok{background:#d1e7dd;color:#0f5132}
.msg-banner.warn{background:#fff3cd;color:#664d03}
.msg-banner.err{background:#f8d7da;color:#842029}

/* ===== Token gate ===== */
#token-gate{position:fixed;inset:0;background:var(--bg);z-index:2000;display:flex;align-items:center;justify-content:center;padding:20px}
#token-gate .box{background:#fff;border-radius:14px;padding:30px 34px;max-width:440px;box-shadow:0 10px 40px rgba(0,0,0,.18);text-align:center}
#token-gate h3{font-family:'Oswald',sans-serif;color:var(--bad);margin:0 0 12px}
#token-gate p{color:var(--muted);font-size:.85rem;line-height:1.55;margin:0}
#token-gate code{background:#eef1f6;padding:2px 7px;border-radius:5px;font-family:var(--mono);font-size:.78rem;color:var(--accent2)}

/* ===== Arvore do CMS ===== */
.tree-row td:first-child{white-space:nowrap}
.tree-indent{display:inline-block}
.tree-node-inactive{opacity:.55}

/* ===== Responsividade (mobile) ===== */
@media (max-width:768px){
  #sidebar{transform:translateX(-100%);transition:transform .25s}
  #sidebar.open{transform:translateX(0)}
  #main{margin-left:0}
  .hamburger{display:block}
}
