:root{--canvas-bg: #fffafd;--text-main: #4a4050;--pink-banner: #f8dce9;--pink-title: #9a5272;--pink-border: #d99ab8;--pink-active: #bd5d88;--blue-bg: #e4f3f4;--blue-border: #5b9da1;--purple-bg: #f0eafa;--purple-border: #8876a8;--yellow-bg: #fff4d8;--yellow-border: #c9a76b;--green-bg: #e8f4eb;--green-main: #5e966d;--border-grey: #958b95}*{box-sizing:border-box}html{scrollbar-color:var(--pink-border) var(--pink-banner);scrollbar-width:thin}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--pink-banner)}::-webkit-scrollbar-thumb{background:var(--pink-border);border:2px solid var(--pink-banner);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--pink-active)}html{margin:0;padding:0;background:var(--canvas-bg);color:var(--text-main);font-family:Times New Roman,Times,Georgia,serif;font-size:clamp(11px,1.7vh,17px);line-height:1.25;overflow-x:hidden;overflow-y:auto}body{margin:0;padding:0;background:radial-gradient(circle at 10% 10%,rgba(248,220,233,.35),transparent 28rem),var(--canvas-bg);color:var(--text-main);font-family:Times New Roman,Times,Georgia,serif;font-size:clamp(11px,1.7vh,17px);line-height:1.25}html.single-screen,body.single-screen{height:100%;max-height:100vh;overflow:hidden}html.subpage-html{height:auto!important;min-height:100vh!important;overflow-y:auto!important;overflow-x:hidden!important}body.subpage-body{height:auto!important;min-height:100vh!important;overflow-y:visible!important;overflow-x:hidden!important}a{color:var(--pink-title)}a:visited{color:var(--purple-border)}a:active{color:var(--pink-active)}.mono{font-family:Courier New,Courier,monospace}#page{height:100vh;max-height:100vh;display:grid;grid-template-rows:auto auto 1fr 1.25fr;overflow:hidden;width:100%;max-width:100%}#page>*{min-width:0;min-height:0}.ticker-wrap{background:var(--pink-banner);border-bottom:3px solid var(--pink-border);overflow:hidden;white-space:nowrap;font-weight:700;font-size:clamp(12px,2vh,17px);padding:.35vh 0;display:block;width:100%;position:relative;box-sizing:border-box}.ticker-track{display:inline-flex;white-space:nowrap;will-change:transform;animation:ticker-loop 35s linear infinite}.ticker-item{display:inline-flex;align-items:center;padding-right:3rem;color:#000}.ticker-star{color:var(--pink-title);margin:0 .8rem;font-size:1.1em}@keyframes ticker-loop{0%{transform:translate(0)}to{transform:translate(-50%)}}#top{display:flex;align-items:center;justify-content:space-between;gap:1vw;background:var(--blue-bg);border-bottom:3px solid var(--blue-border);padding:.6vh 1.2vw;overflow:hidden}#top h1{margin:0;font-size:clamp(18px,3.4vh,30px);color:var(--pink-title);text-decoration:underline;white-space:nowrap;flex-shrink:0}.site-title-link{color:inherit;text-decoration:underline;display:inline-flex;align-items:center;gap:8px}.site-title-icon{width:clamp(24px,3.6vh,32px);height:clamp(24px,3.6vh,32px);object-fit:contain;vertical-align:middle;border-radius:4px;flex-shrink:0}#top .tag{color:var(--purple-border);font-style:italic;font-weight:700;font-size:clamp(11px,2vh,16px);white-space:nowrap}#nav{display:flex;flex-shrink:0}#nav a{border:3px outset var(--blue-border);background:#fff;padding:.4vh .7vw;font-weight:700;font-size:clamp(11px,1.9vh,16px);margin-left:.3vw;text-decoration:none;color:var(--pink-title);white-space:nowrap}#nav a:active{border-style:inset}#nav a.active{border-style:inset;background:var(--blue-bg);color:var(--blue-border)}#hero{display:grid;grid-template-columns:25% 50% 25%;width:100%;max-width:100%;border-bottom:4px solid var(--pink-border);min-height:0;overflow:hidden}#hero>div{min-width:0;min-height:0;overflow:hidden;width:100%}.photo{display:flex;flex-direction:column;background:#fff5f9;min-width:0}.photo .frame{flex:1;position:relative;min-height:0;display:flex;align-items:center;justify-content:center;text-align:center;font-weight:700;color:var(--pink-title)}.photo img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:top}.photo small{text-align:center;font-weight:700;color:var(--purple-border);padding:.3vh 0;font-size:clamp(10px,1.6vh,14px);background:#fff;border-top:3px solid var(--pink-border)}.about{display:flex;flex-direction:column;padding:.8vh 1.2vw;background:#fff;min-width:0}.about h2{margin:0;font-size:clamp(18px,4.2vh,36px);color:var(--pink-title);text-decoration:underline;line-height:1.1}.about .name{font-weight:700;color:var(--purple-border);font-size:clamp(11px,1.9vh,16px);margin-top:.2vh}.about .role{font-weight:700;color:var(--blue-border);font-size:clamp(13px,2.2vh,19px);margin:.3vh 0}.about p{margin:.2vh 0 .5vh;font-size:clamp(11px,1.9vh,16px);line-height:1.25}.facts-wrap{flex:1;min-height:0;display:flex}table.facts{width:100%;height:100%;table-layout:fixed;border-collapse:collapse;border:3px solid var(--blue-border);font-size:clamp(10px,1.8vh,15px)}table.facts td{border:2px solid var(--blue-border);padding:.1vh .6vw;line-height:1.2}table.facts td:first-child{background:var(--blue-bg);font-weight:700;width:25%;color:var(--blue-border);white-space:nowrap}.status{display:flex;flex-direction:column;background:var(--yellow-bg);overflow:hidden;min-width:0}.availability-card{display:flex;flex-direction:column;height:100%;background:var(--yellow-bg);border:3px solid var(--yellow-border);overflow:hidden;min-width:0}.window-titlebar{background:var(--pink-title);color:#fff;padding:.2vh .5vw;font-size:clamp(10px,1.6vh,14px);font-weight:700;display:flex;align-items:center;justify-content:space-between}.window-controls{display:flex;gap:2px}.window-btn{background:#fffafd;color:#000;border:2px outset #ffffff;font-size:11px;font-weight:700;padding:0 3px;line-height:1;cursor:pointer}.window-body{flex:1;padding:.6vh .6vw;display:flex;flex-direction:column;justify-content:space-between;min-height:0}.wavy-line{height:8px;margin:.3vh 0;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='8' viewBox='0 0 40 8'><path d='M0 4 Q10 0 20 4 T40 4' fill='none' stroke='%23d6336c' stroke-width='2'/></svg>");background-repeat:repeat-x;background-size:40px 8px;animation:slide 1s linear infinite}@keyframes slide{to{background-position-x:40px}}.availability-actions{display:flex;flex-direction:column;gap:.4vh;margin-top:.2vh}.window-action-btn{display:flex;align-items:center;justify-content:center;gap:.3vw;border:3px outset var(--pink-border);background:#fffafd;color:var(--pink-title);font-weight:700;font-size:clamp(10px,1.7vh,14px);text-decoration:none;padding:.3vh .3vw;white-space:nowrap}.window-action-btn:active{border-style:inset}#projects{display:flex;flex-direction:column;min-height:0;overflow:hidden}#projects .head{display:flex;align-items:baseline;justify-content:space-between;padding:.4vh 1.2vw;background:var(--purple-bg);border-bottom:3px solid var(--purple-border)}#projects h2{margin:0;font-size:clamp(16px,3vh,26px);color:var(--purple-border);text-decoration:underline}#projects .head a{font-size:clamp(11px,1.9vh,16px);font-weight:700;text-decoration:underline}.cards{flex:1;min-height:0;display:grid;grid-template-columns:repeat(4,25%);width:100%;max-width:100%;overflow:hidden}.card{display:flex;flex-direction:column;padding:.6vh .6vw;overflow:hidden;width:100%;max-width:100%;min-width:0}.shot{flex:1;min-height:6vh;position:relative;margin-bottom:.4vh;border:2px solid var(--border-grey);background:#fff;display:flex;align-items:center;justify-content:center;text-align:center;font-weight:700;font-size:clamp(10px,1.6vh,14px);color:var(--border-grey);overflow:hidden}.shot img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:top}.ascii-preview{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;background:repeating-linear-gradient(45deg,#f8f9fa,#f8f9fa 10px,#e9ecef 10px 20px);padding:.3vh .4vw;color:#333}.ascii-preview .badge{background:var(--pink-title);color:#fff;padding:1px 4px;font-size:clamp(9px,1.3vh,12px);font-weight:700;margin-bottom:2px}.ascii-preview .sub{font-size:clamp(9px,1.3vh,12px);color:#555}.card h3{margin:0;font-size:clamp(12px,2.1vh,17px);color:var(--blue-border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.15}.card h3 a{color:var(--blue-border);text-decoration:underline}.live{color:var(--green-main);font-weight:700;font-size:clamp(10px,1.6vh,14px)}.card .meta{font-style:italic;font-size:clamp(9px,1.5vh,13px);margin:.2vh 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card p{margin:.1vh 0;font-size:clamp(10px,1.6vh,14px);line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card .tech{font-size:clamp(9px,1.5vh,13px);border-top:1px dashed var(--border-grey);padding-top:.2vh;margin-top:.2vh;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card .tech b{color:var(--text-main)}.card .tech span{color:var(--green-main);font-weight:700}.c1{background:#f0eaff}.c2{background:#e6f7ec}.c3{background:#e0f4fa}.c4{background:#fff3b0}#subpage{min-height:100vh;width:100%;display:flex;flex-direction:column;overflow:visible!important}#subpage-content{flex:1;width:100%;padding:1.5vh 1.5vw;background:#fff;overflow:visible!important}.availability-title{font-size:clamp(9px,1.4vh,12px);letter-spacing:.5px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.availability-body{padding:.5vh .6vw;display:flex;flex-direction:column;justify-content:space-between;gap:.7vh}.availability-label{color:var(--pink-title);font-size:clamp(9px,1.3vh,12px);font-weight:700}.availability-headline{font-size:clamp(12px,2vh,17px);font-weight:900;color:var(--pink-title);line-height:1.15;margin:.1vh 0}.availability-subhead{font-size:clamp(8px,1.3vh,11px);color:var(--text-main);background:#e0f4fa;border:1px dashed var(--blue-border);padding:.4vh .4vw;line-height:1.2}.availability-details{display:grid;gap:.35vh;margin:0;font-size:clamp(8.5px,1.35vh,12px)}.availability-details div{display:flex;justify-content:space-between;gap:.5vw}.availability-details dt{color:var(--purple-border);font-weight:700}.availability-details dd{margin:0;text-align:right}.availability-btn-email{border-color:var(--pink-border);color:var(--pink-title)}.availability-btn-gh{border-color:var(--purple-border);color:var(--purple-border)}.window-action-btn:hover{background:var(--pink-banner)}@media(prefers-reduced-motion:reduce){.availability-card,.ticker-track{animation:none!important}}@media(max-width:900px){html,body{overflow:auto;height:auto;font-size:16px}html.single-screen,body.single-screen{height:auto;max-height:none;overflow-x:hidden;overflow-y:auto}html{scrollbar-width:none}html::-webkit-scrollbar,body::-webkit-scrollbar{display:none;width:0;height:0}#page{height:auto;max-height:none;display:block;overflow:visible}#top{flex-direction:column;align-items:flex-start;padding:10px 14px;gap:8px}#top h1{font-size:24px;white-space:normal}.site-title-icon{width:26px;height:26px}#top .tag{display:none}#nav{flex-wrap:wrap;gap:6px;width:100%}#nav a{margin-left:0;font-size:14px;padding:7px 11px;min-height:38px;display:inline-flex;align-items:center;box-sizing:border-box}#hero{display:block;overflow:visible}.photo .frame{flex:0 0 auto;height:clamp(240px,40vh,360px);min-height:240px}.about{padding:14px}.about h2{font-size:28px}.about .name{font-size:16px}.about .role{font-size:18px}.about p{font-size:16px;display:block}table.facts{height:auto;font-size:14px;margin-top:10px}table.facts td{padding:6px 8px}.status{padding:10px;height:auto}.availability-card{height:auto;overflow:visible;animation:none}.window-titlebar{padding:4px 8px;font-size:12px}.availability-title{font-size:12px}.availability-body{padding:12px 10px;gap:8px;min-height:auto}.availability-headline{font-size:17px;line-height:1.25;margin:4px 0}.availability-subhead{font-size:12px;padding:4px 6px;line-height:1.3}.availability-actions{gap:8px;margin-top:4px}.window-action-btn{white-space:normal!important;padding:9px 10px!important;font-size:13px!important;min-height:44px;line-height:1.3;text-align:center;box-sizing:border-box}#projects .head{padding:10px 14px}#projects h2{font-size:24px}.cards{display:block}.card{border-bottom:3px solid var(--border-grey);padding:16px 14px}.shot{height:25vh;flex:none}.card h3{font-size:22px}.card .meta{font-size:14px}.card p{font-size:15px;display:block}.card .tech{font-size:14px}#foot{font-size:14px;padding:10px 0}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}
