@font-face{font-family:Courier Prime;src:url(/fonts/CourierPrime-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Courier Prime;src:url(/fonts/CourierPrime-Italic.ttf) format("truetype");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Courier Prime;src:url(/fonts/CourierPrime-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Courier Prime;src:url(/fonts/CourierPrime-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:Plus Jakarta Sans;src:url(/fonts/PlusJakartaSans-VariableFont_wght.ttf) format("truetype");font-weight:200 800;font-style:normal;font-display:swap}@font-face{font-family:Plus Jakarta Sans;src:url(/fonts/PlusJakartaSans-Italic-VariableFont_wght.ttf) format("truetype");font-weight:200 800;font-style:italic;font-display:swap}:root{--paper: #e7edd8;--paper-card: #ffffff;--ink: #282831;--ink-soft: #565663;--ink-faint: #111116;--rule: rgba(40, 40, 49, .18);--denim-light: #7496cd;--denim: #3863a2;--denim-dark: #1c365d;--mustard-light: #f3d488;--mustard: #e9ba48;--mustard-dark: #a67f22;--tomato-light: #f28b7a;--tomato: #e75640;--tomato-dark: #9c2b18;--sky-light: #c4dff2;--sky: #8dbdde;--sky-dark: #4f80a6;--coral-light: #f1978d;--coral: #e76356;--coral-dark: #9f3226;--charcoal-light: #565663;--charcoal: #282831;--charcoal-dark: #111116;--forest-light: #528c66;--forest: #235433;--forest-dark: #0f2c19;--steel-light: #a6b8d4;--steel: #7187aa;--steel-dark: #3e506e;--pine-light: #73968e;--pine: #425f58;--pine-dark: #1f332e;--burnt-light: #e69675;--burnt: #d15d33;--burnt-dark: #8c3616;--bg: var(--paper);--fg1: var(--ink);--fg2: var(--ink-soft);--fg3: #8a8a92;--link: var(--ink);--link-hover: var(--denim);--accent: var(--denim);--accent-warm: var(--mustard);--accent-alert: var(--tomato);--selection-bg: var(--mustard-light);--selection-fg: var(--ink);--font-mono: "Courier Prime", "Courier New", Courier, monospace;--font-sans: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--t-xs: 12px;--t-sm: 14px;--t-base: 16px;--t-md: 17px;--t-lg: 20px;--t-xl: 24px;--t-2xl: 32px;--t-3xl: 44px;--t-4xl: 56px;--t-5xl: 72px;--lh-tight: 1.15;--lh-snug: 1.35;--lh-base: 1.6;--lh-loose: 1.75;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--s-8: 64px;--s-9: 96px;--s-10: 128px;--canvas: 960px;--canvas-wide: 1600px;--canvas-narrow: 640px;--gutter: var(--s-5);--rail: var(--s-7);--r-0: 0;--r-1: 2px;--r-full: 999px;--shadow-1: 0 1px 0 rgba(40, 40, 49, .12);--shadow-2: 0 4px 12px rgba(40, 40, 49, .1);--shadow-inset: inset 0 0 0 1px rgba(40, 40, 49, .08);--ease-out: cubic-bezier(.2, .8, .2, 1);--ease-in: cubic-bezier(.6, 0, .4, .2);--dur-1: .12s;--dur-2: .18s;--dur-3: .32s;--dur-4: .6s;--bento-gap: 12px;--bento-pad: 18px;--bento-card-radius: 14px;--bento-shadow-rest: 4px 4px 0 var(--ink);--bento-shadow-hover: 7px 7px 0 var(--ink)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-family:var(--font-mono);color:var(--fg1);background:var(--bg);font-size:var(--t-base);line-height:var(--lh-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh;background:var(--bg)}::selection{background:var(--selection-bg);color:var(--selection-fg)}h1,.h1{font-family:var(--font-mono);font-weight:700;font-size:var(--t-4xl);line-height:var(--lh-tight);letter-spacing:-.02em;margin:0 0 var(--s-5)}h2,.h2{font-family:var(--font-mono);font-weight:700;font-size:var(--t-2xl);line-height:var(--lh-snug);letter-spacing:-.01em;margin:var(--s-7) 0 var(--s-4)}h3,.h3{font-family:var(--font-sans);font-weight:600;font-size:var(--t-lg);line-height:var(--lh-snug);letter-spacing:-.01em;margin:var(--s-6) 0 var(--s-3)}h4,.h4{font-family:var(--font-mono);font-weight:700;font-size:var(--t-md);margin:var(--s-5) 0 var(--s-2)}p{margin:0 0 var(--s-4);text-wrap:pretty}a{color:var(--link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;transition:color var(--dur-2) var(--ease-out),text-decoration-thickness var(--dur-2) var(--ease-out)}a:hover{color:var(--link-hover);text-decoration-thickness:2px}button{font-family:inherit;cursor:pointer}img{display:block;max-width:100%}ul,ol{list-style:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:var(--dur-1)!important;transition-property:opacity!important}}.filler-cell{width:100%;height:100%;border:2px solid var(--ink);border-radius:var(--bento-card-radius);box-sizing:border-box;overflow:hidden}.filler-cell--striped{background:repeating-linear-gradient(45deg,var(--steel-light) 0px,var(--steel-light) 12px,transparent 12px,transparent 24px)}.filler-cell--solid{background:#4c7571}.bento-grid{display:grid;grid-template-columns:repeat(var(--bento-cols),1fr);grid-auto-rows:100px;gap:var(--bento-gap);margin:0 auto;width:100%;flex:1;min-height:0}.bento-grid__cell{min-width:0;min-height:0;opacity:0;transition:opacity 1s var(--ease-out)}.bento-grid__cell--visible{opacity:1}.link-arrow{position:absolute;top:12px;right:12px;width:14px;height:14px;opacity:.5;transition:transform .4s var(--ease-out),opacity .2s var(--ease-out);z-index:3}.link-arrow img{width:100%;height:100%;display:block}.bento-card:hover .link-arrow{opacity:1;transform:rotate(720deg)}.bento-card-link{display:contents;text-decoration:none;color:inherit}.bento-card{position:relative;width:100%;height:100%;background:var(--card-bg);color:var(--card-color);border:2px solid var(--ink);border-radius:var(--bento-card-radius);box-shadow:var(--bento-shadow-rest);padding:var(--bento-pad);box-sizing:border-box;font-family:var(--font-mono);overflow:hidden;display:flex;flex-direction:column;transform:translate(0);transition:transform .2s var(--ease-out),box-shadow .2s var(--ease-out)}.bento-card:hover{transform:translate(-2px,-2px);box-shadow:var(--bento-shadow-hover)}.bento-card__kicker{font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;margin-bottom:10px;opacity:.85}.bento-card__body{flex:1;min-height:0;display:flex;flex-direction:column}.hero-card__layout{display:flex;gap:14px;align-items:flex-start;min-height:0;margin-top:auto;margin-bottom:auto}.hero-card__avatar{width:62px;height:62px;border-radius:999px;border:2px solid var(--ink);background:var(--mustard);box-shadow:none;display:flex;align-items:center;justify-content:center;flex-shrink:0;transform-origin:top left;transition:transform .3s var(--ease-out);z-index:5;position:relative}.hero-card__avatar:hover{transform:scale(4)}.bento-card:has(.hero-card__avatar:hover){overflow:visible}.bento-grid__cell:has(.hero-card__avatar:hover){z-index:20}.hero-card__avatar-img{width:100%;height:100%;object-fit:cover;border-radius:999px}.hero-card__name{font-family:var(--font-sans);font-size:30px;font-weight:700;letter-spacing:-.03em;line-height:1.02;margin-bottom:6px}.hero-card__bio{font-family:var(--font-sans);font-size:13px;font-weight:400;line-height:1.5;letter-spacing:-.005em}.hero-card__actions{display:flex;gap:8px;margin-top:auto;flex-wrap:wrap;padding-top:10px}.hero-card__btn{font-family:var(--font-sans);font-size:11px;font-weight:700;border:2px solid var(--ink);border-radius:8px;padding:6px 12px;cursor:pointer;box-shadow:2px 2px 0 var(--ink);letter-spacing:.01em}.hero-card__btn--primary{background:var(--ink);color:#fff}.hero-card__btn--ghost{background:#fff;color:var(--ink)}.writing-card__desc{font-family:var(--font-sans);font-size:12px;font-weight:400;line-height:1.55;letter-spacing:-.005em}.writing-card__footer{font-family:var(--font-mono);font-size:11px;margin-top:auto;padding-top:10px;opacity:.85;text-decoration:underline}.train-card__subtitle{font-family:var(--font-sans);font-size:12px;font-weight:500;opacity:.92;margin-bottom:8px;letter-spacing:-.005em}.train-card__time{font-family:var(--font-mono);font-size:56px;font-weight:700;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}.train-card__late{font-size:18px;opacity:.75;margin-left:4px}.train-card__route{font-family:var(--font-sans);font-size:13px;font-weight:600;margin-top:10px;letter-spacing:-.01em}.train-card__eta{font-family:var(--font-sans);font-size:11px;font-weight:400;opacity:.85;margin-top:4px}.train-card__source{font-family:var(--font-mono);font-size:10px;opacity:.7;margin-top:auto;border-top:1px dashed rgba(255,255,255,.4);padding-top:8px}.photos-card__icon{font-size:44px;line-height:1;margin-bottom:8px}.photos-card__heading{font-family:var(--font-sans);font-size:22px;font-weight:700;line-height:1.05;margin-bottom:8px;letter-spacing:-.03em}.photos-card__link{font-family:var(--font-mono);font-size:11px;margin-top:auto;padding-top:10px;opacity:.85}.socials-card__row{display:flex;justify-content:space-between;align-items:center;padding:7px 0;text-decoration:none;color:inherit}.socials-card__row+.socials-card__row{border-top:1px solid rgba(40,40,49,.15)}.socials-card__label{font-family:var(--font-sans);font-weight:700;font-size:12px;letter-spacing:-.005em}.socials-card__arrow{width:10px;height:10px;opacity:.4;transition:transform .4s var(--ease-out),opacity .2s var(--ease-out)}.socials-card__row:hover .socials-card__arrow{opacity:1;transform:rotate(720deg)}.site-info-card__row{display:flex;justify-content:space-between;border-bottom:1px dashed rgba(40,40,49,.22);padding:5px 0;align-items:baseline}.site-info-card__row:last-child{border-bottom:none}.site-info-card__label{font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:-.005em}.site-info-card__value{font-family:var(--font-mono);font-size:11px;font-variant-numeric:tabular-nums}.lang-card{cursor:pointer;-webkit-user-select:none;user-select:none}.lang-card__body{display:flex;flex-direction:column;align-items:flex-start;flex:1}.lang-card__code{font-family:var(--font-mono);font-size:32px;font-weight:700;letter-spacing:-.03em;line-height:1;transition:opacity .18s var(--ease-out),transform .18s var(--ease-out)}.lang-card__code--exit{opacity:0;transform:translateY(-4px)}.lang-card__name{font-family:var(--font-sans);font-size:11px;font-weight:500;opacity:.7;margin-top:6px;transition:opacity .18s var(--ease-out)}.lang-card__name--exit{opacity:0}.reading-card{position:relative;padding:0!important}.reading-card .bento-card__kicker{position:absolute;top:14px;left:14px;z-index:2}.reading-card .bento-card__body{position:relative;overflow:hidden;border-radius:calc(var(--bento-card-radius) - 2px)}.reading-card__image{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.reading-card__image img{width:100%;height:100%;object-fit:cover;object-position:top center}.reading-card__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--mustard);opacity:.45;transition:opacity .3s var(--ease-out);z-index:1}.reading-card:hover .reading-card__overlay{opacity:0}.reading-card__info{position:absolute;bottom:0;left:0;right:0;padding:24px 14px 10px;background:linear-gradient(transparent,#00000080);z-index:2;color:var(--paper)}.reading-card__title{font-family:var(--font-sans);font-weight:700;font-size:13px;letter-spacing:-.01em;white-space:nowrap;overflow:hidden}.reading-card__title-text{display:inline-block}.reading-card__author{font-family:var(--font-sans);font-size:11px;font-weight:400;opacity:.85;margin-top:2px}@keyframes reading-scroll{0%,20%{transform:translate(0)}80%,to{transform:translate(calc(-100% + 100cqw - 28px))}}.reading-card__title--overflow .reading-card__title-text{animation:reading-scroll 6s linear infinite alternate}.kitchen-card{position:relative;padding:0!important}.kitchen-card .bento-card__kicker{position:absolute;top:14px;left:14px;z-index:2}.kitchen-card .bento-card__body{position:relative;overflow:hidden;border-radius:calc(var(--bento-card-radius) - 2px)}.kitchen-card__image{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.kitchen-card__image img{width:100%;height:100%;object-fit:cover;object-position:top center}.kitchen-card__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--burnt);opacity:.45;transition:opacity .3s var(--ease-out);z-index:1}.kitchen-card:hover .kitchen-card__overlay{opacity:0}.kitchen-card__label{position:absolute;bottom:0;left:0;right:0;padding:24px 14px 12px;background:linear-gradient(transparent,#00000080);z-index:2;font-family:var(--font-sans);font-size:14px;font-weight:700;letter-spacing:-.01em;color:var(--paper);white-space:nowrap;overflow:hidden}.kitchen-card__label-text{display:inline-block}.work-card__icon{font-family:var(--font-mono);font-size:22px;font-weight:700;letter-spacing:-.04em;line-height:1;margin-bottom:6px}.work-card__title{font-family:var(--font-sans);font-weight:700;font-size:13px;letter-spacing:-.01em;line-height:1.2}.work-card__subtitle{font-family:var(--font-sans);font-size:11px;font-weight:400;opacity:.75;margin-top:1px;letter-spacing:-.005em}.work-card__stack{font-family:var(--font-mono);font-size:11px;opacity:.85;margin-top:4px}.clock-card__time{font-family:var(--font-mono);font-size:38px;font-weight:700;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}.clock-card__seconds{opacity:.35}.clock-card__date{font-family:var(--font-sans);font-size:11px;font-weight:500;margin-top:6px;opacity:.7;letter-spacing:.01em}.wi{overflow:visible}.wi--sunny .wi__rays{transform-origin:24px 24px;transition:transform .6s var(--ease-out)}.weather-card__icon:hover .wi--sunny .wi__rays{animation:wi-spin 4s linear infinite}@keyframes wi-spin{to{transform:rotate(360deg)}}.wi--partly-cloudy .wi__cloud{transition:transform .4s var(--ease-out)}.wi--partly-cloudy .wi__sun{transform-origin:18px 18px}.weather-card__icon:hover .wi--partly-cloudy .wi__cloud{animation:wi-drift 2s ease-in-out infinite alternate}.weather-card__icon:hover .wi--partly-cloudy .wi__sun{animation:wi-spin 6s linear infinite}.wi--overcast .wi__cloud{transition:transform .4s var(--ease-out)}.weather-card__icon:hover .wi--overcast .wi__cloud--back{animation:wi-drift 1.5s ease-in-out infinite alternate}.weather-card__icon:hover .wi--overcast .wi__cloud--mid{animation:wi-drift 2s ease-in-out infinite alternate-reverse}.weather-card__icon:hover .wi--overcast .wi__cloud--front{animation:wi-drift 2.5s ease-in-out infinite alternate}@keyframes wi-drift{0%{transform:translate(-5px)}to{transform:translate(5px)}}.weather-card__icon:hover .wi--drizzle .wi__cloud--back{animation:wi-drift 1.8s ease-in-out infinite alternate-reverse}.weather-card__icon:hover .wi--drizzle .wi__cloud--front{animation:wi-drift 2.5s ease-in-out infinite alternate}.wi--rain .wi__drop,.wi--drizzle .wi__drop{opacity:1;transition:opacity .2s}.weather-card__icon:hover .wi--rain .wi__drop,.weather-card__icon:hover .wi--drizzle .wi__drop{animation:wi-fall .8s ease-in infinite}.wi__drop--1{animation-delay:0s!important}.wi__drop--2{animation-delay:.25s!important}.wi__drop--3{animation-delay:.5s!important}@keyframes wi-fall{0%{transform:translateY(0);opacity:1}80%{opacity:1}to{transform:translateY(8px);opacity:0}}.wi--thunder .wi__bolt{opacity:1}.weather-card__icon:hover .wi--thunder .wi__bolt{animation:wi-flicker .6s step-end infinite}.weather-card__icon:hover .wi--thunder .wi__cloud{animation:wi-drift 2s ease-in-out infinite alternate}@keyframes wi-flicker{0%{opacity:1}10%{opacity:0}20%{opacity:1}30%{opacity:0}40%{opacity:1}to{opacity:1}}.wi--snow .wi__flake{opacity:1}.weather-card__icon:hover .wi--snow .wi__flake{animation:wi-snowfall 1.5s ease-in-out infinite}.wi__flake--1{animation-delay:0s!important}.wi__flake--2{animation-delay:.4s!important}.wi__flake--3{animation-delay:.8s!important}@keyframes wi-snowfall{0%{transform:translate(0) rotate(0);opacity:1}50%{transform:translate(2px,4px) rotate(30deg);opacity:.8}to{transform:translate(-1px,8px) rotate(-10deg);opacity:0}}.wi--fog .wi__fog-line{transition:transform .4s var(--ease-out)}.weather-card__icon:hover .wi--fog .wi__fog-line--1{animation:wi-fog-drift-1 2.5s ease-in-out infinite alternate}.weather-card__icon:hover .wi--fog .wi__fog-line--2{animation:wi-fog-drift-2 3s ease-in-out infinite alternate}.weather-card__icon:hover .wi--fog .wi__fog-line--3{animation:wi-fog-drift-1 3.5s ease-in-out infinite alternate-reverse}@keyframes wi-fog-drift-1{0%{transform:translate(-3px);opacity:.6}to{transform:translate(3px);opacity:1}}@keyframes wi-fog-drift-2{0%{transform:translate(2px);opacity:1}to{transform:translate(-4px);opacity:.7}}.weather-card__icon{width:140px;height:140px;flex-shrink:0;align-self:center}.weather-card__info{margin-top:auto}.weather-card__temp{font-family:var(--font-mono);font-size:42px;font-weight:700;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}.weather-card__desc{font-family:var(--font-sans);font-size:12px;font-weight:500;line-height:1.3;margin-top:4px}.weather-card__forecast{margin-top:10px;border-top:1px solid currentColor;padding-top:8px;opacity:.85;display:flex;flex-direction:column;gap:4px}.weather-card__forecast-row{display:flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:11px;font-weight:700}.weather-card__forecast-day{width:28px;text-transform:uppercase;letter-spacing:.05em}.weather-card__forecast-icon{width:20px;height:20px;flex-shrink:0}.weather-card__forecast-temps{font-variant-numeric:tabular-nums;margin-left:auto}.music-card{position:relative;padding:0!important}.music-card .bento-card__kicker{position:absolute;top:14px;left:14px;z-index:2}.music-card .bento-card__body{position:relative;overflow:hidden;border-radius:calc(var(--bento-card-radius) - 2px)}.music-card__image{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.music-card__image img{width:100%;height:100%;object-fit:cover;object-position:top center}.music-card__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--steel);opacity:.45;transition:opacity .3s var(--ease-out);z-index:1}.music-card:hover .music-card__overlay{opacity:0}.music-card__info{position:absolute;bottom:0;left:0;right:0;padding:24px 14px 10px;background:linear-gradient(transparent,#00000080);z-index:2;color:var(--paper)}.music-card__track{font-family:var(--font-sans);font-size:13px;font-weight:700;letter-spacing:-.01em;white-space:nowrap;overflow:hidden}.music-card__track-text{display:inline-block}.music-card__album{font-family:var(--font-sans);font-size:11px;font-weight:400;opacity:.85;margin-top:2px}@keyframes music-scroll{0%,20%{transform:translate(0)}80%,to{transform:translate(calc(-100% + 100cqw - 28px))}}.music-card__track--overflow .music-card__track-text{animation:music-scroll 6s linear infinite alternate}body{background-color:var(--paper);background-image:radial-gradient(circle,var(--ink) .8px,transparent .8px);background-size:22px 22px}.app{min-height:100vh;padding:var(--s-5);box-sizing:border-box;display:flex;flex-direction:column}@media(min-width:1700px){.app{zoom:1.15}}@media(min-width:2000px){.app{zoom:1.35}}@media(min-width:2400px){.app{zoom:1.55}}.app-inner{max-width:var(--canvas-wide);margin:0 auto;width:100%;flex:1;display:flex;flex-direction:column;min-height:0}.app-footer{position:sticky;bottom:0;z-index:10;display:flex;justify-content:center;padding-top:var(--s-3);padding-bottom:var(--s-3);flex-shrink:0}.app-reshuffle{font-family:var(--font-mono);font-size:13px;font-weight:700;color:var(--ink);background:var(--paper-card);border:2px solid var(--ink);border-radius:var(--r-full);padding:var(--s-2) var(--s-5);box-shadow:2px 2px 0 var(--ink);letter-spacing:.02em;cursor:pointer;transition:transform .2s var(--ease-out),box-shadow .2s var(--ease-out)}.app-reshuffle:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}.app-reshuffle:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--ink)}
