.dashboard{display:flex;flex-direction:column;gap:28px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;padding-bottom:24px;border-bottom:1px solid var(--line);gap:24px;flex-wrap:wrap}.page-eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted);font-weight:600;margin-bottom:6px}.page-title{font-family:var(--body);font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.2;color:var(--ink)}.page-title em{font-style:normal;font-weight:700;color:var(--highlight)}.page-sub{font-size:13px;color:var(--ink-muted);margin-top:6px}.page-meta{text-align:right;font-size:12px;color:var(--ink-muted)}.page-meta strong{display:block;color:var(--ink);font-family:var(--mono);font-size:13px;letter-spacing:-.02em;margin-bottom:2px}.page-meta span{display:block}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}.stat{background:var(--bg-card);padding:24px 26px}.stat.primary{background:var(--bg-dark);color:var(--bg)}.stat.primary .stat-label,.stat.primary .stat-detail{color:var(--ink-dim)}.stat.pending{background:var(--bg-elevated)}.stat-label{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted);font-weight:600;margin-bottom:10px}.stat-value{font-family:var(--body);font-size:28px;font-weight:700;letter-spacing:-.02em;line-height:1.1;margin-bottom:8px;color:var(--ink)}.stat.primary .stat-value{color:#fff}.stat-detail{font-size:12px;color:var(--ink-soft);font-family:var(--mono)}.dash-row{display:grid;gap:24px}.dash-row-2{grid-template-columns:1.5fr 1fr}.dash-col{min-width:0}.panel{background:var(--bg-card);border:1px solid var(--line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;height:100%}.panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 24px 16px;border-bottom:1px solid var(--line)}.panel-title{font-family:var(--body);font-size:16px;font-weight:700;letter-spacing:-.01em;color:var(--ink)}.panel-sub{font-size:12px;color:var(--ink-muted);margin-top:4px}.panel-meta{font-size:12px;color:var(--ink-soft);font-weight:600;white-space:nowrap}.panel-foot{padding:12px 24px;border-top:1px solid var(--line);background:var(--bg-elevated)}.mini{font-size:11px}.cat-list{padding:16px 24px 20px;display:flex;flex-direction:column;gap:14px}.cat-row{display:grid;grid-template-columns:minmax(180px,1.2fr) 2fr auto;align-items:center;gap:14px}.cat-meta{display:flex;align-items:center;gap:10px}.cat-swatch{width:10px;height:10px;border-radius:2px;flex-shrink:0}.cat-name{font-size:13px;font-weight:500}.cat-count{font-size:11px;color:var(--ink-muted)}.cat-bar-wrap{height:8px;background:var(--bg-elevated);border-radius:4px;overflow:hidden}.cat-bar{height:100%;border-radius:4px;transition:width .4s ease}.cat-value{font-size:13px;font-weight:600;text-align:right;min-width:110px}.toolbar{display:flex;align-items:center;gap:12px;padding:14px 24px;border-bottom:1px solid var(--line);background:var(--bg-elevated);flex-wrap:wrap}.search{position:relative;flex:1;min-width:220px;max-width:360px}.search input{width:100%;padding:8px 14px 8px 34px;border:1px solid var(--line-strong);border-radius:6px;background:var(--bg-card);font-size:13px;color:var(--ink)}.search input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:var(--ink-muted)}.pill-row{display:flex;gap:6px;flex-wrap:wrap}.pill{padding:6px 12px;border:1px solid var(--line-strong);border-radius:999px;background:var(--bg-card);font-size:12px;font-weight:500;color:var(--ink-soft);transition:all .15s}.pill:hover{border-color:var(--ink-muted);color:var(--ink)}.pill.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.table-wrap{overflow-x:auto;max-height:540px;overflow-y:auto}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted);font-weight:600;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--bg-elevated);position:sticky;top:0;z-index:1}.table th.num{text-align:right}.table td{padding:14px 16px;border-bottom:1px solid var(--line);font-size:13px;vertical-align:middle}.table tr:last-child td{border-bottom:none}.table tr:hover td{background:var(--bg-elevated)}.table td.num{text-align:right}.empty{text-align:center;padding:40px;color:var(--ink-muted);font-size:13px}.app-cell{display:flex;align-items:center;gap:12px}.app-icon{width:32px;height:32px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;font-weight:700;color:var(--bg);flex-shrink:0;letter-spacing:-.02em}.app-name{font-weight:600;font-size:13px}.app-sub{font-size:11px;color:var(--ink-muted);margin-top:2px;max-width:380px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge-cat{display:inline-block;padding:3px 8px;background:var(--bg-elevated);border-radius:4px;font-size:11px;font-weight:600;color:var(--ink-soft)}.cost-cell{display:inline-flex;flex-direction:column;align-items:flex-end;gap:2px}.cost-source{font-size:9px;letter-spacing:.08em;text-transform:uppercase;font-family:var(--mono);font-weight:600}.cost-source.billed{color:var(--accent)}.cost-source.contracted{color:var(--warn)}.sku-list{padding:16px 24px 20px;display:flex;flex-direction:column;gap:12px}.sku-row{display:grid;grid-template-columns:1.6fr 1fr auto;align-items:center;gap:14px}.sku-name{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sku-bar-wrap{height:6px;background:var(--bg-elevated);border-radius:3px;overflow:hidden}.sku-bar{height:100%;background:linear-gradient(90deg,#0078d4,#4096dc);border-radius:3px}.sku-stats{display:flex;align-items:center;gap:14px;font-size:12px}.sku-users{color:var(--ink-soft);min-width:36px;text-align:right}.sku-cost{font-weight:600;min-width:80px;text-align:right}.findings{padding:12px 16px;display:flex;flex-direction:column;gap:4px;max-height:380px;overflow-y:auto}.finding{display:flex;align-items:flex-start;gap:12px;padding:12px;border-radius:8px;transition:background .15s}.finding:hover{background:var(--bg-elevated)}.finding-sev{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:4px 7px;border-radius:4px;flex-shrink:0;margin-top:1px}.finding-sev.sev-high{background:var(--danger-soft);color:var(--danger)}.finding-sev.sev-medium{background:var(--warn-soft);color:var(--warn)}.finding-sev.sev-low{background:var(--bg-elevated);color:var(--ink-soft)}.finding-body{flex:1;min-width:0}.finding-title{font-size:13px;font-weight:600;margin-bottom:2px}.finding-desc{font-size:12px;color:var(--ink-soft);line-height:1.4}.finding-amount{font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap}.vendor-list{padding:16px 24px 20px;display:flex;flex-direction:column;gap:12px}.vendor-row{display:grid;grid-template-columns:minmax(120px,1fr) 1.4fr auto;align-items:center;gap:12px}.vendor-meta{display:flex;align-items:center;gap:10px}.vendor-swatch{width:10px;height:10px;border-radius:50%;flex-shrink:0}.vendor-name{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vendor-apps{font-size:10px;color:var(--ink-muted);padding:2px 5px;background:var(--bg-elevated);border-radius:3px}.vendor-bar-wrap{height:6px;background:var(--bg-elevated);border-radius:3px;overflow:hidden}.vendor-bar{height:100%;border-radius:3px}.vendor-total{font-size:12px;font-weight:600;text-align:right;min-width:100px}.page-footer{padding-top:24px;border-top:1px solid var(--line);display:flex;justify-content:space-between;font-size:11px;color:var(--ink-muted);font-family:var(--mono)}@media (max-width: 1100px){.stat-grid{grid-template-columns:repeat(2,1fr)}.dash-row-2{grid-template-columns:1fr}}@media (max-width: 700px){.page-title,.stat-value{font-size:28px}.stat-grid{grid-template-columns:1fr}.cat-row{grid-template-columns:1fr;gap:6px}.cat-bar-wrap{order:3}.sku-row,.vendor-row{grid-template-columns:1fr}}.applications-page{display:flex;flex-direction:column;gap:24px}.save-toast{padding:10px 16px;background:var(--accent);color:#fff;border-radius:8px;font-size:13px;font-weight:500;display:flex;align-items:center;gap:8px;animation:slideDown .2s ease-out}.save-toast.error{background:var(--danger)}@keyframes slideDown{0%{transform:translateY(-10px);opacity:0}to{transform:translateY(0);opacity:1}}.local-overrides-warning{padding:10px 16px;background:var(--warn-soft);color:var(--warn);border:1px solid var(--warn);border-radius:8px;font-size:12px;font-weight:500;display:flex;align-items:center;justify-content:space-between;gap:12px}.local-overrides-warning button{padding:6px 10px;background:var(--warn);color:#fff;border:none;border-radius:4px;font-size:11px;font-weight:600;cursor:pointer}.app-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.app-card{background:var(--bg-card);border:1px solid var(--line);border-radius:12px;overflow:hidden;transition:border-color .15s,box-shadow .15s}.app-card:hover{border-color:var(--line-strong);box-shadow:0 4px 12px #0e2a470f}.app-card.expanded{grid-column:1 / -1;border-color:var(--accent);box-shadow:0 8px 24px #1d4ed81f}.app-card-front{width:100%;text-align:left;background:none;border:none;padding:20px;cursor:pointer;display:block;position:relative}.app-card.expanded .app-card-front{border-bottom:1px solid var(--line)}.app-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.app-card-name{font-size:15px;font-weight:700;line-height:1.3;color:var(--ink);margin-bottom:4px;letter-spacing:-.01em}.app-card-vendor{font-size:12px;color:var(--ink-muted);margin-bottom:16px}.app-card-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;padding-top:12px;border-top:1px solid var(--line)}.stat-small{display:flex;flex-direction:column;gap:3px}.stat-label-small{font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);font-weight:600}.stat-value-small{font-size:13px;font-weight:600;color:var(--ink)}.stat-value-small.mini{font-size:10px}.cost-source{position:absolute;top:20px;right:20px;font-size:9px;letter-spacing:.08em;text-transform:uppercase;font-family:var(--mono);font-weight:600;padding:2px 6px;border-radius:3px}.cost-source.billed{background:var(--accent-soft);color:var(--accent)}.cost-source.contracted{background:var(--highlight-soft);color:var(--highlight)}.app-card-detail{padding:24px;background:var(--bg-elevated)}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:18px 24px;margin-bottom:20px}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field-label{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);font-weight:600}.field-value{font-size:13px;color:var(--ink);font-weight:500;overflow-wrap:break-word}.field-value.mono{font-family:var(--mono);font-size:12px}.detail-purpose{padding-top:16px;border-top:1px solid var(--line);margin-bottom:12px}.field-purpose{font-size:13px;color:var(--ink-soft);line-height:1.6;margin-top:4px}.field-purpose.mono.mini{font-family:var(--mono);font-size:11px;color:var(--ink-muted)}.detail-actions{display:flex;gap:8px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}.badge-cat{display:inline-block;padding:3px 8px;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.04em;background:var(--bg-elevated);color:var(--ink-soft)}.btn-primary{padding:9px 16px;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.btn-primary:hover{background:#1e3fb2}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{padding:9px 16px;background:var(--bg-card);color:var(--ink-soft);border:1px solid var(--line-strong);border-radius:6px;font-size:13px;font-weight:600;cursor:pointer}.btn-secondary:hover{background:var(--bg-elevated)}.btn-danger{padding:9px 16px;background:var(--bg-card);color:var(--danger);border:1px solid var(--danger);border-radius:6px;font-size:13px;font-weight:600;cursor:pointer}.btn-danger:hover{background:var(--danger);color:#fff}.apps-loading,.apps-error,.apps-empty{padding:40px;text-align:center;color:var(--ink-muted);font-size:14px;background:var(--bg-card);border:1px solid var(--line);border-radius:8px}.apps-error{color:var(--danger)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0e2a4780;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:24px;z-index:100;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:#fff;border-radius:14px;width:100%;max-width:700px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 30px 80px #0000004d;animation:slideUp .2s ease-out}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--line);flex-shrink:0}.modal-title{font-size:18px;font-weight:700;color:var(--ink)}.modal-close{width:32px;height:32px;border-radius:6px;background:var(--bg-elevated);border:none;font-size:20px;color:var(--ink-soft);cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1}.modal-close:hover{background:var(--line)}.modal-body{padding:24px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:16px}.modal-footer{padding:16px 24px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end;background:var(--bg-elevated);flex-shrink:0}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-field{display:flex;flex-direction:column;gap:6px}.form-label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.form-required{color:var(--danger);margin-left:2px}.form-field input,.form-field select,.form-field textarea{width:100%;padding:9px 12px;border:1px solid var(--line-strong);border-radius:6px;background:#fff;font-size:13px;color:var(--ink);font-family:var(--body);resize:vertical}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.form-field input:disabled,.form-field input[readonly]{background:var(--bg-elevated);color:var(--ink-muted);cursor:not-allowed}.form-hint{font-size:11px;color:var(--ink-muted);line-height:1.4}@media (max-width: 700px){.form-row{grid-template-columns:1fr}.app-card.expanded{grid-column:1}.detail-grid{grid-template-columns:1fr 1fr}}.page-stack{display:flex;flex-direction:column;gap:24px}.emp-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.emp-stat{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;padding:16px 18px}.emp-stat.highlight{border-color:var(--highlight);background:var(--highlight-soft)}.emp-stat-label{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);font-weight:600;margin-bottom:8px}.emp-stat-value{font-size:22px;font-weight:700;letter-spacing:-.02em;color:var(--ink)}.emp-table-wrap{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;overflow:hidden;overflow-x:auto}.emp-table{width:100%;border-collapse:collapse}.emp-table th{text-align:left;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted);font-weight:600;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--bg-elevated)}.emp-table th.num{text-align:right}.emp-table td{padding:14px 16px;border-bottom:1px solid var(--line);font-size:13px;vertical-align:middle}.emp-table td.num{text-align:right}.emp-row{cursor:pointer;transition:background .1s}.emp-row:hover td{background:var(--bg-elevated)}.emp-row.expanded td{background:var(--accent-soft);font-weight:600}.emp-cell{display:flex;align-items:center;gap:12px}.emp-avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}.emp-name{font-weight:600;font-size:13px;color:var(--ink)}.emp-email{font-size:11px;color:var(--ink-muted);font-family:var(--mono);margin-top:2px}.expand-arrow{display:inline-block;width:22px;height:22px;border-radius:50%;background:var(--bg-elevated);color:var(--ink-soft);font-size:16px;line-height:22px;text-align:center;font-weight:600}.emp-detail-row td{padding:0;background:var(--bg-elevated)}.emp-detail{padding:20px 24px 24px;border-top:1px solid var(--line)}.emp-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:18px;margin-bottom:16px}.emp-detail-note{font-size:12px;color:var(--ink-muted);padding-top:14px;border-top:1px solid var(--line);line-height:1.5}@media (max-width: 700px){.emp-stats{grid-template-columns:repeat(2,1fr)}.emp-table{font-size:12px}}.idle-hero{background:linear-gradient(135deg,#0e2a47,#1d4ed8);color:#fff;border-radius:14px;padding:28px 32px;display:grid;grid-template-columns:1.2fr 1fr;gap:32px;position:relative;overflow:hidden}.idle-hero:after{content:"";position:absolute;top:-80px;right:-80px;width:280px;height:280px;background:radial-gradient(circle,rgba(249,115,22,.22) 0%,transparent 70%);pointer-events:none}.idle-hero-main{position:relative;z-index:1}.idle-hero-label{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#c2cad6;font-weight:600;margin-bottom:10px}.idle-hero-value{font-size:44px;font-weight:700;letter-spacing:-.03em;line-height:1;color:#fff;margin-bottom:10px}.idle-hero-sub{font-size:13px;color:#c2cad6;line-height:1.5}.idle-hero-breakdown{display:flex;flex-direction:column;gap:12px;position:relative;z-index:1}.idle-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.1)}.idle-row:last-child{border-bottom:none}.idle-row-label{font-size:13px;color:#c2cad6}.idle-row-right{display:flex;align-items:center;gap:14px}.idle-row-count{font-family:var(--mono);font-size:11px;color:#8aa2bd}.idle-row-amount{font-size:14px;font-weight:700;color:#fff}.idle-pending{font-size:11px;color:#f97316;font-style:italic}.findings-list{padding:16px;display:flex;flex-direction:column;gap:8px;max-height:600px;overflow-y:auto}.finding-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;padding:14px 16px;border-radius:10px;background:var(--bg-elevated);border:1px solid var(--line)}.finding-content{min-width:0}.finding-title{font-size:13px;font-weight:600;color:var(--ink);margin-bottom:4px}.finding-desc{font-size:12px;color:var(--ink-soft);line-height:1.5}.finding-impact{text-align:right}.finding-impact-label{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);font-weight:600}.finding-impact-value{font-size:14px;font-weight:700;color:var(--ink);margin-top:2px}@media (max-width: 900px){.idle-hero{grid-template-columns:1fr}.idle-hero-value{font-size:34px}}.renewals-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.ren-summary{background:var(--bg-card);border:1px solid var(--line);border-left:4px solid var(--line);border-radius:10px;padding:16px 18px}.ren-summary.tone-danger{border-left-color:var(--danger)}.ren-summary.tone-warn{border-left-color:var(--highlight)}.ren-summary.tone-info{border-left-color:var(--accent)}.ren-summary.tone-neutral{border-left-color:var(--line-strong)}.ren-summary-label{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);font-weight:600;margin-bottom:8px}.ren-summary-count{font-size:26px;font-weight:700;letter-spacing:-.02em;color:var(--ink)}.ren-summary-value{font-size:11px;color:var(--ink-soft);margin-top:4px}.ren-section{background:var(--bg-card);border:1px solid var(--line);border-radius:12px;overflow:hidden}.ren-section.tone-danger{border-left:4px solid var(--danger)}.ren-section.tone-warn{border-left:4px solid var(--highlight)}.ren-section.tone-info{border-left:4px solid var(--accent)}.ren-section.tone-neutral{border-left:4px solid var(--line-strong)}.ren-section-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line);background:var(--bg-elevated)}.ren-section-title{font-size:14px;font-weight:700;color:var(--ink)}.ren-section-meta{font-size:11px;color:var(--ink-muted);font-weight:600}.ren-list{display:flex;flex-direction:column}.ren-row{display:grid;grid-template-columns:200px 1fr auto;align-items:center;gap:16px;padding:14px 20px;border-bottom:1px solid var(--line)}.ren-row:last-child{border-bottom:none}.ren-date{display:flex;flex-direction:column;gap:2px}.ren-date-text{font-size:13px;font-weight:600;color:var(--ink)}.ren-date-empty{color:var(--ink-muted);font-size:13px}.ren-days{font-size:11px;color:var(--ink-muted);font-family:var(--mono)}.ren-days.overdue{color:var(--danger);font-weight:600}.ren-days.soon{color:var(--highlight);font-weight:600}.ren-app{display:flex;align-items:center;gap:12px;min-width:0}.app-icon-mini{width:28px;height:28px;border-radius:5px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:10px;font-weight:700;color:#fff;flex-shrink:0}.ren-app-name{font-size:13px;font-weight:600;color:var(--ink)}.ren-app-meta{font-size:11px;color:var(--ink-muted);margin-top:2px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.dot-sep{color:var(--ink-dim)}.ren-cost{font-size:13px;font-weight:700;color:var(--ink);white-space:nowrap}@media (max-width: 700px){.renewals-summary{grid-template-columns:repeat(2,1fr)}.ren-row{grid-template-columns:1fr;gap:8px}}.upload-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:20px}.upload-card,.upload-info{background:var(--bg-card);border:1px solid var(--line);border-radius:12px;padding:24px}.upload-info{background:var(--bg-elevated)}.card-title{font-size:13px;font-weight:700;letter-spacing:-.01em;color:var(--ink);margin-bottom:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft)}.dropzone{position:relative;border:2px dashed var(--line-strong);border-radius:10px;padding:32px;text-align:center;transition:border-color .15s,background .15s}.dropzone.over{border-color:var(--accent);background:var(--accent-soft)}.dropzone.has-file{border-style:solid;border-color:var(--accent);background:var(--accent-soft)}.dropzone input{display:none}.dropzone-inner{display:block;cursor:pointer}.dropzone-icon{font-size:32px;margin-bottom:12px}.dropzone-text{font-size:14px;font-weight:600;color:var(--ink);margin-bottom:4px}.dropzone-sub{font-size:11px;color:var(--ink-muted);font-family:var(--mono)}.dropzone-filename{font-size:14px;font-weight:600;color:var(--ink);margin-bottom:4px}.dropzone-size{font-size:11px;color:var(--ink-muted);font-family:var(--mono);margin-bottom:8px}.link{background:none;border:none;color:var(--accent);font-size:12px;cursor:pointer;text-decoration:underline}.period-input{width:100%;padding:11px 14px;border:1px solid var(--line-strong);border-radius:8px;background:#fff;font-size:14px;font-family:var(--mono);color:var(--ink)}.period-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.hint{font-size:11px;color:var(--ink-muted);margin-top:6px}.mt-8{margin-top:8px}.upload-error{margin-top:16px;padding:10px 14px;background:var(--danger-soft);color:var(--danger);border-radius:6px;font-size:12px;font-weight:500}.upload-btn{width:100%;margin-top:20px;padding:12px;font-size:14px}.info-title{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 8px}.info-title+.info-title{margin-top:20px}.info-list{margin:0 0 0 18px;padding:0;font-size:12px;color:var(--ink-soft);line-height:1.6}.info-text{font-size:12px;color:var(--ink-soft);line-height:1.6}.info-text code{background:var(--bg-card);padding:1px 5px;border-radius:3px;font-size:11px;font-family:var(--mono)}.restricted{background:var(--warn-soft);border:1px solid var(--highlight);color:var(--highlight);padding:24px;border-radius:10px;font-size:14px;font-weight:500;text-align:center}.upload-result{background:var(--accent-soft);border:1px solid var(--accent);border-radius:12px;padding:24px}.result-title{font-size:16px;font-weight:700;color:var(--accent);margin-bottom:14px}.result-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;font-size:13px;margin-bottom:14px}.result-stats>div{background:#fff;padding:10px 14px;border-radius:6px;display:flex;flex-direction:column;gap:2px}.result-stats strong{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);font-weight:600}.result-note{font-size:12px;color:var(--ink-soft)}@media (max-width: 900px){.upload-grid{grid-template-columns:1fr}.result-stats{grid-template-columns:repeat(2,1fr)}}.audit-loading,.audit-error,.audit-empty{padding:32px;text-align:center;background:var(--bg-card);border:1px solid var(--line);border-radius:10px;color:var(--ink-muted);font-size:14px}.audit-error{color:var(--danger);background:var(--danger-soft);border-color:var(--danger);text-align:left;font-weight:500}.audit-list{display:flex;flex-direction:column;gap:8px}.audit-item{display:grid;grid-template-columns:110px 1fr 140px;gap:18px;padding:14px 18px;background:var(--bg-card);border:1px solid var(--line);border-radius:10px;align-items:center}.audit-meta{display:flex;flex-direction:column;gap:2px}.audit-date{font-size:12px;font-weight:600;color:var(--ink)}.audit-time{font-size:11px;color:var(--ink-muted)}.audit-content{min-width:0}.audit-message{font-size:13px;font-weight:500;color:var(--ink);margin-bottom:6px}.audit-files{display:flex;flex-wrap:wrap;gap:6px}.audit-file{font-size:10px;padding:2px 6px;background:var(--bg-elevated);border:1px solid var(--line);border-radius:3px;color:var(--ink-muted)}.audit-file-more{font-size:10px;padding:2px 6px;color:var(--ink-muted);font-family:var(--mono)}.audit-author{text-align:right}.audit-author-name{font-size:12px;font-weight:600;color:var(--ink)}.audit-sha{font-size:10px;color:var(--ink-muted);margin-top:2px}@media (max-width: 700px){.audit-item{grid-template-columns:1fr;gap:8px}.audit-author{text-align:left}}.login-bg{min-height:100vh;background:linear-gradient(135deg,#0e2a47,#1d4ed8);display:flex;align-items:center;justify-content:center;padding:24px;position:relative;overflow:hidden}.login-bg:before{content:"";position:absolute;top:-200px;right:-200px;width:600px;height:600px;background:radial-gradient(circle,rgba(249,115,22,.18) 0%,transparent 70%);pointer-events:none}.login-bg:after{content:"";position:absolute;bottom:-300px;left:-300px;width:700px;height:700px;background:radial-gradient(circle,rgba(37,99,235,.25) 0%,transparent 70%);pointer-events:none}.login-wrap{width:100%;max-width:400px;position:relative;z-index:1}.login-header{text-align:center;margin-bottom:28px;color:#fff}.login-icon{width:56px;height:56px;background:linear-gradient(135deg,#f97316,#ea580c);border-radius:14px;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;box-shadow:0 8px 24px #f9731659}.login-icon svg{width:28px;height:28px;color:#fff}.login-title{font-family:var(--body);font-size:26px;font-weight:700;letter-spacing:-.02em;margin-bottom:6px}.login-sub{font-size:12px;color:#c2cad6;letter-spacing:.08em;text-transform:uppercase;font-weight:500}.login-card{background:#fff;border-radius:14px;padding:28px;box-shadow:0 20px 50px #00000040}.login-label{display:block;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);margin-bottom:6px;margin-top:14px}.login-label:first-child{margin-top:0}.login-input{width:100%;padding:11px 14px;border:1px solid var(--line-strong);border-radius:8px;background:#fff;font-size:14px;color:var(--ink);transition:border-color .15s,box-shadow .15s}.login-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.login-error{margin-top:12px;padding:8px 12px;background:var(--danger-soft);color:var(--danger);border-radius:6px;font-size:12px;font-weight:500}.login-btn{width:100%;margin-top:20px;padding:11px 14px;background:var(--accent);color:#fff;border-radius:8px;font-size:14px;font-weight:600;transition:background .15s;cursor:pointer;border:none}.login-btn:hover{background:#1e3fb2}.login-demo-toggle{display:block;width:100%;margin-top:16px;font-size:11px;color:var(--ink-muted);background:none;border:none;cursor:pointer;text-align:center;text-decoration:underline}.login-demo{margin-top:14px;padding:14px;background:var(--bg-elevated);border:1px solid var(--line);border-radius:8px}.login-demo-title{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:10px}.login-demo-row{display:flex;align-items:center;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--line);font-size:12px}.login-demo-row:last-of-type{border-bottom:none}.login-demo-row strong{color:var(--accent)}.login-demo-row code{font-family:var(--mono);font-size:11px;color:var(--ink-soft)}.login-demo-note{margin-top:12px;font-size:10px;color:var(--ink-muted);line-height:1.5}.login-footer{margin-top:20px;text-align:center;font-size:11px;color:#ffffff80;font-family:var(--mono)}.app{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{background:var(--bg-dark);color:var(--ink-dim);padding:28px 0;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;overflow-y:auto}.brand{padding:0 24px 32px;border-bottom:1px solid #1a3a5e;margin-bottom:20px}.brand-mark{font-family:var(--body);font-size:20px;font-weight:700;letter-spacing:-.02em;color:#fff;display:flex;align-items:center;gap:8px}.brand-mark:before{content:"";width:8px;height:8px;background:var(--highlight-bright);border-radius:50%}.brand-sub{font-size:11px;color:var(--ink-dim);letter-spacing:.08em;text-transform:uppercase;margin-top:6px;font-weight:500}.nav-section{padding:0 16px;margin-bottom:24px}.nav-label{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#8aa2bd;padding:0 8px 8px;font-weight:600}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:6px;color:#c2cad6;cursor:pointer;font-size:13px;font-weight:500;transition:background .15s,color .15s;margin-bottom:1px;text-decoration:none}.nav-item:hover:not(.disabled){background:#1a3a5e;color:#fff}.nav-item.active{background:var(--accent);color:#fff}.nav-item.disabled{opacity:.4;cursor:not-allowed}.nav-item svg{width:16px;height:16px;flex-shrink:0}.sidebar-footer{margin-top:auto;padding:16px 20px 0;border-top:1px solid #1a3a5e}.sync-badge{display:flex;align-items:center;gap:10px;padding:12px;background:#1a3a5e;border-radius:8px}.sync-dot{width:8px;height:8px;background:var(--highlight-bright);border-radius:50%;flex-shrink:0;box-shadow:0 0 0 4px #f973162e}.sync-status{font-size:12px;font-weight:600;color:#fff}.sync-detail{font-size:10px;color:var(--ink-dim);margin-top:2px;font-family:var(--mono)}.user-card{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#1a3a5e;border-radius:8px;margin-bottom:8px}.user-avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#f97316,#ea580c);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;flex-shrink:0}.user-info{flex:1;min-width:0}.user-name{font-size:12px;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-role{font-size:10px;color:#c2cad6;text-transform:uppercase;letter-spacing:.06em}.user-logout{width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#c2cad6;cursor:pointer;border-radius:4px;transition:background .15s,color .15s}.user-logout:hover{background:#ffffff1a;color:#fff}.user-logout svg{width:14px;height:14px}.main{padding:32px 40px 60px;max-width:1400px;width:100%}@media (max-width: 900px){.app{grid-template-columns:1fr}.sidebar{display:none}.main{padding:20px}}:root{--bg: #ffffff;--bg-card: #ffffff;--bg-elevated: #f5f7fb;--bg-dark: #0e2a47;--ink: #0e2a47;--ink-soft: #3a4d63;--ink-muted: #7a8595;--ink-dim: #c2cad6;--line: #e3e8ef;--line-strong: #c8d2dd;--accent: #1d4ed8;--accent-bright: #2563eb;--accent-soft: #e0eaff;--highlight: #ea580c;--highlight-bright: #f97316;--highlight-soft: #ffedd5;--warn: #ea580c;--warn-soft: #ffedd5;--danger: #c0392b;--danger-soft: #fde8e4;--info: #1d4ed8;--info-soft: #e0eaff;--display: "Inter Tight", -apple-system, BlinkMacSystemFont, sans-serif;--body: "Inter Tight", -apple-system, BlinkMacSystemFont, sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace}*{margin:0;padding:0;box-sizing:border-box}html,body{font-family:var(--body);background:var(--bg);color:var(--ink);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh}button{font-family:inherit;cursor:pointer;border:none;background:none}a{color:inherit;text-decoration:none}input,select,textarea{font-family:inherit;font-size:inherit}::selection{background:var(--accent-bright);color:#fff}.mono{font-family:var(--mono)}.display{font-family:var(--display)}.muted{color:var(--ink-muted)}
