@font-face{font-family:JetBrainsMono;src:url(/fonts/JetBrainsMonoNL-Regular.woff2) format("woff2");font-display:block}@font-face{font-family:DepartureMono;src:url(/fonts/DepartureMono-Regular.woff2) format("woff2");font-weight:400;font-display:block}@font-face{font-family:SpaceMonoB;src:url(/fonts/SpaceMono-Bold.woff2) format("woff2");font-weight:700;font-display:block}@font-face{font-family:Michroma;src:url(/fonts/Michroma.woff2) format("woff2");font-weight:400;font-display:block}@font-face{font-family:BerkeleyMono;src:url(/fonts/BerkeleyMono-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:BerkeleyMono;src:url(/fonts/BerkeleyMono-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:BerkeleyMono;src:url(/fonts/BerkeleyMono-Oblique.woff2) format("woff2");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:BerkeleyMono;src:url(/fonts/BerkeleyMono-BoldOblique.woff2) format("woff2");font-weight:700;font-style:italic;font-display:block}@property --paper{syntax: "<color>"; inherits: true; initial-value: #111111;}@property --ink{syntax: "<color>"; inherits: true; initial-value: #ece8df;}@property --strength{syntax: "<percentage>"; inherits: true; initial-value: 74%;}html{transition:--paper .7s ease,--ink .7s ease,--strength .7s ease}@media(prefers-reduced-motion:reduce){html{transition:none}}body{background-color:var(--paper);color:#b3b3b3;font-family:BerkeleyMono,JetBrainsMono,monospace;line-height:1.6;margin:0;padding:0}.container{max-width:800px;margin:0 auto;padding:2rem}@media(max-width:768px){.container{padding:1rem}}p{margin-bottom:3.5rem}a{color:#b3b3b3;text-decoration:none}p a{text-decoration:underline}p a:hover{text-decoration:none}.home{--text: color-mix(in srgb, var(--ink) var(--strength), var(--paper));--dim: color-mix(in srgb, var(--ink) 41%, var(--paper));--mid: color-mix(in srgb, var(--ink) 56%, var(--paper));--line: color-mix(in srgb, var(--ink) 18%, var(--paper));--bright: var(--ink);--redline: #ff5a4a;--page-top: 72px;--page-x: 24px;--page-bottom: 96px;--sheet-w: 720px;--zoom: 1;--size: 13px;--leading: 1.9;--tracking: .04em;--pad-l: 32px;--pad-r: 32px;--head-top: 28px;--body-top: 28px;--body-bottom: 40px;--mark-col: 4ch;--gutter: 2ch;--entry-gap: 1;--chip-w: 12px;--chip-h: 6px;--chip-gap: 1px;--verse-size: 11px;--verse-gap: 3.4em;position:relative;padding:var(--page-top) var(--page-x) var(--page-bottom);color:var(--text);font-size:var(--size);line-height:var(--leading);letter-spacing:var(--tracking);text-transform:uppercase}.sheet{position:relative;z-index:1;box-sizing:border-box;max-width:var(--sheet-w);margin:0 auto;zoom:var(--zoom);border:1px solid var(--line);background:var(--paper)}.sheet.is-settling{transition:max-width .4s cubic-bezier(.2,.8,.2,1),zoom .4s cubic-bezier(.2,.8,.2,1)}.sheet-head{display:flex;align-items:flex-start;gap:14px;padding:var(--head-top) var(--pad-r) 0 var(--pad-l);container-type:inline-size}.wedge{display:flex;gap:var(--chip-gap)}.wedge-step{position:relative;display:block;width:var(--chip-w);height:var(--chip-h);margin:0;padding:0;border:0;border-radius:0;cursor:pointer;transform-origin:top;transition:transform .12s ease-out}.wedge-step:hover,.wedge-step:focus-visible{transform:scaleY(1.8)}.wedge-step:focus-visible{outline:1px solid var(--bright);outline-offset:2px}.wedge-step.is-active:after{content:"";position:absolute;left:0;right:0;top:calc(100% + 3px);height:1px;background:var(--bright)}.clocks{display:flex;flex:none;gap:2.5ch;height:12px;margin:-3px 0 -3px auto;color:var(--dim);font-size:10px;line-height:12px;letter-spacing:.16em;white-space:nowrap}.clock time{margin-left:1ch;color:var(--text)}.clock time .is-off{opacity:.25}.clock-day{position:relative;top:-.4em;margin-left:.4ch;font-size:8px}.clock-name.is-short{display:none}@container (max-width: 560px){.clock-name.is-long{display:none}.clock-name.is-short{display:inline}}.sheet-body{padding:var(--body-top) var(--pad-r) var(--body-bottom) var(--pad-l)}.entry{display:grid;grid-template-columns:var(--mark-col) minmax(0,1fr);column-gap:var(--gutter)}.entry+.entry{margin-top:calc(var(--entry-gap) * var(--leading) * 1em)}.home .entry p{margin:0}.mark{color:var(--dim)}.hello{color:var(--bright);font-weight:700;letter-spacing:.1em}.home a{color:inherit;text-decoration:underline;text-decoration-color:var(--dim);text-decoration-thickness:1px;text-underline-offset:.3em;transition:color .12s,text-decoration-color .12s}.home a:hover{color:var(--bright);text-decoration-line:underline;text-decoration-color:currentColor}.home:not(.is-spec) a.is-noted{background:var(--text);color:var(--paper);text-decoration-line:none;box-shadow:0 0 0 2px var(--text);-webkit-box-decoration-break:clone;box-decoration-break:clone}.entry:not(.hello) a[href^=http]:after{content:"↗";display:inline-block;margin-left:.2em}.entry.verse{margin-top:var(--verse-gap);color:var(--dim);font-size:var(--verse-size);line-height:1.8;letter-spacing:.12em}.verse-ref{margin-right:.8em;padding:1px 6px;background:var(--text);color:var(--paper);white-space:nowrap}.marginalia{position:absolute;inset:0;z-index:2;pointer-events:none}.marginalia.is-leaving{opacity:0;transition:opacity .14s}.mn-leader{position:absolute;height:1px;background:var(--text);transform-origin:left;animation:mn-draw .2s ease-out both}.marginalia.is-left .mn-leader{transform-origin:right}.mn-tick{position:absolute;width:1px;height:7px;background:var(--text);animation:mn-fade .1s .16s both}.mn-note{position:absolute;font-size:11px;line-height:1.7;letter-spacing:.1em;animation:mn-note .18s .14s ease-out both}.marginalia.is-left .mn-note{text-align:right;animation-name:mn-note-left}.mn-label{color:var(--dim);font-size:10px;line-height:16px;letter-spacing:.16em}.mn-title{color:var(--bright);font-weight:700}.home .mn-text{min-height:1.7em;margin:0;color:var(--text)}.mn-cursor{display:inline-block;width:.6em;height:1.05em;margin-left:1px;vertical-align:-.18em;background:var(--text)}.mn-dest{margin-top:5px;color:var(--dim);font-size:10px;letter-spacing:.14em}@keyframes mn-draw{0%{transform:scaleX(0)}}@keyframes mn-fade{0%{opacity:0}}@keyframes mn-note{0%{opacity:0;transform:translate(-6px)}}@keyframes mn-note-left{0%{opacity:0;transform:translate(6px)}}.mn-preview{margin-top:10px;animation:mn-fade .2s .3s both}.pv-drums{padding:7px 8px 6px;border-radius:3px;background:#1d1b19;box-shadow:inset 0 0 0 1px #2c2a26;text-align:left}.pv-row{display:grid;grid-template-columns:16px repeat(16,1fr);column-gap:1px;align-items:center;height:8px}.pv-row+.pv-row{margin-top:2px}.pv-row>span{color:#8d8981;font-size:6px;line-height:1;letter-spacing:.06em}.pv-row>i{height:6px;border-radius:1px;background:#2e2b28}.pv-row>i:nth-of-type(4n+1):not(:first-of-type){margin-left:2px}.pv-row>i.v1{background:color-mix(in srgb,var(--qc) 60%,#2e2b28)}.pv-row>i.v2{background:var(--qc)}.pv-row>i.is-hit{background:color-mix(in srgb,var(--qc),#ffffff 35%);box-shadow:0 0 5px var(--qc)}.pv-lamps{height:5px;margin-bottom:3px}.pv-lamps>i{justify-self:center;width:3px;height:3px;border-radius:50%;background:#3a2b28}.pv-lamps>i.is-on{background:#ff5a4a;box-shadow:0 0 4px #ff5a4a}.pv-caption{margin-top:6px;color:#8d8981;font-size:7px;letter-spacing:.14em}.pv-film{position:relative;height:50px;overflow:hidden;border-radius:2px;background:#22180f;-webkit-mask-image:linear-gradient(to right,transparent,#000 22%,#000 78%,transparent);mask-image:linear-gradient(to right,transparent,#000 22%,#000 78%,transparent)}.pv-film-track{--fw: 54px;--gap: 4px;position:absolute;top:0;bottom:0;left:calc(50% - var(--fw) / 2 - (var(--fw) + var(--gap)) * 2);display:flex;gap:var(--gap);padding:7px 0;animation:pv-advance 8.4s ease-in-out infinite;background:repeating-linear-gradient(to right,#cfc6b3 0 4px,transparent 4px 7px) 0 2px / 100% 3px no-repeat,repeating-linear-gradient(to right,#cfc6b3 0 4px,transparent 4px 7px) 0 calc(100% - 2px) / 100% 3px no-repeat}.pv-film-track figure{flex:none;width:var(--fw);height:36px;margin:0;overflow:hidden}.pv-film-track img{display:block;width:100%;height:100%;object-fit:cover}.pv-film-gate{position:absolute;top:6px;left:50%;width:56px;height:38px;margin-left:-28px;box-shadow:0 0 0 1px #ece8df8c,0 0 0 999px #0006}@keyframes pv-advance{0%,10%{transform:translate(0)}16.667%,26.667%{transform:translate(calc(-1 * (var(--fw) + var(--gap))))}33.333%,43.333%{transform:translate(calc(-2 * (var(--fw) + var(--gap))))}50%,60%{transform:translate(calc(-3 * (var(--fw) + var(--gap))))}66.667%,76.667%{transform:translate(calc(-4 * (var(--fw) + var(--gap))))}83.333%,93.333%{transform:translate(calc(-5 * (var(--fw) + var(--gap))))}to{transform:translate(calc(-6 * (var(--fw) + var(--gap))))}}.pv-apps{display:flex;gap:14px}.marginalia.is-left .pv-apps{justify-content:flex-end}.pv-apps figure{display:flex;flex-direction:column;align-items:center;gap:5px;margin:0;animation:pv-pop .32s cubic-bezier(.2,.9,.3,1.25) both}.pv-apps img{width:34px;height:34px;border-radius:22.37%;box-shadow:0 0 0 1px color-mix(in srgb,var(--ink) 12%,transparent)}.pv-apps figcaption{color:var(--dim);font-size:8px;letter-spacing:.12em}@keyframes pv-pop{0%{opacity:0;transform:translateY(4px) scale(.85)}}.easel{position:absolute;inset:0;pointer-events:none}.easel-blade{position:absolute;top:-1px;bottom:-1px;width:14px;pointer-events:auto;cursor:ew-resize;touch-action:none}.easel-blade.is-left{left:-15px}.easel-blade.is-right{right:-15px}.easel-blade:before{content:"";position:absolute;top:0;bottom:0;width:1px;background:var(--mid);opacity:0;transition:opacity .12s}.easel-blade.is-left:before{right:0}.easel-blade.is-right:before{left:0}.easel-blade:hover:before,.easel-blade.is-active:before{opacity:1}.easel-grip{position:absolute;width:3px;height:24px;margin-top:-12px;background:var(--bright)}.easel-blade.is-left .easel-grip{right:3px}.easel-blade.is-right .easel-grip{left:3px}.easel-ruler{position:absolute;top:-16px;left:calc(var(--pad-l) + var(--mark-col) + var(--gutter));right:var(--pad-r);height:6px;background:repeating-linear-gradient(to right,var(--mid) 0 1px,transparent 1px calc(var(--adv) * 10)) 0 0 / 100% 6px no-repeat,repeating-linear-gradient(to right,var(--line) 0 1px,transparent 1px var(--adv)) 0 100% / 100% 3px no-repeat}.easel-ruler span{position:absolute;bottom:10px;color:var(--dim);font-size:9px;line-height:1;letter-spacing:.08em;transform:translate(-50%)}.easel-ruler .is-end{color:var(--bright)}.easel-ruler .is-end:after{content:"";position:absolute;left:50%;top:calc(100% + 1px);width:1px;height:9px;background:var(--bright)}.easel-readout{position:absolute;display:flex;flex-direction:column;color:var(--dim);font-size:10px;line-height:1.6;letter-spacing:.14em;white-space:nowrap;transform:translateY(-50%)}.easel-readout.is-right{left:calc(100% + 24px)}.easel-readout.is-left{right:calc(100% + 24px);align-items:flex-end}.easel-readout b{color:var(--bright);font-size:15px;letter-spacing:.08em}.easel-readout .is-stop{color:var(--bright)}.home.is-spec .sheet-head,.home.is-spec .sheet-body{position:relative}.home.is-spec .entry{background:repeating-linear-gradient(to bottom,transparent 0 calc(1lh - 1px),color-mix(in srgb,var(--redline) 45%,transparent) calc(1lh - 1px) 1lh);background-position:0 calc(var(--baseline, 0px) - 1lh + 1px)}.home.is-spec .entry.verse{background-position:0 calc(var(--verse-baseline, 0px) - 1lh + 1px)}.home.is-spec .sheet-body:before{--text-x: calc(var(--mark-col) + var(--gutter));content:"";position:absolute;inset:0;z-index:-1;padding:inherit;background-origin:content-box;background-clip:content-box;background-image:linear-gradient(to right,color-mix(in srgb,var(--redline) 14%,transparent) 0 var(--mark-col),transparent var(--mark-col) var(--text-x),color-mix(in srgb,var(--redline) 7%,transparent) var(--text-x))}.home.is-spec .sheet-head:after,.home.is-spec .sheet-body:after{content:"";position:absolute;inset:0;z-index:-1;padding:inherit;background:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--redline) 30%,transparent) 0 1px,transparent 1px 6px);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.spec{position:absolute;inset:0;pointer-events:none;color:var(--redline)}.spec-dim span,.spec-handle-label{font-size:9px;line-height:1;letter-spacing:.12em}.spec-dim{position:absolute;top:-44px;left:-1px;right:-1px;height:9px;border-inline:1px solid var(--redline)}.spec-dim:before{content:"";position:absolute;left:0;right:0;top:4px;height:1px;background:var(--redline)}.spec-dim span{position:absolute;left:50%;top:0;padding:0 6px;background:var(--paper);transform:translate(-50%)}.spec-handle{position:absolute;pointer-events:auto;touch-action:none}.spec-handle:hover,.spec-handle.is-active{background:color-mix(in srgb,var(--redline) 12%,transparent)}.spec-handle-label{position:absolute;top:50%;left:50%;white-space:nowrap;pointer-events:none;transform:translate(-50%,-50%)}.spec-handle.is-active .spec-handle-label{color:var(--bright)}.spec-handle.is-pad{min-width:8px;min-height:8px}.spec-handle.is-pad.is-x .spec-handle-label{position:sticky;top:50vh;left:auto;display:block;text-align:center;transform:none}.spec-handle.is-rule{width:6px;margin-left:-6px}.spec-handle.is-rule:hover,.spec-handle.is-rule.is-active{background:none}.spec-handle.is-rule:before{content:"";position:absolute;top:0;bottom:0;right:0;width:1px;background:var(--redline);opacity:0}.spec-handle.is-rule .spec-handle-label{top:-6px;left:100%;transform:translate(-50%,-100%)}.spec-handle.is-gap .spec-handle-label{left:auto;right:4px;transform:translateY(-50%)}.spec-handle.is-rule .spec-handle-label,.spec-handle.is-gap .spec-handle-label,.spec-handle.is-rule:before{opacity:0}.spec-handle:is(.is-rule,.is-gap):is(:hover,.is-active) .spec-handle-label,.spec-handle.is-rule:is(:hover,.is-active):before{opacity:1}.home.is-spec .marginalia{display:none}.spec-sheet{position:fixed;z-index:10;padding:12px 14px;border:1px solid transparent;color:var(--redline);font-size:10px;line-height:1.4;letter-spacing:.12em;white-space:nowrap;transition:opacity .15s}.spec-sheet dl{display:grid;grid-template-columns:auto auto;gap:6px 14px;margin:0}.spec-sheet.is-overlay{border-color:color-mix(in srgb,var(--redline) 40%,transparent);background:color-mix(in srgb,var(--paper) 90%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:opacity .15s,top .3s ease,left .3s ease}body[data-spec-drag] .spec-sheet.is-overlay{opacity:.2}.spec-sheet dt{color:color-mix(in srgb,var(--redline) 60%,var(--paper))}.spec-sheet dd{margin:0}.spec-sheet dt:first-child,.spec-sheet dt:first-child+dd{padding-bottom:6px;border-bottom:1px solid var(--redline)}.spec-sheet button{margin:0;padding:0;border:0;background:none;color:inherit;font:inherit;letter-spacing:inherit;cursor:pointer}.spec-sheet .spec-scrub{border-bottom:1px dotted transparent;cursor:ew-resize;touch-action:none}.spec-sheet .spec-scrub:is(:hover,:focus-visible,.is-active){border-bottom-color:currentColor;outline:none}.spec-sheet .spec-scrub.is-changed{color:var(--bright)}.spec-sheet .spec-actions{padding-top:6px;border-top:1px solid var(--redline)}.spec-sheet .spec-actions button:hover{color:var(--bright)}@media(hover:none),(max-width:899px){.easel{display:none}}@media(prefers-reduced-motion:reduce){.mn-leader,.mn-tick,.mn-note,.mn-preview,.pv-apps figure,.pv-film-track{animation:none}}@media(max-width:640px){.home{--page-top: 20px;--page-x: 12px;--page-bottom: 48px;--size: 12px;--pad-l: 18px;--pad-r: 18px;--mark-col: 3ch;--gutter: 1.5ch}}.photon-header{margin-bottom:3.5rem}.photon-title{color:#e0e0e0;letter-spacing:.02em}.photon-est{color:#555;letter-spacing:.15em}.app-showcase{display:flex;flex-direction:column;gap:1.5rem}.app-header{display:flex;align-items:center;gap:1rem}.app-icon{width:48px;height:48px;border-radius:11px;flex-shrink:0}.app-meta{display:flex;flex-direction:column;gap:.05rem}.app-name{color:#e0e0e0}.app-subtitle{color:#555}.app-expand{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s ease}.app-entry:hover .app-expand{grid-template-rows:1fr}.app-expand>div{overflow:hidden}.app-reveal{padding-top:.6rem;opacity:0;transition:opacity .15s ease}.app-entry:hover .app-reveal{opacity:1;transition:opacity .25s ease .1s}.app-description{color:#666;line-height:1.6;margin-bottom:.4rem}.app-links{display:flex;align-items:center;gap:.5rem}.app-links a{color:#888;text-decoration:none;transition:color .2s;display:inline-flex;align-items:center;gap:.15rem}.app-links a .ti{font-size:1em;line-height:1}.app-links a:hover{color:#b3b3b3}@media(max-width:768px){.app-showcase{gap:2.5rem}.app-icon{width:44px;height:44px;border-radius:10px}.app-expand{grid-template-rows:1fr}.app-reveal{opacity:1}}
