/* polish-motion: visual-only (no layout/size changes) */
:root{
  --pm-ease:cubic-bezier(.2,.7,.2,1);
  --pm-t:160ms;
  --pm-sh-1:0 1px 2px rgba(11,58,76,.08);
  --pm-sh-2:0 4px 12px rgba(11,58,76,.10),0 1px 3px rgba(11,58,76,.08);
  --pm-sh-3:0 16px 40px rgba(11,58,76,.18),0 4px 10px rgba(11,58,76,.10);
  --pm-ring:0 0 0 3px rgba(20,82,104,.28);
  --pm-r-sm:8px;--pm-r-md:10px;--pm-r-lg:16px;
}

/* typography */
body{font-family:Montserrat,system-ui,"Segoe UI",sans-serif;font-feature-settings:"tnum" 1,"lnum" 1,"kern" 1;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
h1,h2,h3,.modal-title{letter-spacing:-.01em;text-wrap:balance}
td,th,.num,.badge-days,.overview-heat-cell,input,select{font-variant-numeric:tabular-nums lining-nums}
::selection{background:rgba(20,82,104,.22)}

/* transitions */
button,a,.btn,.chip,.pill,.seg button,.admin-tabs button,.insights-tabs button,.overview-task-tabs button,.rail a,.card,
.row,.rr,.result-row,.schedule-row,.admin-user-row,.overview-heat-cell,.dd-menu,
input,select,textarea,.f,.b{
  transition:background-color var(--pm-t) var(--pm-ease),border-color var(--pm-t) var(--pm-ease),
  color var(--pm-t) var(--pm-ease),box-shadow var(--pm-t) var(--pm-ease),
  transform 120ms var(--pm-ease),opacity var(--pm-t) var(--pm-ease);
}

/* buttons */
.btn,.b,.pill,.chip,.seg button,.toast-undo,.toast-x,.btn-x{-webkit-tap-highlight-color:transparent;user-select:none}
.btn:hover,.b:hover{box-shadow:var(--pm-sh-2)}
.btn:active,.b:active,.pill:active,.chip:active,.seg button:active{transform:translateY(1px) scale(.985);box-shadow:var(--pm-sh-1)}
.btn-primary:hover{filter:brightness(1.07)}
.btn-primary:active{filter:brightness(.95)}
.btn-outline:hover,.b:hover,.pill:hover,.chip:not(.on):hover{background-color:#f3f8fa;border-color:#b9cbd3}
.chip.on:hover{filter:brightness(1.12)}
.seg button:not(.on):hover{background-color:rgba(255,255,255,.65);color:#0b3a4c}
.admin-tabs button:not(.on):hover,.insights-tabs button:not(.on):hover,.overview-task-tabs button:not(.on):hover{color:#0b3a4c}
.rail a:not(.on):hover{background-color:rgba(255,255,255,.10);color:#fff}
button:disabled,.btn:disabled,[aria-disabled="true"]{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none;filter:none}

/* focus-visible */
:focus:not(:focus-visible){outline:none}
:focus-visible{outline:2px solid #145268;outline-offset:2px}
button:focus-visible,.btn:focus-visible,.b:focus-visible,.chip:focus-visible,.pill:focus-visible,
.admin-tabs button:focus-visible,.insights-tabs button:focus-visible,.overview-task-tabs button:focus-visible,.seg button:focus-visible{outline:none;box-shadow:var(--pm-ring)}
.rail a:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(255,255,255,.55)}
input:focus-visible,select:focus-visible,textarea:focus-visible,.f:focus-visible{outline:none;border-color:#145268;box-shadow:var(--pm-ring)}

/* surfaces */
.card{box-shadow:var(--pm-sh-1)}
.dd-menu,.plan-menu,.plan-object-menu{box-shadow:var(--pm-sh-3);animation:pm-pop 160ms var(--pm-ease) both;transform-origin:top left}

/* table / list rows */
.rr:hover,.result-row:hover,.schedule-row:hover,.admin-user-row:hover,
.ntable tbody tr:hover td,.pob-table tbody tr:hover td{background-color:rgba(20,82,104,.045)}
.row:hover .who{background-color:#f6fafb}
.overview-heat-cell:hover{box-shadow:inset 0 0 0 2px rgba(20,82,104,.45);filter:brightness(.97)}
.overview-heat-cell:active{transform:scale(.96)}
.overview-heat-cell:focus-visible{box-shadow:inset 0 0 0 2px #145268,var(--pm-ring)}

/* modals and toasts */
.modal-back{animation:pm-fade 180ms ease both;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.modal{box-shadow:var(--pm-sh-3);animation:pm-rise 200ms var(--pm-ease) both}
.toast{box-shadow:var(--pm-sh-3);animation:pm-toast 200ms var(--pm-ease) both}
.toast-undo:hover,.toast-x:hover{opacity:.85}

/* thin scrollbars */
*{scrollbar-width:thin;scrollbar-color:#b9cbd3 transparent}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#b9cbd3;border-radius:8px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:#8fa8b3;background-clip:content-box;border:2px solid transparent}

/* keyframes */
@keyframes pm-fade{from{opacity:0}to{opacity:1}}
@keyframes pm-rise{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
@keyframes pm-pop{from{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:none}}
@keyframes pm-toast{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes pm-shimmer{from{background-position:200% 0}to{background-position:-200% 0}}

/* reduced motion */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
}

/* high contrast */
@media (prefers-contrast:more),(forced-colors:active){
  :focus-visible{outline:3px solid #000;outline-offset:2px;box-shadow:none !important}
  .card,.btn,.b,.chip,.pill,.modal,.toast,.f,input,select{border:1px solid currentColor}
  .rr{border-bottom-color:currentColor}
  .l,.admin-tabs button,.insights-tabs button{color:inherit}
}
@media (forced-colors:active){
  .overview-heat-cell:hover{outline:2px solid Highlight}
}

/* print */
@media print{
  *{animation:none !important;transition:none !important;box-shadow:none !important;backdrop-filter:none !important;
    -webkit-print-color-adjust:exact;print-color-adjust:exact}
  body{background:#fff !important}
  .rail,.toast,.modal-back,.dd-menu,.plan-menu,.plan-object-menu,.btn,.b,.seg,.admin-tabs,.insights-tabs,.cal-nav{display:none !important}
  .card{border-color:#999;break-inside:avoid}
  tr,.rr{break-inside:avoid}
  a{color:inherit;text-decoration:none}
  ::-webkit-scrollbar{display:none}
}

/* dark theme intentionally skipped: status/tag/heatmap colours are hard-coded
   and carry meaning (absence, shortage, violation), so inverting would break them. */
