:root{--color-bg: #F7F8FA;--color-surface: #FFFFFF;--color-surface-soft: #FAFBFC;--color-surface-hover: rgba(15, 23, 42, .025);--color-text: #1A1F36;--color-text-muted: #687385;--color-text-soft: #8A93A6;--color-border: #E6E9EE;--color-border-soft: #EFF2F7;--color-primary: #1AA39C;--color-primary-hover: #138B85;--color-primary-active: #0E6E6A;--color-primary-light: #DEF3F1;--color-primary-dark: #0E6E6A;--color-success: #00875A;--color-success-light: #DBF4E9;--color-warning: #B26A00;--color-warning-light: #FBEAD0;--color-danger: #CD3D64;--color-danger-light: #F9DDE3;--color-info: #1A77F2;--color-info-light: #DDEBFD;--shadow-xs: 0 1px 1px rgba(15, 23, 42, .04);--shadow-sm: 0 1px 2px rgba(15, 23, 42, .04), 0 0 0 1px rgba(15, 23, 42, .04);--shadow: 0 4px 8px rgba(15, 23, 42, .04), 0 0 0 1px rgba(15, 23, 42, .04);--shadow-lg: 0 10px 32px rgba(15, 23, 42, .08), 0 0 0 1px rgba(15, 23, 42, .05);--shadow-card: 0 1px 2px rgba(15, 23, 42, .03), 0 0 0 1px rgba(15, 23, 42, .04);--radius-xs: 3px;--radius-sm: 6px;--radius: 8px;--radius-md: 10px;--radius-lg: 14px;--radius-pill: 999px;--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--font-features: "cv11", "ss01", "ss03", "cv02";--text-xs: .75rem;--text-sm: .8125rem;--text-base: .875rem;--text-md: .9375rem;--text-lg: 1rem;--text-xl: 1.125rem;--text-2xl: 1.375rem;--text-3xl: 1.75rem;--text-4xl: 2.25rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--color-bg: #0E1116;--color-surface: #161B22;--color-surface-soft: #1B2129;--color-surface-hover: rgba(255, 255, 255, .04);--color-text: #E6EAF1;--color-text-muted: #8B95A7;--color-text-soft: #6B7585;--color-border: #232A35;--color-border-soft: #1F252F;--color-primary: #2EC0B8;--color-primary-hover: #4FD1CA;--color-primary-active: #1AA39C;--color-primary-light: #103834;--color-primary-dark: #1AA39C;--color-success-light: rgba(0, 135, 90, .18);--color-warning-light: rgba(178, 106, 0, .18);--color-danger-light: rgba(205, 61, 100, .18);--color-info-light: rgba(26, 119, 242, .18);--shadow-xs: 0 1px 1px rgba(0, 0, 0, .3);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3), 0 0 0 1px rgba(255, 255, 255, .04);--shadow: 0 4px 8px rgba(0, 0, 0, .3), 0 0 0 1px rgba(255, 255, 255, .04);--shadow-card: 0 1px 2px rgba(0, 0, 0, .2), 0 0 0 1px rgba(255, 255, 255, .04)}}:root[data-theme=dark]{--color-bg: #0E1116;--color-surface: #161B22;--color-surface-soft: #1B2129;--color-surface-hover: rgba(255, 255, 255, .04);--color-text: #E6EAF1;--color-text-muted: #8B95A7;--color-text-soft: #6B7585;--color-border: #232A35;--color-border-soft: #1F252F;--color-primary: #2EC0B8;--color-primary-hover: #4FD1CA;--color-primary-active: #1AA39C;--color-primary-light: #103834;--color-primary-dark: #1AA39C;--color-success-light: rgba(0, 135, 90, .18);--color-warning-light: rgba(178, 106, 0, .18);--color-danger-light: rgba(205, 61, 100, .18);--color-info-light: rgba(26, 119, 242, .18);--shadow-xs: 0 1px 1px rgba(0, 0, 0, .3);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3), 0 0 0 1px rgba(255, 255, 255, .04);--shadow: 0 4px 8px rgba(0, 0, 0, .3), 0 0 0 1px rgba(255, 255, 255, .04);--shadow-card: 0 1px 2px rgba(0, 0, 0, .2), 0 0 0 1px rgba(255, 255, 255, .04)}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100%;background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-feature-settings:var(--font-features),"tnum" off;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}.num,.stat-value,.data-table td.num,[class*=-amount]{font-feature-settings:"tnum","ss01";font-variant-numeric:tabular-nums}a{color:var(--color-primary)}a:hover{color:var(--color-primary-hover)}button{font-family:inherit}code{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}.auth-shell{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem 1rem}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:2.25rem 2rem 2rem;width:100%;max-width:380px;display:flex;flex-direction:column;gap:1rem}.auth-logo{display:block;width:220px;max-width:80%;height:auto;margin:.25rem auto .5rem}.auth-subtitle{margin:0 auto .75rem;color:var(--color-text-muted);font-size:.85rem;text-align:center;letter-spacing:.08em;text-transform:uppercase}.form-field{display:flex;flex-direction:column;gap:.35rem}.form-field>span{font-size:.85rem;font-weight:500;color:var(--color-text-muted)}.form-field input,.form-field select,.form-field textarea{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);padding:.6rem .75rem;border-radius:var(--radius-sm);font-size:.95rem;transition:border-color .15s ease,box-shadow .15s ease}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #1aa39c26}.form-field input[aria-invalid=true]{border-color:var(--color-danger)}.form-error{font-size:.82rem;color:var(--color-danger)}.form-error-banner{background:#b91c1c14;border:1px solid rgba(185,28,28,.25);color:var(--color-danger);padding:.6rem .75rem;border-radius:var(--radius-sm);font-size:.9rem}.form-checkbox{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:var(--color-text-muted);cursor:pointer}.form-checkbox input{margin:0}.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;background:var(--color-primary);color:#fff;border:none;padding:.5rem .85rem;border-radius:var(--radius-sm);font-size:var(--text-base);font-weight:500;line-height:1.2;cursor:pointer;box-shadow:0 1px 2px #0f172a1a,inset 0 1px #ffffff1f;transition:background-color .12s ease,box-shadow .12s ease,transform .05s ease;margin-top:0}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:0 1px 2px #0f172a24,0 2px 4px #0f172a0f,inset 0 1px #ffffff1f}.btn-primary:active:not(:disabled){background:var(--color-primary-active);transform:translateY(1px)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-link{background:none;border:none;color:var(--color-primary);cursor:pointer;padding:0;font-size:inherit;font-weight:500}.btn-link:hover{text-decoration:underline}.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;background:transparent;color:var(--color-text);border:1px solid var(--color-border);padding:.45rem .8rem;border-radius:var(--radius-sm);font-size:var(--text-base);font-weight:500;line-height:1.2;cursor:pointer;transition:background-color .12s ease,border-color .12s ease}.btn-ghost:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-text-muted)}.pill{display:inline-flex;align-items:center;gap:.25rem;padding:.18rem .55rem;border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:500;line-height:1.4;letter-spacing:.01em;white-space:nowrap}.pill.neutral{background:var(--color-surface-hover);color:var(--color-text-muted)}.pill.primary{background:var(--color-primary-light);color:var(--color-primary-dark)}.pill.success{background:var(--color-success-light);color:var(--color-success)}.pill.warning{background:var(--color-warning-light);color:var(--color-warning)}.pill.danger{background:var(--color-danger-light);color:var(--color-danger)}.pill.info{background:var(--color-info-light);color:var(--color-info)}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}.pill.no-dot:before{display:none}.chip{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .75rem;border-radius:var(--radius-pill);font-size:var(--text-base);font-weight:500;background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border);cursor:pointer;transition:all .12s ease}.chip:hover{border-color:var(--color-text-muted);color:var(--color-text)}.chip.active{background:var(--color-text);border-color:var(--color-text);color:var(--color-surface)}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-5);display:flex;flex-direction:column;gap:.35rem}.stat-label{font-size:var(--text-xs);font-weight:500;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em}.stat-value{font-size:var(--text-3xl);font-weight:600;color:var(--color-text);line-height:1.1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.stat-meta{font-size:var(--text-sm);color:var(--color-text-muted)}.section-eyebrow{font-size:var(--text-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.08em;margin:0 0 .4rem}.section-title{font-size:var(--text-3xl);font-weight:600;color:var(--color-text);letter-spacing:-.02em;margin:0 0 .4rem;line-height:1.15}.section-subtitle{font-size:var(--text-md);color:var(--color-text-muted);margin:0 0 var(--space-6);max-width:60ch}.search-input{display:flex;align-items:center;gap:.4rem;padding:.4rem .85rem;border-radius:var(--radius-pill);border:1px solid var(--color-border);background:var(--color-surface);font-size:var(--text-base);color:var(--color-text);min-width:220px;transition:border-color .12s,box-shadow .12s}.search-input:focus-within,.search-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #1aa39c1f}.search-input input{border:none;background:transparent;padding:0;flex:1;font-size:inherit;color:inherit;outline:none}.empty-state{background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius);padding:4rem 2rem;text-align:center}.empty-state-icon{width:48px;height:48px;margin:0 auto 1rem;border-radius:var(--radius);background:var(--color-primary-light);color:var(--color-primary);display:grid;place-items:center;font-size:1.5rem}.empty-state-title{font-size:var(--text-xl);font-weight:600;color:var(--color-text);margin:0 0 .4rem}.empty-state-hint{color:var(--color-text-muted);margin:0 0 1.25rem;font-size:var(--text-md)}.toast-stack{position:fixed;bottom:24px;right:24px;z-index:200;display:flex;flex-direction:column;gap:.5rem}.toast-item{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-left:3px solid var(--color-primary);border-radius:var(--radius);padding:.75rem 1rem;box-shadow:var(--shadow-lg);font-size:var(--text-base);min-width:240px;max-width:360px;animation:toast-in .18s ease}.toast-item.success{border-left-color:var(--color-success)}.toast-item.error{border-left-color:var(--color-danger)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.dashboard{min-height:100vh;display:flex;flex-direction:column}.dashboard-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:.9rem 1.5rem;display:flex;justify-content:space-between;align-items:center}.dashboard-header h1{font-size:1.25rem;margin:0}.user-pill{display:flex;align-items:center;gap:1rem;font-size:.9rem;color:var(--color-text-muted)}.dashboard-main{padding:2rem 1.5rem;max-width:1100px;width:100%;margin:0 auto}.module-list{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem;margin:1.5rem 0}.module-list li{background:var(--color-surface);border:1px solid var(--color-border);padding:1rem;border-radius:var(--radius-md);color:var(--color-text-muted)}.debug-block{margin-top:2rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:1rem}.debug-block summary{cursor:pointer;font-weight:500}.debug-block ul{margin:.75rem 0 0;padding-left:1.25rem;font-size:.85rem;color:var(--color-text-muted)}.page-loading{display:flex;align-items:center;justify-content:center;min-height:100vh}.spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-page{padding:4rem 2rem;text-align:center}.error-page h1{font-size:2rem;margin:0 0 .5rem}.app-shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh;position:relative}.app-sidebar{background:var(--color-surface);border-right:1px solid var(--color-border);display:flex;flex-direction:column;overflow-y:auto;z-index:50}.sidebar-backdrop{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;z-index:40;opacity:0;pointer-events:none;transition:opacity .2s ease}.app-brand{padding:1.25rem;border-bottom:1px solid var(--color-border);background:var(--color-primary);min-height:72px;display:flex;align-items:center}.app-brand-link{display:flex;align-items:center;text-decoration:none;width:100%}.app-brand-logo{display:block;max-width:100%;width:100%;height:auto;object-fit:contain}.app-nav{padding:1rem .5rem;display:flex;flex-direction:column;gap:1rem}.nav-group{padding:0 .25rem}.nav-group-title{margin:0 0 .4rem .6rem;font-size:.7rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-muted)}.nav-group ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:1px}.nav-link{display:block;padding:.45rem .7rem;border-radius:var(--radius-sm);color:var(--color-text);text-decoration:none;font-size:.92rem;transition:background-color .1s ease}.nav-link:hover{background:#0f172a0a}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .nav-link:hover{background:#ffffff0a}}:root[data-theme=dark] .nav-link:hover{background:#ffffff0a}.nav-link.active{background:var(--color-primary-light);color:var(--color-primary-dark);font-weight:600}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .nav-link.active{color:var(--color-primary)}}:root[data-theme=dark] .nav-link.active{color:var(--color-primary)}.app-content{display:flex;flex-direction:column;min-width:0}.app-topbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:.6rem 1.5rem;display:flex;align-items:center;gap:1rem}.app-user{display:flex;align-items:center;gap:1rem;font-size:.9rem;color:var(--color-text-muted);margin-left:auto}.burger-btn{display:none;align-items:center;justify-content:center;width:40px;height:40px;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;flex-shrink:0}.burger-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.app-main{padding:1.5rem 2rem;flex:1;overflow-x:auto}.page-header{display:flex;align-items:center;justify-content:space-between;margin:0 0 1.5rem;flex-wrap:wrap;gap:.75rem}.page-header h1{margin:0;font-size:1.4rem}.page-actions{display:flex;gap:.5rem;align-items:center}.data-table{width:100%;border-collapse:collapse;background:var(--color-surface);border:none;border-radius:0;overflow:visible}.data-table th,.data-table td{text-align:left;padding:.85rem 1rem;border-bottom:1px solid var(--color-border-soft);font-size:var(--text-base)}.data-table th{background:transparent;font-weight:500;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);padding-top:.6rem;padding-bottom:.6rem}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .data-table th{background:#ffffff0a}}:root[data-theme=dark] .data-table th{background:#ffffff0a}.data-table tbody tr:hover{background:#0f172a05;cursor:pointer}.data-table tbody tr:last-child td{border-bottom:none}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-5) var(--space-6);margin-bottom:var(--space-4);box-shadow:var(--shadow-xs)}.card h2{margin:0 0 var(--space-4);font-size:var(--text-lg);font-weight:600;letter-spacing:-.01em}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.85rem 1rem}.form-grid .form-field-wide{grid-column:1 / -1}.btn-secondary{background:transparent;border:1px solid var(--color-border);color:var(--color-text);padding:.55rem .9rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.9rem}.btn-secondary:hover{border-color:var(--color-primary);color:var(--color-primary)}.btn-danger{background:var(--color-danger);color:#fff;border:none;padding:.55rem .9rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.9rem}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--color-border);margin-bottom:1.25rem;overflow-x:auto}.tab{background:none;border:none;padding:.6rem 1rem;font-size:.92rem;color:var(--color-text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:500}.badge{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.75rem;font-weight:500}.badge.success{background:#15803d26;color:var(--color-success)}.badge.danger{background:#b91c1c1f;color:var(--color-danger)}.badge.muted{background:#5b637026;color:var(--color-text-muted)}.badge.info{background:#1aa39c26;color:var(--color-primary)}.theme-toggle{display:inline-flex;border:1px solid var(--color-border);border-radius:999px;padding:2px;gap:1px;background:var(--color-surface)}.theme-toggle-btn{display:inline-grid;place-items:center;width:30px;height:30px;border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;border-radius:999px;transition:background-color .12s ease,color .12s ease}.theme-toggle-btn:hover{color:var(--color-text)}.theme-toggle-btn.active{background:var(--color-primary);color:#fff}.tiptap-wrap{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.tiptap-toolbar{display:flex;align-items:center;gap:.25rem;padding:.4rem .5rem;border-bottom:1px solid var(--color-border);flex-wrap:wrap}.tiptap-toolbar button{background:none;border:1px solid transparent;padding:.3rem .55rem;border-radius:4px;cursor:pointer;font-size:.85rem;color:var(--color-text)}.tiptap-toolbar button:hover{background:#0f172a0d}.tiptap-toolbar button.active{background:var(--color-primary);color:#fff}.tiptap-divider{width:1px;height:18px;background:var(--color-border);margin:0 .25rem}.tiptap-content{padding:.85rem 1rem;min-height:220px}.tiptap-content .ProseMirror{outline:none;min-height:200px}.tiptap-content .ProseMirror p{margin:.4em 0}.tiptap-content .ProseMirror h2{font-size:1.2em;margin:.8em 0 .4em}.tiptap-content .ProseMirror h3{font-size:1.05em;margin:.7em 0 .3em}.tiptap-content .ProseMirror ul,.tiptap-content .ProseMirror ol{padding-left:1.5rem}.toast{padding:.6rem .8rem;border-radius:var(--radius-sm);margin-bottom:1rem;font-size:.9rem}.toast.success{background:#15803d1a;color:var(--color-success);border:1px solid rgba(21,128,61,.2)}.toast.error{background:#b91c1c14;color:var(--color-danger);border:1px solid rgba(185,28,28,.2)}.success-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--color-bg);display:flex;align-items:center;justify-content:center;z-index:10000;opacity:0;transition:opacity .5s ease}.success-overlay.active{opacity:1}.success-content{text-align:center;animation:fadeInUp .6s ease;color:var(--color-primary)}.success-logo{width:120px;height:120px;margin:0 auto 2rem;display:block;object-fit:contain;animation:pulse 2s ease-in-out infinite}.success-greeting{font-size:2rem;font-weight:600;color:var(--color-text);margin:0;animation:fadeIn .8s ease .3s both}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.85}}@media (max-width: 640px){.success-logo{width:100px;height:100px;margin-bottom:1.5rem}.success-greeting{font-size:1.5rem}.auth-card{padding:1.75rem 1.25rem}}@media (max-width: 768px){.app-shell{grid-template-columns:1fr}.app-sidebar{position:fixed;inset:0 auto 0 0;width:280px;max-width:85vw;transform:translate(-100%);transition:transform .25s ease;box-shadow:4px 0 16px #0f172a1f}.app-shell.sidebar-open .app-sidebar{transform:translate(0)}.app-shell.sidebar-open .sidebar-backdrop{display:block;opacity:1;pointer-events:auto}.burger-btn{display:inline-flex}.app-topbar{padding:.55rem 1rem}.app-user-name{display:none}.app-main{padding:1rem}.page-header{flex-direction:column;align-items:flex-start}.page-header h1{font-size:1.2rem}.page-actions{width:100%;flex-wrap:wrap}.data-table{display:block;overflow-x:auto;white-space:nowrap}.card{padding:1rem}.form-grid{grid-template-columns:1fr}}@media (max-width: 480px){.auth-shell{padding:1rem .75rem}.auth-card{padding:1.5rem 1rem}.theme-toggle-btn{width:28px;height:28px}.app-user{gap:.5rem}}
