@import"https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&family=Space+Mono:wght@400;700&display=swap";:root{--navy-50: #EAF1F6;--navy-100: #CFE0EC;--navy-200: #A6C4D8;--navy-300: #6E9DBC;--navy-400: #3D7AA0;--navy-500: #1E6088;--navy-600: #18557A;--navy-700: #134E6F;--navy-800: #0E3A54;--navy-900: #0A2A3D;--navy-950: #07202F;--gold-50: #FCF4E1;--gold-100: #F8E7BC;--gold-200: #F2D488;--gold-300: #EFC559;--gold-400: #EAB23B;--gold-500: #E6A932;--gold-600: #C98E1E;--gold-700: #9E6E15;--gold-800: #6E4D10;--azure-50: #E7F2FD;--azure-100: #C7E2FB;--azure-200: #95C9F7;--azure-300: #5EAEF2;--azure-400: #349AEC;--azure-500: #1E8FE0;--azure-600: #1573BC;--azure-700: #115B94;--azure-800: #0D4470;--gray-50: #F6F8FA;--gray-100: #EDF1F5;--gray-200: #E0E6EC;--gray-300: #CBD4DC;--gray-400: #9CAAB6;--gray-500: #6E7E8C;--gray-600: #51606D;--gray-700: #3A4651;--gray-800: #25303A;--gray-900: #161E26;--gray-950: #0E151C;--success-500: #14A06E;--success-fg: #ffffff;--warning-500: #D98A0B;--warning-fg: #2A1E02;--danger-500: #DC4C5A;--danger-fg: #ffffff;--info-500: #1E8FE0;--info-fg: #ffffff;--bg-base: var(--gray-50);--bg-subtle: var(--gray-100);--surface: #FFFFFF;--surface-raised: #FFFFFF;--surface-sunken: var(--gray-100);--surface-inverted: var(--navy-900);--border: var(--gray-200);--border-strong: var(--gray-300);--border-accent: var(--gold-300);--text-strong: var(--gray-950);--text: var(--gray-800);--text-muted: var(--gray-600);--text-subtle: var(--gray-500);--text-on-brand: #FFFFFF;--text-inverted: var(--gray-50);--primary: var(--navy-700);--primary-hover: var(--navy-800);--primary-active: var(--navy-900);--primary-fg: #FFFFFF;--primary-subtle: var(--navy-50);--accent: var(--gold-500);--accent-hover: var(--gold-600);--accent-active: var(--gold-700);--accent-fg: var(--navy-950);--accent-subtle: var(--gold-50);--secondary: var(--azure-500);--secondary-hover: var(--azure-600);--secondary-fg: #FFFFFF;--secondary-subtle: var(--azure-50);--ring: var(--gold-400);--viz-1: var(--navy-700);--viz-2: var(--gold-500);--viz-3: var(--azure-500);--viz-4: var(--navy-400);--viz-5: var(--success-500);--viz-6: var(--gold-300)}:root[data-theme=dark],.dark{--bg-base: #0A141D;--bg-subtle: #0E1C28;--surface: #11212E;--surface-raised: #16293A;--surface-sunken: #0A141D;--surface-inverted: var(--gray-50);--border: #1E3344;--border-strong: #2C4760;--border-accent: var(--gold-700);--text-strong: #F2F7FA;--text: #DCE7EF;--text-muted: #93A6B5;--text-subtle: #6E8493;--text-on-brand: #FFFFFF;--text-inverted: var(--gray-900);--primary: var(--navy-500);--primary-hover: var(--navy-400);--primary-active: var(--navy-300);--primary-fg: #FFFFFF;--primary-subtle: #0E2A3D;--accent: var(--gold-500);--accent-hover: var(--gold-400);--accent-active: var(--gold-300);--accent-fg: var(--navy-950);--accent-subtle: #2A2208;--secondary: var(--azure-400);--secondary-hover: var(--azure-300);--secondary-fg: #06202F;--secondary-subtle: #0A2C44;--success-fg: #04231A;--warning-fg: #2A1E02;--danger-fg: #2A0A0E;--ring: var(--gold-400);--viz-1: var(--navy-300);--viz-2: var(--gold-400);--viz-3: var(--azure-400);--viz-4: var(--navy-500);--viz-5: var(--success-500);--viz-6: var(--gold-200)}:root{--font-display: "Space Grotesk", "Manrope", system-ui, sans-serif;--font-sans: "Manrope", system-ui, -apple-system, sans-serif;--font-mono: "Space Mono", "SFMono-Regular", ui-monospace, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.375rem;--text-5xl: 3rem;--text-6xl: 3.75rem;--text-7xl: 4.75rem;--weight-regular: 400;--weight-medium: 500;--weight-semibold:600;--weight-bold: 700;--weight-extra: 800;--leading-tight: 1.1;--leading-snug: 1.25;--leading-normal: 1.5;--leading-relaxed: 1.65;--tracking-tight: -.02em;--tracking-snug: -.01em;--tracking-normal: 0;--tracking-wide: .04em;--tracking-label: .08em}:root{--space-0: 0;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--radius-xs: 4px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 22px;--radius-full: 999px;--shadow-xs: 0 1px 2px rgba(10, 42, 61, .06);--shadow-sm: 0 1px 3px rgba(10, 42, 61, .08), 0 1px 2px rgba(10, 42, 61, .05);--shadow-md: 0 4px 14px rgba(10, 42, 61, .1), 0 2px 4px rgba(10, 42, 61, .06);--shadow-lg: 0 12px 32px rgba(10, 42, 61, .14), 0 4px 8px rgba(10, 42, 61, .07);--shadow-xl: 0 24px 60px rgba(7, 32, 47, .22);--shadow-accent: 0 4px 18px rgba(230, 169, 50, .3);--ring-width: 3px;--ring-offset: 2px;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-fast: .12s;--dur-base: .18s;--dur-slow: .32s}:root[data-theme=dark],.dark{--shadow-xs: 0 1px 2px rgba(0, 0, 0, .4);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .45), 0 1px 2px rgba(0,0,0,.3);--shadow-md: 0 6px 18px rgba(0, 0, 0, .5);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .55);--shadow-xl: 0 28px 70px rgba(0, 0, 0, .65);--shadow-accent: 0 4px 22px rgba(230, 169, 50, .22)}:root{--bg: var(--bg-base);--surface: #ffffff;--border: var(--gray-200);--border-hover: var(--gray-300);--text: var(--gray-900);--muted: var(--gray-600);--primary: var(--navy-700);--primary-dark: var(--navy-800);--primary-subtle: var(--navy-50);--danger: var(--danger-500);--danger-subtle: #FCEBED;--radius: var(--radius-lg);--shadow: var(--shadow-sm)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:var(--tracking-snug)}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}.muted{color:var(--muted)}.loading,.empty{padding:48px;text-align:center;color:var(--muted)}.site-header{background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}.header-inner{max-width:1100px;margin:0 auto;padding:0 24px;height:60px;display:flex;align-items:center;gap:28px}.brand{display:flex;align-items:center;gap:10px}.brand-logo{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--navy-700),var(--azure-500));color:#fff;font-weight:700;display:grid;place-items:center}.brand-name{font-weight:700;font-size:18px;font-family:var(--font-display);letter-spacing:var(--tracking-snug)}.main-nav{display:flex;gap:6px;margin-right:auto}.main-nav a{padding:8px 14px;border-radius:8px;font-weight:600;color:var(--muted)}.main-nav a:hover{background:var(--bg);color:var(--text)}.main-nav a.active{color:var(--primary);background:var(--primary-subtle)}.btn-signin{background:var(--primary);color:#fff;border:none;padding:9px 18px;border-radius:8px;font-weight:600}.btn-signin:hover{background:var(--primary-dark)}.user-menu{position:relative}.avatar-btn{background:none;border:none;padding:0}.avatar,.avatar-img{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:600;font-size:13px}.avatar-img{object-fit:cover}.dropdown{position:absolute;right:0;top:44px;width:230px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:6px;z-index:30}.dropdown-head{display:flex;flex-direction:column;padding:10px 12px;gap:2px}.dropdown-head .muted{font-size:13px}.dropdown-item{width:100%;text-align:left;background:none;border:none;padding:10px 12px;border-radius:8px;font-weight:500}.dropdown-item:hover{background:var(--bg)}.page{max-width:1240px;margin:0 auto;padding:28px 24px}.page:has(.roadmap-page){max-width:1600px}.feedback-layout{display:grid;grid-template-columns:240px 1fr 300px;gap:28px;align-items:start}.feedback-rank-side{min-width:0}.feedback-rank-side .ranking{position:sticky;top:76px}.rank-legend{margin:10px 2px 0;font-size:11px;color:var(--muted);line-height:1.5}.side-title{font-size:22px;margin:0 0 6px}.side-sub{color:var(--muted);margin:0 0 16px;font-size:14px}.side-card{margin-top:18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.side-card h4{margin:0 0 10px;font-size:14px}.side-card ul{margin:0;padding-left:18px;color:var(--muted);font-size:13px;line-height:1.7}.toolbar{display:flex;align-items:center;gap:12px;margin-bottom:16px}.tabs{display:flex;gap:4px;background:var(--surface);border:1px solid var(--border);padding:4px;border-radius:10px}.tab{border:none;background:none;padding:7px 16px;border-radius:7px;font-weight:600;color:var(--muted)}.tab:hover{color:var(--text)}.tab.active{background:var(--primary);color:#fff}.search{margin-left:auto;padding:9px 14px;border:1px solid var(--border);border-radius:9px;background:var(--surface);min-width:220px;font-size:14px;outline:none}.search:focus{border-color:var(--primary)}.post-list{display:flex;flex-direction:column;gap:10px}.post-card{display:flex;gap:16px;align-items:flex-start;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.post-card:hover{border-color:var(--border-hover);box-shadow:var(--shadow)}.vote-box{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:52px;padding:8px 6px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);line-height:1.1}.vote-box.sm{min-width:44px;padding:6px 4px}.vote-box:hover{border-color:var(--primary);color:var(--primary)}.vote-box.voted{background:var(--primary-subtle);border-color:var(--primary);color:var(--primary)}.vote-caret{font-size:11px}.vote-count{font-weight:700;font-size:15px}.post-main{flex:1;min-width:0}.post-top{display:flex;align-items:center;gap:10px}.post-title{margin:0;font-size:16px;font-weight:650}.post-body{margin:6px 0 10px;color:var(--muted);font-size:14px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.post-meta{display:flex;align-items:center;gap:8px;font-size:13px}.avatar-sm{width:22px;height:22px;border-radius:50%;color:#fff;display:inline-grid;place-items:center;font-size:10px;font-weight:700}.dot{color:var(--border)}.status-pill{margin-left:4px;font-size:11px;font-weight:700;border:1px solid;padding:2px 8px;border-radius:20px;white-space:nowrap;flex:none}.badge{font-size:11px;font-weight:700;padding:3px 9px;border-radius:20px;white-space:nowrap}.badge-priority{background:var(--danger-subtle);color:var(--danger)}.post-comments{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:13px;align-self:center}.roadmap-head{margin-bottom:8px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.roadmap-head h1{margin:0 0 4px;font-size:24px}.admin-hint{margin:0 0 18px;font-size:13px;color:var(--muted);background:var(--primary-subtle);border:1px solid var(--navy-100);padding:8px 12px;border-radius:8px;display:inline-block}.board-col.drag-over .col-cards{background:var(--primary-subtle);border-color:var(--primary)}.rm-card.draggable{cursor:grab}.rm-card.draggable:active{cursor:grabbing}.rm-card.dragging{opacity:.5}.board{display:grid;grid-template-columns:repeat(4,minmax(320px,1fr));gap:16px}.board-col{background:transparent}.col-head{display:flex;align-items:center;gap:8px;padding:12px 14px;background:var(--bg-subtle);border:1px solid var(--border);border-top:3px solid;border-radius:10px 10px 0 0;font-weight:700}.col-name{font-family:var(--font-display);letter-spacing:var(--tracking-snug)}.col-dot{width:9px;height:9px;border-radius:50%}.col-count{margin-left:auto;color:var(--muted);font-weight:600;font-size:13px}.col-cards{display:flex;flex-direction:column;gap:10px;padding:12px;background:var(--bg-subtle);border:1px solid var(--border);border-top:none;border-radius:0 0 10px 10px;min-height:120px}.rm-card{display:flex;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.rm-card:hover{border-color:var(--border-hover);box-shadow:var(--shadow)}.rm-card-main{flex:1;min-width:0}.rm-card>.vote-box,.rm-card>.owner-face{flex:none}.rm-card-main h4{margin:0 0 8px;font-size:14px;overflow-wrap:anywhere}.board-tag{font-size:11px;color:var(--muted);background:var(--bg);padding:3px 8px;border-radius:6px}.col-empty{color:var(--muted);font-size:13px;text-align:center;padding:16px 0}.btn-primary{background:var(--primary);color:#fff;border:none;padding:10px 16px;border-radius:9px;font-weight:600}.btn-primary:hover{background:var(--primary-dark)}.btn-primary:disabled{opacity:.6;cursor:default}.btn-primary.block{width:100%}.btn-ghost{background:none;border:1px solid var(--border);padding:10px 16px;border-radius:9px;font-weight:600}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182773;display:grid;place-items:center;z-index:50;padding:20px}.modal{position:relative;width:100%;max-width:520px;background:var(--surface);border-radius:16px;padding:28px;box-shadow:0 20px 50px #00000040;max-height:90vh;overflow:auto}.modal h2{margin:0 0 18px}.modal-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:26px;line-height:1;color:var(--muted)}.login-modal{max-width:420px}.login-gate{min-height:100vh;display:grid;place-items:center;padding:40px 20px;background:var(--bg)}.login-gate-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:32px;box-shadow:var(--shadow)}.google-card{text-align:center;padding:8px 4px}.google-card h2{margin:14px 0 6px}.google-card .muted{font-size:14px;margin:0 0 22px}.login-form{display:flex;flex-direction:column;gap:8px;text-align:left}.login-form label{font-size:13px;font-weight:600}.login-form input,.post-form input,.post-form textarea,.post-form select,.comment-form input{width:100%;padding:11px 13px;border:1px solid var(--border);border-radius:9px;font-size:14px;outline:none;font-family:inherit}.login-form input:focus,.post-form input:focus,.post-form textarea:focus{border-color:var(--primary)}.google-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;margin-top:8px;padding:12px;border:1px solid var(--border);border-radius:9px;background:var(--surface);font-weight:600;font-size:15px}.google-btn:hover{background:var(--bg)}.dev-note{font-size:12px;color:var(--muted);margin:12px 0 0}.form-error{color:var(--danger);font-size:13px;background:var(--danger-subtle);padding:9px 12px;border-radius:8px}.post-form{display:flex;flex-direction:column;gap:6px}.post-form label{font-size:13px;font-weight:600;margin-top:8px}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.detail-modal{max-width:640px}.detail-head{display:flex;gap:16px;align-items:flex-start;margin-bottom:14px}.detail-head h2{margin:0;font-size:20px}.detail-body{color:#374151;line-height:1.6;margin:0 0 20px}.comments-title{margin:0 0 14px;padding-top:16px;border-top:1px solid var(--border)}.comment-list{display:flex;flex-direction:column;gap:16px;margin-bottom:18px}.comment{display:flex;gap:10px}.comment p{margin:4px 0 0;line-height:1.5}.comment-meta{font-size:13px}.comment-form{display:flex;gap:8px}.badge-tag{background:var(--primary-subtle);color:var(--primary)}.tags-row{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}.tag-chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;background:var(--primary-subtle);color:var(--primary);padding:3px 10px;border-radius:20px}.tag-chip button{background:none;border:none;color:currentColor;font-size:14px;line-height:1;padding:0}.tags-edit{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 14px}.tag-input{border:1px solid var(--border);border-radius:20px;padding:5px 12px;font-size:13px;outline:none;min-width:130px}.post-side{display:flex;align-items:center;gap:12px;align-self:center}.owner-face{display:inline-flex}.rm-card-foot{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;min-width:0}.board-tag{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.diff-mini{font-size:11px;font-weight:700;color:var(--muted);background:var(--bg);padding:2px 6px;border-radius:6px;flex:none;white-space:nowrap}.rm-card{align-items:flex-start}.roadmap-layout{display:grid;grid-template-columns:1fr 300px;gap:20px;align-items:start}.roadmap-main{overflow-x:auto;min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;box-shadow:var(--shadow)}.ranking{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;position:sticky;top:76px}.ranking-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}.ranking-head h2{margin:0;font-size:17px}.ranking-scope{border:1px solid var(--border);border-radius:8px;padding:5px 8px;font-size:12px;font-weight:600;background:var(--bg);outline:none}.ranking-table{width:100%;border-collapse:collapse;font-size:13px}.ranking-table th{font-size:11px;text-transform:uppercase;letter-spacing:.03em;padding:4px 3px;text-align:center;border-bottom:1px solid var(--border)}.ranking-table th.rk-person{text-align:left}.ranking-table td{padding:7px 3px;text-align:center;border-bottom:1px solid var(--border)}.ranking-table tr:last-child td{border-bottom:none}.rk-pos{color:var(--muted);font-weight:700;width:18px}.rk-face{width:28px}.rk-face .avatar-sm{width:24px;height:24px}.rk-name{text-align:left!important;font-weight:600;white-space:normal;overflow-wrap:anywhere;line-height:1.25;min-width:96px}.rk-count{font-weight:700}.rk-total{font-weight:800}.empty-sm{color:var(--muted);font-size:13px;padding:14px 4px;text-align:center}.detail-actions{position:absolute;top:12px;right:14px;display:flex;align-items:center;gap:4px}.detail-actions .modal-close{position:static}.icon-btn{background:none;border:1px solid var(--border);border-radius:8px;width:32px;height:32px;font-size:15px;display:grid;place-items:center}.icon-btn:hover{background:var(--bg)}.icon-btn.save{background:var(--primary-subtle);border-color:var(--primary)}.edit-title{width:100%;font-size:20px;font-weight:700;padding:6px 10px;border:1px solid var(--primary);border-radius:8px;outline:none}.edit-body{width:100%;padding:10px 12px;border:1px solid var(--primary);border-radius:9px;font-family:inherit;font-size:14px;outline:none;margin-bottom:14px}.detail-headmain{flex:1;min-width:0}.detail-body{cursor:text}.inline-field{font-size:13px;color:var(--muted);display:inline-flex;align-items:center}.inline-field.block{display:flex;margin:0 0 14px}.inline-field select,.diff-input{border:1px solid var(--border);border-radius:7px;padding:4px 8px;font-size:13px;outline:none}.diff-input{width:90px}.diff-badge{display:inline-block;font-size:12px;font-weight:700;color:var(--muted);background:var(--bg);padding:4px 10px;border-radius:8px;margin-bottom:14px}.status-select{margin-left:4px;font-size:11px;font-weight:700;border:1px solid;padding:2px 6px;border-radius:20px;background:var(--surface);cursor:pointer;outline:none}.team-view{display:flex;flex-direction:column;gap:10px;background:var(--bg);border-radius:10px;padding:12px 14px;margin-bottom:16px}.team-role{display:flex;align-items:flex-start;gap:10px}.team-role-label{font-size:12px;font-weight:700;color:var(--muted);min-width:120px;padding-top:4px}.team-members{display:flex;flex-wrap:wrap;gap:10px}.team-member{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600}.team-edit{display:flex;flex-direction:column;gap:14px;background:var(--bg);border-radius:10px;padding:14px;margin-bottom:16px}.team-block label{display:block;font-size:12px;font-weight:700;color:var(--muted);margin-bottom:6px}.team-block>select{border:1px solid var(--border);border-radius:8px;padding:7px 10px;font-size:14px;outline:none;min-width:200px}.user-checklist{display:flex;flex-wrap:wrap;gap:6px}.uc-item{display:inline-flex;align-items:center;gap:5px;font-size:13px;border:1px solid var(--border);border-radius:20px;padding:4px 10px;cursor:pointer;background:var(--surface)}.uc-item.on{border-color:var(--primary);background:var(--primary-subtle);color:var(--primary);font-weight:600}.uc-item input{margin:0}@media(max-width:1350px){.roadmap-layout{grid-template-columns:1fr}.ranking{position:static}}@media(max-width:1100px){.feedback-layout{grid-template-columns:240px 1fr}.feedback-rank-side{grid-column:1 / -1}.feedback-rank-side .ranking{position:static}}@media(max-width:820px){.feedback-layout{grid-template-columns:1fr}.side{order:1}.content{order:2}.feedback-rank-side{order:3}}@media(max-width:700px){.board{grid-template-columns:1fr}}
