*,
*::before,
*::after { box-sizing: border-box; }

:root {
    --sp-topbar: #141414;
    --sp-topbar-text: #ffffff;
    --sp-bg: #faf9f8;
    --sp-sidebar: #f3f2f1;
    --sp-surface: #ffffff;
    --sp-border: #edebe9;
    --sp-border-strong: #d2d0ce;
    --sp-text: #323130;
    --sp-text-secondary: #605e5c;
    --sp-text-muted: #8a8886;
    --sp-primary: #0078d4;
    --sp-primary-hover: #106ebe;
    --sp-success: #107c10;
    --sp-error: #d13438;
    --sp-shadow: 0 1.6px 3.6px rgba(0,0,0,.13), 0 0.3px 0.9px rgba(0,0,0,.11);
    --sp-shadow-hover: 0 6.4px 14.4px rgba(0,0,0,.13), 0 1.2px 3.6px rgba(0,0,0,.11);
    --radius: 2px;
    --font: 'Segoe UI', -apple-system, BlinkMacSystemFont, sans-serif;
}

body {
    margin: 0;
    font-family: var(--font);
    background: var(--sp-bg);
    color: var(--sp-text);
    line-height: 1.5;
    min-height: 100vh;
    font-size: 14px;
}

a { color: var(--sp-primary); text-decoration: none; }
a:hover { text-decoration: underline; color: var(--sp-primary-hover); }

/* ─── Topbar SharePoint ─── */
.sp-topbar {
    display: flex;
    align-items: center;
    height: 48px;
    padding: 0 16px;
    background: var(--sp-topbar);
    color: var(--sp-topbar-text);
    position: sticky;
    top: 0;
    z-index: 200;
    gap: 16px;
}

.topbar-brand { flex-shrink: 0; }
.brand-link {
    display: flex;
    align-items: baseline;
    gap: 6px;
    color: #fff !important;
    text-decoration: none !important;
    font-weight: 600;
}
.brand-suite { font-size: 15px; opacity: 0.9; }
.brand-product { font-size: 15px; font-weight: 400; opacity: 0.85; }

.topbar-center { flex: 1; max-width: 480px; }
.sp-search-global {
    display: flex;
    align-items: center;
    background: rgba(255,255,255,0.12);
    border-radius: 4px;
    padding: 0 10px;
    height: 32px;
}
.sp-search-global:focus-within { background: #fff; }
.sp-search-global:focus-within input { color: var(--sp-text); }
.sp-search-icon { font-size: 12px; opacity: 0.8; margin-right: 8px; }
.sp-search-global input {
    flex: 1;
    border: none;
    background: transparent;
    color: #fff;
    font-size: 14px;
    outline: none;
    font-family: var(--font);
}
.sp-search-global input::placeholder { color: rgba(255,255,255,0.7); }
.sp-search-global:focus-within input::placeholder { color: var(--sp-text-muted); }

.topbar-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-left: auto;
    flex-shrink: 0;
}

.topbar-nav {
    display: flex;
    align-items: center;
    gap: 2px;
    flex-shrink: 0;
}
.topbar-nav-link {
    display: inline-flex;
    align-items: center;
    height: 32px;
    padding: 0 12px;
    border-radius: 4px;
    color: rgba(255,255,255,0.92) !important;
    text-decoration: none !important;
    font-size: 13px;
    font-weight: 500;
    white-space: nowrap;
}
.topbar-nav-link:hover,
.topbar-nav-link.active {
    background: rgba(255,255,255,0.14);
    text-decoration: none !important;
}
.topbar-logout { opacity: 0.85; font-size: 12px; }

.nav-dropdown { position: relative; }
.nav-dropdown > summary {
    list-style: none;
    cursor: pointer;
}
.nav-dropdown > summary::-webkit-details-marker { display: none; }
.nav-dropdown-menu {
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 180px;
    background: #fff;
    border: 1px solid var(--sp-border);
    box-shadow: var(--sp-shadow-hover);
    border-radius: 4px;
    padding: 6px 0;
    z-index: 300;
}
.nav-dropdown-menu a {
    display: block;
    padding: 8px 14px;
    color: var(--sp-text) !important;
    font-size: 13px;
}
.nav-dropdown-menu a:hover {
    background: var(--sp-sidebar);
    text-decoration: none !important;
}

.sub-backbar {
    background: var(--sp-surface);
    border-bottom: 1px solid var(--sp-border);
    padding: 8px 20px;
    font-size: 13px;
}
.sub-backbar a { color: var(--sp-primary); }

.topbar-icon-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 4px;
    color: #fff !important;
    text-decoration: none !important;
    font-size: 16px;
    opacity: 0.9;
}
.topbar-icon-btn:hover { background: rgba(255,255,255,0.1); opacity: 1; }

.topbar-user {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 8px;
    border-radius: 4px;
    color: #fff !important;
    text-decoration: none !important;
    margin-left: 4px;
}
.topbar-user:hover { background: rgba(255,255,255,0.1); text-decoration: none !important; }
.user-avatar {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #0078d4;
    color: #fff;
    font-size: 11px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
}
.topbar-user .user-name {
    font-size: 13px;
    color: #fff;
    max-width: 120px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ─── App shell ─── */
.app-shell { display: flex; min-height: calc(100vh - 48px); }

.sp-sidebar {
    width: 260px;
    flex-shrink: 0;
    background: var(--sp-sidebar);
    border-right: 1px solid var(--sp-border);
    padding: 12px 0;
    overflow-y: auto;
}

.sp-sidebar-search {
    padding: 0 12px 12px;
}
.sp-sidebar-search input {
    width: 100%;
    padding: 6px 10px;
    border: 1px solid var(--sp-border-strong);
    border-radius: 4px;
    font-size: 13px;
    background: #fff;
    font-family: var(--font);
}

.sp-nav-section { margin-bottom: 8px; }
.sp-nav-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 16px 4px;
    font-size: 12px;
    font-weight: 600;
    color: var(--sp-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.02em;
}
.sp-nav-header a {
    font-size: 12px;
    font-weight: 400;
    text-transform: none;
    color: var(--sp-primary);
}

.sp-nav-list { list-style: none; margin: 0; padding: 0; }
.sp-nav-list li a {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 16px;
    color: var(--sp-text);
    text-decoration: none;
    font-size: 13px;
}
.sp-nav-list li a:hover { background: rgba(0,0,0,0.05); text-decoration: none; }
.sp-nav-list li.active a { background: rgba(0,120,212,0.1); font-weight: 600; }
.sp-nav-star { margin-left: auto; opacity: 0.35; font-size: 12px; }
.sp-nav-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}

.sp-main {
    flex: 1;
    padding: 24px 32px;
    overflow-x: hidden;
}

/* ─── Page header ─── */
.sp-page-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
    flex-wrap: wrap;
    gap: 12px;
}
.sp-page-header h1 {
    margin: 0;
    font-size: 28px;
    font-weight: 600;
    color: var(--sp-text);
}
.sp-breadcrumb {
    font-size: 13px;
    color: var(--sp-text-secondary);
    margin-bottom: 8px;
}
.sp-breadcrumb a { color: var(--sp-text-secondary); }
.sp-breadcrumb .sep { margin: 0 6px; color: var(--sp-text-muted); }

/* ─── Site cards (SharePoint grid) ─── */
.section-title {
    font-size: 20px;
    font-weight: 600;
    margin: 0 0 16px;
    color: var(--sp-text);
}

.site-grid,
#folder-grid,
.folder-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 16px;
    margin-bottom: 32px;
}

.site-card,
.folder-card {
    background: var(--sp-surface);
    border: 1px solid var(--sp-border);
    box-shadow: var(--sp-shadow);
    transition: box-shadow 0.15s;
    position: relative;
}
.site-card:hover,
.folder-card:hover { box-shadow: var(--sp-shadow-hover); }
.site-card.drag-over,
.folder-card.drag-over { outline: 2px dashed var(--sp-primary); }

.site-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 52px;
    padding: 0 14px;
    color: #fff;
}
.site-card-icon { font-size: 20px; }
.site-card-star { opacity: 0.85; font-size: 14px; cursor: default; }

.site-card-body { padding: 14px 16px 16px; }
.site-card-title {
    display: block;
    font-size: 17px;
    font-weight: 600;
    color: var(--sp-text) !important;
    text-decoration: none !important;
    margin-bottom: 12px;
}
.site-card-title:hover { color: var(--sp-primary) !important; text-decoration: none !important; }

.site-activity { list-style: none; margin: 0; padding: 0; }
.site-activity li {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 6px 0;
    font-size: 12px;
    color: var(--sp-text-secondary);
    border-top: 1px solid var(--sp-border);
}
.site-activity li:first-child { border-top: none; padding-top: 0; }
.site-activity a {
    color: var(--sp-text-secondary);
    text-decoration: none;
    line-height: 1.4;
}
.site-activity a:hover { color: var(--sp-primary); }
.activity-avatar {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #c8c6c4;
    color: #fff;
    font-size: 9px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    margin-top: 1px;
}
.activity-empty {
    font-size: 12px;
    color: var(--sp-text-muted);
    font-style: italic;
}

.site-card-actions {
    position: absolute;
    top: 56px;
    right: 8px;
    display: flex;
    gap: 2px;
    opacity: 0;
    transition: opacity 0.15s;
}
.site-card:hover .site-card-actions { opacity: 1; }

/* ─── Buttons ─── */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 6px 16px;
    border: 1px solid transparent;
    border-radius: 2px;
    font-size: 14px;
    font-weight: 600;
    font-family: var(--font);
    cursor: pointer;
    text-decoration: none !important;
    transition: background 0.1s;
    line-height: 1.4;
}
.btn-primary { background: var(--sp-primary); color: #fff !important; border-color: var(--sp-primary); }
.btn-primary:hover { background: var(--sp-primary-hover); }
.btn-secondary { background: #fff; color: var(--sp-text); border-color: var(--sp-border-strong); }
.btn-secondary:hover { background: var(--sp-sidebar); }
.btn-ghost { background: transparent; color: var(--sp-text); border-color: var(--sp-border-strong); }
.btn-ghost:hover { background: var(--sp-sidebar); }
.btn-sm { padding: 4px 12px; font-size: 12px; font-weight: 600; }
.btn-block { width: 100%; }
.btn-danger { color: var(--sp-error) !important; border-color: var(--sp-error) !important; }
.btn-primary.btn-danger { background: var(--sp-error); color: #fff !important; }

.btn-icon {
    background: #fff;
    border: 1px solid var(--sp-border);
    border-radius: 2px;
    padding: 2px 6px;
    cursor: pointer;
    font-size: 12px;
    box-shadow: var(--sp-shadow);
}

/* ─── Documents table ─── */
.doc-panel {
    background: var(--sp-surface);
    border: 1px solid var(--sp-border);
    box-shadow: var(--sp-shadow);
}
.doc-panel-header {
    padding: 12px 16px;
    border-bottom: 1px solid var(--sp-border);
    font-size: 16px;
    font-weight: 600;
}
.document-list table { width: 100%; border-collapse: collapse; }
.document-list th,
.document-list td {
    padding: 10px 16px;
    text-align: left;
    border-bottom: 1px solid var(--sp-border);
    font-size: 13px;
}
.document-list th {
    background: var(--sp-sidebar);
    color: var(--sp-text-secondary);
    font-weight: 600;
    font-size: 12px;
}
.document-list tr:hover td { background: #faf9f8; }
.document-list tr.drag-over td { background: rgba(0,120,212,0.06); }

.doc-title-link { color: var(--sp-text); font-weight: 600; text-decoration: none; }
.doc-title-link:hover { color: var(--sp-primary); }
.revision { font-size: 11px; color: var(--sp-text-muted); margin-left: 6px; }
.actions-cell { white-space: nowrap; }
.actions-cell .btn { margin-right: 4px; }

/* ─── Tags ─── */
.tag {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    border-radius: 2px;
    font-size: 11px;
    color: #fff;
    font-weight: 600;
}
.tag-sm { font-size: 10px; padding: 1px 6px; }
.tag-remove {
    background: none; border: none; color: rgba(255,255,255,0.85);
    cursor: pointer; padding: 0; font-size: 14px; line-height: 1;
}

.badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 2px;
    font-size: 11px;
    color: #fff;
    font-weight: 600;
}

/* ─── Drop zone ─── */
.drop-zone {
    min-height: 120px;
    border: 2px dashed transparent;
    transition: border-color 0.2s, background 0.2s;
}
.drop-zone.drag-active {
    border-color: var(--sp-primary);
    background: rgba(0,120,212,0.04);
}

/* ─── Forms ─── */
.form-group { margin-bottom: 16px; }
.form-group label {
    display: block;
    margin-bottom: 4px;
    font-size: 13px;
    font-weight: 600;
    color: var(--sp-text);
}
.form-group input,
.form-group select,
.form-group textarea {
    width: 100%;
    padding: 6px 10px;
    border: 1px solid var(--sp-border-strong);
    border-radius: 2px;
    background: #fff;
    color: var(--sp-text);
    font-size: 14px;
    font-family: var(--font);
}
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
    outline: 2px solid var(--sp-primary);
    outline-offset: -1px;
}

.search-form { display: flex; gap: 8px; }
.search-form input {
    padding: 6px 10px;
    border: 1px solid var(--sp-border-strong);
    border-radius: 2px;
    background: #fff;
    min-width: 220px;
    font-family: var(--font);
}
.search-form.large input { flex: 1; min-width: 0; }

.inline-form { display: inline; margin: 0; padding: 0; }

/* ─── Alerts ─── */
.alert {
    padding: 10px 14px;
    border-radius: 2px;
    margin-bottom: 16px;
    font-size: 13px;
    border-left: 4px solid;
}
.alert-success { background: #dff6dd; border-color: var(--sp-success); color: #0b6a0b; }
.alert-error { background: #fde7e9; border-color: var(--sp-error); color: #a4262c; }

.empty-state {
    color: var(--sp-text-muted);
    text-align: center;
    padding: 48px 24px;
    background: var(--sp-surface);
    border: 1px dashed var(--sp-border-strong);
}
.muted { color: var(--sp-text-muted); font-size: 13px; }
.results-count { color: var(--sp-text-secondary); font-size: 13px; }

/* ─── Modal ─── */
.modal[hidden] { display: none; }
.modal {
    position: fixed; inset: 0; z-index: 300;
    display: flex; align-items: center; justify-content: center;
}
.modal-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,0.4); }
.modal-content {
    position: relative;
    background: #fff;
    padding: 24px;
    width: 100%;
    max-width: 440px;
    box-shadow: var(--sp-shadow-hover);
    border: 1px solid var(--sp-border);
}
.modal-content h2 { margin: 0 0 16px; font-size: 20px; font-weight: 600; }
.modal-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; }
.modal-content.modal-lg { max-width: 640px; }

/* ─── Auth ─── */
.page-auth {
    margin: 0;
    min-height: 100vh;
    background: var(--sp-bg);
}
.auth-layout {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: 32px 20px;
    box-sizing: border-box;
}
.auth-card {
    background: #fff;
    padding: 40px;
    width: 100%;
    max-width: 400px;
    box-shadow: var(--sp-shadow-hover);
    border: 1px solid var(--sp-border);
    border-radius: 4px;
}
.auth-header { text-align: center; margin-bottom: 28px; }
.auth-header .logo { font-size: 26px; font-weight: 600; color: var(--sp-text); }
.auth-header p { color: var(--sp-text-secondary); margin: 8px 0 0; font-size: 14px; }

.auth-demo {
    width: 100%;
    max-width: 400px;
    margin-top: 16px;
    padding: 16px 20px;
    background: #fff;
    border: 1px dashed var(--sp-border-strong);
    border-radius: 4px;
    text-align: center;
}
.auth-demo-title {
    margin: 0 0 10px;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--sp-text-secondary);
}
.auth-demo-creds {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 4px 12px;
    margin: 0 0 12px;
    text-align: left;
    font-size: 13px;
}
.auth-demo-creds dt { color: var(--sp-text-secondary); margin: 0; }
.auth-demo-creds dd { margin: 0; }
.auth-demo-creds code {
    font-family: Consolas, monospace;
    font-size: 12px;
    background: var(--sp-sidebar);
    padding: 2px 6px;
    border-radius: 3px;
    word-break: break-all;
}

/* ─── Document detail page ─── */
.main-content.standalone { max-width: 1100px; margin: 0 auto; padding: 24px 32px; }
.doc-page { max-width: 1200px; }
.doc-header {
    display: flex; justify-content: space-between; align-items: flex-start;
    gap: 16px; margin-bottom: 20px; flex-wrap: wrap;
}
.doc-header h1 { margin: 0 0 6px; font-size: 24px; font-weight: 600; }
.doc-meta { color: var(--sp-text-secondary); font-size: 13px; margin: 0; }
.doc-actions { display: flex; gap: 6px; flex-wrap: wrap; }

.doc-layout {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 20px;
    align-items: start;
}
.doc-preview-panel {
    background: #fff;
    border: 1px solid var(--sp-border);
    box-shadow: var(--sp-shadow);
    padding: 16px;
    min-height: 500px;
}
.doc-preview-panel h2 { margin: 0 0 12px; font-size: 14px; font-weight: 600; color: var(--sp-text-secondary); }
.preview-frame { width: 100%; height: 70vh; min-height: 400px; border: none; background: #f3f2f1; }
.preview-image { max-width: 100%; max-height: 70vh; display: block; margin: 0 auto; }
.preview-unavailable { text-align: center; padding: 48px; color: var(--sp-text-muted); }

.doc-sidebar .panel {
    background: #fff;
    border: 1px solid var(--sp-border);
    box-shadow: var(--sp-shadow);
    padding: 14px;
    margin-bottom: 12px;
}
.doc-sidebar .panel h3 {
    margin: 0 0 10px;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    color: var(--sp-text-secondary);
    letter-spacing: 0.03em;
}

.revision-list { list-style: none; padding: 0; margin: 0; }
.revision-list li { margin-bottom: 4px; }
.revision-list li a {
    display: block; padding: 6px 10px; border-radius: 2px;
    color: var(--sp-text); text-decoration: none; font-size: 13px;
    border: 1px solid transparent;
}
.revision-list li.active a,
.revision-list li a:hover { background: rgba(0,120,212,0.08); border-color: var(--sp-border); }
.revision-list .rev-by { display: block; color: var(--sp-text-muted); font-size: 11px; }

.tag-list { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }

.link-list { list-style: none; padding: 0; margin: 0 0 12px; }
.link-list li {
    display: flex; align-items: center; justify-content: space-between;
    gap: 8px; padding: 6px 0; border-bottom: 1px solid var(--sp-border); font-size: 13px;
}
.link-list a { color: var(--sp-text); text-decoration: none; flex: 1; }
.link-list small { display: block; color: var(--sp-text-muted); font-size: 11px; }

.chain-list { list-style: none; padding: 0; margin: 0; font-size: 12px; }
.chain-list li { padding: 4px 0; border-bottom: 1px solid var(--sp-border); }
.chain-action { color: var(--sp-primary); font-weight: 600; }
.chain-date, .chain-user { color: var(--sp-text-muted); margin-left: 6px; }

.search-results {
    background: #fff; border: 1px solid var(--sp-border);
    margin-top: 4px; max-height: 180px; overflow-y: auto;
    box-shadow: var(--sp-shadow);
}
.search-result-item {
    display: block; width: 100%; text-align: left;
    padding: 8px 12px; background: none; border: none;
    border-bottom: 1px solid var(--sp-border);
    color: var(--sp-text); cursor: pointer; font-size: 13px;
}
.search-result-item:hover { background: var(--sp-sidebar); }

/* ─── Merge bar ─── */
.merge-bar {
    display: flex; align-items: center; justify-content: space-between;
    gap: 12px; padding: 10px 16px; margin-bottom: 16px;
    background: #fff; border: 1px solid var(--sp-border); box-shadow: var(--sp-shadow);
    flex-wrap: wrap;
}
.merge-bar-left { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; flex: 1; }
.merge-title-input {
    padding: 4px 8px; border: 1px solid var(--sp-border-strong);
    border-radius: 2px; background: #fff; min-width: 200px; font-family: var(--font);
}
.merge-hint { margin-bottom: 12px; font-size: 13px; }
.col-check { width: 36px; text-align: center; }

/* ─── Admin ─── */
.admin-page { max-width: 1100px; }
.admin-grid { display: grid; grid-template-columns: 1fr 380px; gap: 20px; align-items: start; }
.admin-table { width: 100%; border-collapse: collapse; font-size: 13px; background: #fff; }
.admin-table th, .admin-table td {
    padding: 10px 14px; border-bottom: 1px solid var(--sp-border); text-align: left;
}
.admin-table th { background: var(--sp-sidebar); color: var(--sp-text-secondary); font-size: 12px; font-weight: 600; }
.admin-table tr.inactive { opacity: 0.5; }
.info-list { display: grid; grid-template-columns: 120px 1fr; gap: 6px 12px; margin: 0; font-size: 13px; }
.info-list dt { color: var(--sp-text-secondary); font-weight: 600; }
.info-list.compact { grid-template-columns: 90px 1fr; }
.hash-cell { font-family: Consolas, monospace; font-size: 11px; }
.badge-ok { color: var(--sp-success); font-weight: 600; }
.badge-warn { color: #ca5010; font-weight: 600; }
.checkbox-label { display: flex; align-items: center; gap: 8px; cursor: pointer; }
.integration-imap { margin-top: 20px; }
.form-row { display: flex; gap: 12px; flex-wrap: wrap; align-items: flex-end; }
.form-row .flex-grow { flex: 1; min-width: 200px; }
.crm-search-form { margin-bottom: 20px; }
.preservation-form { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--sp-border); }
p.small { font-size: 12px; }
.search-snippet { color: var(--sp-text-secondary); max-width: 280px; }
.search-snippet small { font-size: 12px; line-height: 1.4; }

.panel {
    background: #fff;
    border: 1px solid var(--sp-border);
    box-shadow: var(--sp-shadow);
    padding: 16px;
    margin-bottom: 16px;
}
.panel h2 { margin: 0 0 12px; font-size: 16px; font-weight: 600; }

/* Legacy aliases — sovrascrivono il vecchio tema scuro se ancora in cache */
.layout { display: flex; min-height: calc(100vh - 48px); background: var(--sp-bg); }
.main-content { flex: 1; background: var(--sp-bg); color: var(--sp-text); }
.topbar:not(.sp-topbar) { background: #141414; color: #fff; border: none; }
.sidebar:not(.sp-sidebar) { background: var(--sp-sidebar); border-right: 1px solid var(--sp-border); }
.toolbar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; flex-wrap: wrap; gap: 12px; }
.toolbar h1 { margin: 0; font-size: 24px; font-weight: 600; color: var(--sp-text); }
.toolbar-actions { display: flex; gap: 8px; }
.breadcrumbs { font-size: 13px; color: var(--sp-text-secondary); margin-bottom: 8px; }
.breadcrumbs .sep { margin: 0 6px; }
.breadcrumbs a { color: var(--sp-text-secondary); }
.logo-small { font-weight: 600; color: var(--sp-text); text-decoration: none; }
.user-name { color: var(--sp-text-secondary); font-size: 13px; }
.sp-topbar .user-name { color: #fff; }

@media (max-width: 900px) {
    .admin-grid, .doc-layout { grid-template-columns: 1fr; }
    .site-grid { grid-template-columns: 1fr; }
}

@media (max-width: 768px) {
    .app-shell, .layout { flex-direction: column; }
    .sp-sidebar, .sidebar { width: 100%; border-right: none; border-bottom: 1px solid var(--sp-border); }
    .sp-main { padding: 16px; }
    .topbar-user .user-name { display: none; }
    .topbar-center { display: none; }
}

.deadline-list { list-style: none; margin: 0; padding: 0; }
.deadline-list li { padding: 8px 0; border-bottom: 1px solid var(--sp-border); font-size: 13px; }
.deadline-list li:last-child { border-bottom: none; }
.deadline-urgent { color: #d13438; }
.deadlines-widget { margin-bottom: 20px; }
.code-block {
    background: #f3f2f1;
    border: 1px solid var(--sp-border);
    border-radius: 4px;
    padding: 12px;
    font-size: 12px;
    overflow-x: auto;
    white-space: pre-wrap;
}

.quick-access {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 12px;
    margin-bottom: 20px;
}
.quick-tile {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 16px;
    background: var(--sp-surface);
    border: 1px solid var(--sp-border);
    border-left: 4px solid var(--tile-color, var(--sp-primary));
    border-radius: 4px;
    text-decoration: none !important;
    color: var(--sp-text) !important;
    box-shadow: var(--sp-shadow);
}
.quick-tile:hover { box-shadow: var(--sp-shadow-hover); }
.quick-tile-icon { font-size: 22px; }
.quick-tile-label { font-weight: 600; font-size: 15px; }
.quick-tile-hint { font-size: 12px; color: var(--sp-text-secondary); }

.info-banner {
    background: #e8f4fd;
    border: 1px solid #b3d9f2;
    border-radius: 4px;
    padding: 12px 16px;
    margin-bottom: 16px;
    font-size: 13px;
}

.email-inbox { display: flex; flex-direction: column; gap: 8px; margin-top: 8px; }
.email-inbox-item {
    display: block;
    padding: 14px 16px;
    background: var(--sp-surface);
    border: 1px solid var(--sp-border);
    border-radius: 4px;
    text-decoration: none !important;
    color: inherit !important;
}
.email-inbox-item:hover { border-color: var(--sp-primary); box-shadow: var(--sp-shadow); }
.email-inbox-top { display: flex; justify-content: space-between; gap: 12px; font-size: 13px; }
.email-inbox-subject { margin-top: 6px; font-size: 14px; font-weight: 600; }
.email-inbox-preview { margin: 6px 0 0; font-size: 12px; }

.email-viewer {
    background: var(--sp-surface);
    border: 1px solid var(--sp-border);
    border-radius: 4px;
    overflow: hidden;
}
.email-viewer-header { padding: 16px; border-bottom: 1px solid var(--sp-border); background: #faf9f8; }
.email-viewer-row { display: flex; gap: 10px; align-items: baseline; margin-bottom: 8px; font-size: 13px; }
.email-viewer-row:last-child { margin-bottom: 0; }
.email-label { width: 56px; color: var(--sp-text-secondary); flex-shrink: 0; }
.email-viewer-body { padding: 16px; font-size: 14px; line-height: 1.6; white-space: pre-wrap; }

.ocr-panel {
    margin-top: 16px;
    padding: 16px;
    background: #fff8e6;
    border: 1px solid #f2d189;
    border-radius: 4px;
}
.ocr-panel h3 { margin: 0 0 8px; font-size: 14px; }
.ocr-text-block {
    background: #fff;
    border: 1px solid var(--sp-border);
    padding: 12px;
    border-radius: 4px;
    font-size: 13px;
    line-height: 1.5;
    max-height: 240px;
    overflow-y: auto;
}

.doc-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
}
.doc-badge-email { background: #deecf9; color: #0078d4; }
.doc-badge-pec { background: #5c2d91; color: #fff; }
.doc-badge-scan, .doc-badge-ocr { background: #ca5010; color: #fff; }
.doc-badge-pdf { background: #fde7e9; color: #d13438; }

.sidebar-folder-actions { padding: 0 16px 8px; display: flex; flex-direction: column; gap: 6px; }

@media (max-width: 1100px) {
    .topbar-nav .topbar-nav-link:not(.active) { padding: 0 8px; font-size: 12px; }
}
@media (max-width: 900px) {
    .topbar-nav { display: none; }
}

/* ─── Client di posta ─── */
.mail-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; }
.mail-header h1 { margin: 0; }
.mail-toolbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.mail-account-switch select,
.mail-search input { height: 34px; border: 1px solid var(--sp-border-strong); border-radius: 4px; padding: 0 10px; font-family: var(--font); }
.mail-search { display: flex; gap: 6px; }

.mail-list-panel { padding: 0; overflow: hidden; }
.mail-list-head { padding: 12px 16px; border-bottom: 1px solid var(--sp-border); font-size: 13px; color: var(--sp-text-secondary); }
.mail-table { width: 100%; border-collapse: collapse; }
.mail-table td { padding: 10px 14px; border-bottom: 1px solid var(--sp-border); font-size: 13px; vertical-align: middle; }
.mail-table tr:last-child td { border-bottom: none; }
.mail-row:hover { background: var(--sp-sidebar); }
.mail-row a { color: var(--sp-text); text-decoration: none; display: block; }
.mail-row a:hover { color: var(--sp-primary); }
.mail-unread .mail-col-from a,
.mail-unread .mail-col-subject a { font-weight: 700; color: var(--sp-text); }
.mail-col-from { width: 28%; max-width: 280px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mail-col-subject { width: 52%; }
.mail-col-date { width: 12%; white-space: nowrap; color: var(--sp-text-secondary); }
.mail-col-size { width: 8%; white-space: nowrap; text-align: right; }
.mail-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--sp-primary); margin-right: 6px; vertical-align: middle; }
.mail-flag { color: var(--sp-text-secondary); margin-left: 6px; }
.mail-pagination { display: flex; align-items: center; gap: 12px; justify-content: center; margin-top: 16px; }

.mail-viewer { max-width: 900px; }
.mail-viewer-head { border-bottom: 1px solid var(--sp-border); padding-bottom: 14px; margin-bottom: 14px; }
.mail-viewer-head h1 { font-size: 20px; margin: 0 0 12px; }
.mail-viewer-meta { font-size: 13px; color: var(--sp-text); display: flex; flex-direction: column; gap: 4px; }
.mail-viewer-meta .email-label { display: inline-block; width: 44px; color: var(--sp-text-secondary); }
.mail-viewer-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; align-items: center; }
.mail-attachments { background: var(--sp-sidebar); border-radius: 4px; padding: 12px 14px; margin-bottom: 16px; font-size: 13px; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.mail-attachment-chip { display: inline-flex; align-items: center; gap: 4px; background: #fff; border: 1px solid var(--sp-border-strong); border-radius: 14px; padding: 4px 12px; text-decoration: none; color: var(--sp-text); }
.mail-attachment-chip:hover { border-color: var(--sp-primary); text-decoration: none; }
.mail-viewer-body { margin-bottom: 20px; }
.mail-html-frame { width: 100%; min-height: 420px; border: 1px solid var(--sp-border); border-radius: 4px; background: #fff; }
.mail-text { font-size: 14px; line-height: 1.6; white-space: pre-wrap; }
.mail-archive { margin-top: 20px; }
.mail-archive h3 { margin: 0 0 6px; font-size: 14px; }

.mail-compose { max-width: 760px; }
.mail-compose-body { width: 100%; font-family: var(--font); font-size: 14px; line-height: 1.5; resize: vertical; }
.mail-compose .form-actions { display: flex; gap: 8px; margin-top: 8px; }

@media (max-width: 768px) {
    .mail-col-size, .mail-col-date { display: none; }
    .mail-col-from { max-width: 120px; }
}

/* ─── Fase 6: clienti, impostazioni, tabelle ─── */
.page-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; }
.page-head h1 { margin: 0 0 4px; }
.page-head .muted { margin: 0; }
.page-head-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.page-header-title { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }

.customer-chip { display: inline-flex; align-items: center; gap: 4px; background: #eef4fb; color: #0078d4; border: 1px solid #cfe1f5;
    border-radius: 14px; padding: 3px 12px; font-size: 13px; text-decoration: none; font-weight: 600; }
.customer-chip:hover { background: #e0edfa; text-decoration: none; }

.form-row { display: flex; gap: 12px; flex-wrap: wrap; align-items: flex-end; }
.form-row .grow, .form-group.grow { flex: 1; min-width: 180px; }
.form-fieldset { border: 1px solid var(--sp-border); border-radius: 6px; padding: 12px 14px; margin: 14px 0; }
.form-fieldset legend { font-weight: 600; font-size: 13px; padding: 0 6px; color: var(--sp-text-secondary); }
.checkbox-line { display: flex; align-items: center; gap: 8px; font-size: 14px; margin: 8px 0; }
.checkbox-line input { width: auto; }
.form-actions { display: flex; gap: 8px; margin-top: 12px; }

.settings-grid { display: grid; grid-template-columns: 1fr 1.3fr; gap: 16px; align-items: start; }
@media (max-width: 900px) { .settings-grid { grid-template-columns: 1fr; } }

.data-table { width: 100%; border-collapse: collapse; }
.data-table th { text-align: left; font-size: 12px; text-transform: uppercase; letter-spacing: .03em; color: var(--sp-text-secondary);
    border-bottom: 2px solid var(--sp-border); padding: 8px 10px; }
.data-table td { padding: 10px; border-bottom: 1px solid var(--sp-border); font-size: 14px; vertical-align: top; }
.data-table tr:hover td { background: var(--sp-sidebar); }
.data-table .row-muted td { opacity: .6; }
.data-table-actions { white-space: nowrap; text-align: right; }
.data-table-actions .inline-form { display: inline-block; }
.small { font-size: 12px; }
.count-pill { display: inline-block; min-width: 22px; text-align: center; background: var(--sp-primary); color: #fff;
    border-radius: 11px; padding: 1px 8px; font-size: 12px; font-weight: 600; }
.badge-muted { background: #e1e1e1; color: #555; }

.customer-layout { display: grid; grid-template-columns: 320px 1fr; gap: 16px; align-items: start; }
@media (max-width: 900px) { .customer-layout { grid-template-columns: 1fr; } }
.info-dl { display: grid; grid-template-columns: 120px 1fr; gap: 6px 10px; margin: 0; font-size: 14px; }
.info-dl dt { color: var(--sp-text-secondary); }
.info-dl dd { margin: 0; }
.customer-notes { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--sp-border); font-size: 14px; }
.customer-notes p { margin: 4px 0 0; }

.folder-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.customer-folders .folder-card { display: flex; align-items: center; gap: 12px; padding: 12px; border-radius: 6px; text-decoration: none;
    color: var(--sp-text); border-left: 4px solid var(--folder-color, var(--sp-primary)); }
.customer-folders .folder-card:hover { text-decoration: none; }
.folder-card-icon { font-size: 24px; }
.folder-card-name { font-weight: 600; }
.folder-card-meta { font-size: 12px; }

.doc-list { list-style: none; margin: 8px 0 0; padding: 0; }
.doc-list li { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--sp-border); }
.doc-list li a { text-decoration: none; color: var(--sp-text); }
.doc-list li a:hover { color: var(--sp-primary); }
.mt-3 { margin-top: 18px; }
.modal-wide { max-width: 640px; width: 92%; }

/* Selettore vista: per documenti / per cliente */
.view-switch { display: inline-flex; background: var(--sp-sidebar); border: 1px solid var(--sp-border); border-radius: 8px;
    padding: 3px; gap: 3px; margin-bottom: 16px; }
.view-switch-btn { display: inline-flex; align-items: center; gap: 6px; padding: 7px 16px; border-radius: 6px; font-size: 13px;
    font-weight: 600; color: var(--sp-text-secondary); text-decoration: none; transition: background .15s, color .15s; }
.view-switch-btn:hover { color: var(--sp-text); text-decoration: none; }
.view-switch-btn.active { background: var(--sp-surface); color: var(--sp-primary); box-shadow: var(--sp-shadow); }
