.fm-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;font-family:var(--font-label);font-weight:700;text-transform:uppercase;letter-spacing:var(--ls-label);border:var(--border-w-heavy) solid transparent;border-radius:var(--radius-1);cursor:pointer;transition:background var(--dur-fast) var(--ease-punch),color var(--dur-fast),border-color var(--dur-fast),transform var(--dur-fast) var(--ease-punch),box-shadow var(--dur-base);white-space:nowrap;text-decoration:none;line-height:1}
.fm-btn:active{transform:translateY(1px) scale(.98)}
.fm-btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}
.fm-btn[disabled]{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}
.fm-btn--sm{height:34px;padding:0 14px;font-size:var(--fs-label-s)}
.fm-btn--md{height:46px;padding:0 22px;font-size:var(--fs-label)}
.fm-btn--lg{height:58px;padding:0 30px;font-size:var(--fs-label-l)}
.fm-btn--primary{background:var(--accent);color:var(--fm-white)}
.fm-btn--primary:hover:not([disabled]){background:var(--accent-hover);box-shadow:var(--glow-red)}
.fm-btn--primary:active:not([disabled]){background:var(--accent-press)}
.fm-btn--secondary{background:transparent;color:var(--text-strong);border-color:var(--border-strong)}
.fm-btn--secondary:hover:not([disabled]){background:var(--fm-bone);color:var(--fm-black)}
.fm-btn--ghost{background:transparent;color:var(--text-strong)}
.fm-btn--ghost:hover:not([disabled]){color:var(--accent-hover)}
.fm-btn--inverse{background:var(--fm-bone);color:var(--fm-black)}
.fm-btn--inverse:hover:not([disabled]){background:var(--fm-white);box-shadow:var(--shadow-stamp)}
.fm-btn--block{width:100%}
.fm-iconbtn{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-1);border:var(--border-w-heavy) solid transparent;cursor:pointer;background:transparent;color:var(--text-strong);transition:background var(--dur-fast),color var(--dur-fast),border-color var(--dur-fast),transform var(--dur-fast)}
.fm-iconbtn:active{transform:scale(.94)}
.fm-iconbtn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.fm-iconbtn--sm{width:32px;height:32px}.fm-iconbtn--md{width:44px;height:44px}.fm-iconbtn--lg{width:56px;height:56px}
.fm-iconbtn--ghost:hover{color:var(--accent-hover)}
.fm-iconbtn--outline{border-color:var(--border-default)}
.fm-iconbtn--outline:hover{border-color:var(--fm-bone)}
.fm-iconbtn--solid{background:var(--accent);color:#fff}
.fm-iconbtn--solid:hover{background:var(--accent-hover);box-shadow:var(--glow-red)}
.fm-iconbtn--round{border-radius:50%}
.fm-icon{display:inline-block;flex:none;background-color:currentColor;-webkit-mask:var(--icon) center/contain no-repeat;mask:var(--icon) center/contain no-repeat}
.fm-tag{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-label);font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:var(--fs-label-s);height:30px;padding:0 12px;border:1px solid var(--border-default);color:var(--text-body);background:transparent;border-radius:var(--radius-pill);cursor:pointer;transition:all var(--dur-fast)}
.fm-tag:hover{border-color:var(--fm-bone);color:var(--text-strong)}
.fm-tag--active{background:var(--fm-bone);border-color:var(--fm-bone);color:var(--fm-black)}
.fm-tag--static{cursor:default}
.fm-badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-label);font-weight:800;text-transform:uppercase;letter-spacing:var(--ls-label);font-size:12px;line-height:1;padding:5px 8px;border-radius:var(--radius-1)}
.fm-badge--red{background:var(--accent);color:#fff}
.fm-badge--teal{background:var(--fm-teal-500);color:#fff}
.fm-badge--bone{background:var(--fm-bone);color:var(--fm-black)}
.fm-badge--outline{border:1px solid var(--border-default);color:var(--text-body)}
.fm-badge--stamp{border:2px solid var(--accent);color:var(--accent);transform:rotate(-4deg);padding:6px 10px;font-size:14px}
.fm-badge__dot{width:7px;height:7px;border-radius:50%;background:currentColor}
.fm-field{display:flex;flex-direction:column;gap:8px;min-width:0}
.fm-field__label{font-family:var(--font-label);font-weight:700;font-size:var(--fs-label-s);text-transform:uppercase;letter-spacing:var(--ls-label);color:var(--text-muted)}
.fm-field__hint{font-family:var(--font-body);font-size:13px;color:var(--text-muted)}
.fm-field__hint--error{color:var(--fm-red-300)}
.fm-input{width:100%;box-sizing:border-box;height:48px;padding:0 14px;background:var(--surface-input);color:var(--text-strong);border:1px solid var(--border-default);border-bottom:2px solid var(--fm-grey-400);border-radius:var(--radius-1);font-family:var(--font-body);font-size:var(--fs-body);transition:border-color var(--dur-fast),background var(--dur-fast);outline:none}
.fm-input::placeholder{color:var(--fm-ink-500)}
.fm-input:hover{border-color:var(--fm-ink-500)}
.fm-input:focus{border-color:var(--fm-ink-500);border-bottom-color:var(--accent);background:var(--fm-ink-700)}
.fm-input--error{border-bottom-color:var(--accent)}
.fm-input:disabled{opacity:.45;cursor:not-allowed}
textarea.fm-input{height:auto;min-height:112px;padding:12px 14px;resize:vertical;line-height:var(--lh-body)}
select.fm-input{appearance:none;-webkit-appearance:none;padding-right:40px;cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,var(--fm-bone) 50%),linear-gradient(135deg,var(--fm-bone) 50%,transparent 50%);background-position:calc(100% - 20px) 21px,calc(100% - 15px) 21px;background-size:5px 5px;background-repeat:no-repeat}
.fm-check{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-family:var(--font-body);font-size:var(--fs-body);color:var(--text-body);user-select:none}
.fm-check input{position:absolute;opacity:0;pointer-events:none}
.fm-check__box{width:20px;height:20px;flex:none;border:2px solid var(--fm-grey-400);border-radius:var(--radius-1);display:grid;place-items:center;transition:all var(--dur-fast)}
.fm-check--radio .fm-check__box{border-radius:50%}
.fm-check:hover .fm-check__box{border-color:var(--fm-bone)}
.fm-check input:checked + .fm-check__box{background:var(--accent);border-color:var(--accent)}
.fm-check input:checked + .fm-check__box::after{content:"";width:6px;height:11px;border:solid #fff;border-width:0 2.5px 2.5px 0;transform:translateY(-1px) rotate(45deg)}
.fm-check--radio input:checked + .fm-check__box{background:transparent}
.fm-check--radio input:checked + .fm-check__box::after{width:10px;height:10px;border:0;border-radius:50%;background:var(--accent);transform:none}
.fm-check input:focus-visible + .fm-check__box{outline:2px solid var(--focus-ring);outline-offset:2px}
.fm-check--disabled{opacity:.45;cursor:not-allowed}
.fm-switch{display:inline-flex;align-items:center;gap:12px;cursor:pointer;font-family:var(--font-body);color:var(--text-body)}
.fm-switch input{position:absolute;opacity:0}
.fm-switch__track{width:44px;height:24px;border-radius:12px;background:var(--fm-ink-600);position:relative;transition:background var(--dur-base)}
.fm-switch__track::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--fm-bone);transition:transform var(--dur-base) var(--ease-punch)}
.fm-switch input:checked + .fm-switch__track{background:var(--accent)}
.fm-switch input:checked + .fm-switch__track::after{transform:translateX(20px)}
.fm-tabs{display:flex;gap:28px;border-bottom:1px solid var(--border-subtle)}
.fm-tab{background:none;border:0;padding:0 0 12px;margin-bottom:-1px;cursor:pointer;font-family:var(--font-label);font-weight:700;font-size:var(--fs-label-l);text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);border-bottom:3px solid transparent;transition:color var(--dur-fast),border-color var(--dur-fast)}
.fm-tab:hover{color:var(--text-strong)}
.fm-tab--active{color:var(--text-strong);border-bottom-color:var(--accent)}
.fm-card{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-1);overflow:hidden;color:var(--text-body)}
.fm-card--interactive{transition:transform var(--dur-base) var(--ease-punch),border-color var(--dur-base),box-shadow var(--dur-base);cursor:pointer}
.fm-card--interactive:hover{transform:translateY(-3px);border-color:var(--fm-ink-500);box-shadow:var(--shadow-card)}
.fm-member{position:relative;aspect-ratio:1090/663;overflow:hidden;background:var(--fm-black);cursor:pointer;border-radius:var(--radius-1)}
.fm-member img{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--dur-slow) var(--ease-out),filter var(--dur-slow)}
.fm-member:hover img{transform:scale(1.04)}
.fm-member__scrim{position:absolute;inset:0;background:var(--scrim-bottom)}
.fm-member__meta{position:absolute;left:20px;right:20px;bottom:16px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.fm-gig{display:grid;grid-template-columns:88px minmax(0,1fr) auto;align-items:center;gap:24px;padding:20px 0;border-bottom:1px solid var(--border-subtle)}
.fm-gig:hover .fm-gig__venue{color:var(--accent-hover)}
.fm-song{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:16px;padding:12px 8px;border-bottom:1px solid var(--border-subtle);transition:background var(--dur-fast)}
.fm-song:hover{background:var(--fm-ink-900)}
.fm-dialog-backdrop{position:fixed;inset:0;background:var(--surface-overlay);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:grid;place-items:center;z-index:100;padding:24px}
.fm-dialog{width:100%;max-width:520px;background:var(--surface-raised);border:1px solid var(--border-default);border-top:4px solid var(--accent);border-radius:var(--radius-1);box-shadow:var(--shadow-raised);padding:32px;color:var(--text-body);position:relative}
.fm-toast{display:flex;align-items:center;gap:14px;background:var(--fm-bone);color:var(--fm-black);padding:14px 18px;border-radius:var(--radius-1);box-shadow:var(--shadow-raised);font-family:var(--font-body);font-size:15px;font-weight:500;border-left:0;max-width:420px}
.fm-toast--error{background:var(--accent);color:#fff}
.fm-tip{position:relative;display:inline-flex}
.fm-tip__bubble{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(4px);background:var(--fm-bone);color:var(--fm-black);font-family:var(--font-label);font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;padding:6px 9px;border-radius:var(--radius-1);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--dur-fast),transform var(--dur-fast)}
.fm-tip:hover .fm-tip__bubble,.fm-tip:focus-within .fm-tip__bubble,.fm-tip--open .fm-tip__bubble{opacity:1;transform:translateX(-50%) translateY(0)}
a{color:var(--text-strong);text-decoration-color:var(--accent);text-underline-offset:3px}
a:hover{color:var(--accent-hover)}
