:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--header-height:48px;--footer-height:36px;--space-1:.55rem;--space-2:1rem;--space-3:1.6rem;--background:#121212;--foreground:#d7d7d7;--muted:#a1a1a1;--line:#2a2a2a;--preview-progress-base:#777;--preview-progress-overlay:#2e2e2e;--home-logo-filter:none;--osc-logo-filter:grayscale(1) brightness(0) invert(1)}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:#f4f4f4;--foreground:#161616;--muted:#505050;--line:#d5d5d5;--preview-progress-base:#bdbdbd;--preview-progress-overlay:#555;--home-logo-filter:invert(1);--osc-logo-filter:grayscale(1) brightness(0)}*{box-sizing:border-box}html,body{min-height:100%}body{background-color:var(--background);color:var(--foreground);margin:0;font:400 15px/1.55 Iowan Old Style,Palatino Linotype,URW Palladio L,Times New Roman,serif}.night-sky{inset:var(--header-height) 0 var(--footer-height);z-index:0;pointer-events:none;opacity:1;transition:opacity .28s,visibility .28s;position:fixed;overflow:hidden}:root[data-theme=light] .night-sky{visibility:hidden;opacity:0}.night-sky__stars,.night-sky__shooting-stars{position:absolute;inset:0}.night-sky__stars{z-index:0}.night-sky__shooting-stars{z-index:1}.night-star{--night-star-size-scale:1;clip-path:polygon(50% 0,57% 43%,100% 50%,57% 57%,50% 100%,43% 57%,0 50%,43% 43%);background:var(--star-color,#f8f9ff);box-shadow:0 0 5px color-mix(in srgb, var(--star-color,#f8f9ff) 52%, transparent);opacity:.08;transform:scale(calc(.72 * var(--night-star-size-scale)));animation:night-star-twinkle var(--twinkle-duration) ease-in-out var(--twinkle-delay) infinite;animation-timing-function:steps(var(--twinkle-steps), end);position:absolute}.night-star:before,.night-star:after{content:"";opacity:.82;border-radius:999px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.night-star:before{background:linear-gradient(180deg, transparent, var(--star-color,#f8f9ff) 46%, var(--star-color,#f8f9ff) 54%, transparent);width:1px;height:calc(100% + 8px)}.night-star:after{background:linear-gradient(90deg, transparent, var(--star-color,#f8f9ff) 46%, var(--star-color,#f8f9ff) 54%, transparent);width:calc(100% + 8px);height:1px}.shooting-star{background:var(--shoot-color,#edf4ff);width:2px;height:2px;box-shadow:0 0 7px 1px color-mix(in srgb, var(--shoot-color,#edf4ff) 68%, transparent);opacity:0;animation:shooting-star-flight var(--shoot-duration) ease-in var(--shoot-delay) infinite;animation-timing-function:steps(var(--shoot-steps), end);border-radius:50%;position:absolute;transform:rotate(135deg)translate(0)}.shooting-star:after{content:"";background:linear-gradient(90deg, transparent, var(--shoot-color,#edf4ff));width:110px;height:1px;position:absolute;top:50%;right:1px;transform:translateY(-50%)}@keyframes night-star-twinkle{0%,to{opacity:.08;transform:scale(calc(.72 * var(--night-star-size-scale)))}48%{opacity:var(--star-peak);transform:scale(calc(1.16 * var(--night-star-size-scale)))}}@keyframes shooting-star-flight{0%,78%{opacity:0;transform:rotate(135deg)translate(0)}80%{opacity:.9}91%{opacity:.82}to{opacity:0;transform:rotate(135deg)translate(82vw)}}::view-transition-old(root){animation-duration:.28s;animation-timing-function:ease}::view-transition-new(root){animation-duration:.28s;animation-timing-function:ease}@view-transition{navigation:auto}h1,h2,h3,p{margin:0}a,button{color:inherit;font:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:0;padding:0}.container{width:min(840px,100% - 2rem);margin:0 auto}.layout.container{width:min(760px,100% - 2rem)}.bar{z-index:20;background:var(--background);position:fixed;left:0;right:0}.topbar{height:var(--header-height);border-bottom:1px solid var(--line);top:0}.bottombar{height:var(--footer-height);bottom:0}.topbar-content,.footer-content{justify-content:space-between;align-items:center;gap:var(--space-2);height:100%;color:var(--muted);font-size:.86rem;display:flex}.footer-webring{--webring-size:.86rem;--webring-color:currentColor;--webring-accent:var(--text);color:var(--muted);justify-content:center;align-items:center;display:flex}.footer-views{font-variant-numeric:tabular-nums;align-items:center;gap:.42rem;display:inline-flex}.footer-eye{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.45px;flex:none;width:.96rem;height:.7rem}.footer-eye circle{fill:currentColor;stroke:none}.topbar-actions{align-items:center;gap:.85rem;display:flex}.text-btn.home-link{align-items:center;gap:.02rem;line-height:0;display:inline-flex}.home-link img{object-fit:contain;width:1.35rem;height:1.35rem;filter:var(--home-logo-filter);transition:filter .28s;display:block}.text-btn,.text-link{transition:color .18s,transform .18s;position:relative}.text-btn{color:var(--muted);font-size:.84rem}.text-btn:after,.text-link:after{content:"";background:var(--foreground);transform-origin:0;height:1px;transition:transform .18s;position:absolute;bottom:-.1em;left:0;right:0;transform:scaleX(0)}:is(.text-btn:hover,.text-btn:focus-visible,.text-link:hover,.text-link:focus-visible){color:var(--foreground)}.text-btn:hover:after,.text-link:hover:after{transform:scaleX(1)}.text-btn:focus-visible:after{transform:scaleX(1)}.text-link:focus-visible:after{transform:scaleX(1)}.text-btn:active,.text-link:active{transform:translateY(1px)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.theme-toggle{border-radius:999px;place-items:center;width:1.75rem;height:1.75rem;display:inline-grid}.theme-toggle:after{display:none}.theme-toggle:before{content:"";border-radius:inherit;opacity:0;background:radial-gradient(circle,#7f7f7f47 0%,#0000 72%);position:absolute;inset:0;transform:scale(.35)}.theme-toggle:active:before{animation:.22s ease-out theme-ripple}.theme-toggle:focus-visible{color:var(--foreground);outline:2px solid var(--foreground);outline-offset:2px}.theme-icon{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:1.1rem;height:1.1rem;transition:transform .26s}.theme-icon__sun,.theme-icon__moon,.theme-icon__rays{transform-origin:50%;transition:opacity .22s,transform .26s}.theme-icon__sun{opacity:0;transform:scale(.6)}.theme-icon__moon{opacity:1;stroke:none;fill:currentColor;transform:scale(1)}.theme-icon__rays{opacity:0;transform:scale(.65)}.theme-toggle.is-dark .theme-icon{transform:rotate(0)}.theme-toggle:not(.is-dark) .theme-icon{transform:rotate(-36deg)}.theme-toggle:not(.is-dark) .theme-icon__sun,.theme-toggle:not(.is-dark) .theme-icon__rays{opacity:1;transform:scale(1)}.theme-toggle:not(.is-dark) .theme-icon__moon{opacity:0;transform:scale(.72)}@keyframes theme-ripple{0%{opacity:.42;transform:scale(.35)}to{opacity:0;transform:scale(1.45)}}.layout{z-index:1;min-height:100vh;padding-block:calc(var(--header-height) + 3.2rem) calc(var(--footer-height) + var(--space-3));align-content:start;gap:var(--space-3);font-size:.92rem;display:grid;position:relative}.layout:before{content:"";z-index:-1;inset:var(--header-height) -2.75rem 0;pointer-events:none;background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--background) 72%, transparent) 12%, color-mix(in srgb, var(--background) 72%, transparent) 88%, transparent);position:absolute}.hero{gap:.9rem;display:grid}.hero h1{font-size:3.3rem;font-weight:560;line-height:1.1}.hero-heading{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.social-links{flex:none;align-items:center;gap:.9rem;display:flex}.social-link{width:1.9rem;height:1.9rem;color:var(--muted);border-radius:.2rem;place-items:center;transition:color .18s,transform .18s;display:grid}:is(.social-link:hover,.social-link:focus-visible){color:var(--foreground)}.social-link:focus-visible{outline:1px solid var(--foreground);outline-offset:3px}.social-link:active{transform:translateY(1px)}.social-link svg{fill:none;stroke:currentColor;stroke-width:1.65px;stroke-linecap:round;stroke-linejoin:round;width:1.5rem;height:1.5rem;display:block}.subtitle,.hero-description,.resume-item>p,.project-description,.service-description,.skills-list,.data-note,.placeholder-copy,.ranking-card li{color:var(--muted)}.subtitle{font-size:1rem;line-height:1.7}.subtitle-separator{color:var(--muted);margin-inline:.58rem;display:inline-block}.hero-description{width:100%;max-width:none;padding:1.55rem 0 1.1rem}.mode-serious .hero-description{max-width:none;padding-block:2rem 1.5rem;line-height:1.85}.hero-postscript{margin-top:1.55rem}.mode-content{gap:3rem;padding-bottom:4rem;display:grid}.serious-content{gap:3.5rem}.fun-content{gap:2rem}.fun-content .section{gap:.58rem}.side-quest-section-is-paused,.side-quest-section-is-paused *,.side-quest-section-is-paused :before,.side-quest-section-is-paused :after{animation-play-state:paused!important}.side-quest-index{width:100%;color:var(--foreground);font:inherit;gap:.55rem;display:grid}.side-quest-index-row{grid-template-columns:repeat(5,minmax(0,1fr));align-items:stretch;column-gap:.75rem;width:100%;display:grid}.side-quest-index-item{justify-content:center;align-items:center;min-width:0;display:inline-flex;position:relative}.side-quest-index-divider{color:currentColor;opacity:.5;width:auto;position:absolute;top:50%;left:-.375rem;transform:translate(-50%,-50%)}.side-quest-index-link{color:inherit;text-align:center;white-space:normal;line-height:1.25}.side-quest-index-link:after{background:currentColor}:is(.side-quest-index-link:hover,.side-quest-index-link:focus-visible){color:#fff}:is(:root[data-theme=light] .side-quest-index-link:hover,:root[data-theme=light] .side-quest-index-link:focus-visible){color:#000}.fun-content .section,.fun-content .dropdown-entry[id],.fun-content .collection-static-entry[id]{scroll-margin-top:calc(var(--header-height) + 1rem)}.serious-content .section{gap:1.4rem;padding-block:.75rem}.serious-content .entries,.serious-content .education-entries{gap:2.25rem}.serious-content .resume-item>p{max-width:38rem;line-height:1.9}.section{gap:.75rem;display:grid}.section h2{font-size:1.18rem;font-weight:530}.entries{gap:1.4rem;display:grid}.education-entry{align-items:center;gap:var(--space-2);grid-template-columns:64px minmax(0,1fr);display:grid}.education-entries{gap:1.45rem;display:grid}.education-logo{object-fit:contain;display:block}.education-logo--uoft{justify-self:center;width:42px;height:42px}.education-logo--osc{width:34px;height:31px;filter:var(--osc-logo-filter);object-fit:cover;object-position:left center;justify-self:center;transition:filter .28s}.resume-item,.skills-list{gap:.18rem;display:grid}.resume-item h3,.skills-list h3,.ranking-card h3{font-size:.96rem;font-weight:520}.entry-head{justify-content:space-between;align-items:baseline;gap:var(--space-2);display:flex}.entry-dates{color:color-mix(in srgb, var(--muted) 78%, transparent);letter-spacing:.01em;text-align:right;white-space:nowrap;flex:none;font-size:.8rem}.item-detail{margin-top:.15rem;font-size:.86rem}.project-description{max-width:46rem}.external-link-icon{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.08em;width:.88em;height:.88em;margin-left:.68rem;transition:transform .18s;display:inline-block;overflow:visible}:is(.text-link:hover .external-link-icon,.text-link:focus-visible .external-link-icon){transform:translate(2px,-2px)}.photo-pinterest-link .external-link-icon{margin-left:.3rem}.skills-list strong{color:var(--foreground);font-weight:520}.subsection-item{transition:transform .18s}.subsection-item:hover,.subsection-item:focus-within{transform:translate(.35rem)}.listening-rankings{columns:3 13rem;column-gap:var(--space-3);column-fill:balance;margin-top:.85rem}.dropdown-list{gap:.28rem;padding-left:1rem;display:grid}.dropdown-entry summary{color:var(--foreground);cursor:pointer;justify-content:flex-start;align-items:center;gap:.55rem;padding-block:.48rem;font-size:.96rem;font-weight:520;list-style:none;transition:color .18s;display:flex}.collection-static-entry>h3{color:var(--foreground);font-size:.96rem;font-weight:520;line-height:inherit;margin:0;padding:.48rem 0 .48rem .93rem}.dropdown-entry summary::-webkit-details-marker{display:none}.dropdown-entry summary:before{content:"";border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform-origin:50%;flex:none;width:.38rem;height:.38rem;transition:border-color .18s,transform .18s;transform:rotate(45deg)translate(-.08rem,-.08rem)}.dropdown-entry[open] summary:before{transform:rotate(225deg)translate(-.08rem,-.08rem)}.dropdown-entry summary:hover:before{border-color:var(--foreground)}.dropdown-entry summary:focus-visible:before{border-color:var(--foreground)}.dropdown-entry summary:focus-visible{outline:1px solid var(--foreground);outline-offset:3px}.dropdown-content{gap:.65rem;max-width:42rem;padding:.15rem 0 .9rem .95rem;display:grid}.media-placeholder{min-height:8rem;padding:var(--space-2);border:1px dashed var(--line);color:var(--muted);text-align:center;place-items:center;font-size:.84rem;display:grid}.media-placeholder--gallery{min-height:11rem}#collections .dropdown-content>.media-placeholder,#collections .dropdown-content>.pokemon-card-wheel,.food-photo-dropdown{margin-top:.85rem}.listening-preview{gap:.6rem;margin:.1rem 0 1.25rem;display:grid}.listening-preview-heading{justify-content:space-between;align-items:baseline;gap:var(--space-2);color:var(--muted);font-size:.82rem;display:flex}.listening-preview-heading strong{min-width:0;color:var(--foreground);text-align:right;text-overflow:ellipsis;white-space:nowrap;font-weight:520;overflow:hidden}.listening-preview-status{justify-content:flex-end;align-items:center;gap:.45rem;min-width:0;display:flex}.listening-preview-heading .listening-preview-prompt{color:var(--muted)}.cover-instruction-tap{display:none}@media (hover:none),(pointer:coarse){.cover-instruction-hover{display:none}.cover-instruction-tap{display:inline}}.listening-preview-progress{background:conic-gradient(var(--preview-progress-overlay) 0 var(--preview-progress), var(--preview-progress-base) var(--preview-progress) 360deg);border-radius:50%;flex:none;width:.72rem;height:.72rem}.listening-cover-wheel{overscroll-behavior-inline:contain;scrollbar-color:var(--line) transparent;scrollbar-width:thin;scroll-snap-type:x proximity;gap:.85rem;padding:.7rem .2rem .9rem;display:flex;overflow-x:auto}.listening-cover-wheel.is-touch-dragging{scroll-snap-type:none;scroll-behavior:auto}.listening-cover-wheel-item{scroll-snap-align:start;flex:0 0 112px}.listening-cover-thumbnail{-webkit-touch-callout:none;touch-action:none;-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:7px;width:100%;transition:border-color .18s,box-shadow .18s,filter .18s,transform .18s;display:block;overflow:hidden}.listening-cover-thumbnail img{aspect-ratio:1;border-radius:inherit;object-fit:contain;width:100%;display:block}:is(.listening-cover-thumbnail:hover,.listening-cover-thumbnail:focus-visible,.listening-cover-thumbnail.is-previewing){color:var(--foreground);filter:brightness(1.08);box-shadow:0 0 0 1px currentColor, 0 0 20px color-mix(in srgb, currentColor 28%, transparent);border-color:currentColor;transform:translateY(-7px)}@media (hover:none),(pointer:coarse){.listening-cover-thumbnail:hover:not(.is-previewing){filter:none;box-shadow:none;border-color:#0000;transform:none}}.listening-volume{width:max-content;color:var(--muted);grid-template-columns:auto 112px auto;align-items:center;gap:.7rem;font-size:.78rem;display:grid}.listening-volume input{width:100%;accent-color:var(--foreground);cursor:pointer}.listening-volume output{color:var(--muted);font-variant-numeric:tabular-nums;text-align:left}.listening-text-placeholder{margin:0}.pokemon-card-wheel{overscroll-behavior-inline:contain;scrollbar-color:var(--line) transparent;scrollbar-width:thin;scroll-snap-type:x proximity;gap:.75rem;padding:.2rem .15rem .8rem;display:flex;overflow-x:auto}.pokemon-card-wheel-item{scroll-snap-align:start;flex:0 0 104px}.pokemon-card-thumbnail{border-radius:6px;width:100%;transition:filter .18s,transform .18s;display:block}.pokemon-card-thumbnail img{aspect-ratio:320/447;border-radius:inherit;object-fit:cover;width:100%;display:block;box-shadow:0 5px 14px #0000003d}:is(.pokemon-card-thumbnail:hover,.pokemon-card-thumbnail:focus-visible){filter:brightness(1.08);transform:translateY(-3px)}:is(.pokemon-card-thumbnail:focus-visible,.photo-gallery-thumbnail:focus-visible,.photo-gallery-close:focus-visible,.photo-gallery-nav:focus-visible,.photo-gallery-expanded:focus-visible,.pokemon-card-close:focus-visible,.pokemon-card-nav:focus-visible,.pokemon-card-expanded-link:focus-visible,.listening-cover-thumbnail:focus-visible,.listening-cover-close:focus-visible,.listening-cover-nav:focus-visible,.listening-cover-expanded-link:focus-visible){outline-offset:3px;outline:2px solid}.pokemon-card-lightbox,.listening-cover-lightbox,.photo-gallery-lightbox{z-index:80;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#050505d1;place-items:center;padding:3.5rem 1.25rem 2rem;animation:.18s ease-out pokemon-lightbox-in;display:grid;position:fixed;inset:0}.pokemon-card-dialog,.listening-cover-dialog,.photo-gallery-dialog{color:#f4f4f4;grid-template-columns:2.75rem minmax(0,1fr) 2.75rem;align-items:center;gap:.8rem;width:min(620px,100%);display:grid;position:relative}.pokemon-card-expanded-link,.listening-cover-expanded-link,.photo-gallery-expanded{cursor:pointer;border-radius:10px;grid-column:2;justify-items:center;display:grid}.pokemon-card-expanded-link img,.listening-cover-expanded-link img,.photo-gallery-expanded img{border-radius:inherit;object-fit:contain;width:auto;max-width:100%;max-height:74vh;display:block;box-shadow:0 18px 48px #0000007a}.pokemon-card-close,.listening-cover-close,.photo-gallery-close{color:#f4f4f4;border:1px solid #f4f4f4b8;border-radius:999px;width:2.25rem;height:2.25rem;font-size:1.35rem;line-height:1;position:absolute;top:0;right:2.75rem;transform:translateY(-50%)}.pokemon-card-nav,.listening-cover-nav,.photo-gallery-nav{color:#f4f4f4;border:1px solid #f4f4f46b;border-radius:999px;width:2.25rem;height:2.25rem;font-size:1rem;transition:border-color .18s,transform .18s}.pokemon-card-nav:hover,.listening-cover-nav:hover,.photo-gallery-nav:hover{border-color:#f4f4f4;transform:scale(1.06)}.pokemon-card-nav--previous,.listening-cover-nav--previous,.photo-gallery-nav--previous{grid-column:1}.pokemon-card-nav--next,.listening-cover-nav--next,.photo-gallery-nav--next{grid-column:3}.pokemon-card-caption,.listening-cover-caption,.photo-gallery-caption{text-align:center;grid-column:1/-1;gap:.2rem;display:grid}.pokemon-card-caption h3,.listening-cover-caption h3{font-size:.92rem;font-weight:520}.pokemon-card-caption p,.listening-cover-caption p,.photo-gallery-caption p{color:#f4f4f4a8;font-size:.78rem}@keyframes pokemon-lightbox-in{0%{opacity:0}to{opacity:1}}.listening-cover-dialog{width:min(560px,100%)}.listening-cover-expanded-link img{aspect-ratio:1;width:min(68vh,100%)}.photo-gallery-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:.5rem;margin-top:.85rem;display:grid}.photo-gallery-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.photo-gallery-grid--6{grid-template-columns:repeat(6,minmax(0,1fr))}.photo-gallery-column{flex-direction:column;gap:.5rem;min-width:0;display:flex}.photo-gallery-thumbnail{cursor:zoom-in;border-radius:4px;width:100%;transition:filter .18s,transform .18s;display:block;overflow:hidden}.photo-gallery-thumbnail img{border-radius:inherit;width:100%;height:auto;display:block}:is(.photo-gallery-thumbnail:hover,.photo-gallery-thumbnail:focus-visible){filter:brightness(1.08);transform:translateY(-2px)}.photo-gallery-dialog{width:min(820px,100%)}.photo-gallery-expanded{cursor:zoom-out;width:100%;min-width:0;max-width:100%}.photo-gallery-expanded img{max-height:78vh}.ranking-card{min-width:0;margin:0 0 var(--space-2);break-inside:auto}.ranking-card h3{break-after:avoid}.ranking-card ol{margin:var(--space-1) 0 0;padding:0;list-style:none}.ranking-card li{break-inside:avoid;grid-template-columns:1.6rem minmax(0,1fr) auto;gap:.35rem;font-size:.84rem;line-height:1.65;display:grid}.ranking-card .ranking-time{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.ranking-card li span:first-child{color:var(--line);font-variant-numeric:tabular-nums}.gaming-widgets{grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem;margin-top:1.5rem;display:grid}.gaming-widget h3,.gaming-widget p,.recently-played-placeholder{margin:0}.steam-empty-state{color:var(--muted);margin-top:.35rem;font-size:.84rem;line-height:1.65}.gaming-widget h3{color:var(--muted);font-size:.95rem}.gaming-widget-label{color:var(--muted);font-size:.82rem;margin-top:.3rem!important}.gaming-widget-value{font-size:1.35rem;margin-top:.35rem!important}.recently-played-placeholder{color:var(--muted);margin-top:.35rem;padding:0;font-size:.84rem;line-height:1.65;list-style-position:inside}.gaming-widget .data-note{margin-top:.45rem}.clash-player-name{font-size:.78rem}.clash-player-tag{font-size:.66rem}@media (max-width:700px){:root{--footer-height:44px}.container{width:calc(100% - 1.2rem)}.layout.container{width:calc(100% - 2rem)}.hero h1{font-size:2.75rem}.hero-heading{gap:.75rem}.social-links{gap:.68rem}.social-link{width:1.72rem;height:1.72rem}.social-link svg{width:1.38rem;height:1.38rem}.gaming-widgets{grid-template-columns:1fr;gap:1.25rem}.pokemon-card-wheel-item{flex-basis:96px}.hero-description{padding-top:1.25rem}.entry-head{align-items:flex-start}.dropdown-list{grid-template-columns:1fr}.listening-rankings{columns:1}}@media (max-width:520px){:root[data-theme=dark] .night-star{--night-star-size-scale:.68}:root[data-theme=dark] .night-star:nth-child(3n){display:none}:root{--header-height:44px;--footer-height:38px}body{font-size:14px}.container{width:calc(100% - 1rem)}.layout.container{width:calc(100% - 1.25rem)}.topbar-content,.footer-content{gap:.55rem;font-size:.75rem}.footer-content{position:relative}.footer-webring{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.topbar-actions{gap:.5rem}.home-link,.page-links .text-btn,.theme-toggle{min-height:44px}.home-link{justify-content:center;min-width:44px}.page-links .text-btn{align-items:center;display:inline-flex}.home-link img{width:1.12rem;height:1.12rem}.theme-toggle{width:44px;height:44px}.theme-icon{width:.96rem;height:.96rem}.footer-eye{width:.82rem;height:.6rem}.layout{padding-block:calc(var(--header-height) + 2rem) calc(var(--footer-height) + 1rem);gap:1.2rem;font-size:.86rem}.layout:before{background:color-mix(in srgb, var(--background) 66%, transparent);inset-inline:-.625rem}.hero{gap:.65rem}.hero-heading{gap:.4rem}.hero h1{white-space:nowrap;flex:0 auto;font-size:clamp(2rem,10vw,2.25rem)}.social-links{grid-template-columns:repeat(2,44px);justify-content:end;gap:0 .2rem;display:grid}.social-link{width:44px;height:44px}.mode-serious .social-links{gap:0;display:flex}.social-link svg{width:1.08rem;height:1.08rem}.subtitle{font-size:.88rem;line-height:1.55}.subtitle-separator{margin-inline:.35rem}.external-link-icon{width:.75em;height:.75em;margin-left:.3rem}.hero-description,.mode-serious .hero-description{padding-block:1.05rem .75rem;line-height:1.68}.hero-postscript{margin-top:1rem}.mode-content{padding-bottom:3rem}.serious-content{gap:2.35rem}.fun-content{gap:1.45rem}.section,.fun-content .section{gap:.48rem}.serious-content .section{gap:.9rem;padding-block:.45rem}.section h2{font-size:1.04rem}.resume-item h3,.skills-list h3,.ranking-card h3,.dropdown-entry summary,.collection-static-entry>h3{font-size:.88rem}.entries,.serious-content .entries,.serious-content .education-entries{gap:1.2rem}.serious-content .resume-item>p{line-height:1.68}.item-detail,.data-note,.steam-empty-state,.recently-played-placeholder,.ranking-card li{font-size:.76rem}.side-quest-index{gap:.4rem;font-size:.7rem}.side-quest-index-link{justify-content:center;align-items:center;min-height:44px;display:inline-flex}.side-quest-index-row{column-gap:.45rem}.side-quest-index-divider{left:-.225rem}.dropdown-list{padding-left:.55rem}.dropdown-content{gap:.5rem;padding:.1rem 0 .65rem .6rem}.listening-preview-heading{gap:.5rem;font-size:.73rem}.listening-cover-wheel{gap:.55rem;padding-block:.55rem .7rem}.listening-cover-wheel-item{flex-basis:88px}.listening-volume{grid-template-columns:auto 88px auto;gap:.45rem;font-size:.7rem}.pokemon-card-wheel{gap:.5rem}.pokemon-card-wheel-item{flex-basis:78px}.photo-gallery-grid{gap:.35rem;width:calc(100% - .5rem);margin:.65rem auto 0}.photo-gallery-column{gap:.35rem}.gaming-widgets{gap:.9rem;margin-top:1rem}.pokemon-card-lightbox,.listening-cover-lightbox,.photo-gallery-lightbox{padding-inline:.75rem}.pokemon-card-dialog,.listening-cover-dialog,.photo-gallery-dialog{grid-template-columns:2.25rem minmax(0,1fr) 2.25rem;gap:.45rem}.pokemon-card-close,.listening-cover-close,.photo-gallery-close{right:2.25rem}.education-entry{grid-template-columns:46px minmax(0,1fr);align-items:start}.education-logo--uoft{width:34px;height:34px}.education-logo--osc{width:28px;height:26px}.entry-head{gap:.05rem;display:grid}.entry-dates{text-align:left;white-space:normal}}@media (prefers-reduced-motion:reduce){.subsection-item,.social-link,.text-btn,.text-link,.external-link-icon,.home-link img,.theme-icon,.theme-icon__sun,.theme-icon__moon,.theme-icon__rays,.dropdown-entry summary,.dropdown-entry summary:before,.pokemon-card-thumbnail,.pokemon-card-nav,.photo-gallery-thumbnail,.photo-gallery-nav,.listening-cover-thumbnail,.listening-cover-nav{transition:none}.pokemon-card-lightbox,.listening-cover-lightbox,.photo-gallery-lightbox,.theme-toggle:active:before{animation:none}.night-star{opacity:.22;animation:none;transform:none}.shooting-star{display:none}}@media (max-width:360px){.mode-serious .hero h1{font-size:clamp(1.75rem,9vw,2rem)}}.page-links{align-items:center;gap:1.25rem;display:flex}.playground-layout{padding-bottom:calc(var(--footer-height) + 4rem);gap:3.4rem}.playground-intro{gap:1.25rem;max-width:42rem;display:grid}.playground-intro h1{font-size:3.3rem;font-weight:560;line-height:1.1}.playground-intro p{color:var(--muted);font-size:inherit;line-height:inherit}.playground-mobile-performance-note{display:none}.playground-index-row{grid-template-columns:repeat(4,minmax(0,1fr))}.playground-index{margin-block:-.6rem -1.2rem}.mobile-playground-accordion{display:none}.playground-desktop-experiments{display:contents}.experiment-is-paused,.experiment-is-paused *,.experiment-is-paused :before,.experiment-is-paused :after{animation-play-state:paused!important}@media (hover:none),(pointer:coarse){.playground-mobile-performance-note{margin-top:.65rem;display:block}.night-sky--playground .night-star{animation-duration:var(--touch-twinkle-duration);animation-timing-function:steps(var(--touch-twinkle-steps), end)}.night-sky--playground .shooting-star{display:none}.stellar-timeline-scrubber{z-index:4;touch-action:none;height:44px;top:calc(.9rem - 16px)}:root.touch-playground-disclosure-open .night-star,:root.touch-playground-disclosure-open .shooting-star{animation-play-state:paused!important}}@media (max-width:700px) and (orientation:portrait),(max-height:520px) and (orientation:landscape) and (pointer:coarse){.playground-index{display:none}.mobile-playground-accordion .simulator-advanced-caret,.mobile-playground-accordion .simulator-advanced-reveal,.mobile-playground-accordion .simulator-advanced-content{transition:none}.mobile-playground-accordion{border-block:1px solid var(--line);display:grid}.mobile-experiment-item+.mobile-experiment-item{border-top:1px solid var(--line)}.mobile-experiment-toggle{width:100%;color:var(--foreground);font:inherit;text-align:left;justify-content:space-between;align-items:center;gap:1rem;padding-block:.95rem;font-size:.9rem;font-weight:560;line-height:1.3;display:flex}.mobile-experiment-caret{border-bottom:1px solid;border-right:1px solid;flex:none;width:.5rem;height:.5rem;transition:transform .22s;transform:translateY(-.12rem)rotate(45deg)}.mobile-experiment-item.is-open .mobile-experiment-caret{transform:translateY(.12rem)rotate(225deg)}.mobile-experiment-panel{padding-bottom:1.25rem}.mobile-experiment-panel>.black-hole-simulator,.mobile-experiment-panel>.stellar-evolution-explorer,.mobile-experiment-panel>.gravitational-lensing-sandbox,.mobile-experiment-panel>.orbital-resonance-toy{border-top:0;padding-top:.5rem}.playground-desktop-experiments{display:none}}.black-hole-simulator[id],.gravitational-lensing-sandbox[id],.orbital-resonance-toy[id],.stellar-evolution-explorer[id]{scroll-margin-top:calc(var(--header-height) + 1rem)}.black-hole-simulator{border-top:1px solid var(--line);gap:1.6rem;padding-top:2.4rem;display:grid}.simulator-heading{gap:.55rem;max-width:41rem;display:grid}.simulator-heading h2{font-size:1.45rem;font-weight:560;line-height:1.25}.simulator-heading>p:last-child{color:var(--muted);line-height:1.72}.simulator-kicker{color:var(--muted);letter-spacing:.13em;text-transform:uppercase;font-size:.72rem}.experiment-guide{border-block:1px solid var(--line)}.experiment-guide summary{color:var(--muted);cursor:pointer;align-items:center;gap:.65rem;padding-block:.75rem;font-size:.8rem;list-style:none;transition:color .22s;display:flex}.experiment-guide summary::-webkit-details-marker{display:none}:is(.experiment-guide summary:hover,.experiment-guide summary:focus-visible){color:var(--foreground)}.experiment-guide-caret{transform-origin:62% 62%;border-bottom:1px solid;border-right:1px solid;width:.48rem;height:.48rem;transition:transform .32s cubic-bezier(.22,1,.36,1);transform:rotate(-45deg)}.experiment-guide[open] .experiment-guide-caret{transform:rotate(45deg)}.experiment-guide-reveal{overflow:hidden}.experiment-guide-content{gap:.85rem;max-width:46rem;padding:.35rem 0 1.35rem 1.15rem;display:grid}.experiment-guide-content p{color:var(--muted);font-size:.78rem;line-height:1.72}.black-hole-guidance{gap:.2rem;display:grid}.black-hole-guidance>.experiment-guide{border-bottom:0}.black-hole-guidance>.simulator-presets{border-top:1px solid var(--line);padding-block:1rem .1rem}.black-hole-guidance>.variable-guide{padding-block:0 .35rem}.simulator-presets,.simulator-actions{flex-wrap:wrap;gap:.55rem;display:flex}.simulator-presets{align-items:center}.simulator-presets-label{color:var(--muted);font-size:.76rem;line-height:1}.simulator-presets button,.simulator-actions button{border:1px solid var(--line);min-height:2rem;color:var(--muted);border-radius:999px;padding:.34rem .72rem;transition:border-color .18s,color .18s,box-shadow .18s,transform .18s}:is(.simulator-presets button:hover,.simulator-presets button:focus-visible,.simulator-actions button:hover,.simulator-actions button:focus-visible){border-color:var(--foreground);color:var(--foreground)}.simulator-presets button:active,.simulator-actions button:active{transform:translateY(1px)}.simulator-presets button.is-active{border-color:var(--foreground);color:var(--foreground);box-shadow:0 0 0 1px color-mix(in srgb, currentColor 34%, transparent), 0 0 16px color-mix(in srgb, currentColor 32%, transparent)}.simulator-actions .simulator-primary-action{border-color:var(--muted);color:var(--foreground)}.simulator-workspace{grid-template-columns:minmax(0,1.45fr) minmax(220px,.75fr);align-items:start;gap:1.7rem;display:grid}.simulator-visual-panel{min-width:0}.black-hole-stage{--mass-scale:1;--view-yaw:-9deg;--view-pitch:84deg;--simulation-background:#121212;--simulation-foreground:#d7d7d7;--simulation-muted:#a1a1a1;--simulation-line:#2a2a2a;--disk-hot:#fffce8fa;--disk-warm:#ffbe58eb;--disk-cool:#8f2b1375;isolation:isolate;height:260px;color:var(--simulation-foreground);background:radial-gradient(circle at 50% 50%, #8c8c8c1f, transparent 45%), var(--simulation-background);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;perspective:520px;perspective-origin:50% 48%;place-items:center;display:grid;position:relative;overflow:hidden}.black-hole-stage.is-dragging{cursor:grabbing}.rotation-hint{color:var(--muted);padding-bottom:.55rem;font-size:.78rem}.black-hole-core,.black-hole-glow,.black-hole-photon-ring,.black-hole-orbit-plane,.accretion-disk{border-radius:50%;transition:opacity .36s;position:absolute}.black-hole-orbit-plane{z-index:1;width:calc(102px + 208px * var(--mass-scale));height:calc(102px + 208px * var(--mass-scale));transform:rotateX(var(--view-pitch)) rotateZ(var(--view-yaw));transform-style:preserve-3d;will-change:transform;place-items:center;display:grid}.black-hole-glow{z-index:0;width:calc(48px + 132px * var(--mass-scale));height:calc(48px + 132px * var(--mass-scale));filter:blur(5px);background:radial-gradient(circle,#0000 38%,#cdcdcd33 55%,#0000 72%)}.accretion-disk{background:radial-gradient(ellipse at 24% 49%, #ebf7ffc2 0 7%, #ffd8913d 18%, transparent 39%), radial-gradient(ellipse at 73% 57%, #ff89364d 0 10%, transparent 34%), conic-gradient(from 198deg, #fffced1f 0deg, #edf7fffa 34deg, var(--disk-warm) 76deg, #b0411c7a 165deg, #190c0b14 245deg, #ff973a94 319deg, #fffced1f 360deg), radial-gradient(circle, #e7f6fffa var(--disk-inner-edge), #fff4cdf5 31%, var(--disk-warm) 43%, var(--disk-cool) 66%, transparent 80%);background-blend-mode:screen, screen, screen, normal;width:100%;height:100%;box-shadow:0 0 26px color-mix(in srgb, var(--disk-warm) 34%, transparent);filter:saturate(1.08) contrast(1.08) brightness(var(--disk-luminosity));opacity:calc(.68 + var(--disk-luminosity) * .32);-webkit-mask:radial-gradient(circle, transparent 0 var(--disk-inner-edge), #000 calc(var(--disk-inner-edge) + 1.4%) 72%, transparent 83%);-webkit-mask:radial-gradient(circle, transparent 0 var(--disk-inner-edge), #000 calc(var(--disk-inner-edge) + 1.4%) 72%, transparent 83%);mask:radial-gradient(circle, transparent 0 var(--disk-inner-edge), #000 calc(var(--disk-inner-edge) + 1.4%) 72%, transparent 83%);clip-path:inset(0 0 49%);transform-style:preserve-3d;inset:0;overflow:hidden;transform:translateZ(0)}.black-hole-orbit-plane--foreground{z-index:3;pointer-events:none}.accretion-disk--foreground{clip-path:inset(49% 0 0)}.accretion-texture{mix-blend-mode:screen;filter:blur(1.1px);opacity:calc(var(--spin-opacity) * .74);animation:accretion-shear calc(var(--spin-duration) * 1.8) linear infinite;animation-timing-function:steps(var(--spin-shear-steps), end);animation-direction:var(--spin-direction);animation-play-state:var(--spin-play-state);background:radial-gradient(at 25% 34%,#fff8de61 0 4%,#0000 16%),radial-gradient(at 68% 28%,#ffa04447 0 6%,#0000 19%),radial-gradient(at 76% 70%,#79231261 0 7%,#0000 21%),radial-gradient(at 34% 76%,#ffcd7852 0 5%,#0000 18%),conic-gradient(from 18deg,#0000 0deg 24deg,#fff4d233 52deg,#0000 88deg 154deg,#ff8e372b 192deg,#0000 244deg 314deg,#ebf6ff33 342deg,#0000 360deg);border-radius:50%;position:absolute;inset:7%;-webkit-mask:radial-gradient(circle,#0000 0 18%,#000 27% 76%,#0000 86%);mask:radial-gradient(circle,#0000 0 18%,#000 27% 76%,#0000 86%)}.accretion-flow{background:linear-gradient(90deg, transparent, var(--disk-hot) 45%, var(--disk-warm) 68%, transparent);width:24px;height:5px;box-shadow:0 0 7px color-mix(in srgb, var(--disk-hot) 72%, transparent), 0 0 14px color-mix(in srgb, var(--disk-warm) 54%, transparent);filter:blur(.7px);opacity:var(--spin-opacity);offset-rotate:0deg;animation:accretion-orbit var(--spin-duration) linear infinite;animation-timing-function:steps(var(--spin-steps), end);animation-direction:var(--spin-direction);animation-play-state:var(--spin-play-state);border-radius:999px;position:absolute;inset:0}.accretion-flow--outer{offset-path:ellipse(43% 43% at 50% 50%);width:34px;opacity:calc(var(--spin-opacity) * .48);animation-delay:-1.7s}.accretion-flow--middle{offset-path:ellipse(34% 34% at 50% 50%);animation-delay:-.8s}.accretion-flow--inner{offset-path:ellipse(27% 27% at 50% 50%);width:16px;animation-duration:calc(var(--spin-duration) * .68);animation-delay:-.25s;animation-timing-function:steps(var(--spin-inner-steps), end)}@keyframes accretion-shear{to{transform:rotate(1turn)}}@keyframes accretion-orbit{0%{offset-distance:0%}to{offset-distance:100%}}.black-hole-core{z-index:2;width:calc(22px + 104px * var(--mass-scale));height:calc(22px + 104px * var(--mass-scale));background:#020202;box-shadow:0 0 0 1px #ffffff14,0 0 24px #000000c7}.black-hole-photon-ring{z-index:4;width:calc(29px + 114px * var(--mass-scale));height:calc(29px + 114px * var(--mass-scale));animation:photon-ring-drift var(--spin-duration) linear infinite;animation-timing-function:steps(var(--spin-steps), end);animation-direction:var(--spin-direction);animation-play-state:var(--spin-play-state);pointer-events:none;border:1px solid #fff4d6e6;border-color:#fff4d6e6 #ff85373d #ffb1528a #fff4d6e6;box-shadow:0 0 5px #ffefc7b8,0 0 13px #ff933b3b}@keyframes photon-ring-drift{to{transform:rotate(1turn)}}.black-hole-core:before,.black-hole-core:after{content:"";pointer-events:none;border-radius:50%;position:absolute}.black-hole-core:before{border:1px solid #fff6daeb;border-right-color:#ffad5447;inset:-3px;box-shadow:0 0 5px #ffdea080}.black-hole-core:after{filter:blur(1px);border:1px solid #0000;border-top:2px solid #ffeec994;border-bottom-color:#ff974329;inset:-7px;transform:rotate(-18deg)}.simulator-now{color:var(--muted);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:baseline;gap:1rem;padding-bottom:.55rem;display:flex}.simulator-now strong{color:var(--foreground);text-align:right;font-weight:530}.growth-chart{width:100%;height:auto;display:block;overflow:visible}.growth-chart-figure{grid-column:1/-1;grid-template-columns:minmax(0,1.15fr) minmax(13rem,.85fr);align-items:center;gap:1rem;margin:0;display:grid}.growth-chart-hint{color:var(--muted);grid-column:1/-1;margin:0;font-size:.78rem}.growth-chart-caption{color:var(--muted);gap:.35rem;font-size:.7rem;line-height:1.58;display:grid}.growth-chart-caption strong{color:var(--foreground);font-size:.74rem;font-weight:540}.growth-chart-axis,.growth-chart-target,.growth-chart-progress{fill:none;vector-effect:non-scaling-stroke}.growth-chart-axis{stroke:var(--line);stroke-width:1px}.growth-chart-target{stroke:var(--muted);stroke-width:1px;stroke-dasharray:4 5;opacity:.5}.growth-chart-progress{stroke:var(--muted);stroke-width:1px;stroke-dasharray:2 4;opacity:.45}.growth-chart-line{fill:none;stroke:var(--foreground);stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.growth-chart-marker{fill:var(--background);stroke:var(--foreground);stroke-width:2px;pointer-events:none;vector-effect:non-scaling-stroke}.growth-chart-marker-hit{fill:#0000;stroke:#0000;cursor:ew-resize;touch-action:none;vector-effect:non-scaling-stroke}:is(.growth-chart-marker-hit:hover+.growth-chart-marker,.growth-chart-marker-hit:focus-visible+.growth-chart-marker){fill:color-mix(in srgb, var(--foreground) 16%, var(--background));stroke-width:3px}.growth-chart-marker-hit:focus-visible{stroke:var(--foreground);stroke-width:1px;stroke-dasharray:2 3;outline:none}.growth-chart-label{fill:var(--muted);font-family:inherit;font-size:11px}.growth-chart-axis-title{fill:var(--foreground);font-family:inherit;font-size:11px;font-weight:540}.chart-overflow-note{color:var(--muted);grid-column:1/-1;margin-top:.2rem;font-size:.76rem}.simulator-controls{gap:1rem;padding-top:.25rem;display:grid}.simulator-slider{gap:.35rem;display:grid}.simulator-slider>span{color:var(--muted);justify-content:space-between;align-items:baseline;gap:.75rem;font-size:.78rem;display:flex}.simulator-slider output{color:var(--foreground);font-variant-numeric:tabular-nums;text-align:right}.simulator-slider input{width:100%;accent-color:var(--foreground);cursor:ew-resize}.simulator-slider input:focus-visible{outline:1px solid var(--foreground);outline-offset:3px}.simulator-advanced{padding-block:.15rem;display:grid}.simulator-advanced-toggle{width:100%;color:var(--muted);text-align:left;align-items:center;gap:.65rem;padding-block:.4rem;font-size:.8rem;transition:color .22s;display:flex}:is(.simulator-advanced-toggle:hover,.simulator-advanced-toggle:focus-visible){color:var(--foreground)}.simulator-advanced-caret{transform-origin:62% 62%;border-bottom:1px solid;border-right:1px solid;width:.48rem;height:.48rem;transition:transform .32s cubic-bezier(.22,1,.36,1);transform:rotate(-45deg)}.simulator-advanced.is-open .simulator-advanced-caret{transform:rotate(45deg)}.simulator-advanced-reveal{opacity:0;grid-template-rows:0fr;transition:grid-template-rows .36s cubic-bezier(.22,1,.36,1),opacity .24s;display:grid}.simulator-advanced.is-open .simulator-advanced-reveal{opacity:1;grid-template-rows:1fr}.simulator-advanced-content{gap:1rem;min-height:0;padding-top:0;transition:padding-top .32s cubic-bezier(.22,1,.36,1);display:grid;overflow:hidden}.simulator-advanced.is-open .simulator-advanced-content{padding-top:.75rem}@media (hover:hover) and (pointer:fine){.variable-guide .simulator-advanced-reveal,.variable-guide .simulator-advanced-content{transition:none}}.simulator-derived-setting{color:var(--muted);justify-content:space-between;align-items:baseline;gap:.75rem;font-size:.78rem;display:flex}.simulator-derived-setting output{color:var(--foreground);font-variant-numeric:tabular-nums;text-align:right}.variable-guide-content dl{gap:.8rem;margin:0;display:grid}.variable-guide-content dl>div{gap:.18rem;display:grid}.variable-guide-content dt{color:var(--foreground);font-size:.76rem;font-weight:540}.variable-guide-content dd,.variable-guide-content>p{color:var(--muted);margin:0;font-size:.74rem;line-height:1.62}.variable-guide-content>p{padding-top:.2rem;font-style:italic}.simulator-actions{margin-top:.35rem}.simulator-results{border-block:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0;display:grid}.simulator-results>div{gap:.25rem;min-width:0;padding:.9rem 1rem;display:grid}.simulator-results>div+div{border-left:1px solid var(--line)}.simulator-results dt{color:var(--muted);font-size:.74rem}.simulator-results dd{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin:0}.simulator-method-note{max-width:44rem;color:var(--muted);font-size:.78rem;line-height:1.7}@media (max-width:700px){.simulator-workspace{grid-template-columns:1fr}.simulator-controls{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:1rem}.growth-chart-figure{grid-template-columns:1fr;gap:.45rem}.simulator-actions{grid-column:1/-1}}@media (max-width:520px){.page-links{gap:.7rem}.page-links .text-btn{font-size:.73rem}.playground-layout{gap:2.4rem}.playground-intro{gap:.9rem}.playground-intro h1{font-size:2.45rem}.playground-intro p{line-height:1.68}.black-hole-simulator{gap:1.25rem;padding-top:1.7rem}.simulator-heading h2{font-size:1.18rem}.experiment-guide-content{gap:.8rem;padding:.25rem 0 1.1rem .85rem}.simulator-presets{grid-template-columns:repeat(3,minmax(0,1fr)) auto;display:grid}.simulator-presets button{min-width:0;padding-inline:.35rem;font-size:.72rem}.black-hole-stage{height:218px}.simulator-now{align-items:flex-start;font-size:.76rem}.simulator-controls{grid-template-columns:1fr}.simulator-actions{grid-column:auto}.simulator-results{grid-template-columns:1fr}.simulator-results>div+div{border-top:1px solid var(--line);border-left:0}}@media (hover:none),(pointer:coarse){.accretion-texture{animation-timing-function:steps(var(--spin-shear-steps), end)}.accretion-flow,.black-hole-photon-ring{animation-timing-function:steps(var(--spin-steps), end)}.accretion-flow--inner{animation-timing-function:steps(var(--spin-inner-steps), end)}}@media (prefers-reduced-motion:reduce){.black-hole-core,.black-hole-glow,.black-hole-orbit-plane,.accretion-disk,.simulator-presets button,.simulator-actions button,.simulator-advanced-caret,.simulator-advanced-reveal,.simulator-advanced-content,.experiment-guide summary,.experiment-guide-caret{transition:none}.accretion-flow,.accretion-texture{animation:none}}.gravitational-lensing-sandbox{border-top:1px solid var(--line);gap:1.6rem;padding-top:2.4rem;display:grid}.lensing-workspace{grid-template-columns:minmax(0,1.45fr) minmax(220px,.75fr);align-items:start;gap:1.7rem;display:grid}.lensing-visual-panel{min-width:0}.lensing-instruction{color:var(--muted);justify-content:space-between;align-items:baseline;gap:1rem;padding-bottom:.55rem;font-size:.78rem;display:flex}.lensing-instruction strong{color:var(--foreground);text-align:right;font-weight:530}.lensing-depth-diagram{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:auto;margin-top:.55rem;display:block;overflow:visible}.lensing-depth-field{fill:url(#lensing-depth-field);stroke:#2a2a2a;stroke-width:1px;vector-effect:non-scaling-stroke}.lensing-depth-axis{stroke:#777;stroke-width:1px;stroke-dasharray:2 5;opacity:.42;vector-effect:non-scaling-stroke}.lensing-depth-plane{stroke-width:1px;stroke-dasharray:3 4;opacity:.3;vector-effect:non-scaling-stroke}.lensing-depth-plane--lens{stroke:#efc77f}.lensing-depth-plane--source{stroke:#c8a8ff}.lensing-light-path{fill:none;stroke:#9bdcff;stroke-width:1.35px;marker-end:url(#lensing-light-arrow);opacity:.78;filter:drop-shadow(0 0 3px #9bdcff47);vector-effect:non-scaling-stroke}#lensing-light-arrow path{fill:#9bdcff}.lensing-depth-observer,.lensing-depth-lens,.lensing-depth-source{font-family:inherit}.lensing-depth-observer>path{fill:none;stroke:#d7d7d7;stroke-width:1.2px;vector-effect:non-scaling-stroke}.lensing-depth-observer>circle{fill:#d7d7d7}.lensing-depth-lens-halo{fill:#efc77f21;stroke:#efc77f;stroke-width:.9px;vector-effect:non-scaling-stroke}.lensing-depth-lens-disk{fill:#efc77f52;stroke:#ffecbfa3;stroke-width:.8px;vector-effect:non-scaling-stroke}.lensing-depth-lens-core{fill:#fff1c4;opacity:.86}.lensing-depth-source>g>ellipse{fill:#c8a8ff2e;stroke:#c8a8ff;stroke-width:1px;vector-effect:non-scaling-stroke}.lensing-depth-source>g>path{fill:none;stroke:#dbcaff;stroke-width:.75px;opacity:.66;vector-effect:non-scaling-stroke}.lensing-depth-source>g>circle{fill:#fff1d0;opacity:.9}.lensing-depth-observer text,.lensing-depth-lens text,.lensing-depth-source text,.lensing-depth-caption{fill:#a1a1a1;letter-spacing:.055em;text-transform:uppercase;font-family:inherit;font-size:9px}.lensing-depth-caption{fill:#9bdcff;opacity:.72}.lensing-canvas{--simulation-background:#121212;--simulation-foreground:#d7d7d7;--simulation-muted:#a1a1a1;--simulation-line:#2a2a2a;width:100%;height:auto;color:var(--simulation-foreground);cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none;display:block}.lensing-canvas:active{cursor:grabbing}.lensing-field{fill:var(--simulation-background);stroke:var(--simulation-line);stroke-width:1px;vector-effect:non-scaling-stroke}.lensing-field-star{fill:var(--simulation-foreground);pointer-events:none}.lensing-angular-grid{pointer-events:none}.lensing-angular-grid line,.lensing-angular-grid circle{fill:none;stroke:#71808a;vector-effect:non-scaling-stroke}.lensing-grid-axis{stroke-width:1px;stroke-dasharray:3 6;opacity:.2}.lensing-grid-spoke{stroke-width:.75px;stroke-dasharray:2 8;opacity:.1}.lensing-grid-ring{stroke-width:.75px;stroke-dasharray:2 7;opacity:.15}.lensing-grid-label{fill:#82909a;letter-spacing:.07em;opacity:.58;text-transform:uppercase;font-family:inherit;font-size:8px}.einstein-guide,.einstein-ring{fill:none;pointer-events:none;vector-effect:non-scaling-stroke}.einstein-guide{stroke:var(--simulation-muted);stroke-width:1px;stroke-dasharray:3 6;opacity:.24}.einstein-ring{stroke:#9bdcff;stroke-width:3px;filter:url(#lensing-soft-glow);transition:r .36s cubic-bezier(.22,1,.36,1),opacity .3s}.lensing-image{color:#9bdcff;filter:url(#lensing-soft-glow);pointer-events:none;transition:opacity .3s,rx .22s cubic-bezier(.22,1,.36,1),ry .22s cubic-bezier(.22,1,.36,1)}.lensing-image>ellipse:first-child{fill:none;stroke:currentColor;stroke-width:2.4px;opacity:.88;vector-effect:non-scaling-stroke}.lensing-image-core{fill:currentColor;opacity:.16}.lensing-image-highlight{fill:none;stroke:#d9f2ff;stroke-width:.7px;opacity:.48;vector-effect:non-scaling-stroke}.lensing-image--minus{opacity:.68}.lensing-lens,.lensing-source{pointer-events:none;will-change:transform}.lensing-lens{color:#efc77f}.lensing-source{color:#c8a8ff;opacity:.72}.lensing-lens-halo{fill:url(#lensing-lens-gradient);stroke:#efc77f70;stroke-width:.8px;filter:url(#lensing-soft-glow);opacity:.76;vector-effect:non-scaling-stroke}.lensing-lens-disk{fill:url(#lensing-lens-gradient);stroke:#ffe3aeb8;stroke-width:1px;opacity:.88;vector-effect:non-scaling-stroke}.lensing-lens-isophote{fill:#ffdd9e26;stroke:#ffe8bc85;stroke-width:.7px;opacity:.72;vector-effect:non-scaling-stroke}.lensing-lens-core{fill:#fff0bd;stroke:#fff9e0c2;stroke-width:.7px;opacity:.88;vector-effect:non-scaling-stroke}.lensing-lens-mass-centre{fill:#fffdf1;opacity:.9}.lensing-lens text,.lensing-source text{fill:var(--simulation-muted);letter-spacing:.05em;text-transform:uppercase;font-family:inherit;font-size:11px}.lensing-source-handle{fill:#0000;stroke:currentColor;stroke-width:1px;stroke-dasharray:3 4;opacity:.58;vector-effect:non-scaling-stroke}.lensing-source-disk{fill:url(#lensing-galaxy-gradient);stroke:currentColor;stroke-width:1px;filter:url(#lensing-soft-glow);vector-effect:non-scaling-stroke}.lensing-source-core{fill:#fff0d1;opacity:.88}.lensing-source-arms{fill:none;stroke:#e5dcff;stroke-width:.9px;opacity:.62;vector-effect:non-scaling-stroke}.lensing-results dd{white-space:normal}@media (max-width:700px){.lensing-workspace{grid-template-columns:1fr}}@media (max-width:520px){.gravitational-lensing-sandbox{gap:1.25rem;padding-top:1.7rem}.lensing-instruction{align-items:flex-start;font-size:.72rem}.lensing-canvas{width:calc(100% + .3rem);margin-inline:-.15rem}}@media (prefers-reduced-motion:reduce){.einstein-ring,.lensing-image{transition:none}}.orbital-resonance-toy{border-top:1px solid var(--line);gap:1.6rem;padding-top:2.4rem;display:grid}.resonance-workspace{grid-template-columns:minmax(0,1.45fr) minmax(220px,.75fr);align-items:start;gap:1.7rem;display:grid}.resonance-visual-panel{min-width:0}.resonance-status{color:var(--muted);justify-content:space-between;align-items:baseline;gap:1rem;padding-bottom:.55rem;font-size:.78rem;display:flex}.resonance-status strong{color:var(--foreground);text-align:right;font-weight:530}.resonance-canvas{--simulation-background:#121212;--simulation-foreground:#d7d7d7;--simulation-muted:#a1a1a1;--simulation-line:#2a2a2a;width:100%;height:auto;color:var(--simulation-foreground);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;display:block}.resonance-canvas.is-dragging{cursor:grabbing}.resonance-field{fill:var(--simulation-background);stroke:var(--simulation-line);stroke-width:1px;vector-effect:non-scaling-stroke}.resonance-field-star{fill:var(--simulation-foreground)}.resonance-orbit{fill:none;stroke:#7189aa;stroke-width:1px;stroke-dasharray:3 5;vector-effect:non-scaling-stroke}.resonance-spoke{stroke:#91a7c2;stroke-width:.8px;opacity:.16;vector-effect:non-scaling-stroke}.resonance-star-glow{color:#f3b65f;fill:url(#resonance-star-glow)}.resonance-star{fill:#ffe1a0;filter:url(#resonance-body-glow)}.resonance-body{color:var(--simulation-foreground);filter:url(#resonance-body-glow);will-change:transform}.resonance-body>circle:last-child{fill:currentColor}.resonance-body-halo{fill:none;stroke:currentColor;stroke-width:1px;opacity:.24}.resonance-body--2{color:#f1a66f;opacity:.88}.resonance-body--3{color:#a9dd88;opacity:.82}.resonance-body--4{color:#c6a2f5;opacity:.76}.resonance-body--5{color:#ef8f9a;opacity:.7}.resonance-body--1{color:#82cfff}.resonance-body-picker{border:0;gap:.75rem;min-width:0;margin:0;padding:0;display:grid}.resonance-body-picker legend,.resonance-select>span{color:var(--muted);font-size:.78rem}.resonance-body-picker>div{border:1px solid var(--line);border-radius:999px;grid-template-columns:repeat(5,minmax(0,1fr));display:grid;overflow:hidden}.resonance-body-picker button{min-height:2rem;color:var(--muted);font-variant-numeric:tabular-nums;transition:color .18s,background-color .18s}.resonance-body-picker button+button{border-left:1px solid var(--line)}.resonance-body-picker button[aria-pressed=true]{color:var(--background);background:var(--foreground)}.resonance-select{gap:.35rem;display:grid}.resonance-select select{border:1px solid var(--line);width:100%;min-height:2.1rem;color:var(--foreground);background:var(--background);font:inherit;border-radius:6px;padding:.25rem .55rem}.resonance-select select:disabled{color:var(--muted);opacity:.55}.resonance-results dd{white-space:normal}@media (max-width:700px){.resonance-workspace{grid-template-columns:1fr}}@media (max-width:520px){.orbital-resonance-toy{gap:1.25rem;padding-top:1.7rem}.resonance-status{align-items:flex-start;font-size:.72rem}.resonance-canvas{width:calc(100% + .3rem);margin-inline:-.15rem}}@media (prefers-reduced-motion:reduce){.resonance-body-picker button{transition:none}}.stellar-evolution-explorer{border-top:1px solid var(--line);gap:1.6rem;padding-top:2.4rem;display:grid}.stellar-workspace{grid-template-columns:minmax(0,1.45fr) minmax(220px,.75fr);align-items:start;gap:.8rem 1.7rem;display:grid}.stellar-visual-panel{min-width:0}.stellar-status{color:var(--muted);justify-content:space-between;align-items:baseline;gap:1rem;padding-bottom:.55rem;font-size:.78rem;display:flex}.stellar-status strong{color:var(--foreground);text-align:right;font-weight:530}.stellar-canvas{--simulation-background:#121212;--simulation-foreground:#d7d7d7;--simulation-line:#2a2a2a;--stellar-size:68px;--stellar-glow-size:119px;--stellar-color:#ffd89a;--stellar-pulse-duration:4s;border:1px solid var(--simulation-line);width:100%;height:330px;color:var(--simulation-foreground);background:radial-gradient(circle at 50% 48%, #5f73961f, transparent 43%), var(--simulation-background);isolation:isolate;border-radius:10px;place-items:center;display:grid;position:relative;overflow:hidden}.stellar-field-star{background:var(--simulation-foreground);pointer-events:none;border-radius:50%;position:absolute}.stellar-object,.stellar-glow,.stellar-nebula,.stellar-supernova-shell,.stellar-burst,.stellar-pulsar-beams{pointer-events:none;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.stellar-glow{z-index:1;width:var(--stellar-glow-size);height:var(--stellar-glow-size);background:radial-gradient(circle, color-mix(in srgb, var(--stellar-color) 42%, transparent), color-mix(in srgb, var(--stellar-color) 14%, transparent) 46%, transparent 72%);filter:blur(7px);transition:width .95s cubic-bezier(.22,1,.36,1),height .95s cubic-bezier(.22,1,.36,1),background .75s}.stellar-object{z-index:3;width:var(--stellar-size);height:var(--stellar-size);border:1px solid color-mix(in srgb, var(--stellar-color) 75%, white);background:radial-gradient(circle at 34% 28%, #ffffffc2, transparent 13%), radial-gradient(circle at 42% 38%, color-mix(in srgb, var(--stellar-color) 92%, white), var(--stellar-color) 58%, color-mix(in srgb, var(--stellar-color) 68%, black));box-shadow:0 0 24px color-mix(in srgb, var(--stellar-color) 52%, transparent);animation:stellar-pulse var(--stellar-pulse-duration) ease-in-out infinite;animation-timing-function:steps(var(--stellar-pulse-steps), end);place-items:center;transition:width .95s cubic-bezier(.22,1,.36,1),height .95s cubic-bezier(.22,1,.36,1),background .75s,border-color .75s,box-shadow .75s;display:grid;overflow:hidden}.stellar-object>span{border-radius:inherit;background:repeating-radial-gradient(circle at 36% 33%, transparent 0 5px, #ffffff16 6px 7px), repeating-conic-gradient(from 15deg, transparent 0 16deg, #28140a29 18deg 22deg);mix-blend-mode:soft-light;width:100%;height:100%;position:relative}.stellar-object>span:before{border-radius:inherit;content:"";opacity:.72;background:radial-gradient(circle at 22% 32%,#ffffff4d 0 3%,#0000 9%),radial-gradient(circle at 68% 24%,#461c0c52 0 4%,#0000 11%),radial-gradient(circle at 76% 68%,#ffeec242 0 5%,#0000 13%),radial-gradient(circle at 35% 76%,#541f0d45 0 4%,#0000 12%);position:absolute;inset:-12%}.stellar-canvas--main-sequence .stellar-object{animation:stellar-main-sequence-breathe calc(var(--stellar-pulse-duration) * 1.45) ease-in-out infinite;animation-timing-function:steps(var(--stellar-main-sequence-steps), end)}.stellar-canvas--red-giant .stellar-object,.stellar-canvas--red-supergiant .stellar-object{animation:stellar-giant-pulse calc(var(--stellar-pulse-duration) * 1.65) ease-in-out infinite;animation-timing-function:steps(var(--stellar-giant-steps), end)}.stellar-canvas--main-sequence .stellar-object>span,.stellar-canvas--red-giant .stellar-object>span,.stellar-canvas--red-supergiant .stellar-object>span{will-change:transform;animation:12s steps(720,end) infinite stellar-surface-drift}.stellar-canvas--red-giant .stellar-object>span,.stellar-canvas--red-supergiant .stellar-object>span{animation-duration:16s;animation-timing-function:steps(960,end)}.stellar-canvas--main-sequence .stellar-object>span:before,.stellar-canvas--red-giant .stellar-object>span:before,.stellar-canvas--red-supergiant .stellar-object>span:before{animation:7.5s steps(450,end) infinite alternate stellar-convection-shift}.stellar-canvas--red-giant .stellar-object>span:before,.stellar-canvas--red-supergiant .stellar-object>span:before{opacity:.9;animation-duration:5.5s;animation-timing-function:steps(330,end)}.stellar-canvas--red-giant .stellar-object{box-shadow:0 0 28px color-mix(in srgb, var(--stellar-color) 58%, transparent), 0 0 54px color-mix(in srgb, var(--stellar-color) 18%, transparent)}.stellar-canvas--red-supergiant .stellar-object{border-color:color-mix(in srgb, var(--stellar-color) 62%, white);box-shadow:0 0 42px color-mix(in srgb, var(--stellar-color) 72%, transparent), 0 0 92px color-mix(in srgb, var(--stellar-color) 34%, transparent)}.stellar-canvas--red-supergiant .stellar-glow{filter:blur(11px)}.stellar-canvas--red-supergiant .stellar-object>span{background:repeating-radial-gradient(circle at 36% 33%, transparent 0 9px, #ffebce21 10px 12px), repeating-conic-gradient(from 15deg, transparent 0 20deg, #4110083d 22deg 28deg)}.stellar-nebula{z-index:2;opacity:0;filter:blur(6px);background:radial-gradient(#0000 7%,#7edfff75 17%,#9a74ff38 35%,#0000 66%),conic-gradient(from 30deg,#0000,#5cdaff4d,#0000 35%,#da70ff3d,#0000 72%);width:250px;height:190px;transition:opacity .85s}.stellar-supernova-shell{z-index:2;opacity:0;border:2px solid #ffcb77b8;width:205px;height:205px;transition:opacity .85s;box-shadow:0 0 24px #ff733761,inset 0 0 22px #ffe3a63d}.stellar-burst{z-index:1;opacity:0;background:repeating-conic-gradient(from 4deg, transparent 0 7deg, #ffde9e75 8deg, transparent 10deg 17deg);width:270px;height:270px;transition:opacity .85s;-webkit-mask:radial-gradient(circle,#0000 0 14%,#000 16%,#0000 70%);mask:radial-gradient(circle,#0000 0 14%,#000 16%,#0000 70%)}.stellar-canvas--planetary-nebula .stellar-nebula{opacity:1;animation:8s steps(480,end) infinite stellar-nebula-drift}.stellar-canvas--supernova .stellar-supernova-shell,.stellar-canvas--supernova .stellar-burst{opacity:1;animation:1.8s steps(108,end) infinite stellar-supernova-pulse}.stellar-canvas--white-dwarf .stellar-object,.stellar-canvas--neutron-star .stellar-object{box-shadow:0 0 18px var(--stellar-color), 0 0 42px color-mix(in srgb, var(--stellar-color) 38%, transparent)}.stellar-pulsar-beams{z-index:2;opacity:0;width:280px;height:280px;transition:opacity .5s}.stellar-pulsar-beams:before,.stellar-pulsar-beams:after{clip-path:polygon(0 44%,100% 0,100% 100%,0 56%);filter:blur(.7px);transform-origin:0;content:"";background:linear-gradient(90deg,#c5e8ffb8,#7ec5ff1f 72%,#0000);width:132px;height:36px;position:absolute;top:calc(50% - 18px);left:50%}.stellar-pulsar-beams:after{transform:rotate(180deg)}.stellar-radio-wave{opacity:.7;border-radius:50%;width:28px;height:58px;position:absolute;top:calc(50% - 29px)}.stellar-radio-wave--forward{border-right:2px solid #99d8ffb8;right:0}.stellar-radio-wave--backward{border-left:2px solid #99d8ffb8;left:0}.stellar-canvas--neutron-star .stellar-pulsar-beams{opacity:1;animation:1.15s steps(69,end) infinite stellar-pulsar-sweep}.stellar-canvas--neutron-star .stellar-object>span{background:repeating-linear-gradient(90deg,#ffffff52 0 1px,#0000 1px 4px);animation:.32s steps(19,end) infinite stellar-neutron-spin}.stellar-canvas--black-hole .stellar-glow{background:radial-gradient(circle,#0000 31%,#d897503d 38%,#0000 58%);width:112px;height:112px;animation:3.2s steps(192,end) infinite stellar-remnant-pulse}.stellar-canvas--black-hole .stellar-object{background:#010101;border-color:#ffffff29;animation:none;overflow:visible;box-shadow:0 0 0 1px #ffffff0f,0 0 28px #000000e6}.stellar-canvas--black-hole .stellar-object:after{clip-path:inset(48% 0 0);content:"";border:3px solid #e5a95e94;border-radius:50%;position:absolute;inset:-12px;transform:rotate(-8deg)scaleY(.34)}.stellar-timeline-panel{grid-column:1/-1;min-width:0}.stellar-timeline-hint{color:var(--muted);margin:0;font-size:.72rem;line-height:1.5}.stellar-timeline-hint strong{color:var(--foreground);font-weight:650}.stellar-timeline-control{position:relative}.stellar-timeline-scrubber{z-index:2;-webkit-appearance:none;appearance:none;cursor:ew-resize;background:0 0;width:100%;height:19px;margin:0;position:absolute;top:calc(.9rem - 4px);left:0}.stellar-timeline-scrubber::-webkit-slider-runnable-track{background:0 0;height:1px}.stellar-timeline-scrubber::-webkit-slider-thumb{border:1px solid var(--foreground);-webkit-appearance:none;appearance:none;background:var(--background);width:13px;height:13px;box-shadow:0 0 0 3px color-mix(in srgb, var(--foreground) 12%, transparent), 0 0 12px color-mix(in srgb, var(--foreground) 46%, transparent);border-radius:50%;margin-top:-6px}.stellar-timeline-scrubber::-moz-range-track{background:0 0;height:1px}.stellar-timeline-scrubber::-moz-range-thumb{border:1px solid var(--foreground);background:var(--background);width:13px;height:13px;box-shadow:0 0 0 3px color-mix(in srgb, var(--foreground) 12%, transparent), 0 0 12px color-mix(in srgb, var(--foreground) 46%, transparent);border-radius:50%}.stellar-timeline-scrubber:focus-visible{outline:1px solid var(--foreground);outline-offset:3px}.stellar-timeline{width:100%;height:5.5rem;margin:0;padding:.9rem 0 0;list-style:none;position:relative}.stellar-timeline:before{background:var(--line);content:"";height:1px;position:absolute;top:calc(.9rem + 5px);left:0;right:0}.stellar-timeline li{--stage-color:var(--foreground);top:.9rem;left:var(--stage-position);width:0;position:absolute}.stellar-timeline button{z-index:3;width:max-content;color:var(--muted);text-align:center;justify-items:center;gap:.42rem;transition:color .18s;display:grid;position:relative;transform:translate(-50%)}.stellar-timeline li:first-child button{text-align:left;justify-items:start;transform:none}.stellar-timeline li:last-child button{text-align:right;justify-items:end;transform:translate(-100%)}.stellar-timeline button>span{border:1px solid var(--stage-color);background:var(--background);border-radius:50%;width:11px;height:11px;transition:background-color .18s,box-shadow .18s,transform .18s;box-shadow:0 0 #0000}.stellar-timeline button small{top:var(--stage-label-offset);max-width:8rem;font-size:.66rem;line-height:1.35;position:relative}:is(.stellar-timeline button:hover,.stellar-timeline button:focus-visible,.stellar-timeline button[aria-pressed=true]){color:var(--foreground)}.stellar-timeline button[aria-pressed=true]>span{background:var(--stage-color);box-shadow:0 0 12px color-mix(in srgb, var(--stage-color) 68%, transparent);animation:2.4s steps(144,end) infinite stellar-marker-pulse;transform:scale(1.15)}.stellar-results dd{white-space:normal}@keyframes stellar-pulse{0%,to{transform:translate(-50%,-50%)scale(1)}50%{transform:translate(-50%,-50%)scale(1.04)}}@keyframes stellar-main-sequence-breathe{0%,to{filter:brightness();transform:translate(-50%,-50%)scale(1)}50%{filter:brightness(1.035);transform:translate(-50%,-50%)scale(1.009)}}@keyframes stellar-giant-pulse{0%,to{filter:brightness(.96);transform:translate(-50%,-50%)scale(.985)}50%{filter:brightness(1.08);transform:translate(-50%,-50%)scale(1.035)}}@keyframes stellar-surface-drift{to{transform:rotate(1turn)}}@keyframes stellar-convection-shift{0%{opacity:.55;transform:translate(-1.5%,1%)scale(.98)rotate(-3deg)}to{opacity:.92;transform:translate(1.5%,-1%)scale(1.04)rotate(4deg)}}@keyframes stellar-nebula-drift{0%{transform:translate(-50%,-50%)rotate(0)scale(.96)}50%{transform:translate(-50%,-50%)rotate(180deg)scale(1.04)}to{transform:translate(-50%,-50%)rotate(360deg)scale(.96)}}@keyframes stellar-supernova-pulse{0%,to{transform:translate(-50%,-50%)scale(.88)}50%{transform:translate(-50%,-50%)scale(1.05)}}@keyframes stellar-remnant-pulse{0%,to{opacity:.62;transform:translate(-50%,-50%)scale(.96)}50%{opacity:1;transform:translate(-50%,-50%)scale(1.06)}}@keyframes stellar-pulsar-sweep{0%{transform:translate(-50%,-50%)rotate(-18deg)}to{transform:translate(-50%,-50%)rotate(342deg)}}@keyframes stellar-neutron-spin{to{transform:rotate(1turn)}}@keyframes stellar-marker-pulse{0%,to{box-shadow:0 0 8px color-mix(in srgb, var(--stage-color) 52%, transparent)}50%{box-shadow:0 0 18px color-mix(in srgb, var(--stage-color) 82%, transparent)}}@media (max-width:700px){.stellar-workspace{grid-template-columns:1fr}.stellar-timeline-panel{order:2}.stellar-controls{order:3}}@media (max-width:520px){.stellar-evolution-explorer{gap:1.25rem;padding-top:1.7rem}.stellar-status{align-items:flex-start;font-size:.72rem}.stellar-canvas{width:calc(100% + .3rem);height:255px;margin-inline:-.15rem}.stellar-timeline button small{font-size:.59rem}}@media (hover:none),(pointer:coarse){.stellar-object{animation-timing-function:steps(var(--stellar-pulse-steps), end)}.stellar-canvas--main-sequence .stellar-object{animation-timing-function:steps(var(--stellar-main-sequence-steps), end)}.stellar-canvas--red-giant .stellar-object,.stellar-canvas--red-supergiant .stellar-object{animation-timing-function:steps(var(--stellar-giant-steps), end)}.stellar-canvas--main-sequence .stellar-object>span{animation-timing-function:steps(360,end)}.stellar-canvas--red-giant .stellar-object>span,.stellar-canvas--red-supergiant .stellar-object>span{animation-timing-function:steps(480,end)}.stellar-canvas--main-sequence .stellar-object>span:before{animation-timing-function:steps(225,end)}.stellar-canvas--red-giant .stellar-object>span:before,.stellar-canvas--red-supergiant .stellar-object>span:before{animation-timing-function:steps(165,end)}.stellar-canvas--planetary-nebula .stellar-nebula{animation-timing-function:steps(240,end)}.stellar-canvas--supernova .stellar-supernova-shell,.stellar-canvas--supernova .stellar-burst{animation-timing-function:steps(54,end)}.stellar-canvas--neutron-star .stellar-pulsar-beams{animation-timing-function:steps(35,end)}.stellar-canvas--neutron-star .stellar-object>span{animation-timing-function:steps(10,end)}.stellar-canvas--black-hole .stellar-glow{animation-timing-function:steps(96,end)}.stellar-timeline button[aria-pressed=true]>span{animation-timing-function:steps(72,end)}}@media (prefers-reduced-motion:reduce){.stellar-object,.stellar-glow,.stellar-nebula,.stellar-supernova-shell,.stellar-burst,.stellar-pulsar-beams,.stellar-object>span,.stellar-object>span:before,.stellar-timeline button[aria-pressed=true]>span{animation:none}}
