*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--brand-1: #7C3AED;--brand-2: #6D28D9;--brand-3: #5B21B6;--brand-light: #EDE9FE;--brand-mid: #DDD6FE;--grad: linear-gradient(135deg, #8B5CF6 0%, #6D28D9 100%);--grad-soft: linear-gradient(135deg, #EDE9FE 0%, #DDD6FE 100%);--emerald: #10B981;--emerald-bg: #D1FAE5;--amber: #F59E0B;--amber-bg: #FEF3C7;--red: #EF4444;--red-bg: #FEE2E2;--blue: #3B82F6;--blue-bg: #DBEAFE;--bg: #F5F3FF;--card: #FFFFFF;--border: #E5E7EB;--border-mid: #D1D5DB;--text-1: #0F172A;--text-2: #475569;--text-3: #94A3B8;--sidebar-bg: #1E1245;--radius: 12px;--radius-sm: 8px;--radius-lg: 16px;--radius-xl: 22px;--shadow-xs: 0 1px 2px rgba(24,20,54,.05);--shadow-sm: 0 1px 2px rgba(24,20,54,.05), 0 2px 6px rgba(109,40,217,.04);--shadow: 0 1px 3px rgba(24,20,54,.05), 0 6px 16px rgba(109,40,217,.06);--shadow-md: 0 4px 12px rgba(24,20,54,.07), 0 16px 36px rgba(109,40,217,.13);--shadow-lg: 0 8px 24px rgba(24,20,54,.1), 0 30px 60px rgba(109,40,217,.18);--ring: 0 0 0 3px rgba(124,58,237,.16);--hairline: rgba(17,12,46,.06)}body{font-family:DM Sans,sans-serif;background:var(--bg);color:var(--text-1);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-mid);border-radius:10px}.layout{display:flex;height:100vh;overflow:hidden}.main-area{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.page-content{flex:1;overflow-y:auto;padding:28px 32px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border-radius:var(--radius-sm);font-family:DM Sans,sans-serif;font-size:13px;font-weight:600;cursor:pointer;border:none;transition:all .15s;text-decoration:none}.btn-primary{background:var(--grad);color:#fff;box-shadow:0 2px 8px #6d28d940}.btn-primary:hover{opacity:.9;transform:translateY(-1px)}.btn-secondary{background:var(--card);color:var(--text-1);border:1px solid var(--border)}.btn-secondary:hover{border-color:var(--brand-1);color:var(--brand-1)}.btn-danger{background:var(--red-bg);color:var(--red);border:1px solid #fca5a5}.btn-sm{padding:5px 11px;font-size:12px}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:600}.badge-green{background:var(--emerald-bg);color:#065f46}.badge-amber{background:var(--amber-bg);color:#92400e}.badge-red{background:var(--red-bg);color:#991b1b}.badge-blue{background:var(--blue-bg);color:#1e40af}.badge-purple{background:var(--brand-light);color:var(--brand-2)}.badge-gray{background:#f3f4f6;color:var(--text-2);border:1px solid var(--border)}.badge-navy{background:var(--brand-light);color:var(--brand-1)}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{padding:9px 14px;text-align:left;color:var(--text-3);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border)}.table td{padding:12px 14px;border-bottom:1px solid var(--border);vertical-align:middle}.table tbody tr:hover{background:#fafaff}.table tbody tr:last-child td{border-bottom:none}.input{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:DM Sans,sans-serif;font-size:13px;color:var(--text-1);background:var(--card);outline:none;transition:border-color .15s}.input:focus{border-color:var(--brand-1);box-shadow:0 0 0 3px #7c3aed14}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.label{display:block;font-size:12px;font-weight:600;color:var(--text-2);margin-bottom:5px}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fadeUp .25s ease-out}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f122a73;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow-md);width:100%;max-width:560px;max-height:90vh;overflow-y:auto}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border)}.modal-body{padding:24px}.modal-footer{padding:16px 24px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-field{display:flex;flex-direction:column;gap:5px}.form-field.full{grid-column:1 / -1}.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px}.page-title{font-size:20px;font-weight:700;color:var(--text-1)}.page-subtitle{font-size:13px;color:var(--text-3);margin-top:2px}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.kpi-card{padding:20px}.kpi-label{font-size:11px;font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}.kpi-value{font-size:26px;font-weight:700;line-height:1}.kpi-sub{font-size:12px;color:var(--text-3);margin-top:5px}.progress-bar{height:6px;background:var(--border);border-radius:3px;overflow:hidden}.progress-fill{height:100%;border-radius:3px;transition:width .6s ease}.empty-state{padding:60px;text-align:center;color:var(--text-3)}.empty-state-icon{font-size:40px;margin-bottom:12px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:24px}.tab{padding:10px 16px;font-size:13px;font-weight:500;color:var(--text-2);cursor:pointer;border:none;background:none;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s}.tab.active{color:var(--brand-1);border-bottom-color:var(--brand-1);font-weight:600}.tab:hover:not(.active){color:var(--text-1)}.chip-group{display:flex;gap:6px;flex-wrap:wrap}.chip{padding:5px 12px;border-radius:999px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid var(--border);background:var(--card);color:var(--text-2);transition:all .15s}.chip.active{background:var(--grad);color:#fff;border-color:transparent}.chip:hover:not(.active){border-color:var(--brand-1);color:var(--brand-1)}.section-accent{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;margin-bottom:16px}.section-accent:before{content:"";width:3px;height:18px;background:var(--grad);border-radius:2px}[data-theme=dark]{--brand-1: #A78BFA;--brand-2: #8B5CF6;--brand-light: #2D1F5E;--brand-mid: #3D2A7A;--grad: linear-gradient(135deg, #A78BFA 0%, #8B5CF6 100%);--grad-soft: linear-gradient(135deg, #2D1F5E 0%, #3D2A7A 100%);--emerald: #34D399;--emerald-bg: #064E3B;--amber: #FCD34D;--amber-bg: #78350F;--red: #F87171;--red-bg: #7F1D1D;--blue: #60A5FA;--blue-bg: #1e3a8a;--bg: #0F0F1A;--card: #1A1A2E;--border: #2D2D4A;--border-mid: #3D3D5A;--text-1: #F1F0FF;--text-2: #A09DC0;--text-3: #6B6890;--sidebar-bg: #0D0D1F}[data-theme=dark] body{background:var(--bg)}[data-theme=dark] .table tbody tr:hover{background:#1e1e35}[data-theme=dark] .input{background:#1a1a2e;color:var(--text-1)}[data-theme=dark] .input:focus{box-shadow:0 0 0 3px #a78bfa26}[data-theme=dark] .badge-gray{background:#2d2d4a;color:var(--text-2);border-color:var(--border)}[data-theme=dark] .chip{background:#1a1a2e;color:var(--text-2);border-color:var(--border)}[data-theme=dark] .chip:hover:not(.active){border-color:var(--brand-1);color:var(--brand-1)}@keyframes toastIn{0%{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.breadcrumb{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-3);margin-bottom:6px}.breadcrumb span{color:var(--text-3)}.breadcrumb a{color:var(--text-2);cursor:pointer;text-decoration:none}.breadcrumb a:hover{color:var(--brand-1)}.alert-banner{display:flex;align-items:flex-start;gap:10;padding:12px 16px;border-radius:10px;font-size:13px;margin-bottom:16px}.alert-warning{background:var(--amber-bg);border:1px solid var(--amber);color:var(--text-1)}.alert-danger{background:var(--red-bg);border:1px solid var(--red);color:var(--text-1)}.alert-info{background:var(--blue-bg);border:1px solid var(--blue);color:var(--text-1)}.alert-success{background:var(--emerald-bg);border:1px solid var(--emerald);color:var(--text-1)}.forecast-bar{position:relative;height:8px;background:var(--border);border-radius:4px;overflow:visible}.forecast-actual{height:100%;border-radius:4px 0 0 4px;background:var(--brand-1)}.forecast-projected{height:100%;border-radius:0 4px 4px 0;background:repeating-linear-gradient(90deg,var(--brand-1) 0px,var(--brand-1) 4px,transparent 4px,transparent 8px);opacity:.5}.forecast-limit{position:absolute;top:-4px;width:2px;height:16px;background:var(--red);border-radius:1px}kbd{font-size:10px;padding:2px 6px;background:var(--bg);border:1px solid var(--border);border-radius:5px;color:var(--text-3);font-family:DM Mono,monospace}.renewal-urgent{background:#fee2e2;color:#991b1b}.renewal-soon{background:#fef3c7;color:#92400e}.renewal-ok{background:#d1fae5;color:#065f46}.duplicate-warning{padding:8px 12px;background:var(--amber-bg);border:1px solid var(--amber);border-radius:8px;font-size:12px;color:var(--text-1);margin-top:8px}@media(max-width:768px){.layout{flex-direction:column;height:auto;min-height:100vh}aside{width:100%!important;flex-direction:row!important;height:56px!important;overflow-x:auto;overflow-y:hidden;padding:0 8px!important}aside>div:first-child{display:none!important}aside>nav{flex-direction:row!important;padding:0!important;display:flex;align-items:center;gap:2px;overflow-x:auto;white-space:nowrap}aside>div:last-child{display:none!important}aside nav>div:first-child{display:none}aside nav button{flex-direction:column!important;min-width:56px;padding:6px 8px!important;font-size:9px!important;gap:2px!important;border-radius:6px!important}aside nav button span:first-child{font-size:16px!important;width:auto!important}.main-area{min-width:0}.page-content{padding:16px!important}.kpi-grid{grid-template-columns:repeat(2,1fr)!important;gap:10px!important}.page-header{flex-direction:column;gap:12px;align-items:flex-start!important}.page-header>div:last-child{width:100%;justify-content:flex-start}.form-grid{grid-template-columns:1fr!important}.form-field.full{grid-column:1!important}.modal{max-width:100%!important;max-height:95vh!important;margin:0!important;border-radius:12px 12px 0 0!important}.modal-backdrop{align-items:flex-end!important;padding:0!important}.table{font-size:12px}.table th,.table td{padding:8px 10px!important}.table .hide-mobile{display:none!important}header{padding:0 16px!important}header .hide-mobile{display:none!important}}@media(max-width:480px){.kpi-grid{grid-template-columns:1fr!important}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}[data-theme=dark] header{background:var(--card)!important;border-color:var(--border)!important}[data-theme=dark] header button{background:var(--card)!important;border-color:var(--border)!important;color:var(--text-1)!important}[data-theme=dark] header button:hover{border-color:var(--brand-1)!important}html{scroll-behavior:smooth}body{font-feature-settings:"cv11","ss01";letter-spacing:-.006em;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}::selection{background:var(--brand-mid);color:var(--brand-3)}.page-content{background:radial-gradient(1200px 520px at 88% -8%,rgba(139,92,246,.07),transparent 60%),radial-gradient(900px 480px at -6% 108%,rgba(16,185,129,.045),transparent 55%)}[data-theme=dark] .page-content{background:radial-gradient(1200px 560px at 88% -8%,rgba(139,92,246,.14),transparent 60%),radial-gradient(900px 520px at -6% 110%,rgba(52,211,153,.06),transparent 55%)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--border-mid) 70%,transparent);border-radius:999px;border:3px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--brand-1) 55%,transparent);background-clip:padding-box}*{scrollbar-width:thin;scrollbar-color:var(--border-mid) transparent}.kpi-value,.table td,.table th,kbd{font-variant-numeric:tabular-nums}.kpi-value{letter-spacing:-.03em}.page-title{letter-spacing:-.02em}.card{border-color:var(--hairline);box-shadow:var(--shadow);transition:box-shadow .28s cubic-bezier(.2,.7,.2,1),transform .28s cubic-bezier(.2,.7,.2,1),border-color .28s ease}.card:hover{box-shadow:var(--shadow-md)}[data-theme=dark] .card{border-color:var(--border)}.kpi-card{position:relative;cursor:default;overflow:hidden;background:linear-gradient(180deg,color-mix(in srgb,var(--card) 100%,transparent),color-mix(in srgb,var(--brand-light) 22%,var(--card)))}.kpi-card:after{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--grad);opacity:0;transition:opacity .28s ease}.kpi-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--brand-mid)}.kpi-card:hover:after{opacity:.9}[data-theme=dark] .kpi-card{background:linear-gradient(180deg,var(--card),color-mix(in srgb,var(--brand-light) 30%,var(--card)))}.btn{transition:transform .18s cubic-bezier(.2,.7,.2,1),box-shadow .22s ease,background .18s ease,border-color .18s ease,color .18s ease;will-change:transform}.btn-primary{background:var(--grad);box-shadow:0 1px #ffffff2e inset,0 2px 8px #6d28d947,0 1px 3px #1814361f}.btn-primary:hover{transform:translateY(-1.5px);box-shadow:0 1px #ffffff38 inset,0 8px 22px #6d28d966,0 2px 6px #18143624;opacity:1}.btn:active{transform:translateY(0) scale(.97)}.btn-secondary{box-shadow:var(--shadow-xs)}.btn-secondary:hover{background:var(--brand-light);border-color:var(--brand-mid);color:var(--brand-2)}.btn-danger:hover{background:color-mix(in srgb,var(--red) 16%,var(--card));border-color:var(--red)}[data-theme=dark] .btn-secondary:hover{background:var(--brand-light);color:var(--text-1)}.btn:focus-visible,.chip:focus-visible,.tab:focus-visible,.badge:focus-visible,a:focus-visible,.input:focus-visible{outline:2px solid var(--brand-1);outline-offset:2px;border-radius:7px}aside nav button:focus-visible{outline:2px solid rgba(167,139,250,.9);outline-offset:-2px}.input{transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}.input:hover:not(:focus){border-color:var(--border-mid)}.input:focus{box-shadow:var(--ring)}.select{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2394A3B8' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");background-repeat:no-repeat;background-position:right 11px center;background-size:11px;padding-right:30px}.badge{box-shadow:inset 0 0 0 1px color-mix(in srgb,currentColor 16%,transparent)}.badge-gray{box-shadow:none}.table th{background:color-mix(in srgb,var(--brand-light) 30%,var(--card))}[data-theme=dark] .table th{background:color-mix(in srgb,var(--brand-light) 26%,var(--card))}.table tbody tr{transition:background .14s ease,box-shadow .14s ease}.table tbody tr:hover{background:color-mix(in srgb,var(--brand-light) 30%,transparent)}.chip{transition:all .18s cubic-bezier(.2,.7,.2,1)}.chip.active{box-shadow:0 2px 10px #6d28d947}.chip:active{transform:scale(.96)}.tab{transition:color .18s ease,border-color .18s ease}@keyframes modalPop{0%{opacity:0;transform:translateY(16px) scale(.975)}to{opacity:1;transform:none}}@keyframes backdropFade{0%{opacity:0}to{opacity:1}}.modal-backdrop{animation:backdropFade .18s ease;-webkit-backdrop-filter:blur(6px) saturate(1.1);backdrop-filter:blur(6px) saturate(1.1);background:#0f122a85}.modal{animation:modalPop .32s cubic-bezier(.16,1,.3,1);box-shadow:var(--shadow-lg);border:1px solid var(--hairline)}[data-theme=dark] .modal{border-color:var(--border)}aside{box-shadow:inset -1px 0 #ffffff0a,4px 0 24px #0d0d1f1a}aside nav button{transition:background .16s ease,color .16s ease,transform .16s ease}.progress-bar{background:color-mix(in srgb,var(--border) 80%,transparent)}.progress-fill{box-shadow:0 0 8px color-mix(in srgb,var(--brand-1) 45%,transparent)}.spinner{width:26px;height:26px;border:2.5px solid var(--border);border-top-color:var(--brand-1);border-radius:50%;animation:spin .7s linear infinite}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.fade-up{animation:fadeUp .34s cubic-bezier(.2,.7,.2,1)}.empty-state-icon{opacity:.85}a{transition:color .15s ease}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
