/* UX Polish v19 — task-first, touch-friendly, motion-safe finishing layer. */
:root{
  --ux-ease:cubic-bezier(.22,.61,.36,1);
  --ux-fast:140ms;
  --ux-normal:220ms;
  --ux-touch:44px;
  --ux-focus:0 0 0 3px rgba(39,166,199,.18);
}
html{scroll-behavior:smooth;scroll-padding-top:76px;scrollbar-gutter:stable}
body{overscroll-behavior-x:none;-webkit-tap-highlight-color:transparent}
button,a,input,select,textarea,summary{touch-action:manipulation}
button,.btn,[role="button"],summary,a.resource-item,.workspace-tabs a,.pa-side-nav a,.public-nav a{
  transition:background-color var(--ux-fast) var(--ux-ease),border-color var(--ux-fast) var(--ux-ease),box-shadow var(--ux-fast) var(--ux-ease),color var(--ux-fast) var(--ux-ease),transform var(--ux-fast) var(--ux-ease),opacity var(--ux-fast) var(--ux-ease);
}
button:active,.btn:active,[role="button"]:active,summary:active{transform:scale(.985)}
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:0!important;box-shadow:var(--ux-focus)!important}
.input,.select,.textarea,input[type="text"],input[type="search"],input[type="password"],input[type="number"],input[type="email"],input[type="tel"],input[type="datetime-local"]{transition:border-color var(--ux-fast) var(--ux-ease),box-shadow var(--ux-fast) var(--ux-ease),background-color var(--ux-fast) var(--ux-ease)}
.panel,.card,.kpi,.resource-item{transition:border-color var(--ux-normal) var(--ux-ease),box-shadow var(--ux-normal) var(--ux-ease),transform var(--ux-normal) var(--ux-ease)}
@media(hover:hover) and (pointer:fine){
  .resource-item:hover{border-color:#bfd2df;box-shadow:0 8px 22px rgba(11,47,74,.07)}
  .panel[data-clickable]:hover,.card:hover,.kpi-grid a.kpi:hover{transform:translateY(-2px)}
}

/* Clear task hierarchy in the admin sidebar. */
.pa-nav-groups{gap:6px!important}
.pa-nav-group>summary{font-weight:850!important}
.pa-nav-sub{position:relative!important;margin-left:11px!important;padding-left:8px!important;border-left:1px solid rgba(255,255,255,.12)!important}
.pa-nav-sub a.active{box-shadow:inset 3px 0 0 #f0bd35!important}
.pa-nav-utility{padding-top:8px!important;border-top:1px solid rgba(255,255,255,.12)!important}
.pa-admin-top{position:sticky!important;top:0!important;z-index:70!important;backdrop-filter:blur(16px)!important;background:rgba(255,255,255,.93)!important}

/* One activity = one workspace; step numbers remain readable on mobile. */
.workspace-tabs{display:flex!important;gap:6px!important;align-items:stretch!important;margin:0 0 14px!important;padding:5px!important;border:1px solid var(--line)!important;border-radius:14px!important;background:#eef4f7!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.8)!important}
.workspace-tabs a{display:inline-flex!important;align-items:center!important;gap:7px!important;min-height:42px!important;padding:7px 12px!important;border-radius:10px!important;color:#476174!important;font-weight:800!important;white-space:nowrap!important}
.workspace-tabs a:hover{background:#fff!important;color:var(--navy)!important}
.workspace-tabs a.active{background:#fff!important;color:var(--navy)!important;box-shadow:0 5px 14px rgba(11,47,74,.10)!important}
.workspace-step-no{display:grid;place-items:center;width:22px;height:22px;border-radius:999px;background:#dbe8ef;color:#36586d;font-size:.75rem;font-weight:900;flex:0 0 22px}
.workspace-tabs a.active .workspace-step-no{background:var(--navy);color:#fff}

/* Workflow cards for Test Maker and quick-start areas. */
.workflow-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 14px}
.workflow-step{display:flex;text-decoration:none;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--muted);font-weight:800}
.workflow-step strong{display:grid;place-items:center;width:28px;height:28px;border-radius:999px;background:#e8f2f7;color:var(--navy);flex:0 0 28px}
.workflow-step.active{border-color:#a7cbdc;background:#f5fbfe;color:var(--navy)}
.dashboard-quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.dashboard-quick{display:grid;gap:3px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fff;min-height:92px}
.dashboard-quick strong{font-size:.98rem}.dashboard-quick small{color:var(--muted)}
.dashboard-quick:hover{border-color:#b9d5e2;box-shadow:0 10px 24px rgba(11,47,74,.07)}

/* Dense controls become calmer and easier to hit. */
.form-actions{gap:8px!important}.form-actions>.btn,.form-actions>form>.btn{min-height:42px}
.action-menu>summary,.row-actions-menu>summary{min-width:42px!important;min-height:40px!important;padding-inline:10px!important}
.floating-action-panel{animation:ux-pop var(--ux-fast) var(--ux-ease)}
@keyframes ux-pop{from{opacity:0;transform:translateY(-4px) scale(.985)}to{opacity:1;transform:none}}
.table tbody tr{transition:background-color var(--ux-fast) var(--ux-ease)}
@media(hover:hover) and (pointer:fine){.table tbody tr:hover td{background:#fbfdfe}}

/* Student workspace. */
.student-workspace-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.student-workspace-id{display:flex;align-items:center;gap:10px;min-width:0}
.student-avatar{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:linear-gradient(135deg,#dff3f8,#eef8fb);color:var(--navy);font-weight:900;flex:0 0 44px}
.student-workspace-id>div{min-width:0}.student-workspace-id strong,.student-workspace-id small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-workspace-id small{color:var(--muted)}
.student-task-list{display:grid;gap:9px}
.student-task-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fff}
.student-task-card>div{min-width:0}.student-task-card strong{display:block}.student-task-card small{display:block;margin-top:3px;color:var(--muted)}
.student-empty{padding:24px 16px;text-align:center;border:1px dashed #b9cbd7;border-radius:14px;background:#fbfdfe;color:var(--muted)}

/* More comfortable scrolling surfaces. */
.table-wrap,.workspace-tabs,.worksheet-pages,.pa-command-results{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.table-wrap::-webkit-scrollbar,.workspace-tabs::-webkit-scrollbar,.worksheet-pages::-webkit-scrollbar{height:7px;width:7px}
.table-wrap::-webkit-scrollbar-thumb,.workspace-tabs::-webkit-scrollbar-thumb,.worksheet-pages::-webkit-scrollbar-thumb{background:#c5d5df;border-radius:999px}

/* Floating back-to-top is deliberately small and unobtrusive. */
.pa-scroll-top{position:fixed;right:max(14px,env(safe-area-inset-right));bottom:max(16px,calc(env(safe-area-inset-bottom) + 14px));z-index:95;width:44px;height:44px;border:1px solid rgba(255,255,255,.35);border-radius:14px;background:rgba(11,47,74,.92);color:#fff;box-shadow:0 10px 28px rgba(5,31,47,.22);display:grid;place-items:center;opacity:0;transform:translateY(8px);pointer-events:none;backdrop-filter:blur(10px)}
.pa-scroll-top.is-visible{opacity:1;transform:none;pointer-events:auto}

@media(max-width:1080px){
  .pa-admin-top{padding-top:max(8px,env(safe-area-inset-top))!important}
  .dashboard-quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  html{scroll-padding-top:62px}
  .workspace-tabs{overflow-x:auto!important;scroll-snap-type:x proximity;padding:4px!important}
  .workspace-tabs a{flex:0 0 auto!important;scroll-snap-align:start;padding:7px 10px!important}
  .workflow-steps{grid-template-columns:1fr!important}
  .dashboard-quick-grid{grid-template-columns:1fr 1fr}
  .student-workspace-head{align-items:flex-start;flex-direction:column}.student-workspace-head>.btn{width:100%}
  .student-task-card{grid-template-columns:1fr}.student-task-card>.btn{width:100%}
  .pa-scroll-top{right:10px;bottom:max(10px,calc(env(safe-area-inset-bottom) + 8px))}
}
@media(max-width:430px){
  .dashboard-quick-grid{grid-template-columns:1fr}
  .workspace-step-no{width:20px;height:20px;flex-basis:20px}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto!important}
  *,*::before,*::after{animation:none!important;transition:none!important}
}

/* Coarse-pointer ergonomics: comfortable Android/iOS hit targets without bloating desktop. */
@media(pointer:coarse){
  .btn,button,[role="button"],summary,.input,.select,input[type="text"],input[type="search"],input[type="password"],input[type="number"],input[type="email"],input[type="tel"]{min-height:var(--ux-touch)}
  .workspace-tabs a,.pa-side-nav a,.public-nav a{min-height:var(--ux-touch)!important}
  .check{min-height:var(--ux-touch);align-items:center}
  input[type="checkbox"],input[type="radio"]{min-width:20px;min-height:20px}
}

@media(min-width:900px){.workflow-steps{position:sticky;top:70px;z-index:40;background:rgba(244,248,250,.94);backdrop-filter:blur(12px);padding:6px;border-radius:14px}}
#tm-step-1,#tm-step-2,#tm-step-3{scroll-margin-top:132px}
