﻿*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:#14161A;color:#EDEFF2;font-family:"Inter","Segoe UI",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;font-size:15px;font-weight:400;line-height:1.55;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}a:hover{color:#E8638B;text-decoration:underline}code,pre{font-family:"JetBrains Mono","SF Mono",ui-monospace,Consolas,monospace;font-size:0.9em}h1,h2,h3{color:#EDEFF2;line-height:1.25;letter-spacing:-0.005em}.app{min-height:100%;display:flex;flex-direction:column}.navbar{height:62px;background:#1B1E24;border-bottom:1px solid #2c313a;padding:0 24px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10}.navbar-brand{display:flex;align-items:center;gap:10px;color:#EDEFF2;font-weight:600;text-decoration:none}.navbar-brand img{height:28px}.navbar-nav{display:flex;align-items:center;gap:12px;list-style:none}.navbar-user{display:flex;align-items:center;gap:10px}.content{flex:1;max-width:1200px;width:100%;margin:28px auto;padding:0 24px}.card{background:#1B1E24;border:1px solid #2c313a;border-radius:14px;padding:20px}.card+.card{margin-top:16px}.card-title{font-size:1.1rem;font-weight:600;margin-bottom:12px}.card-meta{color:#9aa0aa;font-size:0.9rem}.form-row{margin-bottom:14px}label,.form-label{display:block;font-size:0.85rem;color:#9aa0aa;margin-bottom:6px;font-weight:600}input[type="text"],input[type="number"],input[type="url"],input[type="email"],input[type="password"],select,textarea{width:100%;padding:9px 12px;background:#22262E;color:#EDEFF2;font:inherit;border:1px solid #2c313a;border-radius:8px;outline:none}input:focus,select:focus,textarea:focus{border-color:#E8638B;box-shadow:0 0 0 3px rgba(232,99,139,0.12)}textarea{min-height:110px;resize:vertical}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;border:1px solid transparent;font-weight:600;font-size:0.9rem;cursor:pointer;background:#E8638B;color:#fff}.btn:hover{background:#d04f78}.btn-secondary{background:#22262E;color:#EDEFF2;border:1px solid #2c313a}.btn-secondary:hover{background:#2c313a}.btn-danger{background:#E84B4B}.btn-danger:hover{filter:brightness(0.9)}.btn-warn{background:#F6C453;color:#1a1300}.btn-warn:hover{filter:brightness(0.92)}.btn-sm{padding:5px 10px;font-size:0.8rem}.docs-btn{gap:4px;padding:5px 10px;line-height:1}.docs-btn img{height:1em;width:auto;display:block}.toggle{position:relative;display:inline-block;width:44px;height:24px}.toggle input{opacity:0;width:0;height:0}.toggle .slider{position:absolute;cursor:pointer;inset:0;background:#2c313a;border-radius:24px;transition:0.2s}.toggle .slider::before{content:"";position:absolute;height:18px;width:18px;left:3px;bottom:3px;background:#EDEFF2;border-radius:50%;transition:0.2s}.toggle input:checked+.slider{background:#E8638B}.toggle input:checked+.slider::before{transform:translateX(20px)}.server-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(240px, 1fr));gap:16px}.server-card{background:#1B1E24;border:1px solid #2c313a;border-radius:14px;padding:18px;text-align:center;cursor:pointer;transition:border-color 0.15s, transform 0.05s}.server-card:hover{border-color:#E8638B;transform:translateY(-1px)}.server-card img{width:64px;height:64px;border-radius:50%;margin-bottom:10px}.server-card .server-name{font-weight:600;margin-bottom:4px}.server-card .server-meta{color:#9aa0aa;font-size:0.85rem}.overview-header{display:flex;align-items:center;gap:16px;margin-bottom:24px}.overview-header .guild-icon{width:64px;height:64px;border-radius:50%}.overview-header h1{font-size:1.6rem}.overview-header .guild-meta{color:#9aa0aa;font-size:0.9rem}.feature-group{margin-top:24px}.feature-group-label{font-size:0.8rem;text-transform:uppercase;letter-spacing:0.08em;color:#6c727c;margin-bottom:8px}.feature-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));gap:16px}.feature-card{background:#1B1E24;border:1px solid #2c313a;border-radius:14px;padding:16px 18px;display:flex;flex-direction:column;gap:10px;transition:transform .15s, border-color .15s, background .15s}.feature-card:hover{transform:translateY(-1px);border-color:#353b46;background:#1e2228}.feature-card .feature-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.feature-card .feature-head .feature-title{display:flex;align-items:center;gap:10px;font-weight:600;font-size:.98rem}.feature-card .feature-head .feature-title .emoji{font-size:1.25rem}.feature-card .feature-desc{color:#9aa0aa;font-size:.85rem;line-height:1.5}.feature-card .feature-actions{display:flex;gap:6px;margin-top:auto}.feature-card .feature-actions a{font-size:.82rem;font-weight:600;color:#E8638B}.feature-card .feature-actions a:hover{color:#d04f78;text-decoration:none}.feature-card.is-on .feature-title{color:#EDEFF2}.feature-card:not(.is-on) .feature-title{color:#9aa0aa}.health-warnings{background:#1B1E24;border-left:4px solid #F6C453;border-radius:8px;padding:12px 16px;margin-bottom:20px}.health-warnings.severity-error{border-left-color:#E84B4B}.health-warnings .health-title{font-weight:600;margin-bottom:6px}.health-warnings ul{margin:0;padding-left:16px}.health-warnings li{color:#9aa0aa;font-size:0.9rem;line-height:1.5}.health-warnings .severity-tag{display:inline-block;font-size:0.7rem;font-weight:600;text-transform:uppercase;padding:1px 6px;border-radius:4px;margin-right:6px}.health-warnings .severity-tag.error{background:rgba(232,75,75,0.18);color:#E84B4B}.health-warnings .severity-tag.warning{background:rgba(246,196,83,0.18);color:#F6C453}.detail-grid{display:grid;grid-template-columns:220px 1fr;gap:24px;align-items:start}.detail-sidebar{background:#1B1E24;border:1px solid #2c313a;border-radius:14px;padding:12px;position:sticky;top:78px}.detail-sidebar ul{list-style:none}.detail-sidebar li+li{margin-top:2px}.detail-sidebar a{display:block;padding:8px 12px;border-radius:8px;color:#9aa0aa;font-size:0.9rem}.detail-sidebar a.active,.detail-sidebar a:hover{background:#22262E;color:#EDEFF2;text-decoration:none}.detail-sidebar a.active{background:rgba(232,99,139,0.12);color:#E8638B}.detail-body{min-width:0}.audit-entry{font-size:0.85rem;color:#9aa0aa;border-top:1px solid #2c313a;padding:8px 0}.audit-entry:first-child{border-top:0}.audit-entry .actor{color:#EDEFF2}.audit-entry .action-pill{background:#22262E;padding:1px 6px;border-radius:4px;font-family:"JetBrains Mono","SF Mono",ui-monospace,Consolas,monospace;font-size:0.75rem}.audit-entry .when{color:#6c727c;font-size:0.75rem}.toast-container{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:100}.toast{background:#1B1E24;border:1px solid #2c313a;border-left:4px solid #E8638B;border-radius:8px;padding:10px 14px;min-width:220px;font-size:0.85rem}.toast.success{border-left-color:#3FCB76}.toast.error{border-left-color:#E84B4B}.muted{color:#9aa0aa}.dim{color:#6c727c}.row{display:flex;gap:12px;align-items:center}.row:has(>.form-row){align-items:flex-start}.row-between{display:flex;gap:12px;align-items:center;justify-content:space-between}.spacer{flex:1}.tag{display:inline-block;padding:2px 8px;border-radius:4px;background:#22262E;color:#9aa0aa;font-size:0.75rem;font-weight:600}.tag.on{background:rgba(63,203,118,0.15);color:#3FCB76}.tag.off{background:rgba(108,114,124,0.18);color:#6c727c}@media (max-width: 768px){.detail-grid{grid-template-columns:1fr}.detail-sidebar{position:static}.navbar{padding:0 16px}.content{padding:0 16px}}.landing-min-body{min-height:100dvh;background:#0b0c10;color:#EDEFF2;font-family:"Inter","Segoe UI",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;position:relative;overflow:hidden;display:flex;flex-direction:column;background-image:radial-gradient(circle at 1px 1px, rgba(255,255,255,0.035) 1px, transparent 0);background-size:22px 22px}@supports not (height: 100dvh){.landing-min-body{min-height:100vh}}.landing-whip,.landing-whip-mobile{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}.landing-whip-mobile{display:none}.whip-path{opacity:0;will-change:opacity}.whip-a{animation:whip-crack 7s cubic-bezier(0.65, 0.05, 0.35, 1) infinite}.whip-b{animation:whip-crack 7s cubic-bezier(0.65, 0.05, 0.35, 1) infinite;animation-delay:3.4s}@keyframes whip-crack{0%,24%{opacity:0}26%{opacity:1}30%{opacity:.85}38%{opacity:.25}42%,100%{opacity:0}}.whip-crack{opacity:0;will-change:opacity}.whip-crack-a{animation:whip-snap 7s cubic-bezier(0.65, 0.05, 0.35, 1) infinite}.whip-crack-b{animation:whip-snap 7s cubic-bezier(0.65, 0.05, 0.35, 1) infinite;animation-delay:3.4s}@keyframes whip-snap{0%,24%{opacity:0}27%{opacity:1}32%{opacity:.7}42%,100%{opacity:0}}@media (prefers-reduced-motion: reduce){.whip-path{animation:none;opacity:0}.whip-crack{animation:none;opacity:.55}}@media (prefers-reduced-motion: reduce){.landing-min-body::before{animation:none;opacity:.8}}.landing-min-nav{position:relative;z-index:2;display:flex;justify-content:flex-end;align-items:center;padding:22px 36px;font-size:.9rem;letter-spacing:.01em}.landing-min-brand{color:#EDEFF2;font-weight:600;letter-spacing:.04em;text-decoration:none;display:inline-flex;align-items:center}.landing-min-brand img{display:block;height:28px;width:auto}.landing-min-nav-right{display:flex;align-items:center;gap:22px}.landing-min-nav-right a{color:#9aa0aa;text-decoration:none;transition:color .15s}.landing-min-nav-right a:hover{color:#EDEFF2}.landing-min-cta{color:#EDEFF2 !important;border:1px solid #2c313a;border-radius:999px;padding:7px 16px;transition:border-color .15s, background .15s}.landing-min-cta:hover{border-color:#E8638B;background:rgba(232,99,139,0.12)}.landing-min-stage{position:relative;z-index:1;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:60px 24px 80px}.landing-min-mark{color:#EDEFF2;filter:drop-shadow(0 0 24px rgba(232,99,139,0.18));animation:landing-min-float 8s ease-in-out infinite}@keyframes landing-min-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}.landing-min-tagline{text-align:center;font-size:1.05rem;line-height:1.6;color:#cdd1d8;font-weight:500;max-width:420px;margin:0}.landing-min-footer{position:relative;z-index:2;display:flex;justify-content:center;align-items:center;gap:10px;padding:28px 24px 32px;font-size:.78rem;color:#6c727c}.landing-min-footer a{color:#9aa0aa;text-decoration:none;transition:color .15s}.landing-min-footer a:hover{color:#EDEFF2}@media (max-width: 640px){.landing-min-nav{padding:18px 20px}.landing-min-stage{padding:28px 20px 24px;gap:18px}.landing-min-mark img{width:96px;height:96px}.landing-min-tagline{font-size:.95rem}.landing-min-footer{flex-wrap:wrap;padding:18px 16px 20px;font-size:.72rem;line-height:1.45}.landing-whip{display:none}.landing-whip-mobile{display:block}.landing-min-body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse 60vw 30vh at 50% 50%, rgba(232,99,139,0.14), transparent 70%);animation:landing-mobile-pulse 6s ease-in-out infinite}}@keyframes landing-mobile-pulse{0%,100%{opacity:.55}50%{opacity:1}}.docs-grid{display:grid;grid-template-columns:240px minmax(0, 1fr);gap:32px;align-items:start}.docs-sidebar{background:#1B1E24;border:1px solid #2c313a;border-radius:14px;padding:14px;position:sticky;top:78px;font-size:.9rem}.docs-sidebar-title{font-weight:600;color:#EDEFF2;padding:4px 8px 10px;border-bottom:1px solid #2c313a;margin-bottom:8px}.docs-section-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:#6c727c;padding:12px 8px 4px}.docs-link{display:block;padding:6px 10px;border-radius:6px;color:#9aa0aa;text-decoration:none;line-height:1.4}.docs-link:hover{background:#22262E;color:#EDEFF2;text-decoration:none}.docs-link.active{background:rgba(232,99,139,0.12);color:#E8638B}.docs-body{min-width:0;max-width:760px;color:#EDEFF2}.doc-header{margin-bottom:28px}.doc-header h1{font-size:1.9rem;font-weight:700;margin-bottom:8px;line-height:1.2}.doc-header .muted{font-size:.98rem;line-height:1.55}.doc-section{margin-top:28px}.doc-section h2{font-size:1.25rem;font-weight:600;margin-bottom:10px;color:#EDEFF2}.doc-section p{line-height:1.6;color:#EDEFF2;margin-bottom:8px}.doc-list{padding-left:22px}.doc-list li{margin-bottom:8px;line-height:1.55;color:#EDEFF2}.doc-list li code{background:#22262E;padding:1px 6px;border-radius:4px;font-size:.88em}.doc-card-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(260px, 1fr));gap:14px}.doc-card{background:#1B1E24;border:1px solid #2c313a;border-radius:12px;padding:14px 16px;text-decoration:none;transition:border-color .15s, transform .05s}.doc-card:hover{border-color:#E8638B;transform:translateY(-1px);text-decoration:none}.doc-card-title{color:#EDEFF2;font-weight:600;margin-bottom:4px}.doc-card-blurb{color:#9aa0aa;font-size:.88rem;line-height:1.45}@media (max-width: 768px){.docs-grid{grid-template-columns:1fr}.docs-sidebar{position:static}}.legal-page{max-width:760px;margin:0 auto;color:#EDEFF2;line-height:1.6}.legal-page section{margin-top:28px}.legal-page h1{font-size:1.9rem;font-weight:700;line-height:1.2;margin-bottom:6px}.legal-page h2{font-size:1.2rem;font-weight:600;margin-bottom:8px}.legal-page h3{font-size:1rem;font-weight:600;margin:14px 0 6px;color:#9aa0aa}.legal-page p{margin-bottom:10px}.legal-page code{background:#22262E;padding:1px 6px;border-radius:4px;font-size:.88em}.legal-page a{color:#E8638B}.legal-header{margin-bottom:14px}.legal-list{padding-left:22px}.legal-list li{margin-bottom:6px}.legal-footer{margin-top:36px;padding-top:14px;border-top:1px solid #2c313a;font-size:.9rem}.server-layout{display:grid;grid-template-columns:260px minmax(0, 1fr);gap:28px;align-items:start;margin-top:4px}.server-nav{position:sticky;top:78px;background:#1B1E24;border:1px solid #2c313a;border-radius:14px;padding:14px;font-size:.9rem;max-height:calc(100vh - 62px - 32px);overflow-y:auto}.server-nav-header{display:flex;gap:10px;align-items:center;padding:4px 6px 12px;border-bottom:1px solid #2c313a;margin-bottom:8px}.server-nav-icon{width:36px;height:36px;border-radius:50%;flex-shrink:0}.server-nav-ident{min-width:0}.server-nav-name{font-weight:600;color:#EDEFF2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.server-nav-meta{color:#6c727c;font-size:.78rem}.server-nav-section{display:flex;flex-direction:column;gap:1px}.server-nav-section+.server-nav-section{margin-top:8px}.server-nav-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:#6c727c;padding:10px 8px 4px}.server-nav-link{display:flex;align-items:center;gap:9px;padding:6px 10px;border-radius:6px;color:#9aa0aa;text-decoration:none;line-height:1.35}.server-nav-link:hover{background:#22262E;color:#EDEFF2;text-decoration:none}.server-nav-link.is-active{background:rgba(232,99,139,0.12);color:#E8638B}.server-nav-link.is-on .server-nav-text{color:#EDEFF2}.server-nav-emoji{width:18px;text-align:center;flex-shrink:0;font-size:.95rem}.server-nav-text{flex:1;min-width:0}.server-nav-dot{width:6px;height:6px;border-radius:50%;background:#3FCB76;flex-shrink:0}.server-main{min-width:0}.page-header{display:flex;gap:16px;align-items:center;margin-bottom:22px}.page-header h1{font-size:1.6rem;font-weight:700}.page-header-emoji{font-size:2rem;line-height:1}.page-header-meta{color:#9aa0aa;font-size:.9rem;margin-top:4px}.section-tabs{display:flex;gap:2px;border-bottom:1px solid #2c313a;margin-bottom:18px}.section-tab{padding:8px 14px;color:#9aa0aa;border-bottom:2px solid transparent;font-size:.9rem;font-weight:500;transition:color .12s, border-color .12s}.section-tab:hover{color:#EDEFF2;text-decoration:none}.section-tab.is-active{color:#E8638B;border-bottom-color:#E8638B}.combobox{position:relative}.combobox-input{width:100%;padding:9px 32px 9px 12px;background:#22262E;color:#EDEFF2;border:1px solid #2c313a;border-radius:8px;outline:none;font:inherit}.combobox-input:focus{border-color:#E8638B;box-shadow:0 0 0 3px rgba(232,99,139,0.12)}.combobox::after{content:"▾";position:absolute;right:12px;top:50%;transform:translateY(-50%);color:#6c727c;font-size:.75rem;pointer-events:none}.combobox-list{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#1B1E24;border:1px solid #2c313a;border-radius:8px;box-shadow:0 10px 30px rgba(0,0,0,0.4);max-height:280px;overflow-y:auto;z-index:50;padding:4px}.combobox-option{display:block;width:100%;text-align:left;padding:7px 10px;background:transparent;color:#EDEFF2;border:none;border-radius:4px;cursor:pointer;font:inherit}.combobox-option:hover,.combobox-option.is-active{background:#22262E}.combobox-option.is-selected{color:#E8638B;background:rgba(232,99,139,0.12)}.combobox-option[hidden]{display:none}.combobox-empty{padding:10px;color:#6c727c;font-size:.85rem;text-align:center}.docs-link,.docs-sidebar-title{text-decoration:none}@media (max-width: 900px){.server-layout{grid-template-columns:1fr}.server-nav{position:static;max-height:none}.server-main{scroll-margin-top:74px}}.mf-builder{display:flex;flex-direction:column;gap:14px;padding-bottom:80px}.mf-type-rail{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.mf-type-pill{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:#1B1E24;color:#9aa0aa;border:1px solid #2c313a;border-radius:999px;padding:6px 14px;font-size:0.85rem;font-weight:600;text-align:center;cursor:pointer;transition:background .12s, color .12s, border-color .12s}.mf-type-pill:hover{color:#EDEFF2}.mf-type-pill.is-active{background:rgba(232,99,139,0.12);color:#E8638B;border-color:#E8638B}.mf-dirty-dot{width:6px;height:6px;border-radius:50%;background:transparent;transition:background .12s}.mf-type-pill.is-dirty .mf-dirty-dot,.mf-dirty-dot.is-on{background:#F6C453}.mf-card{padding:18px}.mf-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}.mf-current-label{font-size:1.15rem;font-weight:600;color:#EDEFF2}.mf-current-hint{font-size:0.88rem;line-height:1.4}.mf-channel-seg{display:inline-flex;padding:3px;background:#14161A;border:1px solid #2c313a;border-radius:999px;gap:2px}.mf-seg-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 14px;border:none;background:transparent;color:#9aa0aa;font:inherit;font-size:0.85rem;font-weight:600;border-radius:999px;cursor:pointer;transition:background .12s, color .12s}.mf-seg-btn:hover{color:#EDEFF2}.mf-seg-btn.is-active{background:rgba(232,99,139,0.12);color:#E8638B}.mf-seg-state{font-size:0.7rem;font-weight:600;letter-spacing:0.05em;text-transform:uppercase;padding:1px 6px;border-radius:4px;background:#1B1E24;color:#9aa0aa}.mf-seg-btn.is-active .mf-seg-state{background:rgba(255,255,255,0.1);color:#E8638B}.mf-seg-btn.is-dm-on .mf-seg-state{background:#3FCB76;color:#fff}.mf-dm-toggle-row{align-items:center;gap:12px;padding:10px 12px;margin-bottom:14px;flex-wrap:wrap;background:#14161A;border:1px solid #2c313a;border-radius:8px}.mf-dm-toggle-row:not([hidden]){display:flex}.mf-dm-toggle{display:inline-flex;align-items:center;gap:8px;font-size:0.9rem;font-weight:600;color:#EDEFF2;cursor:pointer}.mf-dm-toggle input{width:auto;margin:0}.mf-dm-toggle-hint{font-size:0.82rem}.mf-main-tabs{display:flex;gap:0;padding:4px;background:#14161A;border-radius:8px;margin-bottom:14px}.mf-main-tab{flex:1;padding:8px 14px;border:none;background:transparent;color:#9aa0aa;font:inherit;font-weight:600;border-radius:6px;cursor:pointer;transition:background .1s, color .1s}.mf-main-tab:hover{color:#EDEFF2}.mf-main-tab.is-active{background:#E8638B;color:#fff}.mf-edit-tabs{display:flex;gap:4px;border-bottom:1px solid #2c313a;margin-bottom:14px}.mf-edit-tab{padding:8px 12px;border:none;background:transparent;color:#9aa0aa;font:inherit;font-size:0.85rem;font-weight:600;border-bottom:2px solid transparent;cursor:pointer;transition:color .1s, border-color .1s}.mf-edit-tab:hover{color:#EDEFF2}.mf-edit-tab.is-active{color:#E8638B;border-bottom-color:#E8638B}.mf-preview-frame{background:#313338;color:#dbdee1;border-radius:8px;padding:16px 18px;min-height:220px;line-height:1.45;font-family:"gg sans","Inter","Segoe UI",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif}.mf-pv-header{display:flex;gap:12px;align-items:flex-start}.mf-pv-bot-avatar{width:38px;height:38px;border-radius:50%;flex-shrink:0;background:linear-gradient(135deg, #5865F2, #E8638B)}.mf-pv-bot-row{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.mf-pv-bot-name{color:#fff;font-weight:600;font-size:1rem}.mf-pv-bot-tag{background:#5865f2;color:#fff;font-size:0.62rem;font-weight:700;letter-spacing:0.04em;padding:1px 5px;border-radius:3px;transform:translateY(-1px)}.mf-pv-time{color:#949ba4;font-size:0.75rem}.mf-pv-body{padding-left:50px;margin-top:2px}.mf-pv-content{white-space:pre-wrap;word-wrap:break-word;font-size:0.96rem}.mf-pv-content+.mf-pv-embed{margin-top:6px}.mf-pv-embed{display:grid;grid-template-columns:1fr;gap:14px;background:#2b2d31;border-left:4px solid #5865f2;border-radius:4px;padding:8px 16px 16px 12px;max-width:520px;margin-top:6px}.mf-pv-embed.with-thumb{grid-template-columns:1fr auto}.mf-pv-embed-body{display:flex;flex-direction:column;gap:8px;min-width:0}.mf-pv-author{display:flex;align-items:center;gap:8px;font-size:0.88rem;color:#fff;margin-top:8px}.mf-pv-author-icon img,.mf-pv-author-icon{width:24px;height:24px;border-radius:50%;object-fit:cover;display:block}.mf-pv-author-link{color:#fff;text-decoration:none}.mf-pv-author-link:hover{text-decoration:underline}.mf-pv-title{color:#fff;font-weight:600;font-size:1rem}.mf-pv-desc{font-size:0.88rem;white-space:pre-wrap;word-wrap:break-word}.mf-pv-image img,.mf-pv-image{max-width:100%;border-radius:4px;display:block}.mf-pv-thumb img,.mf-pv-thumb{width:80px;height:80px;border-radius:4px;object-fit:cover;display:block}.mf-pv-footer{display:flex;align-items:center;gap:8px;font-size:0.75rem;color:#b9bbbe;margin-top:6px}.mf-pv-footer-icon img,.mf-pv-footer-icon{width:18px;height:18px;border-radius:50%;object-fit:cover;display:block}.mf-pv-empty{padding:36px 0;text-align:center;color:#949ba4;font-size:0.88rem}.mf-pv-pill{display:inline-block;padding:0 5px;margin:0 1px;background:rgba(88,101,242,0.32);color:#c7d2fe;border-radius:4px;font-size:0.86em;font-weight:500}.mf-pv-token{display:inline-block;padding:2px 6px;background:rgba(232,99,139,0.18);color:#f9a8c2;border-radius:4px;font-size:0.72rem;font-weight:600;letter-spacing:0.02em}.mf-pv-content code,.mf-pv-desc code,.mf-pv-embed code{background:#1e1f22;padding:1px 4px;border-radius:3px;font-size:0.86em}.mf-pv-content pre,.mf-pv-desc pre{background:#1e1f22;padding:8px 10px;border-radius:4px;font-size:0.82rem;white-space:pre-wrap;margin:4px 0}.mf-vars-list{display:flex;flex-direction:column;gap:4px}.mf-var{display:flex;align-items:center;gap:14px;padding:8px 12px;text-align:left;cursor:pointer;background:#22262E;color:#EDEFF2;border:1px solid #2c313a;border-radius:8px;font:inherit;transition:border-color .1s, background .1s}.mf-var:hover{background:#2c313a;border-color:#E8638B}.mf-var code{background:rgba(232,99,139,0.12);color:#E8638B;padding:2px 7px;border-radius:4px;font-size:0.85em}.mf-savebar{position:sticky;bottom:16px;z-index:5;display:flex;align-items:center;gap:12px;justify-content:flex-end;background:#1B1E24;border:1px solid #2c313a;border-radius:14px;padding:10px 14px;box-shadow:0 8px 24px rgba(0,0,0,0.35);transition:border-color .15s}.mf-savebar.is-dirty{border-color:#F6C453}.mf-savebar:not(.is-dirty) .mf-savebar-msg{display:none}.mf-savebar-msg{margin-right:auto;color:#F6C453;font-weight:600;display:inline-flex;align-items:center;gap:8px}.mf-savebar [data-mf-save]:disabled,.mf-savebar [data-mf-reset]:disabled{opacity:0.45;cursor:not-allowed}.mf-persist-list{flex:1;min-width:280px;background:#22262E;border:1px solid #2c313a;border-radius:8px;padding:12px 14px}.mf-persist-list legend{padding:0 6px;font-size:0.85rem;color:#EDEFF2;font-weight:600}.mf-persist-list p.muted{font-size:0.78rem;margin-bottom:8px}.mf-persist-roles{display:flex;flex-direction:column;gap:4px;max-height:240px;overflow-y:auto;padding-right:4px}.mf-persist-role{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:4px;cursor:pointer;font-size:0.88rem}.mf-persist-role:hover{background:#2c313a}.mf-persist-role-name{color:#EDEFF2}.mf-mini-preview-frame{background:#313338;color:#dbdee1;border-radius:8px;padding:14px 16px;line-height:1.4;font-family:"gg sans","Inter","Segoe UI",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;border:1px solid #2c313a}.mf-toolbar{display:flex;gap:8px;align-items:center;padding:12px 0;margin:4px 0 8px;border-top:1px solid #2c313a;border-bottom:1px solid #2c313a}.mf-add-btn{display:inline-flex;align-items:center;gap:4px;background:#22262E;color:#EDEFF2;border:1px solid #2c313a;border-radius:8px;padding:6px 12px;font:inherit;font-size:0.85rem;font-weight:600;cursor:pointer;transition:background .1s, border-color .1s, color .1s}.mf-add-btn:not(:disabled):hover{background:#2c313a;border-color:#E8638B;color:#E8638B}.mf-add-btn-primary{background:rgba(232,99,139,0.12);color:#E8638B;border-color:rgba(232,99,139,0.4)}.mf-add-btn-primary:hover{background:rgba(232,99,139,0.18)}.mf-add-btn-danger{color:#E84B4B;border-color:rgba(232,75,75,0.4)}.mf-add-btn-danger:hover{background:rgba(232,75,75,0.12);border-color:#E84B4B;color:#E84B4B}.mf-add-btn:disabled{opacity:0.4;cursor:not-allowed}.mf-component{background:#22262E;border:1px solid #2c313a;border-radius:14px;margin-top:12px;overflow:hidden}.mf-component-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:rgba(0,0,0,0.2);border-bottom:1px solid #2c313a}.mf-component-title{font-weight:600;color:#EDEFF2;font-size:0.92rem;letter-spacing:0.01em}.mf-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;background:transparent;color:#9aa0aa;border:1px solid transparent;cursor:pointer;font-size:1.1rem;line-height:1}.mf-icon-btn:hover{background:rgba(232,75,75,0.12);color:#E84B4B;border-color:rgba(232,75,75,0.3)}.mf-embed-body{padding:14px;display:flex;flex-direction:column;gap:16px}.mf-embed-section{display:flex;flex-direction:column;gap:8px}.mf-section-label{font-size:0.72rem;text-transform:uppercase;letter-spacing:0.08em;color:#6c727c;font-weight:600}.mf-section-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.mf-preset-row{display:flex;flex-wrap:wrap;gap:6px}.mf-preset{display:inline-flex;align-items:center;gap:6px;padding:5px 10px 5px 6px;background:#1B1E24;border:1px solid #2c313a;border-radius:999px;cursor:pointer;font-size:0.82rem;font-weight:600;color:#9aa0aa;transition:border-color .1s, color .1s, background .1s}.mf-preset:hover{color:#EDEFF2;border-color:#39404b}.mf-preset.is-active{color:#EDEFF2;border-color:#E8638B}.mf-preset-swatch{width:14px;height:14px;border-radius:50%;background:var(--preset-color, #E8638B);border:1px solid rgba(0,0,0,0.25)}.mf-preset-custom{position:relative;padding-right:12px}.mf-preset-custom input[type="color"]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;padding:0;border:none}.mf-row-2{display:grid;gap:8px;grid-template-columns:repeat(auto-fit, minmax(220px, 1fr))}.mf-row-3{display:grid;gap:8px;grid-template-columns:repeat(auto-fit, minmax(180px, 1fr))}.mf-fields-list{display:flex;flex-direction:column;gap:8px}.mf-field-row{display:grid;gap:8px;grid-template-columns:1fr auto;align-items:start;padding:10px;background:#14161A;border:1px solid #2c313a;border-radius:8px}.mf-field-row-grid{display:grid;gap:6px;grid-template-columns:1fr}.mf-field-row-meta{display:flex;flex-direction:column;gap:6px;align-items:flex-end}.mf-inline-toggle{display:inline-flex;gap:6px;align-items:center;font-size:0.8rem;color:#9aa0aa;cursor:pointer}.mf-no-fields{font-size:0.85rem;padding:4px 0}.mf-row-buttons{display:flex;flex-direction:column;gap:6px;padding:10px 14px}.mf-button-row{display:grid;gap:8px;grid-template-columns:minmax(150px, 1fr) minmax(200px, 2fr) auto;align-items:center}.mf-component-row>.mf-add-btn{margin:0 14px 14px}.mf-pv-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.mf-pv-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:4px;font-size:0.85rem;font-weight:500;background:#4e5058;color:#fff;text-decoration:none;cursor:pointer}.mf-pv-btn-link{background:#2b2d31;border:1px solid #4e5058}.mf-pv-btn-link:hover{text-decoration:underline}.mf-pv-btn-link-icon{font-size:0.7rem;opacity:0.6}.mf-pv-fields{display:grid;gap:8px;grid-template-columns:repeat(3, 1fr)}.mf-pv-field{grid-column:span 3}.mf-pv-field.inline{grid-column:span 1;min-width:0}.mf-pv-field-name{color:#fff;font-weight:600;font-size:0.85rem;margin-bottom:2px}.mf-pv-field-value{font-size:0.85rem;line-height:1.4;white-space:pre-wrap}.feature-pill-toggle{position:relative;cursor:pointer;user-select:none;display:inline-flex;margin:0}.feature-pill-toggle input{position:absolute;opacity:0;pointer-events:none}.feature-pill-label{display:inline-block;padding:4px 12px;border-radius:999px;font-size:0.75rem;font-weight:600;border:1px solid #2c313a;background:#22262E;color:#9aa0aa;transition:background .12s, color .12s, border-color .12s}.feature-pill-label .feature-pill-on,.feature-pill-label .feature-pill-off{display:none}.feature-pill-toggle input:checked+.feature-pill-label{background:rgba(63,203,118,0.15);color:#3FCB76;border-color:rgba(63,203,118,0.3)}.feature-pill-toggle input:checked+.feature-pill-label .feature-pill-on{display:inline}.feature-pill-toggle input:not(:checked)+.feature-pill-label .feature-pill-off{display:inline}.feature-pill-toggle:hover .feature-pill-label{filter:brightness(1.1)}.server-nav-header{position:relative;padding:0;margin-bottom:8px}.server-nav-switcher-trigger{display:flex;align-items:center;gap:10px;width:100%;padding:10px 8px 12px;background:transparent;border:0;border-bottom:1px solid #2c313a;color:inherit;cursor:pointer;text-align:left;border-radius:6px 6px 0 0;transition:background .12s}.server-nav-switcher-trigger:hover{background:#22262E}.server-nav-switcher-caret{margin-left:auto;color:#6c727c;font-size:.8rem}.server-nav-switcher-trigger[aria-expanded="true"] .server-nav-switcher-caret{transform:rotate(180deg)}.server-nav-switcher-panel{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:20;background:#1B1E24;border:1px solid #2c313a;border-radius:8px;box-shadow:0 12px 32px rgba(0,0,0,0.45);padding:6px;max-height:360px;overflow-y:auto}.server-nav-switcher-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;color:#EDEFF2;text-decoration:none;font-size:.9rem}.server-nav-switcher-row img,.server-nav-switcher-row .server-nav-switcher-fallback{width:28px;height:28px;border-radius:50%;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;background:#22262E;color:#9aa0aa;font-weight:600;object-fit:cover}.server-nav-switcher-row:hover{background:#22262E;text-decoration:none}.server-nav-switcher-row.is-active{background:rgba(232,99,139,0.12);color:#E8638B}.server-nav-switcher-loading,.server-nav-switcher-empty{padding:12px;font-size:.85rem;text-align:center}.mf-vars-section-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:#6c727c;font-weight:600;padding:14px 4px 4px}.mf-vars-section-label:first-child{padding-top:4px}.mf-var-emoji-thumb{width:22px;height:22px;object-fit:contain;flex-shrink:0}.mf-emoji-popover{z-index:100;background:#1B1E24;border:1px solid #2c313a;border-radius:14px;box-shadow:0 12px 32px rgba(0,0,0,0.45);padding:10px;width:320px;max-height:360px;display:flex;flex-direction:column;gap:8px}.mf-emoji-search{background:#22262E;border:1px solid #2c313a;border-radius:8px;padding:6px 10px;color:#EDEFF2;font:inherit;font-size:.85rem}.mf-emoji-results{overflow-y:auto}.mf-emoji-grid{display:grid;grid-template-columns:repeat(8, 1fr);gap:2px}.mf-emoji-cell{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1;padding:4px;background:transparent;border:1px solid transparent;border-radius:6px;cursor:pointer}.mf-emoji-cell:hover{background:#22262E;border-color:#2c313a}.mf-emoji-cell img{width:26px;height:26px;object-fit:contain}.mf-emoji-empty{padding:16px;text-align:center;font-size:.85rem}

.branded-modal{border:1px solid #2c313a;border-radius:12px;padding:0;background:#1B1E24;color:#EDEFF2;max-width:520px;width:92vw;box-shadow:0 12px 40px rgba(0,0,0,.55)}.branded-modal::backdrop{background:rgba(0,0,0,.55);backdrop-filter:blur(2px)}.branded-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid #2c313a}.branded-modal-body{padding:16px 18px;max-height:70vh;overflow:auto}.branded-modal-footer{display:flex;gap:10px;justify-content:flex-end;padding:12px 18px;border-top:1px solid #2c313a;background:#1B1E24}.branded-modal-footer .btn-danger{background:#E8638B;border-color:#E8638B;color:#fff}.modal-close{background:transparent;border:0;color:#9aa0aa;font-size:1.4rem;cursor:pointer;line-height:1;padding:0 4px}.modal-close:hover{color:#EDEFF2}.branded-modal .form-row{margin-bottom:12px}.branded-modal .form-row:last-child{margin-bottom:0}.branded-modal-message{color:#cdd2dd;line-height:1.5;font-size:.95rem}

.branded-modal{margin:auto;inset:0}.server-grid{justify-content:center;justify-items:center;max-width:900px;margin-left:auto;margin-right:auto}

.navbar .btn{display:inline-flex;align-items:center;gap:6px;line-height:1;border-radius:8px;font-weight:600;text-decoration:none;border:1px solid #2c313a;background:#22262E;color:#EDEFF2;transition:background .12s, border-color .12s, color .12s}
.navbar .btn:hover{background:#2c313a;border-color:#3a4150;color:#fff;text-decoration:none}
.navbar .btn-sm{padding:6px 12px;font-size:.85rem}
.navbar .btn-secondary{background:#22262E;color:#EDEFF2;border-color:#2c313a}
.navbar .btn-secondary:hover{background:#2c313a;border-color:#E8638B;color:#fff}
.navbar .docs-btn img{height:.95em;width:auto;display:block}

.mf-pv-btn-primary{background:#5865f2;color:#fff;border:none}
.mf-pv-btn-primary:hover{background:#4752c4;text-decoration:none;color:#fff}
.branded-combo{position:relative;display:block}
.branded-combo-input{width:100%;box-sizing:border-box;background:#22262E;color:#EDEFF2;border:1px solid #2c313a;border-radius:8px;padding:9px 12px;font:inherit;outline:none}
.branded-combo-input:focus{border-color:#E8638B;box-shadow:0 0 0 3px rgba(232,99,139,0.12)}
.branded-combo-list{position:absolute;left:0;right:0;top:100%;margin-top:4px;background:#1B1E24;border:1px solid #2c313a;border-radius:8px;max-height:240px;overflow-y:auto;z-index:60;box-shadow:0 8px 24px rgba(0,0,0,.45);padding:4px}
.branded-combo-option{display:block;width:100%;text-align:left;background:transparent;border:0;color:#EDEFF2;padding:8px 12px;cursor:pointer;font:inherit;font-size:.9rem;border-radius:4px}
.branded-combo-option:hover,.branded-combo-option:focus{background:#22262E;color:#fff;outline:none}
.am-search{position:relative}
.am-search-input{width:100%;box-sizing:border-box;background:#22262E;color:#EDEFF2;border:1px solid #2c313a;border-radius:8px;padding:8px 10px;font:inherit;outline:none}
.am-search-input:focus{border-color:#E8638B;box-shadow:0 0 0 3px rgba(232,99,139,0.12)}
.am-search-list{position:absolute;left:0;right:0;top:100%;margin-top:4px;background:#1B1E24;border:1px solid #2c313a;border-radius:8px;max-height:200px;overflow-y:auto;z-index:60;box-shadow:0 8px 24px rgba(0,0,0,.45);padding:4px}
.am-search-option{display:block;width:100%;text-align:left;background:transparent;border:0;color:#EDEFF2;padding:6px 10px;cursor:pointer;font:inherit;font-size:.85rem;border-radius:4px}
.am-search-option:hover{background:#22262E;color:#fff}
/* Tighten the outer margins on the dashboard frame so per-feature
   pages don't waste vertical space and force the chrome to scroll
   when most cards fit within the viewport. */
.content{margin:14px auto;padding:0 18px}
.server-layout{margin-top:0;gap:18px}
.page-header{margin-bottom:14px}
/* Persistent-frame loader: the chrome stays put, only .server-main
   swaps. Subtle dim while the next page is fetching so the swap
   isn't a silent jolt. */
.server-layout.frame-loading .server-main{opacity:0.55;transition:opacity .12s}
.server-main{transition:opacity .12s}
/* /servers chooser: centers the picker in the available viewport
   instead of dumping two avatars at top-left of an empty page. */
.servers-stage{min-height:calc(100dvh - 62px - 32px);display:flex;align-items:center;justify-content:center}
.servers-chooser{width:100%;max-width:640px;padding:28px;text-align:center}
.servers-chooser .page-header h1{font-size:1.6rem}
.servers-chooser .server-grid{justify-content:center;justify-items:center}
@supports not (height: 100dvh){.servers-stage{min-height:calc(100vh - 62px - 32px)}}

/* ───────────────────────────────────────────────────────────────────
 * Static-frame layout
 *
 * The outer page is fixed to viewport height; only the per-feature
 * content area scrolls. Navbar + sidebar stay put. The sidebar gets
 * its own internal scroll if its links overflow. Combined with the
 * dashboard_frame.js fetch-and-swap, the dashboard reads as a single
 * SPA shell instead of a stack of full-page reloads.
 * ─────────────────────────────────────────────────────────────────── */
html,body{height:100dvh;overflow:hidden}
@supports not (height: 100dvh){html,body{height:100vh}}
.app{height:100dvh;display:flex;flex-direction:column;min-height:0}
@supports not (height: 100dvh){.app{height:100vh}}
.navbar{flex-shrink:0;position:relative;top:auto}
.content{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;margin:0 auto;padding:14px 18px;scrollbar-gutter:stable both-edges}
.server-layout{align-items:stretch;min-height:0;margin-top:0}
.server-nav{position:sticky;top:0;align-self:start;max-height:calc(100dvh - 62px - 28px);overflow-y:auto}
@supports not (height: 100dvh){.server-nav{max-height:calc(100vh - 62px - 28px)}}
.server-main{min-width:0;min-height:0}

/* ───────────────────────────────────────────────────────────────────
 * Branded scrollbars - pink track-thumb in the Sploodji palette.
 * Applies to every internal scroll container so the UI feels
 * consistent instead of flipping between an OS default scrollbar and
 * the brand styling.
 * ─────────────────────────────────────────────────────────────────── */
.content,.server-nav,.detail-sidebar,.docs-sidebar,
.branded-modal-body,.combobox-list,.am-search-list,
.multi-chip-list,.branded-combo-list,.mf-emoji-popover,
.mf-emoji-results,textarea{
  scrollbar-color:#E8638B #1B1E24;scrollbar-width:thin;
}
.content::-webkit-scrollbar,
.server-nav::-webkit-scrollbar,
.detail-sidebar::-webkit-scrollbar,
.docs-sidebar::-webkit-scrollbar,
.branded-modal-body::-webkit-scrollbar,
.combobox-list::-webkit-scrollbar,
.am-search-list::-webkit-scrollbar,
.multi-chip-list::-webkit-scrollbar,
.branded-combo-list::-webkit-scrollbar,
.mf-emoji-popover::-webkit-scrollbar,
.mf-emoji-results::-webkit-scrollbar,
textarea::-webkit-scrollbar{width:10px;height:10px}
.content::-webkit-scrollbar-track,
.server-nav::-webkit-scrollbar-track,
.detail-sidebar::-webkit-scrollbar-track,
.docs-sidebar::-webkit-scrollbar-track,
.branded-modal-body::-webkit-scrollbar-track,
.combobox-list::-webkit-scrollbar-track,
.am-search-list::-webkit-scrollbar-track,
.multi-chip-list::-webkit-scrollbar-track,
.branded-combo-list::-webkit-scrollbar-track,
.mf-emoji-popover::-webkit-scrollbar-track,
.mf-emoji-results::-webkit-scrollbar-track,
textarea::-webkit-scrollbar-track{background:#14161A;border-left:1px solid #2c313a}
.content::-webkit-scrollbar-thumb,
.server-nav::-webkit-scrollbar-thumb,
.detail-sidebar::-webkit-scrollbar-thumb,
.docs-sidebar::-webkit-scrollbar-thumb,
.branded-modal-body::-webkit-scrollbar-thumb,
.combobox-list::-webkit-scrollbar-thumb,
.am-search-list::-webkit-scrollbar-thumb,
.multi-chip-list::-webkit-scrollbar-thumb,
.branded-combo-list::-webkit-scrollbar-thumb,
.mf-emoji-popover::-webkit-scrollbar-thumb,
.mf-emoji-results::-webkit-scrollbar-thumb,
textarea::-webkit-scrollbar-thumb{
  background:linear-gradient(180deg,#E8638B 0%,#C04C70 100%);
  border:2px solid #14161A;border-radius:999px;
  box-shadow:inset 0 0 4px rgba(0,0,0,0.25);
}
.content::-webkit-scrollbar-thumb:hover,
.server-nav::-webkit-scrollbar-thumb:hover,
.detail-sidebar::-webkit-scrollbar-thumb:hover,
.docs-sidebar::-webkit-scrollbar-thumb:hover,
.branded-modal-body::-webkit-scrollbar-thumb:hover,
.combobox-list::-webkit-scrollbar-thumb:hover,
.am-search-list::-webkit-scrollbar-thumb:hover,
.multi-chip-list::-webkit-scrollbar-thumb:hover,
.branded-combo-list::-webkit-scrollbar-thumb:hover,
.mf-emoji-popover::-webkit-scrollbar-thumb:hover,
.mf-emoji-results::-webkit-scrollbar-thumb:hover,
textarea::-webkit-scrollbar-thumb:hover{
  background:linear-gradient(180deg,#FF7AA4 0%,#D75486 100%);
}
.content::-webkit-scrollbar-corner,
.server-nav::-webkit-scrollbar-corner,
.detail-sidebar::-webkit-scrollbar-corner,
.docs-sidebar::-webkit-scrollbar-corner{background:#14161A}

/* /servers stage is sized off the inner content frame. */
.servers-stage{min-height:calc(100dvh - 62px - 28px)}
@supports not (height: 100dvh){.servers-stage{min-height:calc(100vh - 62px - 28px)}}

/* Standardised submit/cancel row at the foot of dashboard forms.
   Right-aligned, with a hairline divider so the action visually
   belongs to the form above it instead of floating against the next card. */
.form-actions{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:8px;
  padding:14px 0 4px;
  margin-top:8px;
  border-top:1px solid #2c313a;
}
.form-actions .form-actions-spacer{flex:1}
.form-actions .form-actions-secondary{margin-right:auto}
.card>.form-actions:last-child{margin-bottom:-4px}

/* Multi-column form rows: bottom-align so wrapped labels do not push their input below sibling fields. .row centers everything by default, which left fields with two-line labels visibly out of line vs siblings with single-line labels. */
.row > .form-row { align-self: flex-end; }

/* ── Profile widget builder ────────────────────────────────────
   Direct-manipulation layout designer in feature_profile.html. The
   embed card IS the editing surface; hover a widget for inline
   controls. All selectors scoped under .pwb-builder + .pwb-palette-
   popover so they can't bleed into the rest of the dashboard. */
.pwb-builder { margin-top: 16px; }
.pwb-builder .pwb-shell { padding: 18px; overflow: hidden; }
.pwb-builder .pwb-tabs-row {
  display: flex; flex-wrap: wrap; gap: 6px;
  padding: 8px; margin: 8px 0 12px;
  background: #14161A; border: 1px solid #2c313a; border-radius: 10px;
}
.pwb-builder .pwb-tab {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 12px; border-radius: 999px;
  background: #22262E; color: #EDEFF2;
  border: 1px solid #2c313a; cursor: grab;
  font-weight: 600; font-size: 0.85rem;
}
.pwb-builder .pwb-tab.is-active {
  background: #E8638B; color: #fff; border-color: #E8638B;
}
.pwb-builder .pwb-tab-add { cursor: pointer; opacity: 0.85; }
.pwb-builder .pwb-tab-add:hover { opacity: 1; }
.pwb-builder .pwb-tab-emoji { line-height: 1; }
.pwb-builder .pwb-tab-toolbar { gap: 8px; }

/* ── The stage: the editable embed card ─────────────────── */
.pwb-builder .pwb-stage {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 84px;
  gap: 14px;
  padding: 16px 16px 16px 22px;
  background: #2B2D31; border-radius: 6px;
  border-left: 4px solid #7289DA;
  min-height: 200px;
}
.pwb-builder .pwb-stage-pill {
  position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
  background: #7289DA; border-radius: 6px 0 0 6px;
}
.pwb-builder .pwb-stage-body { display: flex; flex-direction: column; min-width: 0; }
.pwb-builder .pwb-stage-thumb-slot {
  width: 84px; height: 84px; border-radius: 6px;
  background: #1B1E24; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  font-size: 30px; color: #72767D;
  align-self: flex-start;
}
.pwb-builder .pwb-stage-thumb-slot.is-empty { background: transparent; }
.pwb-builder .pwb-stage-thumb-slot img {
  width: 100%; height: 100%; object-fit: cover;
}
.pwb-builder .pwb-stage-thumb-img[data-shape="circle"] {
  border-radius: 50%; width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  background: #1B1E24;
}
.pwb-builder .pwb-stage-empty {
  padding: 24px; text-align: center; color: #72767D;
  font-size: .85rem; border: 2px dashed #3a3f48; border-radius: 8px;
}
.pwb-builder .pwb-stage-nav {
  display: flex; flex-wrap: wrap; gap: 4px;
  margin: 10px 0 0;
}
.pwb-builder .pwb-stage-navbtn {
  font-size: 0.72rem; padding: 4px 10px;
  background: #4F545C; color: #fff;
  border-radius: 4px;
}
.pwb-builder .pwb-stage-navbtn.is-active { background: #5865F2; }

/* ── Add-widget rails between widgets ───────────────────── */
.pwb-builder .pwb-add-row {
  display: flex; align-items: center;
  height: 18px; margin: 2px 0;
  opacity: 0; transition: opacity .14s;
}
.pwb-builder .pwb-stage-body:hover .pwb-add-row,
.pwb-builder .pwb-add-row:focus-within,
.pwb-builder .pwb-add-row:hover { opacity: 1; }
.pwb-builder .pwb-add-btn {
  flex: 1;
  display: flex; align-items: center; gap: 8px;
  background: transparent; border: 0; padding: 0;
  cursor: pointer; color: #9aa0aa; font-size: .72rem;
}
.pwb-builder .pwb-add-line {
  flex: 1; height: 1px; background: #3a3f48;
}
.pwb-builder .pwb-add-chip {
  padding: 2px 10px; border-radius: 999px;
  background: #1B1E24; border: 1px dashed #3a3f48;
  color: #9aa0aa; white-space: nowrap;
}
.pwb-builder .pwb-add-btn:hover .pwb-add-chip {
  background: #E8638B; color: #fff; border-color: #E8638B;
}
.pwb-builder .pwb-add-btn.is-drop-target .pwb-add-chip {
  background: #E8638B; color: #fff; border-style: solid;
}

/* ── Widget rows (rendered in their preview form) ───────── */
.pwb-builder .pwb-widget {
  position: relative;
  display: grid;
  grid-template-columns: 26px minmax(0, 1fr);
  gap: 10px; align-items: flex-start;
  padding: 8px 10px; border-radius: 8px;
  border: 1px solid transparent;
  cursor: grab;
}
.pwb-builder .pwb-widget:hover {
  background: rgba(255,255,255,0.03);
  border-color: rgba(232,99,139,0.3);
}
.pwb-builder .pwb-widget.is-dragging { opacity: 0.4; }
.pwb-builder .pwb-widget.is-drop-target {
  box-shadow: 0 -3px 0 #E8638B inset;
}
.pwb-builder .pwb-widget-badge {
  width: 26px; height: 26px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 6px; background: rgba(0,0,0,0.25);
  font-size: 16px; flex-shrink: 0;
}
.pwb-builder .pwb-widget-preview { min-width: 0; }
.pwb-builder .pwb-widget-controls {
  position: absolute; top: 4px; right: 4px;
  display: flex; gap: 2px;
  background: #1B1E24; border: 1px solid #2c313a;
  border-radius: 6px; padding: 2px;
  opacity: 0; pointer-events: none;
  transition: opacity .12s;
}
.pwb-builder .pwb-widget:hover .pwb-widget-controls,
.pwb-builder .pwb-widget:focus-within .pwb-widget-controls {
  opacity: 1; pointer-events: auto;
}
.pwb-builder .pwb-ctrl {
  background: transparent; border: 0; cursor: pointer;
  width: 26px; height: 22px; border-radius: 4px;
  color: #EDEFF2; font-size: 14px; line-height: 1;
}
.pwb-builder .pwb-ctrl:hover { background: rgba(255,255,255,0.08); }
.pwb-builder .pwb-ctrl-danger:hover { background: rgba(248,113,113,0.18); color: #fca5a5; }

/* ── Widget preview renderings (Discord-ish) ────────────── */
.pwb-builder .pwb-w-header { font-weight: 700; font-size: 1rem; color: #EDEFF2; }
.pwb-builder .pwb-w-desc   { color: #B9BBBE; font-size: 0.88rem; }
.pwb-builder .pwb-w-note   { font-size: 0.78rem; }
.pwb-builder .pwb-w-divider { color: #3a3f48; letter-spacing: -1px; }
.pwb-builder .pwb-w-spacer { display: block; }
.pwb-builder .pwb-w-spacer-sm { height: 4px; }
.pwb-builder .pwb-w-spacer-md { height: 10px; }
.pwb-builder .pwb-w-spacer-lg { height: 22px; }
.pwb-builder .pwb-w-image {
  width: 100%; border-radius: 4px; overflow: hidden;
  background: #1B1E24;
}
.pwb-builder .pwb-w-image img { width: 100%; display: block; }
.pwb-builder .pwb-w-image-empty {
  padding: 28px; text-align: center; color: #72767D; font-size: .85rem;
  border: 1px dashed #3a3f48;
}
.pwb-builder .pwb-w-field { padding: 2px 0; }
.pwb-builder .pwb-w-field-name {
  font-weight: 600; color: #EDEFF2; font-size: 0.82rem;
}
.pwb-builder .pwb-w-field-value {
  color: #B9BBBE; font-size: 0.82rem; word-break: break-word;
}
.pwb-builder .pwb-w-cat-head { margin-bottom: 6px; color: #EDEFF2; font-size: .9rem; }
.pwb-builder .pwb-w-fieldgrid {
  display: grid; grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 4px 10px;
}
.pwb-builder .pwb-w-fieldgrid .pwb-w-field { grid-column: 1 / -1; }
.pwb-builder .pwb-w-fieldgrid .pwb-w-field.is-inline { grid-column: span 1; }

/* ── Palette popover ────────────────────────────────────── */
.pwb-palette-popover {
  position: absolute;
  z-index: 1000;
  background: #1B1E24;
  border: 1px solid #2c313a;
  border-radius: 10px;
  box-shadow: 0 10px 30px rgba(0,0,0,0.45);
  padding: 10px;
  width: 360px;
  max-width: calc(100vw - 16px);
}
.pwb-palette-popover[hidden] { display: none; }
.pwb-palette-popover .pwb-palette-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 6px;
}
.pwb-palette-popover .pwb-chip {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 10px; border-radius: 8px;
  background: #22262E; border: 1px solid #2c313a;
  cursor: pointer; user-select: none;
  color: inherit; text-align: left; font: inherit;
}
.pwb-palette-popover .pwb-chip:hover { border-color: #E8638B; background: #2B2F38; }
.pwb-palette-popover .pwb-chip-emoji { font-size: 18px; line-height: 1; }
.pwb-palette-popover .pwb-chip .muted { font-size: .72rem; }

/* On narrow viewports give the embed card the full row so it never
   forces horizontal scroll. The popover stays absolutely positioned. */
@media (max-width: 720px) {
  .pwb-builder .pwb-stage { grid-template-columns: minmax(0, 1fr); }
  .pwb-builder .pwb-stage-thumb-slot { width: 100%; height: 120px; }
  .pwb-palette-popover .pwb-palette-grid { grid-template-columns: 1fr; }
}

/* Empty-state used on the servers chooser when the user has admin in
   no guilds the bot is in. Centred, dimmed icon + line of muted text. */
.empty-state {
  text-align: center; padding: 28px 12px; color: #9aa0aa;
}
.empty-state .icon {
  font-size: 2.6rem; line-height: 1; margin-bottom: 10px; opacity: .8;
}
.empty-state p { font-size: .95rem; }

/* Documentation tables — used on /docs/permissions and friends.
   Matches the rest of the dashboard's table treatment. */
.doc-table {
  width: 100%; border-collapse: collapse; margin: 12px 0;
  font-size: .9rem;
}
.doc-table th, .doc-table td {
  padding: 8px 10px; text-align: left; vertical-align: top;
  border-bottom: 1px solid #2c313a;
}
.doc-table th {
  font-weight: 600; color: #EDEFF2; background: #1B1E24;
}
.doc-table tr:last-child td { border-bottom: none; }

/* ───────────────────────────────────────────────────────────────────
 * Page-wide save bar. Mirrors the .mf-savebar pattern that already
 * ships on the Member Flow / Verification builders — sticky to the
 * bottom of the page, persistently visible, turns yellow when any
 * tracked form goes dirty. JS in dashboard.js (data-dash-savebar)
 * tracks dirty state and dispatches submit on each dirty form when
 * Save is clicked.
 * ───────────────────────────────────────────────────────────────────*/
.dash-savebar {
  position: sticky;
  bottom: 16px;
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 12px;
  justify-content: flex-end;
  background: #1B1E24;
  border: 1px solid #2c313a;
  border-radius: 14px;
  padding: 10px 14px;
  margin-top: 16px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
  transition: border-color .15s;
}
.dash-savebar.is-dirty { border-color: #F6C453; }
.dash-savebar:not(.is-dirty) .dash-savebar-msg { display: none; }
.dash-savebar-msg {
  margin-right: auto;
  color: #F6C453;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.dash-savebar-dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: #F6C453;
}
.dash-savebar [data-dash-savebar-save]:disabled,
.dash-savebar [data-dash-savebar-reset]:disabled { opacity: 0.45; cursor: not-allowed; }

/* Hide the per-form Save buttons that used to live inside every
   data-typed-form. The global savebar takes over save responsibility.
   Cancel / delete / "+ New X" / Post / etc. buttons (type="button"
   or a <a class="btn">) stay visible. */
form[data-typed-form] button[type="submit"] { display: none !important; }
/* If a .form-actions wrapper now has no visible content, drop its
   margin so it doesn't leave a 12px gap. */
form[data-typed-form] .form-actions:not(:has(button[type="button"])):not(:has(a)):not(:has(input)) {
  display: none;
}

/* ───────────────────────────────────────────────────────────────────
 * Unified accordion look. Existing templates use <details
 * class="bj-accordion"> + <summary class="bj-accordion-summary">
 * with no CSS, which renders as a raw native disclosure triangle.
 * Style them to match the clean .rolemenu-item card already shipping
 * on feature_roles.html.
 * ───────────────────────────────────────────────────────────────────*/
.bj-accordion {
  border: 1px solid #2c313a;
  border-radius: 8px;
  background: #1d2128;
  margin-top: 10px;
}
.bj-accordion + .bj-accordion { margin-top: 10px; }
.bj-accordion-summary {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  cursor: pointer;
  user-select: none;
  list-style: none;
  font-weight: 600;
}
.bj-accordion-summary::-webkit-details-marker { display: none; }
.bj-accordion-summary::before {
  content: "▸";
  display: inline-block;
  color: #9aa0aa;
  font-size: 0.9rem;
  transition: transform .12s ease;
  flex-shrink: 0;
}
.bj-accordion[open] > .bj-accordion-summary::before { transform: rotate(90deg); }
.bj-accordion-body {
  padding: 14px;
  border-top: 1px solid #2c313a;
}

/* ── Subscription badge + banner (rendered when subscription_notice is
   non-ok). Keep the look subdued — info uses the brand accent at low
   alpha, warning uses a calmer amber so the banner doesn't compete with
   actual error states elsewhere on the page. */
.server-nav-badge {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1;
  flex-shrink: 0;
}
.server-nav-badge-warning { background: #b45309; color: #fff7e6; }
.server-nav-badge-info    { background: rgba(232, 99, 139, 0.22); color: #f1a8c0; }

.sub-banner {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 12px 14px;
  margin-bottom: 18px;
  border-radius: 10px;
  border: 1px solid #2c313a;
  background: #1B1E24;
}
.sub-banner-warning {
  border-color: #b45309;
  background: linear-gradient(0deg, rgba(180,83,9,0.08), rgba(180,83,9,0.08)), #1B1E24;
}
.sub-banner-info {
  border-color: rgba(232, 99, 139, 0.32);
  background: linear-gradient(0deg, rgba(232,99,139,0.06), rgba(232,99,139,0.06)), #1B1E24;
}
.sub-banner-icon {
  font-size: 1.2rem;
  line-height: 1.4;
  flex-shrink: 0;
}
.sub-banner-body { flex: 1; }
.sub-banner-msg { font-weight: 600; }
.sub-banner-actions {
  margin-top: 6px;
  display: flex;
  flex-wrap: wrap;
  gap: 10px 16px;
  font-size: 0.88rem;
}
.sub-banner-link { color: #E8638B; }
.sub-banner-link:hover { text-decoration: underline; }
.sub-banner-link-muted { color: #9aa0aa; }

/* Entity reference - role/user/channel rendered as name above the
   raw snowflake. Use via the entity_ref Jinja macro in _macros.html. */
.entity-ref {
  display: flex;
  flex-direction: column;
  gap: 2px;
  line-height: 1.2;
}
.entity-ref-name { font-weight: 600; font-size: 0.95rem; }
.entity-ref-id {
  font-size: 0.72rem;
  color: #9aa0aa;
  background: transparent;
  padding: 0;
  word-break: break-all;
}

/* ── Add-bot server card ───────────────────────────────────────────── */
.server-card--add{position:relative;opacity:.7;border-style:dashed}
.server-card--add:hover{opacity:1;border-color:#3FCB76;border-style:solid}
.server-card__overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;border-radius:14px;background:rgba(20,22,26,.55);opacity:0;transition:opacity .15s}
.server-card--add:hover .server-card__overlay{opacity:1}
.server-card__add-label{background:#3FCB76;color:#14161A;font-weight:700;font-size:.85rem;padding:6px 14px;border-radius:999px}
