.collage-body{--c-ink:var(--fg);--c-muted:var(--fg-muted);--c-subtle:var(--fg-subtle);--c-tag-edge:var(--window-border);--c-dot:#08151f1a;--c-menubar:#f6f6f8d1;--c-shadow:0 16px 44px -14px #00000047;--c-shadow-front:0 26px 64px -12px #00000061;--c-folder:#3b8fd6;--c-folder-tab:#2f7cc0;--c-doc:#9a9aa4;--c-light-red:#ff5f57;--c-light-amber:#febc2e;--c-light-green:#28c840;--c-light-off:#c9c9cf;--c-bar:30px}[data-theme=dark] .collage-body{--c-muted:var(--fg-nav);--c-subtle:var(--fg-nav);--c-dot:#dceaf612;--c-menubar:#16161ac7;--c-shadow:0 16px 44px -14px #000000b3;--c-shadow-front:0 26px 64px -12px #000000d9;--c-folder:#5aa9ec;--c-folder-tab:#4b93d4;--c-doc:#8a8a94;--c-light-off:#4a4a52}html:has(.collage-body),.collage-body{height:100%}.collage-body{font-family:var(--font-body);color:var(--c-ink);background-color:var(--desktop);background-image:radial-gradient(var(--c-dot) 1px, transparent 1.4px);background-size:22px 22px;margin:0;font-size:15px;overflow:hidden}.collage-body a{color:var(--accent);text-underline-offset:3px}.collage-body [tabindex="-1"]:focus{outline:none}.menubar{z-index:1000;height:calc(var(--c-bar) + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) 14px 0;background:var(--c-menubar);border-bottom:1px solid var(--chrome-edge);backdrop-filter:blur(14px);align-items:center;gap:4px;font-size:13.5px;display:flex;position:fixed;top:0;left:0;right:0}.menubar .me{font-family:var(--font-display);letter-spacing:.12em;text-transform:uppercase;margin-right:10px;font-weight:700}.menubar nav{scrollbar-width:none;gap:2px;min-width:0;display:flex;overflow-x:auto}.menubar nav button,.menubar .icon-btn{color:var(--c-ink);cursor:pointer;font:inherit;white-space:nowrap;background:0 0;border:0;border-radius:5px;padding:4px 9px}.menubar nav button:hover,.menubar .icon-btn:hover{background:var(--row-hover)}.menubar nav button[aria-current=true]{font-weight:600}.menubar .right{align-items:center;gap:6px;margin-left:auto;display:flex}.menubar .clock{font-variant-numeric:tabular-nums;white-space:nowrap}.menubar .icon-btn{place-items:center;width:28px;height:24px;padding:0;display:grid}.board{bottom:0;left:0;right:0;top:calc(var(--c-bar) + env(safe-area-inset-top,0px));position:fixed}.win{left:var(--x);top:var(--y);width:var(--w);height:var(--h);background:var(--window);border:1px solid var(--window-border);min-width:0;box-shadow:var(--c-shadow);border-radius:10px;flex-direction:column;transition:box-shadow .2s;display:flex;position:absolute}.win.front{box-shadow:var(--c-shadow-front)}.win.auto{height:auto;max-height:var(--h)}.win.zoomed{width:calc(100% - 20px);height:calc(100% - 20px);max-height:none;top:10px;left:10px}.win.zoomed .tb{cursor:default}.win.zoomed .rz{display:none}.win.easing{transition:box-shadow .2s,left .22s,top .22s,width .22s,height .22s}.tb{background:var(--chrome);border-bottom:1px solid var(--chrome-edge);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;border-radius:9px 9px 0 0;flex:none;grid-template-columns:1fr auto 1fr;align-items:center;height:38px;padding:0 12px;display:grid}.dragging .tb{cursor:grabbing}.dragging,.resizing{-webkit-user-select:none;user-select:none}.rz{z-index:3;touch-action:none;position:absolute}.rz-n,.rz-s{cursor:ns-resize;height:9px;left:12px;right:12px}.rz-n{top:-5px}.rz-s{bottom:-5px}.rz-e,.rz-w{cursor:ew-resize;width:9px;top:12px;bottom:12px}.rz-e{right:-5px}.rz-w{left:-5px}.rz-ne,.rz-nw,.rz-se,.rz-sw{width:16px;height:16px}.rz-ne{cursor:nesw-resize;top:-5px;right:-5px}.rz-sw{cursor:nesw-resize;bottom:-5px;left:-5px}.rz-nw{cursor:nwse-resize;top:-5px;left:-5px}.rz-se{cursor:nwse-resize;bottom:-5px;right:-5px}.lights{gap:7px;display:flex}.lights i,.lights button{background:var(--c-light-off);border:1px solid #0000001f;border-radius:50%;place-items:center;width:12px;height:12px;padding:0;display:grid}.lights button{cursor:pointer;-webkit-appearance:none;appearance:none}.win.front .l-red,.lights:hover .l-red{background:var(--c-light-red)}.win.front .l-amber,.lights:hover .l-amber{background:var(--c-light-amber)}.win.front .l-green,.lights:hover .l-green{background:var(--c-light-green)}.lights button svg{opacity:0;width:8px;height:8px;transition:opacity .12s}.lights:hover button svg,.lights button:focus-visible svg{opacity:1}.l-green svg{fill:var(--light-zoom)}.l-red svg{fill:none;stroke:var(--light-close);stroke-width:1.8px;stroke-linecap:round}.tt{color:var(--c-ink);white-space:nowrap;align-items:center;gap:7px;margin:0;font-size:14px;font-weight:600;display:flex}.tt svg{flex:none;width:15px;height:15px}.folder-tab{fill:var(--c-folder-tab)}.folder-body{fill:var(--c-folder)}.doc-page{fill:var(--window);stroke:var(--c-doc);stroke-width:1.3px}.doc-fold{fill:none;stroke:var(--c-doc);stroke-width:1.3px}.link-glyph{stroke:var(--c-folder)}.wb{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--window-border) transparent;border-radius:0 0 9px 9px;flex:auto;min-height:0;overflow-y:auto}.sbar{background:var(--chrome);border-top:1px solid var(--chrome-edge);height:28px;color:var(--c-subtle);white-space:nowrap;border-radius:0 0 9px 9px;flex:none;justify-content:space-between;align-items:center;gap:12px;padding:0 14px;font-size:12.5px;display:flex}.rows .open{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.rows .open:hover{text-underline-offset:3px;text-decoration:underline}.proj-row{cursor:pointer}.projview{padding:20px 24px 24px}.pv-meta{font-family:var(--font-display);color:var(--c-subtle);flex-wrap:wrap;gap:4px 14px;margin:0;font-size:13px;display:flex}.pv-org{color:var(--c-muted)}.pv-desc{color:var(--c-ink);text-wrap:pretty;margin:14px 0 0;font-size:16.5px;line-height:1.65}.pv-tech{flex-wrap:wrap;gap:6px;margin:16px 0 0;display:flex}.pv-tech span{font-family:var(--font-display);color:var(--c-muted);border:1px solid var(--c-tag-edge);border-radius:5px;padding:2px 8px;font-size:12.5px}.pv-link{font-family:var(--font-display);margin-top:16px;font-size:14px;display:inline-block}.about{padding:26px 30px 28px}.about h1{font-family:var(--font-display);letter-spacing:.16em;text-transform:uppercase;color:var(--c-ink);margin:0;font-size:clamp(32px,3.4vw,48px);font-weight:700;line-height:1}.about .bio{color:var(--c-ink);text-wrap:pretty;margin:18px 0 0;font-size:16.5px;line-height:1.65}.about .ps{color:var(--c-muted);text-wrap:pretty;margin:12px 0 0;font-size:15px;line-height:1.6}.about .ps a{white-space:nowrap}.cols{z-index:1;background:var(--window);border-bottom:1px solid var(--chrome-edge);letter-spacing:.06em;text-transform:uppercase;color:var(--c-subtle);justify-content:space-between;padding:8px 16px 7px 44px;font-size:11.5px;font-weight:600;display:flex;position:sticky;top:0}.rows{margin:0;padding:0;list-style:none}.rows>li{border-bottom:1px solid var(--chrome-edge);padding:12px 16px 13px 44px;position:relative}.rows>li:last-child{border-bottom:0}.rows>li:hover{background:var(--row-hover)}.rows .ic{width:17px;height:17px;position:absolute;top:13px;left:15px}.rh{justify-content:space-between;align-items:baseline;gap:14px;display:flex}.rows h3{min-width:0;color:var(--c-ink);text-wrap:balance;margin:0;font-size:15.5px;font-weight:600;line-height:1.3}.rows .meta{font-family:var(--font-display);color:var(--c-subtle);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:12.5px}.rows .sub{font-family:var(--font-display);color:var(--c-muted);margin:2px 0 0;font-size:13px}.roles{flex-direction:column;gap:1px;margin:3px 0 0;padding:0;list-style:none;display:flex}.roles li{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:0 14px;display:flex}.roles .rt{font-family:var(--font-display);color:var(--c-muted);white-space:nowrap;font-size:13px}.rows .desc{color:var(--c-muted);text-wrap:pretty;margin:6px 0 0;font-size:14.5px;line-height:1.55}.rows .foot{flex-wrap:wrap;align-items:center;gap:6px 14px;margin-top:8px;display:flex}.rows .tech{flex-wrap:wrap;gap:5px;margin:0;display:flex}.rows .tech span{font-family:var(--font-display);color:var(--c-muted);border:1px solid var(--c-tag-edge);border-radius:5px;padding:1px 7px;font-size:11.5px}.rows .lk{font-family:var(--font-display);font-size:13px}.linkrows>li{padding:0}.linkrows a{color:var(--c-ink);padding:12px 16px 13px 44px;text-decoration:none;display:block;position:relative}.linkrows a:hover{background:var(--row-hover)}.linkrows a:hover h3{text-underline-offset:3px;text-decoration:underline}.linkrows .side{align-items:baseline;gap:10px;display:flex}.linkrows .go{color:var(--accent);font-family:var(--font-display);font-size:13px}.linkrows .url{color:var(--accent);font-family:var(--font-display);overflow-wrap:anywhere;margin-top:2px;font-size:13px;display:block}@media (width<=1000px),(height<=600px){html:has(.collage-body),.collage-body{height:auto}.collage-body{overflow:auto}.board{padding:calc(var(--c-bar) + env(safe-area-inset-top,0px) + 16px) 16px 80px;flex-direction:column;gap:16px;max-width:720px;margin:0 auto;display:flex;position:static}.win{position:relative;z-index:auto!important;width:100%!important;height:auto!important;max-height:none!important;top:auto!important;left:auto!important}.tb{cursor:default}.wb{overflow:visible}.rz,#collage-reset{display:none}.menubar .me{margin-right:4px}.menubar .clock{display:none}}@media (width<=480px){.rh,.roles li{flex-direction:column;gap:1px}.rows>li,.linkrows a{padding-left:40px;padding-right:12px}.rows .ic{left:13px}.about{padding:22px 18px 24px}}@media (prefers-reduced-motion:reduce){.win,.win.easing{transition:none}}
