@import "https://fonts.googleapis.com/css2?family=Patrick+Hand&display=swap";.clean-panel{background:var(--color-bg);border:var(--border-width) solid var(--color-line);border-radius:var(--radius);padding:var(--panel-padding);flex-direction:column;min-height:0;display:flex}.clean-panel--plain{border-color:#0000;padding-top:0;padding-bottom:0}.clean-panel__heading{flex:none}.clean-panel__title{font-size:var(--font-size-lg);font-weight:var(--font-weight-heading);margin:0;line-height:1.3}.clean-panel__body{margin-top:var(--panel-gap,var(--space-4));flex-direction:column;flex:auto;min-height:0;display:flex}.clean-panel__body:has(>.rs-collapse){margin-top:0}.clean-disclosure{all:unset;box-sizing:border-box;align-items:center;gap:var(--space-3);cursor:pointer;width:100%;font:inherit;font-size:var(--font-size-lg);font-weight:var(--font-weight-heading);color:inherit;text-align:left;line-height:1.3;display:flex}.clean-disclosure:focus-visible{outline:var(--border-width) solid var(--color-line);outline-offset:6px;border-radius:var(--radius-sm)}.clean-disclosure__label{flex:1}.clean-disclosure__hint{font-size:var(--font-size-sm);color:var(--color-muted);font-weight:400}.clean-disclosure__chevron{transition:transform var(--motion-duration) var(--motion-easing);display:inline-flex}.clean-disclosure__chevron.is-open{transform:rotate(180deg)}.clean-link{justify-content:space-between;align-items:baseline;gap:var(--space-4);padding:var(--row-pad,var(--space-2)) 0;color:inherit;text-decoration:none;display:flex}.clean-link__label{text-underline-offset:3px;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;text-decoration-thickness:var(--border-width);transition:text-decoration-color var(--motion-duration) var(--motion-easing)}.clean-link:focus-visible .clean-link__label{text-decoration-color:currentColor}.clean-link:focus-visible{outline:var(--border-width) solid var(--color-line);outline-offset:4px;border-radius:var(--radius-sm)}.clean-link.is-muted{color:var(--color-muted)}.clean-link.is-disabled{cursor:default}.clean-link.is-disabled .clean-link__label{text-decoration:none}.clean-link__meta{font-size:var(--font-size-sm);color:var(--color-muted);font-variant-numeric:tabular-nums;flex-shrink:0}.clean-divider{border:0;border-top:var(--border-width) solid var(--color-line);margin:var(--divider-gap,var(--space-4)) 0}.clean-timeline{--timeline-dot:11px;--timeline-dot-top:5px;--timeline-row-gap:var(--timeline-gap);grid-template-columns:max-content var(--timeline-dot) minmax(0, 1fr);column-gap:var(--space-3);margin:0;padding:0;list-style:none;display:grid}.clean-timeline__item{grid-template-columns:subgrid;grid-column:1/-1;align-items:start;display:grid}.clean-timeline__label,.clean-timeline__content{padding-bottom:var(--timeline-row-gap)}.clean-timeline__item:last-child .clean-timeline__label,.clean-timeline__item:last-child .clean-timeline__content{padding-bottom:0}.clean-timeline__label{text-align:right;white-space:nowrap;font-size:var(--font-size-sm);line-height:var(--line-height);color:var(--color-muted);font-variant-numeric:tabular-nums}.clean-timeline__rail{align-self:stretch;position:relative}.clean-timeline__rail:before{content:"";width:var(--border-width);background:var(--color-faint);position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.clean-timeline__item:first-child .clean-timeline__rail:before{top:var(--timeline-dot-top)}.clean-timeline__item:last-child .clean-timeline__rail:before{height:var(--timeline-dot-top);bottom:auto}.clean-timeline__marker{top:var(--timeline-dot-top);width:var(--timeline-dot);height:var(--timeline-dot);box-sizing:border-box;border:var(--border-width) solid var(--color-line);background:var(--color-bg);border-radius:50%;position:absolute;left:0}.clean-timeline__content{min-width:0;font-size:var(--font-size-sm);line-height:var(--line-height);flex-direction:column;gap:2px;display:flex}.clean-timeline__title{overflow-wrap:anywhere}.clean-timeline__detail{font-size:var(--font-size-xs);color:var(--color-muted)}.clean-timeline__minor{font-size:var(--font-size-xs);color:var(--color-muted);margin:2px 0 0;padding:0;font-weight:400;line-height:1.4;list-style:none}.clean-timeline__item.is-past .clean-timeline__minor{color:var(--color-faint)}.clean-timeline__content a{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--color-faint);text-decoration-color:var(--color-faint);text-decoration-thickness:var(--border-width);text-underline-offset:2px;transition:text-decoration-color var(--motion-duration) var(--motion-easing)}.clean-timeline__content a:hover,.clean-timeline__content a:focus-visible{text-decoration-color:currentColor}.clean-timeline__minor a{color:var(--color-muted)}.clean-timeline__item.is-past .clean-timeline__label{color:var(--color-faint)}.clean-timeline__item.is-past .clean-timeline__title{color:var(--color-muted)}.clean-timeline__item.is-past .clean-timeline__marker{background:var(--color-muted);border-color:var(--color-muted)}.clean-timeline__item.is-current .clean-timeline__label{color:var(--color-fg);background:var(--color-now);justify-self:end;height:fit-content;margin-right:-.2em;padding:0 .2em}.clean-timeline__item.is-current .clean-timeline__title{font-weight:var(--font-weight-heading)}.clean-timeline__item.is-current .clean-timeline__marker{background:var(--color-fg);outline:var(--border-width) solid var(--color-line);outline-offset:3px}.clean-timeline__item.is-quiet .clean-timeline__marker{--quiet-dot:7px;width:var(--quiet-dot);height:var(--quiet-dot);left:calc((var(--timeline-dot) - var(--quiet-dot)) / 2);top:calc(var(--timeline-dot-top) + (var(--timeline-dot) - var(--quiet-dot)) / 2);background:var(--color-bg);border-color:var(--color-faint);outline:none}.clean-timeline__item.is-quiet .clean-timeline__label,.clean-timeline__item.is-quiet .clean-timeline__title{font-size:var(--font-size-xs);color:var(--color-faint);font-weight:400}.clean-timeline__item.is-quiet.is-current .clean-timeline__label,.clean-timeline__item.is-quiet.is-current .clean-timeline__title{color:var(--color-muted)}.clean-calendar{--calendar-hairline:max(1px, var(--border-width));gap:var(--calendar-hairline);background:var(--color-line);border:var(--border-width) solid var(--color-line);border-radius:var(--radius-sm);display:grid;overflow:hidden}.clean-calendar__row{gap:var(--calendar-hairline);grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.clean-calendar__weekday{background:var(--color-bg);text-align:center;letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted);padding:3px 0;font-size:10px}.clean-cell{--cell-base:24px;--cell-marker:17px;gap:var(--space-1);min-height:max(var(--calendar-cell-height), calc(var(--cell-base) + var(--calendar-marker-slots,0) * var(--cell-marker)));padding:2px 2px var(--space-1);background:var(--color-bg);font-size:var(--font-size-xs);flex-direction:column;display:flex}.clean-cell__day{font-variant-numeric:tabular-nums;border-radius:50%;justify-content:center;align-items:center;width:19px;height:19px;display:inline-flex}.clean-cell.is-outside .clean-cell__day{color:var(--color-faint)}.clean-cell.is-today .clean-cell__day{background:var(--color-now);color:var(--color-fg)}.clean-cell__markers{flex-direction:column;align-items:flex-start;gap:2px;margin:0;padding:0;list-style:none;display:flex}.clean-cell__marker{box-sizing:border-box;border:var(--border-width) solid var(--color-line);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;max-width:100%;padding:0 4px;font-size:10px;line-height:13px;overflow:hidden}.clean-cell__marker a{color:inherit;text-decoration:none}.clean-cell__marker a:hover{text-underline-offset:2px;text-decoration:underline}.clean-cell__marker.is-lab{border-style:dashed}.clean-cell__marker.is-homework{border-color:var(--color-muted);color:var(--color-muted)}.clean-cell__marker.is-holiday,.clean-cell__marker.is-other{color:var(--color-muted);border-color:#0000;padding-left:0}.clean-cell.is-outside .clean-cell__marker{opacity:.35}.clean-slide{aspect-ratio:16/9;padding:var(--panel-padding);border:var(--border-width) solid var(--color-line);border-radius:var(--radius);background:var(--color-bg);color:var(--color-muted);font-size:var(--font-size-sm);text-align:center;place-items:center;display:grid}.clean-slide.is-fill{padding:0;display:block;overflow:hidden}.clean-slide.is-fill>*{border:0;width:100%;height:100%;display:block}.clean-button{all:unset;box-sizing:border-box;align-items:center;gap:var(--space-2);height:28px;padding:0 var(--space-3);cursor:pointer;font:inherit;font-size:var(--font-size-sm);color:inherit;border:var(--border-width) solid var(--color-line);transition:background var(--motion-duration) var(--motion-easing), color var(--motion-duration) var(--motion-easing);border-radius:999px;display:inline-flex}.clean-button:hover{background:var(--color-fg);color:var(--color-bg)}.clean-button:focus-visible{outline:var(--border-width) solid var(--color-line);outline-offset:3px}.clean-nav{all:unset;box-sizing:border-box;cursor:pointer;width:28px;height:28px;color:inherit;border:var(--border-width) solid var(--color-line);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}a.clean-nav{text-decoration:none}.clean-nav:hover:not(:disabled){background:var(--color-fg);color:var(--color-bg)}.clean-nav:disabled{cursor:default;color:var(--color-faint);border-color:var(--color-faint)}.clean-nav:focus-visible{outline:var(--border-width) solid var(--color-line);outline-offset:3px}.rs-collapse{opacity:0;visibility:hidden;min-height:0;transition:grid-template-rows var(--motion-duration) var(--motion-easing), opacity var(--motion-duration) var(--motion-easing), visibility 0s linear var(--motion-duration);flex:auto;grid-template-rows:0fr;display:grid}.rs-collapse.is-open{opacity:1;visibility:visible;transition:grid-template-rows var(--motion-duration) var(--motion-easing), opacity var(--motion-duration) var(--motion-easing), visibility 0s;grid-template-rows:1fr}.rs-collapse__inner{flex-direction:column;min-height:0;display:flex;overflow:hidden}.rs-collapse__content{padding-top:var(--space-4);flex-direction:column;flex:auto;min-height:0;display:flex}.drawably-host{--drawably-ease:cubic-bezier(.2, 0, 0, 1);isolation:isolate;font-family:Inter,system-ui,sans-serif;position:relative}.drawably-svg{pointer-events:none;z-index:-1;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.drawably-svg path{fill:none;stroke:var(--drawably-ink,var(--drawably-stroke,#2724d1));stroke-width:var(--drawably-width,2);stroke-linecap:round;stroke-linejoin:round}@property --drawably-frame{syntax:"<integer>";inherits:true;initial-value:0}.drawably-svg{--drawably-frame:0;animation:1.2s step-end infinite drawably-boil}@keyframes drawably-boil{0%{--drawably-frame:0}33.33%{--drawably-frame:1}66.67%{--drawably-frame:2}}.drawably-boil{--drawably-i:0;opacity:clamp(0, 1 - (var(--drawably-frame) - var(--drawably-i)) * (var(--drawably-frame) - var(--drawably-i)), 1)}.drawably-boil[data-i="1"]{--drawably-i:1}.drawably-boil[data-i="2"]{--drawably-i:2}.drawably-svg .drawably-blob{fill:var(--drawably-ink,var(--drawably-fill,#2724d1));stroke:var(--drawably-ink,var(--drawably-fill,#2724d1));stroke-width:4px}.drawably-svg .drawably-scribble{stroke-width:1.5px}.drawably-button{font:inherit;color:var(--drawably-ink,var(--drawably-stroke,#2724d1));cursor:pointer;background:0 0;border:0;outline:none;justify-content:center;align-items:center;padding:6px 14px;font-family:Inter,system-ui,sans-serif;transition:transform .12s;display:inline-flex}.drawably-button:active{transform:translateY(1px)scale(.98)}.drawably-button .drawably-outline{transition:stroke-width .12s,fill .12s}.drawably-button:active .drawably-outline{stroke-width:calc(var(--drawably-width,2) * 1.4)}@media (hover:hover){.drawably-button:hover:not(:disabled,[data-state=loading]){transform:translateY(-1px)}.drawably-button:not(.drawably-button--solid):hover:not(:disabled) .drawably-outline{fill:color-mix(in srgb, var(--drawably-ink,var(--drawably-stroke,#2724d1)) 10%, transparent)}.drawably-button:hover:active{transform:translateY(1px)scale(.98)}}.drawably-button:disabled{cursor:not-allowed;opacity:.45;transform:none}.drawably-button--neutral{--drawably-stroke:#6e675f;--drawably-fill:#6e675f}.drawably-button--danger{--drawably-stroke:var(--drawably-error,#d12724);--drawably-fill:var(--drawably-error,#d12724)}.drawably-button[data-state=error]{--drawably-ink:var(--drawably-error,#d12724)}.drawably-button[data-state=success]{--drawably-ink:var(--drawably-success,#188a42)}.drawably-button[data-state=loading]{cursor:progress;opacity:.6}.drawably-button[data-state=loading] .drawably-svg{animation-duration:.45s}.drawably-button--solid{color:var(--drawably-paper,#fff)}.drawably-svg .drawably-focus{visibility:hidden;stroke-width:1.5px}.drawably-host:is(:focus-visible,:has(:focus-visible)) .drawably-focus{visibility:visible}.drawably-checkbox,.drawably-radio{width:22px;height:22px;display:inline-block}.drawably-toggle{width:44px;height:24px;display:inline-block}:is(.drawably-checkbox,.drawably-radio,.drawably-toggle) input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.drawably-svg .drawably-dot{fill:var(--drawably-ink,var(--drawably-fill,#2724d1));stroke:var(--drawably-ink,var(--drawably-fill,#2724d1));visibility:hidden;transform-box:fill-box;transform-origin:50%;transition:transform .16s var(--drawably-ease);transform:scale(.5)}.drawably-radio[data-checked] .drawably-dot{visibility:visible;transform:scale(1)}.drawably-svg .drawably-knob{transition:transform .16s var(--drawably-ease)}.drawably-toggle[data-checked] .drawably-knob{transform:translate(20px)}.drawably-divider{border:0;height:10px;display:block}.drawably-svg .drawably-check{stroke-dasharray:1;stroke-dashoffset:1px;transition:stroke-dashoffset .24s var(--drawably-ease)}.drawably-checkbox[data-checked] .drawably-check{stroke-dashoffset:0}.drawably-inputbox,.drawably-textarea,.drawably-select{display:inline-block}:is(.drawably-inputbox,.drawably-textarea,.drawably-select) :is(input,textarea,select){font:inherit;color:inherit;box-sizing:border-box;background:0 0;border:0;outline:none;width:100%;padding:8px 12px}.drawably-textarea textarea{resize:vertical;display:block}.drawably-select select{appearance:none;cursor:pointer;padding-right:34px}@supports (appearance:base-select){.drawably-select select{appearance:base-select}.drawably-select select::picker(select){appearance:base-select}.drawably-select select::picker-icon{display:none}.drawably-select select::picker(select){background:var(--drawably-paper,#fff);color:inherit;font:inherit;border:0;margin-top:4px;padding:6px}.drawably-select option{border-radius:3px;padding:4px 8px}.drawably-select option:is(:hover,:focus-visible){background:color-mix(in srgb, var(--drawably-stroke,#2724d1) 10%, transparent)}.drawably-select option::checkmark{content:"";width:.875em;height:.875em;display:inline-block}.drawably-select option:checked::checkmark{background:var(--drawably-ink,var(--drawably-stroke,#2724d1));-webkit-mask:var(--drawably-check) center / contain no-repeat;mask:var(--drawably-check) center / contain no-repeat}}.drawably-badge{color:var(--drawably-ink,var(--drawably-stroke,#2724d1));padding:1px 7px;font:500 12px/1.4 Geist Mono,ui-monospace,monospace;display:inline-block}.drawably-list{padding-left:24px;list-style:none}.drawably-card{padding:16px}.drawably-svg .drawably-wash{stroke:var(--drawably-ink,var(--drawably-fill,#2724d1));stroke-width:6px;stroke-opacity:.3;mix-blend-mode:multiply}:is(.drawably-underline,.drawably-circle) .drawably-svg path{stroke-width:var(--drawably-width,1.5)}.drawably-arrow{z-index:1;inset:auto}@media (prefers-reduced-motion:reduce){.drawably-svg{animation:none}.drawably-svg .drawably-check,.drawably-svg .drawably-dot,.drawably-svg .drawably-knob{transition:none}}.drawably-chip{cursor:pointer;align-items:center;gap:8px;padding:3px 10px 3px 6px;display:inline-flex}.drawably-chip .drawably-checkbox{scale:.8}.drawably-tabs{gap:18px;display:flex}.drawably-tabs>*{cursor:pointer}.drawably-tooltip{padding:2px 10px;display:inline-block}.drawably-alert{align-items:center;gap:8px;width:max-content;max-width:100%;padding:8px 12px;display:flex}.drawably-alert [data-tag]{padding:1px 6px}.drawably-kbd{padding:2px 8px;font:500 13px/1.4 Geist Mono,ui-monospace,monospace}.drawably-quote{margin:0}.drawably-quote footer{margin-top:10px;padding-top:8px}.drawably-pager{gap:6px;display:flex}.drawably-pager>button{min-width:34px}:root[data-render-style=handdrawn]{--font-family:"Patrick Hand", "Segoe Print", "Bradley Hand", "Comic Sans MS", cursive;--font-size:18px;--font-size-xs:13px;--font-size-sm:16px;--font-size-lg:22px;--font-size-title:clamp(40px, 5.5vw, 56px);--font-weight-heading:400;--line-height:1.4;--color-bg:#fff;--color-fg:#1c1b1f;--color-line:silver;--color-muted:#6e675f;--color-faint:#c9c3b8;--drawably-stroke:var(--color-line);--drawably-fill:var(--color-line);--drawably-paper:var(--color-bg);--drawably-width:1.6}[data-render-style=handdrawn] :is(.drawably-host,.drawably-button){font-family:inherit}.hd-panel{padding:var(--panel-padding);flex-direction:column;min-height:0;display:flex}.hd-panel--plain{padding-top:0;padding-bottom:0}.hd-panel__heading{flex:none}.hd-panel__title{font-size:var(--font-size-lg);font-weight:var(--font-weight-heading);margin:0;line-height:1.3}.hd-panel__body{margin-top:var(--panel-gap,var(--space-4));flex-direction:column;flex:auto;min-height:0;display:flex}.hd-panel__body:has(>.rs-collapse){margin-top:0}.hd-disclosure{all:unset;box-sizing:border-box;align-items:center;gap:var(--space-3);cursor:pointer;width:100%;font:inherit;font-size:var(--font-size-lg);font-weight:var(--font-weight-heading);color:inherit;text-align:left;line-height:1.3;display:flex}.hd-disclosure__label{flex:1}.hd-disclosure:focus-visible .hd-disclosure__label{outline:2px dashed var(--color-line);outline-offset:4px}.hd-disclosure__hint{font-size:var(--font-size-sm);color:var(--color-muted)}.hd-chevron{width:16px;height:16px;transition:transform var(--motion-duration) var(--motion-easing);display:inline-block}.hd-chevron.is-open{transform:rotate(180deg)}.hd-link{justify-content:space-between;align-items:baseline;gap:var(--space-4);padding:var(--row-pad,var(--space-1)) 0;color:inherit;text-decoration:none;display:flex}.hd-link:focus-visible{outline:2px dashed var(--color-line);outline-offset:3px}.hd-link.is-disabled{cursor:default}.hd-link.is-muted{color:var(--color-muted);--drawably-stroke:var(--color-faint)}.hd-link__meta{font-size:var(--font-size-sm);color:var(--color-muted);flex-shrink:0}.hd-divider{margin:var(--divider-gap,var(--space-4)) 0}.hd-timeline{column-gap:var(--space-3);grid-template-columns:max-content 14px minmax(0,1fr);margin:0;padding:0;list-style:none;display:grid}.hd-timeline__item{grid-template-columns:subgrid;grid-column:1/-1;align-items:start;display:grid}.hd-timeline__label,.hd-timeline__content{padding-bottom:var(--timeline-gap)}.hd-timeline__item:last-child .hd-timeline__label,.hd-timeline__item:last-child .hd-timeline__content{padding-bottom:0}.hd-timeline__label{text-align:right;white-space:nowrap;font-size:var(--font-size-sm);line-height:var(--line-height);color:var(--color-muted)}.hd-timeline__item.is-past .hd-timeline__label{color:var(--color-faint)}.hd-timeline__item.is-past .hd-timeline__title{color:var(--color-muted)}.hd-timeline__item.is-current .hd-timeline__label,.hd-timeline__item.is-current .hd-timeline__title{color:var(--color-fg)}.hd-timeline__item.is-quiet .hd-timeline__label,.hd-timeline__item.is-quiet .hd-timeline__title{font-size:var(--font-size-xs);color:var(--color-faint)}.hd-timeline__item.is-quiet .hd-timeline__rail{--drawably-stroke:var(--color-faint)}.hd-timeline__rail{align-self:stretch;width:14px;min-height:22px;display:block}.hd-timeline__content{min-width:0;font-size:var(--font-size-sm);line-height:var(--line-height);flex-direction:column;gap:2px;display:flex}.hd-timeline__title{overflow-wrap:anywhere}.hd-timeline__detail{font-size:var(--font-size-xs);color:var(--color-muted)}.hd-timeline__minor{font-size:var(--font-size-xs);color:var(--color-muted);margin:2px 0 0;padding:0;font-weight:400;line-height:1.4;list-style:none}.hd-timeline__item.is-past .hd-timeline__minor{color:var(--color-faint)}.hd-timeline__content a{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--color-faint);text-decoration-color:var(--color-faint);text-decoration-thickness:var(--border-width);text-underline-offset:2px;transition:text-decoration-color var(--motion-duration) var(--motion-easing)}.hd-timeline__content a:hover,.hd-timeline__content a:focus-visible{text-decoration-color:currentColor}.hd-timeline__minor a{color:var(--color-muted)}.hd-calendar{padding:4px;display:grid}.hd-calendar__row{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.hd-calendar__weekday{text-align:center;letter-spacing:.05em;text-transform:uppercase;color:var(--color-muted);padding:2px 0;font-size:10px}.drawably-svg path.hd-calendar__line{stroke-width:1px;stroke-opacity:.5}.hd-cell{--cell-base:24px;--cell-marker:20px;padding:2px 2px var(--space-1);min-height:calc(var(--cell-base) + var(--calendar-marker-slots,0) * var(--cell-marker));font-size:var(--font-size-xs);flex-direction:column;gap:2px;display:flex}.hd-cell__day{font-variant-numeric:tabular-nums;justify-content:center;align-items:center;min-width:18px;height:16px;padding:0 2px;display:inline-flex}.hd-cell.is-outside .hd-cell__day{color:var(--color-faint)}.hd-cell__markers{flex-direction:column;align-items:flex-start;gap:3px;margin:0;padding:0;list-style:none;display:flex}.hd-marker__badge{font:400 10px/1.2 var(--font-family);white-space:nowrap;padding:2px 5px}.hd-marker__badge a{color:inherit;text-decoration:none}.hd-marker__text{color:var(--color-muted);font-size:10px}.hd-cell.is-outside .hd-marker{opacity:.4}.hd-slide{aspect-ratio:16/9;padding:var(--panel-padding);color:var(--color-muted);font-size:var(--font-size-sm);text-align:center;place-items:center;display:grid}.hd-slide.is-fill{padding:6px;display:block}.hd-slide.is-fill>*{border:0;width:100%;height:100%;display:block}.hd-button{height:30px;font-size:var(--font-size-sm);padding:0 12px}.hd-icon-link{color:inherit;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.hd-nav{min-width:32px;height:28px;padding:0 10px;font-size:22px;line-height:1}.demos{gap:var(--space-4);display:grid}.demos__heading{font-size:var(--font-size-lg);font-weight:var(--font-weight-heading);margin:0;line-height:1.3}.demos__grid{gap:var(--space-5) var(--home-column-gap,var(--space-5));grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin:0;padding:0;list-style:none;display:grid}.demo{gap:var(--space-1);color:inherit;text-decoration:none;display:grid}.demo video{object-fit:cover;background:var(--color-bg);filter:grayscale();transition:filter .24s var(--motion-easing)}.demo:hover video,.demo:focus-visible video{filter:none}@media (prefers-reduced-motion:reduce){.demo video{transition:none}}.demo__what{margin-top:var(--space-2);font-size:var(--font-size-sm);color:var(--color-muted)}.demo__title{line-height:1.35}.demo:focus-visible{outline:none}.demo:focus-visible .demo__title{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:var(--border-width)}.liquid-title__canvas{pointer-events:none;display:none;position:absolute}.liquid-title--live{color:#0000}.liquid-title--live .liquid-title__canvas{display:block}.note-row{align-items:baseline;gap:var(--space-4);display:flex}.note-row>:first-child{flex:auto;min-width:0}.note-versions{font-size:var(--font-size-sm);color:var(--color-muted);flex-shrink:0;position:relative}.note-versions__tag{color:inherit;text-underline-offset:3px;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;text-decoration-thickness:var(--border-width);transition:color var(--motion-duration) var(--motion-easing), text-decoration-color var(--motion-duration) var(--motion-easing)}.note-versions.has-older .note-versions__tag{text-decoration-style:dotted;-webkit-text-decoration-color:var(--color-faint);text-decoration-color:var(--color-faint)}.note-versions:hover .note-versions__tag,.note-versions:focus-within .note-versions__tag{color:var(--color-fg)}.note-versions__tag:focus-visible,.note-versions__item:focus-visible{outline:none;text-decoration-color:currentColor}.note-versions__popover{z-index:10;padding-top:var(--space-1);opacity:0;visibility:hidden;transition:opacity .15s var(--motion-easing), transform .15s var(--motion-easing), visibility 0s linear .15s;position:absolute;top:100%;right:0;transform:translateY(-2px)}.note-versions:hover .note-versions__popover,.note-versions:focus-within .note-versions__popover{opacity:1;visibility:visible;transition-delay:0s;transform:none}.note-versions__list{padding:var(--space-1) var(--space-2);background:var(--color-bg);border:var(--border-width) solid var(--color-line);border-radius:var(--radius-sm);white-space:nowrap;margin:0;list-style:none}.note-versions__item{justify-content:space-between;gap:var(--space-3);color:var(--color-muted);padding:2px 0;text-decoration:none;display:flex}.note-versions__item:hover,.note-versions__item:focus-visible{color:var(--color-fg)}.note-versions__date{font-size:var(--font-size-xs)}.schedule{gap:var(--space-4);display:grid}.schedule__heading{font-size:var(--font-size-lg);font-weight:var(--font-weight-heading);margin:0;line-height:1.3}.schedule__table{--font-size:14px;--font-size-xs:10px;--font-size-sm:13px;--font-size-lg:17px;font-size:var(--font-size);grid-template-columns:var(--home-grid,5.5em minmax(0, 1.25fr) minmax(0, 1fr) minmax(0, .85fr));column-gap:var(--home-grid-gap,var(--space-6));display:grid}.schedule__row{grid-template-columns:subgrid;padding:var(--space-4) 0;border-top:var(--border-width) solid var(--color-faint);grid-column:1/-1;align-items:start;display:grid}.schedule__row:last-child{border-bottom:var(--border-width) solid var(--color-faint)}.schedule__row--head{padding:var(--space-2) 0;font-size:var(--font-size-sm);color:var(--color-muted);border-top:none}.schedule__date{font-size:var(--font-size-sm);color:var(--color-muted);font-variant-numeric:tabular-nums;white-space:nowrap;line-height:1.6}.schedule__now{color:var(--color-fg);background:var(--color-now);margin-left:-.2em;padding:0 .2em}.schedule__cell{gap:var(--space-4);min-width:0;display:grid}.schedule__entry{gap:2px;display:grid}.schedule__entry p{margin:0}.schedule__kicker{gap:var(--space-3);font-size:var(--font-size-sm);color:var(--color-muted);font-variant-numeric:tabular-nums;display:flex}.schedule__title{line-height:1.35}.schedule__title--primary{font-size:var(--font-size-lg);line-height:1.3}.schedule__files{gap:0 var(--space-3);font-size:var(--font-size-sm);color:var(--color-muted);flex-wrap:wrap;display:flex;margin-top:var(--space-1)!important}.schedule__entry.is-muted .schedule__title{color:var(--color-muted)}.schedule a{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--color-faint);text-decoration-color:var(--color-faint);text-underline-offset:3px;text-decoration-thickness:var(--border-width)}.schedule a:hover,.schedule a:focus-visible{text-decoration-color:currentColor}.schedule__row--break{padding:var(--space-2) 0}.schedule__row--break .schedule__date,.schedule__break{font-size:var(--font-size-xs);color:var(--color-faint)}.schedule__break{grid-column:2/-1;line-height:1.6}@media (width<=760px){.schedule__table{grid-template-columns:minmax(0,1fr)}.schedule__row--head{display:none}.schedule__row{row-gap:var(--space-3);grid-template-columns:minmax(0,1fr)}.schedule__row:nth-child(2){border-top:var(--border-width) solid var(--color-faint)}.schedule__cell:empty{display:none}.schedule__break{grid-column:1}}.this-week{gap:var(--space-3);display:grid}.this-week__heading{align-items:baseline;gap:var(--space-3);font-size:var(--font-size-lg);font-weight:var(--font-weight-heading);margin:0;line-height:1.3;display:flex}.this-week__mark{background:linear-gradient(transparent .18em, var(--color-now) .18em, var(--color-now) calc(100% - .1em), transparent calc(100% - .1em));-webkit-box-decoration-break:clone;box-decoration-break:clone;margin-left:-.2em;padding:0 .2em}.this-week__range{font-size:var(--font-size-sm);color:var(--color-muted);font-variant-numeric:tabular-nums;font-weight:400}.this-week__rows{column-gap:var(--space-4);grid-template-columns:max-content max-content minmax(0,1fr) max-content;margin:0;padding:0;list-style:none;display:grid}.this-week__row{grid-template-columns:subgrid;padding:var(--space-2) 0;border-top:var(--border-width) solid var(--color-faint);grid-column:1/-1;align-items:baseline;display:grid}.this-week__row:last-child{border-bottom:var(--border-width) solid var(--color-faint)}.this-week__day,.this-week__what,.this-week__files{font-size:var(--font-size-sm);color:var(--color-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.this-week__name{min-width:0}.this-week__row.is-muted .this-week__name{color:var(--color-muted)}.this-week a{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--color-faint);text-decoration-color:var(--color-faint);text-underline-offset:3px;text-decoration-thickness:var(--border-width)}.this-week a:hover,.this-week a:focus-visible{text-decoration-color:currentColor}.this-week__files a+a{margin-left:var(--space-1)}@media (width<=640px){.this-week__rows{grid-template-columns:max-content minmax(0,1fr)}.this-week__what{grid-area:1/2}.this-week__name,.this-week__files{grid-column:2}.this-week__files{white-space:normal}}.quiet-link{align-items:baseline;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-muted);transition:color var(--motion-duration) var(--motion-easing);text-decoration:none;display:inline-flex}.quiet-link.is-muted{color:var(--color-faint)}.quiet-link__arrow{transition:transform var(--motion-duration) var(--motion-easing);display:inline-block}.quiet-link__label{text-underline-offset:3px;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;text-decoration-thickness:var(--border-width);transition:text-decoration-color var(--motion-duration) var(--motion-easing)}.quiet-link:hover,.quiet-link:focus-visible{color:var(--color-fg);outline:none}.quiet-link.is-muted:hover,.quiet-link.is-muted:focus-visible{color:var(--color-muted)}.quiet-link:hover .quiet-link__label,.quiet-link:focus-visible .quiet-link__label{text-decoration-color:currentColor}.quiet-link:hover .quiet-link__arrow--left,.quiet-link:focus-visible .quiet-link__arrow--left{transform:translate(-3px)}.quiet-link:hover .quiet-link__arrow--right,.quiet-link:focus-visible .quiet-link__arrow--right{transform:translate(3px)}@media (prefers-reduced-motion:reduce){.quiet-link,.quiet-link__arrow,.quiet-link__label{transition:none}.quiet-link:hover .quiet-link__arrow{transform:none}}.topic-preview{vertical-align:-.2em;background:var(--color-fg);object-fit:cover;width:2.3em;height:1.1em;margin-left:.2em;display:inline-block}.topics-index{grid-template-columns:var(--home-band-grid,minmax(0, 1fr) minmax(0, 1.15fr) minmax(0, .95fr));column-gap:var(--home-grid-gap,var(--space-6));align-items:start;display:grid}.topics-index__intro{justify-items:start;gap:var(--space-1);max-width:44ch;display:grid}.topics-index__heading{font-size:var(--font-size-lg);font-weight:var(--font-weight-heading);margin:0;line-height:1.3}.topics-index__soon{color:var(--color-muted);margin:0}.topics-index__list{grid-column:2/-1;grid-template-columns:subgrid;grid-template-rows:repeat(var(--topic-rows,4), auto);column-gap:var(--home-grid-gap,var(--space-6));font-size:var(--font-size-lg);grid-auto-flow:column;margin:0;padding:2px 0 0;line-height:1.3;list-style:none;display:grid}.topics-index__row{padding:var(--row-pad,var(--space-2)) 0;color:inherit;white-space:nowrap;text-decoration:none;display:block}.topics-index__row--unavailable{filter:blur(3px);opacity:.6;-webkit-user-select:none;user-select:none;pointer-events:none}.topics-index__tail{white-space:nowrap}.topics-index__mark{letter-spacing:.02em;vertical-align:super;margin-left:.25em;font-size:.5em;line-height:1;display:inline-block}.topics-index__title{text-underline-offset:3px;min-width:0;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;text-decoration-thickness:var(--border-width);transition:text-decoration-color var(--motion-duration) var(--motion-easing)}.topics-index__item a:hover .topics-index__title,.topics-index__item a:focus-visible .topics-index__title{text-decoration-color:currentColor}.topics-index__item a:focus-visible{outline:none}@media (width<=1200px){.topics-index{row-gap:var(--space-4);grid-template-columns:minmax(0,1fr)}.topics-index__list{grid-column:1;grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=960px){.topics-index__list{grid-template-rows:none;grid-template-columns:minmax(0,1fr);grid-auto-flow:row}.topics-index__row{white-space:normal}}.viewport{width:100%;height:100%;margin:0;position:relative}.viewport__stage{touch-action:pan-y;outline:none;position:absolute;inset:0}.viewport__stage:focus-visible{outline:var(--border-width) dashed var(--color-muted);outline-offset:-1px}.viewport__canvas{width:100%;height:100%;display:block}.viewport__caption{font-size:var(--font-size-xs);color:var(--color-muted);font-variant-numeric:tabular-nums;text-align:right;justify-items:end;gap:2px;line-height:1.4;display:grid;position:absolute;bottom:0;right:0}.viewport__name{color:var(--color-fg)}.viewport__next{all:unset;margin-top:var(--space-1);color:var(--color-fg);text-decoration:underline;-webkit-text-decoration-color:var(--color-faint);text-decoration-color:var(--color-faint);text-underline-offset:3px;text-decoration-thickness:var(--border-width);cursor:pointer}.viewport__next:hover,.viewport__next:focus-visible{text-decoration-color:currentColor}.viewport__next:focus-visible{outline:var(--border-width) solid var(--color-line);outline-offset:3px}.link-list{margin:0;padding:0;list-style:none}.link-list--nested{padding-left:var(--space-4)}.scroll-box{padding-right:var(--space-2);scrollbar-width:thin;flex:auto;min-height:0;overflow-y:auto}.scroll-box[data-more-below]{-webkit-mask-image:linear-gradient(to bottom, #000 calc(100% - var(--scroll-fade)), transparent);-webkit-mask-image:linear-gradient(to bottom, #000 calc(100% - var(--scroll-fade)), transparent);mask-image:linear-gradient(to bottom, #000 calc(100% - var(--scroll-fade)), transparent)}.scroll-box[data-more-above]{-webkit-mask-image:linear-gradient(to bottom, transparent, #000 var(--scroll-fade));-webkit-mask-image:linear-gradient(to bottom, transparent, #000 var(--scroll-fade));mask-image:linear-gradient(to bottom, transparent, #000 var(--scroll-fade))}.scroll-box[data-more-above][data-more-below]{-webkit-mask-image:linear-gradient(to bottom, transparent, #000 var(--scroll-fade), #000 calc(100% - var(--scroll-fade)), transparent);-webkit-mask-image:linear-gradient(to bottom, transparent, #000 var(--scroll-fade), #000 calc(100% - var(--scroll-fade)), transparent);mask-image:linear-gradient(to bottom, transparent, #000 var(--scroll-fade), #000 calc(100% - var(--scroll-fade)), transparent)}.empty-note{font-size:var(--font-size-sm);color:var(--color-muted);margin:0}.calendar-toolbar{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.calendar-toolbar__month{font-size:var(--font-size-sm);font-variant-numeric:tabular-nums}.grading{margin-top:var(--space-5);flex:none}.grading__title{margin:0 0 var(--space-1);font-size:var(--font-size);font-weight:var(--font-weight-heading);line-height:1.3}.grading-list{margin:0;padding:0;list-style:none}.grading-row{justify-content:space-between;align-items:baseline;gap:var(--space-4);display:flex}.grading-row__weight{font-size:var(--font-size-sm);color:var(--color-muted);font-variant-numeric:tabular-nums;flex-shrink:0}.grading-list .grading-row{padding:var(--row-pad,var(--space-2)) 0}.grading-row--total{margin:0}.grading-row--total .grading-row__weight{color:inherit}:root{--home-column-gap:24px;--home-section-gap:72px;--home-top-padding:24px;--home-bottom-padding:64px;--hero-title-size:clamp(64px, 11vw, 176px);--hero-height:min(86vh, 760px);--home-calendar-width:340px}.home{--home-grid:5.5em minmax(0, 1.25fr) minmax(0, 1fr) minmax(0, .85fr);--home-grid-gap:var(--space-6);--home-band-grid:minmax(0, 1fr) minmax(0, 1.15fr) minmax(0, .95fr);max-width:var(--page-max-width);padding:var(--home-top-padding) var(--space-5) var(--home-bottom-padding);margin:0 auto}.home__hero{column-gap:var(--home-column-gap);min-height:var(--hero-height);grid-template:"meta meta""title view""week view"1fr/minmax(0,1fr) minmax(0,1fr);display:grid;position:relative}.home__meta{justify-content:space-between;align-items:baseline;gap:var(--space-6);font-size:var(--font-size-sm);color:var(--color-muted);grid-area:meta;display:flex}.home__meta p{margin:0}.home__people{justify-content:flex-end;gap:var(--space-1) var(--space-5);flex-wrap:wrap;display:flex}.home__person{color:var(--color-fg)}a.home__person{text-decoration:underline;-webkit-text-decoration-color:var(--color-faint);text-decoration-color:var(--color-faint);text-underline-offset:3px;text-decoration-thickness:var(--border-width);transition:text-decoration-color var(--motion-duration) var(--motion-easing)}a.home__person:hover,a.home__person:focus-visible{text-decoration-color:currentColor}a.home__person:focus-visible{outline:none}.home__title{z-index:0;margin:var(--space-10) 0 0;font-size:var(--hero-title-size);letter-spacing:-.05em;white-space:nowrap;grid-area:title;font-weight:500;line-height:.86;position:relative}.home__title span{display:block}.home__viewport{z-index:1;grid-area:view;min-height:460px;margin-left:-14%;position:relative}.home__week{z-index:2;max-width:540px;padding-top:var(--space-8);grid-area:week;align-self:end;position:relative}.home__demos{margin-top:var(--space-10)}.home__schedule,.home__topics{margin-top:var(--home-section-gap)}.home__topics,.home__reference{--row-pad:3px;--panel-gap:var(--space-2);--divider-gap:var(--space-2)}.home__reference{--panel-padding:0px;grid-template-columns:var(--home-band-grid);column-gap:var(--home-grid-gap);margin-top:var(--home-section-gap);align-items:start;display:grid}.home__ref{gap:var(--space-6);min-width:0;display:grid}.home__ref--calendar{width:100%;max-width:var(--home-calendar-width)}@media (width<=960px){.home{padding:var(--space-5) var(--space-4) var(--space-8);--home-section-gap:var(--space-10)}.home__hero{grid-template:"meta""title""view""week"/minmax(0,1fr);min-height:0}.home__meta{gap:var(--space-1);flex-direction:column}.home__people{justify-content:flex-start}.home__title{margin-top:var(--space-8);font-size:clamp(52px,17vw,128px)}.home__viewport{margin:var(--space-2) 0 0;aspect-ratio:1;min-height:0;max-height:70vh}.home__week{max-width:none;padding-top:var(--space-6)}.home__reference{row-gap:var(--space-8);grid-template-columns:minmax(0,1fr)}.home__ref--calendar{grid-column:auto}.scroll-box--resources{max-height:var(--resources-max-height)}}@media (width>=961px) and (width<=1200px){.home__reference{row-gap:var(--space-8);grid-template-columns:repeat(2,minmax(0,1fr))}.home__ref--calendar{grid-column:1/-1}}.material{max-width:720px;padding:var(--space-10) var(--space-5);gap:var(--space-6);margin:0 auto;display:grid}.material__header{gap:var(--space-2);display:grid}.material__kicker{font-size:var(--font-size-sm);color:var(--color-muted);margin:0}.material__title{font-size:var(--font-size-title);letter-spacing:-.01em;margin:0;font-weight:400;line-height:1.1}.material__note{margin:0}.lecture{max-width:1120px;padding:var(--space-5) var(--space-5) var(--space-10);gap:var(--space-6);margin:0 auto;display:grid}.lecture__header{gap:var(--space-1);display:grid}.lecture__meta{margin:var(--space-3) 0 0;font-size:var(--font-size-sm);color:var(--color-muted);font-variant-numeric:tabular-nums}.lecture__title{letter-spacing:-.01em;margin:0;font-size:clamp(22px,2.2vw,30px);font-weight:400;line-height:1.2}.lecture__description{margin:var(--space-1) 0 0;max-width:80ch;font-size:var(--font-size);color:var(--color-muted);white-space:nowrap;text-overflow:ellipsis;line-height:1.4;overflow:hidden}.lecture__goals{gap:var(--space-1);font-size:var(--font-size-sm);color:var(--color-muted);margin:0;padding-left:1.2em;display:grid}.lecture__body{column-gap:var(--space-8);grid-template-columns:minmax(0,1fr) 260px;align-items:start;display:grid}.lecture__content{gap:var(--space-6);display:grid}.lecture__placeholder{margin:0}.lecture__section-title{margin:0 0 var(--space-2);align-items:baseline;gap:var(--space-3);font-size:var(--font-size-lg);font-weight:var(--font-weight-heading);line-height:1.3;display:flex}.lecture__section-body{max-width:65ch;color:var(--color-muted);margin:0}.lecture__materials{max-width:none}.lecture__sidebar{top:var(--space-6);gap:var(--space-5);display:grid;position:sticky}.lecture__outline{counter-reset:outline;gap:var(--space-2);font-size:var(--font-size-sm);margin:0;padding:0;list-style:none;display:grid}.lecture__outline li{gap:var(--space-3);display:flex}.lecture__outline li:before{counter-increment:outline;content:counter(outline, decimal-leading-zero);color:var(--color-muted);font-variant-numeric:tabular-nums;flex-shrink:0}.lecture__nav{gap:var(--space-6);margin-top:calc(-1 * var(--space-3));grid-template-columns:1fr 1fr;display:grid}.lecture__nav-next{text-align:right;grid-column:2}@media (width<=840px){.lecture__title,.lecture__description{white-space:normal}.lecture__body{row-gap:var(--space-8);grid-template-columns:minmax(0,1fr)}.lecture__sidebar{position:static}.lecture__nav{grid-template-columns:1fr}.lecture__nav-next{grid-column:1}}.topics__blurb{margin:var(--space-2) 0 0;color:var(--color-muted);line-height:1.5}.topics__grid{gap:var(--space-6) var(--space-5);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));margin:0;padding:0;list-style:none;display:grid}.topic-card{gap:var(--space-3);color:inherit;text-decoration:none;display:grid}.topic-card--unavailable{filter:blur(4px);opacity:.6;-webkit-user-select:none;user-select:none;pointer-events:none}.topic-card__cover{object-fit:cover;width:100%;height:100%;display:block}.topic-card__number{letter-spacing:-.02em;color:var(--color-faint);font-variant-numeric:tabular-nums;font-size:clamp(40px,5vw,64px);font-weight:300}.topic-card__text{gap:var(--space-1);display:grid}.topic-card__title{font-size:var(--font-size-lg);font-weight:var(--font-weight-heading);margin:0;line-height:1.3}.topic-card__tagline{font-size:var(--font-size-sm);color:var(--color-muted);margin:0;line-height:1.45}.topic-card__tags{margin:var(--space-1) 0 0;font-size:var(--font-size-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--color-muted)}.lecture__title.topic__title{margin-top:var(--space-3)}.topic__ideas,.topic__prereqs{gap:var(--space-1);margin:0;padding-left:1.2em;display:grid}.topic__ideas{max-width:65ch}.topic__covers-heading{margin:var(--space-4) 0 var(--space-2);font-size:inherit;font-weight:var(--font-weight-heading)}.topic__covers-heading--spaced{margin-top:var(--space-8)}.topic__prereqs{font-size:var(--font-size-sm);color:var(--color-muted)}.topic__variant{color:var(--color-fg);text-underline-offset:3px;text-decoration:underline}.topic__variant:hover{text-decoration-thickness:2px}.shader-gallery{--card:clamp(180px, 28vw, 300px);gap:var(--space-4);display:grid}.shader-gallery__bar{justify-content:space-between;align-items:center;display:flex}.shader-gallery__heading{font-size:var(--font-size-lg);font-weight:var(--font-weight-heading);margin:0}.shader-gallery__views{gap:var(--space-1);display:flex}.shader-gallery__view{width:32px;height:32px;color:var(--color-muted);cursor:pointer;transition:background var(--motion-duration) var(--motion-easing), color var(--motion-duration) var(--motion-easing);background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:grid}.shader-gallery__view svg{fill:currentColor;width:16px;height:16px}.shader-gallery__view[aria-pressed=true]{background:color-mix(in srgb, var(--color-fg) 8%, transparent);color:var(--color-fg)}.shader-gallery__view:hover{color:var(--color-fg)}.shader-gallery__view:focus-visible{outline:var(--border-width) dashed var(--color-muted);outline-offset:2px}.shader-gallery__stage--flow{height:calc(var(--card) * 1.25);perspective:1600px;touch-action:pan-y;cursor:grab;-webkit-user-select:none;user-select:none;outline:none;position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 7% 93%,#0000);mask-image:linear-gradient(90deg,#0000,#000 7% 93%,#0000)}.shader-gallery__stage--flow:active{cursor:grabbing}.shader-gallery__stage--flow .shader-card{width:var(--card);will-change:transform;position:absolute;top:50%;left:50%}.shader-gallery__stage--grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(180px,1fr));display:grid}.shader-card{aspect-ratio:1;color:#fff;font:inherit;text-align:left;cursor:pointer;background:#111;border:0;border-radius:6px;margin:0;padding:0;display:block;position:relative;overflow:hidden;box-shadow:0 12px 30px #00000029}.shader-card canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.shader-card:focus-visible,.shader-gallery__stage--flow:focus-visible .shader-card[aria-current=true]{outline:var(--border-width) dashed var(--color-fg);outline-offset:3px}.shader-card__number,.shader-card__title{mix-blend-mode:difference;pointer-events:none;position:absolute}.shader-card__number{font-size:var(--font-size-xs);font-variant-numeric:tabular-nums;letter-spacing:.04em;top:10px;right:12px}.shader-card__demo{font-size:var(--font-size-xs);letter-spacing:.04em;mix-blend-mode:difference;pointer-events:none;position:absolute;top:10px;left:12px}.shader-card__title{font-size:var(--font-size-sm);font-weight:500;line-height:1.2;bottom:10px;left:12px;right:12px}.shader-gallery__caption{justify-self:center;justify-items:center;gap:var(--space-1);text-align:center;max-width:60ch;display:grid}.shader-gallery__texts{display:grid}.shader-gallery__text{align-content:start;justify-items:center;gap:var(--space-1);visibility:hidden;grid-area:1/1;display:grid}.shader-gallery__text[data-active]{visibility:visible}.shader-gallery__meta{font-size:var(--font-size-sm);color:var(--color-muted);font-variant-numeric:tabular-nums;margin:0}.shader-gallery__title{font-size:var(--font-size-lg);font-weight:var(--font-weight-heading);margin:0}.shader-gallery__note{color:var(--color-muted);margin:0;line-height:1.5}.shader-gallery__actions{justify-content:center;gap:var(--space-1) var(--space-5);margin:var(--space-1) 0 0;font-size:var(--font-size-sm);flex-wrap:wrap;display:flex}.shader-gallery__actions a,.shader-gallery__code-toggle{color:var(--color-fg);font:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--color-faint);text-decoration-color:var(--color-faint);text-underline-offset:3px;text-decoration-thickness:var(--border-width);cursor:pointer;transition:text-decoration-color var(--motion-duration) var(--motion-easing);background:0 0;border:0;padding:0}.shader-gallery__actions a:hover,.shader-gallery__code-toggle:hover{text-decoration-color:currentColor}.shader-gallery__code{max-height:420px;margin:var(--space-2) 0 0;padding:var(--space-4);border:var(--border-width) solid var(--color-faint);text-align:left;white-space:pre;border-radius:6px;justify-self:stretch;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12px;line-height:1.55;overflow:auto}@media (prefers-reduced-motion:reduce){.shader-gallery__view,.shader-gallery__actions a,.shader-gallery__code-toggle{transition:none}}.tuner{z-index:100;color:#111;background:#fff;border:1px solid #111;border-radius:10px;width:290px;max-height:calc(100vh - 32px);padding:12px;font-family:system-ui,-apple-system,sans-serif;font-size:11px;line-height:1.4;position:fixed;bottom:16px;right:16px;overflow-y:auto}.tuner--placed{bottom:auto;right:auto}.tuner__title{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;border-bottom:1px solid #e0e0e0;align-items:center;gap:6px;margin:-12px -12px 8px;padding:10px 12px;font-size:13px;font-weight:600;display:flex}.tuner__title:active{cursor:grabbing}.tuner__grip{color:#9a9a9a;letter-spacing:-2px;font-size:12px}.tuner__group{border-top:1px solid #e0e0e0;padding:6px 0}.tuner__summary{cursor:pointer;padding:2px 0;font-weight:600;list-style:none}.tuner__summary::-webkit-details-marker{display:none}.tuner__summary:before{content:"▸";color:#6f6f6f;width:12px;display:inline-block}.tuner__group[open]>.tuner__summary:before{content:"▾"}.tuner__row{grid-template-columns:1fr auto auto;align-items:center;gap:2px 4px;margin:6px 0;display:grid}.tuner__row--inline{grid-template-columns:1fr auto}.tuner__label{color:#6f6f6f}.tuner__number,.tuner__select{font:inherit;font-variant-numeric:tabular-nums;color:inherit;background:#fff;border:1px solid #111;border-radius:4px;padding:1px 4px}.tuner__number{width:58px}.tuner__select{max-width:170px}.tuner__unit{color:#6f6f6f;font-variant-numeric:tabular-nums}.tuner__range{accent-color:#111;grid-column:1/-1;width:100%;margin:0}.tuner__color-wrap{align-items:center;gap:6px;display:inline-flex}.tuner__color{background:0 0;border:1px solid #111;border-radius:4px;width:28px;height:20px;padding:0}.tuner__readout{white-space:pre;-webkit-user-select:all;user-select:all;border:1px solid #111;border-radius:4px;margin:8px 0;padding:8px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:10px;overflow-x:auto}.tuner__actions{gap:8px;display:flex}.tuner__button{font:inherit;cursor:pointer;color:inherit;background:#fff;border:1px solid #111;border-radius:999px;flex:1;padding:4px 0}.tuner__button:hover:not(:disabled){color:#fff;background:#111}.tuner__button:disabled{opacity:.4;cursor:default}@media (hover:hover) and (pointer:fine){html.has-custom-cursor,html.has-custom-cursor *{cursor:none!important}html.has-custom-cursor.cursor-native [data-native-cursor],html.has-custom-cursor.cursor-native [data-native-cursor] *{cursor:auto!important}}.cursor__cross,.cursor__label,.cursor__marks{z-index:1000;pointer-events:none;opacity:0;will-change:transform;transition:opacity .16s;position:fixed;top:0;left:0}html.cursor-visible .cursor__cross,html.cursor-visible .cursor__label{opacity:1}html.cursor-native .cursor__cross,html.cursor-native .cursor__label,html.cursor-native .cursor__marks{opacity:0}.cursor__cross{color:#fff;mix-blend-mode:difference;width:16px;height:16px;margin:-8px 0 0 -8px}.cursor__cross svg{display:block}.cursor__label{letter-spacing:.02em;font-variant-numeric:tabular-nums;color:var(--color-muted);white-space:pre;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:10px;line-height:1}html.cursor-visible .cursor__label.is-over-text{opacity:.25}.cursor__label.is-action{color:var(--color-fg);letter-spacing:.06em}.cursor__marks{--mark-len:7px;--mark-stroke:1px;--mark-color:var(--color-faint);background-image:linear-gradient(var(--mark-color), var(--mark-color)), linear-gradient(var(--mark-color), var(--mark-color)), linear-gradient(var(--mark-color), var(--mark-color)), linear-gradient(var(--mark-color), var(--mark-color)), linear-gradient(var(--mark-color), var(--mark-color)), linear-gradient(var(--mark-color), var(--mark-color)), linear-gradient(var(--mark-color), var(--mark-color)), linear-gradient(var(--mark-color), var(--mark-color));background-repeat:no-repeat;background-size:var(--mark-len) var(--mark-stroke), var(--mark-stroke) var(--mark-len), var(--mark-len) var(--mark-stroke), var(--mark-stroke) var(--mark-len), var(--mark-len) var(--mark-stroke), var(--mark-stroke) var(--mark-len), var(--mark-len) var(--mark-stroke), var(--mark-stroke) var(--mark-len);background-position:0 0,0 0,100% 0,100% 0,0 100%,0 100%,100% 100%,100% 100%;transition:opacity 80ms}.cursor__marks.is-visible{opacity:1}@media (prefers-reduced-motion:reduce){.cursor__cross,.cursor__label,.cursor__marks{transition:none}}.page-enter{animation:page-enter .26s var(--motion-easing) both}@keyframes page-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.page-enter{animation:.16s both page-fade}@keyframes page-fade{0%{opacity:0}to{opacity:1}}}:root{--font-family:"Helvetica Neue", Helvetica, Arial, system-ui, sans-serif;--font-size:15px;--font-size-xs:11px;--font-size-sm:14px;--font-size-lg:18px;--font-size-title:28px;--font-weight-heading:500;--line-height:1.5;--color-bg:#fff;--color-fg:#111;--color-line:#111;--color-muted:#6f6f6f;--color-faint:#c8c8c8;--color-now:#f4ef4e;--border-width:.75px;--radius:16px;--radius-sm:10px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-8:48px;--space-10:64px;--panel-padding:20px;--calendar-cell-height:0px;--resources-max-height:150px;--list-max-height:28vh;--syllabus-max-height:62vh;--timeline-gap:var(--space-4);--scroll-fade:32px;--page-max-width:1320px;--motion-duration:.5s;--motion-easing:cubic-bezier(.4, 0, .2, 1)}@media (prefers-reduced-motion:reduce){:root{--motion-duration:0s}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--color-bg);color:var(--color-fg);font-family:var(--font-family);font-size:var(--font-size);line-height:var(--line-height);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit}button{font:inherit}
