:root{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#18211b;background:#edf3ee}*{box-sizing:border-box}body{margin:0}.hidden{display:none!important}button,input,textarea,select{font:inherit}button{border:0;border-radius:10px;padding:.72rem 1rem;background:#276749;color:white;font-weight:700;cursor:pointer}.ghost,.secondary{background:#e7eee9;color:#1f3a2b}.login-view{min-height:100vh;display:grid;place-items:center;padding:20px}.card{background:white;border-radius:18px;box-shadow:0 10px 35px #0002}.login-card{width:min(420px,100%);padding:28px}.login-card h1{margin-top:0}label{display:grid;gap:6px;margin:12px 0;font-size:.92rem;font-weight:650}input,textarea,select{width:100%;border:1px solid #cbd6ce;border-radius:10px;padding:.7rem;background:#fff}.muted{color:#66746c}.error{color:#b42318;margin-top:8px;min-height:1.2em}.app{height:100vh;display:grid;grid-template-rows:54px 1fr}.topbar{display:flex;justify-content:space-between;align-items:center;padding:0 14px;background:#173f2c;color:#fff;z-index:1001}.topbar button{padding:.45rem .7rem}main{position:relative;min-height:0}#map{position:absolute;inset:0}.floating{position:absolute;z-index:800;box-shadow:0 3px 12px #0003}.top-right{right:12px;top:12px}.top-left{left:12px;top:12px}.report-actions{right:16px;bottom:22px;display:flex;gap:8px;align-items:center}.report-actions button{font-size:1rem;box-shadow:none}.side-panel{position:absolute;z-index:1000;top:10px;right:10px;width:min(390px,calc(100vw - 20px));max-height:calc(100% - 20px);overflow:auto;background:#fff;border-radius:16px;padding:14px;box-shadow:0 10px 35px #0004}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.panel-head button{background:transparent;color:#333;font-size:1.5rem;padding:.2rem .5rem}.layer-group{margin-top:14px}.layer-group h3{font-size:.78rem;letter-spacing:.06em;color:#6a746d;margin:8px 0}.layer-row{display:flex;align-items:center;gap:8px;padding:6px 2px}.layer-row input{width:auto}.layer-row label{margin:0;font-weight:500;display:inline}.sentinel-trigger{width:100%;margin-top:10px;background:#315f7d}.sentinel-item{border:1px solid #dde5df;border-radius:12px;padding:10px;margin:8px 0}.sentinel-item .row{display:flex;align-items:center;gap:8px}.sentinel-item input[type=range]{padding:0}.sentinel-item button{padding:.35rem .55rem;background:#eee;color:#8a1c1c}.modal{position:absolute;inset:0;z-index:1200;background:#0007;display:grid;place-items:center;padding:14px}.modal-card{width:min(620px,100%);max-height:95%;overflow:auto;padding:18px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}fieldset{border:1px solid #d6dfd8;border-radius:12px}.choice{display:flex;align-items:center;gap:8px;padding:6px}.choice input{width:auto}.choice label{margin:0;font-weight:500}.level-dot{width:16px;height:16px;border-radius:50%;border:1px solid #333;display:inline-block}.marker-preview-wrap{display:grid;place-items:center;padding:16px}.split-marker{width:30px;height:30px;border-radius:50%;border:3px solid #26312a;box-shadow:0 1px 5px #0005}.split-marker.preview{width:54px;height:54px}.report-marker{background:transparent!important;border:0!important}.report-popup b{display:inline-block;min-width:82px}@media(max-width:640px){.grid2{grid-template-columns:1fr}.topbar{font-size:.9rem}.side-panel{top:8px;right:8px;width:calc(100vw - 16px)}.modal{align-items:end;padding:0}.modal-card{width:100%;border-radius:20px 20px 0 0;max-height:88vh}.report-actions{right:12px;bottom:16px}}
.topbar-actions{display:flex;align-items:center;gap:8px}.role-badge{font-size:.72rem;padding:.2rem .45rem;border-radius:999px;background:#ffffff22}.admin-panel{left:10px;right:auto}.users-list{display:grid;gap:8px;margin-top:12px}.user-card{border:1px solid #dde5df;border-radius:12px;padding:10px}.user-card-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.user-card .meta{font-size:.82rem;color:#66746c;margin-top:4px}.user-card .permission-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.permission-tag{font-size:.72rem;padding:.2rem .45rem;border-radius:999px;background:#edf3ee;color:#294536}.permission-tag.off{background:#f2f2f2;color:#777}.user-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.user-actions button{padding:.45rem .65rem}.permissions-box{margin-top:14px}.permission-row{display:flex;grid-template-columns:auto 1fr;align-items:center;gap:8px;margin:8px 0;font-weight:500}.permission-row input{width:auto;margin:0}.status-active{color:#16794b}.status-disabled{color:#b42318}.danger-soft{background:#fae9e7!important;color:#9b2218!important}@media(max-width:640px){.topbar-actions{gap:5px}.role-badge{display:none}.admin-panel{left:8px;right:8px;width:calc(100vw - 16px)}}

#map.report-placement-mode{cursor:crosshair}.report-placement-mode .leaflet-interactive{cursor:crosshair!important}

.report-popup-actions{display:flex;gap:6px;margin-top:10px}.report-popup-actions button{padding:.45rem .65rem;font-size:.85rem}

/* =========================================================
   MOBILE / iPHONE SAFE-AREA FIX
   Solo schermi stretti: desktop invariato.
   Corregge:
   - toolbar Leaflet/Draw tagliata a sinistra
   - controllo Layer dentro lo schermo
   - Posizione / Segnala sopra la barra Safari
   - pannelli e popup entro il viewport
   ========================================================= */
@media (max-width:640px){

  /* Usa l'altezza dinamica reale del browser mobile quando disponibile */
  .app{
    height:100dvh;
    min-height:100svh;
  }

  /* Fallback per browser che non supportano dvh/svh */
  @supports not (height:100dvh){
    .app{
      height:100vh;
    }
  }

  /* Controlli Leaflet: margini reali dai bordi del telefono */
  .leaflet-top.leaflet-left,
  .leaflet-bottom.leaflet-left{
    left:8px;
  }

  .leaflet-top.leaflet-right,
  .leaflet-bottom.leaflet-right{
    right:8px;
  }

  .leaflet-control{
    max-width:calc(100vw - 24px);
  }

  /* Zoom + toolbar disegno: mai tagliati a sinistra */
  .leaflet-left .leaflet-control{
    margin-left:0;
  }

  .leaflet-draw{
    margin-left:0!important;
    max-width:calc(100vw - 24px);
  }

  .leaflet-draw-toolbar{
    margin-left:0!important;
    max-width:calc(100vw - 24px);
  }

  .leaflet-draw-toolbar a{
    width:42px;
    height:42px;
    line-height:42px;
  }

  /* Azioni testuali di Leaflet Draw contenute nel display */
  .leaflet-draw-actions{
    left:42px!important;
    max-width:calc(100vw - 70px);
    overflow:hidden;
  }

  .leaflet-draw-actions li{
    max-width:100%;
  }

  .leaflet-draw-actions a{
    max-width:calc(100vw - 80px);
    white-space:normal;
    line-height:1.15;
    padding:7px 9px;
    overflow-wrap:anywhere;
  }

  /* Controllo Layer */
  .leaflet-control-layers{
    max-width:calc(100vw - 24px);
    box-sizing:border-box;
  }

  .leaflet-control-layers-expanded{
    width:min(300px, calc(100vw - 24px));
    max-height:calc(100dvh - 150px);
    overflow:auto;
  }

  .leaflet-control-layers-list{
    max-width:100%;
    overflow-x:hidden;
  }

  .leaflet-control-layers label{
    white-space:normal;
    overflow-wrap:anywhere;
  }

  /* Posizione / Segnala:
     spazio extra in basso per la barra Safari + safe area iPhone */
  .report-actions{
    left:8px;
    right:8px;
    width:auto;
    max-width:none;
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    gap:8px;
    align-items:stretch;

    bottom:max(
      18px,
      calc(env(safe-area-inset-bottom, 0px) + 72px)
    );
  }

  .report-actions button{
    width:100%;
    min-width:0;
    max-width:100%;
    min-height:48px;
    padding:.66rem .45rem;
    font-size:.94rem;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }

  /* Controlli flottanti custom */
  .top-right{
    right:8px;
    max-width:calc(100vw - 16px);
  }

  .top-left{
    left:8px;
    max-width:calc(100vw - 16px);
  }

  .floating{
    max-width:calc(100vw - 16px);
  }

  /* Pannelli */
  .side-panel{
    left:8px;
    right:8px;
    width:auto;
    max-width:none;
    max-height:calc(100dvh - 80px);
  }

  /* Popup Leaflet */
  .leaflet-popup-content-wrapper{
    max-width:calc(100vw - 28px);
  }

  .leaflet-popup-content{
    max-width:calc(100vw - 56px);
    overflow-wrap:anywhere;
  }
}

