/* Trident 3.3: finite, optional motion; no moving attendance targets. */
.motion-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;margin:0 0 14px;color:#526178}
.motion-toolbar label{display:inline-flex;align-items:center;gap:8px;font-size:13px;cursor:pointer;min-height:32px}
.motion-toolbar input{accent-color:var(--blue);width:18px;height:18px;margin:0}
.motion-toolbar .muted{font-size:12px}
button,summary,.pupil-photo,.metric,input,select,textarea,.badge{transition:background-color 180ms ease,border-color 180ms ease,box-shadow 180ms ease,color 180ms ease}
button{transition:background-color 180ms ease,border-color 180ms ease,box-shadow 180ms ease,color 180ms ease,transform 150ms ease}
button:active:not(:disabled){transform:scale(.97)}
nav button{position:relative}nav button::after{content:'';position:absolute;bottom:3px;left:12px;right:12px;height:2px;background:var(--gold);transform:scaleX(0);transition:transform 220ms ease}
nav button.active::after,nav button:hover::after{transform:scaleX(1)}
summary{border-radius:5px;padding:5px 0}summary:hover{color:#805900}summary::marker{color:#9a6b00}
input:focus,select:focus,textarea:focus{border-color:#9a6b00;box-shadow:0 0 0 2px #e8ad2626}
[data-motion-state]:not([data-motion-state=""]){display:flex;align-items:center;gap:8px}
#saveStatus[data-motion-state]{justify-content:center}
[data-motion-state]:not([data-motion-state=""])::before{content:'';display:inline-block;flex:0 0 auto;width:12px;height:12px;border-radius:50%;background:#a47a18}
[data-motion-state="busy"]::before{background:transparent;border:2px solid #d9e0e8;border-top-color:#9a6b00;animation:trident-spin 900ms linear infinite}
[data-motion-state="synced"]::before{content:'✓';background:#e5f4ec;color:#185e3b;width:20px;height:20px;font-size:14px;text-align:center;line-height:20px;animation:trident-confirm 260ms ease-out}
[data-motion-state="warning"]::before{background:#b74848}
.delete-dialog[open]{animation:trident-dialog 200ms ease-out}.delete-dialog[open]::backdrop{animation:trident-backdrop 180ms ease-out}
header[data-motion-loading="true"] .brand{animation:trident-emblem 1400ms ease-in-out infinite}
@supports (interpolate-size:allow-keywords) and (transition-behavior:allow-discrete){
 details{interpolate-size:allow-keywords}
 details::details-content{block-size:0;overflow:clip;transition:block-size 200ms ease,content-visibility 200ms allow-discrete}
 details[open]::details-content{block-size:auto}
}
@media(hover:hover) and (pointer:fine){
 button:hover:not(:disabled):not([data-mark]){transform:translateY(-1px);box-shadow:0 3px 8px #112a4a12}
 .pupil-photo:hover{box-shadow:0 0 0 3px #e8ad2638;border-color:#9a6b00}
 .metric:hover{background:#eaf0f6;box-shadow:0 4px 14px #112a4a0d}
 header .brand:hover{animation:trident-emblem 550ms ease-in-out}
}
@keyframes trident-spin{to{transform:rotate(360deg)}}
@keyframes trident-confirm{from{transform:scale(.7);opacity:.5}to{transform:scale(1);opacity:1}}
@keyframes trident-dialog{from{opacity:.5;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}
@keyframes trident-backdrop{from{opacity:0}to{opacity:1}}
@keyframes trident-emblem{50%{transform:translateY(-2px);filter:drop-shadow(0 3px 3px #e8ad2640)}}
/* The explicit preference and the device setting both suppress motion. */
html[data-motion="reduced"] *,html[data-motion="reduced"] *::before,html[data-motion="reduced"] *::after,html[data-motion="reduced"] *::backdrop{animation:none!important;transition:none!important;scroll-behavior:auto!important}
html[data-motion="reduced"] button{transform:none!important}
@media(prefers-reduced-motion:reduce){*,*::before,*::after,*::backdrop{animation:none!important;transition:none!important;scroll-behavior:auto!important}button{transform:none!important}}
@media(max-width:600px){.motion-toolbar{justify-content:flex-start;gap:4px 12px}}
@media print{.motion-toolbar{display:none}*,*::before,*::after,*::backdrop{animation:none!important;transition:none!important;transform:none!important}[data-motion-state]::before{display:none!important}}
