:root{--bg:#07111f;--panel:#0b1728;--card:#ffffff;--muted:#64748b;--text:#0f172a;--line:#e5e7eb;--green:#0f766e;--blue:#2563eb;--red:#dc2626;--amber:#d97706;--purple:#7c3aed;--soft:#f8fafc;--shadow:0 16px 36px rgba(2,8,23,.12)}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Arial,sans-serif;background:#eef3f8;color:var(--text)}button,input,select,textarea{font:inherit}.sidebar{position:fixed;left:0;top:0;bottom:0;width:288px;background:linear-gradient(180deg,#07111f,#0a2238);color:#fff;padding:20px;display:flex;flex-direction:column;gap:18px}.brand{display:flex;gap:12px;align-items:center}.brand span{display:block;color:#9fb1c8;font-size:12px;margin-top:4px}.logo{width:46px;height:46px;border-radius:14px;background:#14b8a6;display:grid;place-items:center;font-weight:800;color:#062022}.navItem{width:100%;padding:12px 13px;border:0;background:transparent;color:#dbeafe;border-radius:12px;display:flex;gap:9px;align-items:center;text-align:left;cursor:pointer;margin:4px 0}.navItem:hover,.navItem.active{background:rgba(255,255,255,.12);color:#fff}.modeBox{margin-top:auto;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:14px}.modeBox span{display:block;font-weight:700}.modeBox small{color:#bcd0e7}.main{margin-left:288px;min-height:100vh}.topbar{position:sticky;top:0;z-index:5;background:rgba(238,243,248,.88);backdrop-filter:blur(10px);border-bottom:1px solid #dbe3ef;padding:22px 28px;display:flex;align-items:center;justify-content:space-between;gap:18px}.topbar h1{margin:0;font-size:26px}.topbar p{margin:6px 0 0;color:var(--muted)}.userPanel{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}select,input,textarea{border:1px solid #d8dee9;border-radius:12px;padding:10px 12px;background:#fff;outline:0}textarea{min-height:90px}.btn{border:0;border-radius:12px;padding:10px 14px;background:var(--green);color:#fff;cursor:pointer;font-weight:700;box-shadow:0 8px 20px rgba(15,118,110,.16)}.btn:hover{filter:brightness(.96)}.btn.ghost{background:#fff;color:#0f172a;border:1px solid #d8dee9;box-shadow:none}.btn.blue{background:var(--blue)}.btn.red{background:var(--red)}.btn.amber{background:var(--amber)}.btn.small{padding:7px 9px;border-radius:10px;font-size:12px}.section{padding:28px}.grid{display:grid;gap:18px}.grid.cols4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.cols3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:#fff;border:1px solid #e6edf5;border-radius:20px;padding:20px;box-shadow:var(--shadow)}.stat{position:relative;overflow:hidden}.stat:after{content:"";position:absolute;right:-28px;top:-28px;width:100px;height:100px;border-radius:50%;background:rgba(20,184,166,.12)}.stat b{font-size:30px;display:block}.stat span{color:var(--muted)}.tag{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;background:#e2e8f0;color:#334155;font-size:12px;font-weight:700}.tag.green{background:#dcfce7;color:#166534}.tag.red{background:#fee2e2;color:#991b1b}.tag.amber{background:#fef3c7;color:#92400e}.tag.blue{background:#dbeafe;color:#1e40af}.tag.purple{background:#ede9fe;color:#5b21b6}.toolbar{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap}.tableWrap{overflow:auto;border:1px solid #e5e7eb;border-radius:16px}.table{width:100%;border-collapse:collapse;background:#fff}.table th,.table td{padding:12px;border-bottom:1px solid #edf2f7;text-align:left;vertical-align:top}.table th{background:#f8fafc;color:#475569;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.table tr:hover td{background:#fbfdff}.formGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.formGrid label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#475569;font-weight:700}.full{grid-column:1/-1}.progress{height:10px;border-radius:999px;background:#e2e8f0;overflow:hidden}.progress>i{display:block;height:100%;background:linear-gradient(90deg,#0f766e,#22c55e);border-radius:999px}.kanban{display:grid;grid-template-columns:repeat(5,minmax(220px,1fr));gap:14px;overflow:auto}.lane{background:#f8fafc;border:1px solid #e2e8f0;border-radius:18px;padding:14px;min-height:310px}.lane h3{margin:0 0 12px;font-size:15px}.miniCard{background:#fff;border:1px solid #e5e7eb;border-radius:16px;padding:13px;margin-bottom:10px}.miniCard b{display:block;margin-bottom:5px}.muted{color:var(--muted)}.riskBox{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.riskBox div{border:1px solid #e5e7eb;border-radius:14px;padding:12px;background:#fff}.right{text-align:right}.docDrop{border:2px dashed #cbd5e1;border-radius:16px;padding:18px;background:#f8fafc}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:15px}.tab{border:1px solid #d8dee9;background:#fff;border-radius:999px;padding:8px 12px;cursor:pointer}.tab.active{background:#0f172a;color:#fff;border-color:#0f172a}#toast{position:fixed;right:22px;bottom:22px;z-index:50;display:grid;gap:10px}.toast{background:#0f172a;color:#fff;padding:12px 14px;border-radius:14px;box-shadow:var(--shadow);max-width:360px}.printOnly{display:none}@media(max-width:1000px){.sidebar{position:static;width:auto;min-height:auto}.main{margin-left:0}.topbar{position:static;display:block}.userPanel{margin-top:14px;justify-content:flex-start}.grid.cols4,.grid.cols3,.grid.cols2,.formGrid{grid-template-columns:1fr}.kanban{grid-template-columns:1fr}.section{padding:18px}}@media print{.sidebar,.topbar,.toolbar,.btn,.tabs{display:none!important}.main{margin:0}.section{padding:0}.card{box-shadow:none;border:0}.printOnly{display:block}}

/* --- v3 additions: environment banner + secure login --- */
.envBanner{padding:10px 18px;font-weight:700;font-size:13px;line-height:1.4;color:#fff;display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.envBanner:empty{display:none;padding:0}
.envBanner.demo{background:linear-gradient(90deg,#b45309,#d97706)}
.envBanner.live{background:linear-gradient(90deg,#065f46,#0f766e)}
.loginWrap{min-height:100vh;display:grid;place-items:center;padding:24px}
.loginCard{width:100%;max-width:420px;display:flex;flex-direction:column;gap:18px}
.loginCard .brand{color:#0f172a}
.loginCard .brand span{color:#64748b}
.loginCard .logo{background:#0f766e;color:#fff}
.loginCard label{font-size:13px;color:#475569;font-weight:700;display:flex;flex-direction:column;gap:6px}
