:root{--bg: #f6f7f9;--panel: #ffffff;--ink: #1c2530;--muted: #6b7785;--line: #e4e8ec;--accent: #1f5f8b;--accent-ink: #ffffff;--sidebar: #16222e}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.55 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h2{margin:0 0 4px;font-size:20px}h3{margin:22px 0 6px;font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.muted{color:var(--muted)}.small{font-size:12px}.num{display:inline-block;min-width:42px;font-variant-numeric:tabular-nums;color:var(--muted)}.back{display:inline-block;margin-bottom:10px;font-size:13px;color:var(--muted)}.back:hover{color:var(--accent)}.tag{font-size:11px;background:#eef2f6;color:var(--muted);padding:2px 8px;border-radius:999px;vertical-align:middle}.layout{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.sidebar{background:var(--sidebar);color:#c6d2dd;display:flex;flex-direction:column;padding:18px 14px}.brand{color:#fff;font-weight:700;font-size:16px;letter-spacing:.02em}.tenant{margin:16px 0;padding:10px 12px;background:#ffffff0f;border-radius:8px}.tenant-name{color:#fff;font-weight:600}.tenant-switch{width:100%;padding:5px 6px;border-radius:6px;border:1px solid rgba(255,255,255,.2);background:#ffffff1a;color:#fff;font:inherit}.tenant-switch option{color:#1c2530}.fw-switch{width:100%;margin:16px 0 4px;padding:6px;border-radius:6px;border:1px solid rgba(255,255,255,.2);background:#ffffff1f;color:#fff;font:inherit;font-weight:600}.fw-switch option{color:#1c2530}.fw-inline{font-size:13px;color:var(--muted)}.fw-inline select{margin-left:6px;padding:5px 8px;border:1px solid var(--border, #d6dee6);border-radius:6px;font:inherit}.sidebar nav{display:flex;flex-direction:column;gap:2px;flex:1}.sidebar nav a{color:#c6d2dd;padding:8px 12px;border-radius:7px}.sidebar nav a:hover{background:#ffffff12;text-decoration:none}.sidebar nav a.active{background:var(--accent);color:#fff}.nav-group{margin:16px 0 4px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#7d8d9c;padding:0 12px}.nav-sub>summary{color:#c6d2dd;padding:8px 12px;border-radius:7px;cursor:pointer;list-style:none;font-size:14px}.nav-sub>summary::-webkit-details-marker{display:none}.nav-sub>summary:before{content:"▸ ";color:#7d8d9c}.nav-sub[open]>summary:before{content:"▾ "}.nav-sub>summary:hover{background:#ffffff12}.nav-sub a{display:block;padding-left:26px!important;font-size:13px}.sidebar-foot{border-top:1px solid rgba(255,255,255,.1);padding-top:12px}.clause-tools{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.clause-tool{display:inline-block;padding:6px 12px;background:var(--accent);color:#fff;border-radius:7px;font-size:13px}.clause-tool:hover{filter:brightness(1.08);text-decoration:none}.clause-subs li{display:flex;flex-direction:column;gap:4px;padding:6px 0}.clause-subs .clause-tools{margin:2px 0 2px 12px}.clause-subs .clause-tool{padding:3px 10px;font-size:12px;background:#e8eef4;color:var(--accent)}.quick-links{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}.quick-link{padding:6px 12px;border:1px solid var(--border, #d6dee6);border-radius:999px;font-size:13px;color:var(--accent);background:#fff}.quick-link:hover{background:#f2f6fa;text-decoration:none}.content{padding:30px 36px}.body p,.lc-body{max-width:900px}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px}.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:14px}.phase-n{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.phase-name{font-weight:600;margin:2px 0 8px}.phase-links{display:flex;gap:14px}.list{list-style:none;padding:0;margin:8px 0}.list li{border-bottom:1px solid var(--line)}.list li a{display:block;padding:9px 6px;color:var(--ink)}.list li a:hover{background:#f0f3f6;text-decoration:none}.body{margin:16px 0}.body-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:4px}.body p{margin:0;white-space:pre-wrap}.attrs{border-collapse:collapse;width:100%;margin:14px 0;font-size:12px}.attrs th,.attrs td{border:1px solid var(--line);padding:7px 9px;text-align:left;vertical-align:top}.attrs th{background:#f0f3f6;color:var(--muted);font-weight:600}.lifecycle{display:flex;flex-direction:column;gap:14px;margin-top:22px}.lc-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.lc-body{white-space:pre-wrap;margin:0 0 8px}.lc-actions{display:flex;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap}.lifecycle textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:10px;font:inherit;resize:vertical}.history{list-style:none;padding:0;margin:0}.history li{padding:6px 0;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px}.history li:last-child{border-bottom:0}button.secondary{background:#eef2f6;color:var(--accent)}button.secondary:hover{background:#e3eaf1;filter:none}.badge{font-size:11px;padding:2px 9px;border-radius:999px;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.badge-draft{background:#eef2f6;color:#5a6b7b}.badge-in_review{background:#fff3cd;color:#8a6d1b}.badge-approved{background:#e6f0fb;color:#1f5f8b}.badge-published{background:#e4f5ea;color:#1c7a44}.badge-superseded{background:#f2e9e9;color:#9a6a6a}.badge-exp-ok{background:#e4f5ea;color:#1c7a44}.badge-exp-expiring{background:#fff3cd;color:#8a6d1b}.badge-exp-expired{background:#fdecea;color:#b3261e}.ev-list{list-style:none;padding:0;margin:4px 0 0}.ev-list li{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line)}.ev-list li:last-child{border-bottom:0}button.linklike{background:none;color:var(--accent);padding:0;font:inherit}button.linklike:hover{text-decoration:underline;filter:none}button.linklike.danger{color:#b3261e;margin-left:auto;font-size:12px}.upload-btn{background:var(--accent);color:#fff;padding:8px 16px;border-radius:7px;cursor:pointer}.upload-btn:hover{filter:brightness(1.07)}.picker{margin-top:10px;border:1px solid var(--line);border-radius:8px;padding:8px 12px}.picker-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0}.ev-table{width:100%;border-collapse:collapse;margin-top:12px}.ev-table th,.ev-table td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line)}.ev-table th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.task-form{display:flex;flex-direction:column;gap:8px;margin:10px 0}.task-form input,.task-form select{padding:7px 9px;border:1px solid var(--line);border-radius:6px;font:inherit}.task-form .row{display:flex;gap:8px;align-items:center}.filters{display:flex;align-items:center;gap:16px;margin:14px 0 6px}.filters .check{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:13px}.task-edit{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:12px 0}.task-edit label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.task-edit input,.task-edit select{padding:7px 9px;border:1px solid var(--line);border-radius:6px;font:inherit}select.mini{padding:3px 6px;font-size:12px;margin-left:auto}.badge-st-open{background:#eef2f6;color:#5a6b7b}.badge-st-in_progress{background:#e6f0fb;color:#1f5f8b}.badge-st-done{background:#e4f5ea;color:#1c7a44}.badge-st-cancelled{background:#f2e9e9;color:#9a6a6a}.badge-due-due_soon{background:#fff3cd;color:#8a6d1b}.badge-due-overdue{background:#fdecea;color:#b3261e}.reg-scroll{overflow-x:auto;margin-top:12px}.reg-table{border-collapse:collapse;width:100%}.reg-table th{position:relative;font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);text-align:left;padding:6px 12px 6px 8px;border-bottom:2px solid var(--line);white-space:normal;word-break:break-word;vertical-align:bottom}.col-resize{position:absolute;top:0;right:0;width:9px;height:100%;cursor:col-resize;-webkit-user-select:none;user-select:none}.col-resize:hover{background:var(--accent);opacity:.35}.reg-table td{padding:3px 4px;border-bottom:1px solid var(--line);vertical-align:top}.reg-table input,.reg-table select{width:100%;min-width:0;border:1px solid transparent;border-radius:5px;padding:5px 6px;font:inherit;background:transparent}.reg-table input:hover,.reg-table select:hover{border-color:var(--line)}.reg-table input:focus,.reg-table select:focus{border-color:var(--accent);outline:none;background:#fff}.reg-table textarea.reg-cell{width:100%;min-width:0;border:1px solid transparent;border-radius:5px;padding:5px 6px;font:inherit;line-height:1.4;background:transparent;resize:vertical;white-space:pre-wrap;overflow:hidden}.reg-table textarea.reg-cell:hover{border-color:var(--line)}.reg-table textarea.reg-cell:focus{border-color:var(--accent);outline:none;background:#fff}.gap-grid{display:flex;gap:16px;margin-bottom:10px;flex-wrap:wrap}.gap-grid label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.gap-grid select{padding:6px 8px;border:1px solid var(--line);border-radius:6px;font:inherit;background:#fff}.lifecycle textarea,section.card>textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:10px;font:inherit;resize:vertical}.gap-big{font-size:28px;font-weight:700;margin:4px 0}.rollup{width:100%;border-collapse:collapse}.rollup td{padding:4px 6px;border-bottom:1px solid var(--line);font-size:13px}.rollup tr:last-child td{border-bottom:0}.badge-band-low{background:#e4f5ea;color:#1c7a44}.badge-band-medium{background:#fff3cd;color:#8a6d1b}.badge-band-high{background:#fde6d3;color:#a85a17}.badge-band-critical{background:#fdecea;color:#b3261e}.risk-scores{display:flex;flex-direction:column;gap:8px;margin-top:8px}.risk-scores select{padding:4px 6px;border:1px solid var(--line);border-radius:5px}.badge-impl-implemented{background:#e4f5ea;color:#1c7a44}.badge-impl-partial{background:#fff3cd;color:#8a6d1b}.badge-impl-not_implemented{background:#fdecea;color:#b3261e}.badge-impl-not_assessed{background:#eef2f6;color:#5a6b7b}.gantt{margin:10px 0 4px}.gantt-row{display:flex;align-items:center;height:26px}.gantt-axis-row{height:20px;margin-bottom:2px}.gantt-label{width:220px;flex-shrink:0;padding-right:10px;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-track{position:relative;flex:1;height:22px;background:#f6f7f9;border-radius:4px}.gantt-axis{background:transparent;height:18px}.gantt-tick{position:absolute;top:0;transform:translate(-50%);font-size:11px;color:var(--muted);white-space:nowrap}.gantt-grid{position:absolute;top:0;bottom:0;width:1px;background:var(--line)}.gantt-today{position:absolute;top:-2px;bottom:-2px;width:2px;background:#d64545;z-index:2}.gantt-today-label{color:#d64545;font-weight:600}.gantt-bar{position:absolute;top:2px;height:18px;border-radius:4px;min-width:6px;overflow:hidden;display:flex;align-items:center;padding:0 6px;color:#fff;font-size:11px}.gantt-bar span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;color:var(--muted);font-size:12px}.gantt-legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:5px;vertical-align:middle}.gantt-not_started,i.gantt-not_started,.gantt-proposed,i.gantt-proposed{background:#9aa7b4}.gantt-planned,i.gantt-planned{background:#5b8def}.gantt-in_progress,i.gantt-in_progress{background:#e8a13a}.gantt-done,i.gantt-done{background:#3ba45f}.gantt-deferred,i.gantt-deferred{background:#b08bd0}.gap-row td{background:#fdf3f2}.year-nav{display:flex;align-items:center;gap:6px}.year-nav button{padding:4px 10px}.year-nav select{padding:5px 8px;border:1px solid var(--line);border-radius:6px;font:inherit}.aw-scroll{overflow-x:auto;margin-top:10px}.aw-grid{border-collapse:collapse}.aw-grid th{font-size:11px;color:var(--muted);padding:4px 6px;text-align:center;font-weight:600}.aw-grid th.aw-activity-h{text-align:left}.aw-activity{min-width:230px;padding:5px 8px;border-bottom:1px solid var(--line);vertical-align:top}.aw-name{border:1px solid transparent;border-radius:5px;font-weight:600;width:100%;padding:3px 4px;font:inherit}.aw-name:hover{border-color:var(--line)}.aw-meta{display:flex;gap:10px;align-items:center;margin-top:3px}.aw-meta select{font-size:12px;padding:2px 4px;border:1px solid var(--line);border-radius:5px}.aw-cell{width:36px;height:28px;border:1px solid var(--line);cursor:pointer}.aw-cell:hover{outline:2px solid var(--accent);outline-offset:-2px}.aw-cell.aw-planned{background:#cdd8e3}.aw-cell.aw-done{background:#bfe6cd}.aw-legend{display:flex;gap:16px;margin:8px 0 4px;font-size:12px;color:var(--muted)}.aw-legend i{display:inline-block;width:14px;height:14px;border-radius:3px;margin-right:5px;vertical-align:middle;border:1px solid var(--line)}.aw-legend i.aw-planned{background:#cdd8e3}.aw-legend i.aw-done{background:#bfe6cd}.badge-part-attended{background:#e4f5ea;color:#1c7a44}.badge-part-absent{background:#fdecea;color:#b3261e}.badge-part-excused{background:#fff3cd;color:#8a6d1b}.nav-badge{display:inline-block;margin-left:8px;min-width:18px;padding:0 6px;border-radius:999px;background:#d64545;color:#fff;font-size:11px;text-align:center;line-height:18px}.notif-list{list-style:none;padding:0;margin:12px 0}.notif-list li{display:flex;gap:12px;align-items:flex-start;padding:11px 12px;border:1px solid var(--line);border-radius:8px;margin-bottom:8px;cursor:pointer;background:var(--panel)}.notif-list li.unread{border-left:3px solid var(--accent)}.notif-list li.read{opacity:.65}.notif-list li:hover{background:#f0f3f6}.notif-body{flex:1}button{background:var(--accent);color:var(--accent-ink);border:0;padding:8px 16px;border-radius:7px;font:inherit;cursor:pointer}button:hover{filter:brightness(1.07)}button:disabled{opacity:.6;cursor:default}button.link{background:none;color:#c6d2dd;padding:6px 0;text-align:left}button.link:hover{color:#fff;filter:none}.login{min-height:100vh;display:grid;place-items:center}.login-card{width:340px;display:flex;flex-direction:column;gap:10px}.login-card h1{margin:0;font-size:22px}.login-card label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.login-card input{padding:9px 10px;border:1px solid var(--line);border-radius:7px;font:inherit}.error{background:#fdecea;color:#b3261e;padding:8px 10px;border-radius:7px;font-size:13px}.hint{font-size:12px;color:var(--muted)}code{background:#eef2f6;padding:1px 5px;border-radius:4px}.badge-cls-major{background:#fdecea;color:#b3261e}.badge-cls-minor{background:#fde6d3;color:#a85a17}.badge-cls-observation{background:#fff3cd;color:#8a6d1b}.badge-cls-ofi{background:#e6f0fb;color:#1f5f8b}.badge-fst-pending_approval{background:#fff3cd;color:#8a6d1b}.badge-fst-open{background:#eef2f6;color:#5a6b7b}.badge-fst-in_progress{background:#e6f0fb;color:#1f5f8b}.badge-fst-pending_review{background:#fde6d3;color:#a85a17}.badge-fst-closed{background:#e4f5ea;color:#1c7a44}.sel-row>td{background:#f3f7fb}.finding-detail{margin-top:8px}.chip{display:inline-flex;align-items:center;gap:4px;background:#eef2f6;color:#41566a;border-radius:999px;padding:3px 10px;margin:3px 6px 3px 0;font-size:12px}.chip .linklike{color:#b3261e}.badge-scope-planned{background:#fff3cd;color:#8a6d1b}.badge-scope-in_progress{background:#e6f0fb;color:#1f5f8b}.badge-scope-complete{background:#e4f5ea;color:#1c7a44}.grp-row{background:#f3f7fb;font-weight:600;color:#41566a;font-size:12px;text-transform:uppercase;letter-spacing:.03em}.coverage th.cur-year,.coverage td.cur-year{background:#f3f7fb}.coverage td{text-align:center}.coverage td:first-child{text-align:left}.audit-only{border-left:3px solid #8a6d1b;background:#fffdf6}.audit-only textarea{width:100%;margin-top:8px}.tag-generated{background:#e6f0fb;color:#1f5f8b}.badge-basis-stated{background:#e4f5ea;color:#1c7a44}.badge-basis-implied{background:#e6f0fb;color:#1f5f8b}.badge-basis-gap{background:#fff3cd;color:#8a6d1b}.badge-basis-external{background:#fde6d3;color:#a85a17}.op-table td{vertical-align:top}.badge-meas-on_target{background:#e4f5ea;color:#1c7a44}.badge-meas-near{background:#fff3cd;color:#8a6d1b}.badge-meas-off{background:#fdecea;color:#b3261e}.meas-detail,.mr-inputs{background:#f7f9fb}.mr-inputs textarea{width:100%}.readiness{display:flex;gap:28px;align-items:center;flex-wrap:wrap}.readiness-score{display:flex;align-items:center;gap:16px}.score-ring{width:84px;height:84px;border-radius:50%;display:flex;align-items:baseline;justify-content:center;font-size:26px;font-weight:700;color:#fff;padding-top:14px}.score-ring span{font-size:13px}.readiness-bars{flex:1;min-width:280px;display:flex;flex-direction:column;gap:6px}.rbar{display:flex;align-items:center;gap:10px}.rbar-label{width:130px;font-size:12px;color:var(--muted)}.rbar-track{flex:1;height:8px;background:#eef2f6;border-radius:999px;overflow:hidden}.rbar-fill{display:block;height:100%;border-radius:999px}.dash-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;margin-top:16px}.stat-card{margin:0}.stat-big{display:flex;flex-direction:column;gap:2px;margin-top:4px}.stat-num{font-size:30px;font-weight:700;color:#2a3b4d}.band-on_target{background:#1c7a44}.band-near{background:#8a6d1b}.band-off{background:#b3261e}.stat-num.band-on_target{background:none;color:#1c7a44}.stat-num.band-near{background:none;color:#8a6d1b}.stat-num.band-off{background:none;color:#b3261e}.badge-tier-Low{background:#e4f5ea;color:#1c7a44}.badge-tier-Medium{background:#e6f0fb;color:#1f5f8b}.badge-tier-High{background:#fde6d3;color:#a85a17}.badge-tier-Critical{background:#fdecea;color:#b3261e}.rbac-layout{display:grid;grid-template-columns:240px 1fr;gap:20px;margin-top:12px}.rbac-roles .list li{border-bottom:0}.rbac-roles .linklike.sel{font-weight:700}.rbac-detail .ev-table td:not(:first-child),.rbac-detail .ev-table th:not(:first-child){text-align:center}
