:root{--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-12:48px;--text-xs:11px;--text-sm:12px;--text-base:13px;--text-md:14px;--text-lg:16px;--text-xl:18px;--font-normal:400;--font-medium:500;--font-semibold:600;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-full:9999px;--surface-ground:#f0f2f5;--surface-default:#fff;--surface-raised:#f8f9fb;--surface-overlay:#fff;--bg-primary:var(--surface-ground);--bg-card:var(--surface-default);--text-primary:#111827;--text-secondary:#4b5563;--text-muted:#9ca3af;--border:#d1d6df;--shadow-xs:0 1px 2px rgba(0,0,0,.04);--shadow-sm:0 2px 6px rgba(0,0,0,.06);--shadow-md:0 4px 16px rgba(0,0,0,.1);--shadow-card:var(--shadow-xs);--shadow-hover:var(--shadow-sm);--radius:var(--radius-lg);--color-under-consideration:#d97706;--color-planned:#7c3aed;--color-in-development:#2563eb;--color-released:#16a34a;--color-danger:#dc2626}[data-theme=dark]{--surface-ground:#0c1017;--surface-sunken:#0f1420;--surface-default:#161c27;--surface-raised:#1d2433;--surface-overlay:#232b3c;--bg-primary:var(--surface-ground);--bg-card:var(--surface-default);--text-primary:#e4e8ef;--text-secondary:#94a0b4;--text-muted:#5f6d82;--border:#2a3446;--shadow-xs:0 1px 2px rgba(0,0,0,.2);--shadow-sm:0 2px 6px rgba(0,0,0,.3);--shadow-md:0 4px 16px rgba(0,0,0,.4);--shadow-card:var(--shadow-xs);--shadow-hover:var(--shadow-sm);--color-under-consideration:#f59e0b;--color-planned:#a78bfa;--color-in-development:#60a5fa;--color-released:#4ade80;--color-danger:#fca5a5}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--surface-ground);color:var(--text-primary);min-height:100vh;font-size:var(--text-base);line-height:1.5}.app-shell{max-width:1400px;margin:0 auto;padding:0 24px 48px}.header-bar{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-2) 0;border-bottom:1px solid var(--border);margin-bottom:var(--space-5);min-height:48px}.header-bar-identity{display:flex;align-items:baseline;gap:var(--space-2);flex-shrink:0}.header-bar-title{font-size:var(--text-xl);font-weight:var(--font-semibold);letter-spacing:-.01em;white-space:nowrap}.header-bar-version{font-size:var(--text-sm);color:var(--text-muted);white-space:nowrap}.header-bar-actions{display:flex;align-items:center;gap:var(--space-1);margin-left:auto}.header-bar-actions-divider{width:1px;height:20px;background:var(--border);margin:0 var(--space-1)}.header-bar-nav{display:flex;gap:0;background:var(--surface-raised);border-radius:var(--radius-md);padding:2px}.header-bar-nav-link{text-decoration:none;font-size:var(--text-md);font-weight:var(--font-medium);color:var(--text-secondary);padding:4px 14px;border-radius:var(--radius-sm);transition:background .15s ease,color .15s ease}.header-bar-nav-link:hover{color:var(--text-primary)}.header-bar-nav-link--active{background:var(--surface-default);color:var(--text-primary);font-weight:var(--font-semibold);box-shadow:var(--shadow-xs)}.board-toolbar{padding:var(--space-2) var(--space-3);background:var(--surface-default);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:var(--space-4)}.board-toolbar,.toolbar-group{display:flex;align-items:center;gap:var(--space-2)}.toolbar-group{flex-shrink:0}.toolbar-divider{width:1px;height:24px;background:var(--border);margin:0 var(--space-1);flex-shrink:0}.submit-form{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:20px;display:flex;flex-direction:column}.submit-form-error{background:#fef2f2;color:#b42318;border:1px solid #fecaca;border-radius:4px;padding:8px 12px;margin-bottom:12px;font-size:13px}[data-theme=dark] .submit-form-error{background:#2d1215;color:#fca5a5;border-color:#5c1e1e}.board-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:16px;gap:16px;align-items:stretch}@media (max-width:1280px){.board-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.board-grid{grid-template-columns:1fr}}.status-column{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg);min-height:200px;display:flex;flex-direction:column;overflow:hidden}.status-column-header{border-top:3px solid;padding:var(--space-3) var(--space-4);display:flex;align-items:center;gap:var(--space-2);background:var(--surface-default);border-bottom:1px solid var(--border)}.status-column-icon{font-size:14px}.status-column-label{font-weight:var(--font-semibold);font-size:var(--text-md);flex:1 1}.status-column-count{font-size:var(--text-sm);font-weight:var(--font-semibold);background:var(--surface-raised);border-radius:var(--radius-full);padding:0 8px;color:var(--text-secondary);min-width:24px;text-align:center;line-height:20px}.status-column-cards{padding:var(--space-2);display:flex;flex-direction:column;gap:var(--space-2);flex:1 1}.status-column-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-8) var(--space-4);text-align:center}.status-column-empty__icon{font-size:24px;opacity:.4}.status-column-empty__text{font-size:var(--text-base);color:var(--text-muted);line-height:1.5}.feature-card{background:var(--surface-default);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3);display:flex;gap:var(--space-2);transition:box-shadow .15s ease,border-color .15s ease;box-shadow:var(--shadow-xs)}.feature-card:hover{box-shadow:var(--shadow-sm);border-color:color-mix(in srgb,var(--border) 70%,var(--text-muted))}.feature-card--editing{flex-direction:column}.feature-card-content{flex:1 1;min-width:0}.feature-card-title{font-weight:var(--font-medium);font-size:var(--text-md);line-height:1.4;margin-bottom:var(--space-1);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.feature-card-badges{display:flex;gap:var(--space-2);align-items:center;margin-bottom:var(--space-1);flex-wrap:wrap}.feature-card-description{font-size:var(--text-base);color:var(--text-secondary);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:var(--space-1)}.feature-card-footer{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-1)}.feature-card-meta{font-size:var(--text-xs)}.feature-card-meta,.feature-card-owner{color:var(--text-muted)}.feature-card-admin{flex-shrink:0}.feature-card:focus-visible{outline:2px solid var(--color-in-development);outline-offset:2px}.vote-button{display:flex;flex-direction:column;align-items:center;min-width:48px;transition:transform .15s ease}.vote-button:active:not(:disabled){transform:scale(.92)}.vote-button--voted{animation:vote-pop .3s ease}@keyframes vote-pop{0%{transform:scale(1)}50%{transform:scale(1.15)}to{transform:scale(1)}}.card-animate{animation:card-fade-in .3s ease both}@keyframes card-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.tag-filter{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.tag-filter-divider{width:1px;height:20px;background:var(--border);margin:0 4px}.tag-filter-group{display:flex;gap:2px}.feature-card-tag{display:inline-flex;align-items:center;gap:4px;font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-secondary);line-height:1.5}.feature-card-tag:before{content:"";display:inline-block;width:8px;height:8px;border-radius:var(--radius-full);background-color:var(--tag-color,#6b7280);flex-shrink:0}.vote-compact{display:inline-flex;align-items:center;gap:0;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;flex-shrink:0}.vote-compact__btn{padding:2px 4px;border:none;background:transparent;cursor:pointer;display:flex;align-items:center;color:var(--text-secondary);transition:background .1s ease}.vote-compact__btn:hover{background:var(--surface-raised)}.vote-compact__btn:disabled{opacity:.5;cursor:not-allowed}.vote-compact__btn--active-up{color:var(--color-released)}.vote-compact__btn--active-down{color:var(--color-danger)}.vote-compact__count{font-size:var(--text-sm);font-weight:var(--font-semibold);padding:2px 6px;min-width:24px;text-align:center;border-left:1px solid var(--border);border-right:1px solid var(--border);color:var(--text-primary);line-height:1.4}.feature-card--dragging{opacity:.4}.feature-card--drag-overlay{box-shadow:0 8px 24px rgba(0,0,0,.2);transform:rotate(1deg);cursor:-webkit-grabbing;cursor:grabbing}.status-column--drop-target{outline:2px dashed currentColor;outline-offset:-2px;background:color-mix(in srgb,var(--surface-raised) 90%,currentColor)}.status-column--drop-target .status-column-cards{min-height:80px}.admin-tags-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.admin-tags-row{padding:8px;background:var(--bg-primary);border-radius:6px}.admin-tags-add,.admin-tags-row{display:flex;flex-direction:column;gap:6px}.admin-tags-add{padding:12px;border:1px dashed var(--border);border-radius:6px}.admin-tags-color-picker{display:flex;gap:4px;flex-wrap:wrap}.admin-tags-swatch{width:18px;height:18px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;outline:none;transition:border-color .15s ease,transform .1s ease;flex-shrink:0}.admin-tags-swatch:hover{transform:scale(1.15)}.admin-tags-swatch--active{border-color:var(--text-primary);transform:scale(1.15)}.vote-dual{display:flex;flex-direction:column;align-items:center;min-width:48px;gap:0}.priority-badge{display:inline-block;font-size:10px;font-weight:var(--font-semibold);padding:0 6px;border-radius:var(--radius-sm);line-height:1.6;text-transform:uppercase;letter-spacing:.04em}.priority-badge--high{color:#dc2626;background:#fef2f2;border:1px solid #fecaca}.priority-badge--medium{color:#d97706;background:#fffbeb;border:1px solid #fde68a}.priority-badge--low{color:#2563eb;background:#eff6ff;border:1px solid #bfdbfe}[data-theme=dark] .priority-badge--high{color:#fca5a5;background:#2d1215;border-color:#5c1e1e}[data-theme=dark] .priority-badge--medium{color:#fcd34d;background:#2d2305;border-color:#5c4a0e}[data-theme=dark] .priority-badge--low{color:#93c5fd;background:#0c1e3d;border-color:#1e3a5f}.bug-indicator{display:inline-flex;color:var(--color-danger);margin-left:4px;vertical-align:middle}.search-bar{flex:1 1;max-width:360px;min-width:180px;margin-left:auto}.feature-card--clickable{cursor:pointer}.feature-card--selected{border-color:var(--color-in-development);background:color-mix(in srgb,var(--bg-card) 92%,var(--color-in-development))}.feature-card-select{flex-shrink:0;display:flex;align-items:flex-start;padding-top:2px}.bulk-toolbar{position:fixed;bottom:0;left:0;right:0;background:#1f2937;color:#fff;padding:12px 24px;display:flex;align-items:center;gap:12px;z-index:100;box-shadow:0 -4px 12px rgba(0,0,0,.2)}.detail-modal__layout{display:grid;grid-template-columns:1fr 200px;grid-gap:var(--space-4);gap:var(--space-4)}.detail-modal__main{min-width:0}.detail-modal__main,.detail-modal__sidebar{display:flex;flex-direction:column;gap:var(--space-4)}.detail-modal__sidebar{padding:var(--space-3);background:var(--surface-raised);border-radius:var(--radius-md);border:1px solid var(--border);align-self:start}.detail-modal__sidebar-section{display:flex;flex-direction:column;gap:var(--space-2)}.detail-modal__comments{grid-column:1/-1;border-top:1px solid var(--border);padding-top:var(--space-4)}.detail-modal__badges{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.detail-modal__linked-badge{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--border);border-radius:4px;padding:2px 6px;font-size:12px}.detail-modal__linked-badge-label{cursor:pointer;color:var(--text-primary)}.detail-modal__linked-badge-label:hover{text-decoration:underline}.detail-modal__linked-badge-unlink{background:none;border:none;cursor:pointer;padding:0 2px;color:var(--text-muted);font-size:14px;line-height:1}.detail-modal__linked-badge-unlink:hover{color:#dc2626}.detail-modal__voters{display:flex;flex-direction:column;gap:var(--space-1)}.status-stepper{display:flex;flex-direction:column;gap:0}.status-stepper__step{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-2) 0;cursor:pointer;border:none;background:none;text-align:left;font-size:var(--text-sm);color:var(--text-secondary);position:relative;transition:color .15s ease;font-family:inherit}.status-stepper__step:hover{color:var(--text-primary)}.status-stepper__step:before{content:"";position:absolute;left:7px;top:26px;bottom:-8px;width:2px;background:var(--border)}.status-stepper__step:last-child:before{display:none}.status-stepper__marker{width:16px;height:16px;border-radius:var(--radius-full);border:2px solid var(--border);flex-shrink:0;margin-top:1px;transition:background .15s ease,border-color .15s ease}.status-stepper__step--completed .status-stepper__marker{background:var(--color-released);border-color:var(--color-released)}.status-stepper__step--completed:before{background:var(--color-released)}.status-stepper__step--current .status-stepper__marker{border-width:4px}.status-stepper__step--current{color:var(--text-primary);font-weight:var(--font-semibold)}.status-stepper__step--readonly{cursor:default}.status-stepper__label{line-height:1.4}@media (max-width:640px){.detail-modal__layout{grid-template-columns:1fr}.detail-modal__sidebar{flex-direction:row;flex-wrap:wrap}}.comments-section{display:flex;flex-direction:column;gap:8px}.comment{padding:10px;background:var(--bg-primary);border-radius:6px}.comment__header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.comment__body{font-size:13px;color:var(--text-secondary);line-height:1.5}.rich-text-editor{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.rich-text-editor__toolbar{border-bottom:1px solid var(--border);background:var(--bg-primary)}.rich-text-editor__content{min-height:100px;padding:12px}.rich-text-editor__content .ProseMirror{outline:none;min-height:80px}.rich-text-editor__content .ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;color:var(--text-muted);pointer-events:none;height:0}.rich-text-editor__content .ProseMirror img{max-width:100%;border-radius:var(--radius)}.rich-text-display .ProseMirror{outline:none}.rich-text-display img{max-width:100%;border-radius:var(--radius)}.watch-button--watching{color:var(--color-in-development)}.live-indicator{display:flex;align-items:center;padding:0 4px}.live-indicator__dot{width:8px;height:8px;border-radius:50%}.live-indicator__dot--connected{background:var(--color-released)}.live-indicator__dot--disconnected{background:var(--text-muted)}[data-board=ninja] .header-bar-nav-link--active{background:#55a3ca;color:#fff}[data-board=ninja] .header-bar-title{color:#55a3ca}@media (max-width:768px){.header-bar{flex-direction:column;align-items:flex-start;gap:12px}.header-bar-nav{order:-1;width:100%}.tag-filter{flex-wrap:wrap}}.archive-section{margin-top:var(--space-6);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.archive-section__header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--surface-default);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:none;width:100%;text-align:left;font:inherit;color:var(--text-secondary);transition:background .15s ease}.archive-section__count,.archive-section__header:hover{background:var(--surface-raised)}.archive-section__count{font-size:var(--text-sm);font-weight:var(--font-semibold);border-radius:var(--radius-full);padding:0 8px;color:var(--text-muted);line-height:20px}.archive-section__chevron{margin-left:auto;display:flex;align-items:center;transition:transform .2s ease}.archive-section__chevron--expanded{transform:rotate(180deg)}.archive-section__body{padding:var(--space-4);background:var(--surface-raised);display:flex;flex-direction:column;gap:var(--space-5)}.archive-group__header{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--font-semibold);padding-bottom:var(--space-2);border-bottom:1px solid var(--border);margin-bottom:var(--space-2)}.archive-group__items{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:var(--space-3);gap:var(--space-3)}.archive-group__card{position:relative}.archive-group__unarchive{position:absolute;top:var(--space-2);right:var(--space-2);z-index:1}