@font-face{font-family:JetBrainsMonoNerdFont;src:url(/fonts/JetBrainsMonoNerdFont-Regular.ttf)}:root{--pink:#ff3258;--white:#f0e9f2;--black:#000;--panel:#0c0b11f0;--font-stack:"JetBrainsMonoNerdFont", monospace}*{box-sizing:border-box;margin:0;padding:0}[hidden]{display:none!important}html,body{height:100%}body{background:var(--black);color:var(--white);font-family:var(--font-stack);font-size:16px;line-height:1.6;overflow:hidden}a{color:var(--pink)}.viewport{position:fixed;inset:0;overflow:hidden}.stage{--w:min(100vw, 100vh * 16 / 9);width:var(--w);height:calc(var(--w) * 9 / 16);left:calc(50% - var(--w) / 2);top:calc(50% - var(--w) * 9 / 32);transform-origin:0 0;transition:transform .7s cubic-bezier(.65,0,.35,1);position:absolute;container-type:inline-size}.stage__bg,.item img{-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.stage__bg{position:absolute;inset:0}.item{position:absolute}.item--decor{pointer-events:none}.item--select{transition:transform .2s,filter .2s}.item--select:hover{filter:drop-shadow(0 0 .6vw var(--pink)) brightness(1.15);transform:translateY(-1.5%)scale(1.04)}.item--select:has(:focus-visible){filter:drop-shadow(0 0 .6vw var(--pink)) brightness(1.15);transform:translateY(-1.5%)scale(1.04)}.zoomed .item--select{filter:none!important;transform:none!important}.item__hit{cursor:pointer;background:0 0;border:0;width:100%;height:100%;display:block}.item__hit:focus-visible{outline:none}.zoomed .item__hit{pointer-events:none}.item__photo{object-fit:cover;pointer-events:none;-webkit-user-select:none;user-select:none;position:absolute}.screen{visibility:hidden;opacity:0;transition:opacity .3s,visibility .3s;position:absolute;overflow:hidden}.item--open .screen,.screen--persistent{visibility:visible;opacity:1}.label{background:var(--pink);color:var(--black);pointer-events:none;opacity:0;white-space:nowrap;border-radius:4px;padding:.2em .7em;font-size:14px;transition:opacity .15s;position:fixed;transform:translate(-50%,-140%)}.label--visible{opacity:1}.home{z-index:5;color:var(--white);background:#0009;border-radius:4px;padding:.3em .8em;font-size:14px;text-decoration:none;position:fixed;top:16px;left:16px}.home:hover{color:var(--pink)}.hint{text-align:center;opacity:.6;pointer-events:none;width:100%;font-size:13px;position:fixed;bottom:12px}.zoomed .hint{opacity:0}.panels{z-index:10;opacity:0;background:0 0;place-items:center;padding:4vh 4vw;transition:opacity .3s,background .3s;display:grid;position:fixed;inset:0}.panels--open{opacity:1;background:#0000008c}.panel{background:var(--panel);border:1px solid #2c2a36;border-radius:10px;width:min(1000px,100%);max-height:88vh;padding:3em;font-size:16px;position:relative;overflow-y:auto}.panel h2{color:var(--pink);margin-bottom:.8em}.panel h3{margin:.8em 0 .3em}.panel p,.panel ul{margin-bottom:.8em}.panel ul{padding-left:1.4em}.tag{opacity:.7;font-size:.9em}.panels[data-mode=side]{place-items:center end;padding-left:50vw}.panels[data-mode=side][data-side=left]{place-items:center start;padding-left:4vw;padding-right:50vw}.panels--open[data-mode=side]{background:0 0}.panel--screen{scrollbar-width:thin;scrollbar-color:var(--pink) transparent;border:0;border-radius:0;width:auto;max-height:none;padding:.9cqw 1.1cqw;font-size:.55cqw;position:absolute;inset:0}#panel-contact{--panel:#274b63;padding:.5cqw .15cqw;font-size:.3cqw}.item[data-id=phone] .screen{border-radius:.15cqw}.back{z-index:20;font:inherit;color:var(--black);background:var(--pink);cursor:pointer;border:0;border-radius:4px;padding:.4em 1em;font-size:14px;display:none;position:fixed;top:16px;right:16px}.zoomed .back{display:block}#panel-projects{--panel:#fff;color:#1b1d21;flex-direction:column;padding:0;display:flex;overflow:hidden}.menubar{color:var(--white);background:#1b1d21;flex:none;align-items:center;gap:1.2em;padding:.5em 1em;font-size:.8em;display:flex}.menubar__os{color:var(--pink);font-weight:700}.menubar__app{font-weight:700}#panel-projects .tiles{scrollbar-width:thin;scrollbar-color:#9aa0a8 transparent;flex:1;min-height:0;padding:.8cqw;overflow-y:auto}.tiles{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:.8em;display:grid}.tile{background:#f1f2f4;border:.1em solid #cfd3d9;grid-template:"logo name"4em"desc desc"7.4em"links links"1.8em/4em minmax(0,1fr);align-items:center;gap:.6em .8em;padding:.8em;transition:transform .15s,border-color .15s,box-shadow .15s;display:grid}.tile:hover{border-color:var(--pink);transform:translate(-.3em,-.2em);box-shadow:.6em .4em #00000038}.tile__body{display:contents}.tile__logo{grid-area:logo;width:4em;height:4em;overflow:hidden}.tile .tile__img{object-fit:contain;object-position:center;width:100%;height:100%;transition:transform .15s;display:block}.tile:hover .tile__img{transform:scale(1.04)}.tile .tile__name{grid-area:name;margin:0;font-size:.95em;line-height:1.25;overflow:hidden}.tile .tile__desc{grid-area:desc;align-self:start;margin:0;font-size:.8em;line-height:1.45;overflow:hidden}.tile__links{grid-area:links;align-items:center;gap:.8em;display:flex}.tile__source{display:inline-flex}.tile .tile__github{width:1.6em;height:1.6em}.tile__site{color:#c8102e;font-size:.8em}.tile a:focus-visible{outline:.15em solid var(--pink);outline-offset:.2em}@media (prefers-reduced-motion:reduce){.tile,.tile__img{transition:none}.tile:hover,.tile:hover .tile__img{transform:none}}.badges{flex-wrap:wrap;gap:1.2em;margin-top:1em;display:flex}.badges img{width:110px}.phone__time{text-align:center;opacity:.7;margin-bottom:1.4em;font-size:.9em}.phone__apps{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.4em .2em;margin:0;display:grid}.app{color:var(--white);justify-items:center;gap:.4em;font-size:.55em;text-decoration:none;display:grid}.app__icon{border-radius:.9em;place-items:center;width:3.6em;height:3.6em;transition:opacity .15s;display:grid;overflow:hidden}.app__glyph{font-size:1.8em;line-height:1}.app .app__img{object-fit:contain;width:62%;height:62%;display:block}.app .app__img--bleed{width:100%;height:100%}.app:focus-visible{outline:none}.app:hover .app__icon,.app:focus-visible .app__icon{opacity:.55}
