:root {
    --ink: #17212b;
    --muted: #66717d;
    --line: #dce2e7;
    --soft: #f4f6f7;
    --panel: #ffffff;
    --green: #67ad3f;
    --green-dark: #397b25;
    --teal: #2d9b91;
    --amber: #d79522;
    --red: #c74444;
    --nav: #10242b;
    --shadow: 0 8px 28px rgba(19, 34, 42, .07);
}

* { box-sizing: border-box; }
body { margin: 0; color: var(--ink); background: #eef1f2; font: 14px/1.45 "Segoe UI", Arial, sans-serif; }
a { color: var(--green-dark); text-decoration: none; }
button, input, textarea, select { font: inherit; }
button { border: 0; border-radius: 8px; background: var(--green-dark); color: white; padding: 11px 18px; font-weight: 700; cursor: pointer; }
button:hover { background: #2c651d; }
.button-secondary { padding: 10px 13px; color: #35434b; background: white; border: 1px solid var(--line); }
.button-secondary:hover { color: white; background: #35434b; }
code, .code-chip { font-family: Consolas, "Courier New", monospace; }
.app-shell { min-height: 100vh; display: grid; grid-template-columns: 270px minmax(0, 1fr); }
.sidebar { position: sticky; top: 0; height: 100vh; padding: 20px 14px; overflow-y: auto; background: var(--nav); color: white; display: flex; flex-direction: column; }
.brand { display: flex; align-items: center; margin: 0 4px 15px; padding: 9px 10px; border-radius: 10px; background: #fff; }
.brand-logo { display: block; width: 100%; height: auto; }
.project-context { margin-bottom: 14px; padding: 13px; border: 1px solid rgba(255,255,255,.13); border-radius: 10px; background: rgba(255,255,255,.06); }
.project-context > span,.project-context > strong,.project-context > small { display: block; }.project-context > span { color: #9eb0b5; font-size: 9px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }.project-context > strong { margin-top: 4px; color: white; font: 800 19px Consolas,monospace; }.project-context > small { margin: 2px 0 10px; color: #cdd9dc; }
.project-context label { color: #b9c8cb; font-size: 10px; }.project-context select { padding: 7px 28px 7px 8px; border-color: rgba(255,255,255,.18); color: white; background: #19343b; font-size: 11px; }
.sidebar nav { display: block; }
.nav-group { margin-top: 15px; }.nav-group:first-child { margin-top: 0; }.nav-group > p { margin: 0 8px 5px; color: #789096; font-size: 9px; font-weight: 900; letter-spacing: .13em; text-transform: uppercase; }
.sidebar nav a { display: grid; grid-template-columns: 50px minmax(0,1fr); align-items: center; gap: 7px; margin: 2px 0; padding: 9px 10px; border-radius: 7px; color: #cdd9dc; }
.sidebar nav a strong { color: #8fc876; font: 800 11px Consolas,monospace; }.sidebar nav a .nav-icon { width: 50px; color: #8fc876; font-size: 17px; text-align: center; }
.sidebar nav a:hover, .sidebar nav a.active { color: white; background: rgba(255,255,255,.1); }.sidebar nav a.active { box-shadow: inset 3px 0 0 var(--green); }.sidebar nav a.active strong { color: white; }
.local-note { margin-top: auto; padding: 12px; border-top: 1px solid rgba(255,255,255,.12); color: #9eb0b5; font-size: 12px; }
.main { min-width: 0; min-height: 100vh; padding: 26px 30px 0; display: flex; flex-direction: column; }
.topbar { display: flex; justify-content: space-between; gap: 20px; align-items: end; margin-bottom: 24px; }
h1, h2, h3, p { margin-top: 0; }
h1 { margin-bottom: 0; font-size: 29px; }
h2 { margin-bottom: 0; font-size: 20px; }
.eyebrow { margin-bottom: 4px; color: var(--muted); font-size: 11px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.breadcrumb { margin: 0 0 4px; color: var(--muted); font-size: 11px; font-weight: 700; }.breadcrumb span { padding: 0 5px; color: #a4adb4; }
.quick-search input { width: min(300px, 30vw); padding: 10px 12px; border: 1px solid var(--line); border-radius: 9px; background: white; }
.flash { margin-bottom: 18px; padding: 12px 15px; border-radius: 8px; }
.flash.success { color: #245e20; background: #e7f4e3; }
.flash.error { color: #8a2525; background: #f9e5e5; }
.auth-page { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: linear-gradient(135deg,#10242b,#21444c); }
.auth-card { width: min(430px,100%); padding: 30px; border-radius: 15px; background: white; box-shadow: 0 24px 70px rgba(0,0,0,.28); }
.auth-logo { display: block; width: min(260px,80%); margin: 0 auto 25px; }
.auth-card h1 { margin-bottom: 8px; font-size: 24px; }.auth-card > p { color: var(--muted); }.auth-message { padding: 10px 12px; border-radius: 7px; background: #fff0ce; }
.panel, .stat { background: var(--panel); border: 1px solid var(--line); border-radius: 12px; box-shadow: var(--shadow); }
.panel { padding: 20px; }
.panel-heading { display: flex; align-items: start; justify-content: space-between; gap: 16px; margin-bottom: 18px; }
.stats-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 14px; margin-bottom: 18px; }
.stat { padding: 18px; }
.stat span, .stat small { display: block; color: var(--muted); }
.stat strong { display: block; margin: 7px 0 2px; font-size: 34px; line-height: 1; }
.split-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.content-grid.form-and-list { display: grid; grid-template-columns: minmax(290px, 350px) minmax(0,1fr); gap: 18px; align-items: start; }
.sticky-panel { position: sticky; top: 20px; }
.coverage-list > div { display: flex; justify-content: space-between; padding: 15px 0; border-top: 1px solid var(--line); }
.danger-text { color: var(--red); }.warning-text { color: var(--amber); }
.activity-list { margin: 0; padding: 0; list-style: none; }
.activity-list li { display: grid; grid-template-columns: 10px 1fr auto; align-items: center; gap: 10px; padding: 9px 0; border-top: 1px solid var(--line); }
.activity-list small, .activity-list time { display: block; color: var(--muted); font-size: 11px; }
.kind-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--muted); }.kind-dot.requirement{background:var(--green)}.kind-dot.function{background:var(--teal)}.kind-dot.test{background:var(--amber)}
.stack-form { display: grid; gap: 12px; margin-top: 18px; }
label { display: grid; gap: 5px; color: #45505b; font-size: 12px; font-weight: 700; }
input, textarea, select { width: 100%; border: 1px solid #cbd3d9; border-radius: 7px; padding: 9px 10px; color: var(--ink); background: white; }
textarea { resize: vertical; line-height: 1.5; }.two-cols { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
.table-wrap { width: 100%; overflow: auto; }
table { width: 100%; border-collapse: collapse; }
th { position: sticky; top: 0; z-index: 1; padding: 10px; background: #eef4eb; color: #3f5a36; text-align: left; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; }
td { padding: 11px 10px; border-top: 1px solid var(--line); vertical-align: top; }
tr:hover td { background: #fafcfa; }
.code-chip { display: inline-block; white-space: nowrap; padding: 3px 7px; border-radius: 5px; background: #eaf3e5; color: #2f6c21; font-weight: 700; }
.block { display: block; margin-top: 4px; }.muted, small { color: var(--muted); }
.status, .coverage { display: inline-block; padding: 4px 8px; border-radius: 999px; font-size: 10px; font-weight: 800; text-transform: uppercase; }
.status.draft, .coverage.not_run, .coverage.untested { color: #7c5410; background: #fff0ce; }
.status.detected { color: #315d70; background: #dfedf2; }.coverage.covered, .coverage.pass { color: #296224; background: #dff1db; }.coverage.gap, .coverage.fail { color: #8e2929; background: #f7dede; }
.document-heading { display: flex; align-items: center; gap: 12px; margin-bottom: 13px; }.document-heading h2 { font-size: 16px; }.document-badge { padding: 8px 11px; border-radius: 8px; color: white; background: var(--green-dark); font: 800 13px Consolas,monospace; }
.editor-layout { display: grid; grid-template-columns: 270px minmax(0,1fr); gap: 16px; align-items: start; }
.outline { padding: 15px; }.outline ol { margin: 0; padding: 0; list-style: none; max-height: 70vh; overflow: auto; }.outline li a { display: grid; grid-template-columns: 42px 1fr; gap: 8px; padding: 8px; border-radius: 6px; color: var(--ink); }.outline li a.active, .outline li a:hover { background: #edf4e9; }.outline li span { color: var(--green-dark); font-weight: 800; }
.editor-meta { display: grid; grid-template-columns: 110px minmax(0,1fr) 90px; gap: 10px; }.grow { min-width: 0; }.editor-form { display: grid; gap: 13px; }.editor-body > span { display: block; margin-bottom: 5px; color: #45505b; font-size: 12px; font-weight: 700; }
.wysiwyg-shell { overflow: hidden; border: 1px solid #cbd3d9; border-radius: 8px; background: white; }.wysiwyg-shell:focus-within { border-color: var(--green); box-shadow: 0 0 0 3px rgba(103,173,63,.13); }.wysiwyg-toolbar { display: flex; flex-wrap: wrap; gap: 4px; padding: 7px; border-bottom: 1px solid var(--line); background: #f5f7f7; }.wysiwyg-toolbar button { min-width: 34px; padding: 6px 9px; border: 1px solid #d2d9dd; border-radius: 5px; color: #34444b; background: white; font-weight: 600; }.wysiwyg-toolbar button:hover { color: white; background: var(--green-dark); }.wysiwyg-toolbar select { width: auto; min-width: 120px; padding: 6px 28px 6px 8px; }
.wysiwyg-content { min-height: 52vh; padding: 20px 22px; outline: 0; color: #26343a; font: 15px/1.65 "Segoe UI",Arial,sans-serif; }.wysiwyg-content:empty::before { content: "Scrivi qui il contenuto della sezione…"; color: #9ba5aa; }.wysiwyg-content h2,.wysiwyg-content h3,.wysiwyg-content h4 { margin: 1.1em 0 .45em; }.wysiwyg-content p { margin: 0 0 .85em; }.wysiwyg-content blockquote { margin: 1em 0; padding: 8px 14px; border-left: 4px solid var(--green); background: #f3f7f1; }.wysiwyg-content pre { overflow: auto; padding: 12px; border-radius: 6px; background: #17272d; color: #eef4f5; }.wysiwyg-shell.readonly { background: #f7f8f8; }.wysiwyg-shell.readonly .wysiwyg-content { cursor: default; }
.editor-footer { display: flex; justify-content: space-between; gap: 20px; align-items: end; }.detected-terms { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 5px; }.detected-terms span { padding: 3px 7px; border-radius: 5px; background: #edf1f3; font: 11px Consolas, monospace; }
.legend { display: flex; gap: 16px; margin-bottom: 12px; color: var(--muted); font-size: 12px; }.legend i { display: inline-block; width: 9px; height: 9px; border-radius: 50%; }.legend .ok{background:var(--green)}.legend .warn{background:var(--amber)}.legend .bad{background:var(--red)}
.matrix-table table { min-width: 1120px; }.matrix-table td:nth-child(1){width:24%}.matrix-table td:nth-child(2){width:18%}.matrix-table td:nth-child(3){width:34%}
.test-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }.test-card { padding: 15px; border: 1px solid var(--line); border-radius: 9px; }.test-card h3 { margin: 10px 0 5px; }.test-card dl { display: grid; grid-template-columns: 50px 1fr; gap: 4px 8px; margin-bottom: 0; }.test-card dt { color: var(--muted); }
.coverage.conflict { color: #8e2929; background: #f7dede; }.test-card details { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--line); }.test-card summary { cursor: pointer; color: var(--green-dark); font-weight: 700; }.test-card details h4 { margin: 14px 0 4px; }.test-card details p { overflow-wrap: anywhere; }.test-card dd { margin-left: 4px; }
.search-results article { padding: 15px 0; border-top: 1px solid var(--line); }.kind-label { margin-right: 8px; color: var(--muted); font-size: 10px; text-transform: uppercase; }.search-results h3 { margin: 8px 0 4px; }
.source-list { margin: 18px 0; padding: 0; list-style: none; }.source-list li { display: grid; grid-template-columns: 10px 1fr; gap: 2px 8px; padding: 9px 0; border-top: 1px solid var(--line); }.source-list small { grid-column: 2; overflow-wrap: anywhere; }.file-ok,.file-missing { width: 8px;height:8px;border-radius:50%;margin-top:6px;background:var(--green)}.file-missing{background:var(--red)}
.import-results > div { display: grid; grid-template-columns: 1fr auto; gap: 3px 10px; padding: 10px; margin-bottom: 8px; border-radius: 7px; background: var(--soft); }.import-results .ok{border-left:4px solid var(--green)}.import-results .error,.import-results .missing{border-left:4px solid var(--red)}.import-results small{grid-column:1/-1}
.setup-page { min-height: 100vh; display: grid; place-items: center; padding: 30px; }.setup-card { max-width: 720px; padding: 30px; background: white; border-radius: 14px; box-shadow: var(--shadow); }.setup-card pre { overflow: auto; padding: 12px; border-radius: 7px; background: var(--soft); color: #7b3333; }
.topbar-actions { display: flex; align-items: end; gap: 10px; }.project-switch label { min-width: 210px; }.project-switch select { padding: 9px 30px 9px 10px; }
.user-menu { min-width: 105px; padding: 3px 4px; text-align: right; }.user-menu span,.user-menu small { display: block; }.user-menu span { font-weight: 800; }.user-menu small { text-transform: uppercase; font-size: 9px; letter-spacing: .05em; }
.logout-form { margin: 0; }.check-label { grid-template-columns: auto 1fr; align-items: center; }.check-label input { width: auto; }
.app-footer { display: flex; flex-wrap: wrap; justify-content: center; gap: 7px 18px; margin: auto -30px 0; padding: 22px 30px; border-top: 1px solid var(--line); color: #77838a; background: #e8eced; font-size: 11px; }
.history-link { display: block; margin-top: 5px; font-size: 11px; font-weight: 700; }.revision-timeline { display: grid; gap: 12px; }.revision-card { padding: 17px; border: 1px solid var(--line); border-left: 4px solid #aab4ba; border-radius: 9px; background: #fbfcfc; }.revision-card.current { border-left-color: var(--green); background: #f8fcf6; }.revision-card header,.revision-card footer { display: flex; justify-content: space-between; gap: 15px; }.revision-card header small { display: block; }.revision-card h3 { margin: 14px 0 1px; }.revision-card p { margin: 15px 0; white-space: normal; }.revision-card footer { padding-top: 10px; border-top: 1px solid var(--line); color: var(--muted); font-size: 11px; }
.revision-relations { display: grid; gap: 3px; margin: 0 0 14px; padding: 10px; border-radius: 7px; background: #eef4eb; color: #40543a; font-size: 12px; }.revision-relations span { overflow-wrap: anywhere; }
.project-list { display: grid; gap: 10px; }.project-card { display: flex; justify-content: space-between; gap: 20px; align-items: center; padding: 16px; border: 1px solid var(--line); border-radius: 9px; }.project-card.active { border-color: var(--green); background: #f5faf2; }.project-card h3 { display: inline-block; margin: 0 0 6px 8px; }.project-card p { margin-bottom: 0; color: var(--muted); }
@media (max-width: 1000px) { .stats-grid{grid-template-columns:repeat(2,1fr)}.split-grid,.content-grid.form-and-list{grid-template-columns:1fr}.sticky-panel{position:static}.editor-layout{grid-template-columns:1fr}.outline ol{max-height:220px}.sidebar{position:static;height:auto}.app-shell{grid-template-columns:1fr}.sidebar nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.nav-group{margin-top:0}.local-note{display:none}.project-context{max-width:520px} }
@media (max-width: 650px) { .main{padding:18px 12px 0}.sidebar nav{grid-template-columns:1fr}.topbar,.topbar-actions{align-items:stretch;flex-direction:column;width:100%}.quick-search,.quick-search input{width:100%}.user-menu{text-align:left}.stats-grid,.test-list,.two-cols{grid-template-columns:1fr}.editor-meta{grid-template-columns:1fr}.editor-footer,.revision-card header,.revision-card footer,.project-card{align-items:stretch;flex-direction:column}.wysiwyg-content{padding:15px;min-height:45vh}.app-footer{margin:40px -12px 0;padding:18px 12px;text-align:center;flex-direction:column} }
