/*
 * ============================================================================
 * DSAT Dashboard Platform
 * Copyright (c) 2026 XSION Limited. All Rights Reserved.
 * ============================================================================
 *
 * This software and all associated source code, designs, algorithms,
 * documentation, databases, and intellectual property are the exclusive
 * property of Bryan Davis.
 *
 * Unauthorised copying, modification, distribution, reverse engineering,
 * resale, sublicensing, or use of this software, in whole or in part,
 * is strictly prohibited except where expressly permitted under a written
 * licence agreement.
 *
 * This application contains proprietary and confidential information.
 * Access to and use of this software constitutes acceptance of the
 * applicable licence terms.
 *
 * Author: Bryan Davis
 * Product: DSAT Dashboard Platform
 * Version: 1.5
 *
 * ============================================================================
 */
:root{--red:#e51d2a;--red-dark:#b8111c;--ink:#242933;--muted:#68707d;--line:#dfe3e8;--wash:#f4f6f8;--white:#fff;--green:#197248;--amber:#a85c00;--shadow:0 8px 28px rgba(24,31,44,.08)}
*{box-sizing:border-box}html{font-family:Inter,Arial,sans-serif;color:var(--ink);background:var(--wash)}body{margin:0;min-height:100vh}a{color:var(--red-dark)}.top{height:78px;padding:0 clamp(18px,4vw,52px);display:flex;align-items:center;justify-content:space-between;background:#20252d;color:#fff}.brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none;font-size:15px;font-weight:700;line-height:1.15}.brand small{font-weight:400;color:#c8ccd2}.brand-mark{display:inline-grid;place-items:center;width:43px;height:43px;border-radius:12px;background:linear-gradient(135deg,#fa3440,var(--red-dark));color:#fff;font-weight:800;box-shadow:0 5px 14px rgba(229,29,42,.3)}.user{display:flex;align-items:center;gap:18px;font-size:13px}.user a{color:#fff}.nav{padding:0 clamp(18px,4vw,52px);display:flex;gap:2px;overflow:auto;background:#fff;border-bottom:1px solid var(--line)}.nav a{padding:15px 17px;color:#454b55;text-decoration:none;white-space:nowrap;border-bottom:3px solid transparent}.nav a:hover,.nav a[aria-current=page]{color:var(--red-dark);border-bottom-color:var(--red)}.container{max-width:1500px;margin:auto;padding:30px clamp(18px,4vw,52px) 60px}.page-head{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-bottom:25px}.page-head h1{font-size:clamp(28px,3vw,42px);margin:3px 0 8px;letter-spacing:-.035em}.page-head p{max-width:760px;margin:0;color:var(--muted);line-height:1.5}.eyebrow{text-transform:uppercase!important;letter-spacing:.13em!important;color:var(--red-dark)!important;font-size:12px!important;font-weight:800}.cards{display:grid;grid-template-columns:repeat(4,minmax(190px,1fr));gap:15px;margin:0 0 24px}.card{background:#fff;border:1px solid var(--line);border-top:4px solid var(--red);border-radius:12px;padding:20px;box-shadow:var(--shadow)}.card span{display:block;color:var(--muted);font-size:13px}.card strong{display:block;font-size:clamp(22px,2.1vw,32px);margin:12px 0 8px;letter-spacing:-.03em}.card small,td small{display:block;color:var(--muted);margin-top:5px;line-height:1.35}.panel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px;margin-bottom:22px;box-shadow:var(--shadow)}.panel h2{margin:0 0 13px;font-size:20px}.panel-head{display:flex;justify-content:space-between;align-items:center}.panel-head p{margin-top:-8px;color:var(--muted)}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:8px}table{border-collapse:collapse;width:100%;font-size:13px}th,td{text-align:left;padding:12px 13px;border-bottom:1px solid var(--line);vertical-align:top}thead th{background:#262b33;color:#fff;position:sticky;top:0;z-index:1}tbody tr:hover{background:#fafbfc}tbody tr:last-child td{border-bottom:0}.comparison table{width:max-content;min-width:100%}.comparison th,.comparison td{white-space:nowrap}.comparison tbody th{position:sticky;left:0;background:#fff;z-index:1}.empty{text-align:center;color:var(--muted);padding:35px}.filters,.form-grid{display:flex;gap:14px;align-items:end;flex-wrap:wrap}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr))}.wide{grid-column:1/-1}label{display:flex;flex-direction:column;gap:7px;font-weight:700;font-size:13px;color:#424953}input,select,textarea{min-width:0;border:1px solid #bec5ce;border-radius:7px;padding:10px 11px;background:#fff;color:var(--ink);font:inherit}textarea{min-height:90px;resize:vertical}input:focus,select:focus,textarea:focus{outline:3px solid rgba(229,29,42,.17);border-color:var(--red)}button{border:0;border-radius:7px;background:var(--red);color:#fff;padding:11px 18px;font-weight:800;cursor:pointer}button:hover{background:var(--red-dark)}label small{font-weight:400;color:var(--muted)}.split{display:grid;grid-template-columns:1fr 1fr;gap:22px}.notice{padding:13px 16px;border-radius:8px;margin-bottom:18px;border-left:5px solid}.notice.error{background:#fff0f1;border-color:var(--red);color:#8f1018}.notice.success{background:#eef9f3;border-color:var(--green);color:#125636}.status{display:inline-block;border-radius:99px;padding:4px 9px;background:#e8ebef;text-transform:capitalize;font-size:12px;font-weight:800}.status.committed,.status.approved{background:#dbf2e5;color:#145f3a}.status.quarantined,.status.rejected{background:#ffe2e4;color:#8f1018}.status.superseded,.status.proposed{background:#fff0d9;color:#7b4800}.clean{padding-left:18px;line-height:1.8}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;white-space:pre-wrap}footer{text-align:center;padding:25px;color:var(--muted);font-size:12px}.auth{display:grid;place-items:center;padding:25px;background:radial-gradient(circle at 18% 12%,#fff 0,#f1f3f6 38%,#e6e9ed 100%)}.auth-card{width:min(430px,100%);background:#fff;border-radius:16px;padding:34px;box-shadow:0 20px 60px rgba(23,30,42,.18)}.auth-card h1{margin:18px 0 4px}.auth-card form{display:grid;gap:16px;margin-top:25px}.muted,.small{color:var(--muted)}.small{font-size:12px;margin-top:18px}
@media(max-width:1000px){.cards{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr}.page-head{align-items:start;flex-direction:column}.top{height:auto;padding-top:15px;padding-bottom:15px}.user span{display:none}}
@media(max-width:580px){.cards{grid-template-columns:1fr}.container{padding-top:20px}.form-grid{grid-template-columns:1fr}.wide{grid-column:auto}.top{align-items:flex-start}.nav a{padding:12px}.card strong{font-size:27px}}
@media print{.top,.nav,.filters,button,footer{display:none!important}.container{padding:0}.panel,.card{box-shadow:none;break-inside:avoid}.cards{grid-template-columns:repeat(4,1fr)}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.link-button{margin-top:12px;padding:0;background:none;color:var(--red-dark);text-decoration:underline}.link-button:hover{background:none;color:var(--ink)}dialog{width:min(850px,92vw);border:0;border-radius:14px;padding:24px;box-shadow:0 24px 80px rgba(20,25,35,.3)}dialog::backdrop{background:rgba(20,25,35,.55)}.dialog-head{display:flex;align-items:start;justify-content:space-between;gap:20px}.dialog-head h2{margin:0}.dialog-head p{color:var(--muted)}.dialog-head button{border-radius:50%;padding:4px 12px;font-size:24px}
.status.green{background:#dbf2e5;color:#145f3a}.status.red{background:#ffe2e4;color:#8f1018}.status.amber{background:#fff0d9;color:#7b4800}.status.not_rated,.status.not_applicable{background:#e8ebef;color:#454b55}
.missing-value{color:#7b2530;font-weight:800}.hierarchy-parent{background:#f4f6f8;font-weight:800}.hierarchy-child td:first-child{padding-left:36px}.rule-note{display:block;color:var(--muted);margin-top:4px;font-weight:400}
.hierarchy-guidance{background:#eef4fa;border-color:#315f88;color:#243f59;line-height:1.55}
.danger-zone{border-color:#e2a5aa;background:#fff7f7}.compact-actions{margin:20px 0;align-items:start}details{margin-top:18px;border-top:1px solid var(--line);padding-top:16px}summary{font-weight:800;cursor:pointer}
.licence-grid{display:grid;grid-template-columns:minmax(160px,240px) 1fr;gap:10px 20px}.licence-grid dt{font-weight:800}.licence-grid dd{margin:0}
.brand-logo{width:44px;height:44px;object-fit:contain;border-radius:10px}.auth-logo{width:74px;height:74px;object-fit:contain;border-radius:14px}.logout-button{padding:7px 11px;background:transparent;border:1px solid #707781}.logout-button:hover{background:#fff;color:#20252d}.secondary{background:#59616d}.secondary:hover{background:#3d444d}.danger{background:#9b101a}.check{flex-direction:row;align-items:center;align-self:end;padding:10px 0}.check input{min-width:auto}.compare-filters{display:grid;grid-template-columns:1fr 1fr 2fr auto;align-items:end;gap:16px}.compare-filters select{min-height:150px}.audit-launch{display:flex;align-items:center;justify-content:space-between}.audit-table{max-height:55vh;margin:18px 0}.archive-form{display:flex;align-items:end;gap:14px;border-top:1px solid var(--line);padding-top:18px}dialog{max-height:90vh;overflow:auto}dialog .form-grid{margin-top:18px}
@media(max-width:900px){.compare-filters{grid-template-columns:1fr}.audit-launch{align-items:flex-start;gap:16px;flex-direction:column}}
.card.card-priority{border-top-color:#a6000b}.card.card-missing{border-top-color:#9aa1aa;background:#f8f9fa}.card.card-missing strong{color:#5f6670;font-size:clamp(20px,1.8vw,27px)}.import-issues{margin-top:8px;max-width:520px}.import-issues summary{cursor:pointer;font-weight:700}.import-issues ul{margin:8px 0 0;padding-left:18px}.import-issues li{margin:5px 0;line-height:1.4}
.dashboard-layout{margin-bottom:24px}.dashboard-layout-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:14px}.dashboard-layout-head h2{margin:0 0 5px}.dashboard-layout-head p{margin:0;color:var(--muted)}.dashboard-layout-status{font-weight:800;color:var(--red-dark)}.dashboard-slots{grid-template-columns:repeat(3,minmax(220px,1fr))}.dashboard-slot{min-height:215px;position:relative;display:flex;flex-direction:column}.dashboard-slot[draggable=true],.dashboard-palette tr[draggable=true]{cursor:grab}.dashboard-slot[draggable=true]:active,.dashboard-palette tr[draggable=true]:active{cursor:grabbing}.dashboard-slot-number{font-weight:800;text-transform:uppercase;letter-spacing:.08em;font-size:11px!important;margin-bottom:10px}.dashboard-card-name{min-height:34px;color:var(--ink)!important;font-weight:800;line-height:1.35}.dashboard-empty-title{font-size:18px!important;font-weight:800;color:var(--muted)!important;margin:auto 0 8px}.dashboard-remove{margin-top:auto;align-self:flex-start;padding:7px 10px;font-size:12px}.dashboard-slot .status{align-self:flex-start;margin:3px 0 12px}.dashboard-slot.is-drag-over{outline:4px solid rgba(229,29,42,.22);border-color:var(--red);transform:translateY(-2px)}.is-dragging{opacity:.5}.dashboard-palette{transition:outline-color .15s}.dashboard-palette.is-drag-over{outline:4px solid rgba(25,114,72,.25);border-color:var(--green)}.dashboard-drop-label{color:var(--muted);font-size:12px;font-weight:800;border:1px dashed #aab1bb;border-radius:7px;padding:8px 10px}.dashboard-add-control{display:flex;align-items:center;gap:7px}.dashboard-add-control label{display:block}.dashboard-add-control select,.dashboard-add-control button{padding:7px 9px}.dashboard-kpi-selected{background:#f0f2f4;color:#6c737d}.dashboard-kpi-selected button{background:#9aa1aa;cursor:not-allowed}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@media(max-width:1000px){.dashboard-slots{grid-template-columns:repeat(2,minmax(220px,1fr))}}
@media(max-width:580px){.dashboard-slots{grid-template-columns:1fr}.dashboard-layout-head{align-items:flex-start;flex-direction:column}.dashboard-drop-label{display:none}}
.mfa-card{width:min(610px,100%)}.mfa-card ol{padding-left:22px;line-height:1.7}.setup-key{display:block;margin-top:6px;padding:10px;background:var(--wash);word-break:break-all;font-size:16px;letter-spacing:.08em}.recovery-codes{display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;padding:16px 16px 16px 34px;background:var(--wash);border-radius:8px}.recovery-codes code{font-size:15px;letter-spacing:.08em}.button-link{display:inline-block;border-radius:7px;background:var(--red);color:#fff;padding:11px 18px;font-weight:800;text-decoration:none}.button-link:hover{background:var(--red-dark)}
@media(max-width:580px){.recovery-codes{grid-template-columns:1fr}}
.indicator-hierarchy{border-left:2px solid transparent;padding-left:0}.indicator-depth-1 .indicator-hierarchy{margin-left:22px;border-left-color:#c4c9d0;padding-left:12px}.indicator-depth-2 .indicator-hierarchy{margin-left:44px;border-left-color:#c4c9d0;padding-left:12px}.indicator-depth-3 .indicator-hierarchy{margin-left:66px;border-left-color:#c4c9d0;padding-left:12px}.indicator-depth-4 .indicator-hierarchy{margin-left:88px;border-left-color:#c4c9d0;padding-left:12px}.indicator-depth-5 .indicator-hierarchy{margin-left:110px;border-left-color:#c4c9d0;padding-left:12px}.indicator-depth-6 .indicator-hierarchy{margin-left:132px;border-left-color:#c4c9d0;padding-left:12px}
.section-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:13px}.section-heading h2{margin:0}.section-heading .button-link{margin-top:0}.button-link.secondary{background:#59616d}.button-link.secondary:hover{background:#3d444d;color:#fff}@media(max-width:580px){.section-heading{align-items:flex-start;flex-direction:column}}
.detail-list{display:grid;grid-template-columns:max-content 1fr;gap:8px 20px;margin:0}.detail-list dt{color:var(--muted);font-weight:600}.detail-list dd{margin:0}@media(max-width:580px){.detail-list{grid-template-columns:1fr}.detail-list dd{margin-bottom:8px}}
.auth-button{display:block;width:100%;text-align:center}.dev-bypass{margin-top:18px;padding:12px;border:2px dashed var(--amber)}
fieldset.form-grid{border:1px solid var(--line);border-radius:6px;padding:12px 14px;margin:0;min-width:0}fieldset.form-grid legend{font-weight:600;padding:0 6px}
