:root{--color-primary: #00B4A6;--color-primary-hover: #009e92;--color-primary-light: #e0f2f1;--color-primary-muted: rgba(0,180,166,.15);--color-primary-border: #7ed4cc;--color-primary-shadow-sm: rgba(0,180,166,.08);--color-primary-shadow-md: rgba(0,180,166,.22);--color-primary-shadow-lg: rgba(0,180,166,.32);--color-navy: #125F78;--color-navy-dark: #0d4d62;--color-navy-hover: rgba(255,255,255,.12);--color-navy-active-bg: rgba(255,255,255,.2);--color-navy-active-border: #ffffff;--color-orange: #FF883F;--color-orange-light: #fff4ed;--color-black: #000000;--color-text-primary: #0f172a;--color-text-secondary: #475569;--color-text-muted: #94a3b8;--color-text-inverse: #ffffff;--sidebar-text: rgba(255,255,255,.85);--sidebar-text-muted: rgba(255,255,255,.55);--status-draft-bg: #f1f5f9;--status-draft-text: #64748b;--status-submitted-bg: #eff6ff;--status-submitted-text: #3b82f6;--status-review-bg: #fef9c3;--status-review-text: #92400e;--status-approved-bg: #dcfce7;--status-approved-text: #166534;--status-rejected-bg: #fee2e2;--status-rejected-text: #991b1b;--status-active-bg: #e0f2f1;--status-active-text: #0f766e;--status-closed-bg: #f1f5f9;--status-closed-text: #475569;--severity-critical-bg: #ede9fe;--severity-critical-text: #5b21b6;--severity-high-bg: #fee2e2;--severity-high-text: #991b1b;--severity-medium-bg: #fef9c3;--severity-medium-text: #92400e;--severity-low-bg: #dcfce7;--severity-low-text: #166534;--workspace-bg: #f0f4f8;--surface-white: #ffffff;--surface-subtle: #f8fafc;--border-color: #e2e8f0;--border-color-strong: #cbd5e1;--font-sans: "Inter", system-ui, -apple-system, sans-serif;--text-xs: 11px;--text-sm: 12px;--text-base: 13px;--text-md: 14px;--text-lg: 16px;--text-xl: 18px;--text-2xl: 22px;--text-3xl: 28px;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--weight-extrabold: 800;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 9999px;--shadow-xs: 0 1px 2px rgba(0,0,0,.05);--shadow-sm: 0 1px 4px rgba(0,0,0,.08);--shadow-md: 0 4px 12px rgba(0,0,0,.1);--shadow-lg: 0 8px 24px rgba(0,0,0,.12);--topbar-height: 56px;--sidebar-width: 256px;--reseller-accent: var(--color-orange);--reseller-accent-bg: var(--color-orange-light)}body{margin:0;font-family:var(--font-sans);color:var(--color-text-primary);background:var(--workspace-bg);font-size:var(--text-base);line-height:1.5}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}.view-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:var(--space-5)}.view-header h1{font-size:var(--text-xl);margin:0 0 .15rem;font-weight:var(--weight-bold);color:var(--color-black)}.view-header .sub{color:var(--color-text-secondary);font-size:var(--text-base)}.view-header .actions{display:flex;gap:var(--space-2)}.card{background:var(--surface-white);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card+.card{margin-top:var(--space-4)}.card-header{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between}.card-header h3{margin:0;font-size:var(--text-md);font-weight:var(--weight-semibold)}.card-body{padding:var(--space-4)}.card-body.pad-0{padding:0}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4)}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4)}.kpi-tile{padding:var(--space-4)}.kpi-tile .label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);font-weight:var(--weight-semibold)}.kpi-tile .value{font-size:var(--text-3xl);font-weight:var(--weight-bold);margin-top:.2rem;color:var(--color-black)}.kpi-tile .delta{font-size:var(--text-sm);margin-top:.25rem}.kpi-tile .delta.up{color:var(--status-approved-text)}.kpi-tile .delta.down{color:var(--status-rejected-text)}table.data-table{width:100%;border-collapse:collapse;font-size:var(--text-base)}table.data-table th{text-align:left;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);font-weight:var(--weight-bold);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-color);background:var(--surface-subtle)}table.data-table td{padding:.65rem var(--space-4);border-bottom:1px solid var(--border-color)}table.data-table tr:hover td{background:var(--surface-subtle);cursor:pointer}table.data-table tr:last-child td{border-bottom:none}.badge{display:inline-flex;align-items:center;gap:.3rem;font-size:var(--text-sm);font-weight:var(--weight-semibold);padding:.18rem .55rem;border-radius:var(--radius-full)}.badge.success{background:var(--status-approved-bg);color:var(--status-approved-text)}.badge.warning{background:var(--status-review-bg);color:var(--status-review-text)}.badge.danger{background:var(--status-rejected-bg);color:var(--status-rejected-text)}.badge.info{background:var(--status-submitted-bg);color:var(--status-submitted-text)}.badge.neutral{background:var(--status-draft-bg);color:var(--status-draft-text)}.btn{border-radius:var(--radius-md);padding:.45rem .9rem;font-size:var(--text-sm);font-weight:var(--weight-semibold);border:1px solid transparent;display:inline-flex;align-items:center;gap:.4rem}.btn-primary{background:var(--color-primary);color:var(--color-text-inverse)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-primary:disabled{background:var(--border-color-strong);cursor:not-allowed}.btn-secondary{background:var(--surface-white);border-color:var(--border-color-strong);color:var(--color-text-secondary)}.btn-ghost{background:transparent;color:var(--color-primary);padding:.45rem .5rem}body[data-persona=reseller] .btn-primary{background:var(--reseller-accent)}body[data-persona=reseller] .btn-primary:hover{background:#e67736}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--border-color);margin-bottom:var(--space-4)}.tab{padding:.6rem .9rem;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-secondary);border-bottom:2px solid transparent;cursor:pointer;background:transparent;border-left:none;border-right:none;border-top:none}.tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.form-field{display:flex;flex-direction:column;gap:.3rem}.form-field.full{grid-column:1 / -1}.form-field label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-secondary)}.form-field input,.form-field select,.form-field textarea{border:1px solid var(--border-color-strong);border-radius:var(--radius-md);padding:.5rem .6rem;font-size:var(--text-base);font-family:inherit}.empty-state{text-align:center;padding:3rem 1rem;color:var(--color-text-secondary)}.empty-state .icon{font-size:2rem;margin-bottom:.5rem;opacity:.4}.avatar-sm{width:22px;height:22px;border-radius:var(--radius-full);background:var(--border-color-strong);display:inline-flex;align-items:center;justify-content:center;font-size:.62rem;font-weight:var(--weight-bold);color:var(--color-text-secondary)}.section-note{font-size:var(--text-sm);color:var(--color-text-secondary);background:var(--surface-subtle);border-radius:var(--radius-md);padding:.5rem .75rem;margin-bottom:var(--space-4)}.detail-back{font-size:var(--text-sm);color:var(--color-text-secondary);margin-bottom:var(--space-3);cursor:pointer;display:inline-flex;align-items:center;gap:.3rem}.detail-back:hover{color:var(--color-primary)}.detail-grid{display:grid;grid-template-columns:1fr 320px;gap:var(--space-4);align-items:start}.kv-grid.split{display:grid;grid-template-columns:1fr 1fr}.kv-grid.split>div:first-child{border-right:1px solid var(--border-color);padding-right:var(--space-4)}.kv-grid.split>div:last-child{padding-left:var(--space-4)}.kv-row{display:flex;justify-content:space-between;gap:var(--space-2);padding:.4rem 0;border-bottom:1px solid var(--surface-subtle);font-size:var(--text-base)}.kv-row .kv-label{color:var(--color-text-secondary);font-size:var(--text-sm)}.kv-row .kv-value{font-weight:var(--weight-semibold);text-align:right}.detail-tab-panel{display:none}.detail-tab-panel.active{display:block}.rel-tree{display:flex;align-items:flex-start;gap:2rem;overflow-x:auto;padding:var(--space-4) 0}.rel-col{display:flex;flex-direction:column;gap:var(--space-2);min-width:170px}.rel-col-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);font-weight:700;margin-bottom:.2rem}.rel-node{border-radius:var(--radius-md);padding:.55rem .75rem;font-size:var(--text-sm);font-weight:var(--weight-semibold);text-align:center;border:1px solid;cursor:pointer}.rel-node.root{font-weight:var(--weight-bold);font-size:var(--text-base)}.rel-node.type-customer{background:var(--status-submitted-bg);border-color:#93c5fd;color:var(--status-submitted-text)}.rel-node.type-deal{background:var(--status-approved-bg);border-color:#86efac;color:var(--status-approved-text)}.rel-node.type-partner{background:var(--status-review-bg);border-color:#fde68a;color:var(--status-review-text)}.rel-node.type-lead{background:var(--status-draft-bg);border-color:var(--border-color-strong);color:var(--status-draft-text)}.rel-node.type-license{background:var(--color-primary-light);border-color:var(--color-primary-border);color:var(--color-primary-hover)}.rel-node.type-contact{background:var(--severity-critical-bg);border-color:#c4b5fd;color:var(--severity-critical-text)}.comment-thread{display:flex;flex-direction:column;gap:var(--space-4)}.comment-item{display:flex;gap:var(--space-2)}.comment-body{flex:1;background:var(--surface-subtle);border-radius:var(--radius-md);padding:.6rem .8rem}.comment-meta{font-size:var(--text-xs);color:var(--color-text-muted);margin-bottom:.2rem}.comment-name{font-weight:var(--weight-semibold);color:var(--color-text-primary)}.comment-input-row{display:flex;gap:var(--space-2);margin-top:var(--space-4)}.comment-input-row textarea{flex:1;border:1px solid var(--border-color-strong);border-radius:var(--radius-md);padding:.5rem .7rem;font-family:inherit;font-size:var(--text-base);resize:vertical;min-height:44px}tr.infra-expand-row{display:none}tr.infra-expand-row.open{display:table-row}tr.infra-expand-row td{background:var(--surface-subtle);padding:var(--space-3) var(--space-4)}.infra-details-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}.infra-details-grid .kv-row{flex-direction:column;align-items:flex-start;border-bottom:none;padding:0}.infra-details-grid .kv-label{margin-bottom:.15rem}.perm-checklist{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}.perm-module{border:1px solid var(--border-color);border-radius:var(--radius-md);padding:.7rem .85rem}.perm-module h5{margin:0 0 .5rem;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);font-weight:700}.perm-module label{display:flex;align-items:center;gap:.45rem;font-size:var(--text-sm);padding:.2rem 0;cursor:pointer}.perm-type-toggle{display:flex;gap:var(--space-2);margin-bottom:var(--space-4)}.perm-type-toggle label{display:flex;align-items:center;gap:.4rem;font-size:var(--text-base);font-weight:600;cursor:pointer}.list-layout{display:grid;grid-template-columns:220px 1fr;gap:var(--space-4);align-items:start}.scope-panel{position:sticky;top:calc(var(--topbar-height) + var(--space-4))}.scope-panel .scope-header{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;font-weight:700;color:var(--color-text-secondary);padding:.5rem .75rem}.scope-item{display:flex;justify-content:space-between;padding:.45rem .75rem;border-radius:var(--radius-md);font-size:var(--text-sm);cursor:pointer}.scope-item:hover{background:var(--surface-subtle)}.scope-item.active{background:var(--color-primary-light);color:var(--color-primary-hover);font-weight:600}.scope-item .scope-count{color:var(--color-text-muted);font-size:var(--text-xs)}.grid-toolbar{display:flex;gap:.6rem;align-items:center;margin-bottom:var(--space-3);flex-wrap:wrap}.grid-toolbar .search-input{flex:1;min-width:200px;border:1px solid var(--border-color-strong);border-radius:var(--radius-md);padding:.45rem .7rem;font-size:var(--text-base);font-family:inherit}.grid-toolbar select{border:1px solid var(--border-color-strong);border-radius:var(--radius-md);padding:.45rem .6rem;font-size:var(--text-sm);background:var(--surface-white);font-family:inherit}th.sortable{cursor:pointer}th.sortable button.th-sort-btn{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;display:inline-flex;align-items:center}.sort-arrow{font-size:.65rem;opacity:.35;margin-left:.3rem}th.sorted .sort-arrow{opacity:1;color:var(--color-primary)}tr.col-filter-row td{padding:.3rem var(--space-4);background:var(--surface-subtle);border-bottom:1px solid var(--border-color)}.col-filter{width:100%;box-sizing:border-box;border:1px solid var(--border-color-strong);border-radius:var(--radius-sm);padding:.25rem .5rem;font-size:var(--text-sm);font-family:inherit;background:var(--surface-white)}.col-filter:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-muted)}tr.col-filter-row:hover td{background:var(--surface-subtle);cursor:default}.pagination-row{display:flex;justify-content:space-between;align-items:center;margin-top:var(--space-3);font-size:var(--text-sm);color:var(--color-text-secondary)}.page-btns{display:flex;gap:.25rem}.page-btns button{border:1px solid var(--border-color-strong);background:var(--surface-white);border-radius:var(--radius-sm);width:28px;height:28px;font-size:var(--text-sm)}.page-btns button.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.page-btns button:disabled{opacity:.4;cursor:not-allowed}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Arial,sans-serif;color:#1a1a1a;background:#f5f5f5}.app-shell{display:flex;min-height:100vh}.app-sidebar{width:220px;flex-shrink:0;background:#fff;border-right:1px solid #e0e0e0;padding:16px 0}.app-sidebar h1{font-size:16px;font-weight:600;padding:0 16px 16px;margin:0 0 8px;border-bottom:1px solid #e0e0e0}.app-nav{display:flex;flex-direction:column}.app-nav a{padding:10px 16px;color:#333;text-decoration:none;font-size:14px}.app-nav a:hover{background:#f0f0f0}.app-nav a.active{background:#eaeaea;font-weight:600;border-left:3px solid #444;padding-left:13px}.app-content{flex:1;padding:32px}.page-placeholder h2{margin-top:0}.page-placeholder p{color:#666}.issue-license-form{display:flex;flex-direction:column;gap:20px;max-width:560px}.form-section{display:flex;flex-direction:column;gap:8px;border:1px solid #e0e0e0;border-radius:6px;padding:16px;background:#fff}.form-section legend{font-weight:600;padding:0 4px}.form-section label{font-size:13px;color:#444;margin-top:8px}.form-section input,.form-section select{padding:8px;border:1px solid #ccc;border-radius:4px;font-size:14px}.checkbox-list{display:flex;flex-direction:column;gap:6px}.checkbox-row{display:flex;align-items:center;gap:8px;font-size:14px;color:#1a1a1a;margin-top:0}.feature-key{color:#888;font-size:12px;font-family:monospace}.hint{font-size:13px;color:#666;margin:4px 0 0}.form-error{color:#b00020;font-size:14px}.form-success{color:#1b7a1b;font-size:14px}.issue-license-form button[type=submit]{align-self:flex-start;padding:10px 20px;background:#444;color:#fff;border:none;border-radius:4px;font-size:14px;cursor:pointer}.issue-license-form button[type=submit]:disabled{background:#999;cursor:not-allowed}.issuance-history{margin-top:32px;max-width:760px}.data-table{width:100%;border-collapse:collapse;font-size:14px;background:#fff}.data-table th,.data-table td{text-align:left;padding:8px 12px;border-bottom:1px solid #e0e0e0}.data-table th{color:#444;font-weight:600}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.page-header h2{margin:0}.data-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #e0e0e0;border-radius:6px;overflow:hidden}.data-table th,.data-table td{text-align:left;padding:10px 14px;border-bottom:1px solid #eee;font-size:14px}.data-table th{background:#fafafa;font-weight:600;color:#444}.data-table tbody tr:last-child td{border-bottom:none}.empty-row{text-align:center;color:#888;padding:24px}.btn-primary,.btn-secondary{border:none;border-radius:4px;padding:8px 16px;font-size:14px;cursor:pointer}.btn-primary{background:#125f78;color:#fff}.btn-primary:hover{background:#0d4d62}.btn-primary:disabled{background:#9db3ba;cursor:not-allowed}.btn-secondary{background:#eee;color:#333}.btn-secondary:hover{background:#e0e0e0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;border-radius:8px;padding:24px;width:400px;max-width:90vw}.modal h3{margin-top:0}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:14px;font-size:14px}.field input{padding:8px 10px;border:1px solid #ccc;border-radius:4px;font-size:14px}.form-error{color:#c0392b;font-size:13px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}body[data-persona]{min-height:100vh}#topbar{position:fixed;top:0;left:0;right:0;height:var(--topbar-height);background:var(--surface-white);border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-4);z-index:500}#topbar .brand{display:flex;align-items:center;gap:var(--space-2);font-weight:var(--weight-bold);font-size:var(--text-md);color:var(--color-black)}#topbar .brand .dot{width:10px;height:10px;border-radius:var(--radius-sm);background:var(--color-primary)}#topbar .brand small{font-weight:var(--weight-medium);color:var(--color-text-secondary);font-size:var(--text-xs)}.persona-switch{display:flex;align-items:center;gap:var(--space-2);background:var(--surface-subtle);border-radius:var(--radius-full);padding:3px}.persona-switch button{border:none;background:transparent;padding:.35rem .85rem;border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-secondary)}.persona-switch button.active.staff{background:var(--color-primary);color:var(--color-text-inverse)}.persona-switch button.active.reseller{background:var(--reseller-accent);color:var(--color-text-inverse)}.topbar-right{display:flex;align-items:center;gap:.75rem;position:relative}.user-chip{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-secondary)}.avatar{width:28px;height:28px;border-radius:var(--radius-full);background:var(--border-color-strong);display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:var(--weight-bold);color:var(--color-text-secondary)}.notif-bell{position:relative;cursor:pointer;width:34px;height:34px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;font-size:1.1rem}.notif-bell:hover{background:var(--surface-subtle)}.notif-popup{position:fixed;top:calc(var(--topbar-height) + 6px);right:1rem;width:380px;max-height:70vh;overflow-y:auto;background:var(--surface-white);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:600}.notif-popup-header{padding:.75rem 1rem;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center}.notif-popup-header h4{margin:0;font-size:var(--text-md)}.notif-popup .tabs{padding:.5rem 1rem 0;margin-bottom:0}.notif-empty{text-align:center;padding:2.5rem 1rem;color:var(--color-text-secondary);font-size:var(--text-sm)}#sidebar{position:fixed;top:var(--topbar-height);left:0;bottom:0;width:var(--sidebar-width);background:linear-gradient(180deg,var(--color-navy) 0%,var(--color-navy-dark) 100%);color:var(--sidebar-text);overflow-y:auto;z-index:400;padding:var(--space-3) var(--space-2) var(--space-8)}.nav-group{margin-bottom:.35rem}.nav-group-label{cursor:pointer;display:flex;align-items:center;justify-content:space-between;-webkit-user-select:none;user-select:none;font-size:var(--text-xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:.06em;color:var(--sidebar-text-muted);padding:.9rem .75rem .3rem}.nav-group-label .chevron{font-size:.6rem;opacity:.7}.nav-group-children{display:none}.nav-group.expanded .nav-group-children{display:block}.nav-item{display:flex;align-items:center;gap:.6rem;padding:.5rem .75rem;border-radius:var(--radius-md);font-size:var(--text-md);color:var(--sidebar-text);cursor:pointer}.nav-item:hover{background:var(--color-navy-hover)}.nav-item.active{background:var(--color-navy-active-bg);color:var(--color-text-inverse);font-weight:var(--weight-semibold);box-shadow:inset 3px 0 0 var(--color-navy-active-border)}[data-persona=reseller] .nav-item.active{box-shadow:inset 3px 0 0 var(--reseller-accent)}.nav-item.disabled{cursor:not-allowed;opacity:.55;justify-content:space-between}.nav-item.disabled:hover{background:transparent}.soon-tag{font-size:var(--text-xs);background:#ffffff26;padding:.05rem .4rem;border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:.03em}#main{margin-left:var(--sidebar-width);margin-top:var(--topbar-height);padding:var(--space-6) var(--space-8) 4rem;min-height:calc(100vh - var(--topbar-height))}.auth-loading{display:flex;align-items:center;justify-content:center;min-height:100vh;color:var(--color-text-secondary)}.login-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-6);background:var(--workspace-bg);padding:var(--space-6)}.login-brand{display:flex;align-items:center;gap:var(--space-2);font-weight:var(--weight-bold);font-size:var(--text-xl);color:var(--color-black)}.login-brand .dot{width:12px;height:12px;border-radius:var(--radius-sm);background:var(--color-primary)}.login-brand small{font-weight:var(--weight-medium);color:var(--color-text-secondary);font-size:var(--text-sm);margin-left:.25rem}.login-card{width:360px;max-width:100%}.login-card h2{margin:0 0 var(--space-4);font-size:var(--text-lg)}.login-card form{display:flex;flex-direction:column;gap:var(--space-4)}.login-submit{justify-content:center;margin-top:var(--space-2)}
