:root{--gray-950: #0b0e14;--gray-900: #121722;--gray-850: #182031;--gray-800: #1e2739;--gray-700: #2a3446;--gray-500: #64748b;--gray-400: #94a3b8;--gray-300: #c3cbd8;--gray-100: #e8ecf3;--teal-300: #5eead4;--teal-400: #2dd4bf;--teal-600: #0d9488;--teal-700: #0f766e;--teal-800: #115e59;--amber-400: #fbbf24;--red-400: #f87171;--red-700: #b42318;--green-400: #4ade80;--color-bg: var(--gray-950);--color-surface: var(--gray-900);--color-surface-raised: var(--gray-850);--color-border: rgba(255, 255, 255, .1);--color-control-border: var(--gray-500);--color-text: var(--gray-100);--color-text-muted: var(--gray-400);--color-accent: var(--teal-400);--color-primary: var(--teal-700);--color-primary-hover: var(--teal-800);--color-on-primary: #ffffff;--color-focus: var(--teal-400);--color-danger: var(--red-400);--color-warning: var(--amber-400);--color-success: var(--green-400);--font-display: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;--font-body: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "Cascadia Mono", monospace;--text-xs: .75rem;--text-sm: .8125rem;--text-base: 1rem;--text-lg: 1.25rem;--text-xl: 1.5625rem;--text-2xl: clamp(1.75rem, 1.3rem + 1.6vw, 2.4375rem);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-pill: 999px;--shadow-1: 0 1px 2px rgba(0, 0, 0, .4);--shadow-2: 0 12px 32px rgba(0, 0, 0, .45);--z-sticky: 20;--z-overlay: 30;--z-modal: 40;--z-toast: 50}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;background-color:var(--color-bg);background-image:radial-gradient(60rem 40rem at 85% -10%,rgba(45,212,191,.07),transparent 60%),radial-gradient(45rem 30rem at 5% 110%,rgba(13,148,136,.06),transparent 60%);background-repeat:no-repeat;color:var(--color-text);font-family:var(--font-body);font-size:var(--text-base);line-height:1.55;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-display);line-height:1.15;letter-spacing:-.02em;margin:0;text-wrap:balance}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg);letter-spacing:-.01em}p{margin:0;text-wrap:pretty}a{color:var(--color-accent);text-underline-offset:3px}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:var(--radius-sm)}.skip-link{position:absolute;left:var(--space-4);top:-100px;z-index:var(--z-toast);padding:var(--space-2) var(--space-4);background:var(--color-surface-raised);color:var(--color-text);border-radius:var(--radius-md);border:1px solid var(--color-control-border);text-decoration:none;transition:top .12s ease-out}.skip-link:focus-visible{top:var(--space-4)}.shell-header{position:sticky;top:0;z-index:var(--z-sticky);display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-5);background:#0b0e14d9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--color-border)}.brand{display:flex;align-items:center;gap:var(--space-3);text-decoration:none;color:inherit;min-width:0}.brand__mark{display:grid;place-items:center;width:34px;height:34px;border-radius:var(--radius-md);background:linear-gradient(160deg,var(--teal-600),var(--teal-800));border:1px solid rgba(45,212,191,.35);flex:none}.brand__mark svg{display:block}.brand__text{display:flex;flex-direction:column;line-height:1.2;min-width:0}.brand__name{font-family:var(--font-display);font-weight:700;letter-spacing:-.01em}.brand__sub{font-size:var(--text-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.1em}.header-spacer{flex:1 1 auto}.user-chip{display:flex;align-items:center;gap:var(--space-3);min-width:0}.user-chip__meta{display:flex;flex-direction:column;align-items:flex-end;line-height:1.25;min-width:0}.user-chip__name{font-size:var(--text-sm);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:22ch}.user-chip__role{font-size:var(--text-xs);color:var(--color-text-muted)}.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:var(--radius-pill);background:var(--gray-800);border:1px solid var(--color-border);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-accent);flex:none}.page{width:100%;max-width:1200px;margin:0 auto;padding:var(--space-6) var(--space-5) var(--space-8)}.page--narrow{max-width:880px}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-5)}.page-head__text{min-width:0}.page-head__spacer{flex:1 1 auto}.breadcrumb{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-2)}.breadcrumb a{color:var(--color-text-muted);text-decoration:none}.breadcrumb a:hover{color:var(--color-text)}.lede{color:var(--color-text-muted);font-size:var(--text-base);max-width:65ch;margin-top:var(--space-2)}.auth{min-height:100vh;display:grid;place-items:center;padding:var(--space-5)}.auth__card{width:100%;max-width:420px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-2)}.auth__brand{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-5)}.auth h1{font-size:var(--text-xl);margin-bottom:var(--space-2)}.auth__hint{color:var(--color-text-muted);font-size:var(--text-sm);margin-bottom:var(--space-5)}.auth__foot{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--color-border);display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--color-text-muted)}.field{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.field__label{font-size:var(--text-sm);font-weight:500;color:var(--color-text)}.field__hint{font-size:var(--text-xs);color:var(--color-text-muted)}.field__error{font-size:var(--text-xs);color:var(--color-danger);display:flex;align-items:center;gap:var(--space-2)}.input,.select,.textarea{width:100%;min-height:44px;padding:var(--space-2) var(--space-3);background:var(--gray-950);color:var(--color-text);border:1px solid var(--color-control-border);border-radius:var(--radius-md);font-family:inherit;font-size:var(--text-base);transition:border-color .12s ease-out,box-shadow .12s ease-out}.textarea{min-height:96px;resize:vertical;line-height:1.5}.input::placeholder,.textarea::placeholder{color:var(--gray-500)}.input:hover,.select:hover,.textarea:hover{border-color:var(--gray-400)}.input:focus,.select:focus,.textarea:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #2dd4bf2e;outline:none}.input:disabled,.select:disabled,.textarea:disabled{opacity:.6;cursor:not-allowed}.input[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--color-danger)}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:44px;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);border:1px solid transparent;font-family:inherit;font-size:var(--text-sm);font-weight:500;line-height:1.2;text-decoration:none;cursor:pointer;transition:background-color .12s ease-out,border-color .12s ease-out,color .12s ease-out;white-space:nowrap}.btn--primary{background:var(--color-primary);color:var(--color-on-primary);border-color:var(--color-primary)}.btn--primary:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn--primary:active{background:var(--teal-800)}.btn--ghost{background:transparent;color:var(--color-text);border-color:var(--color-control-border)}.btn--ghost:hover{background:var(--gray-800)}.btn--quiet{background:transparent;color:var(--color-text-muted);border-color:transparent;padding-inline:var(--space-3)}.btn--quiet:hover{color:var(--color-text);background:var(--gray-800)}.btn:disabled,.btn[aria-busy=true]{opacity:.55;cursor:not-allowed}.btn--block{width:100%}.btn__spinner{width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:var(--radius-pill);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5)}.card+.card{margin-top:var(--space-4)}.section-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.section-head__spacer{flex:1 1 auto}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-4)}.project-card{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);color:inherit;text-decoration:none;transition:border-color .12s ease-out,background-color .12s ease-out,transform .12s ease-out}.project-card:hover{border-color:#2dd4bf73;background:var(--color-surface-raised)}.project-card__top{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.code{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;color:var(--color-accent)}.project-card__name{font-size:var(--text-lg);font-weight:500;line-height:1.25;overflow-wrap:anywhere}.project-card__meta{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-3);font-size:var(--text-sm);color:var(--color-text-muted)}.pill{display:inline-flex;align-items:center;gap:var(--space-2);padding:2px var(--space-3);border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:500;letter-spacing:.02em;border:1px solid transparent;white-space:nowrap}.pill__dot{width:7px;height:7px;border-radius:var(--radius-pill);background:currentColor;flex:none}.pill--active{color:var(--green-400);background:#4ade801f;border-color:#4ade8040}.pill--planning,.pill--on_hold{color:var(--amber-400);background:#fbbf241f;border-color:#fbbf2440}.pill--completed{color:var(--gray-300);background:#ffffff14;border-color:var(--color-border)}.pill--archived{color:var(--gray-400);background:#ffffff0d;border-color:var(--color-border)}.pill--open{color:var(--amber-400);background:#fbbf241f;border-color:#fbbf2440}.pill--in_progress{color:var(--teal-300);background:#2dd4bf1f;border-color:#2dd4bf40}.pill--in_review{color:#93c5fd;background:#93c5fd1f;border-color:#93c5fd40}.pill--resolved{color:var(--green-400);background:#4ade801f;border-color:#4ade8040}.pill--closed{color:var(--gray-300);background:#ffffff0f;border-color:var(--color-border)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-4);margin-bottom:var(--space-5)}.stat{padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.stat__label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted)}.stat__value{font-family:var(--font-mono);font-size:var(--text-xl);font-weight:600;margin-top:var(--space-1)}.table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-md)}table{width:100%;border-collapse:collapse;font-size:var(--text-sm);min-width:640px}caption{caption-side:top;text-align:left;padding:var(--space-3) var(--space-4);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted)}th,td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1px solid var(--color-border);vertical-align:middle}th{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);font-weight:500;background:var(--gray-950);white-space:nowrap}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#ffffff08}.cell-title{font-weight:500;overflow-wrap:anywhere}.cell-muted{color:var(--color-text-muted)}.priority{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);text-transform:capitalize}.priority:before{content:"";width:8px;height:8px;border-radius:var(--radius-pill);background:var(--gray-400)}.priority--low:before{background:var(--gray-400)}.priority--medium:before{background:var(--teal-400)}.priority--high:before{background:var(--amber-400)}.priority--critical:before{background:var(--red-400)}.empty{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3);padding:var(--space-7) var(--space-5);border:1px dashed var(--color-control-border);border-radius:var(--radius-lg);background:#ffffff05}.empty__title{font-size:var(--text-lg);font-weight:500}.empty__text{color:var(--color-text-muted);max-width:55ch}.alert{display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid;font-size:var(--text-sm);margin-bottom:var(--space-4)}.alert--error{color:#fecaca;background:#b423182e;border-color:#f8717173}.alert__icon{flex:none;margin-top:1px}.skeleton{border-radius:var(--radius-md);background:linear-gradient(90deg,var(--gray-900),var(--gray-850),var(--gray-900));background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton--card{height:132px}.skeleton--row{height:44px;margin-top:var(--space-2)}dialog{width:min(560px,calc(100vw - var(--space-6)));padding:0;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-2)}dialog::backdrop{background:#05070bb8;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.dialog__head{display:flex;align-items:flex-start;gap:var(--space-4);padding:var(--space-5) var(--space-5) 0}.dialog__head h2{font-size:var(--text-lg)}.dialog__close{margin-left:auto;background:transparent;border:1px solid var(--color-control-border);border-radius:var(--radius-sm);color:var(--color-text-muted);width:32px;height:32px;display:grid;place-items:center;cursor:pointer}.dialog__close:hover{color:var(--color-text);background:var(--gray-800)}.dialog__body{padding:var(--space-5)}.dialog__foot{display:flex;justify-content:flex-end;gap:var(--space-3);padding:0 var(--space-5) var(--space-5)}.toast-region{position:fixed;right:var(--space-4);bottom:var(--space-4);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-2);max-width:min(380px,calc(100vw - var(--space-6)))}.toast{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface-raised);box-shadow:var(--shadow-2);font-size:var(--text-sm)}.toast--ok{border-color:#4ade8066}.toast--error{border-color:#f8717180}.tag-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tag{display:inline-flex;align-items:center;gap:var(--space-2);padding:3px var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:#ffffff0a;font-size:var(--text-xs);color:var(--color-text-muted)}.tag .mono{color:var(--color-accent)}.check{display:inline-flex;align-items:center;gap:var(--space-2);min-height:32px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:#ffffff08;font-size:var(--text-sm);cursor:pointer}.check:has(input:checked){border-color:#2dd4bf73;background:#2dd4bf1a}.check input{accent-color:var(--teal-600);width:16px;height:16px;margin:0}.select--compact{min-height:34px;padding:2px var(--space-2);font-size:var(--text-sm)}.fieldset-reset{border:0;padding:0;margin:0}.fieldset-reset>legend{padding:0;margin-bottom:var(--space-2)}.mt-4{margin-top:var(--space-4)}.mb-5{margin-bottom:var(--space-5)}.mono{font-family:var(--font-mono)}.muted{color:var(--color-text-muted)}.small{font-size:var(--text-sm)}.xs{font-size:var(--text-xs)}.stack>*+*{margin-top:var(--space-4)}.row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.spacer{flex:1 1 auto}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media (max-width: 640px){.page{padding:var(--space-5) var(--space-4) var(--space-7)}.shell-header{padding:var(--space-3) var(--space-4)}.user-chip__meta{display:none}.auth__card{padding:var(--space-5)}.project-grid{grid-template-columns:1fr}.page-head{align-items:flex-start}.page-head .btn{width:100%}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
