#root{width:100%;min-height:100vh;color:var(--text);background-color:var(--bg)}.home{width:min(980px,calc(100% - 2.5rem));margin:0 auto;padding:2.75rem 0 2rem}.hero{margin-bottom:1.75rem}.hero h1{margin:0;font-size:clamp(2rem,5vw,3.1rem);letter-spacing:.02em;font-weight:700;display:inline-flex;align-items:center;gap:.85rem}.hero-kicker{margin:.45rem 0 0;color:var(--text-soft);font-size:1.05rem}.reroll-button{padding:.22rem .58rem;border-radius:999px;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase}.intro{display:grid;grid-template-columns:260px 1fr;gap:1.75rem;align-items:start}.portrait{width:100%;border-radius:14px;border:1px solid var(--border);box-shadow:0 10px 30px #0000003d}.intro-copy p{margin:0 0 1rem;line-height:1.72;color:var(--text)}.inline-links{color:var(--text-soft)}.inline-links a{color:var(--text-link);text-decoration:underline;text-underline-offset:3px}.inline-links a:hover{color:var(--text-link-hover)}blockquote{margin:1.2rem 0 0;padding:.85rem 1rem;border-left:3px solid var(--border-strong);background:var(--surface-muted)}blockquote p{margin:0;font-style:italic;color:var(--text-soft)}.site-footer{margin-top:2.2rem;padding-top:1rem;border-top:1px solid var(--border);color:var(--text-soft);font-size:.92rem}@media(max-width:840px){.home{width:min(720px,calc(100% - 1.5rem));padding-top:1.8rem}.intro{grid-template-columns:1fr}.portrait{width:min(290px,100%)}.hero h1{font-size:clamp(1.8rem,9vw,2.5rem);align-items:flex-start;flex-wrap:wrap;gap:.55rem}}[data-theme=dark]{--bg: #0a0a0a;--text: #f5f5f5;--text-soft: #b9b9b9;--text-link: #f5f5f5;--text-link-hover: #ffffff;--surface-muted: #111111;--border: #2f2f2f;--border-strong: #7a7a7a;--card-bg: #151515;--hover-card-bg: #1d1d1d;--text-hover: #ffffff;--button-bg: #191919;--button-text: #f5f5f5;--link: #f5f5f5}[data-theme=light]{--bg: #f5f2ea;--text: #141414;--text-soft: #56514a;--text-link: #141414;--text-link-hover: #000000;--surface-muted: #ece7db;--border: #c8c0b4;--border-strong: #60584c;--card-bg: #f0ece3;--hover-card-bg: #e7e0d3;--text-hover: #000000;--button-bg: #e2dbcf;--button-text: #141414;--link: #141414}.navbar{width:min(980px,calc(100% - 2.5rem));margin:0 auto;padding:1.1rem 0 .75rem;display:flex;justify-content:space-between;align-items:center;gap:.85rem;border-bottom:1px solid var(--border)}.link-group{display:flex;align-items:center;gap:1rem}.right-tray{display:flex;align-items:center;gap:.85rem}.nav-link{font-size:.96rem;color:var(--text-soft);text-decoration:none;transition:color .15s ease}.nav-link:hover,.nav-link.active{color:var(--text)}@media(max-width:840px){.navbar{width:min(720px,calc(100% - 1.5rem));flex-direction:column;align-items:flex-start}.right-tray{width:100%;justify-content:space-between}.link-group{flex-wrap:wrap;row-gap:.5rem}}.theme-switcher{--width: 36px;--height: 36px;display:inline-block;position:relative;width:var(--width);height:var(--height)}.theme-switcher input{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;opacity:0;cursor:pointer;z-index:3}.theme-switcher .track{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:1px solid var(--border);background:var(--surface-muted);transition:border-color .18s ease,background-color .18s ease;display:flex;align-items:center;justify-content:center;padding:0}.theme-switcher .icons{position:relative;display:flex;align-items:center;justify-content:center;pointer-events:none}.theme-switcher .icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;transition:opacity .18s ease,color .18s ease;position:absolute}.theme-switcher.light .icon.sun{color:#995f00;opacity:1}.theme-switcher.light .icon.moon,.theme-switcher.dark .icon.sun{opacity:0}.theme-switcher.dark .icon.moon{color:var(--text);opacity:1}.theme-switcher .knob{display:none}.theme-switcher input:focus~.track{outline:2px solid var(--border-strong);outline-offset:2px}.theme-switcher .track:hover{border-color:var(--border-strong)}.theme-switcher svg{display:block}@media(prefers-reduced-motion:reduce){.theme-switcher .icon,.theme-switcher .track{transition:none}}:root{font-family:IBM Plex Mono,SFMono-Regular,Menlo,Consolas,monospace;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--text-link);text-decoration:inherit}a:hover{color:var(--text-link-hover)}body{margin:0;min-width:320px;min-height:100vh;color:var(--text);background-color:var(--bg)}h1{font-size:3em;line-height:1.1}h2{margin-top:0rem;margin-bottom:0rem}button{border-radius:8px;border:1px solid var(--border);padding:.6em 1.2em;font-size:1em;font-weight:400;font-family:inherit;color:var(--button-text);background-color:var(--button-bg);cursor:pointer;transition:border-color .2s ease,background-color .2s ease}button:hover{border-color:var(--border-strong);background-color:var(--hover-card-bg)}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}input,select{font-family:inherit;font-size:16px}.about-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem}.social-links{display:flex;gap:1rem;margin-top:1rem}.projects-page{width:min(980px,calc(100% - 2.5rem));margin:0 auto;padding:2rem 0 2.5rem}.eyebrow{margin:0;font-size:.78rem;letter-spacing:.12em;color:var(--text-soft)}.header{margin-top:.35rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.header h1{margin:0;font-size:clamp(1.95rem,4vw,2.5rem)}.view-switcher{display:inline-flex;border:1px solid var(--border);border-radius:999px;overflow:hidden}.view-switcher button{border:0;border-right:1px solid var(--border);border-radius:0;padding:.4rem .8rem;background:transparent;color:var(--text-soft);font-size:.86rem}.view-switcher button:last-child{border-right:0}.view-switcher button.active{background:var(--surface-muted);color:var(--text)}.projects-container{margin-top:1.15rem;width:100%}.projects-container.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}.projects-container.list{display:flex;flex-direction:column;gap:.7rem}.project-count{margin:.95rem 0 0;font-size:.82rem;color:var(--text-soft)}@media(max-width:840px){.projects-page{width:min(720px,calc(100% - 1.5rem))}.header{flex-direction:column;align-items:flex-start}.projects-container.grid{grid-template-columns:1fr}}.project-card{display:block;border:1px solid var(--border);border-radius:12px;background:var(--surface-muted);padding:.95rem 1rem;text-decoration:none;transition:border-color .16s ease,transform .16s ease,background-color .16s ease}.project-card:hover{border-color:var(--border-strong);background:var(--card-bg);transform:translateY(-2px)}.project-card .meta{font-size:.72rem;letter-spacing:.11em;text-transform:uppercase;color:var(--text-soft)}.project-card .name{margin:.3rem 0 0;font-size:1.14rem;font-weight:500;color:var(--text);line-height:1.35}.project-card .description{margin:.55rem 0 0;color:var(--text-soft);line-height:1.55}.project-card .date{margin:.7rem 0 0;font-size:.8rem;color:var(--text-soft)}.project-card.list{padding:.9rem 1rem}.project-card.grid{min-height:170px}.game-of-life-container{--background-color-board: black;--alive-color: white;--alive-hover-color: red;--border-color: rgb(0, 0, 0);--cell-size: 8px;line-height:1.5;font-weight:400;margin:0;display:flex;flex-direction:column;place-items:center;min-width:320px;min-height:100vh;color:var(--text);text-align:center;color-scheme:light dark;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.game-of-life-container a{font-weight:500;color:#646cff;text-decoration:inherit}.game-of-life-container a:hover{color:#535bf2}.game-of-life-container h1{font-size:3.2em;line-height:1.1}.game-of-life-container button{border-radius:8px;border:1px solid var(--border);padding:.6em 1.2em;font-size:1em;font-weight:400;color:var(--button-text);background-color:var(--button-bg);cursor:pointer;transition:border-color .2s ease,background-color .2s ease}.game-of-life-container button:hover{border-color:var(--border-strong);background-color:var(--hover-card-bg)}.game-of-life-container button:focus,.game-of-life-container button:focus-visible{outline:4px auto -webkit-focus-ring-color}.game-of-life-container table{margin:0 auto 20px;border-collapse:collapse;background-color:var(--background-color-board)}.game-of-life-container td{width:var(--cell-size);height:var(--cell-size);border:1px solid var(--border-color)}.game-of-life-container .alive{background-color:var(--alive-color)}.game-of-life-container .alive:hover{background-color:var(--alive-hover-color)}.game-of-life-container .dead:hover{background-color:var(--border-color)}.game-of-life-container .flexRow{display:flex;flex-flow:row wrap;justify-content:center;margin:.5rem auto;align-items:center;gap:.5rem}.game-of-life-container .upperControls,.game-of-life-container .middleControls,.game-of-life-container .lowerControls{width:100%;max-width:360px;display:flex;justify-content:center;gap:.5rem;align-items:center;margin:.25rem auto}.game-of-life-container .upperControls{flex-direction:column}.game-of-life-container .upperControls .gol-slider{display:flex;align-content:space-around;align-items:center;flex-direction:row;justify-content:space-around}.game-of-life-container .upperControls .gol-slider .left-sign{margin-top:0;font-weight:400;font-size:32px}.game-of-life-container .upperControls .gol-slider .right-sign{margin-top:-6px;font-weight:900;font-size:32px}.game-of-life-layout{width:min(1120px,calc(100% - 1.5rem));display:flex;flex-direction:column;align-items:center;gap:1rem}.game-of-life-controls{width:100%;order:2;text-align:center}.game-of-life-board{display:flex;justify-content:center;align-items:flex-start;width:100%;order:1}.game-of-life-container .gol-slider{display:inline-flex;align-items:center;justify-content:center;gap:.45rem}.game-of-life-container .speed-controls{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem}.game-of-life-container .speed-readout{font-size:.85rem;color:var(--text-soft)}.game-of-life-container .speed-adjust-btn{width:2.2rem;min-width:2.2rem;height:2.2rem;padding:0;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:1.18rem;line-height:1;font-weight:700}.game-of-life-container .speed-adjust-btn:active{transform:translateY(1px) scale(.98)}.game-of-life-container .speed-adjust-btn:disabled{opacity:.45;cursor:not-allowed}@media(min-width:981px){.game-of-life-layout{display:grid;grid-template-columns:1fr 360px;grid-auto-rows:min-content;align-items:start;gap:1.25rem}.game-of-life-controls{grid-column:2;grid-row:1;order:0;position:sticky;top:1rem;text-align:center;align-self:start}.game-of-life-board{grid-column:1;grid-row:1;order:0;align-self:start}.game-of-life-board table{margin-top:0}.game-of-life-container .upperControls,.game-of-life-container .middleControls,.game-of-life-container .lowerControls{max-width:100%;justify-content:center}}[data-theme=dark] .game-of-life-container{--background-color-board: #000000;--alive-color: #ffffff;--alive-hover-color: #ff5959;--border-color: #0f0f0f}[data-theme=light] .game-of-life-container{--background-color-board: #f8f6ef;--alive-color: #141414;--alive-hover-color: #a4462c;--border-color: #d7d0c3}.pm-container{max-width:820px;margin:12px auto;color:var(--text)}.pm-controls{display:flex;gap:16px;align-items:center;margin-bottom:12px}.pm-diets{border:1px solid var(--border, #ddd);padding:8px;border-radius:6px}.pm-checkbox{display:block;margin:4px 0;font-size:14px}.pm-info{min-width:200px}.pm-result{font-weight:700;margin-top:8px}.pm-wheel-wrap{display:flex;justify-content:center}.pm-wheel{position:relative;width:348px;text-align:center;--pm-wheel-bg: var(--surface-muted);--pm-wheel-stroke: var(--border-strong);--pm-slice-a: #2a2a2a;--pm-slice-b: #1a1a1a;--pm-label-color: #f4f4f4}.pm-arrow{position:absolute;left:50%;transform:translate(-50%);top:-8px;font-size:16px;color:var(--text);text-shadow:none;pointer-events:none}.pm-svg{display:block;margin:20px auto;touch-action:none;-webkit-user-select:none;user-select:none}.pm-actions{margin-top:8px}.pm-spin-btn{padding:8px 16px;background:var(--button-bg);color:var(--button-text);border:1px solid var(--border);border-radius:6px;cursor:pointer;font-weight:500}.pm-spin-btn:hover{border-color:var(--border-strong);background:var(--hover-card-bg)}.pm-spin-btn:disabled{opacity:.5;cursor:not-allowed}[data-theme=light] .pm-wheel{--pm-wheel-bg: #f8f3e8;--pm-wheel-stroke: #8b8173;--pm-slice-a: #e6dece;--pm-slice-b: #d9cfbc;--pm-label-color: #141414}.compound-calculator{max-width:1000px;margin:0 auto;color:var(--text)}.cc-title{margin-top:8px;margin-bottom:8px}.cc-controls{display:grid;gap:8px;grid-template-columns:1fr 1fr;max-width:900px}.cc-field{display:flex;flex-direction:column;gap:6px}.cc-label{font-size:1rem;color:var(--text)}.cc-input,.cc-select{padding:8px 10px;border-radius:6px;border:1px solid rgba(0,0,0,.08);background:var(--card-bg);color:var(--text)}.cc-input-row{display:flex;flex-direction:column;align-items:flex-start;gap:8px}@media(max-width:768px){.cc-controls{grid-template-columns:1fr}.cc-input-row{flex-direction:column}.compound-calculator{padding-left:12px;padding-right:12px}}.cc-action{display:flex;flex-direction:column;align-items:flex-start;gap:12px}.cc-preview{color:var(--text)}.cc-run-button{padding:8px 14px;border-radius:8px;border:1px solid transparent;background:var(--button-bg);color:var(--button-text);cursor:pointer;font-weight:600}.cc-run-button:hover{filter:brightness(.95)}.compound-calculator table{width:100%;border-collapse:collapse;color:var(--text)}.compound-calculator th,.compound-calculator td{padding:6px;border-bottom:1px solid rgba(0,0,0,.04)}[data-theme=dark] .cc-input,[data-theme=dark] .cc-select{background:var(--card-bg);border:1px solid rgba(255,255,255,.06);color:var(--link)}[data-theme=dark] .cc-run-button{background:var(--button-bg);color:var(--button-text)}[data-theme=light] .cc-input,[data-theme=light] .cc-select{background:var(--card-bg);border:1px solid rgba(0,0,0,.06);color:var(--link)}[data-theme=light] .cc-run-button{background:var(--button-bg);color:var(--button-text)}.car-loan-calculator{max-width:1000px;margin:0 auto;padding:12px;color:var(--text)}.cl-title{margin:8px 0}.cl-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.cl-field{display:flex;flex-direction:column;gap:6px}.cl-label{font-size:.95rem}.cl-input{padding:8px 10px;border-radius:6px;border:1px solid rgba(0,0,0,.08);background:var(--card-bg);color:var(--text)}.cl-summary{margin-top:14px;display:flex;flex-wrap:wrap;gap:14px}.cl-section{margin-top:20px}.cl-section-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.cl-section-header h3{margin:0}.cl-toggle-button{padding:6px 10px;border-radius:6px;border:1px solid rgba(0,0,0,.12);background:var(--button-bg);color:var(--button-text);cursor:pointer;font-weight:600}.cl-toggle-button:hover{filter:brightness(.95)}.cl-table-wrap{overflow-x:auto;border:1px solid rgba(0,0,0,.06);border-radius:8px;background:var(--card-bg)}.cl-table-wrap table{width:100%;border-collapse:collapse}.cl-table-wrap th,.cl-table-wrap td{padding:8px;text-align:right;border-bottom:1px solid rgba(0,0,0,.06)}.cl-table-wrap th:first-child,.cl-table-wrap td:first-child{text-align:left}.cl-detail-controls{margin-bottom:8px;max-width:220px}.cl-note{margin:0 0 10px;color:var(--text);opacity:.9}.cl-daily-table-wrap{max-height:360px;overflow:auto}[data-theme=dark] .cl-input{border:1px solid rgba(255,255,255,.08)}[data-theme=dark] .cl-toggle-button{border:1px solid rgba(255,255,255,.12)}@media(max-width:860px){.cl-controls{grid-template-columns:1fr}.cl-section-header{flex-direction:column;align-items:flex-start}}.login-container{max-width:420px;margin:48px auto;padding:32px;background:var(--card-bg);border-radius:12px;box-shadow:0 8px 24px #10182814;display:flex;flex-direction:column;gap:16px;align-items:stretch}.login-container h1{margin:0 0 4px;font-size:1.25rem;font-weight:600;color:var(--text);text-align:center}.username-input,.password-input{height:44px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:.95rem;color:var(--text);background:var(--card-bg);transition:box-shadow .16s ease,border-color .16s ease,transform .12s ease;outline:none;box-sizing:border-box}.username-input::placeholder,.password-input::placeholder{color:#98a0b3;opacity:1}.username-input:focus,.password-input:focus{border-color:var(--text-hover);box-shadow:0 6px 18px #4f46e514}.username-input[disabled],.password-input[disabled]{background:var(--hover-card-bg);color:var(--text)}.login-button{height:48px;padding:0 16px;border:none;border-radius:10px;background:linear-gradient(180deg,var(--text-hover) 0%,var(--text-hover) 100%);color:var(--card-bg);font-weight:600;font-size:.98rem;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,opacity .12s ease;box-shadow:0 6px 18px #4f46e529}.login-button:hover{transform:translateY(-2px);box-shadow:0 10px 30px #4f46e52e}.login-button:active{transform:translateY(0);opacity:.95}.login-button:disabled{background:#c7c8d9;cursor:not-allowed;box-shadow:none}@media(max-width:520px){.login-container{margin:24px;padding:20px;border-radius:10px}.login-container h1{font-size:1.05rem}}.experience-page{width:min(980px,calc(100% - 2.5rem));margin:0 auto;padding:2rem 0 2.5rem}.experience-page h1{margin:0;font-size:clamp(1.9rem,4.5vw,2.6rem)}.experience-intro{margin:.6rem 0 1.6rem;color:var(--text-soft);max-width:75ch}.experience-list{display:flex;flex-direction:column;gap:1rem}.experience-item{border:1px solid var(--border);background:var(--surface-muted);border-radius:12px;padding:1rem 1.1rem}.experience-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.7rem;margin-bottom:.7rem}.experience-head h2{margin:0;font-size:1.1rem}.experience-head p{margin:0;color:var(--text-soft);font-size:.92rem}.experience-item ul{margin:0;padding-left:1.25rem;display:flex;flex-direction:column;gap:.52rem}.experience-item li{line-height:1.55}@media(max-width:840px){.experience-page{width:min(720px,calc(100% - 1.5rem))}}.contact-page{width:min(980px,calc(100% - 2.5rem));margin:0 auto;padding:2rem 0 2.5rem}.contact-page h1{margin:0;font-size:clamp(1.9rem,4.5vw,2.6rem)}.contact-intro{margin:.6rem 0 1.6rem;color:var(--text-soft);max-width:70ch}.contact-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.contact-card{border:1px solid var(--border);background:var(--surface-muted);border-radius:12px;padding:1rem 1.1rem}.contact-card h2{margin:0 0 .45rem;font-size:1.02rem}.contact-card p{margin:0 0 .7rem;color:var(--text-soft);line-height:1.5}.contact-card a{color:var(--text-link);text-decoration:underline;text-underline-offset:3px;word-break:break-word}.contact-card a:hover{color:var(--text-link-hover)}@media(max-width:840px){.contact-page{width:min(720px,calc(100% - 1.5rem))}.contact-grid{grid-template-columns:1fr}}
