*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}#app{height:100%}.fade-slide-enter-active,.fade-slide-leave-active{transition:opacity .22s ease,transform .22s ease}.fade-slide-enter-from{opacity:0;transform:translate(20px)}.fade-slide-enter-to,.fade-slide-leave-from{opacity:1;transform:translate(0)}.fade-slide-leave-to{opacity:0;transform:translate(-20px)}.app-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;color:#1e3c72;gap:1rem;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.app-loading .spinner{width:42px;height:42px;border:4px solid rgba(30,60,114,.15);border-top-color:#1e3c72;border-radius:50%;animation:spin .8s linear infinite}.app-loading p{font-size:.9rem;color:#6b7280;margin:0}.modal-enter-active,.modal-leave-active{transition:all .3s ease}.modal-enter-from,.modal-leave-to{opacity:0;transform:scale(.9)}.slide-enter-active,.slide-leave-active{transition:transform .3s ease}.slide-enter-from,.slide-leave-to{transform:translateY(100%)}.fade-enter-active,.fade-leave-active{transition:opacity .3s ease}.fade-enter-from,.fade-leave-to{opacity:0}.slide-up-enter-active{transition:all .4s ease-out}.slide-up-enter-from{opacity:0;transform:translateY(30px)}@keyframes cardAppear{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}::-webkit-scrollbar-thumb{background:#1e3c72;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#2a4b8a}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-primary: #1e3c72;--color-primary-dark: #162d56;--color-primary-hover: #2a4b8a;--color-secondary: #F1F1FF;--color-bg: #f5f7fa;--color-white: #ffffff;--color-success: #28a745;--color-success-bg: #e8f5e9;--color-danger: #c62828;--color-danger-bg: #ffebee;--color-warning: #ef6c00;--color-warning-bg: #fff3e0;--color-info: #1565c0;--color-info-bg: #e3f2fd;--color-purple: #6a1b9a;--color-purple-bg: #f3e5f5;--color-text: #1a1a2e;--color-text-muted: #6b7280;--color-border: #e5e7eb;--radius-sm: 8px;--radius-md: 16px;--radius-lg: 26px;--shadow-sm: 0 1px 4px rgba(0,0,0,.08);--shadow-md: 0 4px 16px rgba(0,0,0,.1);--shadow-lg: 0 8px 32px rgba(0,0,0,.14);--sidebar-width: 250px;--sidebar-collapsed: 0px;--transition: all .22s ease;--font-base: clamp(.85rem, 1.5vw, .95rem);--font-sm: clamp(.75rem, 1.3vw, .85rem);--font-lg: clamp(1rem, 2vw, 1.15rem);--font-xl: clamp(1.25rem, 3vw, 1.75rem);font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:var(--font-base)}html,body,#app{height:100%}body{background:var(--color-bg);color:var(--color-text);line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}img,svg,video,canvas,iframe{max-width:100%;height:auto;display:block}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#c1c9d4;border-radius:99px}.page-layout{display:flex;min-height:100vh;min-height:100dvh}.page-content{flex:1 1 auto;margin-left:var(--sidebar-width);transition:margin-left .3s ease;padding:clamp(.85rem,2vw,1.5rem);min-width:0;max-width:calc(100vw - var(--sidebar-width))}.page-content.sidebar-collapsed{margin-left:0;max-width:100vw}.page-header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:.75rem;margin-bottom:1.25rem}.page-title{font-size:var(--font-xl);font-weight:700;color:var(--color-text);line-height:1.2;word-break:break-word}.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.85rem;margin-bottom:1.25rem}.kpi-card{background:var(--color-white);border-radius:var(--radius-md);padding:1rem;box-shadow:var(--shadow-sm);border:1px solid var(--color-border);display:flex;align-items:center;gap:.85rem;min-width:0}.kpi-icon{width:clamp(36px,5vw,44px);height:clamp(36px,5vw,44px);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0}.kpi-icon svg{width:60%;height:60%}.kpi-value{font-size:clamp(1.1rem,2.5vw,1.5rem);font-weight:800;line-height:1}.kpi-label{font-size:clamp(.7rem,1.3vw,.8rem);color:var(--color-text-muted);margin-top:.2rem}.card{background:var(--color-white);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:clamp(.85rem,2vw,1.25rem);border:1px solid var(--color-border);overflow:hidden}.badge{display:inline-block;padding:2px 9px;border-radius:99px;font-size:var(--font-sm);font-weight:600;white-space:nowrap}.badge-success{background:var(--color-success-bg);color:var(--color-success)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning)}.badge-info{background:var(--color-info-bg);color:var(--color-info)}.badge-purple{background:var(--color-purple-bg);color:var(--color-purple)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.55rem 1.1rem;border-radius:var(--radius-sm);border:none;cursor:pointer;font-size:var(--font-sm);font-weight:600;transition:var(--transition);text-decoration:none;white-space:nowrap;min-height:38px;-webkit-user-select:none;user-select:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-success{background:var(--color-success);color:#fff}.btn-success:hover:not(:disabled){filter:brightness(1.1)}.btn-danger{background:var(--color-danger);color:#fff}.btn-outline{background:transparent;border:1.5px solid var(--color-primary);color:var(--color-primary)}.btn-outline:hover:not(:disabled){background:var(--color-primary);color:#fff}.btn-ghost{background:transparent;border:1.5px solid var(--color-border);color:var(--color-text)}.btn-ghost:hover:not(:disabled){background:var(--color-bg)}.btn-sm{padding:.4rem .8rem;font-size:var(--font-sm);min-height:32px}.btn-icon{padding:.4rem;border-radius:var(--radius-sm)}.btn-block{width:100%}.form-group{display:flex;flex-direction:column;gap:.35rem;min-width:0}.form-label{font-size:var(--font-sm);font-weight:600;color:var(--color-text)}.form-control{padding:.6rem .85rem;border:1.5px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-base);color:var(--color-text);background:var(--color-white);transition:var(--transition);width:100%;min-height:40px}.form-control:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #1e3c721a}.form-control::placeholder{color:var(--color-text-muted)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.table-wrapper{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;background:linear-gradient(to right,var(--color-white),var(--color-white)) left center / 8px 100% no-repeat,linear-gradient(to right,#00000014,#0000) right center / 8px 100% no-repeat,var(--color-white);border-radius:var(--radius-md)}table{width:100%;border-collapse:collapse;font-size:var(--font-sm);min-width:500px}thead th{padding:.65rem .85rem;text-align:left;font-weight:700;color:var(--color-primary);border-bottom:2px solid var(--color-border);white-space:nowrap;position:sticky;top:0;background:var(--color-white);z-index:1}tbody tr{border-bottom:1px solid var(--color-border);transition:var(--transition)}tbody tr:hover{background:var(--color-bg)}tbody td{padding:.7rem .85rem;vertical-align:middle}.risk-bar{display:flex;align-items:center;gap:.5rem;min-width:100px}.risk-bar-track{flex:1;height:7px;background:#e5e7eb;border-radius:99px;overflow:hidden}.risk-bar-fill{height:100%;border-radius:99px;transition:width .4s ease}.risk-bar-fill.low{background:var(--color-success)}.risk-bar-fill.medium{background:var(--color-warning)}.risk-bar-fill.high{background:var(--color-danger)}.risk-bar-label{font-size:var(--font-sm);font-weight:700;min-width:34px}.spinner{display:inline-block;width:32px;height:32px;border:3px solid #e5e7eb;border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-center{display:flex;justify-content:center;align-items:center;padding:2.5rem 1rem;flex-direction:column;gap:.75rem;color:var(--color-text-muted);font-size:var(--font-sm)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-box{background:var(--color-white);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:clamp(1rem,3vw,1.75rem);max-width:440px;width:100%;max-height:90vh;overflow-y:auto;animation:slideUp .22s ease}@keyframes slideUp{0%{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}.alert-banner{padding:.65rem 1rem;border-radius:var(--radius-sm);border-left:4px solid;font-size:var(--font-sm);margin-bottom:.85rem}.alert-banner.error{background:var(--color-danger-bg);border-color:var(--color-danger);color:var(--color-danger)}.alert-banner.success{background:var(--color-success-bg);border-color:var(--color-success);color:var(--color-success)}.alert-banner.info{background:var(--color-info-bg);border-color:var(--color-info);color:var(--color-info)}.pagination{display:flex;align-items:center;justify-content:flex-end;gap:.35rem;padding-top:.85rem;flex-wrap:wrap}.pagination button{padding:.4rem .75rem;border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-white);cursor:pointer;font-size:var(--font-sm);transition:var(--transition);min-height:34px;min-width:34px}.pagination button:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.pagination button.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.pagination button:disabled{opacity:.4;cursor:not-allowed}.sidebar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:90;opacity:0;pointer-events:none;transition:opacity .25s ease}.sidebar-backdrop.visible{opacity:1;pointer-events:auto}.text-muted{color:var(--color-text-muted)}.text-danger{color:var(--color-danger)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.fw-600{font-weight:600}.w-100{width:100%}.text-center{text-align:center}.grid{display:grid;gap:1rem}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-auto{grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr))}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-1{gap:.5rem}.gap-2{gap:1rem}.gap-3{gap:1.5rem}@media (max-width: 1280px){.grid-cols-4{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width: 1024px){:root{--sidebar-width: 220px}.kpi-row{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.grid-cols-3,.grid-cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}.hide-lg-down{display:none!important}}@media (max-width: 768px){:root{--sidebar-width: 0px}.page-content{margin-left:0!important;max-width:100vw!important;padding-top:3.5rem}.page-header{flex-direction:column;align-items:stretch;gap:.65rem}.page-header>*{width:100%}.kpi-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.grid-cols-2,.grid-cols-3,.grid-cols-4,.form-grid{grid-template-columns:1fr}table{font-size:var(--font-sm)}thead th,tbody td{padding:.55rem .65rem}.hide-md-down{display:none!important}.stack-md{flex-direction:column!important}.stack-md>*{width:100%!important}.page-header .btn,.header-controls .btn{width:100%}}@media (max-width: 640px){.kpi-card{padding:.8rem;gap:.65rem}.modal-box{border-radius:var(--radius-sm);padding:1rem}.hide-sm-down{display:none!important}}@media (max-width: 480px){.kpi-row{grid-template-columns:1fr}.btn{padding:.45rem .8rem}.btn-sm{padding:.35rem .65rem}.pagination{justify-content:center}.page-title{font-size:1.2rem}.hide-xs-down{display:none!important}}@media (min-width: 769px){.only-mobile{display:none!important}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
