/* wx-page-effects: soft-shadow, subtle-border, hover-feedback, easing-curve,
   stagger-animation and native component states. Business actions stay native. */
.admin-shell{--admin-motion:180ms;--admin-ease:cubic-bezier(.22,1,.36,1);--admin-panel-shadow:0 1px 2px #17284204,0 4px 16px #17284205;--admin-hover-shadow:0 2px 4px #17284206,0 10px 28px #1728420c}
.admin-shell .sidebar{border-right:1px solid var(--border);background:var(--surface)}
.admin-shell .admin-top{background:var(--surface);border-bottom:1px solid var(--border)}
.admin-shell .admin-main{max-width:1660px;margin-inline:auto;width:100%;box-sizing:border-box}
.admin-shell .admin-head{gap:16px;align-items:center}
.admin-shell .admin-head h1{letter-spacing:-.025em}
.admin-shell :is(.panel,.metric,.card){border:1px solid var(--border);box-shadow:var(--admin-panel-shadow);transition:border-color var(--admin-motion) var(--admin-ease),box-shadow var(--admin-motion) var(--admin-ease)}
.admin-shell .metric:hover{border-color:var(--accent);box-shadow:var(--admin-hover-shadow)}
.admin-shell .panel>header,.admin-shell .panel-head{border-bottom:1px solid var(--border)}
.admin-shell .nav-item,.admin-shell button,.admin-shell .btn{transition:background-color var(--admin-motion),border-color var(--admin-motion),box-shadow var(--admin-motion)}
.admin-shell :is(button,a,input,select,textarea):focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.admin-shell table tbody tr{transition:background-color var(--admin-motion)}
.admin-shell table tbody tr:hover{background:var(--surface2)}
.admin-shell .table-wrap{scrollbar-width:thin}
.admin-shell .metric strong{font-variant-numeric:tabular-nums}
.admin-shell .actions{row-gap:8px}
body[data-admin-effects] #modal{border:1px solid var(--border);box-shadow:0 20px 80px #0003;max-height:88dvh}
body[data-admin-effects] #modal[open]{animation:admin-dialog-in 150ms ease-out}
body[data-admin-effects] #modal::backdrop{background:#101b30a6}
body[data-admin-effects] #toast.show{box-shadow:0 6px 24px #0002}
.admin-shell .admin-head .eyebrow{font-size:13px;letter-spacing:.14em;margin-bottom:12px}
.admin-shell .admin-main> :is(.notice,nav,.metrics,.grid,.panel,.card,.advanced-upstream){animation:admin-surface-in 340ms var(--admin-ease) both}
.admin-shell .admin-main>:nth-child(3){animation-delay:35ms}
.admin-shell .admin-main>:nth-child(4){animation-delay:65ms}
.admin-shell .admin-main>:nth-child(5){animation-delay:95ms}
.admin-shell .admin-main>:nth-child(n+6){animation-delay:120ms}
.admin-shell .side-nav a{position:relative;transition:background-color var(--admin-motion),color var(--admin-motion),box-shadow var(--admin-motion)}
.admin-shell .side-nav a.selected{box-shadow:inset 3px 0 0 var(--accent)}
.admin-shell .side-nav a:focus-visible{background:var(--accent-soft)}
.admin-shell :is(button,.btn){transition:background-color var(--admin-motion),border-color var(--admin-motion),box-shadow var(--admin-motion),transform 120ms var(--admin-ease)}
.admin-shell :is(button,.btn):not(:disabled):active,body[data-admin-effects] #modal button:not(:disabled):active{transform:translateY(1px) scale(.985)}
.admin-shell :is(button,.btn):disabled{transform:none;box-shadow:none}
.admin-shell :is(.field input,.field select,.field textarea),body[data-admin-effects] #modal :is(input,select,textarea){transition:border-color var(--admin-motion),box-shadow var(--admin-motion),background-color var(--admin-motion)}
.admin-shell .field:focus-within>span,body[data-admin-effects] #modal .field:focus-within>span{color:var(--accent)}
.admin-shell .field :is(input,select,textarea):focus,body[data-admin-effects] #modal .field :is(input,select,textarea):focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.admin-shell .field :is(input,select,textarea)[aria-invalid=true],body[data-admin-effects] #modal [aria-invalid=true]{border-color:var(--bad)}
.admin-shell :is(.link-tile,.preview){border:1px solid var(--border)}
.admin-shell .link-tile{transition:background-color var(--admin-motion),border-color var(--admin-motion),box-shadow var(--admin-motion)}
.admin-shell .link-tile:focus-visible{background:var(--accent-soft)}
.admin-shell :is(.status-pill,.count-tag){font-variant-numeric:tabular-nums}
.admin-shell .panel-head h2{letter-spacing:-.02em}
.admin-shell .panel-head p{line-height:1.65}
.admin-shell th{letter-spacing:.015em}
.admin-shell .empty-symbol{border:1px solid var(--border);box-shadow:0 2px 8px #17284206}
.admin-shell :is(details>summary){border-radius:7px;transition:color var(--admin-motion),background-color var(--admin-motion)}
.admin-shell :is(details>summary):focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.admin-shell details[open]>summary{color:var(--ink)}
body[data-admin-effects] #modal{overscroll-behavior:contain}
body[data-admin-effects] #modal .dialog-head{background:var(--surface)}
body[data-admin-effects] #modal[open]{animation:admin-dialog-in 220ms cubic-bezier(.22,1,.36,1)}
body[data-admin-effects] #modal::backdrop{background:#101b308a;backdrop-filter:blur(4px)}
body[data-admin-effects] #toast.show{animation:admin-toast-in 220ms cubic-bezier(.22,1,.36,1)}
@media(hover:hover){.admin-shell :is(button,.btn):not(:disabled):hover{box-shadow:0 2px 8px #1728420d}.admin-shell :is(.panel,.card):hover{box-shadow:var(--admin-hover-shadow)}}
.test-model-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:8px;max-height:260px;overflow:auto;border:1px solid var(--border);border-radius:10px;padding:12px}
.test-model-list [hidden]{display:none}
.test-model-list .check{overflow-wrap:anywhere}
@keyframes admin-dialog-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@keyframes admin-surface-in{from{opacity:.55;transform:translateY(7px)}to{opacity:1;transform:none}}
@keyframes admin-toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:760px){.admin-shell .admin-head{align-items:flex-start}.admin-shell .admin-main{padding:16px}.admin-shell .admin-top .actions{flex-wrap:wrap;justify-content:flex-end}.admin-shell .panel{border-radius:12px}.admin-shell .admin-head h1{font-size:26px}}
@media(prefers-reduced-motion:reduce){.admin-shell *,.admin-shell *::before,.admin-shell *::after,body[data-admin-effects] #modal[open]{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Native administrator panels share the same wx component feedback, without
   changing their React ownership, form state, endpoints or table mechanics. */
body[data-admin-effects],html[data-station-admin-effects]{--admin-motion:180ms;--admin-ease:cubic-bezier(.22,1,.36,1)}
html[data-station-admin-effects] :is([data-slot=card],[data-slot=dialog-content],[data-slot=sheet-content]){border-width:1px;box-shadow:0 1px 3px #17284205,0 7px 24px #17284208}
html[data-station-admin-effects] :is([data-slot=card],button,a,input,select,textarea,[role=combobox]){transition:background-color 180ms cubic-bezier(.22,1,.36,1),border-color 180ms cubic-bezier(.22,1,.36,1),box-shadow 180ms cubic-bezier(.22,1,.36,1)}
html[data-station-admin-effects] :is(button,a,input,select,textarea,[role=combobox]):focus-visible{outline:2px solid var(--ring,#6490e8);outline-offset:3px}
html[data-station-admin-effects] :is(button,[data-slot=button]):not(:disabled):active{transform:translateY(1px)}
html[data-station-admin-effects] :is([data-slot=dialog-overlay],[data-slot=sheet-overlay]){backdrop-filter:blur(4px)}
html[data-station-admin-effects] [data-slot=card]{animation:admin-surface-in 300ms cubic-bezier(.22,1,.36,1) both}
html[data-station-admin-effects] table tbody tr{transition:background-color 180ms ease}
html[data-station-admin-effects] table tbody tr:hover{background:color-mix(in srgb,currentColor 3%,transparent)}
@media(prefers-reduced-motion:reduce){html[data-station-admin-effects] *,html[data-station-admin-effects] *::before,html[data-station-admin-effects] *::after,body[data-admin-effects] #toast.show{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
