:root{--font-ui:"Source Sans 3","Segoe UI",system-ui,sans-serif;--font-display:"Libre Baskerville",Georgia,"Times New Roman",serif;--rose:#ff2b8a;--rose-dark:#d81b6f;--rose-soft:#ff80be;--blush:#fafbfc;--blush-mid:#fefefe;--white:#fff;--border-rose:#ebebed;--border-rose-strong:#dcdce0;--ink:#111118;--ink-muted:#4a4a5a;--shadow-rose:rgba(18,15,24,.08)}*,:after,:before{box-sizing:border-box}body{background:var(--white);color:var(--ink-muted);font-family:var(--font-ui);margin:0;min-height:100vh;-webkit-font-smoothing:antialiased}h1,h2,h3{color:var(--ink);font-family:var(--font-display);font-weight:700}a{color:var(--rose);text-decoration:none}a:hover{text-decoration:underline}.app-shell{background:linear-gradient(165deg,#fff7fb 0,var(--blush-mid) 38%,#fff 100%);display:flex;flex-direction:column;min-height:100vh}.portal-nav{backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:#fffffff2;border-bottom:1px solid #f0f0f2;left:0;position:fixed;right:0;top:0;z-index:50}.portal-nav .nav-inner{align-items:center;display:flex;justify-content:space-between;margin:0 auto;max-width:1140px;min-height:56px;padding:14px 28px}.nav-brand{color:var(--ink);font-family:var(--font-display);font-size:1.125rem;font-weight:700;line-height:1.2;text-decoration:none}.nav-brand:hover{color:var(--rose-dark);text-decoration:none}.nav-links{align-items:center;display:flex;flex-wrap:wrap;gap:8px 28px}.nav-links a{color:#6b7280;font-size:13px;font-weight:600;text-decoration:none;transition:color .2s}.nav-links a.router-link-active,.nav-links a:hover{color:var(--rose)}.nav-signout{background:none;border:none;color:#6b7280;cursor:pointer;font-family:inherit;font-size:13px;font-weight:600;padding:0;transition:color .2s}.nav-signout:hover{color:var(--rose)}.main{flex:1;margin:0 auto;max-width:1140px;padding:1.5rem 28px;width:100%}.app-shell:has(.portal-nav) .main{padding-top:calc(56px + 1.5rem)}.main--flush{margin:0;max-width:none;padding:0}.page-center{align-items:center;background:linear-gradient(165deg,var(--blush) 0,var(--blush-mid) 42%,#fff 100%);display:flex;justify-content:center;min-height:100vh;padding:20px}h1{font-size:26px;margin:0 0 6px}.card{background:#fff;border:1px solid var(--border-rose);border-radius:16px;box-shadow:0 12px 40px var(--shadow-rose);padding:40px}.table-wrap{overflow-x:auto}table{border-collapse:collapse;font-size:.9rem;width:100%}td,th{border-bottom:1px solid var(--border-rose);padding:.65rem .75rem;text-align:left}th{color:#6b7280;font-family:var(--font-ui);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}tbody tr:hover{background:#fff5fa59}.btn-row{display:flex;gap:12px;margin-top:28px}.btn-row .btn-primary{flex:1}.login-card{max-width:440px;width:100%}.btn{border:none;border-radius:8px;cursor:pointer;display:inline-block;font-family:inherit;font-size:14px;font-weight:600;padding:12px 24px;transition:background .2s,border-color .2s,color .2s}.btn-primary{background:var(--rose);color:#fff}.btn-primary:hover:not(:disabled){background:var(--rose-dark)}.btn-primary:disabled{background:var(--border-rose-strong);color:#a8989f;cursor:not-allowed}.btn-secondary{background:var(--blush-mid);border:1px solid var(--border-rose);color:#7a5f6e}.btn-secondary:hover:not(:disabled){background:#ffe8f0}.btn-danger{background:#fef2f2;border:1px solid #f5c2c7;color:#b91c1c}.btn-danger:hover:not(:disabled){background:#fee2e2;border-color:#ef4444}.btn-ghost{background:transparent;border:1px solid var(--border-rose);color:#6b7280}.btn-ghost:hover:not(:disabled){background:#fffc;border-color:var(--border-rose-strong);color:var(--ink-muted)}.btn-sm{border-radius:8px;font-size:.8125rem;padding:.35rem .65rem}.btn:disabled{cursor:not-allowed;opacity:.65}.actions-cell{min-width:11rem;vertical-align:middle}.confirm-inline{background:#fef1f1d9;border:1px solid #fecaca;border-radius:10px;display:flex;flex-direction:column;gap:.5rem;margin:-.25rem 0;padding:.6rem .75rem}.confirm-inline .confirm-msg{color:var(--ink-muted);font-family:var(--font-ui);font-size:.8rem;line-height:1.35}.confirm-inline .confirm-msg strong{color:#b91c1c;font-weight:600}.confirm-row{align-items:center;display:flex;flex-wrap:wrap;gap:.4rem}.status-pill{background:#f3f4f6;border:1px solid var(--border-rose);border-radius:999px;color:#6b7280;display:inline-block;font-family:var(--font-ui);font-size:12px;font-weight:600;padding:.2rem .5rem;text-transform:capitalize}.status-pill--active{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}.status-pill--pending{background:#fffbeb;border-color:#fde68a;color:#b45309}.status-pill--plan{background:#fff5fa;border-color:#fbcfe8;color:#be185d}.toast{animation:toast-in .22s ease-out;background:#fff;border:1px solid var(--border-rose);border-radius:12px;bottom:1.25rem;box-shadow:0 12px 40px var(--shadow-rose);color:var(--ink-muted);font-size:.9rem;left:50%;padding:.65rem 1.1rem;position:fixed;transform:translate(-50%);z-index:1000}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.inline-alert{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#b91c1c;font-size:.875rem;margin-bottom:.75rem;padding:.55rem .75rem}.field{margin-bottom:1rem}.field label{color:#7a6a72;display:block;font-family:var(--font-ui);font-size:13px;font-weight:600;margin-bottom:6px}.field label:first-of-type{margin-top:0}.field input{background:var(--blush);border:1px solid var(--border-rose-strong);border-radius:8px;color:var(--ink-muted);font-family:inherit;font-size:14px;max-width:100%;outline:none;padding:12px 14px;transition:border-color .2s,box-shadow .2s;width:100%}.field input:focus{border-color:var(--rose);box-shadow:0 0 0 3px #ff00831a}.err{color:#c43d4a;font-size:13px;margin-top:8px}.tabs{display:flex;gap:8px;margin-bottom:1rem}.tabs button{background:#fff;border:1px solid var(--border-rose);border-radius:100px;color:#6b7280;cursor:pointer;font:inherit;font-size:13px;font-weight:600;padding:.4rem .85rem;transition:background .2s,border-color .2s,color .2s}.tabs button:hover{border-color:var(--rose-soft);color:var(--ink-muted)}.tabs button.active{background:#ff2b8a0f;border-color:var(--rose);color:var(--rose)}.muted{color:#8a7a82;font-family:var(--font-ui);font-size:14px;font-weight:400}.page-lead{margin:0 0 1.5rem}.btn-spinner{animation:spin .65s linear infinite;border:2px solid rgba(185,28,28,.25);border-radius:50%;border-top-color:#b91c1c;display:inline-block;height:.75rem;margin-right:.35rem;vertical-align:-.125rem;width:.75rem}@keyframes spin{to{transform:rotate(1turn)}}
