/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
* {
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    /* make transparent link selection, adjust last value opacity 0 to 1.0 */
}

body {
    -webkit-touch-callout: none;
    /* prevent callout to copy image, etc when tap to hold */
    -webkit-text-size-adjust: none;
    /* prevent webkit from resizing text to fit */
    -webkit-user-select: none;
    /* prevent copy paste, to allow, change 'none' to 'text' */
    background-color: #E4E4E4;
    background-image: linear-gradient(to bottom, #A7A7A7 0%, #E4E4E4 51%);
    font-family: system-ui, -apple-system, -apple-system-font, 'Segoe UI', 'Roboto', sans-serif;
    font-size: 12px;
    height: 100vh;
    margin: 0px;
    padding: 0px;
    /* Padding to avoid the "unsafe" areas behind notches in the screen */
    padding: env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px);
    text-transform: uppercase;
    width: 100%;
}

/* ripristina il case normale nel corpo e nel titolo */
.bootbox .modal-body,
.bootbox .modal-title {
    text-transform: none !important;
}

.password-recovery-modal .modal-dialog {
    max-width: 420px;
}

.password-recovery-modal .modal-content {
    border: 0;
    border-radius: 14px;
    box-shadow: 0 12px 32px rgba(26, 43, 60, 0.18);
    overflow: hidden;
}

.password-recovery-modal .password-recovery-header {
    background: #1f6f8b;
    color: #ffffff;
    border-bottom: 0;
    padding: 16px 20px;
}

.password-recovery-modal .modal-title {
    font-size: 1.15rem;
    font-weight: 600;
    line-height: 1.2;
    white-space: nowrap;
}

.password-recovery-modal .modal-body {
    background: #ffffff;
    color: #334155;
    padding: 20px;
}

.password-recovery-description {
    margin: 0 0 14px;
    color: #64748b;
    font-size: 0.95rem;
    line-height: 1.45;
    text-transform: none;
}

.password-recovery-modal .form-control {
    min-height: 46px;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    color: #1e293b;
    background: #ffffff;
    box-shadow: none;
}

.password-recovery-modal .form-control:focus {
    border-color: #1f6f8b;
    box-shadow: 0 0 0 0.2rem rgba(31, 111, 139, 0.15);
}

.password-recovery-modal .modal-footer {
    background: #f8fafc;
    border-top: 1px solid #e2e8f0;
    padding: 12px 20px;
}

.password-recovery-modal .btn-primary {
    background: #1f6f8b;
    border-color: #1f6f8b;
}

/* Portrait layout (default) */
.app {
    background: url(../img/logo.png) no-repeat center top;
    /* 170px x 200px */
    position: absolute;
    /* position in the center of the screen */
    left: 50%;
    top: 50%;
    height: 50px;
    /* text area height */
    width: 225px;
    /* text area width */
    text-align: center;
    padding: 180px 0px 0px 0px;
    /* image height is 200px (bottom 20px are overlapped with text) */
    margin: -115px 0px 0px -112px;
    /* offset vertical: half of image height and text area height */
    /* offset horizontal: half of text area width */
}

/* Landscape layout (with min-width) */
@media screen and (min-aspect-ratio: 1/1) and (min-width:400px) {
    .app {
        background-position: left center;
        padding: 75px 0px 75px 170px;
        /* padding-top + padding-bottom + text area = image height */
        margin: -90px 0px 0px -198px;
        /* offset vertical: half of image height */
        /* offset horizontal: half of image width and text area width */
    }
}

h1 {
    font-size: 24px;
    font-weight: normal;
    margin: 0px;
    overflow: visible;
    padding: 0px;
    text-align: center;
}

.event {
    border-radius: 4px;
    color: #FFFFFF;
    font-size: 12px;
    margin: 0px 30px;
    padding: 2px 0px;
}

.event.listening {
    background-color: #333333;
    display: block;
}

.event.received {
    background-color: #4B946A;
    display: none;
}

#deviceready.ready .event.listening {
    display: none;
}

#deviceready.ready .event.received {
    display: block;
}

@keyframes fade {
    from {
        opacity: 1.0;
    }

    50% {
        opacity: 0.4;
    }

    to {
        opacity: 1.0;
    }
}

.blink {
    animation: fade 3000ms infinite;
    -webkit-animation: fade 3000ms infinite;
}


@media screen and (prefers-color-scheme: dark) {
    body {
        background-image: linear-gradient(to bottom, #585858 0%, #1B1B1B 51%);
    }
}

body {
    background-color: #f8f9fa;
}

.login-container {
    max-width: 400px;
    margin: 0 auto;
    padding: 20px;
    background-color: #ffffff;
    box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
    border-radius: 5px;
    margin-top: 0px;
}

.logo {
    text-align: center;
    margin-bottom: 20px;
}

.content-wrapper {
    min-height: calc(100vh - 70px);
    /* Altezza dello schermo meno la navbar */
}


.bootstrap-select .dropdown-toggle {
    display: block !important;
}

.bootstrap-select .dropdown-menu {
    display: block !important;
    opacity: 1 !important;
    visibility: visible !important;
}

.disabled-modulo {
    pointer-events: none;
    opacity: 0.5;
    cursor: not-allowed;
}

.btn-group.is-invalid {
    border: 4px solid red;
    border-radius: 10px;
    /*padding: 0.25rem;*/
}

.navbar-toggler-icon2 {
    display: inline-block;
    width: 1.5em;
    height: 1.5em;
    vertical-align: middle;
    background-image: url("img/logo fondiz 512x512.png");
    background-repeat: no-repeat;
    background-position: center;
    background-size: 100%;
}

.nav2 {
    --bs-nav-link-padding-x: 0.5rem;
    --bs-nav-link-padding-y: 0.5rem;
    --bs-nav-link-font-weight: ;
    --bs-nav-link-color: var(--bs-link-color);
    --bs-nav-link-hover-color: var(--bs-link-hover-color);
    --bs-nav-link-disabled-color: var(--bs-secondary-color);
    display: flex;
    flex-wrap: wrap;
    padding-left: 0;
    margin-bottom: 0;
    list-style: none
}

/* Safe area iOS (notch/status bar) */
:root {
    --sat: env(safe-area-inset-top);
    --sar: env(safe-area-inset-right);
    --sab: env(safe-area-inset-bottom);
    --sal: env(safe-area-inset-left);
    /* Altezza della navbar: sovrascritta a runtime da aggiornaNavHeight() in
       dashboard.js con l'altezza REALE (include la safe-area assorbita). Questo
       è solo il fallback pre-JS: 64px di contenuto + safe-area. */
    --nav-h: calc(64px + var(--sat));
}

/* Android: la WebView parte già sotto la barra di stato (StatusBarOverlaysWebView=false),
   ma riporta comunque l'area sicura in alto — misurata 50px su Pixel 4a il 15/09/2026:
   sommarla all'altezza della navbar lasciava una fascia bianca inutile sopra il logo.
   Su iPhone la WebView arriva sotto la barra di stato e quello spazio serve davvero,
   quindi si azzera solo su Android (classe messa da index.html appena parte l'app). */
html.piattaforma-android {
    --sat: 0px;
}

/* Solo la pagina di login (che non ha navbar) usa il padding dell'area sicura sul
   corpo: senza il :not() questa regola spegnerebbe anche lo spazio sotto la navbar
   nella dashboard, facendo finire il contenuto sotto l'intestazione. */
html.piattaforma-android body:not(.con-navbar) {
    padding-top: 0;
}

/* Spaziatura globale: evita che il contenuto finisca sotto la status bar o la navbar.
   La navbar è agganciata a top:0 con la safe-area come padding interno: il suo bordo
   inferiore sta a (altezza contenuto + safe-area), quindi il body deve partire da lì. */
body {
    padding-left: var(--sal);
    padding-right: var(--sar);
    padding-bottom: var(--sab);
}

/* Solo le pagine CON navbar fixed (dashboard, registrazione) devono partire sotto
   l'header. La login non ha navbar: senza questo scoping le restava ~72px di vuoto
   in cima (padding inutile). */
body.con-navbar {
    padding-top: var(--nav-h);
}

/* Navbar sempre opaca e sopra il contenuto (niente testo che scorre sotto) */
#mainNav.navbar.fixed-top {
    background-color: var(--bs-body-bg);
    box-shadow: 0 1px 8px rgba(0, 0, 0, 0.08);
}

.profile-form {
    max-width: 1080px;
    padding: 0.25rem 0.75rem 1rem;
}

.profile-section-title {
    margin-bottom: 0.75rem;
    color: var(--bs-emphasis-color);
    font-size: clamp(1.35rem, 2vw, 1.75rem);
    font-weight: 700;
}

.profile-info {
    margin-bottom: 1.25rem;
    border: 0;
    border-left: 4px solid var(--bs-info);
    border-radius: 0.75rem;
    font-size: 0.92rem;
}

.profile-form .form-label {
    margin-bottom: 0.35rem;
    color: var(--bs-secondary-color);
    font-size: 0.82rem;
    font-weight: 600;
}

.profile-form .form-control,
.profile-form .form-select {
    min-height: 44px;
    border-radius: 0.7rem;
}

/* Select multiplo (regioni di lavoro per l'ECM): il controllo nativo iOS è una lista */
#idRegioneLavoroPrevalente {
    height: auto;
    min-height: 132px;
    padding: 0.25rem 0.5rem;
}

.profile-form #nato_il {
    width: 100%;
    max-width: 220px;
}

#dsPassword {
    color: #212529 !important;
    background-color: #ffffff !important;
}

#dsPassword::placeholder {
    color: #6c757d !important;
    opacity: 1;
}

@media (max-width: 575.98px) {
    .profile-form {
        padding-right: 0.25rem;
        padding-left: 0.25rem;
    }

    .profile-form #nato_il {
        max-width: none;
    }
}

/* Navbar fixed-top: agganciata a top:0, assorbe la safe-area come padding interno.
   Così lo sfondo arriva fino alla barra di stato (niente band grigio scoperto sopra)
   e il contenuto non scorre sotto il bordo inferiore della navbar. */
#mainNav.navbar.fixed-top {
    top: 0;
    left: var(--sal);
    right: var(--sar);
    padding-top: var(--sat);
}

/* Spaziatore in header (mobile): pareggia la larghezza dell'hamburger a sinistra,
   così il logo resta esattamente al centro. */
.navbar-spacer {
    min-width: 56px;
    align-self: stretch;
}

/* Scorciatoie della dashboard: icona + etichetta sulla stessa riga */
.dashboard-tile {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
}

.dashboard-tile i {
    font-size: 1.35rem;
    line-height: 1;
}

/* Scorciatoia "torna alla dashboard": mostrata in cima a ogni sezione (sotto l'header),
   così non serve aprire il menu laterale. */
.torna-dashboard-link {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    margin-bottom: 0.75rem;
    padding: 0.3rem 0.85rem;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--bs-primary);
    background-color: var(--bs-body-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: 999px;
    text-decoration: none;
}

.torna-dashboard-link:active {
    color: var(--bs-body-bg);
    background-color: var(--bs-primary);
}

/* Modali (bootbox: registrazione, recupero password, ...): il contenitore .modal è
   fixed a tutto schermo, quindi senza safe-area il titolo finisce sotto l'orologio/notch.
   Il padding tiene il contenuto dentro l'area sicura. */
.modal {
    padding-top: var(--sat);
    padding-bottom: var(--sab);
    padding-left: var(--sal);
    padding-right: var(--sar);
}



/* CONTENITORE GENERALE */
.video-drawer {
    position: fixed;
    left: 0;
    bottom: 0;
    width: 100%;
    z-index: 10000;
}

/* ============================= */
/* PULSANTE INFO */
/* ============================= */


.video-drawer-toggle {
    position: fixed;
    left: 12px;
    /* Alzato dal bordo: in orizzontale (i filmati ruotano lo schermo) a 12px
       finiva nella barra dei gesti di Android e il tocco non arrivava al pulsante. */
    bottom: 84px;
    width: 2.3rem;
    height: 2.3rem;
    min-width: 44px;
    min-height: 44px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.8rem;
    line-height: 1;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);
    z-index: 10001;
    color: blue;
    background-color: white;
    border: 0px;
}

/* icona interna */
.video-drawer-toggle i {
    font-size: 2rem;
}

/* ============================= */
/* BARRA INFERIORE */
/* ============================= */

.video-drawer-panel {
    position: fixed;
    left: 0;
    bottom: 0;

    width: 100vw;
    max-width: 100vw;

    background: rgba(0, 0, 0, 0.6);
    backdrop-filter: blur(6px);

    transform: translateY(100%);
    transition: transform 0.3s ease;

    padding: 0;
}

/* STATO APERTO */
.video-drawer.open .video-drawer-panel {
    transform: translateY(0);
    padding: 15px;
}

/* ============================= */
/* CONTENUTO INTERNO */
/* ============================= */

.video-drawer-inner {
    display: flex;
    flex-wrap: wrap;
    /* fondamentale per testo grande */
    gap: 10px;
    justify-content: center;
    align-items: center;

    font-size: 1rem;
    /* scala con accessibilità */
}

/* Badge tempo */
#videoTime,
#videoDuration {
    font-size: 0.9rem;
}

/* Responsive migliorato */
@media (max-width: 480px) {
    .video-drawer-inner {
        gap: 8px;
    }
}

#globalOverlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.65);
    backdrop-filter: blur(3px);
    z-index: 99999;
    display: flex;
    justify-content: center;
    align-items: center;
}

.overlay-spinner {
    text-align: center;
}
