:root{--bg:#f7f8fb;--surface:#fff;--surface-2:#eef2f8;--text:#1b2230;--muted:#5b6577;--border:#e1e6ef;--accent:#3a6ff7;--accent-strong:#2753d6;--accent-soft:#e6edff;--shadow:0 1px 2px #1018280a, 0 8px 24px #1018280f;--radius:16px;--wrap:1080px;--cube-scale:1.6;--cube-bkgd:#3a6ff722;--cube-edge:#3a6ff7aa;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,-apple-system,Segoe UI,Helvetica,Arial,sans-serif;font-size:17px;line-height:1.65}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#0e1116;--surface:#161b23;--surface-2:#1d2430;--text:#e6e9ef;--muted:#9aa4b5;--border:#262e3b;--accent:#7ea2ff;--accent-strong:#a3bdff;--accent-soft:#1f2a44;--shadow:0 1px 2px #0000004d, 0 8px 24px #00000040;--cube-bkgd:#7ea2ff22;--cube-edge:#7ea2ffaa}}*,:before,:after{box-sizing:border-box}*{margin:0}html{scroll-behavior:smooth;scroll-padding-top:80px}body{background:var(--bg);color:var(--text)}img{max-width:100%;height:auto;display:block}a{color:var(--accent);text-underline-offset:3px}a:hover{color:var(--accent-strong)}h1,h2,h3{letter-spacing:-.02em;font-family:Space Grotesk,Inter,system-ui,sans-serif;line-height:1.15}.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 24px}@media (width<=600px){.wrap{padding:0 16px}}.site-header{z-index:10;background:color-mix(in srgb, var(--bg) 80%, transparent);-webkit-backdrop-filter:saturate(180%)blur(12px);border-bottom:1px solid var(--border);position:sticky;top:0}.site-header-inner{justify-content:space-between;align-items:center;height:64px;display:flex}.brand{color:var(--text);align-items:center;gap:12px;font-family:Space Grotesk,Inter,sans-serif;font-weight:700;text-decoration:none;display:flex}.brand:hover{color:var(--text)}.site-nav{gap:4px;display:flex}.site-nav a{color:var(--muted);border-radius:999px;padding:6px 12px;font-size:.9rem;font-weight:500;text-decoration:none}.site-nav a:hover{color:var(--text);background:var(--surface-2)}@media (width<=480px){.brand>span:last-child{display:none}}.hero{padding-top:96px;padding-bottom:64px}.hero .eyebrow{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;margin-bottom:16px;font-size:.85rem;font-weight:600}.hero h1{margin-bottom:24px;font-size:clamp(2.5rem,7vw,4.25rem)}.hero .lede{max-width:640px;color:var(--muted);margin-bottom:32px;font-size:1.2rem}.links{flex-wrap:wrap;gap:10px;display:flex}.pill{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;align-items:center;padding:8px 16px;font-size:.9rem;font-weight:500;text-decoration:none;transition:border-color .15s,transform .15s;display:inline-flex}.pill:hover{color:var(--text);border-color:var(--accent);transform:translateY(-1px)}.pill-primary{background:var(--accent);border-color:var(--accent);color:#fff}.pill-primary:hover{color:#fff;background:var(--accent-strong);border-color:var(--accent-strong)}@media (prefers-color-scheme:dark){.pill-primary,.pill-primary:hover,.button,.button:hover{color:#0e1116}}.block{padding-top:48px;padding-bottom:48px}.block>h2{margin-bottom:20px;font-size:1.9rem}.block>p{max-width:720px;color:var(--muted)}.toc{flex-wrap:wrap;gap:8px;margin-bottom:40px;padding:0;list-style:none;display:flex}.toc a{background:var(--surface-2);color:var(--text);border-radius:999px;align-items:baseline;gap:8px;padding:6px 14px;font-size:.875rem;font-weight:500;text-decoration:none;display:inline-flex}.toc a span{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.8rem}.toc a:hover{background:var(--accent-soft);color:var(--accent-strong)}.project{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:32px 40px;margin-bottom:24px;padding:36px;display:grid}.project .year{color:var(--accent);letter-spacing:.08em;font-variant-numeric:tabular-nums;margin-bottom:4px;font-size:.8rem;font-weight:600}.project h3{margin-bottom:16px;font-size:1.6rem}.project h4{margin:32px 0 12px;font-size:1.1rem}.project p,.project li{color:var(--muted)}.project p+p{margin-top:1em}.project ul{margin:12px 0 20px;padding-left:1.2em}.project li::marker{color:var(--accent)}.project-media{background:var(--surface-2);border-radius:12px;justify-content:center;align-items:center;display:flex;overflow:hidden}.project-media img{width:100%}.project-detail,.gallery{grid-column:1/-1}.project-detail{border-top:1px solid var(--border);max-width:820px}.project-detail h4:first-child{margin-top:28px}figure.wide{margin:20px 0}figure.wide img{border-radius:12px}figure.wide figcaption{color:var(--muted);margin-top:8px;font-size:.875rem}.gallery{grid-template-columns:2fr 1fr;align-items:start;gap:16px;display:grid}.gallery img{border-radius:12px}.actions{flex-wrap:wrap;gap:10px;margin-top:24px;display:flex}.button{border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;border-radius:10px;align-items:center;padding:9px 18px;font-size:.9rem;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s;display:inline-flex}.button:hover{color:#fff;background:var(--accent-strong);border-color:var(--accent-strong)}.button-ghost,.button-ghost:hover{color:var(--accent);background:0 0}.button-ghost:hover{background:var(--accent-soft)}@media (prefers-color-scheme:dark){.button-ghost,.button-ghost:hover{color:var(--accent)}}@media (width<=800px){.project{grid-template-columns:1fr;padding:24px}.project-media{max-width:420px}.gallery{grid-template-columns:1fr}}.site-footer{border-top:1px solid var(--border);color:var(--muted);text-align:center;padding:40px 0;font-size:.85rem}.cube-container{width:calc(var(--cube-scale) * 24px);height:calc(var(--cube-scale) * 24px);flex-shrink:0;display:inline-block;position:relative}.cube-container .cube{perspective:calc(var(--cube-scale) * 1000px);width:calc(var(--cube-scale) * 12px);height:calc(var(--cube-scale) * 12px);top:calc(var(--cube-scale) * 6px);left:calc(var(--cube-scale) * 6px);position:absolute}.cube-container .cube span{width:100%;height:100%;transform-style:preserve-3d;animation:3s linear infinite spincube;position:absolute}.cube-container .cube i{height:calc(var(--cube-scale) * 12px);width:calc(var(--cube-scale) * 12px);background:var(--cube-bkgd);border:1px solid var(--cube-edge);position:absolute}.cube-container .cube .front{transform:rotateY(0deg) translateZ(calc(var(--cube-scale) * 6px))}.cube-container .cube .back{transform:rotateX(180deg) translateZ(calc(var(--cube-scale) * 6px))}.cube-container .cube .right{transform:rotateY(90deg) translateZ(calc(var(--cube-scale) * 6px))}.cube-container .cube .left{transform:rotateY(-90deg) translateZ(calc(var(--cube-scale) * 6px))}.cube-container .cube .top{transform:rotateX(90deg) translateZ(calc(var(--cube-scale) * 6px))}.cube-container .cube .bottom{transform:rotateX(-90deg) translateZ(calc(var(--cube-scale) * 6px))}@keyframes spincube{0%{transform:rotateX(30deg)rotateY(0)rotate(0)}to{transform:rotateX(30deg)rotateY(360deg)rotate(90deg)}}@media (prefers-reduced-motion:reduce){.cube-container .cube span{animation:none;transform:rotateX(30deg)rotateY(35deg)}html{scroll-behavior:auto}}.sudoku-panel{background:var(--surface-2);border-radius:12px;padding:20px;position:sticky;top:88px}#sudoku table{border:2px solid var(--text);border-collapse:collapse;background-color:var(--surface);margin:0 auto}#sudoku td{border:1px solid var(--border);padding:0}#sudoku table table{border:none;margin:0}#sudoku>table>tbody>tr>td{border:2px solid var(--text)}#sudoku input{text-align:center;width:28px;height:28px;color:var(--text);font:inherit;background:0 0;border:none;font-size:.95rem;font-weight:600;display:block}#sudoku input:focus{outline:2px solid var(--accent);outline-offset:-2px;background:var(--accent-soft)}#sudoku-buttons{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin-top:16px;display:flex}#sudoku-buttons button{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:8px;padding:7px 14px;font-size:.85rem;font-weight:600}#sudoku-buttons button:first-child{background:var(--accent);border-color:var(--accent);color:var(--surface)}#sudoku-buttons button:hover{border-color:var(--accent)}#sudoku-message-container{text-align:center;margin-top:16px}#sudoku-message-container:empty{display:none}#sudoku-message{background:var(--accent-soft);color:var(--accent-strong);border-radius:8px;padding:10px 14px;font-size:.875rem;font-weight:600;display:inline-block}@media (width<=800px){.sudoku-panel{position:static}}@media (width<=380px){#sudoku input{width:24px;height:24px}}
