/* ==== BASE: palette & reset ==== */
:root{
    /* LAPD/LSPD-like palette */
    --navy-900:#0b1f3a;   /* header, hero */
    --navy-800:#112a4c;   /* blocchi scuri */
    --navy-700:#18365e;   /* hover/inset */
    --navy-600:#1e3f6e;
    --bg:#f5f7fb;         /* sfondo pagine chiaro */
    --text:#1f2a37;       /* testo principale */
    --muted:#5b6b7f;      /* testo attenuato */
    --gold:#c9a227;       /* accenti / brand */
    --gold-700:#b6901e;   /* hover */
    --border:#d7dee9;     /* bordi chiari */
  
    --radius:14px;
    --shadow: 0 8px 24px rgba(17,42,76,.08);
  }
  
  *{box-sizing:border-box}
  html,body{
    margin:0;
    padding:0;
    font-family:"Roboto",system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,"Helvetica Neue",Arial,"Noto Sans",sans-serif;
    color:var(--text);
    background:var(--bg);
    line-height:1.5;
  }
  
  /* ---------- Layout & utilities ---------- */
  .container{max-width:1100px;margin:0 auto;padding:18px}
  .flex{display:flex}
  .between{justify-content:space-between}
  .align-center{align-items:center}
  .wrap{flex-wrap:wrap}
  .gap-8{gap:8px}
  .gap-12{gap:12px}
  .gap-16{gap:16px}
  .center{text-align:center}
  .muted{color:var(--muted)}
  .card{
    background:#fff;
    border:1px solid var(--border);
    border-radius:var(--radius);
    box-shadow:var(--shadow);
    padding:20px;
    margin:18px 0;
  }
  
  /* ---------- Header / Navbar ---------- */
  .header{
    background:var(--navy-900);
    color:#fff;
    border-bottom:4px solid var(--gold);
  }
  .brand{
    display:flex;
    align-items:center;
    gap:12px;
    text-decoration:none;
    color:#fff;
  }
  .brand img{height:36px;width:auto}
  .brand-title{
    font-family:"Roboto Condensed",sans-serif;
    font-weight:700;
    letter-spacing:.4px;
    font-size:20px;
    line-height:1;
  }
  .nav a{
    color:#e9eef7;
    text-decoration:none;
    padding:10px 12px;
    border-radius:10px;
  }
  .nav a:hover{background:rgba(255,255,255,.08)}
  
  /* ---------- Hero generico ---------- */
  .hero{
    background:linear-gradient(180deg,var(--navy-900),var(--navy-800));
    color:#fff;
    border-bottom:1px solid #0c1a31;
  }
  .hero-inner{
    display:grid;
    grid-template-columns:1.2fr .8fr;
    gap:24px;
    align-items:center;
  }
  .hero h1{
    font-family:"Roboto Condensed",sans-serif;
    font-size:clamp(24px,4.5vw,44px);
    margin:0 0 8px;
  }
  .hero p{
    margin:0;
    color:#e2e8f4;
  }
  .hero-badge{
    display:inline-flex;
    align-items:center;
    gap:8px;
    background:rgba(201,162,39,.15);
    border:1px solid rgba(201,162,39,.6);
    color:#ae9d00;
    padding:6px 10px;
    border-radius:999px;
    font-weight:600;
  }
  
  /* badge stato (reclutamento aperto/chiuso) */
  .hero-badge.is-open{ background:#1e9e5127; }
  .hero-badge.is-closed{ background:#c03a2b2f; }
  
  /* ---------- Notice / comunicazioni ---------- */
  .notice{
    border-left:6px solid var(--gold);
    background:#fff;
    padding:16px 18px;
    border:1px solid var(--border);
    border-radius:var(--radius);
  }
  .notice h3{
    margin:0 0 6px;
    font-family:"Roboto Condensed",sans-serif;
  }
  .notice ul{
    margin:8px 0 0 18px;
    color:var(--muted);
  }
  .notice li{margin:4px 0}
  
  /* ---------- Form istituzionale ---------- */
  form .grid-2{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:16px;
  }
  @media (max-width:900px){
    form .grid-2{grid-template-columns:1fr}
  }
  .full{grid-column:1/-1}
  
  label{
    display:flex;
    flex-direction:column;
    gap:6px;
  }
  label .label{
    text-transform:uppercase;
    letter-spacing:.06em;
    font-size:.78rem;
    color:var(--muted);
    font-weight:700;
  }
  input,select,textarea{
    background:#fff;
    border:1px solid var(--border);
    border-radius:12px;
    padding:12px 12px;
    font:inherit;
    outline:none;
    transition:border .15s, box-shadow .15s;
  }
  input::placeholder,textarea::placeholder{color:#98a6ba}
  input:focus,select:focus,textarea:focus{
    border-color:var(--gold);
    box-shadow:0 0 0 4px rgba(201,162,39,.18);
  }
  textarea{min-height:120px;resize:vertical}
  
  /* ---------- Buttons ---------- */
  .btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:10px 16px;
    border-radius:12px;
    border:1px solid transparent;
    cursor:pointer;
    font-weight:600;
    text-decoration:none;
    transition:filter .15s, transform .03s;
  }
  .btn:active{transform:translateY(1px)}
  
  .btn--primary{
    background:var(--gold);
    color:#1b1b1b;
  }
  .btn--primary:hover{background:var(--gold-700)}
  
  .btn--secondary{
    background:#fff;
    border-color:var(--border);
    color:var(--text);
  }
  .btn--secondary:hover{filter:brightness(0.98)}
  
  .btn--danger{
    background:#b91c1c;
    color:#fff;
    border-color:#991b1b;
  }
  .btn--danger:hover{filter:brightness(.95)}
  
  .btn--small{
    padding:6px 10px;
    border-radius:10px;
    font-size:12px;
  }
  
  /* ---------- Tables (Dashboard) ---------- */
  .table-wrap{
    overflow:auto;
    border:1px solid var(--border);
    border-radius:12px;
    background:#fff;
  }
  table{width:100%;border-collapse:separate;border-spacing:0}
  thead th{
    position:sticky;
    top:0;
    background:#f0f4fb;
    color:#30445f;
    padding:12px;
    border-bottom:1px solid var(--border);
    text-align:left;
    font-weight:700;
  }
  tbody td{
    padding:12px;
    border-bottom:1px solid var(--border);
  }
  tbody tr:hover td{background:#fafcff}
  
  /* tabelle allegati */
  .table td{vertical-align:middle;}
  .table td .btn{margin-right:6px;}
  
  /* ---------- Flash messages ---------- */
  .flashbox{
    display:grid;
    gap:10px;
    margin:14px 0;
  }
  .flash{
    padding:12px;
    border-radius:10px;
    border:1px solid;
  }
  .flash.success{background:#edf9f2;border-color:#b7e4c7;color:#0f5132}
  .flash.danger{background:#fdeaea;border-color:#f3c1c1;color:#842029}
  .flash.warning{background:#fff8e6;border-color:#f8e5b5;color:#664d03}
  .flash.info{background:#e8f2ff;border-color:#bfd9ff;color:#084298}
  
  /* ---------- Footer ---------- */
  .footer{
    color:#4e5f75;
    border-top:4px solid var(--gold);
    background:#fff;
  }
  .footer small{
    display:block;
    padding:18px 0;
  }
  
  /* ---------- Helpers ---------- */
  .kicker{
    font-family:"Roboto Condensed",sans-serif;
    text-transform:uppercase;
    letter-spacing:.1em;
    font-size:.8rem;
    color:#c7d4e6;
  }
  .center{text-align:center}
  .text-ok{color:#13714c}
  .text-no{color:#8a1c1c}
  