/* PettyCash — struttura DashQ + grafica/colori Chatzy (blu default, arrotondato, morbido).
   Le classi pc-* usano le variabili Bootstrap così il colore segue lo switcher e il dark mode. */

:root {
    /* Blu Chatzy-style come primario di default (poi lo switcher lo sovrascrive su <html>). */
    --bs-primary: #2563eb;
    --bs-primary-rgb: 37, 99, 235;
    /* Verde/rosso in stile Chatzy */
    --bs-success: #22c55e;  --bs-success-rgb: 34, 197, 94;
    --bs-danger:  #ee595c;  --bs-danger-rgb: 238, 89, 92;
    --pc-radius: 16px;      /* raggio generoso stile Chatzy */
    --pc-radius-sm: 12px;
}

/* ---- Schermo pieno ----
   Il layout DashQ imposta .app-wrapper come griglia "aside header rightbar" con corsie
   laterali fisse (80→120px a sinistra, 60px a destra) per elementi che NOI non usiamo:
   restavano due bande vuote. Qui la griglia torna a colonna singola, a tutta larghezza.
   Specificità body.layout-main (0,2,1) per battere le regole nei @media di layout-main.css. */
body.layout-main .app-wrapper {
    grid-template-columns: 1fr;
    grid-template-areas: "header" "main" "footer";
    max-width: none;
    width: 100%;
}
body.layout-main .app-body { width: 100%; }

/* Estetica Chatzy: superfici morbide, ombre leggere, angoli arrotondati */
body { background: var(--bs-app-body, #eef1f6); }
.app-body.border, .app-wrapper header.border-bottom { border-color: rgba(0,0,0,.06) !important; }
.btn { border-radius: 10px; }
.btn-primary { --bs-btn-bg: var(--bs-primary); --bs-btn-border-color: var(--bs-primary); --bs-btn-hover-bg: var(--bs-primary-dark, #1d4ed8); --bs-btn-hover-border-color: var(--bs-primary-dark, #1d4ed8); }
.dropdown-menu { border-radius: var(--pc-radius-sm); border-color: rgba(0,0,0,.08); }
.badge { border-radius: 8px; }

/* Periodo osservato (banner dashboard) */
.pc-period {
    background: rgba(var(--bs-primary-rgb), .07);
    border: 1px solid rgba(var(--bs-primary-rgb), .2);
    border-radius: var(--pc-radius);
    padding: .7rem 1rem;
}
.pc-period-badge { font-weight: 600; color: var(--bs-primary); }
.pc-period-dates { font-size: 1.05rem; font-weight: 700; letter-spacing: .01em; }

/* Selettore colore (swatches) */
.pc-swatches { display: grid; grid-template-columns: repeat(4, 1fr); gap: .5rem; }
.pc-swatch { width: 28px; height: 28px; border-radius: 50%; border: 2px solid transparent; cursor: pointer; padding: 0; box-shadow: 0 0 0 1px rgba(0,0,0,.1) inset; }
.pc-swatch.active { border-color: var(--bs-body-color); box-shadow: 0 0 0 2px var(--bs-body-bg), 0 0 0 4px currentColor; }


/* ---- Sidebar verticale ---- */
.body-sidebar .sidebar-link {
    color: var(--bs-body-color);
    text-decoration: none;
    font-weight: 500;
    transition: all .15s ease-in-out;
}
.body-sidebar .sidebar-link i { font-size: 1.05rem; opacity: .85; }
.body-sidebar .sidebar-link:hover {
    background: rgba(var(--bs-primary-rgb), .08);
    color: var(--bs-primary);
}
.body-sidebar .sidebar-link.active {
    background: var(--bs-primary);
    color: #fff;
}
.body-sidebar .sidebar-link.active i { opacity: 1; }
.fs-12 { font-size: .75rem; letter-spacing: .04em; }

/* ---- Titoli di pagina ---- */
.page-title { font-size: 1.35rem; font-weight: 700; margin-bottom: .25rem; }
.page-sub { color: var(--bs-secondary-color); margin-bottom: 1.25rem; }

/* ---- Card (pc-card / pc-cards KPI) ---- */
.pc-cards { display: flex; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.5rem; }
.pc-card {
    background: var(--bs-card-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: 1rem;
    padding: 1.1rem 1.3rem;
    min-width: 190px;
    flex: 1 1 190px;
    box-shadow: 0 1px 2px rgba(0,0,0,.03);
}
.pc-card-label { display: block; color: var(--bs-secondary-color); font-size: .82rem; margin-bottom: .35rem; }
.pc-card-value { font-size: 1.6rem; font-weight: 700; line-height: 1.1; }
.pc-in { color: var(--bs-success); }
.pc-out { color: var(--bs-danger); }

/* ---- Contenitori a scheda per tabelle/sezioni ---- */
.pc-panel {
    background: var(--bs-card-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: 1rem;
    padding: 1.25rem;
    margin-bottom: 1.5rem;
}

/* ---- Tabelle (pc-table) ----
   Tipografia UNICA per tutte le tabelle del gestionale: stesso font ovunque,
   MAIUSCOLETTO (small-caps) e corpo 11px. Le cifre usano i numeri tabulari
   così le colonne di importi restano incolonnate. Vale anche per gli elementi
   annidati (small, badge), altrimenti erediterebbero corpi diversi. */
.pc-table {
    width: 100%;
    border-collapse: collapse;
    margin: .25rem 0 1rem;
    background: var(--bs-card-bg);
}
.pc-table,
.pc-table th,
.pc-table td,
.pc-table small,
.pc-table .badge,
.pc-table input,
.pc-table select,
.pc-table label,
.pc-table button,
.pc-table a {
    font-family: "Segoe UI", var(--app-font-family), system-ui, -apple-system, sans-serif;
    font-size: 11px;
    font-variant-caps: small-caps;
    font-variant-numeric: tabular-nums;
}
.pc-table th, .pc-table td {
    padding: .45rem .6rem;
    text-align: left;
    border-bottom: 1px solid var(--bs-border-color);
    vertical-align: middle;
}
.pc-table thead th {
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--bs-secondary-color);
    font-weight: 600;
    border-bottom: 2px solid var(--bs-border-color);
}
.pc-table tbody tr:hover { background: rgba(var(--bs-primary-rgb), .04); }
.pc-right { text-align: right; }
.pc-desc { max-width: 320px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---- Form e filtri ---- */
.pc-filters { display: flex; gap: 1rem; align-items: end; margin: 0 0 1.25rem; flex-wrap: wrap; }
.pc-form { display: flex; flex-direction: column; gap: .85rem; max-width: 520px; margin: 0 0 1rem; }
.pc-filters label, .pc-form label { display: flex; flex-direction: column; font-size: .85rem; gap: .3rem; font-weight: 500; }
.pc-filters input, .pc-filters select,
.pc-form input, .pc-form select,
.pc-inline input, .pc-inline select {
    padding: .5rem .7rem;
    border: 1px solid var(--bs-border-color);
    border-radius: .55rem;
    background: var(--bs-body-bg);
    color: var(--bs-body-color);
    font: inherit;
}
.pc-form input:focus, .pc-filters input:focus, .pc-form select:focus {
    outline: none; border-color: var(--bs-primary);
    box-shadow: 0 0 0 .2rem rgba(var(--bs-primary-rgb), .2);
}

/* ---- Bottoni (bare <button> nelle pagine) ---- */
.pc-form button, .pc-filters button, .pc-actions button, .pc-inline button, button.pc-btn {
    padding: .5rem .9rem;
    border: 1px solid var(--bs-primary);
    background: var(--bs-primary);
    color: #fff;
    border-radius: .55rem;
    cursor: pointer;
    font: inherit;
    font-weight: 500;
    align-self: start;
    transition: filter .15s ease;
}
.pc-form button:hover, .pc-filters button:hover, .pc-actions button:hover, .pc-inline button:hover, button.pc-btn:hover { filter: brightness(.92); }
.pc-actions { display: flex; gap: .75rem; flex-wrap: wrap; align-items: center; }
.pc-inline { display: inline-flex; gap: .4rem; margin: 0; align-items: center; }
.pc-inline button { padding: .4rem .65rem; font-size: .85rem; }

/* ---- Alert ---- */
.pc-alert { border-radius: .7rem; padding: .8rem 1rem; margin: 0 0 1rem; border: 1px solid transparent; }
.pc-alert-ok { background: rgba(var(--bs-success-rgb), .12); border-color: rgba(var(--bs-success-rgb), .3); color: var(--bs-success-text-emphasis, #0f5132); }
.pc-alert-warn { background: rgba(var(--bs-warning-rgb), .15); border-color: rgba(var(--bs-warning-rgb), .35); color: var(--bs-warning-text-emphasis, #664d03); }

/* ---- Badge ---- */
.pc-badge { display: inline-block; padding: .2rem .6rem; border-radius: 999px; font-size: .76rem; font-weight: 600; }
.pc-badge-ok { background: rgba(var(--bs-success-rgb), .15); color: var(--bs-success); }
.pc-badge-warn { background: rgba(var(--bs-warning-rgb), .2); color: #9a6a00; }
.pc-badge-bad { background: rgba(var(--bs-danger-rgb), .15); color: var(--bs-danger); }

/* ---- Login (auth) ---- */
.pc-login-body { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: var(--bs-app-body, #f0f2f5); padding: 1.5rem; }
.pc-login { background: var(--bs-card-bg); border: 1px solid var(--bs-border-color); border-radius: 1.25rem; padding: 2.25rem; width: 100%; max-width: 380px; box-shadow: 0 20px 45px rgba(0,0,0,.08); }
.pc-login h1 { font-size: 1.5rem; font-weight: 700; margin: 0; }
.pc-login-sub { color: var(--bs-secondary-color); margin: .35rem 0 1.5rem; }
.pc-login form { display: flex; flex-direction: column; gap: 1rem; }
.pc-login label { display: flex; flex-direction: column; font-size: .88rem; gap: .35rem; font-weight: 500; }
.pc-login input { padding: .65rem .8rem; border: 1px solid var(--bs-border-color); border-radius: .6rem; background: var(--bs-body-bg); color: var(--bs-body-color); }
.pc-login input:focus { outline: none; border-color: var(--bs-primary); box-shadow: 0 0 0 .2rem rgba(var(--bs-primary-rgb), .2); }
.pc-login button[type=submit] { margin-top: .25rem; padding: .7rem; border: none; background: var(--bs-primary); color: #fff; border-radius: .6rem; font-weight: 600; cursor: pointer; }
.pc-login button[type=submit]:hover { filter: brightness(.93); }
.pc-login-logo { width: 52px; height: 52px; border-radius: .9rem; display: inline-flex; align-items: center; justify-content: center; background: var(--bs-primary); color: #fff; font-size: 1.5rem; margin-bottom: 1rem; }

/* ---- Tabella compatta (Movimenti): righe più strette.
       Il corpo è già unico a 9px per tutte le tabelle (vedi sopra). ---- */
.pc-table-sm th, .pc-table-sm td { padding: .3rem .45rem; }
.pc-table-sm .pc-desc { max-width: 260px; }
.pc-table thead th, .pc-table-sm thead th { white-space: nowrap; }
/* Riga di DETTAGLIO non contabile (import PALMO/Nexi) */
tr.pc-detail td { background: rgba(var(--bs-warning-rgb), .06); }
tr.pc-detail td:first-child { box-shadow: inset 3px 0 0 rgba(var(--bs-warning-rgb), .5); }

/* ---- Allineamento barra filtri: input, select e bottoni alla stessa base ---- */
.pc-filterbar { display: flex; flex-wrap: wrap; gap: .6rem; align-items: flex-end; }
.pc-filterbar > * { margin-bottom: 0; }
.pc-cat-form { display: inline-flex; flex-wrap: wrap; gap: .3rem; align-items: center; margin: 0; }
.pc-cat-form .form-control, .pc-cat-form .form-select { min-width: 8rem; }

/* ---- Mostra/nascondi password (pulsante occhio) ---- */
.pc-pw-wrap { position: relative; display: block; }
.pc-pw-wrap > input { padding-right: 2.5rem !important; width: 100%; }
.pc-pw-toggle {
    position: absolute; top: 50%; right: .5rem; transform: translateY(-50%);
    border: 0; background: transparent; padding: .15rem .4rem; cursor: pointer;
    color: var(--bs-secondary-color); line-height: 1; font-size: 1rem;
}
.pc-pw-toggle:hover { color: var(--bs-primary); }

/* ---- Toast (salvataggi AJAX, es. categoria nei Movimenti) ---- */
.pc-toast {
    position: fixed; left: 50%; bottom: 1.25rem; transform: translateX(-50%) translateY(1rem);
    z-index: 1080; max-width: 90vw; padding: .7rem 1.1rem; border-radius: .7rem; color: #fff;
    box-shadow: 0 8px 24px rgba(0,0,0,.18); opacity: 0; pointer-events: none;
    transition: opacity .2s ease, transform .2s ease; font-size: .9rem; font-weight: 500;
}
.pc-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }
.pc-toast-ok { background: var(--bs-success); }
.pc-toast-err { background: var(--bs-danger); }
