@charset "UTF-8";:root{--color-bg:#0f1419;--color-surface:#1a1f29;--color-surface-elevated:#232936;--color-border:#2d3748;--color-text-primary:#e2e8f0;--color-text-secondary:#94a3b8;--color-text-tertiary:#64748b;--color-accent:#3b82f6;--color-accent-hover:#2563eb;--color-success:#10b981;--color-warning:#f59e0b;--color-error:#ef4444;--font-body:Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif;--font-heading:Space Grotesk, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif;--spacing-1:0.25rem;--spacing-2:0.5rem;--spacing-3:0.75rem;--spacing-4:1rem;--spacing-6:1.5rem;--spacing-8:2rem;--spacing-12:3rem;--spacing-16:4rem;--spacing-24:6rem;--radius-sm:0.25rem;--radius-md:0.5rem;--radius-lg:1rem;--radius-full:9999px;--shadow-sm:0 1px 2px 0 rgba(0, 0, 0, 0.05);--shadow-md:0 4px 6px -1px rgba(0, 0, 0, 0.1);--shadow-lg:0 10px 15px -3px rgba(0, 0, 0, 0.1);--transition-fast:150ms cubic-bezier(0.4, 0, 0.2, 1);--transition-base:200ms cubic-bezier(0.4, 0, 0.2, 1)}[data-theme=light]{--color-bg:#ffffff;--color-surface:#f8fafc;--color-surface-elevated:#f1f5f9;--color-border:#e2e8f0;--color-text-primary:#0f172a;--color-text-secondary:#475569;--color-text-tertiary:#64748b;--color-accent:#3b82f6;--color-accent-hover:#2563eb;--color-success:#059669;--color-warning:#d97706;--color-error:#dc2626}@media(prefers-reduced-motion:reduce){:root{--transition-fast:0ms;--transition-base:0ms}}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;font-family:var(--font-body);scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}ul,ol{list-style:none}a{text-decoration:none;color:inherit}input,textarea,button,select{font-family:var(--font-body);font-size:inherit;color:inherit;background-color:transparent;border:none;outline:none}table{border-collapse:collapse;border-spacing:0}i.icon{width:28px;height:28px;display:inline-block;background-size:contain;background-repeat:no-repeat;vertical-align:middle}i.icon.i-aws{background-image:url(/images/icons/aws.svg)}i.icon.i-aws.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/aws.svg);mask-image:url(/images/icons/aws.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-clickhouse{background-image:url(/images/icons/clickhouse.svg)}i.icon.i-clickhouse.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/clickhouse.svg);mask-image:url(/images/icons/clickhouse.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-couchbase{background-image:url(/images/icons/couchbase-logo.svg)}i.icon.i-couchbase.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/couchbase-logo.svg);mask-image:url(/images/icons/couchbase-logo.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-css{background-image:url(/images/icons/css.svg)}i.icon.i-css.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/css.svg);mask-image:url(/images/icons/css.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-dbt{background-image:url(/images/icons/dbt-icon-logo.svg)}i.icon.i-dbt.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/dbt-icon-logo.svg);mask-image:url(/images/icons/dbt-icon-logo.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-django{background-image:url(/images/icons/django.svg)}i.icon.i-django.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/django.svg);mask-image:url(/images/icons/django.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-docker{background-image:url(/images/icons/docker.svg)}i.icon.i-docker.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/docker.svg);mask-image:url(/images/icons/docker.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-github{background-image:url(/images/icons/github.svg)}i.icon.i-github.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/github.svg);mask-image:url(/images/icons/github.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-go{background-image:url(/images/icons/go.svg)}i.icon.i-go.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/go.svg);mask-image:url(/images/icons/go.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-html{background-image:url(/images/icons/html.svg)}i.icon.i-html.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/html.svg);mask-image:url(/images/icons/html.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-internet{background-image:url(/images/icons/internet.svg)}i.icon.i-internet.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/internet.svg);mask-image:url(/images/icons/internet.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-javascript{background-image:url(/images/icons/javascript.svg)}i.icon.i-javascript.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/javascript.svg);mask-image:url(/images/icons/javascript.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-linkedin{background-image:url(/images/icons/linkedin.svg)}i.icon.i-linkedin.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/linkedin.svg);mask-image:url(/images/icons/linkedin.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-linux{background-image:url(/images/icons/linux-outline.svg)}i.icon.i-linux.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/linux-outline.svg);mask-image:url(/images/icons/linux-outline.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-mastodon{background-image:url(/images/icons/mastodon.svg)}i.icon.i-mastodon.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/mastodon.svg);mask-image:url(/images/icons/mastodon.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-mysql{background-image:url(/images/icons/mysql-outline.svg)}i.icon.i-mysql.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/mysql-outline.svg);mask-image:url(/images/icons/mysql-outline.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-php{background-image:url(/images/icons/php.svg)}i.icon.i-php.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/php.svg);mask-image:url(/images/icons/php.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-postgresql{background-image:url(/images/icons/postgresql-outline.svg)}i.icon.i-postgresql.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/postgresql-outline.svg);mask-image:url(/images/icons/postgresql-outline.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}i.icon.i-python{background-image:url(/images/icons/python.svg)}i.icon.i-python.monochrome{background-image:none !important;background-color:currentColor;-webkit-mask-image:url(/images/icons/python.svg);mask-image:url(/images/icons/python.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.d-inline{display:inline}.d-flex{display:flex}.d-block{display:block}.d-none{display:none}.d-inline-flex{display:inline-flex}.d-inline-block{display:inline-block}.hide{display:none}.icon svg{width:2rem;height:auto}.link::after{content:"↗";padding-left:.5rem;font-size:xx-small}.fw-bold{font-weight:700}.fw-lighter{font-weight:lighter}.t-uppercase{text-transform:uppercase}.t-lowercase{text-transform:lowercase}.underline{text-decoration:underline}.font-_5{font-size:.5rem !important}.font-_75{font-size:.75rem !important}.font-1{font-size:1rem !important}.font-1_25{font-size:1.25rem !important}.font-1_15{font-size:1.15rem !important}.font-1_5{font-size:1.5rem !important}.pt-0{padding-top:0 !important}.pb-0{padding-bottom:0 !important}.pt-05{padding-top:.5rem !important}.pb-05{padding-bottom:.5rem !important}sup.badge,.timeline-content sup.status-badge,.library-container .library__books__book .book-categories sup.category-tag,.library-container .library__books__book .book-header sup.status-badge,.library-container .library-controls .filter-tags sup.filter-tag{font-size:.5rem;padding:2px 4px;margin-left:2px;border-radius:50%}sup.badge-yellow{color:#000;background:#ffffb5}sup.badge-red{color:#000;background:#ffb5b5}sup.badge-white{color:#000;background:#fff}sup.badge-green{color:#000;background:#bdffe3}sup.badge-nocolor-bold{color:#fff;background:0 0;font-weight:700}.btn,.timeline-content .book-link,.library-container .library__books__book .book-link{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-2);padding:var(--spacing-3)var(--spacing-6);font-family:var(--font-body);font-size:1rem;font-weight:500;line-height:1.2;text-decoration:none;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--transition-fast),color var(--transition-fast)}.btn:focus-visible,.timeline-content .book-link:focus-visible,.library-container .library__books__book .book-link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.btn .icon,.timeline-content .book-link .icon,.library-container .library__books__book .book-link .icon,.btn i[class^=icon],.timeline-content .book-link i[class^=icon],.library-container .library__books__book .book-link i[class^=icon]{color:currentColor}.btn--primary{background-color:var(--color-accent);color:#fff}.btn--primary:hover{background-color:var(--color-accent-hover)}.btn--secondary,.timeline-content .book-link,.library-container .library__books__book .book-link{background-color:var(--color-surface-elevated);color:var(--color-text-primary);border:1px solid var(--color-border)}.btn--secondary:hover,.timeline-content .book-link:hover,.library-container .library__books__book .book-link:hover{background-color:var(--color-surface)}.btn--ghost{background-color:transparent;color:var(--color-text-primary)}.btn--ghost:hover{background-color:var(--color-surface-elevated)}.btn--sm,.timeline-content .book-link,.library-container .library__books__book .book-link{padding:var(--spacing-2)var(--spacing-4);font-size:.875rem}.btn--lg{padding:var(--spacing-4)var(--spacing-8);font-size:1.125rem}.btn:disabled,.timeline-content .book-link:disabled,.library-container .library__books__book .book-link:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.card{background-color:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-6);transition:border-color var(--transition-fast)}.card:hover{border-color:var(--color-accent)}.card__header{margin-bottom:var(--spacing-4)}.card__title{font-family:var(--font-heading);font-size:1.5rem;font-weight:600;line-height:1.2;color:var(--color-text-primary);margin:0}.card__description{font-size:1rem;line-height:1.5;color:var(--color-text-secondary);margin:var(--spacing-2)0 0}.card__content{color:var(--color-text-primary)}.card__footer{margin-top:var(--spacing-6);padding-top:var(--spacing-4);border-top:1px solid var(--color-border)}.card--interactive{cursor:pointer}.card--interactive:hover{border-color:var(--color-accent)}.card--interactive:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.card--compact{padding:var(--spacing-4)}.badge,.timeline-content .status-badge,.library-container .library__books__book .book-categories .category-tag,.library-container .library__books__book .book-header .status-badge,.library-container .library-controls .filter-tags .filter-tag{display:inline-flex;align-items:center;padding:var(--spacing-1)var(--spacing-3);font-size:.875rem;font-weight:500;line-height:1.2;border-radius:var(--radius-full);text-transform:lowercase}.badge--reading,.timeline-content .status-badge.reading,.library-container .library__books__book .book-header .status-badge.reading{background-color:rgba(59,130,246,.1);color:var(--color-accent);border:1px solid rgba(59,130,246,.2)}.badge--completed,.timeline-content .status-badge.completed,.library-container .library__books__book .book-header .status-badge.completed{background-color:rgba(16,185,129,.1);color:var(--color-success);border:1px solid rgba(16,185,129,.2)}.badge--to-read,.timeline-content .status-badge.to-read,.library-container .library__books__book .book-header .status-badge.to-read{background-color:rgba(100,116,139,.1);color:var(--color-text-tertiary);border:1px solid rgba(100,116,139,.2)}.badge--warning{background-color:rgba(245,158,11,.1);color:var(--color-warning);border:1px solid rgba(245,158,11,.2)}.badge--error{background-color:rgba(239,68,68,.1);color:var(--color-error);border:1px solid rgba(239,68,68,.2)}.badge--default,.library-container .library__books__book .book-categories .category-tag,.library-container .library-controls .filter-tags .filter-tag{background-color:var(--color-surface-elevated);color:var(--color-text-secondary);border:1px solid var(--color-border)}.badge--interactive,.library-container .library-controls .filter-tags .filter-tag{cursor:pointer;transition:background-color var(--transition-fast),border-color var(--transition-fast)}.badge--interactive:hover,.library-container .library-controls .filter-tags .filter-tag:hover{opacity:.8}.badge--interactive:focus-visible,.library-container .library-controls .filter-tags .filter-tag:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.input,.library-container .library-controls .controls-row .search-box .search-input{width:100%;padding:var(--spacing-3)var(--spacing-4);font-family:var(--font-body);font-size:1rem;line-height:1.5;color:var(--color-text-primary);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color var(--transition-fast)}.input::placeholder,.library-container .library-controls .controls-row .search-box .search-input::placeholder{color:var(--color-text-tertiary)}.input:hover,.library-container .library-controls .controls-row .search-box .search-input:hover{border-color:var(--color-accent)}.input:focus,.library-container .library-controls .controls-row .search-box .search-input:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px rgba(59,130,246,.1)}.input:disabled,.library-container .library-controls .controls-row .search-box .search-input:disabled{opacity:.5;cursor:not-allowed;background-color:var(--color-surface-elevated)}.input--search,.library-container .library-controls .controls-row .search-box .search-input{padding-left:var(--spacing-12);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cpath d='m21 21-4.35-4.35'%3E%3C/path%3E%3C/svg%3E");background-repeat:no-repeat;background-position:var(--spacing-4)}.select,.library-container .library-controls .year-filter-box .year-select,.library-container .library-controls .controls-row .sort-box .sort-select{width:100%;padding:var(--spacing-3)var(--spacing-4);font-family:var(--font-body);font-size:1rem;line-height:1.5;color:var(--color-text-primary);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color var(--transition-fast)}.select:hover,.library-container .library-controls .year-filter-box .year-select:hover,.library-container .library-controls .controls-row .sort-box .sort-select:hover{border-color:var(--color-accent)}.select:focus,.library-container .library-controls .year-filter-box .year-select:focus,.library-container .library-controls .controls-row .sort-box .sort-select:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px rgba(59,130,246,.1)}.select:disabled,.library-container .library-controls .year-filter-box .year-select:disabled,.library-container .library-controls .controls-row .sort-box .sort-select:disabled{opacity:.5;cursor:not-allowed}.textarea{width:100%;padding:var(--spacing-3)var(--spacing-4);font-family:var(--font-body);font-size:1rem;line-height:1.5;color:var(--color-text-primary);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);resize:vertical;min-height:100px;transition:border-color var(--transition-fast)}.textarea::placeholder{color:var(--color-text-tertiary)}.textarea:hover{border-color:var(--color-accent)}.textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px rgba(59,130,246,.1)}.textarea:disabled{opacity:.5;cursor:not-allowed;resize:none}.theme-switcher{display:flex;align-items:center;gap:var(--spacing-1);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);padding:var(--spacing-1)}.theme-switcher__button{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:none;background:0 0;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-full);transition:background-color var(--transition-fast),color var(--transition-fast)}.theme-switcher__button:hover{background-color:var(--color-surface-elevated);color:var(--color-text-primary)}.theme-switcher__button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.theme-switcher__button--active{background-color:var(--color-accent);color:#fff}.theme-switcher__button--active:hover{background-color:var(--color-accent-hover);color:#fff}.theme-switcher__button svg{width:1rem;height:1rem}.bento-grid{display:grid;grid-template-columns:repeat(1,1fr);grid-auto-flow:dense;gap:var(--spacing-4);width:100%;max-width:1400px;margin:0 auto;padding:var(--spacing-4)}@media(max-width:767px){.bento-grid{padding:0}}@media(min-width:1023px){.bento-grid{grid-template-columns:repeat(2,1fr);gap:var(--spacing-6);padding:var(--spacing-6)}}@media(min-width:3000px){.bento-grid{grid-template-columns:repeat(4,1fr);grid-auto-rows:minmax(180px,auto)}}.bento-cell{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-6);display:flex;flex-direction:column;position:relative;overflow:hidden;transition:transform var(--transition-base),border-color var(--transition-base),box-shadow var(--transition-base)}.bento-cell--interactive:hover,.bento-cell[href]:hover{border-color:var(--color-accent);transform:translateY(-2px);box-shadow:var(--shadow-md);cursor:pointer}.bento-cell--interactive{cursor:pointer}.bento-cell--center{align-items:center;justify-content:center;text-align:center}.bento-title{font-family:var(--font-heading);font-size:1.25rem;font-weight:700;color:var(--color-text-secondary);margin-bottom:var(--spacing-4);width:100%}.bento-hero{justify-content:center}.bento-hero .title{font-family:var(--font-heading);font-size:2.5rem;font-weight:700;color:var(--color-text-primary);margin-bottom:var(--spacing-2);line-height:1.2}.bento-hero .subtitle{color:var(--color-accent);font-size:1.5rem;font-weight:500;margin-bottom:var(--spacing-4)}.bento-hero .bio{color:var(--color-text-secondary);line-height:1.75;font-size:1.125rem}.bento-hero .bio p{margin-bottom:var(--spacing-2)}.bento-hero p{margin-bottom:var(--spacing-3);line-height:1.75}.bento-hero p:last-child{margin-bottom:0}.bento-hero a{color:var(--color-accent);text-decoration:underline;text-underline-offset:2px}.bento-hero a:hover{color:var(--color-accent-hover)}.connect-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-2);width:100%}.connect-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-1);padding:var(--spacing-3);background-color:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);text-decoration:none;transition:background-color var(--transition-fast)}.connect-item:hover{background-color:var(--color-surface)}.connect-item i{font-size:1.5rem;color:var(--color-text-secondary)}.connect-item .connect-name{font-size:1rem;font-weight:500;color:var(--color-text-primary);text-align:center}.connect-item .connect-platform{font-size:.875rem;color:var(--color-text-secondary);text-align:center;text-transform:capitalize}.stack-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--spacing-2)}.skill-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-1);padding:var(--spacing-2);background-color:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:background-color var(--transition-fast);min-width:0;text-decoration:none}.skill-item:hover{background-color:var(--color-surface)}.skill-item i{font-size:1.25rem;color:var(--color-text-secondary)}.skill-item .skill-name{font-size:.625rem;color:var(--color-text-secondary);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.book-mini{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;justify-content:center;gap:var(--spacing-2);width:100%;flex:1;padding:var(--spacing-4);background-color:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.book-mini .book-progress-fill{position:absolute;top:0;left:0;height:100%;background-color:var(--color-accent);opacity:.1;transition:width 1s ease-out}.book-mini .book-content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-1)}.book-mini .book-title{font-size:1.125rem;font-weight:700;color:var(--color-text-primary);line-height:1.2}.book-mini .book-author{font-size:1rem;color:var(--color-text-secondary)}.book-mini .progress-text{font-size:.875rem;color:var(--color-text-tertiary);margin-top:var(--spacing-1)}.bento-reading-action{margin-top:var(--spacing-4);display:flex;justify-content:center}.featured-projects-list{display:flex;flex-direction:column;gap:var(--spacing-6);height:100%}.featured-project{display:flex;flex-direction:column;padding:var(--spacing-4);background-color:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:background-color var(--transition-fast)}.featured-project .project-name{font-size:2rem;font-weight:700;color:var(--color-text-primary);margin-bottom:var(--spacing-2)}.featured-project .project-desc{color:var(--color-text-secondary);margin-bottom:var(--spacing-4);display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.featured-project .project-tags{display:flex;flex-wrap:wrap;gap:var(--spacing-2);margin-bottom:var(--spacing-4)}.featured-project .project-actions{margin-top:auto;display:flex;gap:var(--spacing-3)}.blog-posts-list{display:flex;flex-direction:column;gap:var(--spacing-3);flex:1}.blog-post-item{display:block;padding:var(--spacing-3);background-color:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);text-decoration:none;transition:background-color var(--transition-fast)}.blog-post-item:hover{background-color:var(--color-surface)}.blog-post-item .blog-post-content{display:flex;flex-direction:column;gap:var(--spacing-1)}.blog-post-item .blog-post-title{font-size:1.125rem;font-weight:400;color:var(--color-text-primary);margin:0}.blog-post-item .blog-post-date{font-size:.875rem;color:var(--color-text-tertiary)}.blog-posts-action{margin-top:auto;padding-top:var(--spacing-4);display:flex;justify-content:center}@media(min-width:3000px){.col-span-1{grid-column:span 1}.col-span-2{grid-column:span 2}.col-span-3{grid-column:span 3}.col-span-4{grid-column:span 4}.row-span-1{grid-row:span 1}.row-span-2{grid-row:span 2}.bento-hero{grid-column:span 2;grid-row:span 2}}@media(min-width:3000px){.bento-grid--3-cols{grid-template-columns:repeat(3,1fr)}}.skip-link{position:absolute;top:-100%;left:50%;transform:translateX(-50%);padding:var(--spacing-3)var(--spacing-6);background-color:var(--color-accent);color:#fff;text-decoration:none;font-weight:500;border-radius:var(--radius-sm);z-index:9999;transition:top var(--transition-fast)}.skip-link:focus{top:var(--spacing-4);outline:2px solid #fff;outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.newsletter-section{border-top:1px solid var(--color-border);background-color:var(--color-surface-elevated);padding:var(--spacing-8)var(--spacing-4);margin-bottom:var(--spacing-8)}.newsletter-container{max-width:600px;margin:0 auto;text-align:center}.newsletter-container h3{font-family:var(--font-heading);font-size:1.5rem;font-weight:700;margin-bottom:var(--spacing-2);color:var(--color-text-primary)}.newsletter-container .tagline{color:var(--color-text-secondary);margin-bottom:var(--spacing-6);line-height:1.5}.listmonk-form{display:flex;flex-direction:column;gap:var(--spacing-4)}.listmonk-form .form-row{display:flex;flex-direction:column;gap:var(--spacing-3)}@media(min-width:1023px){.listmonk-form .form-row{flex-direction:row;gap:var(--spacing-2)}}.listmonk-form input[type=email],.listmonk-form input[type=text]{flex:1;padding:var(--spacing-3)var(--spacing-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-surface);color:var(--color-text-primary);font-family:var(--font-body);font-size:1rem;transition:border-color var(--transition-fast)}.listmonk-form input[type=email]:focus,.listmonk-form input[type=text]:focus{outline:none;border-color:var(--color-accent)}.listmonk-form button[type=submit]{padding:var(--spacing-3)var(--spacing-6);background-color:var(--color-text-primary);color:var(--color-bg);border:none;border-radius:var(--radius-sm);font-weight:600;cursor:pointer;transition:opacity var(--transition-fast);white-space:nowrap}.listmonk-form button[type=submit]:hover{opacity:.9}.listmonk-form button[type=submit]:disabled{opacity:.7;cursor:not-allowed}.listmonk-form .captcha-row{display:flex;justify-content:center}.listmonk-form .captcha-row altcha-widget{font-family:var(--font-body);--altcha-color-base:var(--color-text-primary);--altcha-color-border:var(--color-border);--altcha-color-bg:var(--color-surface)}.listmonk-form .privacy-notice{color:var(--color-text-tertiary);margin-top:var(--spacing-2)}.listmonk-form .privacy-notice strong{color:var(--color-text-secondary)}.listmonk-form .success-message{color:var(--color-success);padding:var(--spacing-4);border:1px solid var(--color-success);border-radius:var(--radius-md);background-color:rgba(16,185,129,.1)}body#app.app{background-color:var(--color-bg);color:var(--color-text-primary);font-family:var(--font-body);font-size:1rem;line-height:1.5;transition:background-color var(--transition-base),color var(--transition-base)}:root{--hover-transition-color:color 0.3s ease, background-color 0.3s ease;--accent-bg-transparent:rgba(37, 53, 60, 0.5)}nav.nav-container{display:flex;justify-content:center;flex-direction:row;flex-wrap:wrap;align-content:center;align-items:center;padding:var(--spacing-2);margin-top:var(--spacing-4);position:fixed;top:0;z-index:50;width:100%;pointer-events:none}@media(max-width:767px){nav.nav-container{margin-top:var(--spacing-2)}}nav.nav-container .nav-toggle{display:none;pointer-events:auto}nav.nav-container .nav-menu{pointer-events:auto;background-color:var(--color-surface-elevated);border:1px solid var(--color-border);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center;align-items:center;list-style:none;margin:0;padding:var(--spacing-1)var(--spacing-2);border-radius:var(--radius-full);width:max-content;box-shadow:var(--shadow-sm);gap:var(--spacing-1)}@media(max-width:767px){nav.nav-container .nav-menu{max-width:calc(100% - var(--spacing-4));overflow-x:auto;-webkit-overflow-scrolling:touch;justify-content:flex-start;padding:var(--spacing-1);-ms-overflow-style:none;scrollbar-width:none}nav.nav-container .nav-menu::-webkit-scrollbar{display:none}}nav.nav-container .nav-menu li{display:flex;align-items:center}nav.nav-container .nav-menu li .logo{padding:0;margin:0 var(--spacing-2)0 0;display:flex;align-items:center;width:2rem;height:2rem;border-radius:50%}nav.nav-container .nav-menu li a{color:var(--color-text-secondary);text-decoration:none;text-transform:lowercase;font-size:1rem;padding:var(--spacing-2)var(--spacing-4);border-radius:var(--radius-full);display:inline-flex;align-items:center;height:2rem;line-height:1;transition:background-color var(--transition-fast),color var(--transition-fast);font-weight:500}nav.nav-container .nav-menu li a:hover,nav.nav-container .nav-menu li a:focus{background-color:var(--color-surface);color:var(--color-text-primary)}nav.nav-container .nav-menu li a.active{background-color:var(--color-surface-elevated);color:var(--color-text-primary);border:1px solid var(--color-border)}@media(max-width:767px){nav.nav-container .nav-menu li a{padding:var(--spacing-2)var(--spacing-3);font-size:.875rem}}nav.nav-container .nav-menu li.theme-switcher-container{margin-left:var(--spacing-1);border-left:1px solid var(--color-border);padding-left:var(--spacing-2)}header.header{display:flex;flex-direction:column;flex-wrap:nowrap;align-items:center;justify-content:center;position:sticky;top:0;z-index:0;height:60vh;padding-top:var(--spacing-8)}@media(max-width:767px){header.header{height:40vh;padding-top:var(--spacing-6)}}header.header .profile{display:flex;flex-direction:column;align-items:center;flex-wrap:wrap}header.header .profile__name{font-family:var(--font-heading);font-size:3rem;font-weight:700;text-transform:uppercase;margin-top:var(--spacing-6);margin-bottom:var(--spacing-3);letter-spacing:.15rem;color:var(--color-text-primary)}@media(max-width:767px){header.header .profile__name{font-size:2.5rem}}header.header .profile__title{font-size:1.125rem;font-weight:500;text-transform:lowercase;margin-bottom:var(--spacing-8);color:var(--color-text-secondary)}header.header .cta .cta__container{background-color:var(--color-surface-elevated);border:1px solid var(--color-border);display:block;padding:var(--spacing-1);width:auto;border-radius:var(--radius-full);transition:border-color var(--transition-fast)}header.header .cta .cta__container:hover,header.header .cta .cta__container:focus{border-color:var(--color-accent)}header.header .cta .cta__container .cta__link{background-color:var(--color-accent);color:#fff;padding:var(--spacing-3)var(--spacing-6);border-radius:var(--radius-full);align-items:baseline;font-weight:500;transition:background-color var(--transition-fast)}header.header .cta .cta__container .cta__link:hover{background-color:var(--color-accent-hover)}main.main{background-color:var(--color-surface);z-index:10;position:relative;color:var(--color-text-primary);border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg);padding:var(--spacing-4);padding-top:var(--spacing-8);min-height:100vh;display:flex;flex-direction:column;align-items:center}@media(max-width:767px){main.main{padding:var(--spacing-3);padding-top:var(--spacing-8)}}main.main .container{width:100%;max-width:1080px;background-color:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);margin-bottom:var(--spacing-4);padding:var(--spacing-6);overflow:hidden}@media(max-width:767px){main.main .container{padding:var(--spacing-4);border-radius:var(--radius-md)}}main.main .container>.title{font-family:var(--font-heading);font-size:3rem;font-weight:600;letter-spacing:.05rem;color:var(--color-text-secondary);text-transform:uppercase;margin-left:var(--spacing-4);margin-bottom:var(--spacing-6)}@media(max-width:767px){main.main .container>.title{font-size:2.5rem;margin-left:0}}main.main .container .projects-grid{display:grid;grid-template-columns:1fr;gap:var(--spacing-6)}@media(min-width:767px){main.main .container .projects-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:1023px){main.main .container .projects-grid{grid-template-columns:repeat(3,1fr)}}main.main .container .cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));grid-gap:var(--spacing-4);padding:var(--spacing-4)}@media(max-width:767px){main.main .container .cards{grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));grid-gap:var(--spacing-3)}}main.main .container .cards .card__item{background-color:var(--color-surface);border:1px solid var(--color-border);padding:var(--spacing-4);border-radius:var(--radius-full);display:inline-flex;justify-content:flex-start;align-items:center;flex-direction:row;flex-wrap:nowrap;transition:border-color var(--transition-fast)}main.main .container .cards .card__item p{margin-left:var(--spacing-2);font-weight:500;font-size:1.125rem;line-height:1.2;color:var(--color-text-primary)}@media(max-width:767px){main.main .container .cards .card__item p{font-size:1rem}}main.main .container .cards a.card__item:hover,main.main .container .cards a.card__item:focus{border-color:var(--color-accent)}main.main .container .cards a.card__item:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}main.main .container .projects{margin:var(--spacing-4)}main.main .container .projects .project{margin:var(--spacing-4)0;background-color:var(--color-surface);border:1px solid var(--color-border);display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:center;border-radius:var(--radius-md);overflow:hidden;transition:border-color var(--transition-fast)}@media(max-width:767px){main.main .container .projects .project{grid-template-columns:1fr;margin:var(--spacing-4)0}}main.main .container .projects .project:hover{border-color:var(--color-accent)}main.main .container .projects .project__image{width:100%;height:100%;object-fit:cover;border-right:1px solid var(--color-border)}@media(max-width:767px){main.main .container .projects .project__image{border-right:none;border-bottom:1px solid var(--color-border)}}main.main .container .projects .project__meta{height:100%;padding:var(--spacing-6);display:flex;flex-direction:column;flex-wrap:wrap;align-items:center;justify-content:center}main.main .container .projects .project__meta>*{display:block;padding:var(--spacing-2)0}main.main .container .projects .project__meta p.description{font-size:1rem;text-align:center;color:var(--color-text-secondary)}main.main .container .projects .project__meta .links{display:flex;gap:var(--spacing-2)}main.main .container .projects .project__meta .tech-stack{margin:var(--spacing-2)0;font-size:.875rem;color:var(--color-text-tertiary)}main.main .container .projects .project__meta .tech-stack strong{color:var(--color-text-secondary);margin-right:var(--spacing-1)}main.main .container .projects .project__meta .tech-stack span{display:inline}main.main .container .projects .project__meta a.active{background-color:var(--color-surface-elevated);color:var(--color-text-primary)}main.main .container .projects .project__meta a.active:hover,main.main .container .projects .project__meta a.active:focus{background-color:var(--color-accent);color:#fff;border-color:var(--color-accent)}main.main .container .about{margin:var(--spacing-4);margin-top:var(--spacing-6);color:var(--color-text-secondary)}main.main .container .about p{margin-top:var(--spacing-4);line-height:1.75;font-size:1.125rem}main.main .container .about a{color:var(--color-accent);text-decoration:none}main.main .container .about a:hover{text-decoration:underline;color:var(--color-accent-hover)}.library-container{padding-bottom:var(--spacing-12)}.library-container .reading{border-left:4px solid var(--color-accent)}.library-container .completed{border-left:4px solid var(--color-success)}.library-container .total-books{border-left:4px solid var(--color-text-primary)}.library-container .to-read{border-left:4px solid var(--color-text-tertiary)}.library-container .library-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-4);margin:var(--spacing-8)var(--spacing-4)}.library-container .library-stats .stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-6);display:flex;align-items:center;transition:transform var(--transition-fast),border-color var(--transition-fast)}.library-container .library-stats .stat-card:hover{transform:translateY(-3px);border-color:var(--color-accent)}.library-container .library-stats .stat-card .stat-icon{font-size:2rem;margin-right:var(--spacing-4)}.library-container .library-stats .stat-card .stat-content{display:flex;flex-direction:column}.library-container .library-stats .stat-card .stat-value{font-size:2rem;font-weight:700;color:var(--color-text-primary)}.library-container .library-stats .stat-card .stat-label{font-size:1rem;color:var(--color-text-secondary)}.library-container .library-controls{margin:var(--spacing-8)0;padding:0 var(--spacing-4)}.library-container .library-controls .controls-row{display:flex;gap:var(--spacing-4);margin-bottom:var(--spacing-4);align-items:center}.library-container .library-controls .controls-row .search-box{flex:1;position:relative}@media(max-width:767px){.library-container .library-controls .controls-row .search-box{width:100%}}.library-container .library-controls .controls-row .search-box .search-icon{display:none}.library-container .library-controls .controls-row .sort-box{position:relative;min-width:200px}@media(max-width:767px){.library-container .library-controls .controls-row .sort-box{width:100%}}.library-container .library-controls .controls-row .sort-box .sort-icon{position:absolute;right:var(--spacing-3);top:50%;transform:translateY(-50%);font-size:1rem;opacity:.5;pointer-events:none;color:var(--color-text-secondary)}@media(max-width:767px){.library-container .library-controls .controls-row{flex-direction:column;gap:var(--spacing-3)}}.library-container .library-controls .filter-tags{display:flex;flex-wrap:wrap;gap:var(--spacing-2);margin-top:var(--spacing-4)}.library-container .library-controls .filter-tags .filter-divider{width:1px;background:var(--color-border);margin:0 var(--spacing-2)}@media(max-width:767px){.library-container .library-controls .filter-tags .filter-divider{width:100%;height:1px;margin:var(--spacing-2)0}}.library-container .library-controls .filter-tags .filter-tag:hover{background:var(--color-text-primary);color:var(--color-bg);border-color:var(--color-text-primary)}.library-container .library-controls .filter-tags .filter-tag.active{background:var(--color-text-primary);color:var(--color-bg);border-color:var(--color-text-primary)}@media(max-width:767px){.library-container .library-controls .year-filter-box{width:100%}}.library-container .library{margin:var(--spacing-8)0;position:relative;padding:0 var(--spacing-4)}@media(max-width:767px){.library-container .library{padding:0}}.library-container .library .subtitle{display:flex;justify-content:flex-start;flex-direction:row;font-family:var(--font-heading);font-size:2rem;text-transform:capitalize;color:var(--color-text-primary);margin-bottom:var(--spacing-8);font-weight:500;letter-spacing:.5px;padding-left:var(--spacing-6);position:relative}.library-container .library .subtitle::after{content:"• • •";position:absolute;right:var(--spacing-4);font-size:1.125rem;letter-spacing:.25rem;opacity:.5;color:var(--color-text-secondary)}@media(max-width:767px){.library-container .library .subtitle{font-size:1.5rem;margin-bottom:var(--spacing-6);padding-left:var(--spacing-3)}}.library-container .library hr{border:none;height:1px;background:repeating-linear-gradient(90deg,var(--color-border),var(--color-border) 10px,transparent 10px,transparent 20px);margin:var(--spacing-12)0;opacity:.5}.library-container .library__books{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--spacing-6);margin-top:var(--spacing-8);width:100%}@media(max-width:767px){.library-container .library__books{grid-template-columns:1fr;gap:var(--spacing-4);padding:0}}.library-container .library__books__book{display:flex;flex-direction:column;padding:var(--spacing-6);min-height:320px;background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--transition-fast);position:relative;width:100%;box-sizing:border-box}@media(max-width:767px){.library-container .library__books__book{min-height:auto;padding:var(--spacing-4)}}.library-container .library__books__book:hover{border-color:var(--color-accent)}.library-container .library__books__book .book-content{display:flex;flex-direction:column;gap:var(--spacing-3);height:100%;justify-content:space-between;width:100%}.library-container .library__books__book .status-info-row{display:flex;justify-content:space-between;align-items:center;width:100%;margin-bottom:var(--spacing-2)}.library-container .library__books__book .book-ownership{display:flex;gap:var(--spacing-2);align-items:center;flex-shrink:0}.library-container .library__books__book .book-ownership .ownership-icon{font-size:1.2rem;opacity:.7;color:var(--color-text-secondary);transition:opacity var(--transition-fast)}.library-container .library__books__book .book-ownership .ownership-icon:hover{opacity:1}.library-container .library__books__book .book-ownership .ownership-icon.ebook{color:var(--color-accent)}.library-container .library__books__book .book-ownership .ownership-icon.physical{color:var(--color-success)}.library-container .library__books__book .book-ownership .ownership-icon.audiobook{color:var(--color-warning)}.library-container .library__books__book .book-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--spacing-2);gap:var(--spacing-4)}.library-container .library__books__book .book-header .title{font-size:1.25rem;font-weight:600;margin:0;color:var(--color-text-primary);line-height:1.2;flex:1}.library-container .library__books__book .book-header .status-badge{margin:0;flex-shrink:0;align-self:center;margin-bottom:var(--spacing-2)}.library-container .library__books__book .book-header .status-badge.reading::before{content:""}.library-container .library__books__book .book-header .status-badge.completed::before{content:""}.library-container .library__books__book .book-header .status-badge.to-read::before{content:""}.library-container .library__books__book .title{position:relative;padding-bottom:var(--spacing-2)}.library-container .library__books__book .title::after{content:"";position:absolute;bottom:0;left:0;width:2rem;height:2px;background-color:var(--color-border)}@media(max-width:767px){.library-container .library__books__book .title{font-size:1.125rem}}.library-container .library__books__book .author{font-size:1rem;color:var(--color-text-secondary);font-weight:500;font-style:italic}.library-container .library__books__book .description{font-size:1rem;color:var(--color-text-primary);opacity:.9;line-height:1.5;margin:0}.library-container .library__books__book .book-status{margin-top:auto;display:flex;flex-direction:column;gap:var(--spacing-2)}.library-container .library__books__book .book-status .reading-history{font-size:.875rem;color:var(--color-text-tertiary)}.library-container .library__books__book .book-status .reading-progress{display:flex;align-items:center;gap:var(--spacing-2);margin-top:var(--spacing-1)}.library-container .library__books__book .book-status .reading-progress .progress-bar{flex:1;height:4px;background:var(--color-surface-elevated);border-radius:var(--radius-full);overflow:hidden}.library-container .library__books__book .book-status .reading-progress .progress-bar .progress{height:100%;background:var(--color-accent);border-radius:var(--radius-full);transition:width var(--transition-base)}.library-container .library__books__book .book-status .reading-progress .progress-text{font-size:.875rem;color:var(--color-text-secondary);min-width:3rem}.library-container .library__books__book .book-status .book-rating{display:flex;gap:.25rem;font-size:1rem;color:var(--color-warning);margin-top:var(--spacing-1)}.library-container .library__books__book .book-categories{display:flex;flex-wrap:wrap;gap:var(--spacing-2);margin-top:var(--spacing-2)}.library-container .library__books__book .book-categories .category-tag:hover{border-color:var(--color-accent)}.library-container .library__books__book .book-categories .category-tag.active{background:var(--color-text-primary);color:var(--color-bg);border-color:var(--color-text-primary)}.library-container .library__books__book .book-link{width:fit-content;margin-top:var(--spacing-4);border-radius:var(--radius-full)}.library-container .library__books__book .book-link icon{margin-left:.25rem;font-size:.75rem}.progress-0{width:0%}.progress-1{width:1%}.progress-2{width:2%}.progress-3{width:3%}.progress-4{width:4%}.progress-5{width:5%}.progress-6{width:6%}.progress-7{width:7%}.progress-8{width:8%}.progress-9{width:9%}.progress-10{width:10%}.progress-11{width:11%}.progress-12{width:12%}.progress-13{width:13%}.progress-14{width:14%}.progress-15{width:15%}.progress-16{width:16%}.progress-17{width:17%}.progress-18{width:18%}.progress-19{width:19%}.progress-20{width:20%}.progress-21{width:21%}.progress-22{width:22%}.progress-23{width:23%}.progress-24{width:24%}.progress-25{width:25%}.progress-26{width:26%}.progress-27{width:27%}.progress-28{width:28%}.progress-29{width:29%}.progress-30{width:30%}.progress-31{width:31%}.progress-32{width:32%}.progress-33{width:33%}.progress-34{width:34%}.progress-35{width:35%}.progress-36{width:36%}.progress-37{width:37%}.progress-38{width:38%}.progress-39{width:39%}.progress-40{width:40%}.progress-41{width:41%}.progress-42{width:42%}.progress-43{width:43%}.progress-44{width:44%}.progress-45{width:45%}.progress-46{width:46%}.progress-47{width:47%}.progress-48{width:48%}.progress-49{width:49%}.progress-50{width:50%}.progress-51{width:51%}.progress-52{width:52%}.progress-53{width:53%}.progress-54{width:54%}.progress-55{width:55%}.progress-56{width:56%}.progress-57{width:57%}.progress-58{width:58%}.progress-59{width:59%}.progress-60{width:60%}.progress-61{width:61%}.progress-62{width:62%}.progress-63{width:63%}.progress-64{width:64%}.progress-65{width:65%}.progress-66{width:66%}.progress-67{width:67%}.progress-68{width:68%}.progress-69{width:69%}.progress-70{width:70%}.progress-71{width:71%}.progress-72{width:72%}.progress-73{width:73%}.progress-74{width:74%}.progress-75{width:75%}.progress-76{width:76%}.progress-77{width:77%}.progress-78{width:78%}.progress-79{width:79%}.progress-80{width:80%}.progress-81{width:81%}.progress-82{width:82%}.progress-83{width:83%}.progress-84{width:84%}.progress-85{width:85%}.progress-86{width:86%}.progress-87{width:87%}.progress-88{width:88%}.progress-89{width:89%}.progress-90{width:90%}.progress-91{width:91%}.progress-92{width:92%}.progress-93{width:93%}.progress-94{width:94%}.progress-95{width:95%}.progress-96{width:96%}.progress-97{width:97%}.progress-98{width:98%}.progress-99{width:99%}.progress-100{width:100%}.fab{position:fixed;bottom:var(--spacing-8);right:var(--spacing-8);width:56px;height:56px;background-color:var(--color-accent);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:transform var(--transition-fast),background-color var(--transition-fast);z-index:1000}.fab:hover{transform:translateY(-2px);background-color:var(--color-accent-hover)}.fab svg{width:24px;height:24px;stroke:#fff}@media(max-width:767px){.fab{bottom:var(--spacing-6);right:var(--spacing-6)}}.timeline-container{width:100%;max-width:1200px;margin:0 auto;background-color:transparent;border-radius:var(--radius-lg)}.timeline-container>.title{text-align:center;margin-bottom:var(--spacing-8);font-family:var(--font-heading);font-size:2.5rem;font-weight:300;letter-spacing:.05rem;color:var(--color-text-primary);text-transform:uppercase;margin-top:var(--spacing-8)}.timeline{position:relative;margin:0 auto}.timeline::after{content:"";position:absolute;width:2px;background-color:var(--color-border);opacity:1;top:0;bottom:0;left:50%;margin-left:-1px}.timeline-year-marker{padding:var(--spacing-2)var(--spacing-4);background-color:var(--color-surface-elevated);border:1px solid var(--color-border);color:var(--color-text-primary);border-radius:var(--radius-full);font-size:1.25rem;font-weight:700;position:relative;z-index:1;width:fit-content;margin:var(--spacing-12)auto;text-align:center}.timeline-item{padding:10px 40px;position:relative;width:50%}.timeline-item:nth-of-type(odd){left:0;padding-right:60px;text-align:right}.timeline-item:nth-of-type(even){left:50%;padding-left:60px;text-align:left}.timeline-item::after{content:"";position:absolute;width:16px;height:16px;background-color:var(--color-surface);border:3px solid var(--color-accent);top:28px;border-radius:50%;z-index:1}.timeline-item:nth-of-type(odd)::after{right:-8px}.timeline-item:nth-of-type(even)::after{left:-8px}.timeline-item:nth-of-type(odd) .timeline-content::before{right:-40px;display:none}.timeline-item:nth-of-type(even) .timeline-content::before{left:-40px;display:none}.timeline-content{padding:var(--spacing-6);background-color:var(--color-surface);position:relative;border-radius:var(--radius-md);border:1px solid var(--color-border);transition:border-color var(--transition-fast)}.timeline-content:hover{border-color:var(--color-accent)}.timeline-content .timeline-date{font-size:.875rem;font-weight:500;color:var(--color-text-secondary);display:block;margin-bottom:var(--spacing-2)}.timeline-content .title{font-size:1.25rem;font-weight:600;margin:0;color:var(--color-text-primary);text-align:inherit;margin-bottom:var(--spacing-2)}.timeline-content .author{font-size:1rem;font-style:italic;color:var(--color-text-secondary);margin:0 0 var(--spacing-4)}.timeline-content .book-link{border-radius:var(--radius-full);width:fit-content;font-size:.875rem;padding:var(--spacing-2)var(--spacing-4)}.timeline-content .book-link:hover{background-color:var(--color-text-primary);color:var(--color-bg)}.timeline-content .status-badge{margin-bottom:var(--spacing-2)}@media screen and (max-width:767px){.timeline-content{min-width:0}.timeline-container{padding:var(--spacing-4)var(--spacing-2)}.timeline-container>.title{font-size:2rem;margin-bottom:var(--spacing-6)}.timeline::after{left:20px}.timeline-year-marker{margin:var(--spacing-8)0;transform:none;margin-left:0;display:block;margin:var(--spacing-6)auto}.timeline-item{width:100%;padding-left:50px;padding-right:0;left:0 !important;text-align:left !important}.timeline-item:nth-of-type(odd),.timeline-item:nth-of-type(even){left:0;padding-left:50px;padding-right:0}.timeline-item::after{left:13px !important;right:auto !important}.timeline-content{padding:var(--spacing-4)}.timeline-content .title{font-size:1.125rem}.timeline-content .author{font-size:1rem}}footer{margin:0;padding:0 var(--spacing-4)var(--spacing-8);text-align:center;color:var(--color-text-tertiary);position:relative;z-index:10;background-color:var(--color-bg)}footer.footer p{line-height:1.5;font-size:1rem}footer.footer p a{color:var(--color-text-secondary);text-decoration:none;transition:color var(--transition-fast)}footer.footer p a:hover{color:var(--color-accent)}.text-center{text-align:center}.mb-1{margin-bottom:var(--spacing-1)}.mb-2{margin-bottom:var(--spacing-2)}.mb-4{margin-bottom:var(--spacing-4)}.mb-6{margin-bottom:var(--spacing-6)}.mt-4{margin-top:var(--spacing-4)}.mt-8{margin-top:var(--spacing-8)}.w-full{width:100%}.text-4xl{font-size:2.5rem}.text-xl{font-size:1.5rem}.text-lg{font-size:1.25rem}.text-sm{font-size:1rem}.font-bold{font-weight:700}.text-secondary{color:var(--color-text-secondary)}.projects-grid .project{display:flex;flex-direction:column;grid-template-columns:none;height:100%;margin:0}.projects-grid .project__image{height:auto;max-height:300px;width:100%;border-right:none;border-bottom:1px solid var(--color-border)}.projects-grid .project__meta{flex-grow:1;padding:var(--spacing-4);justify-content:space-between;display:flex;flex-direction:column}.projects-grid .project__meta .links{display:flex;gap:var(--spacing-2)}.projects-grid .project__meta .tech-stack{margin:var(--spacing-2)0;font-size:.875rem;color:var(--color-text-tertiary)}.projects-grid .project__meta .tech-stack strong{color:var(--color-text-secondary);margin-right:var(--spacing-1)}.projects-grid .project__meta .tech-stack span{display:inline}