:root{--bg:#0f1117;--surf:#141c2a;--surf2:#1a2332;--surf3:#212d42;--border:#253047;--border2:#354060;--text:#d4dce8;--muted:#7b8fb8;--dim:#4a5878;--gold:#c8912f;--gold2:#e6a93d;--low:#22c55e;--med:#f59e0b;--high:#ef4444;--crit:#dc2626;--low-bg:rgba(34,197,94,.12);--med-bg:rgba(245,158,11,.12);--high-bg:rgba(239,68,68,.12);--radius:10px;--radius-sm:6px;}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;font-family:'DM Sans',system-ui,sans-serif;font-size:14px;background:var(--bg);color:var(--text);line-height:1.6}
a{color:var(--gold);text-decoration:none}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:var(--surf)}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}
#portal-wrap{display:flex;min-height:100vh}
#sidebar{width:240px;background:var(--surf);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;top:0;left:0;height:100vh;overflow-y:auto;z-index:100}
#main{margin-left:240px;flex:1;display:flex;flex-direction:column;min-height:100vh}
#topbar{background:var(--surf);border-bottom:1px solid var(--border);padding:0 28px;height:58px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:50}
#content{padding:28px;flex:1}
.sidebar-logo{padding:18px 16px 12px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px}
.logo-mark{width:34px;height:34px;background:linear-gradient(135deg,var(--gold),var(--gold2));border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;color:#0f1117;flex-shrink:0}
.logo-text{font-size:13px;font-weight:600}.logo-sub{font-size:10px;color:var(--muted)}
.sidebar-nav{padding:10px 0;flex:1}
.nav-section{padding:6px 14px 2px;font-size:10px;font-weight:600;color:var(--dim);text-transform:uppercase;letter-spacing:.6px;margin-top:6px}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 16px;color:var(--muted);font-size:13px;transition:.15s;border-left:3px solid transparent;cursor:pointer;text-decoration:none}
.nav-item:hover{color:var(--text);background:var(--surf2)}.nav-item.active{color:var(--gold);border-left-color:var(--gold);background:rgba(200,145,47,.07)}
.nav-badge{margin-left:auto;background:var(--gold);color:#0f1117;font-size:10px;font-weight:700;padding:1px 6px;border-radius:10px}
.nav-soon{margin-left:auto;font-size:10px;color:var(--dim)}
.sidebar-footer{padding:12px 16px;border-top:1px solid var(--border);font-size:12px;color:var(--muted)}
.sidebar-footer strong{display:block;color:var(--text);font-size:13px}
.topbar-title{font-size:15px;font-weight:500}
.topbar-right{display:flex;align-items:center;gap:14px}
.avatar{width:30px;height:30px;background:var(--surf3);border:1px solid var(--border2);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:var(--gold)}
.btn-logout{background:none;border:1px solid var(--border);color:var(--muted);padding:5px 12px;border-radius:var(--radius-sm);font-size:12px;cursor:pointer;transition:.15s}
.btn-logout:hover{border-color:var(--high);color:var(--high)}
.card{background:var(--surf);border:1px solid var(--border);border-radius:var(--radius);padding:20px}
.card-title{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin-bottom:12px;font-weight:500}
.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:22px}
.stat-card{background:var(--surf);border:1px solid var(--border);border-radius:var(--radius);padding:18px}
.stat-card.gold{border-left:3px solid var(--gold)}.stat-card.low{border-left:3px solid var(--low)}.stat-card.high{border-left:3px solid var(--high)}.stat-card.med{border-left:3px solid var(--med)}
.s-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}
.s-value{font-size:28px;font-weight:600;line-height:1}.s-sub{font-size:11px;color:var(--muted);margin-top:3px}
.btn{display:inline-flex;align-items:center;gap:7px;padding:9px 18px;border-radius:var(--radius-sm);font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;border:none;transition:.15s;text-decoration:none;white-space:nowrap}
.btn-primary{background:var(--gold);color:#0f1117}.btn-primary:hover{background:var(--gold2);color:#0f1117}
.btn-secondary{background:var(--surf3);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover{border-color:var(--border2)}
.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--border)}.btn-ghost:hover{color:var(--text);border-color:var(--border2)}
.btn-success{background:rgba(34,197,94,.12);color:var(--low);border:1px solid rgba(34,197,94,.3)}.btn-success:hover{background:rgba(34,197,94,.2)}
.btn-danger{background:rgba(239,68,68,.12);color:var(--high);border:1px solid rgba(239,68,68,.3)}
.btn-sm{padding:5px 12px;font-size:12px}.btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}
.form-group{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}
.form-label{font-size:11px;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.form-label .req{color:var(--high);margin-left:2px}
.form-label .opt{color:var(--dim);font-size:10px;margin-left:4px;text-transform:none;letter-spacing:0}
.form-input,.form-select,.form-textarea{background:var(--surf2);border:1px solid var(--border);color:var(--text);padding:10px 12px;border-radius:var(--radius-sm);font-size:13px;font-family:inherit;transition:.15s;outline:none;width:100%}
.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--gold);box-shadow:0 0 0 2px rgba(200,145,47,.12)}
.form-input.error,.form-select.error,.form-textarea.error{border-color:var(--high)}
.form-textarea{resize:vertical;min-height:80px}.form-hint{font-size:11px;color:var(--muted);margin-top:3px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .full{grid-column:1/-1}
.ai-note{font-size:11px;color:var(--gold);background:rgba(200,145,47,.08);border:1px solid rgba(200,145,47,.2);border-radius:var(--radius-sm);padding:6px 10px;margin-top:5px}
.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border)}
table{width:100%;border-collapse:collapse;font-size:13px}
th{background:var(--surf3);color:var(--muted);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.4px;padding:10px 14px;text-align:left;border-bottom:1px solid var(--border)}
td{padding:10px 14px;border-bottom:1px solid rgba(37,48,71,.5);vertical-align:middle}
tr:last-child td{border-bottom:none}tr:hover td{background:rgba(26,35,50,.4)}
.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px}
.badge-low{background:var(--low-bg);color:var(--low);border:1px solid rgba(34,197,94,.3)}
.badge-medium{background:var(--med-bg);color:var(--med);border:1px solid rgba(245,158,11,.3)}
.badge-high{background:var(--high-bg);color:var(--high);border:1px solid rgba(239,68,68,.3)}
.badge-critical{background:rgba(220,38,38,.12);color:var(--crit);border:1px solid rgba(220,38,38,.3)}
.badge-draft{background:var(--surf3);color:var(--muted);border:1px solid var(--border)}
.badge-ready{background:rgba(59,130,246,.12);color:#60a5fa;border:1px solid rgba(59,130,246,.3)}
.badge-approved{background:var(--low-bg);color:var(--low);border:1px solid rgba(34,197,94,.3)}
.cat-card{background:var(--surf);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:10px;overflow:hidden}
.cat-head{display:flex;align-items:center;gap:10px;padding:13px 16px;cursor:pointer;user-select:none;transition:.12s}
.cat-head:hover{background:var(--surf2)}
.cat-num{width:30px;height:30px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}
.cat-meta{flex:1}.cat-meta h3{font-size:13px;font-weight:500}.cat-meta p{font-size:10px;color:var(--muted)}
.cat-chevron{color:var(--dim);transition:.2s;font-size:11px}
.cat-card.open .cat-chevron{transform:rotate(180deg)}
.cat-body{display:none;padding:0 16px 16px;border-top:1px solid var(--border)}
.cat-card.open .cat-body{display:block}
.cat-score{font-size:16px;font-weight:700;min-width:50px;text-align:right}
.factor-row{padding:12px 0;border-bottom:1px solid rgba(37,48,71,.35)}
.factor-row:last-of-type{border-bottom:none}
.factor-label{font-size:13px;font-weight:500;margin-bottom:2px}
.factor-desc{font-size:11px;color:var(--muted);margin-bottom:8px;line-height:1.5}
.rs{display:flex;gap:5px;margin-top:6px}
.rs-btn{flex:1;padding:8px 4px;background:var(--surf3);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--muted);font-family:inherit;font-size:12px;cursor:pointer;text-align:center;transition:.15s;line-height:1.3}
.rs-btn small{display:block;font-size:9px;opacity:.8;margin-top:1px;text-transform:uppercase;letter-spacing:.3px}
.rs-btn:hover{border-color:var(--border2);color:var(--text)}
.rs-btn.sel-1{background:rgba(34,197,94,.15);border-color:#22c55e;color:#22c55e;font-weight:600}
.rs-btn.sel-2{background:rgba(100,200,100,.12);border-color:#6bc47e;color:#6bc47e;font-weight:600}
.rs-btn.sel-3{background:rgba(245,158,11,.15);border-color:#f59e0b;color:#f59e0b;font-weight:600}
.rs-btn.sel-4{background:rgba(239,68,68,.15);border-color:#ef4444;color:#ef4444;font-weight:600}
.rs-btn.sel-5{background:rgba(220,38,38,.18);border-color:#dc2626;color:#dc2626;font-weight:600}
.ai-context-label{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--gold);text-transform:uppercase;letter-spacing:.4px;margin:6px 0 3px}
.ai-context{font-size:11px;color:var(--text);background:rgba(200,145,47,.06);border:1px solid rgba(200,145,47,.2);border-radius:var(--radius-sm);padding:7px 10px;width:100%;font-family:inherit;resize:none;min-height:48px;outline:none;transition:.15s}
.ai-context:focus{border-color:rgba(200,145,47,.5)}
.wizard{display:flex;flex-direction:row;align-items:center;margin-bottom:24px;gap:0}
.wstep{display:flex;flex-direction:column;align-items:center;gap:4px}
.wnum{width:28px;height:28px;border-radius:50%;border:2px solid var(--border2);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:var(--muted);background:var(--surf);transition:.2s}
.wlbl{font-size:10px;color:var(--muted);white-space:nowrap}
.wstep.active .wnum{border-color:var(--gold);color:var(--gold);background:rgba(200,145,47,.1)}.wstep.active .wlbl{color:var(--gold)}
.wstep.done .wnum{border-color:var(--low);background:rgba(34,197,94,.12);color:var(--low)}
.wline{flex:1;height:1px;background:var(--border);margin:0 6px;margin-bottom:16px}
.alert{padding:12px 16px;border-radius:var(--radius-sm);font-size:13px;margin-bottom:14px;display:flex;align-items:flex-start;gap:8px}
.alert-info{background:rgba(59,130,246,.1);border:1px solid rgba(59,130,246,.3);color:#93c5fd}
.alert-success{background:var(--low-bg);border:1px solid rgba(34,197,94,.3);color:#86efac}
.alert-warning{background:var(--med-bg);border:1px solid rgba(245,158,11,.3);color:#fcd34d}
.alert-danger{background:var(--high-bg);border:1px solid rgba(239,68,68,.3);color:#fca5a5}
.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:22px}
.page-header h1{font-size:20px;font-weight:500}.page-header p{font-size:12px;color:var(--muted);margin-top:2px}
.empty-state{text-align:center;padding:48px 20px;color:var(--muted)}
.empty-state .es-icon{font-size:36px;margin-bottom:12px}.empty-state h3{font-size:16px;color:var(--text);margin-bottom:6px}
.module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.module-card{background:var(--surf);border:1px solid var(--border);border-radius:var(--radius);padding:22px;transition:.15s;text-decoration:none;display:block}
.module-card:hover{border-color:var(--gold);background:rgba(200,145,47,.04)}
.module-card .mc-icon{font-size:22px;margin-bottom:10px}.module-card h3{font-size:14px;font-weight:500;color:var(--text);margin-bottom:4px}.module-card p{font-size:11px;color:var(--muted);line-height:1.5}
.module-card .mc-status{font-size:10px;color:var(--gold);margin-top:10px;font-weight:500}.module-card .mc-soon{font-size:10px;color:var(--dim);margin-top:10px}
.coming-soon{opacity:.5;pointer-events:none}
.drop-zone{border:2px dashed var(--border2);border-radius:var(--radius);padding:28px;text-align:center;cursor:pointer;transition:.2s;background:var(--surf2)}
.drop-zone:hover{border-color:var(--gold);background:rgba(200,145,47,.05)}
.drop-zone p{font-size:13px;color:var(--muted)}.drop-zone strong{color:var(--gold)}
.loading-overlay{display:none;position:fixed;inset:0;background:rgba(15,17,23,.8);z-index:999;align-items:center;justify-content:center;flex-direction:column;gap:12px}
.loading-overlay.show{display:flex}
.spinner{width:24px;height:24px;border:2px solid rgba(200,145,47,.3);border-top-color:var(--gold);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.login-box{background:var(--surf);border:1px solid var(--border);border-radius:var(--radius);padding:40px;width:100%;max-width:400px}
.login-logo{text-align:center;margin-bottom:28px}
.login-logo .lm{width:52px;height:52px;background:linear-gradient(135deg,var(--gold),var(--gold2));border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;color:#0f1117;margin:0 auto 12px}
.login-logo h1{font-size:18px;font-weight:500}.login-logo p{font-size:12px;color:var(--muted);margin-top:3px}
.score-summary{background:var(--surf2);border:1px solid var(--border);border-radius:var(--radius);padding:16px;display:flex;align-items:center;justify-content:space-between;margin-top:14px}
.score-big{font-size:26px;font-weight:700}.score-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.progress-bar{height:8px;background:var(--surf3);border-radius:4px;overflow:hidden;margin:8px 0}
.progress-fill{height:100%;background:var(--gold);border-radius:4px;transition:width .5s ease}
