button[data-astro-cid-pwqapgdc]{font-family:var(--font-body);color:var(--c-cyan);border:1px solid var(--c-ink-2);cursor:pointer;background:0 0;padding:4px 9px;font-size:.85rem;font-weight:700}button[data-astro-cid-pwqapgdc][aria-pressed=true]{background:var(--c-cyan);color:var(--c-ink)}body:has(>main.stage),html.js body:has(main.stage){background:var(--c-desktop);flex-direction:column;min-height:100dvh;display:flex}body:has(main.stage) .stage{flex:1 0 auto}.stage{--about-width:clamp(400px, 34vw, 560px);background:radial-gradient(1px 1px at 25% 25%, #ffffff0d 1px, transparent 1px), radial-gradient(1px 1px at 75% 75%, #00000014 1px, transparent 1px), var(--c-desktop);background-size:4px 4px,4px 4px,auto;min-height:calc(100dvh - 46px);position:relative;overflow:hidden}.wallmark{opacity:.92;pointer-events:none;user-select:none;filter:drop-shadow(3px 4px #00000038);width:clamp(160px,min(34vw,44dvh),440px);height:auto;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.wallmark.is-obscured{visibility:hidden}.icons{z-index:5;scrollbar-width:thin;flex-flow:column;align-content:flex-start;gap:6px;display:flex;position:absolute;top:14px;bottom:14px;left:12px;overflow-y:auto}.dicon{cursor:pointer;color:#eafcff;width:86px;font-family:var(--font-body);text-align:center;background:0 0;border:1px solid #0000;flex-direction:column;flex-shrink:0;align-items:center;gap:5px;padding:8px 2px;font-size:.78rem;text-decoration:none;display:flex}.dicon:hover{background:#48c4d924}.dicon:focus-visible{border:1px dotted var(--c-yellow);background:#48c4d938;outline:none}.dicon svg{width:34px;height:34px}.dicon .lbl{text-shadow:1px 1px #000000b3;line-height:1.4}.mobile-label{display:none}.win{background:var(--c-surface);border:2px solid;border-color:var(--c-bevel-hi) var(--c-frame) var(--c-frame) var(--c-bevel-hi);box-shadow:1px 1px 0 var(--c-bevel-lo) inset, -1px -1px 0 var(--c-surface-2) inset, 4px 4px 0 #00000059;min-width:270px}.win[hidden]{display:none!important}.tbar{user-select:none;background:linear-gradient(90deg, var(--c-ink) 0%, var(--c-ink-2) 100%);color:var(--c-cyan);align-items:center;gap:8px;padding:5px 6px;display:flex}.win.inactive .tbar{color:#8a8a8a;background:#3a3b3a}.tbar .ticon{flex:none;display:flex}.tbar .ticon svg{width:15px;height:15px}.tbar .ttext{font-family:var(--font-body);letter-spacing:.2px;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:.82rem;font-weight:600;overflow:hidden}.tbtns{gap:3px;display:flex}.tbtns button{width:21px;height:19px;font-family:var(--font-pixel);cursor:pointer;color:var(--c-ink);background:var(--c-surface);border:1px solid;border-color:var(--c-bevel-hi) var(--c-frame) var(--c-frame) var(--c-bevel-hi);font-size:9px;line-height:1}.tbtns .bmin:hover{background:var(--c-yellow)}.tbtns .bclose:hover{background:var(--c-red);color:#fff}.tbtns button:active{border-color:var(--c-frame) var(--c-bevel-hi) var(--c-bevel-hi) var(--c-frame)}.wbody{padding:14px 16px;font-size:1rem;line-height:1.55}.wbody a{color:var(--c-link)}.wbody h1{margin:0 0 2px;font-size:1.7rem}.wbody h2{margin:0 0 8px;font-size:1.05rem}.wbody p{margin:0 0 10px}.wbody .brand-inline{width:auto;height:44px;margin:2px 0 12px;display:block}.loc{letter-spacing:.12em;text-transform:uppercase;color:var(--c-text-soft);margin:0 0 10px;font-size:.75rem;font-weight:600}.btn98{font-family:var(--font-body);cursor:pointer;color:var(--c-ink);background:var(--c-surface-2);border:2px solid;border-color:var(--c-bevel-hi) var(--c-frame) var(--c-frame) var(--c-bevel-hi);padding:8px 14px;font-size:.85rem;font-weight:600;text-decoration:none;display:inline-block}.btn98.primary{box-shadow:0 0 0 1px var(--c-frame)}.btn98:hover{background:#fffdf6}.btn98:active{border-color:var(--c-frame) var(--c-bevel-hi) var(--c-bevel-hi) var(--c-frame)}.btnrow{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.music-playlist{gap:12px;margin:12px 0;padding:0;list-style:none;display:grid}.music-playlist li{border:1px solid var(--c-bevel-lo);background:#f7f5ef;padding:10px}.music-playlist audio{width:100%;min-width:0;height:40px;margin-top:6px;display:block}.music-status,.music-credits{font-size:.8rem;line-height:1.5}.filelist{border:2px solid;border-color:var(--c-bevel-lo) var(--c-bevel-hi) var(--c-bevel-hi) var(--c-bevel-lo);background:#fff;margin:0;padding:0;list-style:none}.filelist li{border-bottom:1px dotted #d8d4c8;align-items:center;gap:9px;padding:7px 10px;display:flex}.filelist li:last-child{border-bottom:none}.filelist a{color:var(--c-ink);flex:1;font-size:.85rem;text-decoration:none}.filelist a:hover{color:var(--c-link);text-decoration:underline}.filelist time{color:#8a867c;flex:none;font-size:.72rem}.filelist svg{flex:none;width:16px;height:16px}.filelist .fmeta{flex:1;min-width:0}.filelist .fmeta a{flex:none}.filelist .fdesc{color:#8a867c;margin-top:2px;font-size:.78rem;line-height:1.45;display:block}.filelist .fdesc a{color:var(--c-link);font-size:inherit}.wfoot{margin-top:10px;font-size:.85rem}.toolgrid{grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;display:grid}.toolgrid a{color:var(--c-ink);background:var(--c-surface-2);border:1px solid;border-color:var(--c-bevel-hi) var(--c-bevel-lo) var(--c-bevel-lo) var(--c-bevel-hi);align-items:center;gap:8px;padding:8px 9px;font-size:.82rem;text-decoration:none;display:flex}.toolgrid a:hover{background:#fffdf6}.totw{border:2px solid;border-color:var(--c-bevel-lo) var(--c-bevel-hi) var(--c-bevel-hi) var(--c-bevel-lo);background:#fff;margin-bottom:10px;padding:10px 12px;font-size:.85rem}.totw .k{letter-spacing:.12em;color:var(--c-red);margin-bottom:4px;font-size:.66rem;font-weight:700;display:block}.nl label{letter-spacing:.1em;text-transform:uppercase;color:var(--c-text-soft);margin:10px 0 4px;font-size:.7rem;font-weight:600;display:block}.nl input{width:100%;font-family:var(--font-body);color:var(--c-ink);border:2px solid;border-color:var(--c-bevel-lo) var(--c-bevel-hi) var(--c-bevel-hi) var(--c-bevel-lo);background:#fff;padding:8px 9px;font-size:.9rem}.nl input:focus-visible{outline:2px solid var(--c-yellow);outline-offset:0}.contact-form{gap:10px;display:grid}.contact-field label{color:var(--c-text-soft);letter-spacing:.1em;text-transform:uppercase;margin-bottom:4px;font-size:.7rem;font-weight:600;display:block}.contact-field input,.contact-field textarea{box-sizing:border-box;border:2px solid;border-color:var(--c-bevel-lo) var(--c-bevel-hi) var(--c-bevel-hi) var(--c-bevel-lo);width:100%;color:var(--c-ink);font-family:var(--font-body);background:#fff;border-radius:0;padding:8px 9px;font-size:.95rem;line-height:1.4}.contact-field textarea{resize:vertical;min-height:160px}.contact-field input:focus-visible,.contact-field textarea:focus-visible{outline:2px solid var(--c-yellow);outline-offset:0}[data-form-status]:empty{display:none}[data-form-status]{margin:4px 0;font-size:.9rem;line-height:1.5}[data-form-status][data-state=error]{color:#a02020}form[aria-busy=true] button{cursor:wait}.taskbar{z-index:60;background:var(--c-ink);border-top:2px solid var(--c-ink-2);align-items:stretch;gap:6px;min-height:46px;padding:5px 6px;display:flex;position:relative}.start{position:static}.start>summary{cursor:pointer;height:100%;font-family:var(--font-pixel);color:var(--c-cyan);background:#2a2b2a;border:2px solid #000;border-color:#4a4b4a #000 #000 #4a4b4a;align-items:center;gap:8px;padding:0 13px;font-size:12px;list-style:none;display:flex}.start>summary::-webkit-details-marker{display:none}.start[open]>summary{background:#232423;border-color:#000 #4a4b4a #4a4b4a #000}.start>summary img{width:auto;height:17px}.smenu{z-index:200;background:var(--c-surface);border:2px solid;border-color:var(--c-bevel-hi) var(--c-frame) var(--c-frame) var(--c-bevel-hi);width:260px;max-height:calc(100dvh - 90px);position:absolute;bottom:calc(100% + 2px);left:6px;overflow-y:auto;box-shadow:4px 4px #00000059}.smenu .shead{background:linear-gradient(90deg, var(--c-ink), var(--c-ink-2));align-items:center;gap:9px;padding:11px 12px;display:flex}.smenu .shead img{height:20px}.smenu .shead b{font-family:var(--font-pixel);color:var(--c-cyan);font-size:10px;font-weight:400}.smenu nav{flex-direction:column;padding:6px 0;display:flex}.smenu nav a,.smenu nav button{color:var(--c-ink);font-size:.9rem;font-family:var(--font-body);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;width:100%;padding:9px 14px;text-decoration:none;display:flex}.smenu nav a:hover,.smenu nav button:hover,.smenu nav a:focus-visible,.smenu nav button:focus-visible{background:var(--c-ink-2);color:#fff;outline:none}.smenu .sep{border-top:1px solid var(--c-bevel-lo);border-bottom:1px solid var(--c-bevel-hi);margin:4px 0}.smenu svg{flex:none;width:15px;height:15px}.taskwins{flex:1;gap:5px;min-width:0;display:flex;overflow:hidden}.taskwins button{cursor:pointer;max-width:170px;font-family:var(--font-body);color:#cfd8d6;white-space:nowrap;text-overflow:ellipsis;background:#2a2b2a;border:2px solid #000;border-color:#4a4b4a #000 #000 #4a4b4a;align-items:center;gap:7px;padding:0 11px;font-size:.75rem;display:flex;overflow:hidden}.taskwins button.active{color:var(--c-cyan);background:#123a43;border-color:#000 #4a4b4a #4a4b4a #000}.tray{font-variant-numeric:tabular-nums;color:#eafcff;background:#1a1b1a;border:2px solid #4a4b4a;border-color:#000 #4a4b4a #4a4b4a #000;flex-shrink:0;justify-content:center;align-items:center;padding:0 12px;font-family:ui-monospace,Consolas,monospace;font-size:16px;font-weight:600;display:flex}.boot{z-index:999;color:#9fe8f2;font-family:var(--font-pixel);cursor:pointer;background:#0a0f10;flex-direction:column;justify-content:center;padding:8vh 10vw;font-size:13px;line-height:2.4;display:flex;position:fixed;inset:0}.boot[hidden]{display:none!important}.boot .blogo{color:var(--c-cyan);margin-bottom:18px;font-size:20px}.boot .ok{color:var(--c-yellow)}.boot .skip{color:#4c6a70;font-size:9px;position:absolute;bottom:24px;right:28px}.boot p{opacity:0;margin:0;animation:10ms forwards bootline}.boot p:nth-child(2){animation-delay:.15s}.boot p:nth-child(3){animation-delay:.4s}.boot p:nth-child(4){animation-delay:.65s}.boot p:nth-child(5){animation-delay:.9s}@keyframes bootline{to{opacity:1}}html.js body:has(main.stage){height:100dvh;min-height:0;overflow:hidden}html.js body:has(main.stage) .stage{flex:auto;min-height:0}html.js .taskbar{flex:none}.desktop-status{color:#c9e5e7;font-family:var(--font-pixel);pointer-events:none;align-items:center;gap:8px;font-size:12px;display:flex;position:absolute;bottom:20px;right:24px}.power-light{background:var(--c-cyan);width:8px;height:8px;box-shadow:0 0 9px #48c4d980}.terminal-path{border-left:3px solid var(--c-cyan);background:var(--c-ink);color:#b5ece4;margin:12px 0 16px;padding:7px 10px;font-family:ui-monospace,monospace;font-size:.875rem}#win-reader .wbody{flex-direction:column;height:calc(100dvh - 190px);max-height:none;padding:0;display:flex}#reader-frame{background:var(--c-page);border:0;flex:1;width:100%;min-height:0;display:block}@media (width>=901px){html.js .stage .win{width:var(--w,380px);position:absolute;top:20px;left:118px}html.js .win .wbody{max-height:calc(100dvh - 220px);overflow:auto}html.js #win-about{--w:var(--about-width)}html.js #win-hire{--w:clamp(330px, 27vw, 460px)}html.js #win-blog{--w:clamp(400px, 36vw, 720px)}html.js #win-tools{--w:clamp(380px, 32vw, 640px)}html.js #win-projects{--w:clamp(420px, 36vw, 720px)}html.js #win-research{--w:clamp(400px, 34vw, 680px)}html.js #win-contact{--w:clamp(380px, 30vw, 560px)}html.js #win-message{--w:clamp(400px, 32vw, 560px)}html.js #win-news{--w:clamp(320px, 26vw, 420px)}html.js #win-cd{--w:clamp(360px, 30vw, 480px)}html.js #win-bin{--w:clamp(320px, 26vw, 420px)}html.js #win-reader{--w:min(900px, calc(100vw - 160px))}html.js .tbar[data-drag-handle]{cursor:grab}}html:not(.js) .stage{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));align-items:start;gap:16px;padding:16px 16px 16px 118px;display:grid}html:not(.js) .wallmark,html:not(.js) .tbtns,html:not(.js) .tray,html:not(.js) .taskwins,html:not(.js) .desktop-status,html:not(.js) #shutdown{display:none}html:not(.js) .icons{width:100px;position:absolute;top:14px;bottom:auto}html:not(.js) .win{grid-column:auto;min-width:0;scroll-margin-top:12px}@media (prefers-reduced-motion:no-preference){html.js .stage .win{animation:.24s ease-out winin}}@keyframes winin{0%{opacity:0;transform:translateY(12px)scale(.97)}to{opacity:1;transform:none}}@media (width<=900px){.stage{--launcher-height:276px;padding:8px}html.js .stage .win{flex-direction:column;min-width:0;height:auto;min-height:0;display:flex;position:absolute;inset:var(--launcher-height) 12px 16px!important;width:auto!important}html.js .win .tbar{flex:none}html.js .win .wbody{overscroll-behavior:contain;flex:1 1 0;min-height:0;overflow:auto}html.js .stage .win.is-opened{max-width:calc(100% - 16px);max-height:calc(100% - 16px);width:max-content!important;inset:8px auto auto 8px!important}html.js .win.is-opened .wbody{flex:0 auto}html.js #win-reader.is-opened{height:calc(100% - 16px);width:calc(100% - 16px)!important}html.js #win-reader.is-opened .wbody{flex:1 1 0}.icons{height:calc(var(--launcher-height) - 16px);scrollbar-color:var(--c-cyan) transparent;overscroll-behavior-x:contain;grid-template-rows:repeat(3,84px);grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin:0;display:grid;position:absolute;inset:8px 12px auto;overflow:visible}.dicon{width:auto;min-width:0;padding:6px 2px;font-size:.875rem}.dicon svg{width:36px;height:36px}.dicon .lbl{white-space:nowrap;overflow-wrap:normal}.dicon .desktop-label{display:none}.dicon .mobile-label{display:inline}.wallmark{width:clamp(140px,min(52vw,44dvh),300px)}.taskbar{padding-bottom:calc(5px + env(safe-area-inset-bottom));position:sticky;bottom:0}.toolgrid{grid-template-columns:1fr}html:not(.js) .stage{flex-direction:column;padding:12px;display:flex;overflow:visible}html:not(.js) .win{order:2;margin-bottom:14px}html:not(.js) #win-about{order:1}html:not(.js) .icons{order:0;width:auto;height:auto;margin-bottom:12px;position:static;overflow:visible}.wbody{padding:12px}.nl input,.contact-field input,.contact-field textarea{font-size:16px}.wbody .brand-inline{height:28px;margin:0 0 10px}.terminal-path{display:none}.wbody h1{font-size:1.5rem}.desktop-status{display:none}.tbtns button{width:44px;height:44px}html.js #win-reader .wbody{height:auto;min-height:0}.taskwins{overflow-x:auto}.taskwins button{flex-shrink:0;min-height:44px}.taskbar{gap:4px}.start>summary{padding:0 8px}.tray{padding:0 7px}.filelist li{flex-wrap:wrap}.filelist li>a{overflow-wrap:anywhere;min-width:0}.filelist time{margin-left:auto}}@media (width>=600px) and (width<=900px){.stage{--launcher-height:188px}.icons{grid-template-rows:repeat(2,84px);grid-template-columns:repeat(5,minmax(0,1fr))}}@media (width<=900px) and (height<=500px){.stage{--launcher-height:64px}.icons{flex-flow:row;display:flex;overflow:auto hidden}.dicon{flex-direction:row;justify-content:center;width:132px}.dicon svg{width:24px;height:24px}html:not(.js) .icons{flex-wrap:wrap}}
