:root{--ink-950:#0e161e;--ink-900:#182430;--ink-800:#243341;--ink-700:#334454;--ink-600:#45566a;--ink-500:#5a6b7d;--ink-400:#7d8b99;--ink-300:#aab6c0;--ink-200:#cfd8e0;--ink-100:#e4eaef;--ink-50:#f1f4f7;--ink-25:#f7f9fb;--surface-page:var(--ink-25);--surface:#fff;--surface-sunken:var(--ink-50);--surface-hover:var(--ink-50);--text-heading:var(--ink-900);--text-primary:var(--ink-800);--text-secondary:var(--ink-600);--text-muted:var(--ink-500);--text-disabled:var(--ink-400);--text-inverse:#fff;--border-subtle:var(--ink-100);--border:var(--ink-200);--border-strong:var(--ink-300);--brand-primary:#2c3e50;--brand-primary-light:#33475c;--brand-primary-rgb:44, 62, 80;--brand-on-primary:#fff;--success:#1b6e3c;--success-surface:#e7f4ec;--success-border:#bfe0cc;--warning:#8a5a00;--warning-surface:#fdf3df;--warning-border:#efd9a6;--danger:#b3261e;--danger-surface:#fcebea;--danger-border:#f2c4c1;--info:#155e9c;--info-surface:#e6f1fb;--info-border:#bbd7ef;--font-sans:"IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--text-2xs:.6875rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-3xl:2.25rem;--leading-tight:1.25;--leading-snug:1.4;--leading-normal:1.55;--leading-relaxed:1.6;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--measure:68ch;--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;--space-16:4rem;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-full:9999px;--shadow-sm:0 1px 2px #0e161e0f;--shadow-md:0 4px 12px #0e161e1a;--shadow-lg:0 12px 28px #0e161e24;--duration-fast:.12s;--duration-base:.18s;--duration-slow:.26s;--ease-out:cubic-bezier(.2, 0, 0, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--tap-target:44px;--primary-green:var(--brand-primary);--primary-light:var(--brand-primary-light);--dynamic-primary:var(--brand-primary);--dynamic-primary-rgb:var(--brand-primary-rgb);--secondary-sage:#9bb3c7;--white:#fff;--cream:var(--surface);--light-gray:var(--surface-sunken);--medium-gray:var(--text-muted);--dark-gray:var(--text-primary);--error:var(--danger);--font-size-xs:var(--text-xs);--font-size-sm:var(--text-sm);--font-size-base:var(--text-base);--font-size-lg:var(--text-lg);--font-size-xl:var(--text-xl);--font-size-2xl:var(--text-2xl);--font-size-3xl:var(--text-3xl);--font-weight-normal:var(--weight-normal);--font-weight-medium:var(--weight-medium);--font-weight-semibold:var(--weight-semibold);--font-weight-bold:700;--radius-xl:var(--radius-lg)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--text-primary);background:var(--surface-page);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-variant-numeric:tabular-nums;margin:0;padding:0}h1,h2,h3,h4,h5,h6{color:var(--text-heading);line-height:var(--leading-tight);margin:0 0 var(--space-4) 0;font-weight:var(--weight-semibold);text-wrap:balance}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}h4{font-size:var(--text-base)}p{margin:0 0 var(--space-4) 0;line-height:var(--leading-relaxed)}p,li{max-width:var(--measure)}td p,th p,li p,.u-measure-none,.u-measure-none p,.u-measure-none li,table p,table li,label p,.form-hint{max-width:none}code,pre,kbd,samp{font-family:var(--font-mono);font-size:.9em}a{color:var(--brand-primary);text-underline-offset:2px}:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px;border-radius:var(--radius-sm)}button,[role=button],input[type=submit],input[type=button]{min-height:var(--tap-target);font-family:inherit}.u-dense button,td button,th button{min-height:32px}.container{max-width:1200px;padding:0 var(--space-4);margin:0 auto}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-6)}.card-flush{padding:0}.surface-raised{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.btn-primary,.btn-secondary,.btn-ghost,.btn-danger{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-medium);font-family:inherit;line-height:var(--leading-snug);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);display:inline-flex}.btn-primary{background:var(--brand-primary);color:var(--brand-on-primary);border:1px solid var(--brand-primary)}.btn-primary:hover:not(:disabled){background:var(--brand-primary-light);border-color:var(--brand-primary-light)}.btn-secondary{background:var(--surface);color:var(--text-primary);border:1px solid var(--border-strong)}.btn-secondary:hover:not(:disabled){background:var(--surface-sunken);border-color:var(--ink-400)}.btn-ghost{color:var(--text-secondary);background:0 0;border:1px solid #0000}.btn-ghost:hover:not(:disabled){background:var(--surface-sunken);color:var(--text-primary)}.btn-danger{background:var(--danger);color:var(--text-inverse);border:1px solid var(--danger)}.btn-danger:hover:not(:disabled){background:#96201a;border-color:#96201a}.btn-primary:disabled,.btn-secondary:disabled,.btn-ghost:disabled,.btn-danger:disabled{background:var(--surface-sunken);color:var(--text-muted);border-color:var(--border);cursor:not-allowed}.form-input,.form-select,.form-textarea{width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--border-strong);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-primary);background:var(--surface);transition:border-color var(--duration-fast) var(--ease-out);font-family:inherit}.form-input::placeholder,.form-textarea::placeholder{color:var(--text-disabled)}.form-input:focus-visible,.form-select:focus-visible,.form-textarea:focus-visible{border-color:var(--brand-primary)}.form-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary);margin-bottom:var(--space-2);display:block}.form-hint{font-size:var(--text-xs);color:var(--text-muted);margin-top:var(--space-2);display:block}.form-error{font-size:var(--text-xs);color:var(--danger);margin-top:var(--space-2);display:block}.form-input[aria-invalid=true],.form-select[aria-invalid=true],.form-textarea[aria-invalid=true]{border-color:var(--danger)}.alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);border:1px solid #0000}.alert-success{background:var(--success-surface);color:var(--success);border-color:var(--success-border)}.alert-warning{background:var(--warning-surface);color:var(--warning);border-color:var(--warning-border)}.alert-danger{background:var(--danger-surface);color:var(--danger);border-color:var(--danger-border)}.alert-info{background:var(--info-surface);color:var(--info);border-color:var(--info-border)}.badge{align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--weight-medium);white-space:nowrap;display:inline-flex}.badge-neutral{background:var(--surface-sunken);color:var(--text-secondary)}.badge-success{background:var(--success-surface);color:var(--success)}.badge-warning{background:var(--warning-surface);color:var(--warning)}.badge-danger{background:var(--danger-surface);color:var(--danger)}.badge-info{background:var(--info-surface);color:var(--info)}.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.data-table th{background:var(--surface-sunken);color:var(--text-secondary);font-size:var(--text-2xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.04em;text-align:left;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);white-space:nowrap}.data-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-subtle);color:var(--text-primary)}.data-table tbody tr:hover{background:var(--surface-hover)}.data-table .num,.num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.empty-state{text-align:center;padding:var(--space-12) var(--space-6);color:var(--text-muted);background:var(--surface-sunken);border-radius:var(--radius-lg)}.empty-state h3{color:var(--text-primary);margin-bottom:var(--space-2)}.empty-state p{max-width:46ch;margin-left:auto;margin-right:auto}.skeleton{background:linear-gradient(90deg, var(--ink-100) 25%, var(--ink-50) 50%, var(--ink-100) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s linear infinite skeleton-shimmer}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.u-mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.u-muted{color:var(--text-muted)}.u-measure{max-width:var(--measure)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fade-in{animation:fadeIn var(--duration-base) var(--ease-out)}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media (width<=640px){.container{padding-left:var(--space-4);padding-right:var(--space-4)}.card{padding:var(--space-4)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.grid{gap:var(--space-6);display:grid}.flex-between{justify-content:space-between;align-items:center;display:flex}html,body,#root{margin:0;padding:0;background:var(--surface-page)!important;background-image:none!important}.subscription-banner{align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-6);font-size:var(--font-size-sm);border-bottom:1px solid #0000;line-height:1.5;display:flex}.subscription-banner-text{flex:1}.subscription-banner-warning{background:var(--warning-surface);color:var(--warning);border-bottom-color:var(--warning-border)}.subscription-banner-trial{background:var(--success-surface);color:var(--success);border-bottom-color:var(--success-border)}.subscription-banner-action{font-weight:var(--font-weight-semibold);color:inherit;white-space:nowrap;flex-shrink:0;text-decoration:underline}.subscription-banner-action:hover{text-decoration:none}.subscription-banner-close{color:inherit;font-size:var(--font-size-xl);padding:0 var(--space-1);cursor:pointer;opacity:.7;background:0 0;border:none;flex-shrink:0;line-height:1}.subscription-banner-close:hover{opacity:1}.subscription-block{min-height:100vh;padding:var(--space-6);background:var(--light-gray);justify-content:center;align-items:center;display:flex}.subscription-block-card{background:var(--white);border-radius:var(--radius-lg);padding:var(--space-10);text-align:center;width:100%;max-width:560px;box-shadow:0 4px 16px #00000014}.subscription-block-icon{margin-bottom:var(--space-4);font-size:3rem}.subscription-block-card h1{color:var(--primary-green);margin:0 0 var(--space-4) 0;font-size:var(--font-size-2xl)}.subscription-block-card p{color:var(--medium-gray);margin:0 0 var(--space-4) 0;line-height:1.6}.subscription-block-card .btn-primary{margin-top:var(--space-2);display:inline-block}.subscription-block-help{font-weight:var(--font-weight-medium)}.subscription-block-support{margin-top:var(--space-8);padding-top:var(--space-4);border-top:1px solid var(--border);font-size:var(--font-size-sm)}@media (width<=768px){.subscription-banner{padding:var(--space-3) var(--space-4);flex-wrap:wrap}.subscription-block-card{padding:var(--space-6)}}.App{min-height:100vh}.loading-container{justify-content:center;align-items:center;min-height:100vh;display:flex}.error-container{min-height:100vh;padding:var(--space-4);justify-content:center;align-items:center;display:flex}.error-container .card{text-align:center;max-width:400px}.error-container h2{color:var(--error);margin-bottom:var(--space-4)}.error-container p{color:var(--medium-gray)}
