:root{--sky-blue:#4fa9e0;--sky-blue-light:#6ec1f0;--sky-blue-deep:#3d8fc9;--leaf-green:#6fbf8b;--leaf-green-deep:#4f9e6c;--heart-red:#e85c6b;--heart-red-deep:#d1465a;--ink:#1c2a38;--subtle-ink:#5b6b7a;--faint-ink:#8695a3;--bg-top:#d9eef9;--bg-bottom:#e4f4e6;--card-bg:#fff;--card-bg-alt:#f4faff;--border-soft:#1c2a3817;--border-softer:#1c2a380f;--button-top:#6ec1f0;--button-bottom:#3d8fc9;--shadow-sm:0 2px 8px #1c2a380f;--shadow-md:0 10px 30px #1c2a3814;--shadow-lg:0 24px 60px #1c2a3824;--radius-sm:12px;--radius-card:20px;--radius-lg:28px;--radius-pill:999px;--maxw:1120px;--ease:cubic-bezier(.22, 1, .36, 1)}.fb-page{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 28px}.fb-head{padding:40px 0 8px}.fb-head-inner{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;display:flex}.fb-head h1{font-family:var(--font-display);color:var(--ink);letter-spacing:-.01em;margin:0 0 8px;font-size:clamp(2rem,4vw,2.6rem);line-height:1.05}.fb-head p{color:var(--subtle-ink);margin:0;font-size:1.02rem}.btn{font-family:var(--font-body);cursor:pointer;border-radius:var(--radius-pill);transition:transform .2s var(--ease), box-shadow .25s var(--ease), background .2s var(--ease);white-space:nowrap;border:none;justify-content:center;align-items:center;gap:8px;padding:12px 24px;font-size:.95rem;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{color:#fff;background:linear-gradient(180deg, var(--button-top), var(--button-bottom));box-shadow:0 8px 20px #3d8fc952,inset 0 1px #ffffff59}.btn-primary:hover{color:#fff;transform:translateY(-2px);box-shadow:0 14px 30px #3d8fc966,inset 0 1px #fff6}.btn-primary:active{transform:translateY(0)}.new-req{align-items:center;gap:8px;display:inline-flex}.new-req .icon,.new-req svg{width:17px;height:17px}.fb-controls{flex-wrap:wrap;gap:14px;margin:22px 0 20px;display:flex}.fb-controls>:first-child{flex:1;min-width:240px}.fb-select{border:1px solid var(--border-soft);border-radius:var(--radius-pill);font-family:var(--font-body);color:var(--ink);background:#fffc;font-size:.9rem;font-weight:500}.fb-list{flex-direction:column;gap:12px;display:flex}.fb-item{background:var(--card-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);border:1px solid var(--border-softer);gap:18px;padding:22px 24px;display:flex}.vote{border:1px solid var(--border-soft);border-radius:var(--radius-sm);cursor:pointer;background:var(--card-bg-alt);transition:all .2s var(--ease);flex-direction:column;flex:none;align-items:center;gap:2px;min-width:54px;padding:8px 12px;display:flex}.vote:hover{border-color:var(--sky-blue);box-shadow:var(--shadow-sm);background:#fff;transform:translateY(-2px)}.vote .icon,.vote svg{width:16px;height:16px;color:var(--sky-blue-deep)}.vote .count{color:var(--ink);font-size:1.05rem;font-weight:700}.vote.voted{border-color:var(--sky-blue);background:#4fa9e01a}.fb-body{flex:1;min-width:0}.fb-body-top{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.fb-title{color:var(--ink);margin:0 0 3px;font-size:1.05rem;font-weight:600}.fb-desc{color:var(--subtle-ink);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 10px;font-size:.92rem;display:-webkit-box;overflow:hidden}.fb-meta{color:var(--faint-ink);font-size:.82rem}.fb-foot{align-items:center;gap:12px;margin-top:12px;display:flex}.tag{border-radius:var(--radius-pill);color:var(--sky-blue-deep);white-space:nowrap;background:#4fa9e01f;padding:4px 11px;font-size:.78rem;font-weight:600}.status{border-radius:var(--radius-pill);white-space:nowrap;padding:5px 12px;font-size:.75rem;font-weight:600}.status-planned{color:#6b5fd0;background:#786edc24}.status-progress{color:var(--sky-blue-deep);background:#4fa9e024}.status-shipped{color:var(--leaf-green-deep);background:#6fbf8b29}.status-requested{color:var(--subtle-ink);background:#8695a329}.fb-comments{color:var(--faint-ink);align-items:center;gap:5px;margin-left:auto;font-size:.85rem;display:inline-flex}.fb-comments .icon,.fb-comments svg{width:15px;height:15px}.roadmap-head{margin:40px 0 26px}.roadmap-head h2{font-family:var(--font-display);color:var(--ink);margin:0 0 6px;font-size:clamp(1.6rem,3vw,1.9rem)}.roadmap-head p{color:var(--subtle-ink);margin:0}.roadmap{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.rm-col-head{align-items:center;gap:8px;margin-bottom:14px;display:flex}.rm-col-head h3{font-family:var(--font-display);color:var(--ink);margin:0;font-size:1.35rem;font-weight:500}.rm-col-head .n{color:var(--faint-ink);border:1px solid var(--border-softer);border-radius:var(--radius-pill);background:#ffffffb3;padding:2px 9px;font-size:.8rem;font-weight:600}.rm-col{flex-direction:column;gap:12px;min-height:120px;display:flex}.rm-card{background:var(--card-bg);border:1px solid var(--border-softer);border-radius:var(--radius-card);box-shadow:var(--shadow-sm);padding:16px 18px}.rm-card .t{color:var(--ink);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 12px;font-size:.95rem;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.rm-card-foot{justify-content:space-between;align-items:center;display:flex}.rm-empty{border:1.5px dashed var(--border-soft);border-radius:var(--radius-card);text-align:center;color:var(--faint-ink);padding:28px 12px;font-size:.85rem}@media (max-width:820px){.roadmap{grid-template-columns:1fr 1fr}}@media (max-width:480px){.roadmap{grid-template-columns:1fr}.fb-page{padding:0 20px}}
