@import url("https://fonts.googleapis.com/css2?family=Host+Grotesk:wght@300;400;500;600;700&display=swap");:root{--tn-volt-blue:#2684ff;--tn-volt-blue-dark:#245fa5;--tn-volt-blue-tint:#edf5ff;--tn-midnight:#0b1822;--tn-iron:#646a75;--tn-steel:#9ca1a9;--tn-fog:#eceef1;--tn-mist:#f5f6f8;--tn-white:#fff;--tn-success:#00a264;--tn-success-dark:#007e4c;--tn-success-tint:#aff4c6;--tn-error:#f85c47;--tn-error-dark:#d04434;--tn-error-tint:#ffd7d2;--tn-warning:#f9c900;--tn-warning-dark:#4d3900;--tn-warning-tint:#fff2b3;--sidebar-width:224px;--sidebar-width-collapsed:56px;--devtoolbar-height:36px;--topbar-height:var(--devtoolbar-height);--card-radius:12px;--card-border:1px solid var(--tn-fog);--input-radius:8px;--input-height:38px;--btn-radius:999px;--task-row-height:52px;--status-open-bg:var(--tn-fog);--status-open-text:var(--tn-iron);--status-in-progress-bg:var(--tn-warning-tint);--status-in-progress-text:var(--tn-warning-dark);--status-complete-bg:var(--tn-success-tint);--status-complete-text:var(--tn-success-dark);--priority-high:var(--tn-error);--priority-medium:var(--tn-warning);--priority-low:var(--tn-steel);font-family:Host Grotesk,Arial,sans-serif;color:var(--tn-midnight)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{background:var(--tn-mist);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}button{cursor:pointer}button,input,select,textarea{font-family:inherit}a{color:inherit;text-decoration:none}.tn-label-caps{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--tn-steel)}.tn-text-overdue{color:var(--tn-error);font-weight:600}.tn-text-approaching{color:var(--tn-warning-dark);font-weight:600}.tn-text-muted{color:var(--tn-steel)}.tn-card{background:var(--tn-white);border:var(--card-border);border-radius:var(--card-radius)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:var(--btn-radius);font-family:inherit;font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer;transition:background .15s,color .15s,border-color .15s,opacity .15s;text-decoration:none;padding:0 16px;height:36px}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--tn-volt-blue);color:var(--tn-white);border:none}.btn-primary:hover:not(:disabled){background:var(--tn-volt-blue-dark)}.btn-secondary{background:var(--tn-fog);color:var(--tn-midnight);border:none}.btn-secondary:hover:not(:disabled){background:var(--tn-mist)}.btn-ghost{background:transparent;color:var(--tn-midnight);border:1px solid var(--tn-fog)}.btn-ghost:hover:not(:disabled){background:var(--tn-mist);border-color:var(--tn-steel)}.btn-sm{height:30px;padding:0 12px;font-size:12px}.btn-icon{width:32px;height:32px;padding:0;background:transparent;color:var(--tn-iron);border:none;border-radius:8px}.btn-icon:hover:not(:disabled){background:var(--tn-mist);color:var(--tn-midnight)}.tn-toggle{display:flex;background:var(--tn-fog);border-radius:999px;padding:3px;gap:2px}.tn-toggle-btn{padding:4px 14px;font-size:12px;font-weight:500;font-family:inherit;color:var(--tn-iron);background:transparent;border:none;border-radius:999px;cursor:pointer;transition:all .15s}.tn-toggle-btn.active{background:var(--tn-midnight);color:var(--tn-white);font-weight:600}.form-group{display:flex;flex-direction:column;gap:5px}.form-label{display:block;font-size:12px;font-weight:600;color:var(--tn-iron)}.form-label.required:after{content:" *";color:var(--tn-error)}.form-input,.form-select,.form-textarea{width:100%;background:var(--tn-mist);border:1.5px solid transparent;border-radius:var(--input-radius);font-size:13px;font-family:inherit;color:var(--tn-midnight);outline:none;transition:border-color .15s,background .15s}.form-input,.form-select{height:var(--input-height);padding:0 12px}.form-textarea{padding:10px 12px;resize:vertical;min-height:80px;line-height:1.5}.form-input::placeholder,.form-textarea::placeholder{color:var(--tn-steel)}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--tn-volt-blue);background:var(--tn-white)}.form-input.error,.form-select.error,.form-textarea.error{border-color:var(--tn-error)}.form-input:disabled,.form-select:disabled,.form-textarea:disabled{opacity:.55;cursor:not-allowed}.form-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239CA1A9' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}.form-error{font-size:11px;color:var(--tn-error);font-weight:500}.badge-status{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.02em;white-space:nowrap}.badge-status.open{background:var(--status-open-bg);color:var(--status-open-text)}.badge-status.in_progress{background:var(--status-in-progress-bg);color:var(--status-in-progress-text)}.badge-status.complete{background:var(--status-complete-bg);color:var(--status-complete-text)}.priority-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;display:inline-block}.priority-dot.high{background:var(--priority-high)}.priority-dot.medium{background:var(--priority-medium)}.priority-dot.low{background:var(--priority-low)}.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--tn-volt-blue-tint);color:var(--tn-volt-blue-dark);font-weight:700;flex-shrink:0}.avatar-sm{width:28px;height:28px;font-size:10px}.avatar-md{width:32px;height:32px;font-size:11px}.avatar-lg{width:40px;height:40px;font-size:13px}.tn-table{width:100%;border-collapse:collapse;font-size:13px}.tn-table th{background:var(--tn-mist);color:var(--tn-steel);font-weight:600;font-size:11px;text-align:left;padding:10px 14px;white-space:nowrap;letter-spacing:.04em;text-transform:uppercase}.tn-table td,.tn-table th{border-bottom:1px solid var(--tn-fog)}.tn-table td{padding:0 14px;height:var(--task-row-height);vertical-align:middle}.tn-table tr:last-child td{border-bottom:none}.tn-table tbody tr{cursor:pointer;transition:background .1s}.tn-table tbody tr:hover{background:var(--tn-mist)}.tab-bar{display:flex;border-bottom:1px solid var(--tn-fog)}.tab-btn{padding:10px 18px;font-size:13px;font-weight:500;color:var(--tn-iron);background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s}.tab-btn:hover{color:var(--tn-midnight)}.tab-btn.active{color:var(--tn-volt-blue);border-bottom-color:var(--tn-volt-blue);font-weight:600}.filter-select{padding:0 28px 0 12px;height:32px;border:1px solid var(--tn-fog);border-radius:999px;font-size:12px;font-weight:500;color:var(--tn-midnight);background:var(--tn-white);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='11' viewBox='0 0 24 24' fill='none' stroke='%239CA1A9' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;cursor:pointer;outline:none;transition:border-color .15s,background .15s}.filter-select.active,.filter-select:focus{border-color:var(--tn-volt-blue)}.filter-select.active{background-color:var(--tn-volt-blue-tint);color:var(--tn-volt-blue-dark);font-weight:600}.toggle-chip{padding:0 12px;height:32px;border:1px solid var(--tn-fog);border-radius:999px;font-size:12px;font-weight:500;color:var(--tn-iron);background:var(--tn-white);cursor:pointer;transition:all .15s}.toggle-chip.active{border-color:var(--tn-error);background:var(--tn-error-tint);color:var(--tn-error-dark);font-weight:600}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;border-radius:8px;color:var(--tn-iron);transition:background .15s,color .15s;flex-shrink:0;cursor:pointer}.icon-btn:hover{background:var(--tn-mist);color:var(--tn-midnight)}.tn-modal-overlay{position:fixed;inset:0;background:rgba(11,24,34,.4);display:flex;align-items:center;justify-content:center;z-index:200;padding:16px}.tn-modal{background:var(--tn-white);border-radius:var(--card-radius);width:100%;max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:0 24px 64px rgba(11,24,34,.18)}.tn-modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--tn-fog)}.tn-modal-header h2{font-size:16px;font-weight:700}.tn-modal-body{padding:20px 24px;display:flex;flex-direction:column;gap:14px}.tn-modal-footer{padding:12px 24px;border-top:1px solid var(--tn-fog);display:flex;justify-content:flex-end;gap:8px}.tn-panel-overlay{position:fixed;inset:0;background:rgba(11,24,34,.2);z-index:150}.tn-panel{position:fixed;top:0;right:0;bottom:0;width:min(600px,100vw);background:var(--tn-white);border-left:1px solid var(--tn-fog);box-shadow:-8px 0 40px rgba(11,24,34,.07);z-index:151;display:flex;flex-direction:column;overflow:hidden}.tn-panel-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--tn-fog);flex-shrink:0}.tn-panel-body{flex:1 1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:18px}.tn-section-heading{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--tn-steel);padding-bottom:8px;border-bottom:1px solid var(--tn-fog);margin-bottom:12px}.tn-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 24px;text-align:center;gap:12px}.tn-empty .tn-empty-icon,.tn-empty svg{opacity:.35}.tn-empty h3{font-size:15px;font-weight:600;color:var(--tn-midnight)}.tn-empty p{font-size:13px;color:var(--tn-steel)}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--tn-fog);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--tn-steel)}@media (max-width:768px){.tn-panel{width:100vw}.tn-modal{max-width:100%;border-radius:16px 16px 0 0}.tn-modal-overlay{align-items:flex-end;padding:0}}.app-shell{display:flex;min-height:100vh;padding-top:var(--topbar-height)}.app-sidebar{position:fixed;top:var(--topbar-height);left:0;bottom:0;width:var(--sidebar-width);background:var(--tn-white);border-right:1px solid var(--tn-fog);display:flex;flex-direction:column;z-index:100}.app-main{margin-left:var(--sidebar-width);flex:1 1;min-height:calc(100vh - var(--topbar-height));display:flex;flex-direction:column}.page-header{height:52px;background:var(--tn-white);border-bottom:1px solid var(--tn-fog);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:-webkit-sticky;position:sticky;top:var(--topbar-height);z-index:50}.page-header h1{font-size:16px;font-weight:700;color:var(--tn-midnight)}.page-content{padding:24px;flex:1 1}.opinion-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap}.opinion-badge.very_favorable{background:var(--tn-success-tint);color:var(--tn-success-dark)}.opinion-badge.on_plan{background:var(--tn-volt-blue-tint);color:var(--tn-volt-blue-dark)}.opinion-badge.watchlist{background:var(--tn-warning-tint);color:var(--tn-warning-dark)}.opinion-badge.at_risk{background:var(--tn-error-tint);color:var(--tn-error-dark)}.opinion-badge.inferred{font-style:italic;opacity:.85}.opinion-inferred-icon{width:12px;height:12px;opacity:.7;flex-shrink:0}.drop-zone{border:2px dashed var(--tn-fog);border-radius:var(--card-radius);padding:48px 24px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;background:var(--tn-white)}.drop-zone.drag-over,.drop-zone:hover{border-color:var(--tn-volt-blue);background:var(--tn-volt-blue-tint)}.drop-zone h3{font-size:15px;font-weight:600;margin-bottom:6px}.drop-zone p{font-size:13px;color:var(--tn-steel)}.upload-summary-list{display:flex;flex-direction:column;gap:8px;margin-top:20px}.upload-summary-item{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--tn-white);border:var(--card-border);border-radius:var(--card-radius)}.upload-summary-item .fund-name{font-size:13px;font-weight:600;color:var(--tn-midnight)}.upload-summary-item .report-period{font-size:12px;color:var(--tn-iron)}.badge-new{padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700;background:var(--tn-volt-blue);color:var(--tn-white);letter-spacing:.05em;text-transform:uppercase}@media (max-width:768px){.app-sidebar{display:none}.app-main{margin-left:0}}.login-shell{min-height:100vh;display:grid;place-items:center;background:var(--tn-mist);padding:24px}.login-card{width:100%;max-width:360px;background:var(--tn-white);border:1px solid var(--tn-fog);border-radius:var(--card-radius);padding:32px 28px;display:flex;flex-direction:column;gap:14px;box-shadow:0 1px 3px rgba(11,24,34,.04)}.login-title{margin:0 0 8px;font-size:18px;font-weight:600;color:var(--tn-midnight)}.login-label{font-size:12px;font-weight:500;color:var(--tn-iron)}.login-input{height:var(--input-height);border-radius:var(--input-radius);border:1px solid var(--tn-fog);background:var(--tn-mist);padding:0 12px;font:inherit;color:var(--tn-midnight)}.login-input:focus{outline:2px solid var(--tn-volt-blue);outline-offset:0}.login-error{margin:0;font-size:12px;color:#b42318}.login-submit{margin-top:6px}