:root{--bg:#131111;--text:antiquewhite;--accent:#6c63ff;--accent-strong:#5a4fd6;--accent-alt:#4a9eff;--card-bg:azure;--card-text:black;--muted:#ccc;--muted-dim:#888;--font-body:"Cambria", "Georgia", "Times New Roman", serif;--cube-size:300px;--cube-top:50px;--cube-depth:224px}*,:before,:after{box-sizing:border-box}html{font-size:100%}body{background-color:var(--bg);min-height:100vh;color:var(--text);font-family:var(--font-body);text-align:center;flex-direction:column;margin:0;display:flex}header{margin-top:2%;margin-bottom:5%;font-size:2rem}#wrapper{flex:1 0 auto;width:100%}img{width:100%;height:auto}.skip-link{background:var(--accent-strong);color:#fff;z-index:100;padding:8px 16px;text-decoration:none;position:absolute;top:-40px;left:0}.skip-link:focus{top:0}#wrapD3Cube{z-index:-5;width:100%;height:500px;margin:10% auto 20px;display:block;position:absolute}#D3Cube{width:var(--cube-size);height:var(--cube-size);top:var(--cube-top);transform-style:preserve-3d;margin:auto;animation:50s ease-in-out infinite cubeRotation;position:relative;transform:rotateX(-22deg)rotateY(-38deg)rotate(0)}#D3Cube>div{width:var(--cube-depth);height:var(--cube-depth);opacity:.5;transform:var(--face-rotation) translateZ(var(--cube-depth));background-color:#0000bc;animation:50s ease-in-out infinite sidesColorChange;position:absolute;overflow:hidden}#side1{--face-rotation:rotateX(90deg)}#side2{--face-rotation:rotateY(-90deg)}#side3{--face-rotation:rotateY(0deg)}#side4{--face-rotation:rotateY(90deg)}#side5{--face-rotation:rotateY(180deg)}#side6{--face-rotation:rotateX(-90deg)}@keyframes cubeRotation{0%{transform:rotateX(45deg)rotateY(45deg)rotate(45deg)}25%{transform:rotateX(120deg)rotateY(120deg)rotate(0)}50%{transform:rotateX(0)rotateY(120deg)rotate(120deg)}75%{transform:rotateX(120deg)rotateY(0)rotate(120deg)}to{transform:rotateX(45deg)rotateY(45deg)rotate(45deg)}}@keyframes sidesColorChange{0%{background-color:#0000bc}25%{background-color:#1a7a59}50%{background-color:#3e0375}75%{background-color:#64020f}to{background-color:#0000bc}}.hamburger{cursor:pointer;z-index:10;background:0 0;border:none;padding:14px 16px;display:none;position:absolute;top:0;left:0}.hamburger span{background:var(--text);width:25px;height:3px;margin:5px 0;transition:all .3s;display:block}.hamburger.open span:first-child{transform:rotate(45deg)translate(6px,6px)}.hamburger.open span:nth-child(2){opacity:0}.hamburger.open span:nth-child(3){transform:rotate(-45deg)translate(6px,-6px)}nav{width:100%;min-width:100%}nav ul{margin:0 2%;padding:0;list-style-type:none;display:flow-root}nav li{float:left}nav li a,.dropbtn{color:#fff;text-align:center;cursor:pointer;background:0 0;border:none;padding:14px 16px;font-family:inherit;font-size:1rem;text-decoration:none;display:inline-block}nav li a:hover,nav li a:focus-visible,.dropbtn:hover,.dropbtn:focus-visible,.dropdown:hover .dropbtn{color:#000;background-color:#fff}li.dropdown{display:inline-block;position:relative}.dropdown-content{z-index:1;background-color:#f9f9f9;min-width:160px;display:none;position:absolute;box-shadow:0 8px 16px #0003}.dropdown-content a{color:#000;text-align:left;padding:12px 16px;text-decoration:none;display:block}.dropdown-content a:hover,.dropdown-content a:focus-visible{background-color:#f1f1f1}.dropdown:hover .dropdown-content,.dropdown.dropdown-open .dropdown-content{display:block}.dropdown-content a.current-page{color:#fff;background:#545757}.dropdown-content a.see-all{color:#303030;background:#d4d4d4}li.nav-end{float:right}.activePage{border-bottom:3px solid #fff}.goUpAnchor{width:40px;height:40px;font-size:2rem;position:fixed;bottom:2%;right:2%}.goUpAnchor a{color:var(--text);text-decoration:none}.present{width:70%;max-width:1100px;margin:12% auto 0;padding:1%}.present h1,.present h2,.present p{margin:5%}.projects{flex-flow:wrap;justify-content:center;width:85%;margin:2% auto 0;display:flex}article{background-color:var(--card-bg);width:80%;max-width:40%;color:var(--card-text);border:1px solid;border-radius:4%;flex-flow:wrap;margin:1% auto 10%;padding:1%;display:flex;box-shadow:0 4px 8px #0003}.projects article{width:25%}.projects article img.narrow{width:40%}article p{width:80%;margin:1% auto}article p a{color:inherit;background-color:#fff}article p a:hover{color:red}article h2,article h3,article h4{width:100%;margin:2% 0}article code{background:#0000000f;border-radius:3px;padding:2px 5px}article pre{text-align:left;background:#0000000f;border-radius:4px;width:100%;padding:1em;overflow-x:auto}article.longform{text-align:left;max-width:50%}article.longform>*{width:100%}article.longform ul{text-align:left;margin-top:1%}article.longform .lead{font-size:1.08em;line-height:1.6}article.longform .keyfacts{background:#8881;border:1px solid #8884;border-radius:6px;flex-wrap:wrap;gap:.6em 1.4em;margin:1.2em 0;padding:.9em 1.1em;list-style:none;display:flex}article.longform .keyfacts li{margin:0;font-size:.92em}article.longform .keyfacts strong{font-size:1.25em;line-height:1.2;display:block}article.longform details{border:1px solid #8884;border-radius:6px;margin:.7em 0;padding:0 1.1em}article.longform details[open]{padding-bottom:.8em}article.longform summary{cursor:pointer;padding:.75em 0;font-weight:600}article.longform summary:hover{text-decoration:underline}article.longform summary .hint{opacity:.72;margin-top:.15em;font-size:.86em;font-weight:400;display:block}article.longform details>:not(summary){max-width:100%}article.longform details h3{margin-top:1.3em}article.longform .scroll{margin:1em 0;overflow-x:auto}article.longform table{border-collapse:collapse;width:auto;min-width:60%;font-size:.9em}article.longform th,article.longform td{text-align:center;border:1px solid #8884;padding:.35em .7em}article.longform th{background:#8882;font-weight:600}article.longform td.lbl,article.longform th.lbl{text-align:left;white-space:nowrap}article.longform .kmaps{flex-wrap:wrap;gap:1.4em;margin:1em 0;display:flex}article.longform .kmap{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85em}article.longform .kmap figcaption{text-align:center;margin-bottom:.4em;font-weight:600}article.longform .kmap table{min-width:0}article.longform .kmap td,article.longform .kmap th{min-width:1.9em;padding:.28em .55em}article.longform .kmap .one{background:#8883;font-weight:700}article.longform .kmap .dc{opacity:.5}article.longform .kmap .axis{opacity:.75;background:0 0;border:none;font-size:.9em;font-weight:400}article.longform pre{background:#8881;border:1px solid #8884;padding:.8em 1em}article.longform .flow{font-size:.88em;line-height:1.5}.skills-section{text-align:left;max-width:1100px;margin:5% auto 0;padding:2% 5%}.skills-section h2{text-align:center;margin-bottom:3%}.skills-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-top:2%;display:grid}.skill-category{background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;padding:15px}.skill-category h3{margin-bottom:10px;font-size:1em}.tags{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.tag{color:var(--muted);background:#6c63ff26;border:1px solid #6c63ff4d;border-radius:4px;padding:4px 10px;font-size:.8em;display:inline-block}article .tag{color:var(--card-text)}.timeline{max-width:800px;margin:40px auto;padding:20px 0;position:relative}.timeline:before{content:"";background:linear-gradient(180deg, var(--accent-alt), var(--accent));width:3px;position:absolute;top:0;bottom:0;left:20px}.timeline-item{text-align:left;margin-bottom:35px;padding-left:50px;position:relative}.timeline-dot{background:var(--accent);border:3px solid var(--bg);border-radius:50%;width:18px;height:18px;position:absolute;top:5px;left:11px}.timeline-date{color:var(--muted-dim);margin-bottom:4px;font-size:.8em;display:block}.timeline-content{background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;padding:12px 15px;transition:transform .2s}.timeline-content:hover{transform:translate(5px)}.timeline-content h3{margin-bottom:4px;font-size:1em}.timeline-content p{color:var(--muted);margin:2px 0;font-size:.9em}footer{z-index:1;text-align:left;flex:none;margin-bottom:2%;margin-left:2%;position:relative}footer a{color:var(--text)}footer img{width:20px;height:auto;margin-right:1%}@media only screen and (width<=800px){.projects article{width:40%;max-width:none}article.longform{max-width:80%}}@media only screen and (width<=768px){:root{--cube-size:120px;--cube-top:20px;--cube-depth:90px}.hamburger{display:block}nav ul{z-index:9;background-color:var(--bg);flex-direction:column;width:100%;margin-top:50px;display:none;position:absolute;top:0;left:0}nav ul.show{display:flex}nav ul li{float:none;width:100%}nav ul li a,.dropbtn{text-align:left;width:100%;padding-left:20px}.dropdown-content{width:100%;position:static}.dropdown-content a{padding-left:40px}li.nav-end{float:none}.present{width:90%;margin-top:20%}#wrapD3Cube{height:200px;margin-top:15%}.timeline:before{left:15px}.timeline-item{padding-left:40px}.timeline-dot{width:16px;height:16px;left:7px}}@media only screen and (width<=600px){.projects article{width:80%;min-width:50%;max-width:none}article.longform{max-width:90%}}@media (prefers-reduced-motion:reduce){#D3Cube,#D3Cube>div{animation:none}.timeline-content,.hamburger span{transition:none}}header h1{font-size:inherit;margin:0}.project-links{margin-top:3%}.areas{text-align:left;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;max-width:1100px;margin:2% auto;padding:0 5%;display:grid}.area-card{color:inherit;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;padding:18px;text-decoration:none;transition:transform .2s;display:block}.area-card:hover,.area-card:focus-visible{border-color:var(--accent);transform:translateY(-3px)}.area-card h2{margin:0 0 8px;font-size:1.1em}.area-card p{color:var(--muted);margin:0 0 10px;font-size:.9em}.area-count{color:var(--muted);font-size:.8em}.note-list{padding:0;list-style:none}.note-list li{margin-bottom:18px}.note-list p{color:var(--muted);margin:4px 0 0;font-size:.9em}.note-meta{opacity:.75;font-size:.85em}main a{color:var(--text)}main a:hover,main a:focus-visible{color:var(--accent-alt)}.filters{flex-wrap:wrap;justify-content:center;gap:10px;max-width:900px;margin:2% auto 0;padding:0 5%;display:flex}.filters a{color:var(--text);border:1px solid #fff3;border-radius:4px;padding:6px 14px;font-size:.85em;text-decoration:none}.filters a:hover,.filters a:focus-visible{border-color:var(--accent-alt);color:var(--accent-alt)}.filters a[aria-current]{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}.filter-status{color:var(--muted);min-height:1.2em;margin:12px auto 0;font-size:.85em}.area-badges{margin-top:3%;font-size:.85em}.area-badges-label{opacity:.7;margin-right:6px}.area-badges a{color:inherit;border:1px solid #00000040;border-radius:4px;margin-right:6px;padding:3px 10px;text-decoration:none;display:inline-block}.area-badges a:hover,.area-badges a:focus-visible{background:#0000000f}.projects article[hidden]{display:none}.timer{text-align:center;width:100%}.timer-phase{text-transform:uppercase;letter-spacing:.08em;min-height:1.4em;margin:0;font-size:1.1em}.timer-clock{font-variant-numeric:tabular-nums;margin:.1em 0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:clamp(3rem,18vw,6rem);line-height:1.05}.timer-round{opacity:.75;min-height:1.4em;margin:0 0 .8em}.timer[data-phase-name=work] .timer-clock{color:#1c6b3a}.timer[data-phase-name=rest] .timer-clock{color:#8a4b00}.timer[data-phase-name=prepare] .timer-clock{color:#7a1f1f}.timer-controls{justify-content:center;gap:12px;margin-bottom:1.2em;display:flex}.timer-controls button{color:inherit;cursor:pointer;background:#fff;border:1px solid #00000059;border-radius:4px;margin:0;padding:10px 24px;font-family:inherit;font-size:1rem;transition:background .2s}.timer-controls button:hover,.timer-controls button:focus-visible{background:#00000014;transform:none}.timer-settings fieldset{text-align:left;border:1px solid #0003;border-radius:6px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px 18px;padding:12px 16px;display:grid}.timer-settings legend{padding:0 6px;font-weight:600}.timer-settings label{flex-direction:column;gap:4px;font-size:.9em;display:flex}.timer-settings input[type=number]{color:inherit;background:#fff;border:1px solid #0000004d;border-radius:4px;padding:6px 8px;font-family:inherit;font-size:1rem}.timer-settings label.timer-sound{flex-direction:row;align-self:end;align-items:center;gap:8px}
