:root {
  --teal:       #00a99d;
  --teal-dark:  #008f84;
  --teal-light: #e6f7f6;
  --bg:         #e5e5e5;
  --white:      #ffffff;
  --grey-light: #f5f5f5;
  --grey-mid:   #e0e0e0;
  --grey-dot:   #aaaaaa;
  --grey-text:  #777777;
  --dark:       #222222;
  --red:        #e74c3c;
  --shadow:     0 2px 16px rgba(0,169,157,0.10);
  --shadow-h:   0 6px 32px rgba(0,169,157,0.22);
  --menu-w:     240px;
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}
html{height:100%;font-family:'Lato',sans-serif;background:var(--bg);}
body{height:100vh;display:flex;flex-direction:column;color:var(--dark);overflow:hidden;}
a{color:inherit;text-decoration:none;}
@keyframes blink    { 0%,100%{opacity:1}   50%{opacity:.25} }
@keyframes blinkDot { 0%,100%{opacity:.85} 50%{opacity:.15} }

/* ── TOP BAR ─────────────────────────────────────────────────────────────── */
.top-bar { background:var(--teal); height:54px; display:flex; align-items:center; padding:0 14px; gap:10px; position:sticky; top:0; z-index:200; box-shadow:0 2px 8px rgba(0,0,0,0.12); }
.menu-button { background:none; border:none; cursor:pointer; display:flex; flex-direction:column; gap:4px; padding:6px; flex-shrink:0; align-items:flex-start; }
.menu-line   { display:flex; align-items:center; gap:3px; transition:transform .3s, opacity .3s; }
.menu-line .dot { width:5px; height:5px; background:white; border-radius:50%; transition:background .3s; }
.menu-line .bar { width:22px; height:3px; background:white; border-radius:3px; transition:background .3s; }
.menu-button.open .menu-line .dot { background:var(--teal); }
.menu-button.open .menu-line .bar { background:var(--teal); }
.menu-button.open .menu-line:nth-child(1) { transform:rotate(45deg) translate(6px,7px); }
.menu-button.open .menu-line:nth-child(2) { opacity:0; }
.menu-button.open .menu-line:nth-child(3) { transform:rotate(-45deg) translate(6px,-7px); }
.top-logo { display:flex; align-items:center; color:white; flex:1; }
.top-logo-text { font-size:13px; font-weight:700; letter-spacing:3px; }
.top-right { display:flex; align-items:center; gap:12px; flex-shrink:0; }
.top-clock { display:flex; flex-direction:column; align-items:flex-end; gap:1px; }
.top-clock #top-time { color:white; font-size:13px; font-weight:700; letter-spacing:2px; font-variant-numeric:tabular-nums; line-height:1.1; }
.top-day { color:rgba(255,255,255,.65); font-size:9px; font-weight:700; letter-spacing:2px; text-transform:uppercase; line-height:1.1; }
/* Logo top-bar: teal → bianco con filtro */
.top-bar-logo { height:28px; width:auto; object-fit:contain; opacity:.85; transition:opacity .2s; }
.top-bar-logo:hover { opacity:1; }

/* ── OVERLAY ─────────────────────────────────────────────────────────────── */
.overlay { position:fixed; inset:0; background:rgba(160,160,160,0.5); backdrop-filter:blur(3px); display:none; z-index:999; }
.overlay.active { display:block; }

/* ── SIDE MENU ───────────────────────────────────────────────────────────── */
.dropdown-menu { position:fixed; top:0; left:calc(-1 * var(--menu-w) - 20px); width:var(--menu-w); height:100vh; background:var(--grey-light); box-shadow:4px 0 20px rgba(0,0,0,0.15); display:flex; flex-direction:column; z-index:1000; transition:left .3s ease; overflow-y:auto; overflow-x:hidden; }
.dropdown-menu.active { left:0; }
.dropdown-menu::-webkit-scrollbar { width:3px; }
.dropdown-menu::-webkit-scrollbar-thumb { background:var(--grey-mid); }
.sm-header { display:flex; align-items:center; justify-content:space-between; padding:14px; border-bottom:1px solid var(--grey-mid); background:white; flex-shrink:0; }
.sm-logo-img { height:28px; width:auto; object-fit:contain; }
.sm-close { background:none; border:1px solid var(--grey-mid); color:var(--grey-text); width:26px; height:26px; border-radius:50%; cursor:pointer; font-size:11px; display:flex; align-items:center; justify-content:center; transition:all .18s; }
.sm-close:hover { background:var(--teal); border-color:var(--teal); color:white; }
.sm-section-label { background:var(--grey-mid); color:var(--grey-text); font-size:9px; font-weight:900; letter-spacing:4px; text-transform:uppercase; padding:4px 14px 3px; margin-top:4px; flex-shrink:0; }

/* ── VOCI MENU: TUTTE uguali, teal → hover teal bg + bianco ─────────────── */
.sm-item { display:flex; align-items:center; min-height:36px; cursor:pointer; border-left:3px solid transparent; transition:background .18s, border-color .18s; background:transparent; }
.sm-item:hover { background:var(--teal); border-left-color:var(--teal-dark); }
.sm-item:hover .sm-item-link  { color:white; }
.sm-item:hover .sm-dot-cb.on  { background:white; animation:none; }
.sm-item:hover .sm-dot-cb.off { background:var(--grey-dot); }
.sm-item:hover .sm-ka-time    { color:rgba(255,255,255,.75); }

/* Testo voce — SEMPRE teal visibile */
.sm-item-link { flex:1; display:block; padding:8px 14px 8px 8px; color:#1a7a75; font-size:10px; font-weight:700; letter-spacing:1.5px; text-transform:uppercase; transition:color .18s; cursor:pointer; }
.sm-item-link.active, .sm-item.active-row .sm-item-link { color:white; }
.sm-item.active-row { background:var(--teal); border-left-color:var(--teal-dark); }

/* ── PALLINI ─────────────────────────────────────────────────────────────── */
.sm-dot-cb { width:10px; height:10px; border-radius:50%; flex-shrink:0; margin:0 8px 0 13px; display:block; }
.sm-dot-cb.on  { background:var(--teal); }
.sm-dot-cb.off { background:var(--grey-dot); animation:blinkDot 1.4s infinite; }
.sm-dot-placeholder { width:10px; height:10px; flex-shrink:0; margin:0 8px 0 13px; display:block; }

/* ── KEEP ALIVE ──────────────────────────────────────────────────────────── */
.sm-ka-time { font-size:10px; font-weight:700; color:var(--grey-text); padding-right:12px; letter-spacing:1px; flex-shrink:0; }

/* ── LOGOUT (sempre ultimo) ──────────────────────────────────────────────── */
.sm-item-logout { margin-top:auto; }
.sm-item-logout .sm-logout { color:var(--red) !important; }
.sm-item-logout:hover { background:var(--red) !important; border-left-color:#c0392b !important; }
.sm-item-logout:hover .sm-item-link { color:white !important; }

.sm-divider { height:1px; background:var(--grey-mid); margin:4px 14px; flex-shrink:0; }

/* ── MAIN ────────────────────────────────────────────────────────────────── */
.site-main{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden;}

/* ── HERO: solo BepTools + Pannello di Controllo ─────────────────────────── */
.hero { background:var(--teal); padding:16px 24px; color:white; flex-shrink:0; }
.hero-inner { max-width:100%; text-align:center; }
.hero-title { font-size:24px; font-weight:900; letter-spacing:1px; margin-bottom:4px; }
.hero-label { font-size:10px; font-weight:300; letter-spacing:5px; text-transform:uppercase; opacity:.7; }

/* ── STATS BAR ───────────────────────────────────────────────────────────── */
.stats-bar { background:var(--white); border-bottom:1px solid var(--grey-mid); padding:6px 24px; flex-shrink:0; }
.stats-inner { max-width:100%; display:flex; gap:36px; flex-wrap:wrap; }
.stat { display:flex; flex-direction:column; gap:3px; }
.stat-label { font-size:9px; font-weight:700; letter-spacing:3px; text-transform:uppercase; color:var(--grey-text); }
.stat-value { font-size:13px; font-weight:700; }
.stat-value.online { color:var(--teal); }
.stat-value.warn   { color:#f39c12; }
.stat-value.error  { color:var(--red); }

/* ── PAGE CONTENT ────────────────────────────────────────────────────────── */
.page-content { flex:1; overflow-y:auto; padding:24px; box-sizing:border-box; min-height:0; }
.section-label { font-size:10px; font-weight:700; letter-spacing:5px; text-transform:uppercase; color:var(--grey-text); margin-bottom:16px; display:flex; align-items:center; gap:14px; }
.section-label::after { content:''; flex:1; height:1px; background:var(--grey-mid); }

/* ── CARDS ───────────────────────────────────────────────────────────────── */
.card-grid { display:flex; flex-wrap:wrap; gap:24px; margin-bottom:36px; justify-content:center; align-items:stretch; }
.card { background:var(--white); padding:24px 20px; box-shadow:var(--shadow); transition:all .22s; display:flex; flex-direction:column; justify-content:center; align-items:center; text-align:center; color:inherit; position:relative; border-left:4px solid transparent; width:250px; height:200px; flex-shrink:0; overflow:hidden; }
.card:hover { box-shadow:var(--shadow-h); transform:translateY(-2px); border-left-color:var(--teal); }
.card-icon  { font-size:26px; margin-bottom:10px; display:block; }
.card-title { font-size:11px; font-weight:900; letter-spacing:3px; text-transform:uppercase; margin-bottom:6px; }
.card-desc  { font-size:13px; font-weight:300; color:var(--grey-text); line-height:1.6; margin-bottom:10px; }
.card-link  { font-size:11px; font-weight:700; color:var(--teal); }
.card-badge { position:absolute; top:14px; right:14px; width:8px; height:8px; border-radius:50%; }
.card-badge.online  { background:#2ecc71; }
.card-badge.offline { background:var(--red); }
.card-badge.pending { background:#f39c12; animation:blink 1.5s infinite; }

.card[data-service="devlab"] { background:linear-gradient(135deg,#d6f5ec 0%,#f0fdf8 100%); border-left:4px solid #00a99d; }
.card[data-service="devlab"]:hover { border-left-color:#007a6e; }

/* ── QUICK GRID ──────────────────────────────────────────────────────────── */
.quick-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:10px; margin-bottom:36px; }
.quick-btn { background:var(--white); border:1px solid var(--grey-mid); padding:12px 16px; display:flex; align-items:center; gap:10px; transition:all .18s; color:var(--dark); cursor:pointer; }
.quick-btn:hover { border-color:var(--teal); color:var(--teal); }
.quick-btn .q-icon  { font-size:17px; }
.quick-btn .q-label { font-size:10px; font-weight:700; letter-spacing:2px; text-transform:uppercase; }

/* ── ALERT ───────────────────────────────────────────────────────────────── */
.alert { padding:13px 16px; margin-bottom:18px; font-size:13px; font-weight:700; }
.alert.error   { background:#fdecea; border-left:4px solid var(--red);  color:#c0392b; }
.alert.success { background:#d4edda; border-left:4px solid #2ecc71;     color:#155724; }
.alert.info    { background:var(--teal-light); border-left:4px solid var(--teal); color:var(--teal-dark); }

/* ── FOOTER ──────────────────────────────────────────────────────────────── */
.site-footer { background:var(--teal); padding:18px 24px; flex-shrink:0; }
.footer-inner { max-width:1100px; margin:0 auto; display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:0; text-align:center; width:100%; }
.footer-logo { color:white; font-size:12px; font-weight:700; letter-spacing:2px; }
.footer-sep { color:rgba(255,255,255,.4); margin:0 6px; }
.footer-info { color:rgba(255,255,255,.65); font-size:11px; font-weight:300; }
.footer-link { color:rgba(255,255,255,.85); font-size:11px; font-weight:700; text-decoration:none; }
.footer-link:hover { color:white; text-decoration:underline; }
.footer-info { color:rgba(255,255,255,0.6); font-size:10px; font-weight:300; letter-spacing:2px; }

/* ── LOGIN ───────────────────────────────────────────────────────────────── */
body.login-page { background:var(--teal); display:flex; align-items:center; justify-content:center; flex-direction:column; min-height:100vh; }
.login-logo { height:56px; width:auto; margin-bottom:8px;  }
.login-tagline { font-size:10px; font-weight:300; letter-spacing:6px; color:rgba(255,255,255,.75); text-transform:uppercase; margin-bottom:36px; }
.login-box { background:var(--white); padding:36px 40px; width:340px; box-shadow:0 20px 60px rgba(0,0,0,.18); }
.login-box h2 { font-size:10px; font-weight:700; letter-spacing:5px; text-transform:uppercase; color:var(--teal); margin-bottom:24px; text-align:center; }
.login-box input { width:100%; padding:12px 14px; border:1px solid #d0d0d0; font-family:'Lato',sans-serif; font-size:14px; font-weight:300; margin-bottom:10px; outline:none; transition:border-color .2s; background:#fafafa; }
.login-box input:focus { border-color:var(--teal); background:white; }
.login-box button { width:100%; padding:13px; background:var(--teal); color:white; border:none; font-family:'Lato',sans-serif; font-size:11px; font-weight:700; letter-spacing:4px; text-transform:uppercase; cursor:pointer; transition:background .2s; margin-top:4px; }
.login-box button:hover { background:var(--teal-dark); }
.login-timeout { margin-top:14px; padding:10px 12px; background:#fff3cd; border-left:3px solid #f39c12; font-size:12px; color:#856404; font-weight:700; }

/* ── RESPONSIVE ──────────────────────────────────────────────────────────── */
@media(max-width:480px) {
  .hero { padding:24px 16px 20px; } .hero-title { font-size:26px; }
  .page-content { padding:0 14px; margin:18px auto; }
  .stats-bar { padding:12px 16px; } .stats-inner { gap:18px; }
  .login-box { width:90vw; padding:26px 20px; }
  .card-grid { grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),250px)); }
  .top-day { display:none; }
  .top-bar-logo { height:22px; }
}

/* ── LOG ACCESSI ─────────────────────────────────────────────────────────── */
.access-log { margin-bottom:36px; background:var(--white); box-shadow:var(--shadow); overflow:hidden; }
.access-row { display:flex; align-items:center; gap:14px; padding:10px 16px; border-left:3px solid transparent; font-size:12px; transition:background .15s; flex-wrap:wrap; }
.access-row:not(:last-child) { border-bottom:1px solid var(--grey-mid); }
.access-row.ok   { border-left-color:#2ecc71; }
.access-row.fail { border-left-color:var(--red); background:#fffafa; }
.access-row:hover { background:var(--grey-light); }
.ac-icon  { font-size:14px; flex-shrink:0; }
.ac-ip    { font-weight:700; color:var(--dark); min-width:120px; font-variant-numeric:tabular-nums; }
.ac-user  { color:var(--teal); font-weight:700; letter-spacing:1px; min-width:40px; }
.ac-time  { color:var(--grey-text); font-size:11px; font-variant-numeric:tabular-nums; }
.ac-ago   { color:var(--grey-text); font-size:11px; margin-left:auto; }

/* ── STATS BAR INLINE ────────────────────────────────────────────────────── */
.stats-inline { max-width:100%; display:flex; align-items:center; flex-wrap:wrap; gap:6px; padding:6px 24px; justify-content:center; }
.si-item { font-size:12px; font-weight:700; color:var(--dark); }
.si-item.domain { color:var(--teal); font-weight:900; }
.si-item.online { color:var(--teal); }
.si-item.warn   { color:#f39c12; }
.si-sep   { color:var(--grey-text); font-size:12px; }

/* ── DOC PREVIEW ─────────────────────────────────────────────────────────── */
.doc-preview { background:var(--white); padding:32px 40px; box-shadow:var(--shadow); margin:0 auto 36px; max-width:900px; line-height:1.7; color:var(--dark); }
.doc-preview h1,.doc-preview h2,.doc-preview h3 { color:var(--teal); margin:20px 0 8px; }
.doc-preview table { border-collapse:collapse; width:100%; margin:16px 0; }
.doc-preview td,.doc-preview th { border:1px solid var(--grey-mid); padding:8px 12px; font-size:13px; }
.doc-preview th { background:var(--grey-light); font-weight:700; }
.doc-preview p { margin-bottom:10px; font-size:14px; }

/* Pallini visibili solo sulla home */
body:not(.page-home) .sm-dot-cb { display:none; }
body:not(.page-home) .sm-dot-placeholder { display:none; }

/* ── BACKUP TREE ─────────────────────────────────────────────────────────── */
.backup-tree { background:var(--white); box-shadow:var(--shadow); margin-bottom:36px; }
.bt-item { border-left:3px solid transparent; }
.bt-item.bt-dir  { border-left-color:var(--teal); }
.bt-item.bt-file { border-left-color:var(--grey-mid); }
.bt-row { display:flex; align-items:center; gap:8px; padding:8px 14px; cursor:pointer; transition:background .15s; flex-wrap:wrap; }
.bt-row:hover { background:var(--grey-light); }
.bt-children { padding-left:22px; border-left:2px solid var(--grey-mid); margin-left:22px; }
.bt-arrow { width:12px; color:var(--grey-text); font-size:10px; flex-shrink:0; transition:transform .2s; }
.bt-icon  { font-size:14px; flex-shrink:0; }
.bt-name  { font-weight:700; font-size:12px; flex:1; }
.bt-meta  { font-size:11px; color:var(--grey-text); }
.bt-actions { display:flex; gap:6px; margin-left:auto; }
.bt-btn { background:none; border:1px solid var(--grey-mid); color:var(--teal); font-size:10px; font-weight:700; padding:3px 8px; cursor:pointer; transition:all .15s; text-decoration:none; font-family:inherit; }
.bt-btn:hover { background:var(--teal); color:white; border-color:var(--teal); }
.bt-restore { color:var(--red) !important; border-color:var(--red) !important; }
.bt-restore:hover { background:var(--red) !important; border-color:var(--red) !important; color:white !important; }

/* ── DESKTOP PAGE ────────────────────────────────────────────────────────── */
.desktop-info { background:var(--white); box-shadow:var(--shadow); margin-bottom:24px; }
.di-item { display:flex; align-items:center; gap:16px; padding:10px 16px; border-bottom:1px solid var(--grey-mid); }
.di-item:last-child { border-bottom:none; }
.di-label { font-size:10px; font-weight:700; letter-spacing:2px; text-transform:uppercase; color:var(--grey-text); min-width:160px; }
.di-value { font-size:13px; font-weight:700; color:var(--dark); }
.di-value a { color:var(--teal); }
.vnc-frame-wrap { background:var(--white); box-shadow:var(--shadow); margin-bottom:36px; overflow:hidden; }
.vnc-frame-bar { display:flex; align-items:center; justify-content:flex-start; padding:4px 8px; background:var(--grey-light); border-bottom:1px solid var(--grey-mid); }
.vnc-frame { width:100%; height:65vh; min-height:500px; border:none; display:block; background:#000; }

.log-table { width:100%; border-collapse:collapse; font-size:13px; table-layout:fixed; }
.log-table thead th { background:var(--teal); color:white; padding:6px 12px; text-align:left; font-weight:600; letter-spacing:1px; font-size:11px; position:sticky; top:0; z-index:10; }
.log-table tbody tr { border-bottom:1px solid var(--grey-mid); }
.log-table tbody tr.ok { border-left:3px solid var(--teal); }
.log-table tbody tr.fail { border-left:3px solid var(--red); }
.log-table tbody tr:hover { background:rgba(0,169,157,.05); }
.log-table td { padding:5px 12px; vertical-align:middle; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

.sm-section-items { display:none; overflow:hidden; }
.sm-section-items.open { display:block; }
.sm-section-items .sm-item { padding-left:16px; }
.sm-section-arrow { display:inline-block; transition:transform .2s; }
.sm-section-toggle { cursor:pointer; display:flex; align-items:center; justify-content:space-between; padding:8px 14px; border-left:3px solid transparent; transition:background .18s, border-color .18s; }
.sm-section-toggle:hover { background:var(--teal); border-left:3px solid var(--teal-dark); }

.sm-section-name { color:#1a7a75; font-size:10px; font-weight:900; letter-spacing:1.5px; text-transform:uppercase; transition:font-weight .2s; }
.sm-section-items.open + .sm-section-toggle .sm-section-name,
.sm-section-toggle.open .sm-section-name { font-weight:700; }
.sm-section-arrow { display:inline-block; transition:transform .25s; color:#1a7a75; font-size:14px; }
.sm-section-toggle:hover .sm-section-name { color:white; }
.sm-section-toggle:hover .sm-section-arrow { color:white; }

/* ── Doc Preview ─────────────────────────────────────────────────────────── */
.doc-preview h1 { color:var(--teal); font-size:18px; border-bottom:3px solid var(--teal); padding-bottom:6px; margin-top:32px; }
.doc-preview h2 { color:var(--dark,#1a1a2e); font-size:15px; margin-top:22px; font-weight:700; }
.doc-preview h3 { color:#555; font-size:13px; margin-top:16px; font-weight:700; }
.doc-preview p  { margin:6px 0; font-size:13px; }
.doc-preview ul { margin:6px 0 6px 20px; }
.doc-preview li { margin:4px 0; font-size:13px; }
.doc-preview pre { background:#f4f6f8; border-left:3px solid var(--teal); padding:10px 14px; font-size:12px; color:#2f4f4f; overflow-x:auto; margin:8px 0; white-space:pre-wrap; border-radius:4px; }
.doc-preview code { display:block; background:#f4f6f8; padding:4px 10px; font-size:12px; color:#2f4f4f; margin:2px 0; border-radius:3px; }
.doc-preview table { border-collapse:collapse; width:100%; margin:10px 0; font-size:12px; }
.doc-preview th { background:var(--teal); color:white; padding:6px 10px; text-align:left; }
.doc-preview td { padding:5px 10px; border:1px solid #ddd; }
.doc-preview tr.odd td { background:#f9fafb; }
.doc-preview table.kv th { background:#e6f7f6; color:#1a1a2e; width:180px; font-weight:700; border:1px solid #ddd; }
.doc-preview table.kv td { border:1px solid #ddd; }
.doc-preview .note-ok   { background:#d4edda; color:#155724; padding:7px 12px; margin:7px 0; border-radius:4px; font-weight:700; font-size:13px; }
.doc-preview .note-warn { background:#fff3cd; color:#856404; padding:7px 12px; margin:7px 0; border-radius:4px; font-weight:700; font-size:13px; }
.doc-preview .note-err  { background:#f8d7da; color:#721c24; padding:7px 12px; margin:7px 0; border-radius:4px; font-weight:700; font-size:13px; }
.doc-preview .note-info { background:#cce5ff; color:#004085; padding:7px 12px; margin:7px 0; border-radius:4px; font-weight:700; font-size:13px; }
.doc-preview .note-tip  { background:#e6f7f6; color:var(--teal); padding:7px 12px; margin:7px 0; border-radius:4px; font-weight:700; font-size:13px; }
.doc-preview hr { border:none; border-top:1px solid #ddd; margin:24px 0; }
.doc-preview li.done { color:#155724; background:#d4edda; padding:4px 8px; border-radius:4px; list-style:none; }
.doc-preview li.todo { color:#C0392B; background:#fdf0ef; padding:4px 8px; border-radius:4px; list-style:none; font-weight:700; }
.doc-preview ul:has(li.done), .doc-preview ul:has(li.todo) { padding-left:0; }
.doc-cover { text-align:center; padding:32px 0 24px; border-bottom:2px solid #ddd; margin-bottom:24px; }
.doc-cover-title { font-size:28px; font-weight:900; color:var(--teal); letter-spacing:2px; margin-bottom:8px; }
.doc-cover-sub  { font-size:16px; color:#1a1a2e; margin:6px 0; }
.doc-cover-meta { font-size:12px; color:#888; margin:3px 0; }
