:root{--primary-50: #f8fafc;--primary-100: #f1f5f9;--primary-200: #e2e8f0;--primary-300: #cbd5e1;--primary-400: #94a3b8;--primary-500: #64748b;--primary-600: #475569;--primary-700: #334155;--primary-800: #1e293b;--primary-900: #0f172a;--primary-950: #020617;--blue-50: #eff6ff;--blue-100: #dbeafe;--blue-200: #bfdbfe;--blue-500: #3b82f6;--blue-600: #2563eb;--blue-700: #1d4ed8;--purple-50: #faf5ff;--purple-100: #f3e8ff;--purple-500: #a855f7;--purple-600: #9333ea;--green-50: #f0fdf4;--green-100: #dcfce7;--green-500: #22c55e;--green-600: #16a34a;--amber-50: #fffbeb;--amber-100: #fef3c7;--amber-500: #f59e0b;--amber-600: #d97706;--red-50: #fef2f2;--red-100: #fee2e2;--red-500: #ef4444;--red-600: #dc2626;--red-700: #b91c1c;--orange-100: #ffedd5;--orange-500: #f97316;--orange-600: #ea580c;--cyan-500: #06b6d4;--indigo-500: #6366f1;--indigo-600: #4f46e5;--caf-optimal: #10b981;--caf-ready: #22c55e;--caf-needs-improvement: #f59e0b;--caf-at-risk: #eab308;--caf-not-ready: #ef4444;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1)}*{margin:0;padding:0;box-sizing:border-box}html,body{overflow-x:hidden;max-width:100vw}body{font-family:DM Sans,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--primary-100);color:var(--primary-900);line-height:1.5}.skip-link{position:absolute;top:-40px;left:0;background:var(--blue-600);color:#fff;padding:8px 16px;z-index:10000;font-weight:600;text-decoration:none;border-radius:0 0 8px;transition:top .2s}.skip-link:focus{top:0;outline:2px solid white;outline-offset:2px}.sr-only,.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:2px solid var(--blue-500);outline-offset:2px}:focus:not(:focus-visible){outline:none}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--blue-500);outline-offset:2px}.sidebar a:focus-visible,.sidebar button:focus-visible,.auth-background a:focus-visible{outline-color:var(--blue-400)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.page{animation:none}.spinner{animation-duration:.8s!important;animation-iteration-count:infinite!important}}@media (prefers-contrast: high){:root{--primary-200: #9ca3af;--primary-400: #374151;--primary-500: #1f2937}.btn{border:2px solid currentColor}.card{border:2px solid var(--primary-400)}a{text-decoration:underline}}@media (pointer: coarse){button,a,input[type=checkbox],input[type=radio],.btn,.nav-item,.btn-icon{min-height:44px;min-width:44px}}.focus-trap{position:relative}.live-region{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.page{animation:fadeIn .3s ease;max-width:100%;overflow:hidden}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.page-header{margin-bottom:28px;display:flex;justify-content:space-between;align-items:flex-start;gap:16px;max-width:100%;flex-wrap:wrap}.page-header h1{font-family:Space Grotesk,sans-serif;font-size:1.875rem;font-weight:700;letter-spacing:-.02em;margin-bottom:6px}.page-header p{color:var(--primary-500);font-size:.9rem}.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;border-radius:10px;font-weight:600;font-size:.875rem;cursor:pointer;border:none;transition:all .2s ease;font-family:inherit}.btn-primary{background:linear-gradient(135deg,var(--blue-500),var(--purple-500));color:#fff;box-shadow:0 4px 12px #6366f140}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 16px #6366f159}.btn-outline{background:#fff;border:1px solid var(--primary-200);color:var(--primary-700)}.btn-outline:hover{border-color:var(--primary-300);background:var(--primary-50)}.btn-success{background:var(--green-500);color:#fff}.btn-danger{background:var(--red-500);color:#fff}.btn-sm{padding:7px 14px;font-size:.8rem}.btn-lg{padding:14px 28px;font-size:1rem}.btn-icon{width:40px;height:40px;border-radius:10px;border:none;background:var(--primary-100);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--primary-600);transition:all .2s}.btn-icon:hover{background:var(--primary-200);color:var(--primary-800)}.card{background:#fff;border-radius:16px;border:1px solid var(--primary-200);overflow:hidden;box-shadow:var(--shadow-sm);max-width:100%}.card-header{padding:20px 24px;border-bottom:1px solid var(--primary-100);display:flex;justify-content:space-between;align-items:center}.card-title{font-family:Space Grotesk,sans-serif;font-weight:600;font-size:1rem;letter-spacing:-.01em}.card-content{padding:24px}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:24px}.stat-card{background:#fff;border-radius:16px;padding:24px;border:1px solid var(--primary-200)}.stat-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:16px}.stat-icon.blue{background:var(--blue-100);color:var(--blue-600)}.stat-icon.purple{background:var(--purple-100);color:var(--purple-600)}.stat-icon.green{background:var(--green-100);color:var(--green-600)}.stat-icon.amber{background:var(--amber-100);color:var(--amber-600)}.stat-icon.red{background:var(--red-100);color:var(--red-600)}.stat-value{font-family:Space Grotesk,sans-serif;font-size:2rem;font-weight:700;margin-bottom:4px;letter-spacing:-.02em}.stat-label{font-size:.875rem;color:var(--primary-500)}.stat-trend{font-size:.75rem;margin-top:8px;display:flex;align-items:center;gap:4px}.stat-trend.up{color:var(--green-600)}.stat-trend.down{color:var(--red-600)}.caf-score-card{background:linear-gradient(135deg,var(--primary-900) 0%,var(--primary-800) 100%);border-radius:20px;padding:28px;color:#fff;position:relative;overflow:hidden}.caf-score-card:before{content:"";position:absolute;top:-50%;right:-30%;width:300px;height:300px;background:radial-gradient(circle,rgba(99,102,241,.3) 0%,transparent 70%);pointer-events:none}.caf-score-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;position:relative;z-index:1}.caf-score-label{font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;color:var(--primary-300);margin-bottom:8px}.caf-score-value{font-family:Space Grotesk,sans-serif;font-size:3.5rem;font-weight:700;line-height:1;letter-spacing:-.03em}.caf-score-value span{font-size:1.5rem;color:var(--primary-400)}.caf-readiness-badge{padding:8px 16px;border-radius:20px;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}.caf-readiness-badge.optimal{background:#10b98133;color:#6ee7b7}.caf-readiness-badge.ready{background:#22c55e33;color:#86efac}.caf-readiness-badge.needs-improvement{background:#f59e0b33;color:#fcd34d}.caf-readiness-badge.at-risk{background:#eab30833;color:#fde047}.caf-readiness-badge.not-ready{background:#ef444433;color:#fca5a5}.caf-pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;position:relative;z-index:1}.caf-pillar{background:#ffffff0d;border-radius:12px;padding:16px;border:1px solid rgba(255,255,255,.08)}.caf-pillar-name{font-size:.75rem;color:var(--primary-400);margin-bottom:8px;display:flex;align-items:center;gap:6px}.caf-pillar-weight{font-size:.65rem;background:#ffffff1a;padding:2px 6px;border-radius:4px}.caf-pillar-score{font-family:Space Grotesk,sans-serif;font-size:1.5rem;font-weight:700;margin-bottom:8px}.caf-pillar-bar{height:4px;background:#ffffff1a;border-radius:2px;overflow:hidden}.caf-pillar-bar-fill{height:100%;border-radius:2px;transition:width .5s ease}.data-table{width:100%;border-collapse:collapse}.data-table th{text-align:left;padding:14px 16px;font-size:.7rem;font-weight:600;color:var(--primary-500);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--primary-200);background:var(--primary-50)}.data-table td{padding:16px;border-bottom:1px solid var(--primary-100);font-size:.875rem}.data-table tr{cursor:pointer;transition:background .15s}.data-table tbody tr:hover{background:var(--primary-50)}.tenant-avatar{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:1rem}.tenant-info{display:flex;align-items:center;gap:14px}.tenant-name{font-weight:600;margin-bottom:2px}.tenant-domain{font-size:.75rem;color:var(--primary-400)}.caf-score-mini{display:flex;align-items:center;gap:10px}.caf-gauge-mini{width:44px;height:44px;border-radius:50%;background:conic-gradient(var(--gauge-color, var(--green-500)) calc(var(--gauge-percent, 70) * 3.6deg),var(--primary-200) 0);display:flex;align-items:center;justify-content:center;position:relative}.caf-gauge-mini:before{content:"";width:34px;height:34px;background:#fff;border-radius:50%;position:absolute}.caf-gauge-mini span{position:relative;z-index:1;font-weight:700;font-size:.75rem}.status-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:20px;font-size:.75rem;font-weight:600}.status-badge .status-dot{width:6px;height:6px;border-radius:50%}.status-badge.active{background:var(--green-100);color:var(--green-600)}.status-badge.active .status-dot{background:var(--green-500)}.status-badge.pending{background:var(--amber-100);color:var(--amber-600)}.status-badge.pending .status-dot{background:var(--amber-500)}.status-badge.error{background:var(--red-100);color:var(--red-600)}.status-badge.error .status-dot{background:var(--red-500)}.status-badge.in-progress,.status-badge.running{background:var(--blue-100);color:var(--blue-600)}.status-badge.in-progress .status-dot,.status-badge.running .status-dot{background:var(--blue-500);animation:pulse 1.5s infinite}.status-badge.completed{background:var(--green-100);color:var(--green-600)}.status-badge.completed .status-dot{background:var(--green-500)}.status-badge.scheduled{background:var(--purple-100);color:var(--purple-600)}.status-badge.scheduled .status-dot{background:var(--purple-500)}.status-badge.stopping{background:var(--amber-100);color:var(--amber-600)}.status-badge.stopping .status-dot{background:var(--amber-500);animation:pulse 1.5s infinite}.status-badge.stopped{background:var(--primary-100);color:var(--primary-500)}.status-badge.stopped .status-dot{background:var(--primary-400)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:40px;height:40px;border:3px solid var(--primary-200);border-top-color:var(--blue-500);border-radius:50%;animation:spin .8s linear infinite}.severity-indicator{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center}.severity-indicator.critical{background:var(--red-100);color:var(--red-500)}.severity-indicator.high{background:var(--orange-100);color:var(--orange-500)}.severity-indicator.medium{background:var(--amber-100);color:var(--amber-500)}.severity-indicator.low{background:var(--blue-100);color:var(--blue-500)}.form-group{margin-bottom:24px}.form-label{display:block;font-size:.875rem;font-weight:600;color:var(--primary-700);margin-bottom:8px}.form-label-hint{font-weight:400;color:var(--primary-400);margin-left:6px}.form-input,.form-select{width:100%;padding:12px 16px;border:1px solid var(--primary-200);border-radius:10px;font-size:.9rem;font-family:inherit;transition:all .2s;background:#fff}.form-input:focus,.form-select:focus{outline:none;border-color:var(--blue-500);box-shadow:0 0 0 3px var(--blue-100)}.form-input::placeholder{color:var(--primary-400)}.form-help{font-size:.8rem;color:var(--primary-400);margin-top:6px}.filters-bar{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap}.filter-select{padding:10px 14px;border:1px solid var(--primary-200);border-radius:8px;font-size:.85rem;background:#fff;font-family:inherit;cursor:pointer}.progress-bar{height:8px;background:var(--primary-200);border-radius:4px;overflow:hidden}.progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--blue-500),var(--purple-500));border-radius:4px;transition:width .3s}.risk-item{display:flex;gap:16px;padding:20px;border:1px solid var(--primary-200);border-radius:12px;margin-bottom:12px;transition:all .2s;cursor:pointer;background:#fff}.risk-item:hover{border-color:var(--primary-300);box-shadow:var(--shadow-md)}.risk-rank{width:32px;height:32px;background:var(--primary-100);border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem;color:var(--primary-600);flex-shrink:0}.risk-content{flex:1}.risk-header{display:flex;align-items:center;gap:10px;margin-bottom:8px}.risk-title{font-weight:600;flex:1}.risk-category{padding:4px 10px;border-radius:6px;font-size:.7rem;font-weight:600}.risk-category.security{background:var(--green-100);color:var(--green-600)}.risk-category.sharepoint{background:var(--blue-100);color:var(--blue-600)}.risk-category.exchange{background:var(--amber-100);color:var(--amber-600)}.risk-category.teams{background:#e0e7ff;color:var(--indigo-500)}.risk-category.purview{background:var(--purple-100);color:var(--purple-600)}.risk-description{font-size:.85rem;color:var(--primary-600);margin-bottom:12px}.risk-meta{display:flex;gap:24px;font-size:.8rem}.risk-meta-item{display:flex;align-items:center;gap:6px;color:var(--primary-500)}.risk-meta-item strong{color:var(--primary-700)}.risk-impact{display:flex;align-items:center;gap:8px}.risk-impact-bar{width:60px;height:6px;background:var(--primary-200);border-radius:3px;overflow:hidden}.risk-impact-bar-fill{height:100%;border-radius:3px}.console-log{background:var(--primary-900);border-radius:12px;padding:16px;font-family:JetBrains Mono,Fira Code,monospace;font-size:.75rem;min-height:400px;max-height:500px;overflow-y:auto}.log-line{display:flex;gap:12px;padding:4px 0;color:var(--primary-300)}.log-time{color:var(--primary-500);flex-shrink:0}.log-level{font-weight:600;width:50px;flex-shrink:0}.log-level.info{color:var(--blue-500)}.log-level.warn{color:var(--amber-500)}.log-level.error{color:var(--red-500)}.log-level.ok{color:var(--green-500)}.scan-live-container{display:grid;grid-template-columns:minmax(400px,500px) 1fr;gap:24px}.scan-progress-card{background:#fff;border-radius:16px;border:1px solid var(--primary-200);overflow:hidden}.scan-progress-header{padding:24px;border-bottom:1px solid var(--primary-100);display:flex;justify-content:space-between;align-items:center}.scan-phase-badge{padding:6px 14px;border-radius:8px;font-size:.75rem;font-weight:600;text-transform:uppercase}.scan-phase-badge.discovery{background:var(--purple-100);color:var(--purple-600)}.scan-phase-badge.scanning{background:var(--blue-100);color:var(--blue-600)}.scan-phase-badge.analysis{background:var(--green-100);color:var(--green-600)}.scan-main-progress{padding:32px 24px;background:linear-gradient(180deg,var(--primary-50) 0%,white 100%)}.scan-progress-percentage{font-family:Space Grotesk,sans-serif;font-size:4rem;font-weight:700;text-align:center;margin-bottom:8px;background:linear-gradient(135deg,var(--blue-600),var(--purple-600));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.scan-current-resource{text-align:center;font-size:.9rem;color:var(--primary-500);margin-bottom:24px}.scan-progress-bar{height:12px;background:var(--primary-200);border-radius:6px;overflow:hidden;margin-bottom:16px}.scan-progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--blue-500),var(--purple-500));border-radius:6px;transition:width .5s ease;position:relative}.scan-progress-bar-fill:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:shimmer 2s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.scan-time-info{display:flex;justify-content:space-between;font-size:.8rem;color:var(--primary-500)}.scan-metrics-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--primary-200);border-top:1px solid var(--primary-200)}.scan-metric{background:#fff;padding:20px;text-align:center}.scan-metric-value{font-family:Space Grotesk,sans-serif;font-size:1.5rem;font-weight:700;margin-bottom:4px}.scan-metric-label{font-size:.75rem;color:var(--primary-500);text-transform:uppercase}.throttle-metrics{padding:20px 24px;background:var(--primary-900);color:#fff}.throttle-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.throttle-title{font-size:.75rem;text-transform:uppercase;color:var(--primary-400)}.throttle-apps{display:flex;gap:8px}.throttle-app{padding:4px 10px;background:#ffffff1a;border-radius:6px;font-size:.7rem}.throttle-app.active{background:var(--green-500)}.throttle-bars{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.throttle-bar{text-align:center}.throttle-bar-label{font-size:.7rem;color:var(--primary-400);margin-bottom:6px}.throttle-bar-track{height:6px;background:#ffffff1a;border-radius:3px;overflow:hidden;margin-bottom:4px}.throttle-bar-fill{height:100%;border-radius:3px;transition:width .3s}.throttle-bar-fill.good{background:var(--green-500)}.throttle-bar-fill.warning{background:var(--amber-500)}.throttle-bar-fill.danger{background:var(--red-500)}.throttle-bar-value{font-size:.8rem;font-weight:600}.scan-tasks{padding:20px 24px}.scan-task{display:flex;align-items:center;gap:14px;padding:14px;border:1px solid var(--primary-200);border-radius:10px;margin-bottom:10px}.scan-task-icon{width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center}.scan-task-icon.completed{background:var(--green-100);color:var(--green-500)}.scan-task-icon.running{background:var(--blue-100);color:var(--blue-500)}.scan-task-icon.queued{background:var(--primary-100);color:var(--primary-400)}.scan-task-info{flex:1}.scan-task-name{font-weight:600;font-size:.9rem;margin-bottom:2px}.scan-task-detail{font-size:.75rem;color:var(--primary-500)}.scan-task-progress{width:100px}.tabs{display:flex;gap:4px;margin-bottom:24px;border-bottom:1px solid var(--primary-200)}.tab{padding:14px 24px;border:none;background:none;font-size:.9rem;font-weight:500;color:var(--primary-500);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .2s;font-family:inherit}.tab:hover{color:var(--primary-700)}.tab.active{color:var(--blue-600);border-bottom-color:var(--blue-600)}@media (max-width: 1400px){.stats-grid,.caf-pillars{grid-template-columns:repeat(2,1fr)}.scan-live-container{grid-template-columns:1fr}}@media (max-width: 1200px){.main{margin-left:80px}}@media (max-width: 992px){.page-header{flex-direction:column;gap:16px;align-items:stretch}.page-header h1{font-size:1.5rem}.stats-grid{grid-template-columns:repeat(2,1fr);gap:12px}.stat-card{padding:16px}.stat-value{font-size:1.5rem}.caf-pillars{grid-template-columns:repeat(2,1fr);gap:12px}.caf-score-value{font-size:2.5rem}.risk-meta{flex-wrap:wrap;gap:12px}.filters-bar{flex-direction:column}.filter-select{width:100%}.data-table{display:block;overflow-x:auto}.throttle-bars,.scan-metrics-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.main{margin-left:0}.content{padding:16px}.page-header h1{font-size:1.25rem}.stats-grid{grid-template-columns:1fr}.caf-score-card{padding:20px;border-radius:16px}.caf-score-header{flex-direction:column;gap:12px;align-items:flex-start}.caf-score-value{font-size:2rem}.caf-pillars{grid-template-columns:1fr}.card-header{padding:16px;flex-direction:column;gap:12px;align-items:flex-start}.card-content{padding:16px}.btn{padding:10px 16px;font-size:.8rem}.btn-icon{width:36px;height:36px}.risk-item{flex-direction:column;padding:16px}.risk-meta{flex-direction:column;gap:8px}.tabs{overflow-x:auto;-webkit-overflow-scrolling:touch}.tab{padding:12px 16px;white-space:nowrap}.console-log{min-height:250px;max-height:350px;font-size:.65rem}.scan-progress-percentage{font-size:3rem}.scan-metrics-grid{grid-template-columns:1fr}.throttle-bars{grid-template-columns:1fr;gap:12px}.form-group{margin-bottom:16px}.data-table .hide-mobile{display:none}.tenant-info{flex-direction:column;align-items:flex-start;gap:8px}.tenant-avatar{width:36px;height:36px;font-size:.875rem}}@media (max-width: 480px){.content{padding:12px}.page-header h1{font-size:1.1rem}.btn{width:100%;justify-content:center}.caf-score-value{font-size:1.75rem}.stat-value{font-size:1.25rem}}
