/* Shared, quiet feedback for the connected application. */
.profile-popover,.studio-profile-menu{width:260px!important;max-width:calc(100vw - 32px);padding:14px!important;border:1px solid var(--line);border-radius:5px;background:var(--panel);color:var(--ink);z-index:100}
.profile-popover a,.studio-profile-menu a,.profile-popover form button,.studio-profile-menu form button{display:flex!important;align-items:center;width:100%;min-height:40px;padding:10px 12px!important;border:0!important;border-radius:3px;background:transparent!important;color:var(--ink)!important;font:400 13px/1.5 Inter,"Noto Sans SC",sans-serif!important;text-align:left;box-sizing:border-box}
.profile-popover a:hover,.studio-profile-menu a:hover,.profile-popover form button:hover,.studio-profile-menu form button:hover{background:var(--field)!important}
.profile-popover form,.studio-profile-menu form{border-top:1px solid var(--line);padding-top:8px;margin:8px 0 0}
.profile-popover form button,.studio-profile-menu form button{color:var(--muted)!important}
.menu-identity{display:grid;gap:6px;border-bottom:1px solid var(--line);margin-bottom:7px;padding:8px 12px 14px!important;overflow-wrap:anywhere;font-size:13px}.menu-identity small{font-size:11px;color:var(--muted)}
.account-list .account-item{padding:22px}.account-list .account-controls{gap:12px;margin-top:16px;padding-top:16px}.account-list .account-maintenance{margin-top:12px}.account-list .product-actions{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.directory-actions{display:flex;gap:8px;flex-wrap:wrap}.directory-actions button{font-size:12px;padding:8px 12px;min-height:38px;border:1px solid var(--line);border-radius:3px;background:var(--field)}.directory-status{font-size:11px;color:var(--muted);line-height:1.7}.directory-controls{padding:12px 0;border-bottom:1px solid var(--line)}
dialog{max-height:calc(100dvh - 32px);overflow:auto}
dialog[open]{animation:dialog-reveal .16s ease-out}
dialog::backdrop{background:#0009}
button[aria-busy=true]{cursor:wait;opacity:.7}
@keyframes dialog-reveal{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.scan-qr-shell[data-loading=true]{min-height:280px;background:var(--panel);border:1px solid var(--line)}
.scan-qr-shell[data-loading=true]::before,.scan-qr-shell[data-loading=true]::after{content:none!important}
.scan-qr-shell[data-loading=true] .scan-qr{visibility:hidden;height:0}
.scan-qr-shell .scan-qr-loading{position:relative;inset:auto;width:100%;height:auto;min-height:280px;border-radius:0;background:none;pointer-events:auto;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;padding:28px;color:var(--ink);text-align:center}
.scan-loading-mark{width:28px;height:35px;color:var(--accent)}
.scan-loading-mark svg{width:100%;height:100%}
.scan-qr-loading .eyebrow{font-size:9px;letter-spacing:1.5px;margin:0}
.scan-qr-loading strong{font-size:17px;font-weight:500}
.scan-loading-copy{color:var(--muted);font-size:12px;line-height:1.8;max-width:380px}
.scan-loading-track{width:130px;height:2px;background:var(--line);overflow:hidden;margin-top:6px}
.scan-loading-track:after{content:'';display:block;width:38%;height:100%;background:var(--accent);animation:scan-track 1.6s ease-in-out infinite}
@keyframes scan-track{from{transform:translateX(-110%)}to{transform:translateX(370%)}}
.scan-dialog[data-frame-ready=false] .scan-input-row,.scan-dialog[data-frame-ready=false] .scan-browser-hint{display:none}
.scan-dialog-foot{gap:16px}.scan-dialog-actions{display:flex;gap:10px;flex-wrap:wrap}
.task-row .person>div{min-width:0}.task-row h3{overflow-wrap:anywhere}
@media(max-width:650px){button,.small-action{min-height:44px}.scan-dialog-actions button{min-height:44px}.scan-qr-shell[data-loading=true],.scan-qr-shell .scan-qr-loading{min-height:250px}.scan-qr-shell .scan-qr-loading{padding:22px 16px}.scan-dialog-foot{align-items:flex-start;flex-wrap:wrap}.task-row{grid-template-columns:minmax(0,1fr) auto!important;gap:10px 16px!important}.task-row .person{grid-column:1;grid-row:1}.task-row .task-time{grid-column:2;grid-row:1}.task-row .state{grid-column:1;grid-row:2}.task-row>div:last-child{grid-column:2;grid-row:2;justify-content:flex-end}.table-heading{display:none}.dialog-bottom{position:sticky;bottom:0;background:var(--panel);padding-bottom:10px}.dialog-top button{min-width:44px}}
/* Consistent motion language: quick state changes, no layout jumps. */
button:not(:disabled), a, summary { transition: color .16s ease, background-color .16s ease, border-color .16s ease, opacity .16s ease; }
button.is-loading { position: relative; pointer-events: none; }
button.is-loading::after { content: ''; width: 13px; height: 13px; margin-left: 8px; border: 1.5px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: dyfire-spin .7s linear infinite; }
[aria-busy="true"] { cursor: progress; }
dialog[open] { animation: dialog-reveal .18s ease-out both; }
dialog::backdrop { animation: backdrop-reveal .18s ease-out both; }
@keyframes backdrop-reveal { from { opacity: 0; } to { opacity: 1; } }
.ui-load-placeholder span { animation: placeholder-pulse 1.2s ease-in-out infinite alternate; }
.ui-load-placeholder span:nth-child(2) { animation-delay: .12s; }
.ui-load-placeholder span:nth-child(3) { animation-delay: .24s; }
@keyframes placeholder-pulse { from { opacity: .42; } to { opacity: .85; } }
@media(prefers-reduced-motion:reduce){dialog[open],dialog::backdrop,.scan-loading-track:after,.ui-load-placeholder span,button.is-loading::after{animation:none}.scan-loading-track:after{width:45%}}
