.fm{margin:var(--sp-6) 0;max-width:46rem}.fm-tabs{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-4);flex-wrap:wrap}.fm-tab{font-weight:var(--fw-bold);font-size:var(--fs-small);padding:var(--sp-2) var(--sp-4);border:1px solid var(--hairline);border-radius:var(--r-pill);background:var(--surface);color:var(--ink-muted);cursor:pointer;min-height:var(--tap)}.fm-tab.is-active{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}.fm-tab[disabled]{opacity:.55;cursor:not-allowed}.fm-soon{font-size:var(--fs-caption);font-weight:var(--fw-medium);opacity:.8}.fm-err{color:var(--danger);background:var(--danger-tint);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-4)}.fm-drop{display:grid;place-content:center;text-align:center;gap:var(--sp-2);min-height:12rem;padding:var(--sp-8);border:2px dashed var(--hairline);border-radius:var(--r-lg);background:var(--surface-2);cursor:pointer;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.fm-drop:hover,.fm-drop.is-drag{border-color:var(--accent);background:var(--accent-tint)}.fm-drop-title{font-size:var(--fs-h3);font-weight:var(--fw-bold);color:var(--ink)}.fm-drop-sub{color:var(--ink-muted);font-size:var(--fs-small)}.fm-panel{border:1px solid var(--hairline);border-radius:var(--r-lg);background:var(--surface);padding:var(--sp-6);display:grid;gap:var(--sp-6)}.fm-filerow{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-4)}.fm-filename{font-weight:var(--fw-bold);word-break:break-word}.fm-filemeta{color:var(--ink-muted);font-size:var(--fs-small);margin-top:var(--sp-1)}.fm-control{display:grid;gap:var(--sp-4)}.fm-label{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-4);font-weight:var(--fw-bold);flex-wrap:wrap}.fm-target{color:var(--accent-strong);font-weight:var(--fw-bold)}.fm-dim{color:var(--ink-muted);font-weight:var(--fw-normal)}.fm-range{width:100%;accent-color:var(--accent);min-height:var(--tap)}.fm-scale{display:flex;justify-content:space-between;color:var(--ink-muted);font-size:var(--fs-caption);margin-top:calc(var(--sp-2) * -1)}.fm-modes{display:inline-flex;gap:2px;padding:3px;background:var(--surface-2);border-radius:var(--r-pill);align-self:start}.fm-mode{font-weight:var(--fw-bold);font-size:var(--fs-small);padding:var(--sp-2) var(--sp-4);border:none;border-radius:var(--r-pill);background:transparent;color:var(--ink-muted);cursor:pointer;min-height:var(--tap)}.fm-mode.is-active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.fm-mode[disabled]{cursor:not-allowed}.fm-sizefields,.fm-qualityfields{display:grid;gap:var(--sp-3)}.fm-mbrow{display:flex;align-items:center;gap:var(--sp-2)}.fm-num{width:7rem;font-size:var(--fs-h3);font-weight:var(--fw-bold);text-align:right;padding:var(--sp-2) var(--sp-3);border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface);color:var(--ink);min-height:var(--tap)}.fm-num:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}.fm-unit{color:var(--ink-muted);font-weight:var(--fw-bold)}.fm-presets{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.fm-preset{font-size:var(--fs-small);font-weight:var(--fw-medium);padding:var(--sp-2) var(--sp-3);border:1px solid var(--hairline);border-radius:var(--r-pill);background:var(--surface);color:var(--ink-muted);cursor:pointer;min-height:var(--tap)}.fm-preset:hover:not([disabled]){border-color:var(--accent);color:var(--ink)}.fm-preset.is-active{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.fm-preset[disabled]{cursor:not-allowed;opacity:.6}.fm-hint{font-size:var(--fs-small);color:var(--ink-muted);min-height:1.4em}.fm-hint.is-ok{color:var(--save)}.fm-hint.is-warn{color:var(--warning)}.fm-check{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-small);color:var(--ink-muted);cursor:pointer}.fm-check input{width:1.05em;height:1.05em;accent-color:var(--accent);cursor:pointer}.fm-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--tap);padding:0 var(--sp-6);border-radius:var(--r-pill);font-weight:var(--fw-bold);font-size:var(--fs-body);cursor:pointer;text-decoration:none;border:1px solid transparent}.fm-btn--primary{background:var(--accent);color:var(--on-accent)}.fm-btn--primary:hover{background:var(--accent-press)}.fm-btn--primary[disabled]{opacity:.6;cursor:default}.fm-btn--ghost{background:transparent;color:var(--ink-muted);border-color:var(--hairline);padding:0 var(--sp-4)}.fm-progress{display:grid;gap:var(--sp-2)}.fm-phase{font-size:var(--fs-small);color:var(--ink-muted)}.fm-bar{height:10px;border-radius:var(--r-pill);background:var(--surface-2);overflow:hidden}.fm-bar>span{display:block;height:100%;background:var(--accent);border-radius:var(--r-pill);transition:width var(--dur) var(--ease)}.fm-bar[data-indeterminate=true]>span{width:40%!important;animation:fm-slide 1.1s ease-in-out infinite}@keyframes fm-slide{0%{transform:translate(-120%)}to{transform:translate(320%)}}@media(prefers-reduced-motion:reduce){.fm-bar[data-indeterminate=true]>span{animation:none;width:100%!important}}.fm-result{display:grid;gap:var(--sp-4)}.fm-receipt{display:flex;align-items:center;gap:var(--sp-4);flex-wrap:wrap;background:var(--surface-2);border-radius:var(--r-md);padding:var(--sp-4)}.fm-col{display:grid;gap:2px}.fm-k{font-size:var(--fs-caption);color:var(--ink-muted);text-transform:uppercase;letter-spacing:var(--tracking-caps)}.fm-v{font-size:var(--fs-h3);font-weight:var(--fw-bold)}.fm-arrow{color:var(--ink-muted);font-size:var(--fs-h3)}.fm-chip{margin-left:auto;font-weight:var(--fw-bold);color:var(--on-accent);background:var(--save);border-radius:var(--r-pill);padding:var(--sp-1) var(--sp-3)}.fm-chip--warn{color:var(--ink);background:var(--warning-tint)}.fm-note{color:var(--ink-muted);font-size:var(--fs-small)}.fm-result-actions{display:flex;gap:var(--sp-3);flex-wrap:wrap}.fm-metric{font-family:var(--metric);font-variant-numeric:tabular-nums}.fm-seal{margin-top:var(--sp-4);font-size:var(--fs-caption);color:var(--ink-muted);display:inline-flex;align-items:center;gap:var(--sp-2)}
