/* =====================================================================
   Backup Plesk — design system
   Tutti i colori arrivano da variabili --c-* generate da App\Services\Theme.
   ===================================================================== */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;font-size:var(--a11y-font-scale,100%)}
body{margin:0;font-family:var(--font);font-size:.9375rem;line-height:1.55;color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg{max-width:100%;vertical-align:middle}
a{color:var(--c-link);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,h4,h5{color:var(--c-heading);line-height:1.25;margin:0 0 .6em;font-weight:650;letter-spacing:-.01em}
h1{font-size:1.65rem}h2{font-size:1.3rem}h3{font-size:1.1rem}h4{font-size:1rem}
p{margin:0 0 1em}
hr{border:0;border-top:1px solid var(--c-border);margin:1.5rem 0}
code,pre,kbd{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:.85em}
code{background:var(--c-surface-2);padding:.12em .4em;border-radius:5px}
pre{background:var(--c-surface-2);padding:1rem;border-radius:var(--radius);overflow:auto;border:1px solid var(--c-border)}
::selection{background:color-mix(in srgb,var(--c-primary) 30%,transparent)}
:focus-visible{outline:3px solid color-mix(in srgb,var(--c-primary) 60%,transparent);outline-offset:2px}
.icon{width:1.15em;height:1.15em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:-999px;top:8px;z-index:1000;background:var(--c-primary);color:var(--c-primary-text);padding:.6rem 1rem;border-radius:var(--radius)}
.skip-link:focus{left:8px}
[hidden]{display:none!important}

/* ---------- utility ---------- */
.muted{color:var(--c-text-muted)}.small{font-size:.85rem}.xs{font-size:.78rem}
.text-right{text-align:right}.text-center{text-align:center}.nowrap{white-space:nowrap}.mono{font-family:ui-monospace,Menlo,Consolas,monospace}
.text-success{color:var(--c-success)}.text-danger{color:var(--c-danger)}.text-warning{color:var(--c-warning)}.text-info{color:var(--c-info)}
.flex{display:flex;gap:.75rem;align-items:center}.flex-wrap{flex-wrap:wrap}.between{justify-content:space-between}.end{justify-content:flex-end}.grow{flex:1;min-width:0}
.stack>*+*{margin-top:1rem}.stack-sm>*+*{margin-top:.5rem}
.mt-0{margin-top:0}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.mb-3{margin-bottom:1.5rem}
.grid{display:grid;gap:1.25rem}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.break{word-break:break-all}
@media (max-width:1100px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:860px){.grid-2,.grid-3{grid-template-columns:1fr}}
@media (max-width:560px){.grid-4{grid-template-columns:1fr}}

/* ---------- pulsanti ---------- */
.btn{--btn-bg:var(--c-surface);--btn-fg:var(--c-text);--btn-bd:var(--c-border);display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.55rem 1rem;border-radius:var(--radius);border:1px solid var(--btn-bd);background:var(--btn-bg);color:var(--btn-fg);font:inherit;font-weight:560;font-size:.9rem;line-height:1.2;cursor:pointer;text-decoration:none!important;transition:background .15s,border-color .15s,box-shadow .15s,transform .05s;white-space:nowrap}
.btn:hover{background:var(--c-surface-2)}
.btn:active{transform:translateY(1px)}
.btn:disabled,.btn.is-disabled{opacity:.55;cursor:not-allowed;pointer-events:none}
.btn-primary{--btn-bg:var(--c-primary);--btn-fg:var(--c-primary-text);--btn-bd:var(--c-primary)}
.btn-primary:hover{background:var(--c-primary-hover);border-color:var(--c-primary-hover)}
.btn-danger{--btn-bg:var(--c-danger);--btn-fg:#fff;--btn-bd:var(--c-danger)}
.btn-danger:hover{background:color-mix(in srgb,var(--c-danger) 85%,#000)}
.btn-success{--btn-bg:var(--c-success);--btn-fg:#fff;--btn-bd:var(--c-success)}
.btn-success:hover{background:color-mix(in srgb,var(--c-success) 85%,#000)}
.btn-ghost{--btn-bg:transparent;--btn-bd:transparent}
.btn-ghost:hover{background:var(--c-surface-2)}
.btn-outline-danger{--btn-fg:var(--c-danger);--btn-bd:color-mix(in srgb,var(--c-danger) 45%,transparent);--btn-bg:transparent}
.btn-outline-danger:hover{background:color-mix(in srgb,var(--c-danger) 10%,transparent)}
.btn-sm{padding:.35rem .65rem;font-size:.82rem}
.btn-lg{padding:.8rem 1.4rem;font-size:1rem}
.btn-block{width:100%}
.btn-icon{padding:.45rem;width:2.1rem;height:2.1rem}
.btn-group{display:inline-flex;gap:.4rem;flex-wrap:wrap}
form.inline{display:inline}

/* ---------- card ---------- */
.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:calc(var(--radius) + 4px);box-shadow:0 1px 2px rgba(16,24,40,.04)}
.card-body{padding:1.35rem}
.card-header{padding:1rem 1.35rem;border-bottom:1px solid var(--c-border);display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.card-header h2,.card-header h3{margin:0;font-size:1.02rem}
.card-footer{padding:.9rem 1.35rem;border-top:1px solid var(--c-border);background:var(--c-surface-2);border-radius:0 0 calc(var(--radius) + 4px) calc(var(--radius) + 4px)}
.card + .card{margin-top:1.25rem}
.card-flush .table-wrap{border:0;border-radius:0}

/* stat tile */
.stat{display:flex;gap:1rem;align-items:center;padding:1.15rem 1.25rem}
.stat-icon{width:2.75rem;height:2.75rem;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--c-primary) 13%,transparent);color:var(--c-primary);flex-shrink:0}
.stat-icon .icon{width:1.35rem;height:1.35rem}
.stat-icon.success{background:color-mix(in srgb,var(--c-success) 14%,transparent);color:var(--c-success)}
.stat-icon.warning{background:color-mix(in srgb,var(--c-warning) 14%,transparent);color:var(--c-warning)}
.stat-icon.danger{background:color-mix(in srgb,var(--c-danger) 14%,transparent);color:var(--c-danger)}
.stat-icon.info{background:color-mix(in srgb,var(--c-info) 14%,transparent);color:var(--c-info)}
.stat-label{font-size:.8rem;color:var(--c-text-muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}
.stat-value{font-size:1.45rem;font-weight:700;color:var(--c-heading);line-height:1.2;font-variant-numeric:tabular-nums}

/* ---------- form ---------- */
.form-group{margin-bottom:1.1rem}
.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}
label,.label{display:block;font-weight:580;font-size:.88rem;margin-bottom:.35rem;color:var(--c-heading)}
.hint{font-size:.8rem;color:var(--c-text-muted);margin-top:.3rem}
.input,input[type=text],input[type=email],input[type=password],input[type=number],input[type=url],input[type=search],input[type=date],input[type=time],input[type=tel],select,textarea{width:100%;padding:.6rem .8rem;border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-input-bg);color:var(--c-text);font:inherit;font-size:.92rem;transition:border-color .15s,box-shadow .15s}
textarea{min-height:110px;resize:vertical;line-height:1.5}
textarea.code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.82rem;min-height:260px}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2.5'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2.2rem}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--c-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--c-primary) 22%,transparent)}
input[type=color]{width:3rem;height:2.4rem;padding:.15rem;border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-input-bg);cursor:pointer}
.is-invalid{border-color:var(--c-danger)!important}
.field-error{color:var(--c-danger);font-size:.8rem;margin-top:.3rem}
.input-group{display:flex;align-items:stretch}
.input-group>input{border-top-right-radius:0;border-bottom-right-radius:0}
.input-group>.btn{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}
.check{display:flex;align-items:flex-start;gap:.55rem;font-weight:450;cursor:pointer;margin-bottom:.5rem}
.check input{width:1.05rem;height:1.05rem;margin-top:.18rem;accent-color:var(--c-primary);flex-shrink:0}
/* switch */
.switch{display:flex;align-items:center;gap:.7rem;cursor:pointer;font-weight:500;margin-bottom:.6rem}
.switch input{appearance:none;width:2.6rem;height:1.45rem;border-radius:99px;background:var(--c-border);position:relative;cursor:pointer;transition:background .2s;flex-shrink:0;margin:0}
.switch input::after{content:"";position:absolute;top:.17rem;left:.17rem;width:1.1rem;height:1.1rem;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .2s}
.switch input:checked{background:var(--c-primary)}
.switch input:checked::after{transform:translateX(1.15rem)}
.form-actions{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-top:1.4rem}
fieldset{border:1px solid var(--c-border);border-radius:var(--radius);padding:1rem 1.2rem;margin:0 0 1.2rem}
legend{font-weight:650;padding:0 .4rem;color:var(--c-heading)}
.password-wrap{position:relative}
.password-wrap input{padding-right:2.8rem}
.password-toggle{position:absolute;right:.35rem;top:50%;transform:translateY(-50%);background:none;border:0;color:var(--c-text-muted);cursor:pointer;padding:.35rem;border-radius:6px}
.password-toggle:hover{color:var(--c-text)}

/* ---------- tabelle ---------- */
.table-wrap{overflow-x:auto;border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-surface)}
.table{width:100%;border-collapse:collapse;font-size:.88rem}
.table th{text-align:left;font-weight:620;color:var(--c-text-muted);font-size:.76rem;text-transform:uppercase;letter-spacing:.045em;background:var(--c-surface-2);padding:.7rem .9rem;border-bottom:1px solid var(--c-border);white-space:nowrap}
.table td{padding:.72rem .9rem;border-bottom:1px solid var(--c-border);vertical-align:middle}
.table tr:last-child td{border-bottom:0}
.table tbody tr:hover{background:color-mix(in srgb,var(--c-primary) 4%,transparent)}
.table .actions{text-align:right;white-space:nowrap}
.table .actions .btn+.btn,.table .actions form{margin-left:.25rem}
@media (max-width:720px){
  .table.responsive thead{display:none}
  .table.responsive tr{display:block;border-bottom:1px solid var(--c-border);padding:.5rem 0}
  .table.responsive td{display:flex;justify-content:space-between;gap:1rem;border:0;padding:.35rem .9rem;text-align:right}
  .table.responsive td::before{content:attr(data-label);font-weight:600;color:var(--c-text-muted);text-align:left}
  .table.responsive .actions{justify-content:flex-end}
}

/* ---------- badge / alert ---------- */
.badge{display:inline-flex;align-items:center;gap:.3rem;padding:.18rem .55rem;border-radius:99px;font-size:.74rem;font-weight:620;background:var(--c-surface-2);color:var(--c-text-muted);border:1px solid var(--c-border);white-space:nowrap}
.badge-primary{background:color-mix(in srgb,var(--c-primary) 13%,transparent);color:var(--c-primary);border-color:transparent}
.badge-success{background:color-mix(in srgb,var(--c-success) 14%,transparent);color:var(--c-success);border-color:transparent}
.badge-warning{background:color-mix(in srgb,var(--c-warning) 16%,transparent);color:var(--c-warning);border-color:transparent}
.badge-danger{background:color-mix(in srgb,var(--c-danger) 14%,transparent);color:var(--c-danger);border-color:transparent}
.badge-info{background:color-mix(in srgb,var(--c-info) 14%,transparent);color:var(--c-info);border-color:transparent}
.dot{width:.5rem;height:.5rem;border-radius:50%;background:currentColor;display:inline-block}
.alert{display:flex;gap:.75rem;align-items:flex-start;padding:.85rem 1rem;border-radius:var(--radius);border:1px solid;margin-bottom:1rem;font-size:.9rem}
.alert .icon{margin-top:.15rem}
.alert p:last-child{margin-bottom:0}
.alert-success{background:color-mix(in srgb,var(--c-success) 9%,var(--c-surface));border-color:color-mix(in srgb,var(--c-success) 35%,transparent);color:var(--c-text)}
.alert-success .icon{color:var(--c-success)}
.alert-error,.alert-danger{background:color-mix(in srgb,var(--c-danger) 9%,var(--c-surface));border-color:color-mix(in srgb,var(--c-danger) 35%,transparent);color:var(--c-text)}
.alert-error .icon,.alert-danger .icon{color:var(--c-danger)}
.alert-warning{background:color-mix(in srgb,var(--c-warning) 10%,var(--c-surface));border-color:color-mix(in srgb,var(--c-warning) 40%,transparent);color:var(--c-text)}
.alert-warning .icon{color:var(--c-warning)}
.alert-info{background:color-mix(in srgb,var(--c-info) 9%,var(--c-surface));border-color:color-mix(in srgb,var(--c-info) 35%,transparent);color:var(--c-text)}
.alert-info .icon{color:var(--c-info)}
.flash-stack{position:fixed;top:1rem;right:1rem;z-index:900;display:flex;flex-direction:column;gap:.5rem;max-width:min(420px,calc(100vw - 2rem))}
.flash-stack .alert{box-shadow:0 10px 30px rgba(0,0,0,.15);margin:0;animation:flash-in .25s ease-out}
.flash-close{margin-left:auto;background:none;border:0;color:var(--c-text-muted);cursor:pointer;font-size:1.2rem;line-height:1;padding:0 .2rem}
@keyframes flash-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}

/* ---------- tabs ---------- */
.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--c-border);margin-bottom:1.25rem;overflow-x:auto;scrollbar-width:thin}
.tabs a,.tabs button{padding:.65rem 1rem;color:var(--c-text-muted);border:0;background:none;font:inherit;font-weight:560;font-size:.9rem;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;white-space:nowrap;text-decoration:none!important;display:inline-flex;gap:.4rem;align-items:center}
.tabs a:hover,.tabs button:hover{color:var(--c-text)}
.tabs .is-active{color:var(--c-primary);border-bottom-color:var(--c-primary)}

/* ---------- paginazione ---------- */
.pagination{display:flex;align-items:center;gap:.3rem;flex-wrap:wrap;margin-top:1rem}
.pg-btn{min-width:2.1rem;height:2.1rem;padding:0 .55rem;display:inline-grid;place-items:center;border-radius:var(--radius);border:1px solid var(--c-border);background:var(--c-surface);color:var(--c-text);font-size:.85rem;text-decoration:none!important}
.pg-btn:hover{background:var(--c-surface-2)}
.pg-btn.is-active{background:var(--c-primary);border-color:var(--c-primary);color:var(--c-primary-text);font-weight:650}
.pg-btn.is-disabled{opacity:.45}
.pg-gap{padding:0 .3rem;color:var(--c-text-muted)}
.pg-info{margin-left:auto;font-size:.82rem;color:var(--c-text-muted)}

/* ---------- empty state ---------- */
.empty{text-align:center;padding:2.75rem 1.5rem;color:var(--c-text-muted)}
.empty .icon{width:2.6rem;height:2.6rem;color:color-mix(in srgb,var(--c-primary) 70%,var(--c-text-muted));margin-bottom:.75rem}
.empty h3{color:var(--c-heading)}

/* ---------- modale ---------- */
dialog.modal{border:1px solid var(--c-border);border-radius:calc(var(--radius) + 6px);padding:0;background:var(--c-surface);color:var(--c-text);max-width:min(520px,calc(100vw - 2rem));width:100%;box-shadow:0 25px 60px rgba(0,0,0,.3)}
dialog.modal::backdrop{background:rgba(10,12,20,.55);backdrop-filter:blur(2px)}
.modal-body{padding:1.4rem}
.modal-footer{padding:1rem 1.4rem;border-top:1px solid var(--c-border);display:flex;justify-content:flex-end;gap:.5rem;background:var(--c-surface-2)}

/* ---------- avatar ---------- */
.avatar{width:2.25rem;height:2.25rem;border-radius:50%;object-fit:cover;display:inline-grid;place-items:center;background:linear-gradient(135deg,var(--c-primary),var(--c-accent));color:#fff;font-weight:700;font-size:.82rem;flex-shrink:0;overflow:hidden}
.avatar-lg{width:5.5rem;height:5.5rem;font-size:1.6rem}
.avatar-sm{width:1.8rem;height:1.8rem;font-size:.7rem}

/* ---------- progress ---------- */
.progress{height:.5rem;background:var(--c-surface-2);border-radius:99px;overflow:hidden;border:1px solid var(--c-border)}
.progress>span{display:block;height:100%;background:linear-gradient(90deg,var(--c-primary),var(--c-accent));border-radius:99px;transition:width .4s}

/* =====================================================================
   App shell (area utente / admin)
   ===================================================================== */
.app{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}
.sidebar{background:var(--c-sidebar-bg);color:var(--c-sidebar-text);position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.15) transparent}
.sidebar-brand{display:flex;align-items:center;gap:.65rem;padding:1.15rem 1.25rem;color:#fff;font-weight:700;font-size:1.02rem;text-decoration:none!important;border-bottom:1px solid rgba(255,255,255,.07)}
.sidebar-brand img{height:30px;width:auto}
.brand-mark{width:2rem;height:2rem;border-radius:9px;background:linear-gradient(135deg,var(--c-primary),var(--c-accent));display:grid;place-items:center;color:#fff;flex-shrink:0}
.brand-mark .icon{width:1.1rem;height:1.1rem}
.nav{padding:.75rem .7rem 1.5rem;flex:1}
.nav-section{font-size:.68rem;text-transform:uppercase;letter-spacing:.09em;font-weight:700;opacity:.55;padding:1.1rem .75rem .4rem}
.nav a{display:flex;align-items:center;gap:.7rem;padding:.52rem .75rem;border-radius:calc(var(--radius) - 2px);color:var(--c-sidebar-text);font-size:.88rem;font-weight:500;text-decoration:none!important;transition:background .15s,color .15s;margin-bottom:1px}
.nav a:hover{background:rgba(255,255,255,.07);color:#fff}
.nav a.is-active{background:var(--c-sidebar-active-bg);color:var(--c-sidebar-active-text);font-weight:600}
.nav a .icon{opacity:.9}
.nav details>summary{list-style:none;display:flex;align-items:center;gap:.7rem;padding:.52rem .75rem;border-radius:calc(var(--radius) - 2px);cursor:pointer;font-size:.88rem;font-weight:500}
.nav details>summary::-webkit-details-marker{display:none}
.nav details>summary:hover{background:rgba(255,255,255,.07);color:#fff}
.nav details>summary::after{content:"";margin-left:auto;width:.45rem;height:.45rem;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .2s;opacity:.6}
.nav details[open]>summary::after{transform:rotate(45deg)}
.nav details .sub{padding-left:1.15rem;margin:.15rem 0 .35rem;border-left:1px solid rgba(255,255,255,.1);margin-left:1.3rem}
.nav details .sub a{font-size:.84rem;padding:.42rem .7rem}
.sidebar-footer{padding:.9rem 1.25rem;font-size:.72rem;opacity:.6;border-top:1px solid rgba(255,255,255,.07)}

.main{display:flex;flex-direction:column;min-width:0}
.topbar{height:62px;background:var(--c-header-bg);border-bottom:1px solid var(--c-border);display:flex;align-items:center;gap:.75rem;padding:0 1.5rem;position:sticky;top:0;z-index:50}
.topbar .page-heading{font-weight:650;font-size:1.02rem;color:var(--c-heading);margin:0}
.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:.4rem}
.menu-toggle{display:none}
.user-menu{position:relative}
.user-menu>button{display:flex;align-items:center;gap:.55rem;background:none;border:1px solid transparent;border-radius:99px;padding:.2rem .6rem .2rem .2rem;cursor:pointer;color:var(--c-text);font:inherit;font-size:.88rem;font-weight:550}
.user-menu>button:hover{background:var(--c-surface-2)}
.dropdown{position:absolute;right:0;top:calc(100% + 6px);min-width:220px;background:var(--c-surface);border:1px solid var(--c-border);border-radius:calc(var(--radius) + 2px);box-shadow:0 14px 40px rgba(0,0,0,.16);padding:.4rem;z-index:100}
.dropdown a,.dropdown button{display:flex;width:100%;align-items:center;gap:.6rem;padding:.55rem .7rem;border-radius:calc(var(--radius) - 3px);color:var(--c-text);font:inherit;font-size:.88rem;background:none;border:0;cursor:pointer;text-decoration:none!important;text-align:left}
.dropdown a:hover,.dropdown button:hover{background:var(--c-surface-2)}
.dropdown .divider{height:1px;background:var(--c-border);margin:.35rem 0}
.dropdown .dd-head{padding:.5rem .7rem .6rem;border-bottom:1px solid var(--c-border);margin-bottom:.35rem}
.content{padding:1.75rem 1.5rem 3rem;max-width:1400px;width:100%;margin:0 auto}
.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.5rem}
.page-header h1{margin:0 0 .25rem}
.page-header p{margin:0;color:var(--c-text-muted)}
.breadcrumb{font-size:.82rem;color:var(--c-text-muted);margin-bottom:.35rem;display:flex;gap:.4rem;flex-wrap:wrap}
.breadcrumb a{color:var(--c-text-muted)}
.theme-switch{display:inline-flex;border:1px solid var(--c-border);border-radius:99px;padding:2px;background:var(--c-surface-2)}
.theme-switch button{border:0;background:none;color:var(--c-text-muted);padding:.32rem .45rem;border-radius:99px;cursor:pointer;display:grid;place-items:center}
.theme-switch button.is-active{background:var(--c-surface);color:var(--c-primary);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.sidebar-backdrop{display:none}
@media (max-width:980px){
  .app{grid-template-columns:1fr}
  .sidebar{position:fixed;left:0;top:0;bottom:0;width:272px;z-index:200;transform:translateX(-100%);transition:transform .25s ease}
  .app.nav-open .sidebar{transform:none;box-shadow:0 0 50px rgba(0,0,0,.4)}
  .app.nav-open .sidebar-backdrop{display:block;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:150}
  .menu-toggle{display:inline-flex}
  .content{padding:1.25rem 1rem 3rem}
  .topbar{padding:0 1rem}
  .user-menu .user-name{display:none}
}

/* =====================================================================
   Auth (login, registrazione...)
   ===================================================================== */
.auth-page{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr)}
.auth-side{background:linear-gradient(140deg,var(--c-hero-from),var(--c-hero-to));color:#fff;padding:3rem;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}
.auth-side::before{content:"";position:absolute;width:520px;height:520px;border-radius:50%;background:rgba(255,255,255,.08);right:-160px;bottom:-180px}
.auth-side::after{content:"";position:absolute;width:300px;height:300px;border-radius:50%;background:rgba(255,255,255,.06);left:-90px;top:-80px}
.auth-side>*{position:relative;z-index:1}
.auth-side h2{color:#fff;font-size:2rem;max-width:22ch}
.auth-side p{opacity:.88;max-width:44ch;font-size:1.02rem}
.auth-side .brand{display:flex;align-items:center;gap:.7rem;font-weight:700;font-size:1.1rem;color:#fff;text-decoration:none!important}
.auth-side .brand .brand-mark{background:rgba(255,255,255,.18)}
.auth-features{list-style:none;padding:0;margin:1.5rem 0 0;display:grid;gap:.8rem}
.auth-features li{display:flex;gap:.7rem;align-items:center;opacity:.95}
.auth-features .icon{background:rgba(255,255,255,.16);border-radius:8px;padding:.3rem;width:1.8rem;height:1.8rem}
.auth-main{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2.5rem 1.5rem;background:var(--c-bg)}
.auth-card{width:100%;max-width:420px}
.auth-card h1{font-size:1.6rem;margin-bottom:.35rem}
.auth-card .lead{color:var(--c-text-muted);margin-bottom:1.6rem}
.auth-links{display:flex;justify-content:space-between;gap:1rem;font-size:.86rem;margin-top:1.2rem;flex-wrap:wrap}
.auth-footer{margin-top:2rem;font-size:.78rem;color:var(--c-text-muted);text-align:center}
.auth-footer a{color:var(--c-text-muted)}
.auth-single{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem 1rem;flex-direction:column}
.auth-single .auth-card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:calc(var(--radius) + 6px);padding:2.2rem;max-width:480px;box-shadow:0 10px 40px rgba(16,24,40,.06)}
.otp-input{font-size:1.6rem!important;letter-spacing:.5em;text-align:center;font-family:ui-monospace,Menlo,monospace;padding:.7rem!important}
.method-picker{display:grid;gap:.5rem;margin-bottom:1.2rem}
.method-picker label{display:flex;align-items:center;gap:.75rem;padding:.75rem .9rem;border:1px solid var(--c-border);border-radius:var(--radius);cursor:pointer;font-weight:500;margin:0;background:var(--c-surface)}
.method-picker input{accent-color:var(--c-primary)}
.method-picker label:has(input:checked){border-color:var(--c-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--c-primary) 18%,transparent)}
@media (max-width:900px){.auth-page{grid-template-columns:1fr}.auth-side{display:none}}
.error-code{font-size:4.5rem;font-weight:800;line-height:1;background:linear-gradient(135deg,var(--c-primary),var(--c-accent));-webkit-background-clip:text;background-clip:text;color:transparent;margin-bottom:.5rem}

/* =====================================================================
   Sito pubblico
   ===================================================================== */
.site-header{position:sticky;top:0;z-index:60;background:color-mix(in srgb,var(--c-header-bg) 88%,transparent);backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid var(--c-border)}
.site-header .container{display:flex;align-items:center;gap:1rem;height:66px}
.container{max-width:1180px;margin:0 auto;padding:0 1.25rem}
.site-brand{display:flex;align-items:center;gap:.6rem;font-weight:750;color:var(--c-heading);font-size:1.05rem;text-decoration:none!important}
.site-brand img{height:32px;width:auto}
.site-nav{margin-left:auto;display:flex;gap:.4rem;align-items:center}
.site-nav a.link{color:var(--c-text);font-weight:520;font-size:.92rem;padding:.4rem .7rem;border-radius:8px}
.site-nav a.link:hover{background:var(--c-surface-2);text-decoration:none}
@media (max-width:700px){.site-nav a.link{display:none}}
.hero{position:relative;overflow:hidden;background:linear-gradient(135deg,var(--c-hero-from),var(--c-hero-to));color:#fff;padding:5.5rem 0 6rem}
.hero::after{content:"";position:absolute;inset:auto 0 -1px 0;height:80px;background:var(--c-bg);clip-path:ellipse(75% 100% at 50% 100%)}
.hero .container{display:grid;grid-template-columns:1.05fr .95fr;gap:3rem;align-items:center;position:relative;z-index:1}
.hero h1{color:#fff;font-size:clamp(2rem,4.2vw,3.1rem);line-height:1.1;letter-spacing:-.02em;margin-bottom:1rem}
.hero p.lead{font-size:1.15rem;opacity:.9;max-width:52ch;margin-bottom:1.8rem}
.hero .btn-light{--btn-bg:#fff;--btn-fg:var(--c-primary);--btn-bd:#fff}
.hero .btn-light:hover{background:rgba(255,255,255,.88)}
.hero .btn-outline-light{--btn-bg:transparent;--btn-fg:#fff;--btn-bd:rgba(255,255,255,.55)}
.hero .btn-outline-light:hover{background:rgba(255,255,255,.12)}
.hero-art{filter:drop-shadow(0 30px 50px rgba(0,0,0,.25))}
.hero-art img{width:100%;height:auto;border-radius:16px}
.hero-badges{display:flex;gap:1.2rem;flex-wrap:wrap;margin-top:2rem;font-size:.88rem;opacity:.9}
.hero-badges span{display:flex;align-items:center;gap:.4rem}
@media (max-width:900px){.hero .container{grid-template-columns:1fr}.hero{padding:3.5rem 0 4.5rem}}
.section{padding:4.5rem 0}
.section-alt{background:var(--c-surface-2)}
.section-head{text-align:center;max-width:680px;margin:0 auto 3rem}
.section-head .eyebrow{display:inline-block;font-size:.78rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--c-primary);margin-bottom:.6rem}
.section-head h2{font-size:clamp(1.6rem,3vw,2.2rem)}
.section-head p{color:var(--c-text-muted);font-size:1.05rem}
.feature{padding:1.6rem;height:100%;transition:transform .2s,box-shadow .2s}
.feature:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(16,24,40,.09)}
.feature .stat-icon{margin-bottom:1rem}
.feature h3{font-size:1.08rem}
.feature p{color:var(--c-text-muted);margin:0;font-size:.93rem}
.showcase{display:grid;grid-template-columns:1fr 1fr;gap:3.5rem;align-items:center;margin-bottom:4.5rem}
.showcase:last-child{margin-bottom:0}
.showcase.reverse .showcase-art{order:2}
.showcase-art img{width:100%;border-radius:14px;border:1px solid var(--c-border);box-shadow:0 20px 50px rgba(16,24,40,.12)}
.showcase ul{padding-left:0;list-style:none;display:grid;gap:.6rem}
.showcase li{display:flex;gap:.6rem;align-items:flex-start}
.showcase li .icon{color:var(--c-success);margin-top:.2rem}
@media (max-width:860px){.showcase{grid-template-columns:1fr;gap:1.5rem}.showcase.reverse .showcase-art{order:0}}
.steps{counter-reset:step;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.25rem}
.step{position:relative;padding:1.5rem 1.4rem 1.4rem}
.step::before{counter-increment:step;content:counter(step);width:2.2rem;height:2.2rem;border-radius:50%;background:var(--c-primary);color:var(--c-primary-text);display:grid;place-items:center;font-weight:700;margin-bottom:.9rem}
.cta{background:linear-gradient(135deg,var(--c-hero-from),var(--c-hero-to));color:#fff;border-radius:calc(var(--radius) + 10px);padding:3rem;text-align:center}
.cta h2{color:#fff}
.site-footer{background:var(--c-surface);border-top:1px solid var(--c-border);padding:3rem 0 2rem;font-size:.88rem;color:var(--c-text-muted)}
.site-footer .cols{display:grid;grid-template-columns:2fr 1fr 1fr;gap:2rem}
.site-footer h4{font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;color:var(--c-heading)}
.site-footer a{color:var(--c-text-muted)}
.site-footer ul{list-style:none;padding:0;margin:0;display:grid;gap:.45rem}
.site-footer .legal{margin-top:2rem;padding-top:1.25rem;border-top:1px solid var(--c-border);display:flex;gap:1rem;justify-content:space-between;flex-wrap:wrap;font-size:.8rem}
@media (max-width:760px){.site-footer .cols{grid-template-columns:1fr}}
.legal-page{max-width:860px;margin:0 auto;padding:3rem 1.25rem 4rem}
.legal-page h1{font-size:2rem}
.legal-page h2{margin-top:2rem;font-size:1.3rem}
.legal-page table{width:100%;border-collapse:collapse;margin:1rem 0;font-size:.88rem}
.legal-page th,.legal-page td{border:1px solid var(--c-border);padding:.5rem .7rem;text-align:left;vertical-align:top}
.legal-page th{background:var(--c-surface-2)}
.prose{max-width:75ch}
.prose ul,.prose ol{padding-left:1.4rem}
.prose li{margin-bottom:.3rem}
.app-footer{margin-top:auto;padding:1rem 1.5rem;border-top:1px solid var(--c-border);font-size:.78rem;color:var(--c-text-muted);display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.app-footer a{color:var(--c-text-muted)}

/* liste novità */
.news-item{padding:1rem 1.35rem;border-bottom:1px solid var(--c-border)}
.news-item:last-child{border-bottom:0}
.news-item h3{font-size:.98rem;margin-bottom:.25rem;display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.news-item .meta{font-size:.78rem;color:var(--c-text-muted);margin-bottom:.4rem}
.news-item .body{font-size:.9rem}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:.5rem 1.25rem;font-size:.9rem;margin:0}
.kv dt{color:var(--c-text-muted)}
.kv dd{margin:0;font-weight:520;word-break:break-word}

/* grafici SVG */
.chart{width:100%;height:auto;display:block}
.chart .grid-line{stroke:var(--c-border);stroke-width:1}
.chart .axis-label{fill:var(--c-text-muted);font-size:11px}
.chart .bar{fill:var(--c-primary)}
.chart .bar:hover{fill:var(--c-primary-hover)}
.chart .line{fill:none;stroke:var(--c-primary);stroke-width:2.5}
.chart .area{fill:color-mix(in srgb,var(--c-primary) 15%,transparent)}
.chart .line2{fill:none;stroke:var(--c-accent);stroke-width:2;stroke-dasharray:5 4}
.hbar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.2rem .75rem;align-items:center;font-size:.85rem;margin-bottom:.55rem}
.hbar .track{grid-column:1/-1;height:.45rem;background:var(--c-surface-2);border-radius:99px;overflow:hidden}
.hbar .fill{height:100%;background:var(--c-primary);border-radius:99px}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
@media print{.sidebar,.topbar,.a11y-launcher,.cookiebar,.holiday-layer{display:none!important}.app{display:block}}
.layout-main-side{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start}
.layout-side-main{grid-template-columns:minmax(220px,280px) minmax(0,1fr);align-items:start}
@media (max-width:1000px){.layout-main-side,.layout-side-main{grid-template-columns:1fr}}
.grid>.card,.grid>*+*{margin-top:0}
