@layer components{button,input[type=button],input[type=submit],input[type=reset],[is-~=button]{--button-primary: var(--foreground0);--button-secondary: var(--background0);--mapped-primary: var(--button-primary);--mapped-secondary: var(--button-secondary);color:var(--mapped-secondary);background-color:var(--mapped-primary);font-family:var(--font-family);font-size:var(--font-size);line-height:var(--line-height);display:inline-flex;align-items:center;justify-content:center;border:none;padding:0 2ch;outline:none}button[box-],input[type=button][box-],input[type=submit][box-],input[type=reset][box-],[is-~=button][box-]{color:var(--mapped-primary);background-color:transparent;--box-border-color: var(--mapped-primary)}button:focus,input[type=button]:focus,input[type=submit]:focus,input[type=reset]:focus,[is-~=button]:focus{font-weight:700;text-decoration:underline}button:active,input[type=button]:active,input[type=submit]:active,input[type=reset]:active,[is-~=button]:active{--mapped-primary: var(--mapped-secondary);--mapped-secondary: var(--mapped-primary)}button:disabled,input[type=button]:disabled,input[type=submit]:disabled,input[type=reset]:disabled,[is-~=button]:disabled{text-decoration:line-through;pointer-events:none}button[size-=small],input[type=button][size-=small],input[type=submit][size-=small],input[type=reset][size-=small],[is-~=button][size-=small]{padding:0 1ch;height:1lh}button:not([size-]):not([box-]),button[size-=default]:not([box-]),input[type=button]:not([size-]):not([box-]),input[type=button][size-=default]:not([box-]),input[type=submit]:not([size-]):not([box-]),input[type=submit][size-=default]:not([box-]),input[type=reset]:not([size-]):not([box-]),input[type=reset][size-=default]:not([box-]),[is-~=button]:not([size-]):not([box-]),[is-~=button][size-=default]:not([box-]){background-color:transparent;background-image:linear-gradient(to bottom,transparent 0,transparent .5lh,var(--mapped-primary) .5lh,var(--mapped-primary) calc(100% - .5lh),transparent calc(100% - .5lh),transparent)}button[size-=large],button[size-=default],button:not([size-]),input[type=button][size-=large],input[type=button][size-=default],input[type=button]:not([size-]),input[type=submit][size-=large],input[type=submit][size-=default],input[type=submit]:not([size-]),input[type=reset][size-=large],input[type=reset][size-=default],input[type=reset]:not([size-]),[is-~=button][size-=large],[is-~=button][size-=default],[is-~=button]:not([size-]){height:3lh}button[variant-=foreground0],button:not([variant-]),input[type=button][variant-=foreground0],input[type=button]:not([variant-]),input[type=submit][variant-=foreground0],input[type=submit]:not([variant-]),input[type=reset][variant-=foreground0],input[type=reset]:not([variant-]),[is-~=button][variant-=foreground0],[is-~=button]:not([variant-]){--button-primary: var(--foreground0);--button-secondary: var(--background0)}button[variant-=foreground1],input[type=button][variant-=foreground1],input[type=submit][variant-=foreground1],input[type=reset][variant-=foreground1],[is-~=button][variant-=foreground1]{--button-primary: var(--foreground1);--button-secondary: var(--background0)}button[variant-=foreground2],input[type=button][variant-=foreground2],input[type=submit][variant-=foreground2],input[type=reset][variant-=foreground2],[is-~=button][variant-=foreground2]{--button-primary: var(--foreground2);--button-secondary: var(--background0)}button[variant-=background0],input[type=button][variant-=background0],input[type=submit][variant-=background0],input[type=reset][variant-=background0],[is-~=button][variant-=background0]{--button-primary: var(--background0);--button-secondary: var(--foreground0)}button[variant-=background1],input[type=button][variant-=background1],input[type=submit][variant-=background1],input[type=reset][variant-=background1],[is-~=button][variant-=background1]{--button-primary: var(--background1);--button-secondary: var(--foreground0)}button[variant-=background2],input[type=button][variant-=background2],input[type=submit][variant-=background2],input[type=reset][variant-=background2],[is-~=button][variant-=background2]{--button-primary: var(--background2);--button-secondary: var(--foreground0)}button[variant-=background3],input[type=button][variant-=background3],input[type=submit][variant-=background3],input[type=reset][variant-=background3],[is-~=button][variant-=background3]{--button-primary: var(--background3);--button-secondary: var(--foreground0)}}@layer utils{@property --box-rounded-radius{syntax: "<length>"; inherits: false; initial-value: 4px;}@property --box-border-width{syntax: "<length>"; inherits: false; initial-value: 2px;}@property --box-double-border-width{syntax: "<length>"; inherits: false; initial-value: 1px;}[box-=square],[box-=round],[box-=double]{position:relative;isolation:isolate;padding:1lh 1ch}[box-=square]:before,[box-=round]:before,[box-=double]:before{content:"";position:absolute;top:50%;left:50%;translate:-50% -50%;width:calc(100% - 1ch - var(--box-border-width));height:calc(100% - 1lh - var(--box-border-width));border:solid var(--box-border-width) var(--box-border-color);z-index:-1}[box-=square][box-=round]:before,[box-=round][box-=round]:before,[box-=double][box-=round]:before{border-radius:var(--box-rounded-radius)}[box-=square][box-=round]:after,[box-=round][box-=round]:after,[box-=double][box-=round]:after{border-radius:calc(var(--box-rounded-radius) + 2px)}[box-=square][box-=double]:before,[box-=round][box-=double]:before,[box-=double][box-=double]:before{border-width:var(--box-double-border-width)}[box-=square][box-=double]:after,[box-=round][box-=double]:after,[box-=double][box-=double]:after{content:"";position:absolute;top:50%;left:50%;translate:-50% -50%;width:calc(100% - 1ch + var(--box-double-border-width) * 2);height:calc(100% - 1lh + var(--box-double-border-width) * 2);border:solid var(--box-double-border-width) var(--box-border-color);z-index:-1}[box-=square][shear-=both],[box-=round][shear-=both],[box-=double][shear-=both]{padding-top:0;padding-bottom:0}[box-=square][shear-=top],[box-=round][shear-=top],[box-=double][shear-=top]{padding-top:0}[box-=square][shear-=bottom],[box-=round][shear-=bottom],[box-=double][shear-=bottom]{padding-bottom:0}}.project{display:flex;flex-direction:row;gap:2ch;margin-bottom:1lh}.project-photo-placeholder{border:1px dashed var(--border);background:var(--panel);padding:1lh 1ch;margin:0}.project-photo{height:10lh;width:20ch;object-fit:cover}.project-main{display:flex;flex:1;gap:1lh;justify-content:space-between;flex-direction:column}.project-header{align-items:flex-start;display:flex;flex-direction:row;justify-content:space-between;gap:1ch}.project-title{flex:1 1 70%;min-width:0}.project-tags{display:flex;flex-direction:row;row-gap:1lh;column-gap:2ch;flex-wrap:wrap;justify-content:flex-end;flex:0 1 50%}.project-button-panel{margin-top:auto;display:flex;flex-direction:row;gap:0ch}.project-desc{min-width:0}.project-desc>:first-child{margin-top:0}.project-desc>:last-child{margin-bottom:0}.project-desc p,.project-desc ul,.project-desc ol,.project-desc pre,.project-desc blockquote,.project-desc table{margin:0 0 1lh}.project-desc img{display:block;height:auto;max-width:100%}.project-button{height:3lh;gap:0ch}.demo-button{--button-primary: var(--normal-red);font-weight:700}.demo-button:active{--button-primary: var(--normal-red) !important;font-weight:700}@media(max-width:768px){.project{flex-direction:column}.photo-placeholder-inner{width:100%;height:12lh}.project-photo{width:100%;height:100%;object-fit:cover}.project-header{flex-direction:column;align-items:flex-start;gap:1lh}.project-button-panel{margin-top:2lh}}.projects-layout[data-astro-cid-h6qinzo2]{display:grid;grid-template-columns:minmax(20ch,24ch) minmax(0,1fr);gap:2ch;align-items:start}.projects-tree[data-astro-cid-h6qinzo2]{position:sticky;top:1lh;display:grid;gap:1lh;max-height:calc(100dvh - 2lh);overflow-y:auto;overflow-x:hidden;padding-right:1ch;scrollbar-gutter:stable}.projects-tree[data-astro-cid-h6qinzo2]::-webkit-scrollbar{width:.9ch}.projects-tree[data-astro-cid-h6qinzo2]::-webkit-scrollbar-thumb{background:color-mix(in oklab,var(--border) 75%,var(--text) 25%)}.tree-node[data-astro-cid-h6qinzo2]{width:100%;justify-content:flex-start}.tree-node[data-astro-cid-h6qinzo2][aria-current=page]{color:var(--text);text-decoration:underline}.tree-group-title[data-astro-cid-h6qinzo2]{margin:0;--badge-text: var(--group-color);--badge-color: var(--normal-black)}.tree-node-active[data-astro-cid-h6qinzo2]{--button-primary: var(--foreground1)}.projects-results[data-astro-cid-h6qinzo2]{display:flex;flex-direction:column;gap:1lh;min-width:0}.project-entry[data-astro-cid-h6qinzo2][hidden]{display:none}@media(max-width:1100px){.projects-layout[data-astro-cid-h6qinzo2]{grid-template-columns:minmax(18ch,20ch) minmax(0,1fr);gap:1ch}}@media(max-width:900px){.projects-layout[data-astro-cid-h6qinzo2]{grid-template-columns:1fr;gap:1lh}.projects-tree[data-astro-cid-h6qinzo2]{position:static;max-height:35dvh;padding-right:.5ch;border:1px dashed var(--border);padding-block:.5lh;padding-left:1ch}}
