/* Shared timing and elevation are exported with the theme tokens. */
:where(.button,.icon-button,.inspect,.nav-item,.segmented button,.dock button,.theme-toggle button,.view-tabs button,.pagination button,.tabs button,.dropdown-panel button,.swatch,.chip,.avatar,.step span){transition:background-color var(--motion-fast) ease,color var(--motion-fast) ease,border-color var(--motion-fast) ease,box-shadow var(--motion-fast) ease,transform var(--motion-fast) var(--ease-out)}
:where(body,.sidebar,.topbar,.gallery-toolbar,.specimen,.specimen-footer,.mini-card,.input-shell,.field input,.field select,.field textarea,.search,.composer,.badge,.banner,.table td,.activity-symbol,.file-drop,.skeleton,.message){transition:background-color var(--motion-medium) ease,color var(--motion-fast) ease,border-color var(--motion-fast) ease,box-shadow var(--motion-medium) ease}
.specimen{box-shadow:var(--shadow-card)}
.specimen:focus-within{border-color:var(--purple-a3);box-shadow:var(--shadow-card-hover)}
@media(hover:hover){
.specimen:hover{box-shadow:var(--shadow-card-hover);border-color:var(--bg-a3)}
.button:not(.ghost):not(.danger):not(.accent):not(:disabled):hover,.icon-button:not(:disabled):hover{box-shadow:var(--shadow-control-hover);transform:translateY(-1px)}
.button.primary:hover{opacity:1;box-shadow:var(--shadow-primary)}
.mini-card:hover{box-shadow:var(--shadow-card-hover);border-color:var(--bg-a3)}
.swatch:hover{transform:translateY(-2px);box-shadow:var(--shadow-card-hover)}
.table tbody tr:hover td{background:var(--bg-a2)}
.avatar:hover{transform:translateY(-2px)}
.file-drop:hover{background:var(--bg-a1);border-color:var(--accent)}
.dock button:hover{color:#eaeaeb;transform:translateY(-1px)}
}
.button:active:not(:disabled),.icon-button:active:not(:disabled){transform:translateY(1px) scale(.975);box-shadow:var(--shadow-pressed)}
.button.ghost:active,.button.accent:active,.button.danger:active{box-shadow:none}
.button .icon{transition:transform var(--motion-medium) var(--ease-out)}
.button:hover .icon-arrow:last-child:not(:first-child){transform:translateX(2px)}
.field input:focus,.field textarea:focus,.field select:focus,.input-shell:focus-within,.search:focus-within,.composer:focus-within{box-shadow:0 0 0 3px var(--purple-a1)}
.switch span{transition:background-color var(--motion-medium) ease}
.switch span:after{transition:transform var(--motion-medium) var(--ease-out),box-shadow var(--motion-fast) ease}
.switch input:active+span:after{box-shadow:0 0 0 3px var(--purple-a2)}
.choice input{transition:filter var(--motion-fast) ease,transform var(--motion-fast) var(--ease-out)}
.choice input:active:not(:disabled){transform:scale(.92)}
.tooltip{transition:opacity var(--motion-fast) ease,translate var(--motion-fast) var(--ease-out);translate:0 3px}
.tooltip-wrap:hover .tooltip,.tooltip-wrap:focus-within .tooltip{translate:0 0;transition-delay:160ms}
summary>.icon-chevron,summary>.icon-down{transition:transform var(--motion-medium) var(--ease-out)}
details[data-motion-target=closed]>summary>.icon-chevron,details[data-motion-target=closed]>summary>.icon-down{transform:rotate(0)}
dialog::backdrop{animation:backdrop-enter var(--motion-medium) ease}
dialog.is-closing::backdrop{animation:backdrop-exit 140ms ease forwards}
@keyframes backdrop-enter{from{opacity:0}to{opacity:1}}
@keyframes backdrop-exit{to{opacity:0}}
.has-indicator{position:relative;isolation:isolate}
.selection-indicator{position:absolute;pointer-events:none;z-index:-1;border-radius:inherit;background:var(--surface);box-shadow:var(--shadow-soft);transform-origin:0 0}
.has-indicator>button.active{background:transparent;box-shadow:none}
.segmented.has-indicator .selection-indicator,.theme-toggle.has-indicator .selection-indicator{border-radius:30px}
.view-tabs.has-indicator .selection-indicator{border-radius:8px;background:var(--subtle);box-shadow:none}
.dock.has-indicator .selection-indicator{background:#333447;border-radius:50%;box-shadow:inset 0 1px 0 #ffffff09}
.tabs.has-indicator .selection-indicator{background:transparent;box-shadow:none;border-bottom:2px solid var(--accent);border-radius:0}
.tabs.has-indicator>button.active:after{display:none}
.dock{box-shadow:0 2px 3px #0000000d,0 8px 20px #00000012,inset 0 1px 0 #ffffff0c;transition:box-shadow var(--motion-medium) ease}
.gallery-toolbar{position:sticky;top:0;z-index:4;background:var(--canvas);padding-top:12px;margin-top:-12px}
.gallery-toolbar.is-stuck{box-shadow:0 7px 12px -10px #18192535}
.motion-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}
.motion-actions .button{font-size:11px}
.session-card{width:100%;padding:6px;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-card)}
.session-heading{font-size:10px;color:var(--muted);padding:6px 7px 10px}
.session-card details{background:var(--subtle);border:0;border-radius:9px;margin-bottom:3px}
.session-card summary{padding:10px;font-size:12px;align-items:center}
.session-card summary>.icon:first-child{color:var(--fg-2)}
.session-card summary .amount{margin-left:auto;color:var(--success-text);font-size:11px}
.session-card details p{padding:0 11px 11px;font-size:10px}
.session-row{display:flex;align-items:center;gap:8px;padding:9px 10px;background:var(--subtle);border-radius:9px;font-size:11px}
.session-row .icon{width:15px;color:var(--fg-2)}
.session-row>span:last-child{margin-left:auto;color:var(--muted)}
.session-footer{display:flex;align-items:center;gap:6px;padding:11px 8px 5px;font-size:10px;color:var(--muted)}
.session-footer time{margin-left:auto}.session-footer .icon{width:13px;height:13px}
.body-toolbar{display:flex;align-items:center;gap:6px;width:100%;padding:7px;background:var(--surface);border:1px solid var(--border);border-radius:30px;box-shadow:var(--shadow-card)}
.body-toolbar .toolbar-count{font-size:10px;color:var(--muted);padding:0 6px;margin-right:auto}
.body-toolbar .icon-button{width:29px;height:29px;border:0;box-shadow:none;background:var(--subtle)}
.body-toolbar .button{min-height:29px;font-size:10px;padding:5px 10px}
.body-toolbar .toolbar-separator{width:1px;height:16px;background:var(--border);margin:0 3px}
.toolbar-example{width:100%;padding:12px;background:var(--background-subtle);border-radius:13px;display:grid;gap:12px}
.toolbar-example .choice{font-size:11px}
.expanded-dock{width:100%;max-width:290px;padding:7px;background:#14141f;border-radius:24px;color:#eaeaeb;box-shadow:0 4px 14px #00000018}
.expanded-dock .dock{justify-content:center;box-shadow:none}
.dock-content{overflow:hidden;display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows var(--motion-panel) var(--ease-out),opacity var(--motion-medium) ease}
.expanded-dock.is-expanded .dock-content{grid-template-rows:1fr;opacity:1}
.dock-content>div{min-height:0;overflow:hidden}
.dock-summary{display:flex;align-items:center;gap:8px;margin:6px 7px;font-size:11px;padding:7px 5px}
.dock-summary>span:first-child{width:63px;color:#bbbcc3}.dock-summary .dock-bar{background:#2b2c3b;padding:7px 11px;border-radius:9px;flex:1}.dock-summary small{color:#9192a1}
.dock-bar .icon{width:13px;height:13px}
@media(max-width:980px){.intro{flex-wrap:wrap}.motion-actions{margin-top:0}}
@media(max-width:720px){.motion-actions{margin-top:20px}.gallery-toolbar{top:0}.gallery-toolbar.is-stuck{padding-bottom:12px}.motion-actions .button{font-size:11px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.button:hover,.icon-button:hover,.swatch:hover,.avatar:hover,.dock button:hover{transform:none!important}}
.session-card details summary>.icon:first-child{transform:none}
@media(hover:hover){.button.ghost:hover{background:var(--bg-a1)}}
