/* delights.css — installed by page-designer POST /page {action:"apply"} */

/* ═══ BEGIN delight:path-dash-reveal ═══ */  /* page:roadmap.html kind:reveal trigger:scroll-into-view */
@keyframes pathReveal { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } .dashed-footpath-segment { opacity: 0; transform: translateY(8px); } .dashed-footpath-segment.visible { animation: pathReveal 0.6s ease-out forwards; } @media (prefers-reduced-motion: reduce) { .dashed-footpath-segment.visible { animation: none; opacity: 1; transform: none; } }
/* ═══ END   delight:path-dash-reveal ═══ */

/* ═══ BEGIN delight:philosophy-fade-settle ═══ */  /* page:about.html kind:settle trigger:load */
@keyframes settle-up { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } .teaching-philosophy p:first-of-type { animation: settle-up 0.6s ease-out forwards; } @media (prefers-reduced-motion: reduce) { .teaching-philosophy p:first-of-type { animation: none !important; opacity: 1 !important; transform: none !important; } }
/* ═══ END   delight:philosophy-fade-settle ═══ */

/* ═══ BEGIN delight:semester-badge-nudge ═══ */  /* page:papers.html kind:nudge trigger:hover */
@keyframes lift-nudge { 0%, 100% { transform: translateY(0); box-shadow: 0 1px 2px rgba(0,0,0,0.05); } 50% { transform: translateY(-2px); box-shadow: 0 2px 4px rgba(0,0,0,0.1); } } .semester-badge:hover { animation: lift-nudge 300ms ease-out; } @media (prefers-reduced-motion: reduce) { .semester-badge:hover { animation: none; } }
/* ═══ END   delight:semester-badge-nudge ═══ */

/* ═══ BEGIN delight:game-title-nudge ═══ */  /* page:games.html kind:nudge trigger:hover */
@keyframes lift-nudge { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-2px); } } .game-card h3:hover { animation: lift-nudge 300ms ease-in-out; } @media (prefers-reduced-motion: reduce) { .game-card h3:hover { animation: none; } }
/* ═══ END   delight:game-title-nudge ═══ */

/* ═══ BEGIN delight:header-fade-settle ═══ */  /* page:index.html kind:settle trigger:load */
@keyframes headerFadeSettle { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } } .site-header h1 { animation: headerFadeSettle 500ms ease-out forwards; } @media (prefers-reduced-motion: reduce) { .site-header h1 { animation: none; opacity: 1; transform: none; } }
/* ═══ END   delight:header-fade-settle ═══ */

/* ═══ BEGIN delight:current-class-nudge ═══ */  /* page:timetable.html kind:nudge trigger:hover */
@keyframes current-nudge { 0% { transform: scale(1); box-shadow: 0 1px 2px rgba(0,0,0,0.1); } 100% { transform: scale(1.015); box-shadow: 0 2px 4px rgba(0,0,0,0.15); } } .timetable-entry.is-current:hover { animation: current-nudge 300ms ease-out forwards; } @media (prefers-reduced-motion: reduce) { .timetable-entry.is-current:hover { animation: none !important; transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } }
/* ═══ END   delight:current-class-nudge ═══ */

/* ═══ BEGIN delight:email-copy-acknowledge ═══ */  /* page:contact.html kind:acknowledge trigger:copy */
@keyframes emailCopyAck {
  0% { opacity: 1; }
  50% { opacity: 0.85; }
  100% { opacity: 1; }
}
.contact-email.copied {
  animation: emailCopyAck 400ms ease-out;
}
.contact-email .copy-check {
  opacity: 0;
  transform: translateX(4px);
  transition: opacity 200ms ease, transform 200ms ease;
}
.contact-email.copied .copy-check {
  opacity: 1;
  transform: translateX(0);
}
@media (prefers-reduced-motion: reduce) {
  .contact-email.copied,
  .contact-email.copied .copy-check {
    animation: none;
    transition: none;
    opacity: 1 !important;
    transform: none !important;
  }
}
/* ═══ END   delight:email-copy-acknowledge ═══ */

/* ═══ BEGIN delight:paper-title-scramble ═══ */  /* page:s5-ai.html kind:settle trigger:load */
@keyframes scramble-settle { 0% { opacity: 0; transform: translateY(4px); } 100% { opacity: 1; transform: translateY(0); } } .paper-card h3 { animation: scramble-settle 500ms cubic-bezier(0.2, 0, 0.2, 1) 1; } @media (prefers-reduced-motion: reduce) { .paper-card h3 { animation: none; opacity: 1; transform: none; } }
/* ═══ END   delight:paper-title-scramble ═══ */

/* ═══ BEGIN delight:php-code-reveal ═══ */  /* page:s7-wp.html kind:reveal trigger:scroll-into-view */
.php-snippet pre code { opacity: 0; transform: translateY(8px); transition: opacity 0.4s ease, transform 0.4s ease; } .php-snippet.pre-visible pre code { opacity: 1; transform: translateY(0); } @media (prefers-reduced-motion: reduce) { .php-snippet.pre-visible pre code { opacity: 1; transform: none; transition: none; } }
/* ═══ END   delight:php-code-reveal ═══ */

/* ═══ BEGIN delight:lab-section-wayfind ═══ */  /* page:s7-compiler.html kind:wayfind trigger:scroll-into-view */
@keyframes border-pulse { 0% { box-shadow: inset 0 0 0 0 var(--accent, #555); } 50% { box-shadow: inset 4px 0 0 0 var(--accent, #555); } 100% { box-shadow: inset 0 0 0 0 var(--accent, #555); } } .lab-section { position: relative; transition: box-shadow 0.5s; } .lab-section.wayfind-active { animation: border-pulse 0.6s ease-out; } @media (prefers-reduced-motion: reduce) { .lab-section.wayfind-active { animation: none; } }
/* ═══ END   delight:lab-section-wayfind ═══ */

/* ═══ BEGIN delight:paper-title-nudge ═══ */  /* page:blockchain-paper.html kind:nudge trigger:hover, focus */
@keyframes nudge-right { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(4px); } } .paper-list a .paper-title { transition: transform 0.3s ease; } .paper-list a:hover .paper-title, .paper-list a:focus .paper-title { animation: nudge-right 0.3s ease; } @media (prefers-reduced-motion: reduce) { .paper-list a:hover .paper-title, .paper-list a:focus .paper-title { animation: none !important; transform: none !important; } }
/* ═══ END   delight:paper-title-nudge ═══ */

/* ═══ BEGIN delight:video-title-nudge ═══ */  /* page:demos.html kind:nudge trigger:hover */
@keyframes lift-nudge { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-2px); } } .demo-list a h3:hover { animation: lift-nudge 300ms ease-in-out; } @media (prefers-reduced-motion: reduce) { .demo-list a h3:hover { animation: none; } }
/* ═══ END   delight:video-title-nudge ═══ */

/* ═══ BEGIN delight:topic-tag-nudge ═══ */  /* page:notes.html kind:nudge trigger:hover */
@keyframes tag-nudge { 0%, 100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-2px) rotate(2deg); } } .topic-tag:hover { animation: tag-nudge 300ms ease-in-out; } @media (prefers-reduced-motion: reduce) { .topic-tag:hover { animation: none; } }
/* ═══ END   delight:topic-tag-nudge ═══ */

/* ═══ BEGIN delight:session-title-nudge ═══ */  /* page:sessions.html kind:nudge trigger:hover */
@keyframes lift-settle { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-2px); } } .session-card h3:hover { animation: lift-settle 300ms cubic-bezier(0.2, 0, 0.2, 1); } @media (prefers-reduced-motion: reduce) { .session-card h3:hover { animation: none; } }
/* ═══ END   delight:session-title-nudge ═══ */
