@media screen {
    #fildi-app .content.vf-has-dock { padding-bottom: calc(var(--vf-clearance, 90px) + 32px); }
    #fildi-app .vf-floating {
        position: fixed; z-index: 90; left: 252px; width: calc(100% - 264px);
        bottom: calc(16px + var(--vf-keyboard, 0px) + env(safe-area-inset-bottom, 0px));
        pointer-events: none; font-family: var(--fildi-font); color: var(--fildi-ink);
        letter-spacing: 0;
    }
    #fildi-app .vf-floating * { box-sizing: border-box; }
    #fildi-app .vf-floating svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; flex: none; }
    #fildi-app .vf-panel {
        pointer-events: auto; max-width: 680px; margin: 0 auto; background: #ffffff;
        border: 1px solid #e1e5e9; border-radius: 8px;
        box-shadow: 0 4px 16px #20232712;
        animation: vf-panel-enter 220ms ease-out;
    }
    #fildi-app .vf-panel-head { display: flex; align-items: center; gap: 8px; padding: 4px 8px 2px 12px; flex-wrap: wrap; }
    #fildi-app .vf-panel-head strong { font-size: 13px; font-weight: 500; white-space: nowrap; }
    #fildi-app .vf-status { margin-left: auto; font-size: 11px; color: var(--fildi-muted); overflow-wrap: anywhere; max-width: 190px; }
    #fildi-app .vf-cost { font-size: 11px; color: var(--fildi-muted); font-variant-numeric: tabular-nums; }
    #fildi-app .vf-floating button { font-family: inherit; letter-spacing: 0; }
    #fildi-app .vf-floating .vf-icon {
        width: 36px; height: 36px; padding: 0; display: inline-flex; align-items: center; justify-content: center;
        border: 0; border-radius: 4px; background: transparent; color: var(--fildi-muted); cursor: pointer; flex: none;
    }
    #fildi-app .vf-floating .vf-icon:hover:not(:disabled) { background: var(--fildi-soft); color: var(--fildi-ink); }
    #fildi-app .vf-floating .vf-icon:disabled { opacity: .5; cursor: default; }
    #fildi-app .vf-floating .vf-icon svg { width: 15px; height: 15px; }
    #fildi-app .vf-wave { width: 26px; height: 25px; display: flex; gap: 3px; align-items: center; justify-content: center; flex: none; }
    #fildi-app .vf-wave b { width: 3px; height: 7px; border-radius: 2px; background: var(--fildi-success); transform-origin: center; }
    #fildi-app .vf-wave b:nth-child(2), #fildi-app .vf-wave b:nth-child(4) { height: 13px; }
    #fildi-app .vf-wave b:nth-child(3) { height: 20px; }
    #fildi-app .vf-speaking .vf-wave b { animation: vf-speaking 550ms ease-in-out infinite alternate; }
    #fildi-app .vf-speaking .vf-wave b:nth-child(2) { animation-delay: 90ms; }
    #fildi-app .vf-speaking .vf-wave b:nth-child(3) { animation-delay: 180ms; }
    #fildi-app .vf-speaking .vf-wave b:nth-child(4) { animation-delay: 60ms; }
    #fildi-app .vf-speaking .vf-wave b:nth-child(5) { animation-delay: 130ms; }
    #fildi-app .vf-caption { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 8px; padding: 2px 12px 10px; }
    #fildi-app .vf-caption-label { font-size: 10px; color: var(--fildi-muted); padding-top: 4px; }
    #fildi-app .vf-caption-text { height: 42px; overflow-y: auto; white-space: pre-wrap; overflow-wrap: anywhere; font-size: 13px; line-height: 21px; scrollbar-width: thin; }
    #fildi-app .vf-error { font-size: 12px; color: var(--fildi-danger); overflow-wrap: anywhere; }
    #fildi-app .vf-panel > .vf-error { padding: 0 18px 12px; }
    #fildi-app .vf-launcher { pointer-events: auto; width: fit-content; max-width: 100%; margin-left: auto; display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; padding: 2px 10px; background: transparent; border-radius: 6px; box-shadow: none; }
    #fildi-app .vf-launcher > .vf-error { flex-basis: 100%; max-width: 340px; }
    #fildi-app .vf-launch { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; border: 0; padding: 6px 0; color: var(--fildi-ink); background: transparent; font-size: 13px; font-weight: 500; cursor: pointer; flex-wrap: wrap; }
    #fildi-app .vf-launch:hover { font-weight: 700; }
    #fildi-app .vf-mini-status { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 400; color: var(--fildi-muted); max-width: 180px; }
    #fildi-app .vf-mini-status b { width: 5px; height: 5px; border-radius: 50%; background: var(--fildi-success); flex: none; }
    @keyframes vf-panel-enter { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
    @keyframes vf-speaking { from { transform: scaleY(.35); } to { transform: scaleY(1.12); } }
    @media (max-width: 1024px) {
        #fildi-app .vf-floating { left: 12px; width: calc(100% - 24px); }
    }
    @media (max-width: 580px) {
        #fildi-app .vf-panel-head { gap: 7px; padding-left: 12px; }
        #fildi-app .vf-status { order: 5; flex-basis: 100%; margin-left: 33px; max-width: none; }
        #fildi-app .vf-panel-head > .vf-icon:first-of-type { margin-left: auto; }
        #fildi-app .vf-floating .vf-icon { width: 44px; height: 44px; }
        #fildi-app .vf-caption { gap: 8px; padding: 2px 12px 10px; }
        #fildi-app .vf-mini-status { max-width: 140px; }
    }
    @media (prefers-reduced-motion: reduce) {
        #fildi-app .vf-panel, #fildi-app .vf-speaking .vf-wave b { animation: none; }
    }
}
@media print { .vf-floating { display: none; } }
