.git-timeline{--lane-w: 26px;--head-h: 48px;--dot-size: 13px;--label-w: 130px;--graph-w: calc(var(--lane-w) * var(--lanes) + 10px);width:min(860px,100%);margin:1rem auto 4rem;font-family:Source Code Pro,ui-monospace,Cascadia Code,Consolas,monospace}.tl-entry{position:relative;display:grid;grid-template-columns:var(--label-w) var(--graph-w) 1fr}.tl-toolbar{display:flex;justify-content:flex-end;padding:0 2px 10px}.tl-toggle{font:inherit;font-size:13px;color:var(--primary);background:color-mix(in srgb,var(--primary) 10%,transparent);border:1px solid color-mix(in srgb,var(--primary) 50%,transparent);border-radius:6px;padding:4px 12px;cursor:pointer;transition:background .2s ease}.tl-toggle:hover{background:color-mix(in srgb,var(--primary) 20%,transparent)}.tl-label{display:flex;justify-content:flex-end;align-items:center;height:var(--head-h);padding-right:12px}.tl-chip{color:var(--c);border:1px solid var(--c);background:color-mix(in srgb,var(--c) 12%,transparent);border-radius:6px;padding:2px 8px;font-size:12px;line-height:1.5;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}.tl-graph{position:relative}.tl-line{position:absolute;top:0;bottom:0;left:calc(var(--lane-w) * var(--l) + var(--lane-w) / 2);width:2px;transform:translate(-50%);background:var(--c);opacity:.9}.tl-line.start{top:calc(var(--head-h) / 2)}.tl-line.end{bottom:auto;height:calc(var(--head-h) / 2)}.tl-curve{position:absolute;top:0;left:calc(var(--lane-w) / 2);width:calc(var(--lane-w) * var(--l));height:calc(var(--head-h) / 2);border-right:2px solid var(--c);border-bottom:2px solid var(--c);border-bottom-right-radius:14px;opacity:.9}.tl-dot{position:absolute;top:calc(var(--head-h) / 2);left:calc(var(--lane-w) * var(--l) + var(--lane-w) / 2);width:var(--dot-size);height:var(--dot-size);transform:translate(-50%,-50%);border:2.5px solid var(--c);border-radius:50%;background:var(--background);z-index:2;transition:transform .25s ease,box-shadow .25s ease}.tl-dot.wip{border-style:dashed;background:transparent}.git-timeline:not(.vt):not(.dock) .tl-entry:hover .tl-dot:not(.wip),.git-timeline:not(.vt):not(.dock) .tl-entry:focus-within .tl-dot:not(.wip),.tl-entry.expanded .tl-dot:not(.wip){transform:translate(-50%,-50%) scale(1.3);box-shadow:0 0 0 5px color-mix(in srgb,var(--c) 22%,transparent)}.tl-content{min-width:0;padding-left:8px}.tl-head{display:flex;align-items:center;gap:.7rem;height:var(--head-h);outline:none;cursor:default}.tl-bar{flex:none;width:3px;height:55%;border-radius:2px;background:var(--c)}.tl-msg{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:15px}.tl-wip-msg,.tl-init-msg{opacity:.55;font-style:italic}.tl-meta{margin-left:auto;padding-left:.7rem;font-size:12px;opacity:.55;white-space:nowrap}.tl-card-wrap{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s cubic-bezier(.4,0,.2,1)}.tl-card-clip{overflow:hidden;min-height:0}.tl-card{margin:2px 2px 16px;padding:14px 16px;border:1px solid color-mix(in srgb,var(--c) 45%,transparent);border-radius:10px;background:var(--secondary);box-shadow:var(--ni-shadow-md, 0 4px 14px rgb(0 0 0 / .12));opacity:0;transform:translateY(-8px);transition:opacity .3s ease .06s,transform .3s ease .06s}.git-timeline:not(.vt):not(.dock) .tl-entry:hover .tl-card-wrap,.git-timeline:not(.vt):not(.dock) .tl-entry:focus-within .tl-card-wrap,.tl-entry.expanded .tl-card-wrap{grid-template-rows:1fr}.git-timeline:not(.vt):not(.dock) .tl-entry:hover .tl-card,.git-timeline:not(.vt):not(.dock) .tl-entry:focus-within .tl-card,.tl-entry.expanded .tl-card{opacity:1;transform:none}.git-timeline.vt .tl-card-wrap,.git-timeline.vt .tl-card,.git-timeline.vt .tl-dot{transition:none}::view-transition-group(*){animation-duration:.32s;animation-timing-function:cubic-bezier(.4,0,.2,1)}.tl-card-meta{display:flex;align-items:center;gap:.7rem;margin-bottom:.6rem;font-size:12px;opacity:.85}.tl-desc{margin:0 0 .6rem;font-size:14px;line-height:1.55}.tl-body{font-size:14px;line-height:1.55}.tl-body :is(p,ul,ol){margin:.4rem 0}.tl-img{display:block;width:100%;height:auto;margin:.6rem 0;border-radius:8px}.tl-video{position:relative;aspect-ratio:16 / 9;margin:.6rem 0;border-radius:8px;overflow:hidden}.tl-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.tl-link{display:inline-block;margin-top:.4rem;font-size:13px;color:var(--c)}.git-timeline.dock .tl-head{transform:scale(calc(1 + var(--mag, 0) * .12));transform-origin:left center;transition:transform .18s ease-out;will-change:transform}.git-timeline.dock .tl-msg{opacity:calc(.72 + var(--mag, 0) * .28);transition:opacity .18s ease-out}.git-timeline.dock .tl-dot:not(.wip){transform:translate(-50%,-50%) scale(calc(1 + var(--mag, 0) * .45));box-shadow:0 0 0 calc(var(--mag, 0) * 5px) color-mix(in srgb,var(--c) 22%,transparent);transition:transform .18s ease-out,box-shadow .18s ease-out}.git-timeline.dock .tl-card-wrap{display:block}.git-timeline.dock .tl-card-clip{height:calc(var(--mag, 0) * var(--card-h, 0px));transition:height .18s ease-out}.git-timeline.dock .tl-card{opacity:var(--mag, 0);transform:translateY(calc((1 - var(--mag, 0)) * -8px));transition:opacity .18s ease-out,transform .18s ease-out}.git-timeline.vt-running .tl-card-clip,.git-timeline.vt-running .tl-card,.git-timeline.vt-running .tl-head,.git-timeline.vt-running .tl-dot{transition:none}@media(prefers-reduced-motion:reduce){.tl-card-wrap,.tl-card,.tl-card-clip,.tl-head,.tl-msg,.tl-dot{transition:none!important}}@media(max-width:720px){.git-timeline{--lane-w: 14px;--head-h: 44px;--dot-size: 11px;--label-w: 0px}.tl-label{display:none}.tl-entry{grid-template-columns:var(--graph-w) 1fr}.tl-msg{font-size:13.5px}.tl-meta{display:none}.tl-card{padding:12px}}.portfolio-intro[data-astro-cid-j7pv25f6]{width:min(860px,100%);margin:2.5rem auto 0;padding:0 1rem;font-family:Source Code Pro,ui-monospace,monospace}.portfolio-intro[data-astro-cid-j7pv25f6] h1[data-astro-cid-j7pv25f6]{margin:0 0 .3rem;font-size:1.6rem;color:var(--primary)}.portfolio-intro[data-astro-cid-j7pv25f6] p[data-astro-cid-j7pv25f6]{margin:0;opacity:.7;font-size:.95rem}
