@font-face{font-family:Geist;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/geist-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Geist;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/geist-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-mono-400-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-mono-400-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plex-mono-500-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plex-mono-500-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}:root{--font-ui:"Geist",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--bg:#ffffff;--bg-sunken:#f7f7f8;--bg-raised:#ffffff;--bg-hover:#f4f4f5;--bg-active:#ececee;--fg:#18181b;--fg-muted:#71717a;--fg-subtle:#a1a1aa;--fg-inverse:#ffffff;--muted:var(--fg-muted);--border:#e4e4e7;--border-strong:#d4d4d8;--primary:#18181b;--primary-hover:#27272a;--brand:#18181b;--brand-contrast:#ffffff;--accent:var(--brand);--success:#15803d;--success-bg:#f0fdf4;--warning:#b45309;--warning-bg:#fffbeb;--danger:#b42318;--danger-bg:#fef2f2;--info:#1d4ed8;--info-bg:#eff6ff;--radius-sm:6px;--radius:8px;--radius-lg:12px;--radius-full:999px;--shadow-sm:0 1px 2px rgb(16 24 40/0.05);--shadow:0 1px 3px rgb(16 24 40/0.1),0 1px 2px rgb(16 24 40/0.06);--shadow-lg:0 10px 15px -3px rgb(16 24 40/0.08),0 4px 6px -4px rgb(16 24 40/0.05);--shadow-pop:0 12px 32px -8px rgb(16 24 40/0.18);--sidebar-width:264px;--content-max:1180px}@media (prefers-color-scheme:dark){:root{--bg:#0b0b0d;--bg-sunken:#131316;--bg-raised:#17171a;--bg-hover:#1f1f23;--bg-active:#27272b;--fg:#fafafa;--fg-muted:#a1a1aa;--fg-subtle:#71717a;--border:#27272a;--border-strong:#3f3f46;--primary:#fafafa;--primary-hover:#e4e4e7;--fg-inverse:#0b0b0d;--brand:#fafafa;--brand-contrast:#18181b;--success-bg:#0b1f14;--warning-bg:#241a06;--danger-bg:#2a1210;--info-bg:#0e1a33}}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:var(--font-ui);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}h1{font-size:28px;font-weight:700;letter-spacing:-.02em;margin:0}h2{font-size:18px;font-weight:600;letter-spacing:-.01em}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;background:var(--bg-sunken);padding:1px 5px;border-radius:var(--radius-sm)}:focus-visible{outline:2px solid var(--info);outline-offset:2px;border-radius:var(--radius-sm)}.app-shell{display:grid;grid-template-columns:var(--sidebar-width) 1fr;min-height:100vh}.sidebar{background:var(--bg-sunken);border-right:1px solid var(--border);padding:16px 12px;display:flex;flex-direction:column;gap:2px;position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:4px 8px 16px}.sidebar-mark{display:grid;place-items:center;width:30px;height:30px;flex-shrink:0;border-radius:var(--radius);background:#0d0d0d;color:#fff}.sidebar-brand-name{font-weight:600;font-size:14px;letter-spacing:-.01em;line-height:1.25}.nav-section{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--fg-subtle);padding:16px 8px 4px}.nav-item{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:var(--radius);color:var(--fg-muted);font-size:14px;font-weight:500;transition:background .1s ease,color .1s ease}.nav-item:hover{background:var(--bg-hover);color:var(--fg);text-decoration:none}.nav-item[aria-current=page]{background:var(--bg-raised);color:var(--fg);box-shadow:var(--shadow-sm);border:1px solid var(--border);padding:6px 7px}.nav-item-icon{width:16px;height:16px;flex-shrink:0;opacity:.75}.nav-item-spinner{margin-left:auto;width:13px;height:13px;flex:none;border:2px solid;border-top:2px solid transparent;border-radius:var(--radius-full);opacity:.6;animation:spin .6s linear infinite}@media (prefers-reduced-motion:reduce){.nav-item-spinner{display:none}}.nav-badge{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-full);background:var(--info-bg);color:var(--info);font-size:12px;font-weight:600;display:grid;place-items:center}.nav-sub{margin-left:16px;padding-left:12px;border-left:1px solid var(--border);display:flex;flex-direction:column;gap:2px}.sidebar-footer{margin-top:auto;padding-top:16px;border-top:1px solid var(--border);display:flex;align-items:center;gap:10px}.avatar{width:30px;height:30px;border-radius:var(--radius-full);background:var(--bg-active);color:var(--fg-muted);display:grid;place-items:center;font-size:12px;font-weight:600;flex-shrink:0}.content{padding:32px 40px 80px;max-width:var(--content-max);width:100%;min-width:0}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px}.page-eyebrow{font-size:13px;color:var(--fg-muted);margin-bottom:4px}.page-subtitle{color:var(--fg-muted);font-size:14px;margin-top:6px}.page-actions{display:flex;gap:8px;flex-shrink:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;font-size:14px;font-weight:500;font-family:inherit;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--bg-raised);color:var(--fg);cursor:pointer;white-space:nowrap;transition:background .1s ease,border-color .1s ease,opacity .1s ease}.btn:hover{background:var(--bg-hover);text-decoration:none}.btn:disabled,.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--fg-inverse);font-weight:600}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn-danger{color:var(--danger);border-color:var(--border)}.btn-danger:hover{background:var(--danger-bg)}.btn-ghost{border-color:transparent;background:transparent;color:var(--fg-muted)}.btn-ghost:hover{background:var(--bg-hover);color:var(--fg)}.btn-sm{padding:4px 10px;font-size:13px}.btn-icon{padding:5px;width:28px;height:28px;color:var(--fg-muted)}.chip-button{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:var(--radius-full);border:1px solid var(--border-strong);background:var(--bg-raised);color:var(--fg);font-size:13px;font-family:inherit;cursor:pointer}.chip-button:hover{background:var(--bg-hover)}.chip-button[data-active=true]{background:var(--bg-active);border-color:var(--border-strong);font-weight:500}form:has([data-pending]) .btn,form:has([data-pending]) .chip-button{pointer-events:none}form:has([data-pending]) .btn:not([type=submit]),form:has([data-pending]) .chip-button:not([type=submit]){opacity:.45}.btn{--spinner:var(--fg)}.btn-primary{--spinner:var(--fg-inverse)}.btn-danger{--spinner:var(--danger)}form:has([data-pending]) .btn[type=submit]{position:relative;color:transparent}form:has([data-pending]) .btn[type=submit]:after{content:"";position:absolute;width:14px;height:14px;border:2px solid var(--spinner);border-top:2px solid transparent;border-radius:var(--radius-full);animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}form:has([data-pending]) button[type=submit]:not(.btn):not(.portal-btn){pointer-events:none;opacity:.55}@media (prefers-reduced-motion:reduce){form:has([data-pending]) .btn[type=submit]{color:inherit;opacity:.45}form:has([data-pending]) .btn[type=submit]:after{display:none}form:has([data-pending]) .btn-primary[type=submit]{color:var(--fg-inverse)}}.field{margin-bottom:16px}.label{display:block;font-size:13px;font-weight:500;margin-bottom:6px;color:var(--fg)}.label-optional{font-weight:400;color:var(--fg-subtle)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.input,.select,.textarea{width:100%;padding:8px 12px;font-size:14px;font-family:inherit;color:var(--fg);background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--radius);transition:border-color .1s ease,box-shadow .1s ease}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--fg-subtle);box-shadow:0 0 0 3px rgb(24 24 27/.06)}.textarea{resize:vertical;min-height:80px;line-height:1.6}.input:hover:not(:disabled),.select:hover:not(:disabled),.textarea:hover:not(:disabled){border-color:var(--fg-subtle)}.input:disabled,.select:disabled,.textarea:disabled,fieldset:disabled .input,fieldset:disabled .select,fieldset:disabled .textarea{background:var(--bg-sunken);color:var(--fg-muted);border-color:var(--border);cursor:not-allowed}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2371717a' stroke-width='1.5'%3E%3Cpath d='M3 4.5 6 7.5 9 4.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:30px}.select:disabled,fieldset:disabled .select{cursor:not-allowed;background-image:none}.select optgroup{font-style:normal;font-weight:600;font-size:12px;color:var(--fg-muted)}.select option{font-weight:400;color:var(--fg)}.help{font-size:12px;color:var(--fg-muted);margin:6px 0 0;line-height:1.5}.search{position:relative;flex:1 1 260px}.search .input{padding:11px 14px 11px 40px;border-radius:var(--radius-lg);font-size:15px}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--fg-subtle);pointer-events:none}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:20px}.type-tile{position:relative;display:block;padding:10px 12px;cursor:pointer;background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:border-color .1s ease,background .1s ease}.type-tile:hover{border-color:var(--fg-subtle)}.type-tile[data-selected=true]{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}.type-tile[data-selected=true] .small{font-weight:600}.type-tile:focus-within{outline:2px solid var(--accent);outline-offset:2px}.type-tile input{position:absolute;opacity:0;width:1px;height:1px;margin:0}.choice-list{border:none;margin:0 0 4px;padding:0}.choice-list .label{padding:0}.choice{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;margin-top:6px;border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:border-color .1s ease,background .1s ease}.choice:hover{border-color:var(--fg-subtle);background:var(--bg-sunken)}.choice:has(input:checked){border-color:var(--fg);background:var(--bg-sunken)}.choice:focus-within{box-shadow:0 0 0 3px rgb(24 24 27/.06)}.choice input{margin:2px 0 0;flex-shrink:0;accent-color:var(--fg)}.choice-text{min-width:0}.choice-title{display:block;font-size:14px;font-weight:500}.choice-desc{display:block;font-size:13px;color:var(--fg-muted);margin-top:2px;line-height:1.5}.switch-row{display:flex;align-items:flex-start;gap:12px;padding:14px 0;border-top:1px solid var(--border)}.switch-row:first-child{border-top:none}.switch-text{flex:1 1;min-width:0}.switch-title{font-size:14px;font-weight:500}.switch-desc{font-size:13px;color:var(--fg-muted);margin-top:2px}.switch{position:relative;width:40px;height:24px;flex-shrink:0;cursor:pointer}.switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.switch-track{position:absolute;inset:0;border-radius:var(--radius-full);background:var(--border-strong);transition:background .15s ease;pointer-events:none}.switch-track:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:var(--shadow-sm);transition:transform .15s ease}.switch input:checked+.switch-track{background:var(--primary)}.switch input:checked+.switch-track:after{transform:translateX(16px)}.switch input:focus-visible+.switch-track{outline:2px solid var(--info);outline-offset:2px}.card{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-header{display:flex;align-items:center;gap:10px;padding:14px 18px}.card-body{padding:18px}.card-divided>*+*{border-top:1px solid var(--border)}.card-muted{background:var(--bg-sunken);box-shadow:none}.canvas{background-color:var(--bg-sunken);background-image:linear-gradient(45deg,transparent 48%,var(--border) 49%,var(--border) 51%,transparent 52%),linear-gradient(-45deg,transparent 48%,var(--border) 49%,var(--border) 51%,transparent 52%);background-size:28px 28px;padding:28px 16px 80px;margin:-32px -40px -80px;min-height:calc(100vh - 1px)}.canvas-sheet{max-width:680px;margin:0 auto;box-shadow:var(--shadow-lg);padding:28px}.canvas-sheet,.table-wrap{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-lg)}.table-wrap{overflow-x:auto;position:relative}.table-wrap:has(.set-password[open]){overflow:visible}table{width:100%;border-collapse:collapse}th{text-align:left;padding:10px 16px;font-size:12px;font-weight:500;color:var(--fg-muted);background:var(--bg-sunken);white-space:nowrap}td,th{border-bottom:1px solid var(--border)}td{padding:12px 16px;vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr{transition:background .08s ease}tbody tr:hover{background:var(--bg-sunken)}.cell-primary{font-weight:500}.cell-sub{font-size:13px;margin-top:1px}.cell-mono,.cell-sub{color:var(--fg-muted)}.cell-mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.row-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;opacity:0;transition:opacity .1s ease}tr:focus-within .row-actions,tr:hover .row-actions{opacity:1}@media (hover:none){.row-actions{opacity:1}}.team-table .row-actions{opacity:1}.team-table .cell-detail{max-width:260px;white-space:normal}.team-table .inline-form{flex-wrap:wrap;justify-content:flex-start}.team-table .select{min-width:9rem}.record-tile{width:36px;height:36px;border-radius:var(--radius);background:var(--bg-sunken);border:1px solid var(--border);display:grid;place-items:center;color:var(--fg-subtle);flex-shrink:0}.record-cell{display:flex;align-items:center;gap:12px}.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;padding:3px 9px;border-radius:var(--radius-full);border:1px solid var(--border);color:var(--fg-muted);background:var(--bg-raised);white-space:nowrap}.chip-success{color:var(--success);background:var(--success-bg);border-color:transparent}.chip-danger{color:var(--danger);background:var(--danger-bg);border-color:transparent}.chip-warning{color:var(--warning);background:var(--warning-bg);border-color:transparent}.chip-info{color:var(--info);background:var(--info-bg);border-color:transparent}.chip-neutral{background:var(--bg-sunken);border-color:transparent}.ring{--pct:0;width:22px;height:22px;border-radius:50%;flex-shrink:0;background:conic-gradient(var(--success) calc(var(--pct) * 1%),var(--border) calc(var(--pct) * 1%));position:relative}.ring:after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--bg-raised)}.progress-cell{display:flex;align-items:center;gap:8px;white-space:nowrap}.progress-bar{height:6px;border-radius:var(--radius-full);background:var(--border);overflow:hidden}.progress-bar>span{display:block;height:100%;background:var(--success);border-radius:var(--radius-full);transition:width .3s ease}.tabs{display:inline-flex;gap:2px;padding:3px;background:var(--bg-sunken);border-radius:var(--radius);margin-bottom:12px}.tab{padding:6px 14px;border-radius:var(--radius-sm);font-size:14px;color:var(--fg-muted);font-weight:500}.tab:hover{color:var(--fg);text-decoration:none}.tab[aria-current=true]{background:var(--bg-raised);color:var(--fg);box-shadow:var(--shadow-sm)}.report-note{max-width:68ch;margin:16px 0 20px;font-size:14px;line-height:1.6;color:var(--muted)}td.num,th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.notice{display:flex;gap:10px;padding:12px 16px;border-radius:var(--radius);font-size:14px;margin-bottom:16px;border:1px solid var(--border);background:var(--bg-sunken);line-height:1.55}.notice-success{color:var(--success);background:var(--success-bg);border-color:transparent}.notice-danger{color:var(--danger);background:var(--danger-bg);border-color:transparent}.notice-warning{color:var(--warning);background:var(--warning-bg);border-color:transparent}.empty{border:1px dashed var(--border-strong);border-radius:var(--radius-lg);padding:48px 24px;text-align:center;color:var(--fg-muted);background:var(--bg-sunken)}.detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;grid-gap:36px;gap:36px;align-items:start}@media (max-width:1024px){.detail-grid{grid-template-columns:1fr}}.section-heading{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--fg-subtle);margin:28px 0 10px}.dl>div{padding:9px 0;border-bottom:1px solid var(--border)}.dl dt{font-size:12px;color:var(--fg-muted)}.dl dd{margin:2px 0 0;font-size:14px}.phase{margin-bottom:12px}.phase-header{display:flex;align-items:center;gap:10px;padding:14px 18px;font-weight:600;font-size:15px}.phase-locked{opacity:.6}.task-row{display:flex;align-items:flex-start;gap:12px;padding:14px 18px}.sortable-row{position:relative}.sortable-row.phase>.phase-header,.sortable-row.task-row{padding-left:34px}.drag-handle{position:absolute;left:10px;top:15px;display:flex;align-items:center;color:var(--fg-subtle);opacity:0;cursor:-webkit-grab;cursor:grab;transition:opacity .1s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none}.sortable-row:focus-within>.drag-handle,.sortable-row:hover>.drag-handle{opacity:1}.drag-handle:active{cursor:-webkit-grabbing;cursor:grabbing}.sortable-row[data-dragging=true]{opacity:.45}.sortable-row[data-drop-target=true]{transition:transform .12s ease}@media (prefers-reduced-motion:reduce){.sortable-row[data-drop-target=true]{transition:none}}@media (hover:none){.drag-handle{opacity:.5}}.task-check{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--border-strong);display:grid;place-items:center;flex-shrink:0;margin-top:1px;font-size:12px;color:transparent}.task-check[data-done=true]{background:var(--success);border-color:var(--success);color:#fff}.task-title{font-weight:500}.task-meta,.task-title[data-done=true]{color:var(--fg-muted)}.task-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;margin-top:4px}.thread{margin-top:8px}.thread-summary{display:inline-block;font-size:12px;color:var(--fg-muted);cursor:pointer}.thread-summary:hover{color:var(--fg)}.thread-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}.thread-item{border-left:2px solid var(--border-strong);padding-left:10px}.thread-item[data-staff=true]{border-left-color:var(--fg)}.thread-byline{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}.thread-body{margin:4px 0 0;font-size:14px;line-height:1.6;color:var(--fg);white-space:pre-wrap}.thread-form{margin-top:12px;max-width:520px}.thread-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px}.thread-internal{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--fg-muted);cursor:pointer}.stack{flex-direction:column}.row,.stack{display:flex;gap:8px}.row{align-items:center}.spacer{flex:1 1}.muted{color:var(--fg-muted)}.small{font-size:13px}.skeleton{background:var(--bg-sunken);border-radius:var(--radius);animation:skeleton-pulse 1.4s ease-in-out infinite}@keyframes skeleton-pulse{50%{opacity:.55}}.skeleton-block,.skeleton-button,.skeleton-line{display:block}.skeleton-line{height:12px}.skeleton-button{height:36px;width:112px}.skeleton-block{height:128px}.skeleton-w-medium{width:120px}.skeleton-w-full{width:100%}@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}.portal-app{--paper:#ffffff;--surface:#f7f7f7;--surface-sunk:#f0f0f0;--rule:#e4e4e4;--rule-strong:#c9c9c9;--ink-3:#6b6b6b;--ink-2:#4a4a4a;--ink:#111111;--field:#0d0d0d;--on-field:#ffffff;--on-field-2:#a8a8a8;--on-field-sunk:#1c1c1c;--wash:#f2f2f2;--st-done:#111111;--st-submitted:#6b6b6b;--st-with-3y:#6b6b6b;--st-open:#949494;--st-action:#9a5c00;--st-blocked:#a32b24;--st-locked:#c9c9c9;--r-sm:4px;--r-md:6px;--r-lg:10px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;--spine:40px;--task-indent:var(--s5);--dk-paper:#0f0f10;--dk-surface:#17171a;--dk-surface-sunk:#1e1e21;--dk-rule:#2a2a2e;--dk-rule-strong:#3f3f45;--dk-ink-3:#9a9aa1;--dk-ink-2:#c9c9cd;--dk-ink:#f4f4f5;--dk-field:#1c1c1f;--dk-on-field:#f4f4f5;--dk-on-field-2:#a8a8b0;--dk-on-field-sunk:#262629;--dk-wash:#1a1a1d;--dk-st-done:#f4f4f5;--dk-st-submitted:#9a9aa1;--dk-st-with-3y:#9a9aa1;--dk-st-open:#6e6e76;--dk-st-action:#e0a44a;--dk-st-blocked:#ef8b82;--dk-st-locked:#3f3f45;background:var(--paper);color:var(--ink);font-family:var(--font-ui);font-size:15px;line-height:1.55;color-scheme:light}[data-portal-theme=dark] .portal-app{--paper:var(--dk-paper);--surface:var(--dk-surface);--surface-sunk:var(--dk-surface-sunk);--rule:var(--dk-rule);--rule-strong:var(--dk-rule-strong);--ink-3:var(--dk-ink-3);--ink-2:var(--dk-ink-2);--ink:var(--dk-ink);--field:var(--dk-field);--on-field:var(--dk-on-field);--on-field-2:var(--dk-on-field-2);--on-field-sunk:var(--dk-on-field-sunk);--wash:var(--dk-wash);--st-done:var(--dk-st-done);--st-submitted:var(--dk-st-submitted);--st-with-3y:var(--dk-st-with-3y);--st-open:var(--dk-st-open);--st-action:var(--dk-st-action);--st-blocked:var(--dk-st-blocked);--st-locked:var(--dk-st-locked);color-scheme:dark}@media (prefers-color-scheme:dark){[data-portal-theme=system] .portal-app{--paper:var(--dk-paper);--surface:var(--dk-surface);--surface-sunk:var(--dk-surface-sunk);--rule:var(--dk-rule);--rule-strong:var(--dk-rule-strong);--ink-3:var(--dk-ink-3);--ink-2:var(--dk-ink-2);--ink:var(--dk-ink);--field:var(--dk-field);--on-field:var(--dk-on-field);--on-field-2:var(--dk-on-field-2);--on-field-sunk:var(--dk-on-field-sunk);--wash:var(--dk-wash);--st-done:var(--dk-st-done);--st-submitted:var(--dk-st-submitted);--st-with-3y:var(--dk-st-with-3y);--st-open:var(--dk-st-open);--st-action:var(--dk-st-action);--st-blocked:var(--dk-st-blocked);--st-locked:var(--dk-st-locked);color-scheme:dark}}.portal-app :where(*){--border:var(--rule);--border-strong:var(--rule-strong);--muted:var(--ink-3);--fg:var(--ink);--fg-muted:var(--ink-3);--radius:var(--r-md);--radius-sm:var(--r-sm)}.portal-appbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;height:56px;background:var(--field);color:var(--on-field)}.portal-appbar-inner{display:flex;align-items:center;gap:var(--s3);height:100%;max-width:1180px;margin:0 auto;padding:0 var(--s6)}.portal-appbar-mark{display:flex;align-items:center;color:var(--on-field)}.portal-appbar-entity{margin-left:auto;font-size:13px;color:var(--on-field-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.portal{max-width:1180px;margin:0 auto;padding:var(--s6) var(--s6) var(--s8)}.portal-layout{display:grid;grid-gap:var(--s6);gap:var(--s6)}.portal-layout>*{min-width:0}@media (min-width:900px){.portal-layout{grid-template-columns:216px minmax(0,1fr);gap:var(--s7);align-items:start}.portal-layout-single{grid-template-columns:minmax(0,1fr)}}.portal-hero{background:var(--field);color:var(--on-field);border-radius:var(--r-lg);padding:var(--s5) var(--s6) var(--s6);margin-bottom:var(--s6)}.portal-hero-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--s3);margin-bottom:var(--s4)}.portal-hero h1{margin:0;font-size:32px;line-height:1.15;letter-spacing:-.02em;font-weight:600;color:var(--on-field)}.portal-hero-meta{font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--on-field-2)}.portal-next{display:grid;grid-template-columns:1fr auto;align-items:center;grid-gap:var(--s1) var(--s4);gap:var(--s1) var(--s4);padding:var(--s4);background:var(--on-field-sunk);border-radius:var(--r-md);color:var(--on-field);text-decoration:none}a.portal-next:hover{background:#262626;text-decoration:none}.portal-next-label{grid-column:1;font-size:11px;line-height:1.2;letter-spacing:.08em;font-weight:600;text-transform:uppercase;color:var(--on-field-2)}.portal-next-name{grid-column:1;font-size:19px;line-height:1.3;letter-spacing:-.01em;font-weight:600}.portal-next-where{grid-column:1;font-size:13px;color:var(--on-field-2)}.portal-next-go{grid-column:2;grid-row:1/-1;display:flex;align-items:center;color:var(--on-field-2)}a.portal-next:hover .portal-next-go{color:var(--on-field)}.portal-rail{position:-webkit-sticky;position:sticky;top:56px;z-index:10;margin:0 calc(-1 * var(--s6)) var(--s5);padding:var(--s3) var(--s6);background:var(--paper);border-bottom:1px solid var(--rule);box-shadow:0 6px 12px -10px rgb(0 0 0/.35)}@media (min-width:900px){.portal-rail{top:72px;margin:0;padding:0;background:none;border-bottom:0;box-shadow:none}}.portal-filters{display:flex;flex-wrap:wrap;gap:var(--s1);margin-bottom:var(--s4)}.portal-filter{padding:5px 10px;border:1px solid var(--rule);border-radius:var(--r-sm);font-size:13px;color:var(--ink-3);text-decoration:none;white-space:nowrap}.portal-filter:hover{color:var(--ink);border-color:var(--rule-strong);text-decoration:none}.portal-filter[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--paper);font-weight:550}.portal-rail-list{list-style:none;margin:0;padding:0 0 var(--s1);display:flex;gap:var(--s1);overflow-x:auto;scrollbar-width:thin}.portal-rail-list>li{flex:0 0 auto}.portal-rail-item{display:flex;align-items:center;gap:var(--s2);padding:7px 10px;border:1px solid var(--rule);border-radius:var(--r-sm);font-size:13px;color:var(--ink-3);text-decoration:none;white-space:nowrap}@media (min-width:900px){.portal-rail-list{display:block;padding:0;overflow:visible}.portal-rail-item{border:0;border-left:2px solid transparent;border-radius:0;padding:6px var(--s3);white-space:normal}}.portal-rail-item:hover{color:var(--ink);text-decoration:none}.portal-rail-item[aria-current=true]{color:var(--ink);font-weight:550;border-left-color:var(--ink)}.portal-rail-name{flex:1 1 auto;min-width:0}.portal-rail-count{flex:0 0 auto;font-family:var(--font-mono);font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right;color:var(--ink-3)}.portal-rail-item[aria-current=true] .portal-rail-count{color:var(--ink)}.portal-expand-all{display:inline-block;margin-top:var(--s4);font-size:13px;color:var(--ink-3)}.pm{display:block;flex:0 0 auto}.pm-done{color:var(--st-done)}.pm-submitted{color:var(--st-submitted)}.pm-partial{color:var(--ink)}.pm-theirs{color:var(--st-with-3y)}.pm-open{color:var(--st-open)}.pm-active{color:var(--ink)}.pm-overdue{color:var(--st-action)}.pm-rejected{color:var(--st-blocked)}.pm-locked{color:var(--st-locked)}.portal-progress{margin-bottom:var(--s5)}.portal-progress-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--s2);margin-bottom:var(--s2);font-size:13px;color:var(--ink-3)}.portal-progress-count{font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:500;color:var(--ink)}.portal-progress-estimate{font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.portal-progress-track{position:relative;height:4px;border-radius:var(--r-sm);overflow:hidden;background:var(--surface-sunk)}.portal-progress-fill{position:absolute;inset:0 auto 0 0;display:block;background:var(--ink)}.portal-progress-fill.is-review{background:repeating-linear-gradient(45deg,var(--ink-3) 0 2px,transparent 2px 4px)}.portal-progress-tick{position:absolute;top:0;bottom:0;width:1px;background:var(--paper)}.portal-progress-aside{margin:var(--s2) 0 0;font-size:13px;color:var(--ink-3)}.portal-progress.is-behind .portal-progress-estimate{color:var(--st-action);font-weight:500}.portal-plan{border:1px solid var(--rule);border-radius:var(--r-md);background:var(--paper);overflow:hidden}.portal-phase{position:relative;border-top:1px solid var(--rule-strong)}.portal-task-no-heading>div>.portal-task-title:empty{display:none}.portal-task-no-heading.portal-task-active{background:none;margin:0;padding:var(--s3) 0;border-top-color:var(--rule)}.portal-task-no-heading.portal-task-active:before{content:none}.portal-phase:first-child{border-top:0}.portal-phase:before{content:"";position:absolute;left:calc(var(--spine) / 2);top:0;bottom:0;width:1px;background:var(--rule)}.portal-phase:first-child:before{top:26px}.portal-phase:last-child:before{bottom:26px}.portal-phase-finished>.portal-phase-head,.portal-phase:not([open]).portal-phase-finished{background:var(--surface);--marker-bg:var(--surface)}.portal-phase-head{display:grid;grid-template-columns:var(--spine) 1fr auto auto;align-items:center;grid-gap:0 var(--s3);gap:0 var(--s3);padding:var(--s4) var(--s4) var(--s4) 0;cursor:pointer;list-style:none}.portal-phase-head::-webkit-details-marker{display:none}@supports (interpolate-size:allow-keywords){.portal-app{interpolate-size:allow-keywords}.portal-phase::details-content{height:0;overflow:hidden;transition:height .15s ease-out,content-visibility allow-discrete .15s}.portal-phase[open]::details-content{height:auto}}.portal-phase-head:hover{background:var(--surface);--marker-bg:var(--surface)}.portal-phase-marker{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;height:20px;background:var(--marker-bg,var(--paper))}.portal-phase-name{font-size:19px;line-height:1.3;letter-spacing:-.01em;font-weight:600}.portal-phase-finished .portal-phase-name{font-weight:550;color:var(--ink-2)}.portal-phase-count{font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ink-3)}.portal-phase-chevron{display:flex;color:var(--ink-3);transition:transform .15s ease-out}.portal-phase[open]>.portal-phase-head .portal-phase-chevron{transform:rotate(90deg)}.portal-phase-desc,.portal-phase-locked-note{margin:0 var(--s4) var(--s3) calc(var(--spine) + var(--task-indent));max-width:68ch;font-size:15px;color:var(--ink-2)}.portal-phase-desc{white-space:pre-wrap}.portal-phase-locked-note{color:var(--ink-3)}.portal-tasks{list-style:none;margin:0;padding:0 var(--s4) var(--s2) calc(var(--spine) + var(--task-indent))}.portal-task{position:relative;display:grid;grid-template-columns:20px 1fr;grid-gap:0 var(--s3);gap:0 var(--s3);padding:var(--s3) 0;border-top:1px solid var(--rule)}.portal-task:first-child{border-top:0}.portal-task-active{background:var(--wash);margin:0 calc(-1 * var(--s3));padding:var(--s3);border-radius:var(--r-sm);border-top-color:transparent}.portal-task-active:before{content:"";position:absolute;left:calc(var(--s3) - var(--spine) / 2 - var(--task-indent) - 1px);top:0;bottom:0;z-index:1;width:3px;background:var(--ink);border-radius:2px}.portal-task-marker{position:relative;z-index:1;display:flex;justify-content:center;padding-top:3px}.portal-task-title{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s2);font-size:15px;line-height:1.4;font-weight:550}.portal-task-done .portal-task-title{font-weight:400;color:var(--ink)}.portal-task-optional{font-weight:400;font-size:13px;color:var(--ink-3)}.portal-task-desc{margin:var(--s1) 0 0;max-width:68ch;font-size:15px;line-height:1.55;color:var(--ink-2);white-space:pre-wrap}.portal-desc-link{color:var(--ink);text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}.rich-editor{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-raised);transition:border-color .1s ease,box-shadow .1s ease}.rich-editor:focus-within{border-color:var(--fg-subtle);box-shadow:0 0 0 3px rgb(24 24 27/.06)}.rich-editor-toolbar{display:flex;flex-wrap:wrap;gap:2px;padding:4px;border-bottom:1px solid var(--border)}.rich-editor-button{min-width:32px;height:28px;padding:0 8px;font:inherit;font-size:13px;color:var(--fg-muted);background:transparent;border:0;border-radius:var(--radius-sm);cursor:pointer}.rich-editor-button:hover:not(:disabled),.rich-editor-button[aria-pressed=true]{background:var(--bg-sunken);color:var(--fg)}.rich-editor-button:focus-visible{outline:2px solid var(--fg-subtle);outline-offset:1px}.rich-editor-link{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px;border-bottom:1px solid var(--border)}.rich-editor-link .input{flex:1 1 240px}.rich-editor-link-error{flex-basis:100%;margin:0;font-size:13px;color:var(--danger)}.template-file-row{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--border);border-radius:8px}.template-file-name{font-size:14px;overflow-wrap:anywhere}.template-file .rich-editor-link-error{margin-top:6px}.rich-editor-content{min-height:96px;padding:8px 12px;font-size:14px;line-height:1.6;color:var(--fg);outline:none}.rich-editor-content p{margin:0 0 .5em}.rich-editor-content ol,.rich-editor-content ul{margin:0 0 .5em;padding-left:1.4em}.rich-editor-content li>p{margin:0}.rich-editor-content a{color:inherit;text-decoration:underline;text-underline-offset:2px}.rich-description{white-space:normal}.rich-description>:first-child{margin-top:0}.rich-description>:last-child{margin-bottom:0}.rich-description p{margin:0 0 .6em}.rich-description ol,.rich-description ul{margin:0 0 .6em;padding-left:1.4em}.rich-description li>p{margin:0}.rich-description a{color:var(--ink,inherit);text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}.plan-task-desc{margin:4px 0 0}.portal-task-meta{margin:var(--s1) 0 0;font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ink-3)}.portal-task-action,.portal-task-action>*+*{margin-top:var(--s3)}.portal-task-theirs{color:var(--ink-2)}.portal-task-just-done{animation:portal-settle 1.2s ease-out}@keyframes portal-settle{0%{background:var(--surface-sunk)}}.portal-integration-lede{margin:0 0 var(--s4);max-width:68ch;color:var(--ink-2);line-height:1.55}.portal-milestones{list-style:none;margin:var(--s4) 0 0;padding:0;border-top:1px solid var(--rule)}.portal-milestones li{display:grid;grid-template-columns:1fr auto;grid-gap:2px var(--s3);gap:2px var(--s3);padding:var(--s3) 0;border-bottom:1px solid var(--rule)}.portal-milestone-label{font-weight:500}.portal-milestone-state{font-size:13px;color:var(--ink-3);text-align:right;white-space:nowrap}.portal-milestone-detail{grid-column:1/-1;font-family:var(--font-mono);font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ink-2)}.portal-milestones li[data-state=done] .portal-milestone-state{color:var(--ink);font-weight:500}.portal-milestones li[data-state=halted] .portal-milestone-label,.portal-milestones li[data-state=halted] .portal-milestone-state,.portal-milestones li[data-state=waiting] .portal-milestone-label,.portal-milestones li[data-state=waiting] .portal-milestone-state{color:var(--st-open)}.portal-milestones li[data-state=blocked] .portal-milestone-detail,.portal-milestones li[data-state=blocked] .portal-milestone-state{color:var(--st-action)}.portal-milestones li[data-state=failed] .portal-milestone-detail,.portal-milestones li[data-state=failed] .portal-milestone-state{color:var(--st-blocked)}.portal-checklist{list-style:none;margin:0;padding:0}.portal-checklist li{display:flex;align-items:flex-start;gap:var(--s2);padding:5px 0;font-size:15px}.portal-checklist input{margin-top:4px;accent-color:var(--ink)}.portal-embed{width:100%;border:1px solid var(--rule);border-radius:var(--r-md)}.portal-app .chip{border:1px solid var(--rule-strong);border-radius:var(--r-sm);background:none;color:var(--ink-3);font-size:11px;letter-spacing:.04em;text-transform:uppercase;font-weight:600}.portal-app .chip-success{border-color:var(--rule-strong);color:var(--ink-2)}.portal-app .chip-danger{border-color:var(--st-blocked);color:var(--st-blocked)}.portal-app .chip-warning{border-color:var(--st-action);color:var(--st-action)}.portal-app .progress-bar{height:4px;border-radius:var(--r-sm);background:var(--surface-sunk);overflow:hidden}.portal-app .progress-bar>span{display:block;height:100%;background:var(--ink)}.portal-app .btn{border:1px solid var(--rule-strong);border-radius:var(--r-md);background:var(--paper);color:var(--ink);font-family:var(--font-ui);font-weight:550}.portal-app .btn:hover{border-color:var(--ink);background:var(--surface)}.portal-upload-error,.portal-upload-notice{margin:var(--s2) 0 0;font-size:13px}.portal-upload-error{color:var(--st-blocked)}.portal-pill,.portal-upload-notice{color:var(--ink-3)}.portal-pill{flex:0 0 auto;padding:1px 7px;border:1px solid var(--rule-strong);border-radius:var(--r-sm);font-size:11px;line-height:1.5;letter-spacing:.04em;font-weight:600;text-transform:uppercase;white-space:nowrap}.portal-pill-action{border-color:var(--st-action);color:var(--st-action)}.portal-pill-blocked{border-color:var(--st-blocked);color:var(--st-blocked)}.portal-note{margin:var(--s2) 0 0;padding:var(--s2) var(--s3);border-left:2px solid var(--rule-strong);background:var(--surface);border-radius:0 var(--r-sm) var(--r-sm) 0;font-size:13px;color:var(--ink-2)}.portal-note-action{border-left-color:var(--st-action)}.portal-note-blocked{border-left-color:var(--st-blocked)}.portal-alert{margin-bottom:var(--s5);padding:var(--s3) var(--s4);border:1px solid var(--st-blocked);border-left-width:3px;border-radius:var(--r-md);background:var(--paper);font-size:15px;color:var(--ink)}.portal-notice{margin:0 0 var(--s3);font-size:13px;color:var(--ink-2)}.portal-notice,.portal-sent{padding:var(--s3);background:var(--surface);border-radius:var(--r-sm)}.portal-sent{margin-top:var(--s3)}.portal-sent-heading{margin:0 0 var(--s2);font-size:11px;line-height:1.2;letter-spacing:.08em;font-weight:600;text-transform:uppercase;color:var(--ink-3)}.portal-data{display:grid;grid-template-columns:1fr;grid-gap:var(--s1) var(--s3);gap:var(--s1) var(--s3);margin:0}@media (min-width:560px){.portal-data{grid-template-columns:160px minmax(0,1fr)}}.portal-data dt{font-size:13px;color:var(--ink-3)}.portal-data dd{margin:0;font-family:var(--font-mono);font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;word-break:break-word}.portal-reveal{display:inline-flex;align-items:baseline;gap:var(--s2)}.portal-reveal-toggle{padding:0;border:0;background:none;font:inherit;font-family:var(--font-ui);font-size:13px;color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb,var(--ink) 40%,transparent);text-decoration-color:color-mix(in srgb,var(--ink) 40%,transparent);cursor:pointer}.portal-reveal-toggle:hover{-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.portal-docs{margin-top:var(--s6);padding:var(--s5);background:var(--surface);border-radius:var(--r-md)}.portal-docs>h2{margin:0 0 var(--s4);font-size:19px;line-height:1.3;letter-spacing:-.01em;font-weight:600}.portal-docs-group+.portal-docs-group{margin-top:var(--s5)}.portal-docs-group>h3{margin:0 0 var(--s2);font-size:11px;line-height:1.2;letter-spacing:.08em;font-weight:600;text-transform:uppercase;color:var(--ink-3)}.portal-docs-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}.portal-doc{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s1) var(--s3);padding:var(--s3) var(--s2);margin:0 calc(-1 * var(--s2));border-bottom:1px solid var(--rule);border-radius:var(--r-sm)}.portal-doc:hover{background:var(--paper)}.portal-doc-name{flex:1 1 240px;min-width:0;font-size:15px;color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb,var(--ink) 40%,transparent);text-decoration-color:color-mix(in srgb,var(--ink) 40%,transparent);text-underline-offset:2px;word-break:break-word}.portal-doc-name:hover{-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.portal-doc-meta{flex:1 1 auto;min-width:0;font-family:var(--font-mono);font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ink-3);overflow-wrap:anywhere}@media (min-width:640px){.portal-doc-meta{flex:0 1 auto;text-align:right}}.portal-docs-empty{margin:0;font-size:13px;color:var(--ink-3)}.portal-field{margin-bottom:var(--s3);max-width:480px}.portal-label{display:block;margin-bottom:var(--s1);font-size:13px;font-weight:550;color:var(--ink-2)}.portal-input{width:100%;padding:9px var(--s3);border:1px solid var(--rule-strong);border-radius:var(--r-sm);background:var(--paper);color:var(--ink);font:inherit;font-size:15px}.portal-input:focus-visible{outline:2px solid var(--ink);outline-offset:1px;border-color:var(--ink)}.portal-field-help{margin-top:var(--s1);font-size:13px;color:var(--ink-3)}.portal-required{color:var(--ink);font-weight:600}.portal-btn{display:inline-flex;align-items:center;gap:var(--s2);padding:10px var(--s4);border:1px solid var(--ink);border-radius:var(--r-md);background:var(--ink);font:inherit;font-size:15px;font-weight:550;line-height:1.2;cursor:pointer}.portal-btn,.portal-btn:hover{color:var(--paper);text-decoration:none}.portal-btn:hover{background:#000000;border-color:#000000}.portal-btn-secondary{background:var(--paper);border-color:var(--rule-strong);color:var(--ink)}.portal-btn-secondary:hover{background:var(--surface);border-color:var(--ink);color:var(--ink)}form:has([data-pending]) .portal-btn{pointer-events:none}form:has([data-pending]) .portal-btn:not([type=submit]){opacity:.45}.portal-btn{--spinner:var(--paper)}.portal-btn-secondary{--spinner:var(--ink)}form:has([data-pending]) .portal-btn[type=submit]{position:relative;color:transparent}form:has([data-pending]) .portal-btn[type=submit]:after{content:"";position:absolute;width:15px;height:15px;border:2px solid var(--spinner);border-top:2px solid transparent;border-radius:var(--radius-full);animation:spin .6s linear infinite}@media (prefers-reduced-motion:reduce){form:has([data-pending]) .portal-btn[type=submit]{color:var(--paper);opacity:.45}form:has([data-pending]) .portal-btn-secondary[type=submit]{color:var(--ink)}form:has([data-pending]) .portal-btn[type=submit]:after{display:none}}.portal-link{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb,var(--ink) 40%,transparent);text-decoration-color:color-mix(in srgb,var(--ink) 40%,transparent);text-underline-offset:2px}.portal-link:hover{-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.portal-ask{display:inline-flex;align-items:center;gap:var(--s1);margin-top:var(--s3);font-size:13px;color:var(--ink-3)}.portal-ask:hover{color:var(--ink)}.portal-thread{margin-top:var(--s3)}.portal-thread>summary{cursor:pointer}.portal-thread-list{list-style:none;margin:var(--s3) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--s3)}.portal-comment{border-left:2px solid var(--rule-strong);padding-left:var(--s3)}.portal-comment[data-staff=true]{border-left-color:var(--ink)}.portal-comment-byline{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;margin:0;font-size:13px;color:var(--ink-2)}.portal-comment-side{padding:1px 6px;border:1px solid var(--rule-strong);border-radius:var(--r-sm);font-size:11px;color:var(--ink-2)}.portal-comment-when{color:var(--ink-3)}.portal-comment-body{margin:var(--s1) 0 0;font-size:15px;line-height:1.6;color:var(--ink);white-space:pre-wrap}.portal-thread-form{margin-top:var(--s3);max-width:480px}.portal-thread-form .portal-btn{margin-top:var(--s2)}.portal-about{margin-bottom:var(--s5);padding-bottom:var(--s4);border-bottom:1px solid var(--rule)}.portal-about>summary{display:flex;align-items:center;gap:var(--s2);font-size:13px;font-weight:550;color:var(--ink-3);cursor:pointer;list-style:none}.portal-about>summary::-webkit-details-marker{display:none}.portal-about>summary:before{content:"";width:6px;height:6px;border:1.5px solid;border-left:0;border-bottom:0;transform:rotate(45deg);transition:transform .15s ease-out}.portal-about[open]>summary:before{transform:rotate(135deg)}.portal-about>p{margin:var(--s3) 0 0;max-width:68ch;color:var(--ink-2);white-space:pre-wrap}.portal-empty{padding:var(--s6) var(--s5);text-align:center;color:var(--ink-3)}.portal-empty-strong{margin:0 0 var(--s2);font-size:15px;font-weight:550;color:var(--ink)}.portal-footer{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s4);max-width:1180px;margin:var(--s8) auto 0;padding:var(--s5) var(--s6) var(--s8);border-top:1px solid var(--rule);font-size:13px;color:var(--ink-3)}.portal-footer-who{display:flex;align-items:center;gap:var(--s2);color:var(--ink-2)}.portal-avatar{display:grid;place-items:center;width:28px;height:28px;border-radius:999px;background:var(--surface-sunk);font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--ink-2)}.portal-btn-group{display:flex;flex-direction:column;align-items:flex-start;gap:var(--s2);margin-top:var(--s3)}.portal-btn-group-note{margin:0}.portal-btn-group-back{margin-top:var(--s3)}.portal-app{--sticky-stack:calc(56px + var(--s5))}@media (max-width:899px){.portal-app{--sticky-stack:184px}}.portal-app .portal-task,.portal-app [id^=phase-]{scroll-margin-top:var(--sticky-stack)}.portal-theme{flex-basis:100%;margin-top:var(--s2)}.portal-theme,.portal-theme fieldset{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3)}.portal-theme fieldset{margin:0;padding:0;border:0}.portal-theme legend{float:left;margin-right:var(--s3);padding:0;font-size:13px;color:var(--ink-3)}.portal-theme-option{display:inline-flex;align-items:center;gap:var(--s1);font-size:13px;color:var(--ink-2);cursor:pointer}.portal-theme-option input{margin:0;accent-color:var(--ink)}.portal-theme-apply{padding:var(--s1) var(--s3);border:1px solid var(--rule-strong);border-radius:var(--r-sm);background:var(--paper);color:var(--ink);font:inherit;font-size:13px;cursor:pointer}.portal-theme-apply:hover{background:var(--surface)}@media print{.portal-theme{display:none}}[data-portal-theme=dark] .portal-hero{border:1px solid var(--rule)}[data-portal-theme=dark] .portal-appbar{border-bottom:1px solid var(--rule)}@media (prefers-color-scheme:dark){[data-portal-theme=system] .portal-hero{border:1px solid var(--rule)}[data-portal-theme=system] .portal-appbar{border-bottom:1px solid var(--rule)}}.portal-footer-updated{margin-left:auto;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.portal-skeleton{background:var(--surface-sunk);border-radius:var(--r-sm);animation:skeleton-pulse 1.4s ease-in-out infinite}.portal-app :focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:2px}.portal-appbar :focus-visible,.portal-hero :focus-visible{outline-color:var(--on-field)}@media (prefers-reduced-motion:reduce){.portal-app *,.portal-app :after,.portal-app :before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media print{.portal-app{--paper:#ffffff}.portal-appbar,.portal-ask,.portal-btn,.portal-expand-all,.portal-next-go,.portal-phase-chevron,.portal-rail,.portal-reveal-toggle,.portal-task-action{display:none!important}.portal-hero{background:none;border:1px solid var(--rule-strong)}.portal-hero,.portal-hero h1,.portal-hero-meta,.portal-next{color:var(--ink)}.portal-next{background:var(--surface)}.portal-next-label,.portal-next-where{color:var(--ink-3)}.portal-phase,.portal-plan,.portal-task{page-break-inside:avoid;break-inside:avoid}.portal-print-only{display:block!important}}.portal-print-only{display:none}@media print{.page-actions,.row-actions,.sidebar{display:none}}.card:focus-within{outline:2px solid var(--info);outline-offset:2px}.switch-row:focus-within .switch-track{outline:2px solid var(--info);outline-offset:2px}.inline-form{display:flex;align-items:center;gap:6px;justify-content:flex-end}.inline-form input[type=text]{width:128px;padding:5px 8px;font-size:12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-raised);color:var(--text)}.cell-detail{margin-top:3px;max-width:420px;font-size:12px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis}.cell-detail,.nowrap{white-space:nowrap}.card-title{margin:0 0 6px;font-size:15px;font-weight:600;letter-spacing:-.01em}td.right,th.right{text-align:right}.participant-list{list-style:none;margin:0;padding:0}.participant{padding:10px 0;border-bottom:1px solid var(--border)}.participant:last-child{border-bottom:none}.participant-who{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.participant-name{font-weight:600;font-size:14px}.participant-actions{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.add-participant{margin-top:12px}.add-participant[open]>summary{margin-bottom:10px}.add-participant .stack{padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken)}.checkbox{display:flex;align-items:flex-start;gap:8px;font-size:14px;cursor:pointer}.checkbox input{margin:2px 0 0;flex-shrink:0}.reveal-link{display:block;width:100%;margin-top:8px;padding:8px 10px;font-family:var(--font-mono,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:13px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--fg);word-break:break-all}.auth{min-height:100dvh;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr)}.auth-brand{position:relative;display:flex;flex-direction:column;justify-content:flex-end;gap:24px;padding:56px;background:#0d0d0d;color:#fff}.auth-brand-mark{position:absolute;top:56px;left:56px;display:block;color:#fff}.auth-brand-body{max-width:46ch}.auth-brand h1{margin:0;max-width:14ch;font-size:clamp(38px,4.4vw,62px);line-height:1.04;letter-spacing:-.03em;font-weight:700}.auth-brand p{margin:20px 0 0;max-width:44ch;font-size:16px;line-height:1.6;color:rgb(255 255 255/.72)}.auth-brand-footer{margin:0;font-family:var(--font-mono,ui-monospace,monospace);font-size:12px;letter-spacing:.02em;color:rgb(255 255 255/.45)}.auth-panel{display:flex;align-items:center;justify-content:center;padding:56px;background:var(--bg)}.auth-panel-body{width:100%;max-width:360px}.auth-panel-wide{max-width:520px}.auth-panel h2{margin:0;font-size:26px;letter-spacing:-.02em}.auth-subheading{margin:8px 0 28px;font-size:15px;line-height:1.6;color:var(--muted)}.auth-error{margin-bottom:20px;padding:10px 12px;border-radius:var(--radius);background:var(--danger-bg);color:var(--danger);font-size:14px;line-height:1.5}.auth-error p{margin:6px 0 0;font-weight:400;opacity:.9}.auth-form{display:flex;flex-direction:column;gap:14px}.auth-submit{width:100%;margin-top:10px;justify-content:center}.auth-aside{margin:28px 0 0;padding-top:20px;border-top:1px solid var(--border);font-size:13px;line-height:1.6;color:var(--muted)}@media (max-width:860px){.auth{grid-template-columns:1fr;grid-template-rows:auto 1fr}.auth-brand{justify-content:flex-start;gap:0;padding:24px 24px 26px}.auth-brand-mark{position:static;margin-bottom:14px}.auth-brand h1{font-size:30px}.auth-brand p,.auth-brand-footer{display:none}.auth-panel{padding:32px 24px 48px;align-items:flex-start}}.set-password{position:relative}.set-password>.stack{position:absolute;right:0;top:100%;z-index:10;width:280px;margin-top:6px;text-align:left;background:var(--bg);box-shadow:var(--shadow-pop)}.gate-tasks,.set-password>.stack{padding:12px;border:1px solid var(--border);border-radius:var(--radius)}.gate-tasks{margin:0 0 16px;background:var(--bg-sunken)}.gate-tasks>legend{padding:0 4px;margin:0}.gate-tasks-group+.gate-tasks-group{margin-top:10px}.gate-tasks-phase{margin:0 0 4px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3)}.gate-tasks .checkbox{padding:3px 0}.gate-tasks>.help:last-child{margin-top:10px;margin-bottom:0}.reveal{display:inline-flex;align-items:baseline;gap:var(--s2);flex-wrap:wrap}.reveal-value{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.reveal-toggle{padding:0;border:0;background:none;font:inherit;font-size:12px;color:var(--text-muted);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb,var(--text-muted) 45%,transparent);text-decoration-color:color-mix(in srgb,var(--text-muted) 45%,transparent);cursor:pointer}.reveal-toggle:hover:not(:disabled){color:var(--ink);-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.reveal-toggle:disabled{cursor:progress}.drawer{margin:0 0 0 auto;padding:0;border:0;width:min(760px,100vw);max-width:100vw;height:100dvh;max-height:100dvh;background:transparent;color:var(--fg)}.drawer::-webkit-backdrop{background:rgb(9 9 11/.55)}.drawer::backdrop{background:rgb(9 9 11/.55)}.drawer-sheet{display:flex;flex-direction:column;height:100%;background:var(--bg-raised);border-left:1px solid var(--border);box-shadow:var(--shadow-lg)}.drawer[open] .drawer-sheet{animation:drawer-in .18s ease-out}@keyframes drawer-in{0%{transform:translateX(20px);opacity:0}to{transform:none;opacity:1}}@media (prefers-reduced-motion:reduce){.drawer[open] .drawer-sheet{animation:none}}.drawer-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 22px;border-bottom:1px solid var(--border)}.drawer-title{margin:0;font-size:1.05rem;line-height:1.3}.drawer-subtitle{margin:3px 0 0;color:var(--fg-muted);font-size:.85rem}.drawer-body{flex:1 1;overflow-y:auto;padding:22px}.template-editor{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:20px;gap:20px;align-items:start}@media (max-width:1100px){.template-editor{grid-template-columns:minmax(0,1fr)}}.template-editor-form{display:flex;flex-direction:column;gap:16px}.template-meta{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}.template-meta-actions{display:flex;flex-wrap:wrap;gap:8px}.block-row{border:1px solid var(--border);border-radius:var(--radius);padding:12px;background:var(--bg-raised);display:flex;flex-direction:column;gap:8px}.block-row input[type=text],.block-row select,.block-row textarea{width:100%;font:inherit;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--fg)}.block-head{display:flex;align-items:center;justify-content:space-between}.block-type{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--fg-muted)}.block-controls{display:flex;gap:2px}.block-button-fields{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:8px;gap:8px}.block-add,.block-bold{gap:6px}.block-actions,.block-add,.block-bold{display:flex;flex-wrap:wrap;align-items:center}.block-actions{gap:12px}.block-check{font-size:13px;color:var(--fg-muted)}.field-issues{margin:6px 0 0;padding-left:18px;color:var(--danger);font-size:13px}.token-palette{border:1px solid var(--border);border-radius:var(--radius);padding:12px;background:var(--bg-sunken)}.token-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.token-chip{font-family:var(--font-mono);font-size:12px;padding:3px 8px;border:1px solid var(--border-strong);border-radius:var(--radius-full);background:var(--bg);color:var(--fg);cursor:pointer}.token-chip:hover{background:var(--bg-hover)}.token-chip.is-bold{border-color:var(--fg);background:var(--bg-active)}.template-preview{border:1px solid var(--border);border-radius:var(--radius);padding:12px;background:var(--bg-sunken);position:-webkit-sticky;position:sticky;top:16px}.preview-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.preview-head .is-active{background:var(--bg-active)}.preview-subject{font-size:13px;margin:8px 0}.preview-frame{width:100%;height:560px;background:#ffffff}.preview-frame,.preview-text{border:1px solid var(--border);border-radius:var(--radius-sm)}.preview-text{white-space:pre-wrap;font-family:var(--font-mono);font-size:12px;background:var(--bg);padding:12px;max-height:560px;overflow:auto}.property-choices{display:grid;grid-gap:6px;gap:6px;border:0;padding:0;margin-inline:0}.property-choices>legend{padding:0;margin-bottom:6px}