.p-page-enter-active,.p-page-leave-active{transition:opacity .2s ease,transform .2s ease}.p-page-enter-from{opacity:0;transform:translateY(6px)}.p-page-leave-to{opacity:0}:root{--p-bg: #0a0a0b;--p-bg-2: #0e0e10;--p-card: #141417;--p-card-2: #1a1a1e;--p-inset: #18181c;--p-border: #26262c;--p-border-2: #34343c;--p-text: #f4f4f2;--p-text-2: #b6b6bd;--p-text-3: #85858f;--p-dim: #5a5a63;--p-accent: #c6f24e;--p-accent-ink:#0a0a0b;--p-accent-dim:#9bbf3a;--p-ok: #86efac;--p-warn: #fcd34d;--p-blue: #7aa9ff;--p-danger: #fca5a5;--p-radius: 16px;--p-radius-sm: 10px;--p-shadow: 0 18px 50px -24px rgba(0,0,0,.8);--p-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--p-hand: "Caveat", "Segoe Script", cursive;--p-ease: cubic-bezier(.22, 1, .36, 1);--p-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:radial-gradient(1200px 600px at 80% -10%,rgba(198,242,78,.06),transparent 60%),radial-gradient(900px 500px at -10% 10%,rgba(122,169,255,.05),transparent 55%),var(--p-bg);color:var(--p-text);font-family:var(--p-font);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100vh;min-height:100dvh}#portal-app{min-height:100vh;min-height:100dvh}a{color:inherit;text-decoration:none}button{font-family:inherit}::selection{background:#c6f24e47;color:#fff}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:#2a2a30;border-radius:999px;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:#3a3a42;background-clip:padding-box}.pbtn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 18px;border-radius:999px;font-size:.92rem;font-weight:600;line-height:1;border:1px solid var(--p-border-2);background:var(--p-card-2);color:var(--p-text);cursor:pointer;transition:transform .12s var(--p-ease),background .15s,border-color .15s,opacity .15s;white-space:nowrap}.pbtn:hover{background:#202026;transform:translateY(-1px)}.pbtn:active{transform:translateY(0)}.pbtn:disabled{opacity:.5;cursor:not-allowed;transform:none}.pbtn--primary{background:var(--p-accent);color:var(--p-accent-ink);border-color:transparent}.pbtn--primary:hover{background:#d4ff5e}.pbtn--ghost{background:transparent;border-color:var(--p-border);color:var(--p-text-2)}.pbtn--ghost:hover{background:var(--p-inset);color:var(--p-text)}.pbtn--sm{padding:8px 13px;font-size:.85rem}.pbtn--block{width:100%}.pinput,.ptextarea{width:100%;padding:12px 14px;border-radius:var(--p-radius-sm);background:var(--p-inset);border:1px solid var(--p-border);color:var(--p-text);font-size:.95rem;font-family:inherit;transition:border-color .15s,background .15s}.pinput::placeholder,.ptextarea::placeholder{color:var(--p-dim)}.pinput:focus,.ptextarea:focus{outline:none;border-color:var(--p-accent-dim);background:#1c1c20}.ptextarea{resize:vertical;line-height:1.5}.plabel{display:block;font-size:.78rem;font-weight:600;color:var(--p-text-3);margin-bottom:7px;letter-spacing:.02em}.pcard{background:linear-gradient(180deg,var(--p-card),var(--p-bg-2));border:1px solid var(--p-border);border-radius:var(--p-radius);box-shadow:var(--p-shadow)}.pchip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:.72rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;border:1px solid var(--p-border-2);color:var(--p-text-2);background:var(--p-inset)}.pchip .pdot{width:7px;height:7px;border-radius:50%;background:currentColor}.pchip--planning{color:var(--p-text-3)}.pchip--in_progress{color:var(--p-accent);border-color:#c6f24e59}.pchip--review{color:var(--p-blue);border-color:#7aa9ff59}.pchip--on_hold{color:var(--p-warn);border-color:#fcd34d4d}.pchip--completed{color:var(--p-ok);border-color:#86efac4d}.pmuted{color:var(--p-text-3)}.pmono{font-family:var(--p-mono)}.pspin{width:18px;height:18px;border:2px solid rgba(255,255,255,.18);border-top-color:var(--p-accent);border-radius:50%;animation:pspin .7s linear infinite}@keyframes pspin{to{transform:rotate(360deg)}}@keyframes p-fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes p-pop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.08)}to{transform:scale(1);opacity:1}}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}
