/* Local replacement for the few utilities that used to come from cdn.tailwindcss.com at runtime.
   Pages no longer need the Tailwind CDN script (it is slow, blockable and was breaking the design). */
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
.from-emerald-600{--tw-gradient-from:#059669 var(--tw-gradient-from-position);--tw-gradient-to:rgb(5 150 105 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.to-emerald-600{--tw-gradient-to:#059669 var(--tw-gradient-to-position)}
.via-emerald-600{--tw-gradient-to:rgb(5 150 105 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#059669 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.hover\:from-emerald-600:hover{--tw-gradient-from:#059669 var(--tw-gradient-from-position);--tw-gradient-to:rgb(5 150 105 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.hover\:to-emerald-600:hover{--tw-gradient-to:#059669 var(--tw-gradient-to-position)}
.hover\:via-emerald-600:hover{--tw-gradient-to:rgb(5 150 105 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#059669 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.from-emerald-700{--tw-gradient-from:#047857 var(--tw-gradient-from-position);--tw-gradient-to:rgb(4 120 87 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.to-emerald-700{--tw-gradient-to:#047857 var(--tw-gradient-to-position)}
.via-emerald-700{--tw-gradient-to:rgb(4 120 87 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#047857 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.hover\:from-emerald-700:hover{--tw-gradient-from:#047857 var(--tw-gradient-from-position);--tw-gradient-to:rgb(4 120 87 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.hover\:to-emerald-700:hover{--tw-gradient-to:#047857 var(--tw-gradient-to-position)}
.hover\:via-emerald-700:hover{--tw-gradient-to:rgb(4 120 87 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#047857 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.from-orange-600{--tw-gradient-from:#ea580c var(--tw-gradient-from-position);--tw-gradient-to:rgb(234 88 12 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.to-orange-600{--tw-gradient-to:#ea580c var(--tw-gradient-to-position)}
.via-orange-600{--tw-gradient-to:rgb(234 88 12 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#ea580c var(--tw-gradient-via-position),var(--tw-gradient-to)}
.hover\:from-orange-600:hover{--tw-gradient-from:#ea580c var(--tw-gradient-from-position);--tw-gradient-to:rgb(234 88 12 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.hover\:to-orange-600:hover{--tw-gradient-to:#ea580c var(--tw-gradient-to-position)}
.hover\:via-orange-600:hover{--tw-gradient-to:rgb(234 88 12 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#ea580c var(--tw-gradient-via-position),var(--tw-gradient-to)}
.from-orange-700{--tw-gradient-from:#c2410c var(--tw-gradient-from-position);--tw-gradient-to:rgb(194 65 12 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.to-orange-700{--tw-gradient-to:#c2410c var(--tw-gradient-to-position)}
.via-orange-700{--tw-gradient-to:rgb(194 65 12 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#c2410c var(--tw-gradient-via-position),var(--tw-gradient-to)}
.hover\:from-orange-700:hover{--tw-gradient-from:#c2410c var(--tw-gradient-from-position);--tw-gradient-to:rgb(194 65 12 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.hover\:to-orange-700:hover{--tw-gradient-to:#c2410c var(--tw-gradient-to-position)}
.hover\:via-orange-700:hover{--tw-gradient-to:rgb(194 65 12 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#c2410c var(--tw-gradient-via-position),var(--tw-gradient-to)}
.from-rose-600{--tw-gradient-from:#e11d48 var(--tw-gradient-from-position);--tw-gradient-to:rgb(225 29 72 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.to-rose-600{--tw-gradient-to:#e11d48 var(--tw-gradient-to-position)}
.via-rose-600{--tw-gradient-to:rgb(225 29 72 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#e11d48 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.hover\:from-rose-600:hover{--tw-gradient-from:#e11d48 var(--tw-gradient-from-position);--tw-gradient-to:rgb(225 29 72 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.hover\:to-rose-600:hover{--tw-gradient-to:#e11d48 var(--tw-gradient-to-position)}
.hover\:via-rose-600:hover{--tw-gradient-to:rgb(225 29 72 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#e11d48 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.from-rose-700{--tw-gradient-from:#be123c var(--tw-gradient-from-position);--tw-gradient-to:rgb(190 18 60 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.to-rose-700{--tw-gradient-to:#be123c var(--tw-gradient-to-position)}
.via-rose-700{--tw-gradient-to:rgb(190 18 60 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#be123c var(--tw-gradient-via-position),var(--tw-gradient-to)}
.hover\:from-rose-700:hover{--tw-gradient-from:#be123c var(--tw-gradient-from-position);--tw-gradient-to:rgb(190 18 60 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.hover\:to-rose-700:hover{--tw-gradient-to:#be123c var(--tw-gradient-to-position)}
.hover\:via-rose-700:hover{--tw-gradient-to:rgb(190 18 60 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#be123c var(--tw-gradient-via-position),var(--tw-gradient-to)}
.from-sky-600{--tw-gradient-from:#0284c7 var(--tw-gradient-from-position);--tw-gradient-to:rgb(2 132 199 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.to-sky-600{--tw-gradient-to:#0284c7 var(--tw-gradient-to-position)}
.via-sky-600{--tw-gradient-to:rgb(2 132 199 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#0284c7 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.hover\:from-sky-600:hover{--tw-gradient-from:#0284c7 var(--tw-gradient-from-position);--tw-gradient-to:rgb(2 132 199 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.hover\:to-sky-600:hover{--tw-gradient-to:#0284c7 var(--tw-gradient-to-position)}
.hover\:via-sky-600:hover{--tw-gradient-to:rgb(2 132 199 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#0284c7 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.from-sky-700{--tw-gradient-from:#0369a1 var(--tw-gradient-from-position);--tw-gradient-to:rgb(3 105 161 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.to-sky-700{--tw-gradient-to:#0369a1 var(--tw-gradient-to-position)}
.via-sky-700{--tw-gradient-to:rgb(3 105 161 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#0369a1 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.hover\:from-sky-700:hover{--tw-gradient-from:#0369a1 var(--tw-gradient-from-position);--tw-gradient-to:rgb(3 105 161 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.hover\:to-sky-700:hover{--tw-gradient-to:#0369a1 var(--tw-gradient-to-position)}
.hover\:via-sky-700:hover{--tw-gradient-to:rgb(3 105 161 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#0369a1 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.from-teal-600{--tw-gradient-from:#0d9488 var(--tw-gradient-from-position);--tw-gradient-to:rgb(13 148 136 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.to-teal-600{--tw-gradient-to:#0d9488 var(--tw-gradient-to-position)}
.via-teal-600{--tw-gradient-to:rgb(13 148 136 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#0d9488 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.hover\:from-teal-600:hover{--tw-gradient-from:#0d9488 var(--tw-gradient-from-position);--tw-gradient-to:rgb(13 148 136 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.hover\:to-teal-600:hover{--tw-gradient-to:#0d9488 var(--tw-gradient-to-position)}
.hover\:via-teal-600:hover{--tw-gradient-to:rgb(13 148 136 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#0d9488 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.from-teal-700{--tw-gradient-from:#0f766e var(--tw-gradient-from-position);--tw-gradient-to:rgb(15 118 110 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.to-teal-700{--tw-gradient-to:#0f766e var(--tw-gradient-to-position)}
.via-teal-700{--tw-gradient-to:rgb(15 118 110 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#0f766e var(--tw-gradient-via-position),var(--tw-gradient-to)}
.hover\:from-teal-700:hover{--tw-gradient-from:#0f766e var(--tw-gradient-from-position);--tw-gradient-to:rgb(15 118 110 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.hover\:to-teal-700:hover{--tw-gradient-to:#0f766e var(--tw-gradient-to-position)}
.hover\:via-teal-700:hover{--tw-gradient-to:rgb(15 118 110 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#0f766e var(--tw-gradient-via-position),var(--tw-gradient-to)}
.from-amber-700{--tw-gradient-from:#b45309 var(--tw-gradient-from-position);--tw-gradient-to:rgb(180 83 9 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.to-amber-700{--tw-gradient-to:#b45309 var(--tw-gradient-to-position)}
.via-amber-700{--tw-gradient-to:rgb(180 83 9 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#b45309 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.hover\:from-amber-700:hover{--tw-gradient-from:#b45309 var(--tw-gradient-from-position);--tw-gradient-to:rgb(180 83 9 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.hover\:to-amber-700:hover{--tw-gradient-to:#b45309 var(--tw-gradient-to-position)}
.hover\:via-amber-700:hover{--tw-gradient-to:rgb(180 83 9 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#b45309 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.from-blue-700{--tw-gradient-from:#1d4ed8 var(--tw-gradient-from-position);--tw-gradient-to:rgb(29 78 216 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.to-blue-700{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}
.via-blue-700{--tw-gradient-to:rgb(29 78 216 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#1d4ed8 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.hover\:from-blue-700:hover{--tw-gradient-from:#1d4ed8 var(--tw-gradient-from-position);--tw-gradient-to:rgb(29 78 216 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.hover\:to-blue-700:hover{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}
.hover\:via-blue-700:hover{--tw-gradient-to:rgb(29 78 216 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#1d4ed8 var(--tw-gradient-via-position),var(--tw-gradient-to)}
.from-indigo-700{--tw-gradient-from:#4338ca var(--tw-gradient-from-position);--tw-gradient-to:rgb(67 56 202 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.to-indigo-700{--tw-gradient-to:#4338ca var(--tw-gradient-to-position)}
.via-indigo-700{--tw-gradient-to:rgb(67 56 202 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#4338ca var(--tw-gradient-via-position),var(--tw-gradient-to)}
.hover\:from-indigo-700:hover{--tw-gradient-from:#4338ca var(--tw-gradient-from-position);--tw-gradient-to:rgb(67 56 202 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.hover\:to-indigo-700:hover{--tw-gradient-to:#4338ca var(--tw-gradient-to-position)}
.hover\:via-indigo-700:hover{--tw-gradient-to:rgb(67 56 202 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#4338ca var(--tw-gradient-via-position),var(--tw-gradient-to)}
.from-pink-700{--tw-gradient-from:#be185d var(--tw-gradient-from-position);--tw-gradient-to:rgb(190 24 93 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.to-pink-700{--tw-gradient-to:#be185d var(--tw-gradient-to-position)}
.via-pink-700{--tw-gradient-to:rgb(190 24 93 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#be185d var(--tw-gradient-via-position),var(--tw-gradient-to)}
.hover\:from-pink-700:hover{--tw-gradient-from:#be185d var(--tw-gradient-from-position);--tw-gradient-to:rgb(190 24 93 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.hover\:to-pink-700:hover{--tw-gradient-to:#be185d var(--tw-gradient-to-position)}
.hover\:via-pink-700:hover{--tw-gradient-to:rgb(190 24 93 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#be185d var(--tw-gradient-via-position),var(--tw-gradient-to)}
.from-green-700{--tw-gradient-from:#15803d var(--tw-gradient-from-position);--tw-gradient-to:rgb(21 128 61 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.to-green-700{--tw-gradient-to:#15803d var(--tw-gradient-to-position)}
.via-green-700{--tw-gradient-to:rgb(21 128 61 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#15803d var(--tw-gradient-via-position),var(--tw-gradient-to)}
.hover\:from-green-700:hover{--tw-gradient-from:#15803d var(--tw-gradient-from-position);--tw-gradient-to:rgb(21 128 61 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}
.hover\:to-green-700:hover{--tw-gradient-to:#15803d var(--tw-gradient-to-position)}
.hover\:via-green-700:hover{--tw-gradient-to:rgb(21 128 61 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#15803d var(--tw-gradient-via-position),var(--tw-gradient-to)}
.dark\:to-green-700\/60:is(.dark *){--tw-gradient-to:rgb(21 128 61 / .6) var(--tw-gradient-to-position)}
.dark\:via-teal-600\/50:is(.dark *){--tw-gradient-to:rgb(13 148 136 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgb(13 148 136 / .5) var(--tw-gradient-via-position),var(--tw-gradient-to)}
.bg-slate-800{background-color:#1e293b}
.bg-black\/40{background-color:rgb(0 0 0 / .4)}
.bg-accent\/20{background-color:hsl(var(--accent) / .2)}
.hover\:text-gray-900:hover{color:#111827}
.text-indigo-600{color:#4f46e5}
.group:hover .group-hover\:text-indigo-800{color:#3730a3}
.hover\:border-indigo-300:hover{border-color:#a5b4fc}
.focus\:ring-indigo-300:focus{--tw-ring-color:#a5b4fc}
.mx-1\.5{margin-left:.375rem;margin-right:.375rem}
.min-w-\[12rem\]{min-width:12rem}
.min-w-\[560px\]{min-width:560px}
.origin-top-right{transform-origin:top right}
@media (min-width:1024px){.lg\:pr-8{padding-right:2rem}}

/* ==== dark mode: sidebar tokens (the compiled sidebar uses --sidebar-background; every page needs it in dark mode) ==== */
html.dark-mode {
    --sidebar-background: 0 0% 12%;
    --sidebar: 0 0% 12%;
    --sidebar-foreground: 210 20% 85%;
    --sidebar-primary: 210 20% 90%;
    --sidebar-primary-foreground: 0 0% 12%;
    --sidebar-accent: 0 0% 18%;
    --sidebar-accent-foreground: 210 20% 90%;
    --sidebar-border: 0 0% 22%;
    --sidebar-ring: 217 91% 60%;
}

/* the hidden attribute must always win (Admin Panel link was visible to guests) */
[hidden], [data-admin-only][hidden] { display: none !important; }

/* Utilities the card templates use (app.js, practice-cards.js, full-tests.js) that the compiled Tailwind bundle does not
   have: without aspect-[4/3] every card picture took its own height, so the cards of one grid were all different sizes. */
.aspect-\[4\/3\]{aspect-ratio:4/3}
.aspect-\[4\/3\]>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.min-h-\[390px\]{min-height:390px}
.group:hover .group-hover\:scale-\[1\.03\]{transform:scale(1.03)}
.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}
.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}
.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}
