.skip-link { position: absolute; left: -9999px; }
.skip-link:focus { left: 12px; top: 12px; z-index: 9999; background: var(--surface); padding: 16px; }
.cover-link, .cover-link img, .product-card .cover-link img, .hover-preview img, .free-card img, ul.products li.product .woocommerce-loop-product__link img, .woocommerce ul.products li.product a img, .woocommerce div.product div.images img { aspect-ratio: 1 / 1 !important; object-fit: cover !important; width: 100% !important; height: auto !important; }
.cover-wrap { position: relative; padding: 9px 9px 0px; background: var(--surface); overflow: hidden; }
.cover-link { display: block; overflow: hidden; border-radius: 5px; background: var(--wash); aspect-ratio: 1 / 1; }
.product-card { transition-property: transform, box-shadow, border-color; transition-duration: var(--motion-base, 220ms); transition-timing-function: var(--ease-out, cubic-bezier(0.16, 1, 0.3, 1)); position: relative; will-change: transform; }
.product-card:hover { transform: translateY(-3px); box-shadow: rgba(10, 37, 77, 0.12) 0px 8px 24px; border-color: var(--line-strong); }
.product-card:focus-within { transform: translateY(-3px); box-shadow: 0 8px 24px rgba(10, 37, 77, 0.12), 0 0 0 2px var(--focus); border-color: var(--focus); }
.hover-preview { pointer-events: none; position: absolute; inset: 9px 9px 0px; background: white; opacity: 0; transition: opacity 0.3s; aspect-ratio: 1 / 1; overflow: hidden; border-radius: 5px; }
.hover-preview img { width: 100% !important; height: 100% !important; object-fit: cover !important; }
.product-card:hover .hover-preview { opacity: 1; transition-delay: 0.25s; }
.preview-button { position: absolute; z-index: 4; bottom: 10px; left: 50%; transform: translateX(-50%); background: var(--navy); color: rgb(255, 255, 255); white-space: nowrap; border-radius: 5px; padding: 7px 10px; font-size: var(--fs-xs); display: flex; align-items: center; gap: 6px; opacity: 0; transition: opacity var(--duration, 0.2s); cursor: pointer; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; }
.preview-button .icon { width: 15px; height: 15px; }
.product-card:hover .preview-button, .product-card:focus-within .preview-button { opacity: 1; }
.favorite { position: absolute; z-index: 3; top: 17px; right: 16px; width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; background: rgba(255, 255, 255, 0.94); color: rgb(194, 54, 103); box-shadow: rgba(0, 0, 0, 0.063) 0px 2px 6px; opacity: 0; transition-property: opacity, transform, background-color, color; transition-duration: var(--motion-fast, 160ms); transition-timing-function: var(--ease-out, cubic-bezier(0.16, 1, 0.3, 1)); border-width: medium; border-style: none; border-color: currentcolor; border-image: none; cursor: pointer; }
.product-card:hover .favorite, .favorite:focus-visible, .favorite[aria-pressed="true"] { opacity: 1; }
.favorite[aria-pressed="true"] .icon { fill: currentcolor; }
.favorite:hover { transform: scale(1.08); }
.favorite:active { transform: scale(0.9); }
.favorite.just-toggled { animation: eduminate-heart-pop 240ms var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1)); }
@keyframes eduminate-heart-pop { 
  0% { transform: scale(1); }
  50% { transform: scale(1.22); }
  100% { transform: scale(1); }
}
.woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea { padding: 12px; border: 1px solid var(--line-strong); background: var(--surface); color: var(--text); border-radius: 8px; }
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button { background: var(--primary); color: var(--primary-text); border-radius: 8px; }
.woocommerce ul.products li.product { padding: 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.woocommerce ul.products li.product .price { color: var(--text); }
.quantity, .woocommerce .quantity, div.quantity, .cart-item-quantity-selector, input.qty { display: none !important; }
.full-width { width: 100% !important; }
.eduminate-product-container { padding-top: 24px; padding-bottom: 60px; }
.resource-cover-image { display: block; width: 100% !important; height: 100% !important; object-fit: cover !important; }
.rating-note { color: var(--text-muted); font-weight: 600; }
.single-preview-btn:hover { background: var(--primary) !important; color: rgb(255, 255, 255) !important; }
.modal.viewer-mode { border-radius: 14px; width: min(1080px, 100% - 32px) !important; max-height: 94dvh !important; }
.viewer-top-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 20px; border-bottom: 1px solid var(--line); background: var(--surface); }
.viewer-title-group h2 { font-size: var(--fs-base); font-weight: 750; color: var(--text); margin: 0px; line-height: 1.3; }
.viewer-title-group p { font-size: var(--fs-xs); color: var(--text-muted); margin: 2px 0px 0px; }
.viewer-controls { display: flex; align-items: center; gap: 8px; }
.viewer-zoom-btn { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-xs); font-weight: 600; padding: 6px 12px; border-radius: 6px; border: 1px solid var(--line); background: var(--surface); color: var(--text); cursor: pointer; transition: 0.15s; }
.viewer-zoom-btn:hover { background: var(--wash); border-color: var(--line-strong); }
.viewer-zoom-btn.active { background: var(--primary); color: rgb(255, 255, 255); border-color: var(--primary); }
.viewer-content-layout { display: grid; grid-template-columns: 1fr 220px; gap: 20px; padding: 20px; background: var(--wash); }
@media (max-width: 768px) {
  .viewer-content-layout { grid-template-columns: 1fr; padding: 14px; gap: 14px; }
}
.viewer-stage-container { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.viewer-stage-viewport { position: relative; width: 100%; min-height: 380px; height: 60dvh; display: flex; align-items: center; justify-content: center; background: rgb(11, 21, 35); border-radius: 10px; overflow: auto; border: 1px solid var(--line); }
@media (min-width: 900px) { .viewer-stage-viewport { height: min(74dvh, 780px); } }
.viewer-stage-img { max-height: 96%; max-width: 96%; width: auto; height: auto; border-radius: 4px; transition: transform 0.25s cubic-bezier(0.2, 0, 0, 1); cursor: zoom-in; user-select: none; box-shadow: rgba(0, 0, 0, 0.45) 0px 6px 24px; object-fit: contain !important; }
.viewer-stage-viewport.is-zoomed { align-items: flex-start; justify-content: flex-start; }
.viewer-stage-img.is-zoomed { max-height: none; max-width: none; width: 140%; height: auto; cursor: zoom-out; margin: auto; }
@media (min-width: 900px) {
  .viewer-stage-img.is-zoomed { width: 175%; }
}
.viewer-nav-arrow { position: absolute; top: 50%; transform: translateY(-50%); width: 44px; height: 44px; border-radius: 50%; background: rgba(15, 23, 42, 0.85); backdrop-filter: blur(4px); color: rgb(255, 255, 255); border: 1px solid rgba(255, 255, 255, 0.2); display: grid; place-items: center; cursor: pointer; transition: 0.15s; z-index: 5; }
.viewer-nav-arrow:hover { background: var(--primary); transform: translateY(-50%) scale(1.06); }
.viewer-nav-arrow:focus-visible { outline: rgb(255, 255, 255) solid 2px; }
.viewer-nav-arrow.prev { left: 12px; }
.viewer-nav-arrow.next { right: 12px; }
.viewer-status-row { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: 0px 4px; }
.viewer-counter-badge { font-size: var(--fs-sm); font-weight: 700; color: var(--text); background: var(--surface); border: 1px solid var(--line); padding: 4px 10px; border-radius: 20px; }
.viewer-zoom-tip { font-size: var(--fs-xs); color: var(--text-muted); }
.viewer-sidebar-panel { display: flex; flex-direction: column; gap: 12px; }
.viewer-thumbs-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; max-height: 55dvh; overflow-y: auto; padding-right: 4px; }
@media (max-width: 768px) {
  .viewer-thumbs-grid { grid-template-columns: repeat(auto-fill, minmax(64px, 1fr)); max-height: 110px; }
}
.viewer-thumb-btn { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 4px; background: var(--surface); border: 2px solid transparent; border-radius: 6px; cursor: pointer; transition: 0.15s; }
.viewer-thumb-btn:hover { border-color: var(--line-strong); transform: scale(1.02); }
.viewer-thumb-btn.selected { border-color: var(--primary); box-shadow: 0 0 0 1px var(--primary); }
.viewer-thumb-aspect { width: 100%; aspect-ratio: 3 / 4; background: rgb(255, 255, 255); border-radius: 4px; overflow: hidden; display: flex; align-items: center; justify-content: center; border: 1px solid var(--line); }
.viewer-thumb-aspect.cover-aspect { aspect-ratio: 1 / 1; }
.viewer-thumb-aspect img { width: 100%; height: 100%; object-fit: contain !important; }
.viewer-thumb-label { font-size: var(--fs-xs); font-weight: 700; color: var(--text-muted); white-space: nowrap; }
.viewer-thumb-btn.selected .viewer-thumb-label { color: var(--primary); }
.btn-cta-primary { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 16px 24px; font-size: var(--fs-base); font-weight: 800; background: var(--navy); border-radius: 10px; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; cursor: pointer; transition: transform 0.15s, background 0.2s; min-height: 52px; color: rgb(255, 255, 255) !important; }
[data-theme="dark"] .btn-cta-primary { background: var(--gold); color: rgb(11, 31, 51) !important; }
.btn-cta-primary:hover { transform: translateY(-2px); filter: brightness(1.1); }
.check-icon { width: 16px; height: 16px; color: rgb(16, 185, 129); flex-shrink: 0; margin-top: 2px; }
.eduminate-product-accordions { display: flex; flex-direction: column; gap: 10px; }
.accordion-item { background: var(--surface); border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.accordion-header { width: 100%; display: flex; align-items: center; justify-content: space-between; padding: 16px; background: transparent; border-width: medium; border-style: none; border-color: currentcolor; border-image: none; cursor: pointer; text-align: left; color: var(--text); font-weight: 700; font-size: var(--fs-base); }
.shop-title { font-size: var(--fs-h2); font-weight: 900; margin: 0px 0px 10px; color: var(--text); }
@media (max-width: 600px) {
  .shop-title { font-size: var(--fs-h2); }
}
.shop-subtitle { font-size: var(--fs-base); color: var(--text-muted); margin: 0px; line-height: 1.5; }
.eduminate-product-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; margin-bottom: 40px; }
@media (min-width: 640px) {
  .eduminate-product-grid { grid-template-columns: repeat(3, 1fr); gap: 18px; }
}
@media (min-width: 1024px) {
  .eduminate-product-grid { grid-template-columns: repeat(4, 1fr); gap: 24px; }
}
.eduminate-product-card { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; transition: transform 0.2s, box-shadow 0.2s; }
.eduminate-product-card:hover { transform: translateY(-3px); box-shadow: rgba(0, 0, 0, 0.06) 0px 6px 18px; }
.product-grid-img { display: block; width: 100% !important; height: 100% !important; object-fit: cover !important; }
:root input[type="text"], :root input[type="email"], :root input[type="password"], :root input[type="tel"], :root input[type="number"], :root input[type="search"], :root textarea, :root select, :root .woocommerce form .form-row input.input-text, :root .woocommerce form .form-row textarea, :root .woocommerce-input-wrapper input, [data-theme="light"] input[type="text"], [data-theme="light"] input[type="email"], [data-theme="light"] input[type="password"], [data-theme="light"] input[type="tel"], [data-theme="light"] input[type="number"], [data-theme="light"] input[type="search"], [data-theme="light"] textarea, [data-theme="light"] select, [data-theme="light"] .woocommerce form .form-row input.input-text, [data-theme="light"] .woocommerce form .form-row textarea, [data-theme="light"] .woocommerce-input-wrapper input { background-color: var(--input-bg) !important; color: var(--input-text) !important; border: 1px solid var(--input-border) !important; border-radius: 8px !important; }
[data-theme="dark"] input[type="text"], [data-theme="dark"] input[type="email"], [data-theme="dark"] input[type="password"], [data-theme="dark"] input[type="tel"], [data-theme="dark"] input[type="number"], [data-theme="dark"] input[type="search"], [data-theme="dark"] textarea, [data-theme="dark"] select, [data-theme="dark"] .woocommerce form .form-row input.input-text, [data-theme="dark"] .woocommerce form .form-row textarea, [data-theme="dark"] .woocommerce-input-wrapper input { background-color: var(--input-bg) !important; color: var(--input-text) !important; border: 1px solid var(--input-border) !important; border-radius: 8px !important; }
:root input[type="text"]:focus, :root input[type="email"]:focus, :root input[type="password"]:focus, :root textarea:focus, :root select:focus, [data-theme="light"] input[type="text"]:focus, [data-theme="light"] input[type="email"]:focus, [data-theme="light"] input[type="password"]:focus, [data-theme="light"] textarea:focus, [data-theme="light"] select:focus { border-color: var(--input-border-focus) !important; box-shadow: 0 0 0 3px var(--input-focus-ring) !important; outline: none !important; }
[data-theme="dark"] input[type="text"]:focus, [data-theme="dark"] input[type="email"]:focus, [data-theme="dark"] input[type="password"]:focus, [data-theme="dark"] textarea:focus, [data-theme="dark"] select:focus { border-color: var(--input-border-focus) !important; box-shadow: 0 0 0 3px var(--input-focus-ring) !important; outline: none !important; }
:root input::placeholder, :root textarea::placeholder, [data-theme="light"] input::placeholder, [data-theme="light"] textarea::placeholder { color: var(--input-placeholder) !important; opacity: 1 !important; }
[data-theme="dark"] input::placeholder, [data-theme="dark"] textarea::placeholder { color: var(--input-placeholder) !important; opacity: 1 !important; }
:root select option, [data-theme="light"] select option { background-color: rgb(255, 255, 255) !important; color: rgb(15, 23, 42) !important; }
[data-theme="dark"] select option { background-color: rgb(10, 32, 53) !important; color: rgb(248, 250, 252) !important; }
[data-theme="dark"] .woocommerce-table--order-details, [data-theme="dark"] .woocommerce-table--order-details th, [data-theme="dark"] .woocommerce-table--order-details td { border-color: rgba(255, 255, 255, 0.12) !important; color: rgb(241, 246, 255) !important; }
.woocommerce-message, .woocommerce-info, .woocommerce-error, .woocommerce-noreviews { border-radius: 10px !important; padding: 14px 18px 14px 44px !important; border-top-width: medium !important; border-top-style: none !important; border-top-color: currentcolor !important; box-shadow: rgba(0, 0, 0, 0.04) 0px 2px 8px !important; font-size: var(--fs-sm) !important; line-height: 1.5 !important; }
.woocommerce-message { border-left: 4px solid rgb(16, 185, 129) !important; background-color: rgb(236, 253, 245) !important; color: rgb(6, 95, 70) !important; }
.woocommerce-info { border-left: 4px solid rgb(59, 130, 246) !important; background-color: rgb(239, 246, 255) !important; color: rgb(30, 64, 175) !important; }
.woocommerce-error { border-left: 4px solid rgb(239, 68, 68) !important; background-color: rgb(254, 242, 242) !important; color: rgb(153, 27, 27) !important; }
[data-theme="dark"] .woocommerce-message { background-color: rgb(6, 42, 34) !important; color: rgb(110, 231, 183) !important; }
[data-theme="dark"] .woocommerce-info { background-color: rgb(15, 43, 72) !important; color: rgb(147, 197, 253) !important; }
[data-theme="dark"] .woocommerce-error { background-color: rgb(56, 18, 22) !important; color: rgb(252, 165, 165) !important; }
.support-form h2 { font-size: var(--fs-h3); font-weight: 750; margin-bottom: 6px; color: var(--text); letter-spacing: -0.02em; }
.support-form p.muted { font-size: var(--fs-sm); line-height: 1.5; color: var(--muted); }
.support-form .form-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
@media (max-width: 640px) {
  .support-form .form-columns { grid-template-columns: 1fr; gap: 0px; }
}
.support-form .field { display: flex !important; flex-direction: column !important; margin-bottom: 22px !important; width: 100% !important; }
.support-form .field > label { display: block !important; font-size: var(--fs-sm) !important; font-weight: 650 !important; margin-bottom: 8px !important; color: var(--text) !important; }
.support-form .field > input, .support-form .field > select, .support-form .field > textarea { display: block !important; width: 100% !important; box-sizing: border-box !important; border: 1px solid var(--line-strong) !important; border-radius: 8px !important; padding: 13px 16px !important; background-color: var(--input) !important; color: var(--text) !important; font-size: var(--fs-base) !important; line-height: 1.5 !important; transition: border-color 0.2s, box-shadow 0.2s, background-color 0.2s !important; }
.support-form .field > input::placeholder, .support-form .field > textarea::placeholder { color: var(--muted) !important; opacity: 0.8 !important; }
.support-form .field > input:focus, .support-form .field > select:focus, .support-form .field > textarea:focus { border-color: var(--focus) !important; outline: none !important; box-shadow: 0 0 0 3px var(--focus-soft) !important; }
.support-form .field > textarea { min-height: 140px !important; resize: vertical !important; line-height: 1.6 !important; }
.support-form select { appearance: none !important; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235e6e88' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") !important; background-repeat: no-repeat !important; background-position: right 14px center !important; background-size: 16px auto !important; padding-right: 42px !important; cursor: pointer !important; }
.contact-submit-btn { display: inline-flex !important; align-items: center !important; justify-content: center !important; gap: 10px !important; padding: 14px 28px !important; font-size: var(--fs-base) !important; font-weight: 700 !important; border-radius: 8px !important; cursor: pointer !important; background-color: var(--primary) !important; color: var(--primary-text) !important; border: 1px solid transparent !important; transition: transform 0.2s, box-shadow 0.2s, background-color 0.2s !important; }
.contact-submit-btn:hover { transform: translateY(-2px) !important; box-shadow: rgba(0, 0, 0, 0.15) 0px 4px 14px !important; }
.contact-submit-btn .icon { width: 18px !important; height: 18px !important; }
.support-form .form-feedback { margin-top: 18px; font-size: var(--fs-sm); line-height: 1.5; }
[data-theme="dark"] .support-form { background: var(--surface) !important; border-color: var(--line) !important; }
[data-theme="dark"] .support-form .field > input, [data-theme="dark"] .support-form .field > select, [data-theme="dark"] .support-form .field > textarea { background-color: rgb(10, 32, 53) !important; border-color: rgb(35, 65, 92) !important; color: rgb(241, 246, 255) !important; }
[data-theme="dark"] .support-form .field > input::placeholder, [data-theme="dark"] .support-form .field > textarea::placeholder { color: rgb(98, 125, 152) !important; }
[data-theme="dark"] .support-form .field > input:focus, [data-theme="dark"] .support-form .field > select:focus, [data-theme="dark"] .support-form .field > textarea:focus { border-color: rgb(85, 183, 255) !important; box-shadow: rgba(85, 183, 255, 0.25) 0px 0px 0px 3px !important; }
[data-theme="dark"] .support-form select option { background-color: rgb(10, 32, 53) !important; color: rgb(241, 246, 255) !important; }
[data-theme="dark"] .form-feedback > div { background: rgb(6, 42, 34) !important; color: rgb(110, 231, 183) !important; border-left-color: rgb(16, 185, 129) !important; }
html, body { overflow-x: clip; max-width: 100vw; }
@supports not (overflow-x: clip) {
  html, body { overflow-x: hidden; }
}
@media (max-width: 480px) {
  .container { width: calc(100% - 24px) !important; }
}
@media (max-width: 360px) {
  .container { width: calc(100% - 16px) !important; }
}
body, input, button, select, textarea { font-family: var(--font) !important; }
h1, h2, h3, h4, h5, h6 { font-family: var(--font) !important; letter-spacing: -0.025em; }
.button, .btn-primary, .woocommerce-Button, .woocommerce-button, .single_add_to_cart_button, #place_order, .support-form button[type="submit"], .card-action { font-family: var(--font) !important; font-weight: 600 !important; border-radius: var(--radius) !important; letter-spacing: -0.01em !important; box-sizing: border-box !important; }
.input-text, input[type="text"], input[type="email"], input[type="password"], input[type="tel"], input[type="search"], input[type="number"], select, textarea, .woocommerce-Input { font-family: var(--font) !important; border-radius: var(--radius-sm) !important; border: 1px solid var(--line-strong) !important; background-color: var(--input) !important; color: var(--text) !important; padding: 10px 14px !important; box-sizing: border-box !important; width: 100% !important; display: block !important; transition: border-color 160ms, box-shadow 160ms !important; }
.input-text:focus, input[type="text"]:focus, input[type="email"]:focus, input[type="password"]:focus, input[type="tel"]:focus, input[type="search"]:focus, select:focus, textarea:focus, .woocommerce-Input:focus { border-color: var(--focus) !important; outline: none !important; box-shadow: 0 0 0 3px var(--focus-soft) !important; }
.woocommerce form .form-row { clear: both; display: block !important; margin-bottom: 20px !important; width: 100% !important; }
.woocommerce form .form-row label { display: block !important; margin-bottom: 8px !important; font-weight: 650 !important; font-size: var(--fs-sm) !important; color: var(--text) !important; }
.woocommerce form .form-row .woocommerce-input-wrapper { width: 100% !important; display: block !important; }
.woocommerce form .form-row-first { width: 48% !important; float: left !important; }
.woocommerce form .form-row-last { width: 48% !important; float: right !important; clear: none !important; }
@media (max-width: 600px) {
  .woocommerce form .form-row-first, .woocommerce form .form-row-last { width: 100% !important; float: none !important; }
}
.woocommerce-message, .woocommerce-info, .woocommerce-error, .woocommerce-notice { display: flex !important; align-items: center !important; gap: 12px !important; padding: 14px 18px !important; margin: 0px 0px 24px !important; border-radius: var(--radius) !important; font-family: var(--font) !important; font-size: var(--fs-sm) !important; line-height: 1.5 !important; border: 1px solid var(--line) !important; box-shadow: var(--shadow-sm) !important; }
.woocommerce-message { background: var(--free-bg) !important; color: var(--text) !important; border-left: 4px solid var(--teal) !important; }
.woocommerce-info { background: var(--wash) !important; color: var(--text) !important; border-left: 4px solid var(--link) !important; }
.woocommerce-error { background: rgb(253, 242, 244) !important; color: var(--danger) !important; border-left: 4px solid var(--coral) !important; }
[data-theme="dark"] .woocommerce-error { background: rgb(42, 20, 28) !important; color: rgb(255, 147, 176) !important; border-top-color: rgb(92, 32, 48) !important; border-right-color: rgb(92, 32, 48) !important; border-bottom-color: rgb(92, 32, 48) !important; border-left: 4px solid var(--coral) !important; }
[data-theme="dark"] .woocommerce-message { background: rgb(10, 41, 62) !important; color: rgb(201, 232, 251) !important; border-top-color: rgb(23, 74, 108) !important; border-right-color: rgb(23, 74, 108) !important; border-bottom-color: rgb(23, 74, 108) !important; border-left: 4px solid var(--teal) !important; }
[data-theme="dark"] .woocommerce-info { background: rgb(13, 42, 69) !important; color: rgb(205, 230, 255) !important; border-top-color: rgb(26, 69, 110) !important; border-right-color: rgb(26, 69, 110) !important; border-bottom-color: rgb(26, 69, 110) !important; border-left: 4px solid var(--link) !important; }
.woocommerce-message .button, .woocommerce-info .button { margin-left: auto !important; padding: 6px 14px !important; border-radius: var(--radius-sm) !important; font-size: var(--fs-sm) !important; }
/* Notices are flex rows (above): WooCommerce's icon sits in the row instead of being positioned
   over the first words, and the button follows the text at the right edge. */
.woocommerce-message::before, .woocommerce-info::before, .woocommerce-error::before { position: static !important; flex: 0 0 auto; margin: 0 !important; }
.woocommerce-message .button, .woocommerce-info .button { order: 2; flex-shrink: 0; white-space: nowrap; }
@media (max-width: 768px) {
  .woocommerce-cart-form__contents, .shop_table, .woocommerce-table { display: block !important; width: 100% !important; overflow-x: auto !important; }
}
[data-theme="dark"] .shop_table, [data-theme="dark"] .woocommerce-table { background: var(--surface) !important; border-color: var(--line) !important; color: var(--text) !important; }
[data-theme="dark"] .shop_table th, [data-theme="dark"] .woocommerce-table th { background: var(--wash) !important; color: var(--text) !important; border-color: var(--line) !important; }
[data-theme="dark"] .shop_table td, [data-theme="dark"] .woocommerce-table td { border-color: var(--line) !important; color: var(--text) !important; }
:focus-visible { outline: 2px solid var(--focus) !important; outline-offset: 2px !important; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid var(--focus) !important; outline-offset: 2px !important; }
:root { --motion-fast: 160ms; --motion-base: 220ms; --motion-reveal: 320ms; --ease-out: cubic-bezier(0.16, 1, 0.3, 1); --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1); }
button:active:not(:disabled), .button:active:not(.disabled):not(:disabled), .card-action:active:not(:disabled), .category-tile:active, .preview-button:active { transform: scale(0.97); transition-property: transform; transition-duration: 120ms; transition-timing-function: ease-out; }
.card-action.is-loading, .button.is-loading { pointer-events: none; opacity: 0.85; position: relative; }
.card-action.is-loading > *, .button.is-loading > * { opacity: 0.15; }
.card-action.is-loading::after, .button.is-loading::after { content: ""; position: absolute; inset: 0px; margin: auto; width: 14px; height: 14px; border-width: 2px; border-style: solid; border-color: currentcolor transparent currentcolor currentcolor; border-image: none; border-radius: 50%; animation: 600ms linear 0s infinite normal none running eduminate-spin; }
@keyframes eduminate-spin { 
  100% { transform: rotate(360deg); }
}
[data-cart-count], .cart-badge { display: inline-block; font-variant-numeric: tabular-nums; transform-origin: center center; transition: transform 180ms var(--ease-spring); }
@keyframes eduminate-cart-pop { 
  0% { transform: scale(1); }
  35% { transform: scale(1.32); }
  70% { transform: scale(0.92); }
  100% { transform: scale(1); }
}
[data-cart-count].cart-pop, [data-cart-count].animate-cart-pop, .cart-badge.cart-pop, .cart-badge.animate-cart-pop { animation: eduminate-cart-pop 360ms var(--ease-spring); }
.cart-spinner { display: inline-block; width: 16px; height: 16px; border-width: 2px; border-style: solid; border-color: currentcolor rgba(255, 255, 255, 0.35) rgba(255, 255, 255, 0.35); border-image: none; border-radius: 50%; animation: 600ms linear 0s infinite normal none running eduminate-spin; vertical-align: middle; margin-inline-end: 6px; }
.card-action .cart-spinner { margin-inline-end: 0px; width: 15px; height: 15px; }
.card-action.is-loading, .single_add_to_cart_button.is-loading { pointer-events: none !important; opacity: 0.85 !important; cursor: wait !important; }
.card-action.is-added, .card-action.is-in-cart, .single_add_to_cart_button.is-added, .single_add_to_cart_button.is-in-cart { cursor: pointer; background-color: var(--teal) !important; color: rgb(255, 255, 255) !important; border-color: var(--teal) !important; }
.single_add_to_cart_button.is-added svg, .single_add_to_cart_button.is-in-cart svg, .card-action.is-added svg, .card-action.is-in-cart svg { stroke: currentcolor; }
.single_add_to_cart_button.has-error, .card-action.has-error { border-color: rgb(239, 68, 68) !important; }
.cart-direct-link { display: block; text-align: center; margin-top: 10px; padding: 10px 16px; border: 1.5px solid var(--teal); color: var(--teal); background: transparent; border-radius: var(--radius); font-weight: 600; text-decoration: none; transition: all var(--duration); }
.cart-direct-link:hover { background: var(--teal); color: rgb(255, 255, 255); }
.toast { position: fixed; bottom: 24px; left: auto; right: 24px; z-index: 99999; background: var(--ink, var(--pal-blue-900)); color: rgb(255, 255, 255); padding: 12px 18px; border-radius: 8px; font-size: var(--fs-sm); font-weight: 500; box-shadow: rgba(0, 0, 0, 0.3) 0px 10px 25px -5px, rgba(0, 0, 0, 0.2) 0px 8px 10px -6px; display: flex; align-items: center; gap: 10px; opacity: 0; transform: translateY(14px); pointer-events: none; transition: opacity 220ms, transform 220ms; max-width: 90vw; }
.toast.visible { opacity: 1; transform: translateY(0px); pointer-events: auto; }
/* Phones: centred, one line where it fits (styles.css also sets left:50%; with right:24px the box was squeezed into half the width). */
@media (max-width: 767px) { .toast { left: 50%; right: auto; width: max-content; max-width: calc(100vw - 32px); transform: translate(-50%, 14px); } .toast.visible { transform: translate(-50%, 0); } }
.toast-cart-link { font-weight: 600; margin-left: 6px; padding: 2px 6px; border-radius: 4px; display: inline-flex; align-items: center; gap: 4px; color: rgb(94, 234, 212) !important; text-decoration: underline !important; }
.toast-cart-link:hover, .toast-cart-link:focus-visible { background: rgba(94, 234, 212, 0.15); outline: rgb(94, 234, 212) solid 2px; outline-offset: 1px; }
.toast-check-icon { width: 18px; height: 18px; color: rgb(52, 211, 153); flex-shrink: 0; }
.toast-error-icon { width: 18px; height: 18px; color: rgb(248, 113, 113); flex-shrink: 0; }
[data-reveal] { opacity: 1; transform: none; }
html.js-motion [data-reveal] { opacity: 0; transform: translateY(16px); transition-property: opacity, transform; transition-duration: var(--motion-reveal, 320ms); transition-timing-function: var(--ease-out); will-change: opacity, transform; }
html.js-motion [data-reveal].is-revealed { opacity: 1; transform: translateY(0px); }
dialog.modal { opacity: 0; transform: scale(0.98); transition-property: opacity, transform; transition-duration: 200ms; transition-timing-function: var(--ease-out); }
dialog.modal[open] { opacity: 1; transform: scale(1); }
dialog.modal::backdrop { opacity: 0; transition-property: opacity; transition-duration: 200ms; transition-timing-function: ease-out; }
dialog.modal[open]::backdrop { opacity: 1; }
.viewer-stage-img { transition-property: opacity; transition-duration: 160ms; transition-timing-function: ease-out; }
.viewer-stage-img.is-switching { opacity: 0.7; }
.viewer-thumb-btn { transition-property: transform, border-color, box-shadow; transition-duration: 150ms; transition-timing-function: ease-out; }
.viewer-thumb-btn:hover { transform: translateY(-2px); }
.viewer-thumb-btn:active { transform: scale(0.96); }
@media (prefers-reduced-motion: reduce) {
  *, ::before, ::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
  .product-card, .button, .card-action, .category-tile, .favorite, dialog.modal, [data-reveal], [data-cart-count] { transform: none !important; opacity: 1 !important; }
}
.woocommerce-breadcrumb { display: none !important; }
@keyframes fadeInPane { 
  0% { opacity: 0; transform: translateY(6px); }
  100% { opacity: 1; transform: translateY(0px); }
}
.has-field-error { border-color: rgb(239, 68, 68) !important; background-color: rgb(255, 245, 245) !important; }
[data-theme="dark"] .has-field-error { background-color: rgba(239, 68, 68, 0.12) !important; }
#place_order.is-submitting, #place_order_free.is-submitting { opacity: 0.75 !important; pointer-events: none !important; cursor: wait !important; }
.order-status-card { display: flex; align-items: flex-start; gap: 18px; padding: 24px; border-radius: 14px; margin-bottom: 30px; }
.order-status-card.status-success { background: linear-gradient(135deg, rgba(16, 185, 129, 0.1), rgba(16, 185, 129, 0.04)); border: 2px solid rgb(16, 185, 129); }
[data-theme="dark"] .order-status-card.status-success { background: linear-gradient(135deg, rgba(16, 185, 129, 0.15), rgba(16, 185, 129, 0.05)); }
.order-status-card.status-success .status-icon-wrap { color: rgb(16, 185, 129); }
.order-status-card.status-pending { background: linear-gradient(135deg, rgba(245, 158, 11, 0.1), rgba(245, 158, 11, 0.04)); border: 2px solid rgb(245, 158, 11); }
[data-theme="dark"] .order-status-card.status-pending { background: linear-gradient(135deg, rgba(245, 158, 11, 0.15), rgba(245, 158, 11, 0.05)); }
.order-status-card.status-pending .status-icon-wrap { color: rgb(245, 158, 11); }
.order-status-card.status-failed { background: linear-gradient(135deg, rgba(239, 68, 68, 0.1), rgba(239, 68, 68, 0.04)); border: 2px solid rgb(239, 68, 68); }
[data-theme="dark"] .order-status-card.status-failed { background: linear-gradient(135deg, rgba(239, 68, 68, 0.15), rgba(239, 68, 68, 0.05)); }
.order-status-card.status-failed .status-icon-wrap { color: rgb(239, 68, 68); }
.status-content h1 { font-size: var(--fs-h3); margin: 0px 0px 6px; color: var(--text); }
[data-theme="dark"] .status-content h1 { color: rgb(248, 250, 252); }
.status-subtitle { font-size: var(--fs-base); color: var(--text-muted); margin: 0px; line-height: 1.5; }
[data-theme="dark"] .status-subtitle { color: rgb(203, 213, 225); }
.status-explanation { margin-top: 12px; font-size: var(--fs-sm); line-height: 1.5; }
.status-actions { display: flex; gap: 12px; margin-top: 16px; }
.button-retry { background: var(--primary) !important; color: rgb(255, 255, 255) !important; padding: 10px 18px !important; border-radius: 8px !important; font-weight: 600 !important; }
.downloads-grid { display: flex; flex-direction: column; gap: 12px; margin-bottom: 20px; }
.download-card { display: flex; align-items: center; justify-content: space-between; gap: 16px; background: var(--surface-muted, var(--pal-sky-50b)); border: 1px solid var(--line); border-radius: 10px; padding: 16px 20px; }
[data-theme="dark"] .download-card { background: rgb(9, 28, 47); border-color: rgba(255, 255, 255, 0.1); }
.download-file-info .file-badge { display: inline-block; font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; color: rgb(12, 55, 94); background: rgba(12, 55, 94, 0.1); padding: 2px 8px; border-radius: 4px; margin-bottom: 4px; }
[data-theme="dark"] .download-file-info .file-badge { color: rgb(255, 180, 0); background: rgba(255, 180, 0, 0.15); }
.download-title { font-size: var(--fs-base); margin: 0px; color: var(--text); }
[data-theme="dark"] .download-title { color: rgb(241, 245, 249); }
.button-download { display: inline-flex !important; align-items: center !important; gap: 8px !important; background: rgb(16, 185, 129) !important; color: rgb(255, 255, 255) !important; padding: 10px 18px !important; border-radius: 8px !important; font-weight: 700 !important; box-shadow: rgba(16, 185, 129, 0.25) 0px 2px 8px !important; }
.button-download:hover { background: rgb(5, 150, 105) !important; }
.receipt-title { font-size: var(--fs-lg); margin: 0px 0px 18px; }
.receipt-meta-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 18px; list-style: none; padding: 0px 0px 20px; margin: 0px 0px 20px; border-bottom: 1px solid var(--line); }
[data-theme="dark"] .receipt-meta-grid { border-color: rgba(255, 255, 255, 0.1); }
.receipt-meta-grid li { display: flex; flex-direction: column; gap: 4px; }
.meta-label { font-size: var(--fs-xs); text-transform: uppercase; color: var(--text-muted); font-weight: 600; letter-spacing: 0.03em; }
.meta-val { font-size: var(--fs-base); color: var(--text); word-break: break-word; }
[data-theme="dark"] .meta-val { color: rgb(241, 245, 249); }
@media (max-width: 640px) {
  .download-card { flex-direction: column; align-items: stretch; }
  .button-download { justify-content: center; }
}
@media (max-width: 480px) {
  .step-item:not(.is-active) .step-label { display: none !important; }
}
.button:not(.button-outline):not(.btn-secondary):not(.button-text):not(.btn-back-step):not([class*="outline"]):not([class*="ghost"]):not(#paypal-button-container *):not(.ppcp-gateway-button):not([class*="paypal"]), .btn-primary, .btn-cta-primary, .single_add_to_cart_button, #place_order, #place_order_free, .btn-next-step, .btn-complete-free, .checkout-button, .contact-submit-btn, .support-form button[type="submit"], .woocommerce-form-login__submit, .woocommerce-form-register__submit, button[name="login"], button[name="register"], button[name="apply_coupon"], .woocommerce-Button.button, .empty-cart-btn { min-height: 48px !important; height: auto !important; padding: 12px 24px !important; border-radius: 8px !important; font-family: var(--font) !important; font-size: var(--fs-base) !important; font-weight: 600 !important; line-height: 1.4 !important; letter-spacing: -0.01em !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; text-align: center !important; white-space: normal !important; word-break: break-word !important; cursor: pointer !important; box-sizing: border-box !important; text-decoration: none !important; transition: background-color var(--duration, 180ms), border-color var(--duration, 180ms), transform 120ms ease, box-shadow var(--duration, 180ms) !important; border: 1px solid transparent !important; color: rgb(255, 255, 255) !important; }
.button:not(.button-outline):not(.btn-secondary):not(.button-text):not(.btn-back-step):not([class*="outline"]):not([class*="ghost"]):not(#paypal-button-container *):not(.ppcp-gateway-button):not([class*="paypal"]) svg, .btn-primary svg, .btn-cta-primary svg, .single_add_to_cart_button svg, #place_order svg, #place_order_free svg, .btn-next-step svg, .btn-complete-free svg, .checkout-button svg, .contact-submit-btn svg, .support-form button[type="submit"] svg, button[name="login"] svg, button[name="register"] svg, button[name="apply_coupon"] svg, .empty-cart-btn svg { color: rgb(255, 255, 255) !important; stroke: rgb(255, 255, 255) !important; fill: currentcolor !important; }
.button:not(.button-outline):not(.btn-secondary):not(.button-text):not(.btn-back-step):not([class*="outline"]):not([class*="ghost"]):not(#paypal-button-container *):not(.ppcp-gateway-button):not([class*="paypal"]) *, .btn-primary *, .btn-cta-primary *, .single_add_to_cart_button *, #place_order *, #place_order_free *, .btn-next-step *, .btn-complete-free *, .checkout-button *, .contact-submit-btn * { color: inherit !important; }
:root .button:not(.button-outline):not(.btn-secondary):not(.button-text):not(.btn-back-step):not([class*="outline"]):not([class*="ghost"]):not(#paypal-button-container *):not(.ppcp-gateway-button):not([class*="paypal"]), :root .btn-primary, :root .btn-cta-primary, :root .single_add_to_cart_button, :root .checkout-button, :root button[name="login"], :root button[name="register"], :root .woocommerce-Button.button, [data-theme="light"] .button:not(.button-outline):not(.btn-secondary):not(.button-text):not(.btn-back-step):not([class*="outline"]):not([class*="ghost"]):not(#paypal-button-container *):not(.ppcp-gateway-button):not([class*="paypal"]), [data-theme="light"] .btn-primary, [data-theme="light"] .btn-cta-primary, [data-theme="light"] .single_add_to_cart_button, [data-theme="light"] .checkout-button, [data-theme="light"] button[name="login"], [data-theme="light"] button[name="register"], [data-theme="light"] .woocommerce-Button.button { background-color: var(--navy) !important; border-color: var(--navy) !important; color: rgb(255, 255, 255) !important; }
:root .button:not(.button-outline):not(.btn-secondary):not(.button-text):not(.btn-back-step):hover, :root .btn-primary:hover, :root .btn-cta-primary:hover, :root .single_add_to_cart_button:hover, :root .checkout-button:hover, :root button[name="login"]:hover, :root button[name="register"]:hover, :root .woocommerce-Button.button:hover, [data-theme="light"] .button:not(.button-outline):not(.btn-secondary):not(.button-text):not(.btn-back-step):hover, [data-theme="light"] .btn-primary:hover, [data-theme="light"] .btn-cta-primary:hover, [data-theme="light"] .single_add_to_cart_button:hover, [data-theme="light"] .checkout-button:hover, [data-theme="light"] button[name="login"]:hover, [data-theme="light"] button[name="register"]:hover, [data-theme="light"] .woocommerce-Button.button:hover { background-color: rgb(7, 37, 63) !important; border-color: rgb(7, 37, 63) !important; color: rgb(255, 255, 255) !important; }
[data-theme="dark"] .button:not(.button-outline):not(.btn-secondary):not(.button-text):not(.btn-back-step):not([class*="outline"]):not([class*="ghost"]):not(#paypal-button-container *):not(.ppcp-gateway-button):not([class*="paypal"]), [data-theme="dark"] .btn-primary, [data-theme="dark"] .btn-cta-primary, [data-theme="dark"] .single_add_to_cart_button, [data-theme="dark"] .checkout-button, [data-theme="dark"] button[name="login"], [data-theme="dark"] button[name="register"], [data-theme="dark"] .woocommerce-Button.button { background-color: rgb(29, 78, 216) !important; border-color: rgb(29, 78, 216) !important; color: rgb(255, 255, 255) !important; }
[data-theme="dark"] .button:not(.button-outline):not(.btn-secondary):not(.button-text):not(.btn-back-step):hover, [data-theme="dark"] .btn-primary:hover, [data-theme="dark"] .btn-cta-primary:hover, [data-theme="dark"] .single_add_to_cart_button:hover, [data-theme="dark"] .checkout-button:hover, [data-theme="dark"] button[name="login"]:hover, [data-theme="dark"] button[name="register"]:hover, [data-theme="dark"] .woocommerce-Button.button:hover { background-color: rgb(30, 64, 175) !important; border-color: rgb(30, 64, 175) !important; color: rgb(255, 255, 255) !important; }
:root .button-navy, :root .btn-next-step, :root .btn-complete-free, :root button[name="apply_coupon"], [data-theme="light"] .button-navy, [data-theme="light"] .btn-next-step, [data-theme="light"] .btn-complete-free, [data-theme="light"] button[name="apply_coupon"] { background-color: rgb(29, 78, 216) !important; border-color: rgb(29, 78, 216) !important; color: rgb(255, 255, 255) !important; }
:root .button-navy:hover, :root .btn-next-step:hover, :root .btn-complete-free:hover, :root button[name="apply_coupon"]:hover, [data-theme="light"] .button-navy:hover, [data-theme="light"] .btn-next-step:hover, [data-theme="light"] .btn-complete-free:hover, [data-theme="light"] button[name="apply_coupon"]:hover { background-color: rgb(30, 64, 175) !important; border-color: rgb(30, 64, 175) !important; color: rgb(255, 255, 255) !important; }
[data-theme="dark"] .button-navy, [data-theme="dark"] .btn-next-step, [data-theme="dark"] .btn-complete-free, [data-theme="dark"] button[name="apply_coupon"] { background-color: rgb(37, 99, 235) !important; border-color: rgb(37, 99, 235) !important; color: rgb(255, 255, 255) !important; }
[data-theme="dark"] .button-navy:hover, [data-theme="dark"] .btn-next-step:hover, [data-theme="dark"] .btn-complete-free:hover, [data-theme="dark"] button[name="apply_coupon"]:hover { background-color: rgb(29, 78, 216) !important; border-color: rgb(29, 78, 216) !important; color: rgb(255, 255, 255) !important; }
:root .button.alt, :root #place_order, :root .btn-purple, [data-theme="light"] .button.alt, [data-theme="light"] #place_order, [data-theme="light"] .btn-purple { background-color: rgb(91, 33, 182) !important; border-color: rgb(91, 33, 182) !important; color: rgb(255, 255, 255) !important; }
:root .button.alt:hover, :root #place_order:hover, :root .btn-purple:hover, [data-theme="light"] .button.alt:hover, [data-theme="light"] #place_order:hover, [data-theme="light"] .btn-purple:hover { background-color: rgb(76, 29, 149) !important; border-color: rgb(76, 29, 149) !important; color: rgb(255, 255, 255) !important; }
[data-theme="dark"] .button.alt, [data-theme="dark"] #place_order, [data-theme="dark"] .btn-purple { background-color: rgb(109, 40, 217) !important; border-color: rgb(109, 40, 217) !important; color: rgb(255, 255, 255) !important; }
[data-theme="dark"] .button.alt:hover, [data-theme="dark"] #place_order:hover, [data-theme="dark"] .btn-purple:hover { background-color: rgb(91, 33, 182) !important; border-color: rgb(91, 33, 182) !important; color: rgb(255, 255, 255) !important; }
:root .contact-submit-btn, :root .support-form button[type="submit"], [data-theme="light"] .contact-submit-btn, [data-theme="light"] .support-form button[type="submit"] { background-color: var(--navy) !important; border-color: var(--navy) !important; color: rgb(255, 255, 255) !important; }
:root .contact-submit-btn:hover, :root .support-form button[type="submit"]:hover, [data-theme="light"] .contact-submit-btn:hover, [data-theme="light"] .support-form button[type="submit"]:hover { background-color: rgb(7, 37, 63) !important; border-color: rgb(7, 37, 63) !important; color: rgb(255, 255, 255) !important; }
[data-theme="dark"] .contact-submit-btn, [data-theme="dark"] .support-form button[type="submit"] { background-color: rgb(29, 78, 216) !important; border-color: rgb(29, 78, 216) !important; color: rgb(255, 255, 255) !important; }
[data-theme="dark"] .contact-submit-btn:hover, [data-theme="dark"] .support-form button[type="submit"]:hover { background-color: rgb(30, 64, 175) !important; border-color: rgb(30, 64, 175) !important; color: rgb(255, 255, 255) !important; }
.button-outline, .btn-secondary, .button-text, .btn-back-step, a.button-outline, a.btn-secondary, a.button-text { background: transparent !important; color: var(--primary) !important; border: 1px solid var(--line-strong) !important; }
[data-theme="dark"] .button-outline, [data-theme="dark"] .btn-secondary, [data-theme="dark"] .button-text, [data-theme="dark"] .btn-back-step, [data-theme="dark"] a.button-outline, [data-theme="dark"] a.btn-secondary, [data-theme="dark"] a.button-text { background: transparent !important; color: rgb(147, 197, 253) !important; border-color: rgba(255, 255, 255, 0.2) !important; }
.input-text, input[type="text"], input[type="email"], input[type="password"], input[type="tel"], input[type="number"], input[type="search"], textarea, select, .woocommerce-Input, .woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea, .woocommerce-input-wrapper input { background-color: var(--input-bg) !important; color: var(--input-text) !important; border: 1px solid var(--input-border) !important; border-radius: 8px !important; padding: 12px 14px !important; font-family: var(--font) !important; font-size: var(--fs-base) !important; line-height: 1.4 !important; box-sizing: border-box !important; width: 100% !important; display: block !important; transition: border-color 160ms, box-shadow 160ms !important; }
[data-theme="dark"] .input-text, [data-theme="dark"] input[type="text"], [data-theme="dark"] input[type="email"], [data-theme="dark"] input[type="password"], [data-theme="dark"] input[type="tel"], [data-theme="dark"] input[type="number"], [data-theme="dark"] input[type="search"], [data-theme="dark"] textarea, [data-theme="dark"] select, [data-theme="dark"] .woocommerce-Input, [data-theme="dark"] .woocommerce form .form-row input.input-text, [data-theme="dark"] .woocommerce form .form-row textarea, [data-theme="dark"] .woocommerce-input-wrapper input { background-color: var(--input-bg) !important; color: var(--input-text) !important; border-color: var(--input-border) !important; }
[data-theme="light"] .input-text, [data-theme="light"] input[type="text"], [data-theme="light"] input[type="email"], [data-theme="light"] input[type="password"], [data-theme="light"] input[type="tel"], [data-theme="light"] input[type="number"], [data-theme="light"] input[type="search"], [data-theme="light"] textarea, [data-theme="light"] select, [data-theme="light"] .woocommerce-Input, [data-theme="light"] .woocommerce form .form-row input.input-text, [data-theme="light"] .woocommerce form .form-row textarea, [data-theme="light"] .woocommerce-input-wrapper input { background-color: var(--input-bg) !important; color: var(--input-text) !important; border-color: var(--input-border) !important; }
input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:focus, textarea:-webkit-autofill, textarea:-webkit-autofill:hover, textarea:-webkit-autofill:focus, select:-webkit-autofill, select:-webkit-autofill:hover, select:-webkit-autofill:focus { -webkit-text-fill-color: var(--input-text) !important; box-shadow: 0 0 0 1000px var(--input-bg) inset !important; transition: border-color 160ms, box-shadow 160ms !important; }
[data-theme="dark"] input:-webkit-autofill, [data-theme="dark"] input:-webkit-autofill:hover, [data-theme="dark"] input:-webkit-autofill:focus, [data-theme="dark"] textarea:-webkit-autofill, [data-theme="dark"] textarea:-webkit-autofill:hover, [data-theme="dark"] textarea:-webkit-autofill:focus, [data-theme="dark"] select:-webkit-autofill, [data-theme="dark"] select:-webkit-autofill:hover, [data-theme="dark"] select:-webkit-autofill:focus { -webkit-text-fill-color: var(--input-text) !important; box-shadow: 0 0 0 1000px var(--input-bg) inset !important; }
[data-theme="light"] input:-webkit-autofill, [data-theme="light"] input:-webkit-autofill:hover, [data-theme="light"] input:-webkit-autofill:focus, [data-theme="light"] textarea:-webkit-autofill, [data-theme="light"] textarea:-webkit-autofill:hover, [data-theme="light"] textarea:-webkit-autofill:focus, [data-theme="light"] select:-webkit-autofill, [data-theme="light"] select:-webkit-autofill:hover, [data-theme="light"] select:-webkit-autofill:focus { -webkit-text-fill-color: var(--input-text) !important; box-shadow: 0 0 0 1000px var(--input-bg) inset !important; }
label, .form-row label, .woocommerce form .form-row label, .field > label, .woocommerce-form-row label { color: var(--input-label) !important; font-weight: 600 !important; font-size: var(--fs-sm) !important; margin-bottom: 6px !important; display: block !important; }
[data-theme="dark"] label, [data-theme="dark"] .form-row label, [data-theme="dark"] .woocommerce form .form-row label, [data-theme="dark"] .field > label, [data-theme="dark"] .woocommerce-form-row label { color: var(--input-label) !important; }
:root input:focus, :root textarea:focus, :root select:focus, [data-theme="light"] input:focus, [data-theme="light"] textarea:focus, [data-theme="light"] select:focus { border-color: var(--input-border-focus) !important; box-shadow: 0 0 0 3px var(--input-focus-ring) !important; outline: none !important; }
[data-theme="dark"] input:focus, [data-theme="dark"] textarea:focus, [data-theme="dark"] select:focus { border-color: var(--input-border-focus) !important; box-shadow: 0 0 0 3px var(--input-focus-ring) !important; outline: none !important; }
input:disabled, textarea:disabled, select:disabled, input[readonly], textarea[readonly] { opacity: 0.65 !important; cursor: not-allowed !important; background-color: var(--wash) !important; }
[data-theme="dark"] input:disabled, [data-theme="dark"] textarea:disabled, [data-theme="dark"] select:disabled, [data-theme="dark"] input[readonly], [data-theme="dark"] textarea[readonly] { background-color: var(--wash) !important; }
.woocommerce form .form-row.woocommerce-invalid input.input-text, .has-field-error, input.is-invalid, textarea.is-invalid { border-color: rgb(239, 68, 68) !important; background-color: rgb(254, 242, 242) !important; }
[data-theme="dark"] .woocommerce form .form-row.woocommerce-invalid input.input-text, [data-theme="dark"] .has-field-error, [data-theme="dark"] input.is-invalid, [data-theme="dark"] textarea.is-invalid { border-color: rgb(239, 68, 68) !important; background-color: rgba(239, 68, 68, 0.12) !important; }
.woocommerce form .form-row.woocommerce-validated input.input-text, input.is-valid, textarea.is-valid { border-color: rgb(16, 185, 129) !important; }
.woocommerce form.checkout_coupon, .woocommerce form.login, .woocommerce form.register { border: 1px solid var(--line) !important; padding: 20px !important; border-radius: 12px !important; background: var(--surface) !important; }
.woocommerce form.checkout_coupon .form-row-first { width: 68% !important; float: left !important; margin-bottom: 0px !important; }
.woocommerce form.checkout_coupon .form-row-last { width: 30% !important; float: right !important; margin-bottom: 0px !important; }
@media (max-width: 600px) {
  .woocommerce form.checkout_coupon .form-row-first, .woocommerce form.checkout_coupon .form-row-last { width: 100% !important; float: none !important; margin-bottom: 12px !important; }
}
#paypal-button-container, #paypal-button-container *, .ppcp-gateway-button, .ppcp-gateway-button *, [class*="paypal"], [id*="paypal"], .StripeElement, .StripeElement * { min-height: initial !important; height: initial !important; border-radius: initial !important; }
.eduminate-hidden-coupon-submit { position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip: rect(0px, 0px, 0px, 0px) !important; clip-path: inset(50%) !important; white-space: nowrap !important; }

/* ========================================================================
   Checkout finish: calm spacing, clear account handoff, and gold CTA
   ======================================================================== */

@keyframes eduminate-cta-shimmer {
  0%, 100% { background-position: 100% 0; }
  50% { background-position: 0 0; }
}

/* The final stage is the access moment, not an invented completion percentage. */

@keyframes eduminate-step-glow {
  0%, 100% { background-position: 100% 0; opacity: 0.72; }
  50% { background-position: 0 0; opacity: 1; }
}

/* ==========================================================================
   My Account: spacious library dashboard
   ========================================================================== */

.eduminate-download-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  width: min(100%, 475px);
  min-height: 52px;
  padding: 12px 22px;
  border: 1px solid var(--pal-sky-500b);
  border-radius: 10px;
  color: var(--pal-white) !important;
  background: linear-gradient(135deg, var(--pal-sky-400) 0%, var(--pal-sky-500b) 100%);
  box-shadow: 0 8px 16px rgba(20, 107, 224, 0.2);
  font-size: var(--fs-base);
  font-weight: 800;
  line-height: 1.25;
  text-align: center;
  transition: transform var(--duration), box-shadow var(--duration), filter var(--duration);
}

.eduminate-download-button:hover {
  transform: translateY(-2px);
  color: var(--pal-white) !important;
  filter: brightness(1.04);
  box-shadow: 0 11px 22px rgba(20, 107, 224, 0.27);
}

.eduminate-download-button .icon {
  width: 20px;
  height: 20px;
}

/* Library: products with several files show a compact list, not one big button per file. */

.eduminate-activity-row strong,
.eduminate-activity-row span:not(.eduminate-activity-file):not(.eduminate-activity-meta) {
  display: block;
}

@media (max-width: 720px) {

  .eduminate-download-button {
    min-height: 50px;
    font-size: var(--fs-sm);
  }
}

@media (max-width: 500px) {

  .eduminate-library-actions,
  .eduminate-download-button {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .eduminate-account-secondary-link,
  .eduminate-download-button,
  body.woocommerce-account.logged-in .woocommerce-MyAccount-navigation li a {
    transition: none !important;
  }
}

/* My Account layout: neutralise WooCommerce float widths so the grid tracks are actually filled. */
/* My Account community note */

/* ==========================================================================
   Sign in / create account (woocommerce/myaccount/form-login.php)
   Form first on phones; benefits panel beside it from 900px.
   ========================================================================== */
.policy-page:has(.edu-auth) { padding-block: 20px 8px !important; }

/* Product page: Buy Now (gold) under Add to Cart */
a.edu-buy-now.edu-buy-now { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 54px; padding: 12px 24px; border-radius: 10px; background: var(--gold); color: var(--navy) !important; font-size: var(--fs-base); font-weight: 800; letter-spacing: -0.01em; text-decoration: none !important; box-shadow: 0 8px 20px rgba(255, 180, 0, 0.3); transition: background-color 0.18s, transform 0.12s, box-shadow 0.18s; box-sizing: border-box; }
a.edu-buy-now.edu-buy-now svg { stroke: var(--navy) !important; color: var(--navy) !important; }
a.edu-buy-now.edu-buy-now:hover { background: var(--pal-amber-500); transform: translateY(-1px); box-shadow: 0 12px 24px rgba(255, 180, 0, 0.38); }
a.edu-buy-now.edu-buy-now:focus-visible { outline: 3px solid var(--navy); outline-offset: 2px; }

/* Checkout: gold Place order, order box stays in view, compact header */
body.woocommerce-checkout:not(.woocommerce-order-received) .page-heading h1 { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Product page: compact buy bar that appears after the buy box scrolls away */
/* Purchase card: price row and buttons stop stretching the full column */

/* Product page layout: big cover left, narrow sticky buy box right, readable body below */

/* Shop filter bar: pills wrap on desktop, grade filter and sort share one row */

/* Home: how it works + short FAQ */
.how-it-works { margin-top: 56px; }
.how-it-works h2, .home-faq h2 { font-size: var(--fs-h2); font-weight: 800; letter-spacing: -0.02em; margin: 0 0 20px; }
.how-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 18px; grid-template-columns: 1fr; counter-reset: none; }
@media (min-width: 860px) { .how-steps { grid-template-columns: repeat(3, 1fr); gap: 24px; } }
.how-steps li { background: var(--surface); border: 1px solid var(--line); border-radius: 14px; padding: 22px; }
.how-step-num { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50%; background: var(--gold); color: var(--navy); font-weight: 800; margin-bottom: 12px; }
.how-steps h3 { font-size: var(--fs-base); font-weight: 800; margin: 0 0 6px; }
.how-steps p { margin: 0; color: var(--muted); line-height: 1.6; }
.home-faq { margin-top: 56px; }
.home-faq-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; }
.home-faq-head h2 { margin: 0; }
.home-faq-list { display: grid; gap: 10px; }
.home-faq-list details { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 14px 18px; }
.home-faq-list summary { cursor: pointer; font-weight: 700; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.home-faq-list summary::-webkit-details-marker { display: none; }
.home-faq-list summary::after { content: "+"; font-size: var(--fs-lg); font-weight: 700; color: var(--muted); }
.home-faq-list p { margin: 10px 0 0; color: var(--muted); line-height: 1.65; }

/* Checkout: crypto payment method block */

/* Product card v2: square cover, price badge on the art, meta chips */
.product-card .cover-link img { aspect-ratio: 1 / 1 !important; object-position: center !important; }
.product-card .card-price-badge { position: absolute; z-index: 3; top: 17px; left: 16px; padding: 4px 11px; border-radius: 999px; background: var(--pal-blue-500); color: var(--pal-white); font-size: var(--fs-xs); font-weight: 800; letter-spacing: -0.01em; box-shadow: 0 2px 8px rgba(10,37,77,0.22); }
.product-card .card-price-badge.is-free { background: var(--pal-teal-700); }
.product-card .price.is-hidden-by-badge { display: none; }
.product-card .card-bottom { justify-content: flex-end; margin-top: 10px; }
.card-meta { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; margin: 10px 0 0; padding: 0; }
.card-meta li { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 6px; background: var(--wash); border: 1px solid var(--line); font-size: var(--fs-xs); font-weight: 700; color: var(--muted); white-space: nowrap; }
[data-theme="dark"] .product-card .card-price-badge { box-shadow: 0 2px 10px rgba(0,0,0,0.4); }

/* Shop v2: sidebar + free banner + draggable grade strip */
.edu-free-cta { display: inline-flex; align-items: center; gap: 8px; padding: 12px 20px; border-radius: 999px; background: var(--pal-teal-700); color: var(--pal-white) !important; font-weight: 800; text-decoration: none !important; white-space: nowrap; }
.edu-free-cta:hover { background: var(--pal-teal-700b); }
.edu-free-cta svg { stroke: var(--pal-white); }

/* Card v3: shorter body, no cart button (the card opens the product page) */
.product-card .card-body { padding: 12px 12px 12px; }
.product-card .card-body h3 { min-height: 0; font-size: var(--fs-sm); line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.product-card .card-body > p { margin-top: 5px; font-size: var(--fs-xs); line-height: 1.45; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }
.product-card .card-meta { margin-top: 8px; }
.product-card .card-bottom { margin-top: 10px; align-items: center; }
.product-card .card-action--view { background: transparent; color: var(--muted); width: 30px; height: 30px; transition: transform 0.18s, color 0.18s; }
.product-card:hover .card-action--view { color: var(--pal-blue-500); transform: translateX(3px); }
.product-card .card-action--view svg { stroke: currentColor; }

/* Motion: quiet by default, disabled for anyone who asks for less */
@media (prefers-reduced-motion: no-preference) {
  .product-card { transition: transform 0.22s cubic-bezier(0.16,1,0.3,1), box-shadow 0.22s, border-color 0.22s; }
  .product-card:hover .cover-link img { transform: scale(1.04); }
  .product-card .cover-link img { transition: transform 0.35s cubic-bezier(0.16,1,0.3,1); }
  .product-card .cover-link { overflow: hidden; }
  .edu-free-cta, .hero-browse-cta, a.edu-buy-now { transition: transform 0.16s ease, background-color 0.18s, box-shadow 0.18s; }
  .edu-free-cta:hover, .hero-browse-cta:hover { transform: translateY(-2px); }
  .card-price-badge { transition: transform 0.2s ease; }
  .product-card:hover .card-price-badge { transform: scale(1.06); }
}

/* Chips never show a cut word ("1st-"): one 26 px row, and a chip that does not fit wraps to a
   second row that stays hidden. Only a single chip wider than the card gets an ellipsis. */
.product-card .card-meta { flex-wrap: wrap; max-height: 26px; overflow: hidden; }
.product-card .card-meta li { flex-shrink: 0; box-sizing: border-box; height: 26px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
/* The one-line description is for tablet and desktop; phones show title and chips only. */
@media (max-width: 767px) { .product-card .card-body > p { display: none; } }
/* The title link covers the whole card body (a 44 px+ target instead of a 2-line text link);
   real buttons in the body stay on top of it. */
.product-card .card-body { position: relative; }
.product-card .card-body h3 a::after { content: ""; position: absolute; inset: 0; }
.product-card .card-body .card-action:not(.card-action--view) { position: relative; z-index: 1; }
@media (max-width: 520px) { .product-card .card-meta li:nth-child(n+3) { display: none; } .product-card .card-body { padding: 10px; } .product-card .card-meta { margin-top: 4px; } .product-card .card-bottom { margin-top: 6px; } .product-card .card-body > p { margin-top: 3px; } }

/* Grades live in the sidebar on desktop; the strip is the mobile fallback */

/* Home hero + category cards, following the owner's concept art */
.cat-card-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(104px, 1fr)); gap: 12px; }
.cat-card { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 9px; padding: 16px 10px; border-radius: 14px; border: 1px solid var(--line); background: var(--surface); text-decoration: none !important; text-align: center; transition: transform 0.16s ease, border-color 0.18s, box-shadow 0.18s; }
.cat-card:hover { transform: translateY(-3px); border-color: var(--pal-blue-500); box-shadow: 0 10px 22px rgba(10, 37, 77, 0.1); }
.cat-card.is-active .cat-card-label { color: var(--navy); }
.cat-card.is-active .cat-card-icon { color: var(--navy); }
.cat-card-icon { display: inline-flex; width: 34px; height: 34px; align-items: center; justify-content: center; }
.cat-card-icon.tone-orange { color: var(--pal-orange-500c); }
.cat-card-icon.tone-red { color: var(--pal-red-400b); }
.cat-card-icon.tone-blue { color: var(--pal-sky-400b); }
.cat-card-icon.tone-green { color: var(--pal-green-600b); }
.cat-card-icon.tone-teal { color: var(--pal-teal-600c); }
.cat-card-icon.tone-indigo { color: var(--pal-blue-400); }
.cat-card-icon.tone-purple { color: var(--pal-indigo-300); }
.cat-card-icon.tone-yellow { color: var(--pal-orange-500b); }
.cat-card-icon.tone-pink { color: var(--pal-pink-400b); }
.cat-card-label { font-size: var(--fs-sm); font-weight: 700; color: var(--text); line-height: 1.25; }
@media (max-width: 600px) { .cat-card-row { grid-template-columns: repeat(auto-fit, minmax(92px, 1fr)); gap: 9px; } }

/* Hero canvas: soft blue wash like the reference, not cream */

/* Home quick filter row */

/* Sidebar rows: icon + label + count, like the reference */
.side-icon { display: inline-flex; width: 22px; height: 22px; align-items: center; justify-content: center; flex: none; }
.side-icon.tone-orange { color: var(--pal-orange-500c); } .side-icon.tone-red { color: var(--pal-red-400b); } .side-icon.tone-blue { color: var(--pal-sky-400b); } .side-icon.tone-green { color: var(--pal-green-600b); } .side-icon.tone-teal { color: var(--pal-teal-600c); } .side-icon.tone-indigo { color: var(--pal-blue-400); } .side-icon.tone-purple { color: var(--pal-indigo-300); } .side-icon.tone-yellow { color: var(--pal-orange-500b); } .side-icon.tone-pink { color: var(--pal-pink-400b); }

/* Shop heading: title left, count right (reference layout) */

/* Shop toolbar as one aligned filter bar (reference layout) */

.home-filter { display: inline-flex !important; align-items: center !important; gap: 8px; }

/* Freebies banner art sits in the flow now that it is transparent */

/* Banner grid: copy sits left with its button, art to the right */

.home-filter > span { white-space: nowrap; }

/* Shop top: breathing room under the header, and a heading that lines up */

/* Hero hugs its content: no dead space under the art */

/* Fix: the art column collapsed to 0 at wide widths */

/* The hero art is an illustration now, not a bleeding photo: no mask, no fixed height */

/* ---------- Home page vs the owner's concept art (2026-09-21) ---------- */
/* The concept has plain coloured words: drop the legacy gold swoosh. */

/* Four trust badges on one line, as drawn. */

/* Result count sits at the right end of the quick filter row. */

/* Home version of the free banner: wide strip with the button on the right. */

/* Free row keeps the same card size as the featured row above it. */

/* Grade filter rows: small check box, name, count - as in the concept art. */

/* ---------- Owner feedback, 2026-09-21 evening ---------- */
/* Bundle promo + grade picker: one column, no empty boxes. */

/* Newsletter: the input is the pill itself, so no white frame shows behind it. */
.newsletter form > div { background: transparent !important; box-shadow: none !important; overflow: visible !important; gap: 10px; }
.newsletter form > div:focus-within { box-shadow: none !important; }
.newsletter input[type="email"] { background: var(--input-bg) !important; border: 1px solid var(--input-border) !important; border-radius: 999px !important; color: var(--input-text) !important; padding: 13px 20px !important; }
.newsletter input[type="email"]:focus { border-color: var(--input-border-focus) !important; box-shadow: 0 0 0 3px var(--input-focus-ring) !important; }
.newsletter .button { margin: 0 !important; }

/* On phones the bundle art used to sit on top of the text: stack it instead. */

/* Every category card carries its own colour, matching its icon. */
.cat-card--yellow { background: rgba(245, 166, 35, 0.12); border-color: rgba(245, 166, 35, 0.32); }
.cat-card--pink   { background: rgba(236, 72, 153, 0.09); border-color: rgba(236, 72, 153, 0.30); }

/* A soft gold glow behind the main hero button. */
.hero-browse-cta:hover { box-shadow: 0 12px 34px rgba(255, 198, 51, 0.6), 0 2px 6px rgba(10, 37, 77, 0.14); }

/* Two even rows instead of a full row and a short stub. */

/* Wide bundle artwork fills the right half of the strip. */

/* Bottom of the home page breathed less than the rest: the last three blocks
   sat about 30px apart while the sections above them sit 56-78px apart. */
.newsletter { margin-top: 60px !important; }
@media (max-width: 760px) {
  .newsletter { margin-top: 40px !important; }
}

/* The generic a:hover rule was turning the gold button's label light blue,
   which is unreadable on yellow. The label stays navy in every state. */
.hero-browse-cta, .hero-browse-cta:hover, .hero-browse-cta:focus, .hero-browse-cta:active, .hero-browse-cta:visited { color: var(--navy); }
.hero-browse-cta:hover .icon, .hero-browse-cta:focus .icon { stroke: var(--navy); }

/* Bundle cards have no price badge, so the deal badge takes the top-left corner, away from the heart. */
.cover-badge--deal { top: 10px; left: 8px; right: auto; bottom: auto; display: inline-flex; align-items: baseline; gap: 5px; background: linear-gradient(135deg, var(--pal-orange-400), var(--pal-red-300)); box-shadow: 0 4px 12px rgba(255, 77, 109, 0.35); border-radius: 999px; padding: 5px 10px; }
.cover-badge--deal em { font-style: normal; font-weight: 700; opacity: 0.85; font-size: var(--fs-sm); }
@media (prefers-reduced-motion: no-preference) {
  .cover-badge--deal { animation: edu-deal-pulse 1.8s ease-in-out infinite; }
}

/* Bundle covers slide instead of cutting: the outgoing frame leaves to the
   left while the next one arrives from the right. */
.cover-link.edu-slider { position: relative; overflow: hidden; }
.cover-link.edu-slider img.edu-slide { position: absolute !important; top: 0; left: 0; width: 100% !important; height: 100% !important; object-fit: cover !important; aspect-ratio: auto !important; transform: translateX(0); }
.cover-link.edu-slider img.is-incoming { transform: translateX(100%); }
.cover-link.edu-slider.is-sliding img.edu-slide { transition: transform 0.55s cubic-bezier(0.4, 0, 0.2, 1); transform: translateX(-100%); }
.cover-link.edu-slider.is-sliding img.is-incoming { transition: transform 0.55s cubic-bezier(0.4, 0, 0.2, 1); transform: translateX(0); }

/* ---------- Bundle card and product page, owner review 2026-09-21 ---------- */
/* BIG DEAL over BUNDLE. */
.cover-badge--deal { flex-direction: column; align-items: center; gap: 1px; line-height: 1.15; padding: 6px 11px; text-align: center; }
.cover-badge--deal b { font-size: var(--fs-xs); font-weight: 900; letter-spacing: 0.04em; }
.cover-badge--deal em { font-style: normal; font-weight: 700; font-size: var(--fs-xs); letter-spacing: 0.08em; opacity: 0.9; }
/* Never under the heart (44 px + its 16 px inset on the right): "8 in 1 BUNDLE" wraps instead. */
.cover-badge--deal { max-width: calc(100% - 68px); }
.cover-badge--deal em { white-space: normal; }

/* A bundle shows its price at the foot of the card: the old figure struck
   through in red, the bundle price in green. */
.card-deal-price { display: inline-flex; align-items: baseline; gap: 8px; }
.card-deal-price s { color: var(--pal-red-400c); text-decoration-thickness: 2px; font-size: var(--fs-sm); font-weight: 700; }
.card-deal-price strong { color: var(--pal-teal-700); font-size: var(--fs-base); font-weight: 800; }
[data-theme="dark"] .card-deal-price s { color: var(--pal-red-200); }
[data-theme="dark"] .card-deal-price strong { color: var(--pal-teal-500); }

/* Product page: the crossed-out price reads as a reduction, not as grey noise. */

/* What's included: the resources a bundle is made of. */
.bundle-contents-card { margin-top: 14px; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 14px 15px; }
.bundle-contents-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.bundle-contents-head strong { font-size: var(--fs-base); }
.bundle-contents-head span { font-size: var(--fs-xs); color: var(--muted); font-weight: 700; }
.bundle-contents-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.bundle-contents-list a { display: flex; align-items: center; gap: 11px; padding: 8px; border: 1px solid var(--line); border-radius: 10px; text-decoration: none !important; color: var(--text); transition: border-color 0.16s ease, transform 0.16s ease; }
.bundle-contents-list a:hover { border-color: var(--pal-blue-500); transform: translateY(-1px); }
.bundle-contents-list img, .bundle-contents-thumb { width: 52px; height: 52px; border-radius: 8px; object-fit: cover; flex: 0 0 auto; display: grid; place-items: center; background: var(--wash); }
.bundle-contents-copy { flex: 1 1 auto; min-width: 0; display: grid; gap: 2px; }
.bundle-contents-copy strong { font-size: var(--fs-sm); font-weight: 700; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.bundle-contents-copy small { font-size: var(--fs-xs); color: var(--muted); }
.bundle-contents-list a .icon { flex: 0 0 auto; color: var(--muted); }

/* ---------- Category icons: one hue each, all the same weight ---------- */
/* Every glyph sits on a soft tile of its own colour, the way the concept art
   draws them, so no card looks lighter or emptier than its neighbour. The
   glyph keeps its colour and its white cut-out details. */
.cat-card-icon.tone-lime    { color: var(--pal-lime-700); background: rgba(101,163,13,.18); }
.cat-card-icon.tone-pink    { color: var(--pal-pink-400b); background: rgba(236,72,153,.16); }
.cat-card--lime    { background: rgba(101,163,13,.10);  border-color: rgba(101,163,13,.30); }
.cat-card--pink    { background: rgba(236,72,153,.09);  border-color: rgba(236,72,153,.30); }
.cat-card--slate   { background: rgba(100,116,139,.10); border-color: rgba(100,116,139,.30); }

/* In dark mode the white cut-out details need a darker backing to read. */

/* The sidebar keeps the flat coloured glyph, no tile. */
.side-icon.tone-rose { color: var(--pal-red-500); } .side-icon.tone-fuchsia { color: var(--pal-purple-400); } .side-icon.tone-lime { color: var(--pal-lime-700); }

/* What the buyer receives: files, formats, page counts. */
.file-details-card { margin-top: 14px; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 14px 15px; }
.file-details-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.file-details-head strong { font-size: var(--fs-base); }
.file-details-head span { font-size: var(--fs-xs); color: var(--muted); font-weight: 700; }
.file-details-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 7px; }
.file-details-list li { display: flex; align-items: center; gap: 9px; padding: 7px 9px; border: 1px solid var(--line); border-radius: 9px; background: var(--wash); }
.file-ext { flex: 0 0 auto; font-size: var(--fs-xs); font-weight: 800; letter-spacing: 0.06em; padding: 3px 7px; border-radius: 5px; background: var(--pal-blue-500); color: var(--pal-white); }
.file-name { flex: 1 1 auto; min-width: 0; font-size: var(--fs-xs); font-weight: 600; line-height: 1.3; }
.file-details-list small { flex: 0 0 auto; font-size: var(--fs-xs); color: var(--muted); white-space: nowrap; }
.file-details-facts { margin: 11px 0 0; display: grid; gap: 5px; }
.file-details-facts > div { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; border-top: 1px solid var(--line); padding-top: 7px; }
.file-details-facts dt { font-size: var(--fs-xs); color: var(--muted); margin: 0; }
.file-details-facts dd { font-size: var(--fs-sm); font-weight: 800; margin: 0; }

/* An empty cart shows no badge (the markup marks it hidden). */
[data-cart-count][hidden], .cart-badge[hidden] { display: none !important; }

/* Product description: room between headings, paragraphs and lists. */
.product-description-text > :first-child { margin-top: 0; }
.product-description-text h2 { margin: 4px 0 14px; line-height: 1.25; }
.product-description-text h3 { margin: 30px 0 10px; line-height: 1.3; }
.product-description-text h4 { margin: 20px 0 6px; font-size: var(--fs-base); line-height: 1.4; }
.product-description-text p { margin: 0 0 14px; }
.product-description-text ul, .product-description-text ol { margin: 0 0 16px; padding-left: 22px; }
.product-description-text li { margin-bottom: 7px; }
.product-description-text strong { font-weight: 700; color: var(--text); }
.product-description-text a { color: var(--link); text-decoration: underline; text-underline-offset: 2px; }

/* Shop: "Load more" instead of page numbers. */
.shop-more-button:hover { transform: translateY(-1px); color: var(--pal-white); }
.shop-more-button.is-loading { opacity: .7; pointer-events: none; }
.shop-more-back { font-size: var(--fs-sm); color: var(--link); }
/* Wishlist placeholders: one per saved item until the cards arrive (Batch 3). */
.product-card.is-skeleton { pointer-events: none; }
.product-card.is-skeleton .cover-link { display: block; aspect-ratio: 1 / 1; border-radius: 5px; background: var(--line); }
.product-card.is-skeleton .card-body h3, .product-card.is-skeleton .card-body p, .product-card.is-skeleton .card-meta li { color: transparent; background: var(--line); border-radius: 4px; }
.product-card.is-skeleton .card-meta li { width: 40%; }
.product-card.is-skeleton .card-action { visibility: hidden; }

/* ==========================================================================
   Batch 4 foundation (docs/REDESIGN_PLAN.md 1.1-1.5): type roles, buttons,
   focus, tap targets. Loaded on every page after the component rules above.
   ========================================================================== */

/* ---------- Type roles ---------- */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { font-family: var(--font-body) !important; font-size: var(--fs-base); line-height: var(--lh-body); }
h1, h2, h3, h4, h5, h6 { font-family: var(--font-heading) !important; text-wrap: balance; }
h1, h2 { letter-spacing: -0.02em; }
p, li, dd { text-wrap: pretty; }
::selection { background: var(--selection); }

/* Numbers that change or line up read better with fixed-width figures. */
.price, .amount, .woocommerce-Price-amount, .card-price-badge, .edu-deal-countdown-value, .edu-promo__countdown, .sale-price, .regular-price, .cart-badge, [data-cart-count] {
  font-variant-numeric: tabular-nums;
}

/* Kicker labels above headings are gone: the heading carries the message (1.1, impeccable).
   The deal pill states a rule, so it stays; the blog card category is data, so it stays too. */
.eyebrow:not(.card-category), .eduminate-account-eyebrow, .edu-auth__eyebrow {
  display: none !important;
}

/* Product description: body colour, comfortable measure. Spacing rules above stay as they are. */
.product-description-text { color: var(--text-body); }
.product-description-text p, .product-description-text li { max-width: 72ch; }

/* Every field is 16px, so iOS Safari does not zoom in on focus. */
input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="submit"]):not([type="button"]),
select, textarea, .input-text, .woocommerce-Input, .select2-selection {
  font-size: var(--fs-input) !important;
}
::placeholder { color: var(--input-placeholder); opacity: 1; }

/* ---------- Buttons ---------- */
.button, .btn-primary, .single_add_to_cart_button, .edu-buy-now, .card-action, .hero-browse-cta,
#place_order, .checkout-button, .wc-proceed-to-checkout a, [data-edu-more] {
  transition: background-color var(--duration), border-color var(--duration), color var(--duration), box-shadow var(--duration), transform 120ms ease !important;
}
.button:active, .btn-primary:active, .single_add_to_cart_button:active, .edu-buy-now:active,
.hero-browse-cta:active, #place_order:active, .checkout-button:active, [data-edu-more]:active {
  transform: translateY(1px);
}
.button:disabled, .button.disabled, .button[aria-disabled="true"], button:disabled {
  opacity: 0.4 !important;
  cursor: not-allowed !important;
}
/* Large size for the actions that move money or open the catalogue. */
/* :is(#edu-lg, html) lifts specificity above the older :not() button chains without needing an id in the markup. */
:is(#edu-lg, html) :is(.single_add_to_cart_button, a.edu-buy-now, .hero-browse-cta, .wc-proceed-to-checkout a.checkout-button, #place_order) {
  min-height: 52px !important;
}

/* ---------- Focus: one visible ring on every control ---------- */
:focus-visible, button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible {
  outline: 3px solid var(--focus) !important; outline-offset: 2px !important;
}
.product-card:focus-within { box-shadow: var(--shadow), 0 0 0 2px var(--focus); }
.skip-link:focus { outline-offset: 0 !important; z-index: var(--z-toast); color: var(--text); font-weight: 700; border-radius: var(--r-sm); }

/* ---------- Tap targets: at least 44x44 on touch widths (1.5) ---------- */
.skip-link { display: inline-flex; align-items: center; min-height: var(--tap); padding: 0 16px; }
@media (max-width: 1023px) {
  .product-card .card-action { min-width: var(--tap) !important; min-height: var(--tap) !important; }
  .text-link, .orderby, .edu-grade-row {
    min-height: var(--tap) !important;
  }
  .text-link { display: inline-flex !important; align-items: center; }
  summary { min-height: var(--tap); display: flex; align-items: center; }
  .policy-layout nav a { display: flex; align-items: center; min-height: var(--tap); }
  .search-form .search-submit, .search-form input[type="submit"] { min-height: var(--tap); }
  .favorite {
    width: var(--tap) !important;
    height: var(--tap) !important;
    top: 11px !important;
    right: 10px !important;
    background: radial-gradient(circle closest-side, var(--pal-white-a94) 72%, var(--pal-white-a0) 75%) !important;
    box-shadow: none !important;
    filter: drop-shadow(0 2px 3px var(--pal-black-a10));
  }
}
@media (prefers-reduced-motion: reduce) {
  .button:active, .btn-primary:active, .single_add_to_cart_button:active, .edu-buy-now:active,
  .hero-browse-cta:active, #place_order:active, .checkout-button:active, [data-edu-more]:active { transform: none; }
}

/* ---------- Contrast (1.2, 1.5): text and badges at 4.5:1 in both themes ---------- */
.card-price-badge.is-free, .price.free, .edu-free-cta {
  background: var(--free) !important;
  color: var(--on-free) !important;
}
.card-deal-price strong { color: var(--free) !important; }
.card-deal-price s, .resource-purchase-card .price-amount del, .resource-purchase-card .price-amount del .amount,
.resource-purchase-card .price-amount del bdi { color: var(--strike) !important; }
.card-action.is-added, .card-action.is-in-cart, .single_add_to_cart_button.is-added, .single_add_to_cart_button.is-in-cart,
[data-theme="dark"] .woocommerce-cart .wc-proceed-to-checkout a.checkout-button, [data-theme="dark"] .woocommerce-cart a.checkout-button,
[data-theme="dark"] .empty-cart-btn, .cart-direct-link:hover {
  background-color: var(--teal-solid) !important;
  color: var(--on-dark) !important;
}
/* Load more is a secondary action: navy, not a coral pill (1.4). */
.shop-more-button { background: var(--action) !important; color: var(--on-action) !important; }
.shop-more-button:hover { background: var(--action-hover) !important; color: var(--on-action) !important; }

/* Inline template styles that print a chip size below the floor. */
.resource-grade-tag, .resource-subject-tag, label .muted.font-normal { font-size: var(--fs-xs) !important; }
#wishlist-empty > p { color: var(--text-muted) !important; }
/* Show-password eye: 44x44 hit area, icon stays centred in the field. */
.woocommerce form .show-password-input {
  top: 50%; right: 0; transform: translateY(-50%);
  width: var(--tap); height: var(--tap);
  display: flex; align-items: center; justify-content: center;
}

/* Payment modal close (inc/gumroad-pay.php): 44x44 hit area. */
.edu-pay-backdrop .edu-pay-close { width: var(--tap); height: var(--tap); }

/* Stray <br> from the editor inside the empty-cart button pushed its label to the bottom edge. */
/* Short "View all"-style links next to a section heading stay on one line. */
.section-head .text-link { white-space: nowrap; }
/* Labels read in sentence case, not letter-spaced capitals (1.1). "PDF" file badges keep their capitals. */
.resource-meta-tag, .highlights-heading, .card-cat-badge, .meta-label, .edu-auth__covers-label {
  text-transform: none !important;
  letter-spacing: 0 !important;
}

/* =====================================================================================
   Global chrome (Batch 5, REDESIGN_PLAN 2.0): promo bar, header, Shop panel, search sheet,
   menu drawer, footer, newsletter block. Heights: promo 40, header 76 desktop / 64 tablet /
   60 phone (52 once scrolled, by transform so nothing below moves).
   ===================================================================================== */
.icon-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }

/* ---------- Promo bar: one line at every width ---------- */
.edu-promo {
  --focus: var(--focus-on-dark);
  position: relative; display: flex; align-items: center;
  height: 40px; padding: 0 var(--tap) 0 var(--s-4);
  background: var(--navy); color: var(--on-dark);
  font-size: var(--fs-sm); line-height: var(--lh-sm); white-space: nowrap;
}
.edu-promo__inner { display: flex; align-items: center; justify-content: center; gap: var(--s-2); width: 100%; max-width: 960px; min-width: 0; margin: 0 auto; }
.edu-promo__text { margin: 0; color: var(--on-dark); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.edu-promo__link { color: var(--on-dark); font-weight: 700; text-decoration: underline; text-underline-offset: 2px; }
.edu-promo__link:hover { color: var(--gold); }
.edu-promo__chip {
  flex-shrink: 0; display: inline-block; padding: 1px var(--s-2); border-radius: 999px;
  background: var(--sale-solid); color: var(--on-dark); font-size: var(--fs-xs); font-weight: 700; line-height: 1.5;
  font-variant-numeric: tabular-nums;
}
.edu-promo__copy {
  flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center;
  min-width: var(--tap); height: var(--tap); margin-block: -2px; padding: 0 var(--s-1);
  background: transparent; border: 0; color: inherit; cursor: pointer;
}
.edu-promo__copy .edu-promo__chip { font-size: var(--fs-sm); padding: 2px var(--s-3); }
.edu-promo__countdown { flex-shrink: 0; font-variant-numeric: tabular-nums; }
.edu-promo__close {
  position: absolute; top: -2px; right: 0; width: var(--tap); height: var(--tap);
  display: grid; place-items: center; padding: 0; border: 0; background: transparent; color: var(--on-dark); cursor: pointer;
}
.edu-promo__close .icon { width: 18px; height: 18px; }
.edu-promo__close:hover { color: var(--gold); }
@media (max-width: 479px) {
  .edu-promo { padding-left: var(--s-3); }
  .edu-promo__inner { justify-content: flex-start; gap: 6px; }
  .edu-promo__ends { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}

/* ---------- Header ---------- */
.site-header {
  position: sticky; top: 0; z-index: var(--z-header);
  background: var(--header); border-bottom: 1px solid var(--line);
  -webkit-backdrop-filter: saturate(1.4) blur(12px); backdrop-filter: saturate(1.4) blur(12px);
}
.hdr { display: flex; align-items: center; gap: var(--s-5); height: 75px; }
.hdr-logo { display: flex; align-items: center; flex-shrink: 0; width: 150px; min-height: var(--tap); border-radius: var(--r-sm); }
.hdr-logo img, .ftr-logo img { display: block; width: 100%; height: auto; }
.hdr-logo .logo-dark, [data-theme="dark"] .hdr-logo .logo-light { display: none; }
[data-theme="dark"] .hdr-logo .logo-dark { display: block; }

.hdr-nav-list { display: flex; align-items: center; gap: var(--s-1); margin: 0; padding: 0; list-style: none; }
.hdr-nav-list > li { position: relative; }
.hdr-nav-link {
  position: relative; display: inline-flex; align-items: center; gap: var(--s-1);
  min-height: var(--tap); padding: 0 var(--s-3); border: 0; border-radius: var(--r-sm); background: transparent;
  color: var(--text); font-size: var(--fs-base); font-weight: 700; white-space: nowrap; cursor: pointer;
  transition: background-color var(--duration);
}
.hdr-nav-link:hover, .hdr-shop.is-open .hdr-nav-link { background: var(--surface-2); color: var(--text); }
.hdr-nav-link[aria-current="page"]::after, .hdr-nav-link[data-current]::after {
  content: ""; position: absolute; left: var(--s-3); right: var(--s-3); bottom: 4px; height: 3px; border-radius: 3px; background: var(--gold);
}
.hdr-chevron { width: 16px; height: 16px; transform: rotate(90deg); transition: transform var(--duration); }
.hdr-shop-toggle[aria-expanded="true"] .hdr-chevron { transform: rotate(-90deg); }
.hdr-shop-toggle:active:not(:disabled) { transform: none; }

/* Shop panel (desktop disclosure) */
.shop-panel {
  position: absolute; top: calc(100% + 15px); left: 0; z-index: var(--z-sheet);
  display: grid; grid-template-columns: minmax(220px, 1.15fr) minmax(220px, 1fr); gap: var(--s-5);
  width: 620px; padding: var(--s-5); border: 1px solid var(--line); border-radius: var(--r);
  background: var(--surface); box-shadow: var(--shadow);
}
.shop-panel[hidden] { display: none; }
.shop-panel::before { content: ""; position: absolute; left: 0; right: 0; top: -16px; height: 16px; }
.shop-panel-title { margin: 0 0 var(--s-2); padding-left: var(--s-3); color: var(--text-muted); font-size: var(--fs-sm); font-weight: 700; }
.shop-panel-list, .shop-panel-grades { margin: 0; padding: 0; list-style: none; }
.shop-panel-list a {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-3);
  min-height: 40px; padding: 0 var(--s-3); border-radius: var(--r-sm); color: var(--text); font-weight: 600;
}
.shop-panel-list a:hover, .shop-panel-grades a:hover { background: var(--surface-2); color: var(--text); }
.shop-panel-count { color: var(--text-muted); font-size: var(--fs-sm); font-weight: 600; font-variant-numeric: tabular-nums; }
.shop-panel-grades { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-2); }
.shop-panel-grades a {
  display: flex; align-items: center; min-height: 40px; padding: 0 var(--s-3);
  border: 1px solid var(--line); border-radius: var(--r-sm); color: var(--text); font-size: var(--fs-sm); font-weight: 600;
}

/* Search field (desktop) */
.hdr-search {
  display: flex; align-items: center; flex: 0 1 340px; min-width: 200px; margin-left: auto; height: var(--tap);
  border: 1px solid var(--input-border); border-radius: 999px; background: var(--input-bg); overflow: hidden;
  transition: border-color var(--duration), box-shadow var(--duration);
}
.hdr-search:focus-within { border-color: var(--focus); outline: 3px solid var(--focus); outline-offset: 2px; }
.hdr-search input, .search-sheet-form input {
  flex: 1; min-width: 0; height: 100%; padding: 0 var(--s-4); border: 0; background: transparent; color: var(--input-text);
}
.hdr-search input:focus, .hdr-search input:focus-visible, .search-sheet-form input:focus, .search-sheet-form input:focus-visible {
  outline: none !important; box-shadow: none !important; /* the pill around the field carries the focus ring */
}
.hdr-search button {
  flex-shrink: 0; display: grid; place-items: center; width: 42px; height: 42px;
  border: 0; border-radius: 999px; background: var(--action); color: var(--on-action); cursor: pointer;
}
.hdr-search button:hover { background: var(--action-hover); }
.hdr-search button .icon { width: 20px; height: 20px; }

/* Icon group */
.hdr-actions { display: flex; align-items: center; gap: var(--s-1); flex-shrink: 0; }
.hdr-icon {
  position: relative; display: inline-grid; place-items: center; flex-shrink: 0;
  width: var(--tap); height: var(--tap); padding: 0; border: 0; border-radius: 999px;
  background: transparent; color: var(--text); cursor: pointer; transition: background-color var(--duration);
}
.hdr-icon:hover { background: var(--surface-2); color: var(--text); }
.hdr-icon .icon { width: 24px; height: 24px; }
.hdr-account {
  display: inline-flex; align-items: center; gap: var(--s-2); min-height: var(--tap); padding: 0 var(--s-3) 0 var(--s-2);
  border-radius: 999px; color: var(--text); font-size: var(--fs-sm); font-weight: 700; white-space: nowrap;
}
.hdr-account:hover { background: var(--surface-2); color: var(--text); }
.hdr-account .icon { width: 22px; height: 22px; }
/* Counts sit on the icon, so they never push anything sideways (no CLS). */
.hdr-icon .cart-badge, .hdr-count {
  position: absolute; top: 1px; right: -2px; min-width: 20px; height: 20px; padding: 0 5px;
  border-radius: 999px; box-shadow: 0 0 0 2px var(--bg);
  background: var(--sale-solid); color: var(--on-dark); font-size: var(--fs-xs); font-weight: 700; line-height: 20px; text-align: center;
  font-variant-numeric: tabular-nums;
}
.hdr-count { background: var(--action); color: var(--on-action); }
.hdr-count[hidden] { display: none !important; }

/* Light/dark switch: the moon in light, the sun in dark. */
.theme-toggle .theme-icon-sun, [data-theme="dark"] .theme-toggle .theme-icon-moon { display: none; }
[data-theme="dark"] .theme-toggle .theme-icon-sun { display: block; }
.theme-toggle .icon { width: 22px; height: 22px; }
.nav-drawer-theme, .ftr-theme {
  display: inline-flex; align-items: center; gap: var(--s-2); min-height: var(--tap); padding: 0 var(--s-4) 0 var(--s-3);
  border: 1px solid var(--line-strong); border-radius: 999px; background: transparent; color: var(--text);
  font-size: var(--fs-sm); font-weight: 700; cursor: pointer;
}
.theme-label-light, [data-theme="dark"] .theme-label-dark { display: none; }
[data-theme="dark"] .theme-label-light { display: inline; }

/* Widths: desktop from 1200, tablet 768-1199 (search icon + menu), phone below 768. */
.hdr-search-toggle, .mobile-menu { display: none; }
@media (max-width: 1199px) {
  .hdr { height: 63px; gap: var(--s-3); }
  .hdr-nav, .hdr-search, .hdr-account { display: none; }
  .hdr-actions { margin-left: auto; }
  .hdr-search-toggle, .mobile-menu { display: inline-grid; }
}
@media (max-width: 767px) {
  .hdr { height: 59px; gap: var(--s-2); transition: transform 200ms var(--ease-out); }
  .hdr-logo { width: 128px; }
  .hdr-theme { display: none; }
  .site-header { transition: transform 200ms var(--ease-out); }
  .site-header.is-scrolled { transform: translateY(-8px); }
  .site-header.is-scrolled .hdr { transform: translateY(4px); }
}
@media (max-width: 359px) {
  .hdr-logo { width: 108px; }
  .hdr-actions { gap: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .site-header, .hdr, .hdr-chevron { transition: none; }
}

/* ---------- Search sheet (tablet and phone) ---------- */
.search-sheet {
  inset: 0 0 auto 0; margin: 0; width: 100%; max-width: 100%; max-height: 100dvh;
  padding: var(--s-4) 0 var(--s-5); border: 0; border-bottom: 1px solid var(--line);
  background: var(--surface); color: var(--text); box-shadow: var(--shadow);
}
.search-sheet::backdrop, .nav-drawer::backdrop { background: var(--pal-sky-900-a72); }
.search-sheet-row { display: flex; align-items: center; gap: var(--s-2); }
.search-sheet-form {
  display: flex; align-items: center; flex: 1; min-width: 0; height: 50px; padding-left: var(--s-4);
  border: 1px solid var(--input-border); border-radius: 999px; background: var(--input-bg);
}
.search-sheet-form:focus-within { border-color: var(--focus); outline: 3px solid var(--focus); outline-offset: 2px; }
.search-sheet-form input { padding: 0 var(--s-2); }
.search-sheet-icon { flex-shrink: 0; width: 20px; height: 20px; color: var(--text-muted); }
.search-sheet-submit {
  flex-shrink: 0; height: var(--tap); margin-right: 2px; padding: 0 var(--s-4); border: 0; border-radius: 999px;
  background: var(--action); color: var(--on-action); font-weight: 700; cursor: pointer;
}
.search-sheet-submit:hover { background: var(--action-hover); }
.search-sheet-close { flex-shrink: 0; color: var(--text); }
.search-sheet-label { margin: var(--s-4) 0 var(--s-2); color: var(--text-muted); font-size: var(--fs-sm); font-weight: 700; }
.search-sheet-chips { display: flex; flex-wrap: wrap; gap: var(--s-2); margin: 0; padding: 0; list-style: none; }
.search-sheet-chips a {
  display: inline-flex; align-items: center; min-height: var(--tap); padding: 0 var(--s-4);
  border: 1px solid var(--line-strong); border-radius: 999px; color: var(--text); font-size: var(--fs-sm); font-weight: 600;
}
.search-sheet-chips a:hover { background: var(--surface-2); color: var(--text); }

/* ---------- Menu drawer ---------- */
.nav-drawer {
  margin: 0 0 0 auto; width: min(380px, 100%); max-width: 100%; height: 100dvh; max-height: 100dvh;
  padding: 0; border: 0; background: var(--surface); color: var(--text);
}
.nav-drawer[open] { display: flex; flex-direction: column; }
.nav-drawer-head { display: flex; align-items: center; justify-content: space-between; min-height: 60px; padding: 0 var(--s-2) 0 var(--s-5); border-bottom: 1px solid var(--line); }
.nav-drawer-title { margin: 0; font-family: var(--font-heading); font-size: var(--fs-lg); font-weight: 800; }
.nav-drawer-close { color: var(--text); }
.nav-drawer-nav { display: flex; flex-direction: column; flex: 1; overflow-y: auto; padding: var(--s-2) var(--s-5); }
.nav-drawer-nav > a, .nav-drawer-group > summary {
  display: flex; align-items: center; justify-content: space-between; min-height: 52px;
  border-bottom: 1px solid var(--line); color: var(--text); font-size: var(--fs-base); font-weight: 700; cursor: pointer; list-style: none;
}
.nav-drawer-group > summary::-webkit-details-marker { display: none; }
.nav-drawer-nav > a.nav-drawer-account { justify-content: flex-start; gap: var(--s-3); }
.nav-drawer-account .icon { width: 22px; height: 22px; }
.nav-drawer-chevron { width: 18px; height: 18px; transform: rotate(90deg); transition: transform var(--duration); }
.nav-drawer-group[open] .nav-drawer-chevron { transform: rotate(-90deg); }
.nav-drawer-group ul { margin: 0; padding: var(--s-2) 0 var(--s-3); list-style: none; border-bottom: 1px solid var(--line); }
.nav-drawer-group li a {
  display: flex; align-items: center; justify-content: space-between; min-height: var(--tap); padding: 0 var(--s-3);
  border-radius: var(--r-sm); color: var(--text-body); font-weight: 600;
}
.nav-drawer-group li a:hover { background: var(--surface-2); color: var(--text); }
.nav-drawer-group ul.nav-drawer-grades { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-2); }
.nav-drawer-grades a { border: 1px solid var(--line); font-size: var(--fs-sm); }
.nav-drawer-foot { padding: var(--s-4) var(--s-5) max(var(--s-4), env(safe-area-inset-bottom)); border-top: 1px solid var(--line); }
@media (prefers-reduced-motion: no-preference) {
  .nav-drawer[open] { animation: edu-drawer-in 240ms var(--ease-out); }
  .search-sheet[open] { animation: edu-sheet-in 200ms var(--ease-out); }
}
@keyframes edu-drawer-in { from { transform: translateX(24px); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes edu-sheet-in { from { transform: translateY(-12px); opacity: 0; } to { transform: none; opacity: 1; } }

/* ---------- Footer ---------- */
.site-footer {
  --focus: var(--focus-on-dark);
  padding: var(--s-7) 0 var(--s-5); background: var(--footer); color: var(--on-dark);
}
.ftr-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--s-6) var(--s-5); }
.ftr-title { margin: 0 0 var(--s-3); color: var(--on-dark); font-size: var(--fs-base); font-weight: 800; letter-spacing: 0; }
.ftr-col ul { margin: 0; padding: 0; list-style: none; }
.ftr-col a { display: flex; align-items: center; min-height: 36px; color: var(--on-footer-muted); font-size: var(--fs-sm); }
.ftr-col a:hover { color: var(--on-dark); text-decoration: underline; text-underline-offset: 3px; }
.ftr-bottom {
  display: flex; align-items: center; gap: var(--s-5); margin-top: var(--s-6); padding-top: var(--s-5);
  border-top: 1px solid var(--footer-line);
}
.ftr-logo { display: flex; align-items: center; flex-shrink: 0; width: 132px; min-height: var(--tap); border-radius: var(--r-sm); }
.ftr-note { flex: 1; margin: 0; color: var(--on-footer-muted); font-size: var(--fs-sm); }
.ftr-theme { border-color: var(--footer-line-strong); color: var(--on-dark); }
.ftr-theme:hover { background: var(--footer-line); color: var(--on-dark); }
@media (max-width: 1023px) {
  .ftr-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-5) var(--s-4); }
  .ftr-col a { min-height: var(--tap); }
}
@media (max-width: 767px) {
  .site-footer { padding-top: var(--s-6); }
  .ftr-bottom { flex-wrap: wrap; gap: var(--s-4); }
  .ftr-note { flex-basis: 100%; order: 3; }
}

/* ---------- Newsletter block ---------- */
.newsletter p, .newsletter .newsletter-fineprint { font-size: var(--fs-sm); }
.newsletter .button { font-size: var(--fs-sm); }
@media (max-width: 600px) {
  .newsletter { flex-direction: column; align-items: stretch; }
  .newsletter form { width: 100%; }
  .newsletter form > div { flex-direction: column; align-items: stretch; }
  .newsletter .button { width: 100%; min-height: 48px; justify-content: center; }
}

/* Sign in with Google (Site Kit) placement: checkout and register form. Token colours, light and dark. */
.edu-gsi__lead { margin: 0; font-size: var(--fs-sm); line-height: 1.45; color: var(--text-muted); }
