:root{--primary-green:#40826d;--secondary-green:#359268;--primary-blue:#2980b9;--secondary-blue:#1e6ba8;--text-dark:#1a202c;--text-medium:#2d3748;--text-light:#4a5568;--text-muted:#718096;--border-light:#e2e8f0;--border-lighter:#f0f0f0;--bg-white:#fefefe;--bg-light:#fafbfc;--bg-lighter:#f8fafc;--bg-body:linear-gradient(135deg,#fdfffe 0%,#fbfcfc 50%,#f8fafa 100%);--header-bg:#fffc;--header-border:#40826d1a;--card-bg:white;--edition-photo-bg:linear-gradient(135deg,#f0f9f7,#e6f4f1,#e3f2fd);--edition-photo-hover:linear-gradient(135deg,#e6f4f1,#d1ede5,#e3f2fd);--about-bg:linear-gradient(135deg,#40826d05,#2980b905);--poem-bg:linear-gradient(135deg,#40826d05,#2980b905);--poem-hover-bg:linear-gradient(135deg,#40826d0d,#2980b908);--article-hover-bg:linear-gradient(135deg,var(--bg-light),var(--bg-lighter));--section-padding:4rem 0;--container-max-width:720px;--container-padding:0 2rem;--transition-fast:.2s ease;--transition-medium:.3s ease;--shadow-sm:0 4px 12px #40826d1a;--shadow-md:0 8px 24px #40826d26;--shadow-lg:0 12px 32px #40826d33}[data-theme=dark]{--primary-green:#4eca9a;--secondary-green:#3db885;--primary-blue:#5ba3d9;--secondary-blue:#4a92c8;--text-dark:#f0f6fc;--text-medium:#e6edf3;--text-light:#c9d1d9;--text-muted:#8b949e;--border-light:#30363d;--border-lighter:#21262d;--bg-white:#0d1117;--bg-light:#161b22;--bg-lighter:#1c2128;--bg-body:linear-gradient(135deg,#0d1117 0%,#111820 50%,#151c24 100%);--header-bg:#0d1117d9;--header-border:#4eca9a26;--card-bg:#161b22;--edition-photo-bg:linear-gradient(135deg,#1a2332,#1e2a3a,#1a2535);--edition-photo-hover:linear-gradient(135deg,#1e2a3a,#243342,#1e2a3a);--about-bg:linear-gradient(135deg,#4eca9a08,#5ba3d908);--poem-bg:linear-gradient(135deg,#4eca9a08,#5ba3d908);--poem-hover-bg:linear-gradient(135deg,#4eca9a14,#5ba3d90d);--article-hover-bg:linear-gradient(135deg,#161b22,#1c2128);--shadow-sm:0 4px 12px #0000004d;--shadow-md:0 8px 24px #0006;--shadow-lg:0 12px 32px #00000080}[data-theme=coffee]{--primary-green:#8b5a2b;--secondary-green:sienna;--primary-blue:#d2691e;--secondary-blue:peru;--text-dark:#3e2723;--text-medium:#4e342e;--text-light:#5d4037;--text-muted:#795548;--border-light:#d7ccc8;--border-lighter:#efebe9;--bg-white:#faf8f5;--bg-light:#f5f0e8;--bg-lighter:#efe8dc;--bg-body:linear-gradient(135deg,#faf8f5 0%,#f5f0e8 50%,#efe8dc 100%);--header-bg:#faf8f5e6;--header-border:#8b5a2b26;--card-bg:#faf8f5;--edition-photo-bg:linear-gradient(135deg,#f5f0e8,#efe8dc,#e8dfd3);--edition-photo-hover:linear-gradient(135deg,#efe8dc,#e8dfd3,#ddd4c6);--about-bg:linear-gradient(135deg,#8b5a2b0a,#d2691e08);--poem-bg:linear-gradient(135deg,#8b5a2b0a,#d2691e08);--poem-hover-bg:linear-gradient(135deg,#8b5a2b14,#d2691e0d);--article-hover-bg:linear-gradient(135deg,#f5f0e8,#efe8dc);--shadow-sm:0 4px 12px #3e27231a;--shadow-md:0 8px 24px #3e272326;--shadow-lg:0 12px 32px #3e272333}*{box-sizing:border-box;margin:0;padding:0}body{color:var(--text-medium);background:var(--bg-body);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:16px;line-height:1.7;transition:background .3s,color .3s;overflow-x:hidden}.container{max-width:var(--container-max-width);padding:var(--container-padding);margin:0 auto}#poetry .container{max-width:1200px}.progress-bar{background:linear-gradient(90deg,var(--primary-green),var(--secondary-green),var(--primary-blue));z-index:1000;width:0%;height:3px;transition:width .1s;position:fixed;top:0;left:0}header{border-bottom:1px solid var(--header-border);background:var(--header-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:100;padding:1rem 0;transition:background .3s,border-color .3s;position:sticky;top:0}header .container{max-width:1100px}nav{justify-content:space-between;align-items:center;min-height:40px;display:flex;position:relative}.logo{color:var(--text-dark);transition:color var(--transition-fast);white-space:nowrap;flex-shrink:0;font-size:1.25rem;font-weight:600;text-decoration:none}.logo:hover{color:var(--primary-green)}.nav-center{gap:1.5rem;margin:0;list-style:none;display:flex;position:absolute;left:50%;transform:translate(-50%)}.nav-center a{color:var(--text-muted);transition:color var(--transition-fast);padding:.5rem 0;font-size:.95rem;text-decoration:none;position:relative}.nav-center a:after{content:"";background:var(--primary-green);width:0;height:2px;transition:width var(--transition-fast);position:absolute;bottom:0;left:0}.nav-center a:hover{color:var(--primary-green)}.nav-center a:hover:after{width:100%}.social-links{flex-shrink:0;align-items:center;gap:.75rem;display:flex}.social-links a{width:32px;height:32px;color:var(--text-muted);transition:all var(--transition-fast);border-radius:50%;justify-content:center;align-items:center;font-size:1.1rem;font-weight:600;text-decoration:none;display:flex}.social-links a:hover{color:var(--primary-green);background:#40826d26;transform:translateY(-1px)}[data-theme=dark] .social-links a:hover{background:#4eca9a26}.hero{padding:4rem 0 3rem}.hero-content{flex-direction:column;align-items:center;gap:2.5rem;display:flex}.hero-text{text-align:center}.hero h1{color:var(--text-dark);letter-spacing:-.02em;margin-bottom:1rem;font-size:clamp(2rem,5vw,3rem);font-weight:700}.hero .subtitle{background:linear-gradient(135deg,var(--primary-green),var(--primary-blue));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:1.5rem;font-size:clamp(1rem,3vw,1.25rem);font-weight:500}.hero p{color:var(--text-light);max-width:500px;margin:0 auto;font-size:clamp(.95rem,2vw,1.1rem);line-height:1.8}.hero-photos{flex-direction:column;align-items:center;gap:2rem;width:100%;max-width:800px;display:flex}.photo-main{border:3px solid var(--primary-green);border-radius:50%;flex-shrink:0;width:160px;height:160px;overflow:hidden;box-shadow:0 8px 32px #40826d33}.photo-main img{object-fit:cover;width:100%;height:100%}.photo-collage{grid-template-columns:repeat(3,1fr);gap:.75rem;width:100%;display:grid}.photo-item{aspect-ratio:4/3;transition:transform var(--transition-fast),box-shadow var(--transition-fast);box-shadow:var(--shadow-sm);border-radius:12px;overflow:hidden}.photo-item:hover{box-shadow:var(--shadow-md);transform:scale(1.03)}.photo-item{cursor:pointer}.photo-item img{object-fit:cover;width:100%;height:100%}.lightbox{-webkit-backdrop-filter:blur(20px);z-index:1000;cursor:pointer;background:#ffffffd9;justify-content:center;align-items:center;padding:2rem;animation:.2s fadeIn;display:flex;position:fixed;inset:0}[data-theme=dark] .lightbox{background:#0d1117e6}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.lightbox img{object-fit:contain;cursor:default;border-radius:16px;max-width:min(90%,800px);max-height:85vh;animation:.25s scaleIn;box-shadow:0 25px 80px #40826d40,0 10px 30px #0000001a}[data-theme=dark] .lightbox img{box-shadow:0 25px 80px #00000080}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.lightbox-close{background:var(--card-bg);border:1px solid var(--border-light);cursor:pointer;width:44px;height:44px;color:var(--text-muted);transition:all var(--transition-fast);box-shadow:var(--shadow-sm);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:1.5rem;right:1.5rem}.lightbox-close:hover{color:var(--primary-green);border-color:var(--primary-green)}.about{background:var(--about-bg);border-top:1px solid var(--header-border);border-bottom:1px solid var(--header-border);transition:background .3s,border-color .3s}.about-content{grid-template-columns:1fr 2fr;align-items:start;gap:3rem;display:grid}.about-sidebar h3{background:linear-gradient(135deg,var(--primary-green),var(--primary-blue));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:.5rem;font-size:1.1rem;font-weight:600}.about-sidebar p{color:var(--text-muted);font-size:.9rem;line-height:1.6}.about-main p{color:var(--text-light);margin-bottom:1.2rem;font-size:1rem;line-height:1.7}.about-main p:last-child{margin-bottom:0}.section{padding:var(--section-padding);border-bottom:1px solid var(--border-lighter)}.section:last-child{border-bottom:none}.section-header{text-align:center;margin-bottom:3rem}.section-title{color:var(--text-dark);letter-spacing:-.01em;margin-bottom:.5rem;font-size:clamp(1.5rem,4vw,2rem);font-weight:600}.section-description{color:var(--text-muted);max-width:400px;margin:0 auto;font-size:1rem}#writing .container{max-width:900px}.featured-articles{flex-direction:column;gap:0;display:flex}.featured-article{border-bottom:1px solid var(--border-lighter);transition:all var(--transition-medium);gap:1.5rem;padding:1.5rem 0;display:flex;position:relative}.featured-article:first-child{padding-top:0}.featured-article:last-child{border-bottom:none;padding-bottom:0}.featured-article-image{background:var(--poem-bg);border-radius:8px;flex-shrink:0;width:140px;height:95px;overflow:hidden}.featured-article-image img{object-fit:cover;width:100%;height:100%;transition:transform var(--transition-medium)}.featured-article:hover .featured-article-image img{transform:scale(1.05)}.featured-article-content{flex:1;min-width:0}.article-meta{align-items:center;gap:.75rem;margin-bottom:.35rem;display:flex}.featured-badge{color:var(--primary-green);text-transform:uppercase;letter-spacing:.5px;font-size:.65rem;font-weight:600;display:inline-block}.article-date{color:var(--text-muted);font-size:.75rem}.featured-article h3{color:var(--text-dark);transition:color var(--transition-fast);margin-bottom:.35rem;font-size:1.05rem;font-weight:600;line-height:1.4}.featured-article:hover h3{color:var(--primary-green)}.featured-article p{color:var(--text-light);margin-bottom:.5rem;font-size:.875rem;line-height:1.6}.featured-article a{color:var(--primary-green);transition:color var(--transition-fast);font-size:.85rem;font-weight:500;text-decoration:none}.featured-article a:hover{color:var(--secondary-green);text-decoration:underline}.more-articles-section{border-top:1px solid var(--border-lighter);margin-top:2rem;padding-top:1.5rem}.more-articles-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:1rem;font-size:.75rem;font-weight:600}.articles-carousel-wrapper{z-index:1;align-items:center;gap:1rem;margin:0 -.5rem;display:flex;position:relative}.articles-carousel{scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;touch-action:pan-x;gap:1rem;padding:.5rem;display:flex;overflow-x:auto}.articles-carousel::-webkit-scrollbar{display:none}.article-card{background:var(--poem-bg);scroll-snap-align:start;transition:all var(--transition-medium);border:1px solid #0000;border-radius:10px;flex:0 0 240px;padding:0;overflow:hidden}.article-card:hover{border-color:var(--primary-green);background:var(--poem-hover-bg)}.article-card-image{background:var(--border-lighter);width:100%;height:120px;overflow:hidden}.article-card-image img{object-fit:cover;width:100%;height:100%;transition:transform var(--transition-medium)}.article-card:hover .article-card-image img{transform:scale(1.05)}.article-card-date{color:var(--text-muted);margin-bottom:.25rem;padding:.75rem 1rem 0;font-size:.7rem;display:block}.article-card:has(.article-card-image) .article-card-date{padding-top:.75rem}.article-card h3{color:var(--text-dark);margin-bottom:.35rem;padding:0 1rem;font-size:.9rem;font-weight:600;line-height:1.4}.article-card:not(:has(.article-card-image)) h3{padding-top:1rem}.article-card:not(:has(.article-card-date)) h3{padding-top:1rem}.article-card p{color:var(--text-light);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:.5rem;padding:0 1rem;font-size:.8rem;line-height:1.5;display:-webkit-box;overflow:hidden}.article-card a{color:var(--primary-green);transition:color var(--transition-fast);padding:0 1rem 1rem;font-size:.8rem;font-weight:500;text-decoration:none;display:block}.article-card a:hover{color:var(--secondary-green)}.carousel-btn{border:1px solid var(--border-light);background:var(--card-bg);width:36px;height:36px;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);z-index:10;-webkit-tap-highlight-color:transparent;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.carousel-btn:hover{border-color:var(--primary-green);color:var(--primary-green)}.carousel-btn svg{width:18px;height:18px}.coffee-story{position:relative}.story-timeline{grid-template-columns:repeat(2,1fr);gap:1.5rem;display:grid}.edition{background:var(--card-bg);border:1px solid var(--border-light);transition:all var(--transition-medium);border-radius:16px;padding:1.25rem;position:relative}.edition:hover{border-color:var(--primary-green);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.edition-number{background:linear-gradient(135deg,var(--primary-green),var(--primary-blue));color:#fff;border-radius:20px;margin-bottom:.75rem;padding:.25rem .6rem;font-size:.7rem;font-weight:600;display:inline-block}.edition-photo{aspect-ratio:4/3;background:var(--edition-photo-bg);width:100%;color:var(--text-muted);transition:all var(--transition-medium);border-radius:10px;justify-content:center;align-items:center;margin-bottom:1rem;font-size:.75rem;display:flex;overflow:hidden}.edition:hover .edition-photo{background:var(--edition-photo-hover)}.edition h3{color:var(--text-dark);margin-bottom:.5rem;font-size:1rem;font-weight:600;line-height:1.4}.edition p{color:var(--text-light);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:.85rem;line-height:1.6;display:-webkit-box;overflow:hidden}.edition-meta{border-top:1px solid var(--border-lighter);color:var(--text-muted);flex-direction:column;gap:.25rem;margin-top:.75rem;padding-top:.75rem;font-size:.75rem;display:flex}.edition-date{color:var(--primary-green);font-weight:600}.edition-location{font-style:italic}.poetry-container{text-align:left}.poems-accordion{flex-direction:column;gap:.75rem;max-width:700px;margin:0 auto;display:flex}.poem-accordion-item{background:var(--card-bg);border:1px solid var(--border-light);transition:all var(--transition-medium);border-radius:12px;overflow:hidden}.poem-accordion-item:hover{border-color:var(--primary-green)}.poem-accordion-item.open{border-color:var(--primary-green);box-shadow:var(--shadow-sm)}.poem-accordion-header{cursor:pointer;text-align:left;width:100%;color:var(--text-medium);transition:all var(--transition-fast);background:0 0;border:none;justify-content:space-between;align-items:center;padding:1rem 1.25rem;display:flex}.poem-accordion-header:hover{background:var(--poem-hover-bg)}.poem-accordion-title{flex-direction:column;gap:.25rem;display:flex}.poem-accordion-title h3{background:linear-gradient(135deg,var(--primary-green),var(--primary-blue));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:0;font-size:1.1rem;font-weight:600}.poem-accordion-date{color:var(--text-muted);font-size:.75rem}.poem-accordion-content{max-height:0;transition:max-height .4s,padding .4s;overflow:hidden}.poem-accordion-item.open .poem-accordion-content{max-height:1000px;padding:0 1.25rem 1.25rem}.poem-accordion-text{color:var(--text-medium);white-space:pre-line;word-wrap:break-word;overflow-wrap:break-word;border-top:1px solid var(--border-lighter);padding-top:1rem;font-size:.9rem;font-style:italic;line-height:1.9}.contact{text-align:center;padding:4rem 0}.contact-link{background:linear-gradient(135deg,var(--primary-green),var(--primary-blue));color:#fff;transition:all var(--transition-fast);border-radius:6px;margin-top:1rem;padding:1rem 2rem;font-weight:500;text-decoration:none;display:inline-block}.contact-link:hover{background:linear-gradient(135deg,var(--secondary-green),var(--secondary-blue));transform:translateY(-1px);box-shadow:0 4px 12px #40826d4d}html{scroll-behavior:smooth}.theme-toggle{border:1px solid var(--border-light);cursor:pointer;width:36px;height:36px;color:var(--text-muted);transition:all var(--transition-fast);background:0 0;border-radius:50%;justify-content:center;align-items:center;margin-left:.5rem;display:flex}.theme-toggle:hover{color:var(--primary-green);border-color:var(--primary-green);background:#40826d1a}[data-theme=dark] .theme-toggle:hover{background:#4eca9a26}.theme-toggle svg{width:18px;height:18px}a:focus{outline:2px solid var(--primary-green);outline-offset:2px}.social-links .resume-link{color:var(--primary-green);background:0 0;width:auto;height:auto;padding:.5rem 0;font-weight:600}.social-links .resume-link:hover{color:var(--secondary-green);background:0 0;transform:none}.resume-page{background:var(--bg-light);min-height:100vh;padding:2rem 0}.resume-header{text-align:center;border-bottom:1px solid var(--border-lighter);margin-bottom:3rem;padding-bottom:2rem}.back-link{color:var(--primary-green);transition:color var(--transition-fast);margin-bottom:1rem;text-decoration:none;display:inline-block}.back-link:hover{color:var(--secondary-green)}.resume-header h1{color:var(--text-dark);margin-bottom:.5rem;font-size:2.5rem;font-weight:700}.resume-subtitle{color:var(--text-muted);font-size:1.1rem}.resume-content{max-width:800px;margin:0 auto}.resume-section{margin-bottom:3rem}.resume-section h2{color:var(--text-dark);border-bottom:2px solid var(--primary-green);margin-bottom:1.5rem;padding-bottom:.5rem;font-size:1.5rem;font-weight:600}.resume-item{background:var(--card-bg);border:1px solid var(--border-light);transition:all var(--transition-fast);border-radius:8px;margin-bottom:1.5rem;padding:1.5rem}.resume-item:hover{border-color:var(--primary-green);box-shadow:var(--shadow-sm)}.resume-item-header{justify-content:space-between;align-items:baseline;margin-bottom:.5rem;display:flex}.resume-item-header h3{color:var(--text-dark);font-size:1.2rem;font-weight:600}.company{color:var(--primary-green);font-weight:500}.resume-item-meta{color:var(--text-muted);justify-content:space-between;margin-bottom:1rem;font-size:.9rem;display:flex}.resume-item-details{padding:0;list-style:none}.resume-item-details li{color:var(--text-light);margin-bottom:.5rem;padding-left:1rem;line-height:1.6;position:relative}.resume-item-details li:before{content:"•";color:var(--primary-green);position:absolute;left:0}.degree-details{color:var(--text-light);font-style:italic}.skills-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:2rem;display:grid}.skill-category h4{color:var(--text-dark);margin-bottom:.5rem;font-weight:600}.skill-category ul{padding:0;list-style:none}.skill-category li{color:var(--text-light);margin-bottom:.3rem;line-height:1.6}.mobile-menu-toggle{border:1px solid var(--border-light);cursor:pointer;width:40px;height:40px;color:var(--text-muted);transition:all var(--transition-fast);background:0 0;border-radius:8px;justify-content:center;align-items:center;margin-left:.5rem;display:none}.mobile-menu-toggle:hover{color:var(--primary-green);border-color:var(--primary-green)}.mobile-menu-toggle svg{width:20px;height:20px}.mobile-menu-overlay{z-index:200;background:#00000080;position:fixed;inset:0}.mobile-menu{background:var(--bg-white);z-index:300;opacity:0;pointer-events:none;visibility:hidden;width:100%;height:100vh;padding:5rem 2rem 2rem;transition:opacity .25s,visibility .25s;display:none;position:fixed;inset:0;overflow-y:auto}.mobile-menu.active{opacity:1;pointer-events:auto;visibility:visible}.mobile-menu-close{cursor:pointer;width:44px;height:44px;color:var(--text-medium);background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:absolute;top:1rem;right:1rem}.mobile-menu-close svg{width:24px;height:24px}.mobile-nav{flex-direction:column;align-items:center;gap:.5rem;display:flex}.mobile-nav a{color:var(--text-medium);text-align:center;transition:color var(--transition-fast);padding:.75rem 1rem;font-size:1.125rem;font-weight:500;text-decoration:none;display:block}.mobile-nav a:active{color:var(--primary-green)}.mobile-social{justify-content:center;gap:2rem;margin-top:2.5rem;display:flex}.mobile-social a{color:var(--text-muted);transition:color var(--transition-fast);font-size:.875rem;text-decoration:none}.mobile-social a:active{color:var(--primary-green)}@media (max-width:768px){:root{--container-padding:0 1rem;--section-padding:3rem 0}header{padding:.75rem 0}.logo{font-size:1.1rem}.mobile-menu-toggle{display:flex}.mobile-menu{pointer-events:none;visibility:hidden;display:block}.mobile-menu.active{pointer-events:auto;visibility:visible}.nav-center,.social-links a{display:none}.social-links{gap:.5rem}.theme-toggle,.mobile-menu-toggle{width:40px;height:40px}.featured-article{flex-direction:column;gap:1rem;padding:1.25rem 0}.featured-article-image{width:100%;height:160px}.featured-article h3{font-size:1.1rem}.more-articles-section{margin-top:2rem;padding-top:1.5rem}.article-card-image{height:100px}.carousel-btn{width:32px;height:32px;padding:.25rem}.carousel-btn svg{width:16px;height:16px}.articles-carousel{touch-action:pan-x;-webkit-overflow-scrolling:touch;padding:.5rem}.article-card{flex:0 0 220px;padding:1rem}.about-content{grid-template-columns:1fr;gap:2rem}.article{padding:1.5rem 0}.article:hover{padding-left:.5rem}.story-timeline{grid-template-columns:1fr;gap:1rem}.edition{padding:1rem}.edition-photo{aspect-ratio:4/3}.poems-accordion{gap:.5rem}.poem-accordion-header{padding:.875rem 1rem}.poem-accordion-title h3{font-size:1rem}.poem-accordion-item.open .poem-accordion-content{padding:0 1rem 1rem}.poem-accordion-text{font-size:.85rem;line-height:1.8}.resume-item-header{flex-direction:column;align-items:flex-start}.resume-item-meta{flex-direction:column}.hero-photos{gap:1.5rem}.photo-main{width:120px;height:120px}.photo-collage{grid-template-columns:repeat(3,1fr);gap:.4rem}.photo-item{border-radius:6px}}.section-compact{padding:2.5rem 0}.section-compact .section-header{margin-bottom:1.5rem}.bookshelf-shelves{flex-direction:column;gap:2rem;display:flex}.shelf-row{flex-direction:column;align-items:center;gap:.5rem;display:flex}.shelf-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;font-size:.75rem;font-weight:500}.shelf{flex-direction:column;align-items:center;display:flex}.shelf-books{perspective:400px;align-items:flex-end;gap:3px;padding:0 .5rem;display:flex}.book-spine{cursor:pointer;transform-origin:bottom;transition:transform var(--transition-medium),box-shadow var(--transition-medium);border-radius:2px 3px 3px 2px;position:relative;box-shadow:inset -2px 0 4px #0003,inset 2px 0 4px #ffffff1a}.book-spine:before{content:"";background:#ffffff26;width:1px;position:absolute;top:0;bottom:0;left:2px}.book-spine:hover,.book-spine.hovered{transform:rotateX(-12deg)translateY(-2px);box-shadow:inset -2px 0 4px #0003,inset 2px 0 4px #ffffff1a,0 12px 20px #00000040}.book-spine-title{white-space:nowrap;color:#ffffffe6;text-transform:uppercase;letter-spacing:.04em;font-size:.55rem;font-weight:600;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-90deg)}.book-tooltip{background:var(--card-bg);border:1px solid var(--border-light);min-width:180px;box-shadow:var(--shadow-md);z-index:10;text-align:center;border-radius:8px;padding:.75rem 1rem;animation:.2s tooltipFadeIn;position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%)}@keyframes tooltipFadeIn{0%{opacity:0;transform:translate(-50%)translateY(4px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.book-tooltip:after{content:"";border:6px solid #0000;border-top-color:var(--card-bg);position:absolute;top:100%;left:50%;transform:translate(-50%)}.book-tooltip-title{color:var(--text-dark);margin-bottom:.25rem;font-size:.85rem;font-weight:600;display:block}.book-tooltip-author{color:var(--text-muted);font-size:.75rem;display:block}.shelf-wood{background:linear-gradient(#8b7355 0%,#6d5a45 50%,#5c4a38 100%);border-radius:0 0 4px 4px;width:calc(100% + 1rem);height:8px;box-shadow:0 2px 4px #00000026,inset 0 1px #ffffff1a}[data-theme=dark] .shelf-wood{background:linear-gradient(#4a4035 0%,#3d352c 50%,#2e2722 100%)}.book-modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:200;background:#0009;justify-content:center;align-items:center;padding:1rem;animation:.3s forwards overlayFadeIn;display:flex;position:fixed;inset:0}.book-modal-overlay.closing{animation:.4s forwards overlayFadeOut}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}@keyframes overlayFadeOut{0%{opacity:1}to{opacity:0}}.book-modal{background:var(--card-bg);width:100%;max-width:400px;box-shadow:var(--shadow-lg);transform-origin:50%;border-radius:12px;animation:.4s cubic-bezier(.34,1.56,.64,1) forwards bookOpen;position:relative}.book-modal.closing{animation:.4s cubic-bezier(.36,0,.66,-.56) forwards bookClose}@keyframes bookOpen{0%{opacity:0;transform:translate(calc(var(--origin-x) - 50vw),calc(var(--origin-y) - 50vh))scaleX(.1)scaleY(.4)rotateY(-90deg);background:var(--book-color);border-radius:2px}40%{opacity:1;border-radius:4px;transform:translate(0)scaleX(.6)scaleY(.8)rotateY(-45deg)}to{opacity:1;background:var(--card-bg);border-radius:12px;transform:translate(0)scaleX(1)scaleY(1)rotateY(0)}}@keyframes bookClose{0%{opacity:1;background:var(--card-bg);border-radius:12px;transform:translate(0)scaleX(1)scaleY(1)rotateY(0)}60%{opacity:1;border-radius:4px;transform:translate(0)scaleX(.6)scaleY(.8)rotateY(-45deg)}to{opacity:0;transform:translate(calc(var(--origin-x) - 50vw),calc(var(--origin-y) - 50vh))scaleX(.1)scaleY(.4)rotateY(-90deg);background:var(--book-color);border-radius:2px}}.book-modal-close{background:var(--bg-light);cursor:pointer;width:32px;height:32px;color:var(--text-muted);transition:all var(--transition-fast);z-index:1;opacity:0;border:none;border-radius:50%;justify-content:center;align-items:center;animation:.3s .2s forwards contentFadeIn;display:flex;position:absolute;top:.75rem;right:.75rem}.book-modal.closing .book-modal-close{animation:.15s forwards contentFadeOut}.book-modal-close:hover{background:var(--bg-lighter);color:var(--text-dark)}.book-modal-content{opacity:0;padding:2rem;animation:.4s .15s forwards contentFadeIn}.book-modal.closing .book-modal-content{animation:.2s forwards contentFadeOut}@keyframes contentFadeIn{0%{opacity:0}to{opacity:1}}@keyframes contentFadeOut{0%{opacity:1}to{opacity:0}}.book-modal-info{text-align:center}.book-modal-title{color:var(--text-dark);margin-bottom:.25rem;font-size:1.25rem;font-weight:600}.book-modal-author{color:var(--text-muted);margin-bottom:1rem;font-size:.9rem}.book-modal-description{color:var(--text-light);font-size:.9rem;line-height:1.6}@media (max-width:600px){.bookshelf-shelves{gap:1.5rem}.book-spine-title{font-size:.5rem}.shelf-label{font-size:.7rem}.book-tooltip{min-width:150px;padding:.5rem .75rem}.book-tooltip-title{font-size:.8rem}.book-tooltip-author{font-size:.7rem}.book-modal{max-width:100%}.book-modal-content{padding:1.5rem}.book-modal-title{font-size:1.1rem}.book-modal-author,.book-modal-description{font-size:.85rem}}
