:root{--c-bg: #f5f7fa;--c-surface: #ffffff;--c-surface-2: #f1f4f8;--c-border: #e2e8f0;--c-border-strong: #cbd5e1;--c-text: #1e293b;--c-text-muted: #64748b;--c-text-subtle: #94a3b8;--c-primary: #4f46e5;--c-primary-hover: #4338ca;--c-primary-soft: #eef2ff;--c-primary-contrast: #ffffff;--c-success: #16a34a;--c-success-soft: #dcfce7;--c-danger: #dc2626;--c-danger-hover: #b91c1c;--c-danger-soft: #fee2e2;--c-warning: #d97706;--c-warning-soft: #fef3c7;--c-info: #0ea5e9;--c-info-soft: #e0f2fe;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--fs-xs: .75rem;--fs-sm: .875rem;--fs-md: 1rem;--fs-lg: 1.125rem;--fs-xl: 1.375rem;--fs-2xl: 1.75rem;--fs-3xl: 2.25rem;--fw-normal: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--lh-tight: 1.2;--lh-normal: 1.5;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.5rem;--sp-6: 2rem;--sp-7: 3rem;--sp-8: 4rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06), 0 1px 3px rgba(15, 23, 42, .08);--shadow-md: 0 4px 6px -1px rgba(15, 23, 42, .08), 0 2px 4px -2px rgba(15, 23, 42, .06);--shadow-lg: 0 12px 24px -8px rgba(15, 23, 42, .18);--nav-height: 60px;--content-max: 1160px;--transition: .15s ease}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-md);line-height:var(--lh-normal);color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;line-height:var(--lh-tight);font-weight:var(--fw-semibold)}h1{font-size:var(--fs-2xl)}h2{font-size:var(--fs-xl)}h3{font-size:var(--fs-lg)}p{margin:0}a{color:var(--c-primary);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}.stack{display:flex;flex-direction:column}.row{display:flex;align-items:center}.gap-1{gap:var(--sp-1)}.gap-2{gap:var(--sp-2)}.gap-3{gap:var(--sp-3)}.gap-4{gap:var(--sp-4)}.gap-5{gap:var(--sp-5)}.grow{flex:1}.wrap{flex-wrap:wrap}.between{justify-content:space-between}.right{justify-content:flex-end}.center{justify-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.text-muted{color:var(--c-text-muted)}.text-subtle{color:var(--c-text-subtle)}.text-sm{font-size:var(--fs-sm)}.text-xs{font-size:var(--fs-xs)}.text-right{text-align:right}.fw-semibold{font-weight:var(--fw-semibold)}.mono{font-family:var(--font-mono)}.mt-2{margin-top:var(--sp-2)}.mt-3{margin-top:var(--sp-3)}.mt-4{margin-top:var(--sp-4)}.mt-5{margin-top:var(--sp-5)}.mb-4{margin-bottom:var(--sp-4)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:0 var(--sp-4);height:40px;border:1px solid transparent;border-radius:var(--radius-sm);font-size:var(--fs-sm);font-weight:var(--fw-medium);cursor:pointer;white-space:nowrap;transition:background var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px}.btn--sm{height:32px;padding:0 var(--sp-3);font-size:var(--fs-xs)}.btn--block{width:100%}.btn--primary{background:var(--c-primary);color:var(--c-primary-contrast)}.btn--primary:hover:not(:disabled){background:var(--c-primary-hover)}.btn--secondary{background:var(--c-surface);color:var(--c-text);border-color:var(--c-border-strong)}.btn--secondary:hover:not(:disabled){background:var(--c-surface-2)}.btn--ghost{background:transparent;color:var(--c-text-muted)}.btn--ghost:hover:not(:disabled){background:var(--c-surface-2);color:var(--c-text)}.btn--danger{background:var(--c-danger);color:#fff}.btn--danger:hover:not(:disabled){background:var(--c-danger-hover)}.btn--success{background:var(--c-success);color:#fff}.btn--success:hover:not(:disabled){filter:brightness(.95)}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card__header{padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--c-border);display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.card__title{font-size:var(--fs-lg);font-weight:var(--fw-semibold)}.card__body{padding:var(--sp-5)}.field{display:flex;flex-direction:column;gap:var(--sp-2)}.field__label{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--c-text)}.field__hint{font-size:var(--fs-xs);color:var(--c-text-muted)}.field__error{font-size:var(--fs-xs);color:var(--c-danger)}.input,.select,.textarea{width:100%;padding:0 var(--sp-3);height:40px;border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);color:var(--c-text);font-size:var(--fs-sm);font-family:inherit;transition:border-color var(--transition),box-shadow var(--transition)}.textarea{height:auto;padding:var(--sp-3);resize:vertical;min-height:84px}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--c-primary);box-shadow:0 0 0 3px var(--c-primary-soft)}.input--invalid,.select--invalid,.textarea--invalid{border-color:var(--c-danger)}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.table th{text-align:left;font-weight:var(--fw-semibold);color:var(--c-text-muted);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.04em;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--c-border);background:var(--c-surface-2);white-space:nowrap}.table td{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--c-border);vertical-align:middle}.table tbody tr:last-child td{border-bottom:none}.table tr.clickable{cursor:pointer}.table tr.clickable:hover td{background:var(--c-surface-2)}.table .num{text-align:right;font-variant-numeric:tabular-nums}.badge{display:inline-flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:var(--fw-medium);line-height:1.4}.badge--neutral{background:var(--c-surface-2);color:var(--c-text-muted)}.badge--open{background:var(--c-info-soft);color:#0369a1}.badge--won{background:var(--c-success-soft);color:#15803d}.badge--lost{background:var(--c-danger-soft);color:#b91c1c}.badge--stage{background:var(--c-primary-soft);color:var(--c-primary-hover)}.modal__overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;padding:var(--sp-4);z-index:50}.modal{background:var(--c-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:480px;max-height:90vh;overflow-y:auto}.modal--wide{max-width:720px}.modal__header{padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--c-border);display:flex;align-items:center;justify-content:space-between}.modal__title{font-size:var(--fs-lg);font-weight:var(--fw-semibold)}.modal__body{padding:var(--sp-5)}.modal__footer{padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--c-border);display:flex;justify-content:flex-end;gap:var(--sp-3)}.toast-stack{position:fixed;bottom:var(--sp-5);right:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-2);z-index:60}.toast{min-width:260px;padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-size:var(--fs-sm);color:#fff;animation:toast-in var(--transition)}.toast--success{background:var(--c-success)}.toast--error{background:var(--c-danger)}.toast--info{background:var(--c-text)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.app-nav{height:var(--nav-height);background:var(--c-surface);border-bottom:1px solid var(--c-border);display:flex;align-items:center;gap:var(--sp-5);padding:0 var(--sp-5);position:sticky;top:0;z-index:40}.app-nav__brand{font-weight:var(--fw-bold);font-size:var(--fs-lg);color:var(--c-primary);letter-spacing:-.01em}.app-nav__links{display:flex;gap:var(--sp-1)}.app-nav__link{padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);color:var(--c-text-muted);font-size:var(--fs-sm);font-weight:var(--fw-medium)}.app-nav__link:hover{background:var(--c-surface-2);text-decoration:none}.app-nav__link.active{background:var(--c-primary-soft);color:var(--c-primary-hover)}.app-nav__spacer{flex:1}.app-nav__user{display:flex;align-items:center;gap:var(--sp-3);font-size:var(--fs-sm)}.page{max-width:var(--content-max);margin:0 auto;padding:var(--sp-6) var(--sp-5)}.page__header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-5);flex-wrap:wrap}.page__subtitle{color:var(--c-text-muted);font-size:var(--fs-sm);margin-top:var(--sp-1)}.empty{text-align:center;padding:var(--sp-7) var(--sp-4);color:var(--c-text-muted)}.empty__title{font-weight:var(--fw-semibold);color:var(--c-text);margin-bottom:var(--sp-2)}.spinner{width:20px;height:20px;border:2px solid var(--c-border-strong);border-top-color:var(--c-primary);border-radius:50%;animation:spin .6s linear infinite}.spinner--center{margin:var(--sp-7) auto}@keyframes spin{to{transform:rotate(360deg)}}.auth{min-height:100%;display:flex;align-items:center;justify-content:center;padding:var(--sp-5)}.auth__card{width:100%;max-width:380px}.auth__brand{text-align:center;font-size:var(--fs-2xl);font-weight:var(--fw-bold);color:var(--c-primary);margin-bottom:var(--sp-2)}.auth__tagline{text-align:center;color:var(--c-text-muted);margin-bottom:var(--sp-5);font-size:var(--fs-sm)}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3)}.stat{padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);background:var(--c-surface-2)}.stat__label{font-size:var(--fs-xs);color:var(--c-text-muted);text-transform:uppercase;letter-spacing:.04em}.stat__value{font-size:var(--fs-lg);font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;margin-top:var(--sp-1)}.stat--sales .stat__value{color:var(--c-primary)}.meter{height:6px;background:var(--c-border);border-radius:var(--radius-pill);overflow:hidden;margin-top:var(--sp-2)}.meter__fill{height:100%;background:var(--c-primary);border-radius:var(--radius-pill)}@media (max-width: 640px){.stat-grid{grid-template-columns:1fr}.app-nav{gap:var(--sp-3);padding:0 var(--sp-3)}}
