:root{--color-paper:#eef0ec;--color-surface:#fff;--color-ink:#14171c;--color-ink-muted:#565b66;--color-line:#d7d9d3;--color-track:#1b4b8f;--color-purple:#6b46c4;--color-green:#1f8a5f;--color-amber:#b8720a;--color-red:#b23a3a;--color-on-purple:#f3edfd;--color-on-green:#eafaf1;--color-on-amber:#fdf3e3;--color-on-red:#fdecec;--font-display:"Archivo Expanded", sans-serif;--font-body:"IBM Plex Sans", sans-serif;--font-mono:"IBM Plex Mono", monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.25rem;--text-xl:1.75rem;--text-2xl:2.5rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-12:3rem;--radius-sm:2px;--radius-md:4px;--shadow-card:0 1px 2px #14171c0f, 0 1px 1px #14171c0a}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);-webkit-font-smoothing:antialiased;line-height:1.5}#root{min-height:100vh}h1,h2,h3{font-family:var(--font-display);margin:0}a{color:var(--color-track)}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}:focus-visible{outline:2px solid var(--color-track);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.toast-viewport{bottom:var(--space-6);right:var(--space-6);gap:var(--space-3);z-index:1000;flex-direction:column;display:flex;position:fixed}.toast{font-family:var(--font-body);font-size:var(--text-sm);background:var(--color-ink);color:#fff;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);box-shadow:var(--shadow-card);border-left:3px solid var(--color-track);max-width:320px}.toast--success{border-left-color:var(--color-green)}.toast--error{border-left-color:var(--color-red)}.app-nav{align-items:center;gap:var(--space-4) var(--space-8);padding:var(--space-4) var(--space-8);background:var(--color-surface);border-bottom:1px solid var(--color-line);flex-wrap:wrap;display:flex}.app-nav__brand{font-family:var(--font-display);font-weight:800;font-size:var(--text-lg);letter-spacing:-.01em}.app-nav__links{gap:var(--space-6);flex:1;display:flex}.app-nav__links a{color:var(--color-ink-muted);font-weight:500;font-size:var(--text-sm);text-decoration:none}.app-nav__links a.active,.app-nav__links a[aria-current=page]{color:var(--color-ink)}.app-nav__user{align-items:center;gap:var(--space-4);font-size:var(--text-sm);display:flex}.app-nav__user a{color:var(--color-ink);font-weight:500;text-decoration:none}.app-content{padding:var(--space-8);max-width:1100px;margin:0 auto}.page-header{align-items:center;gap:var(--space-3);margin-bottom:var(--space-6);flex-wrap:wrap;justify-content:space-between;display:flex}.page-header h1{font-size:var(--text-xl)}.page-header .eyebrow,.eyebrow{font-family:var(--font-mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-ink-muted);margin-bottom:var(--space-1);display:block}.section-title{font-size:var(--text-lg);margin:var(--space-8) 0 var(--space-4)}.section-header{margin-top:var(--space-8);justify-content:space-between;align-items:center;display:flex}.section-header .section-title{margin:0}.auth-layout{min-height:100vh;padding:var(--space-4);justify-content:center;align-items:center;display:flex}.auth-layout__card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:var(--space-8);width:100%;max-width:400px}.auth-form h1{font-size:var(--text-xl);margin-bottom:var(--space-6)}.auth-form .btn{width:100%}.auth-form .btn+.btn{margin-top:var(--space-3)}.auth-form__footer{margin-top:var(--space-4);font-size:var(--text-sm);color:var(--color-ink-muted);text-align:center}.profile-form{max-width:400px}.error-page{text-align:center;padding:var(--space-12)}.error-page h1{font-size:var(--text-xl);margin-bottom:var(--space-3)}@media (width<=640px){.app-nav{padding:var(--space-3) var(--space-4)}.app-content{padding:var(--space-4)}.section-header{gap:var(--space-3);flex-wrap:wrap}}.field{margin-bottom:var(--space-4)}.field__label{font-family:var(--font-mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-ink-muted);margin-bottom:var(--space-2);display:block}.field__error{margin:var(--space-2) 0 0;font-size:var(--text-sm);color:var(--color-red)}.input,.select{width:100%;font-family:var(--font-body);font-size:var(--text-base);color:var(--color-ink);background:var(--color-paper);border:1px solid var(--color-line);border-radius:var(--radius-sm);padding:10px 12px}.input[aria-invalid=true],.select[aria-invalid=true]{border-color:var(--color-red)}.btn{font-family:var(--font-body);font-weight:600;font-size:var(--text-sm);border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;padding:10px 18px;line-height:1.2}.btn:disabled{cursor:not-allowed;opacity:.6}.btn--primary{background:var(--color-track);color:#fff}.btn--primary:hover:not(:disabled){background:#163e77}.btn--secondary{color:var(--color-ink);border-color:var(--color-line);background:0 0}.btn--secondary:hover:not(:disabled){background:var(--color-surface)}.btn--danger{background:var(--color-red);color:#fff}.btn--danger:hover:not(:disabled){background:#942f2f}.table-wrap{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);overflow:auto hidden}.table{border-collapse:collapse;width:100%}.table thead th{text-align:left;font-family:var(--font-mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-ink-muted);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-line);white-space:nowrap;font-weight:500}.table tbody td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-line);font-size:var(--text-sm);vertical-align:middle}.table tbody tr:last-child td{border-bottom:none}.table .mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--color-ink-muted);font-size:var(--text-xs)}.table .empty-row td{text-align:center;color:var(--color-ink-muted);padding:var(--space-8)}.row-actions{gap:var(--space-2);justify-content:flex-end;display:flex}.row-actions .btn{font-size:var(--text-xs);padding:6px 12px}.badge{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.02em;text-transform:uppercase;border-radius:var(--radius-sm);white-space:nowrap;align-items:center;gap:6px;padding:5px 10px;font-weight:500;display:inline-flex}.badge:before{content:"";background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px}.badge--purple{background:var(--color-purple);color:var(--color-on-purple)}.badge--green{background:var(--color-green);color:var(--color-on-green)}.badge--amber{background:var(--color-amber);color:var(--color-on-amber)}.badge--red{background:var(--color-red);color:var(--color-on-red)}.badge--outline{border:1px solid var(--color-line);color:var(--color-ink-muted);background:0 0}.badge--outline:before{background:var(--color-ink-muted)}.modal{border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-card);max-width:480px;width:calc(100vw - 2 * var(--space-4));border:none;padding:0}.modal::backdrop{background:#14171c73}.modal__content{padding:var(--space-6)}.modal__header{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}.modal__header h2{font-family:var(--font-display);font-size:var(--text-lg)}.modal__close{font-size:var(--text-xl);cursor:pointer;color:var(--color-ink-muted);padding:var(--space-1);background:0 0;border:none;line-height:1}.modal__actions{gap:var(--space-3);margin-top:var(--space-6);display:flex}.pagination{align-items:center;gap:var(--space-3);margin-top:var(--space-4);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-ink-muted);display:flex}.spinner{border:2px solid var(--color-line);border-top-color:var(--color-track);border-radius:50%;width:20px;height:20px;animation:.6s linear infinite spinner-rotate;display:inline-block}@keyframes spinner-rotate{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:1.5s}}
