/* INTERSCAMBIO — CSS di layout dell'area riservata.
 * Il tema originale (theme.css) fornisce i token e i componenti pubblici;
 * qui completiamo il layout della sidebar (nel originale fornito da AdminLTE 4.9.1)
 * e i componenti specifici delle pagine di scambio. */

:root { --is-font-scale: 1; }
body { font-family: 'Titillium Web', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; font-size: calc(1.0625rem * var(--is-font-scale)); background: var(--paper); color: var(--ink); margin: 0; line-height: 1.65; }

/* ---------- Layout app (sidebar + topbar) ---------- */
.app-wrapper { min-height: 100vh; }
.app-sidebar { position: fixed; top: 0; bottom: 0; left: 0; width: 250px; overflow-y: auto; background: var(--is-sidebar-bg); color: var(--is-sidebar-color); z-index: 1040; }
.sidebar-brand { display: flex; align-items: center; gap: .5rem; padding: 1rem; border-bottom: 1px solid var(--is-sidebar-border); }
.brand-link { color: var(--is-sidebar-color) !important; text-decoration: none; font-weight: 700; display: inline-flex; align-items: center; gap: .5rem; }
.brand-link:hover, .brand-link:focus-visible { color: var(--is-sidebar-color-hover) !important; }
.brand-image { height: 28px; width: auto; }
.sidebar-menu { padding: .5rem 0 2.5rem; }
.sidebar-menu .nav-header { padding: 1.1rem 1rem .35rem; font-size: .72rem; font-weight: 700; letter-spacing: .05em; opacity: .65; text-transform: uppercase; }
.sidebar-link { display: flex; align-items: center; gap: .6rem; padding: .55rem 1rem; color: var(--is-sidebar-color); text-decoration: none; font-size: .95rem; font-weight: 500; }
.sidebar-link i { font-size: 1.05rem; width: 1.25rem; text-align: center; }
.sidebar-link:hover, .sidebar-link:focus-visible { background: var(--is-sidebar-hover-bg); color: var(--is-sidebar-color-hover); }
.sidebar-link.is-active { background: var(--is-sidebar-active-bg); color: var(--is-sidebar-active-color); font-weight: 700; }
.app-content { margin-left: 250px; display: flex; flex-direction: column; min-height: 100vh; }
.app-header { background: var(--bs-body-bg); border-bottom: 1px solid var(--bs-border-color); display: flex; align-items: center; }
.app-header .nav-link { color: var(--bs-body-color); }
.app-main { flex: 1; width: 100%; max-width: 1160px; margin: 0 auto; }
.app-footer { margin-top: auto; background: var(--bs-body-bg); border-top: 1px solid var(--bs-border-color); padding: .6rem 1rem; font-size: .85rem; display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; justify-content: center; }
.app-footer a { color: var(--bs-secondary-color); text-decoration: none; }
.app-footer a:hover { color: var(--accent); }
.app-footer .share-widget { margin-top: 0; }
@media (max-width: 991.98px) {
  .app-sidebar { transform: translateX(-100%); transition: transform .2s ease; }
  .app-wrapper.nav-open .app-sidebar { transform: none; box-shadow: 0 0 40px rgba(0,0,0,.4); }
  .app-content { margin-left: 0; }
  .app-wrapper.nav-open::after { content: ""; position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 1035; }
}

/* ---------- Card statistiche (dashboard) ---------- */
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; }
.stat-box { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 1rem; text-align: center; }
.stat-box .num { font-size: 1.9rem; font-weight: 800; color: var(--accent); line-height: 1.1; }
.stat-box .lbl { font-size: .85rem; color: var(--muted); }

/* ---------- Proposte ---------- */
.proposta-group { margin-bottom: 2rem; }
.proposta-group-title { font-weight: 800; color: var(--ink); display: flex; align-items: center; gap: .5rem; margin-bottom: .75rem; }
.proposta-card { background: var(--surface); border: 1px solid var(--line); border-radius: 14px; padding: 1.25rem; margin-bottom: 1rem; }
.proposta-card[data-status="confermata"] { border-left: 4px solid var(--bs-success); }
.proposta-card[data-status="in_attesa"] { border-left: 4px solid var(--is-map-proposed); }
.proposta-card[data-status="rifiutata"], .proposta-card[data-status="scaduta"] { border-left: 4px solid var(--bs-danger); opacity: .85; }
.proposta-card[data-status="completata"] { border-left: 4px solid var(--bs-success); background: var(--surface-2); }
.proposta-head { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.proposta-steps { display: flex; gap: .35rem; flex-wrap: wrap; margin: .9rem 0 .4rem; }
.proposta-step { flex: 1 1 110px; text-align: center; font-size: .78rem; padding: .5rem .3rem; border-radius: 8px; background: var(--surface-2); color: var(--muted); border: 1px solid var(--line); }
.proposta-step small { display: block; font-size: 1.1rem; font-weight: 800; }
.proposta-step.done { background: var(--bs-success); color: #fff; border-color: transparent; }
.proposta-step.current { background: var(--accent); color: var(--accent-ink); border-color: transparent; font-weight: 700; }
.chain-view { background: var(--surface-2); border: 1px dashed var(--line); border-radius: 10px; padding: .75rem 1rem; font-size: .95rem; margin: .5rem 0; }
.chain-view .bi-arrow-right { color: var(--accent); margin: 0 .25rem; }
.proposta-note { font-size: .85rem; color: var(--muted); }

/* ---------- Sedi desiderate (swap-request) ---------- */
.sede-item { display: flex; align-items: center; gap: .75rem; background: var(--surface); border: 1px solid var(--line); border-radius: 10px; padding: .6rem .9rem; margin-bottom: .5rem; }
.sede-item .bi { color: var(--accent); font-size: 1.15rem; }

/* ---------- Mappa ---------- */
#mappaContainer { height: 540px; border-radius: 12px; border: 1px solid var(--line); }
.mappa-filters .nav-link { color: var(--bs-body-color); border: 1px solid var(--line); border-radius: 999px; margin-right: .4rem; }
.mappa-filters .nav-link.active { background: var(--accent); color: var(--accent-ink); border-color: transparent; }

/* ---------- Messaggi / conversazioni ---------- */
.conv-item { display: flex; gap: .75rem; padding: .9rem 1rem; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); margin-bottom: .6rem; }
.msg-bubble { max-width: 78%; padding: .6rem .9rem; border-radius: 12px; background: var(--surface-2); border: 1px solid var(--line); }
.msg-bubble.mine { background: var(--accent); color: var(--accent-ink); border-color: transparent; margin-left: auto; }

/* ---------- Admin ---------- */
.admin-page h1 { font-size: 1.5rem; }
.table th { font-size: .8rem; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); }
.badge-ruolo { font-size: .7rem; }
.btn-xs { padding: .15rem .45rem; font-size: .78rem; border-radius: 6px; }

/* ---------- Auth pages ---------- */
.auth-page main { max-width: 640px; }
.auth-page .container-narrow { max-width: 640px; }

/* ---------- Utenti (badge comparto) ---------- */
.badge-comparto { font-size: .68rem; letter-spacing: .03em; }

/* ---------- Documento interscambio ---------- */
.doc-preview { background: var(--surface); border: 1px solid var(--line); border-radius: 10px; padding: 1.5rem; }
.doc-preview h1 { font-size: 1.35rem; }