html{scrollbar-gutter:stable}:root{--color-bg:#ffffff;--color-text:#222222;--color-border:#222222;--color-link:#0000ee;--color-button-bg:#fff;--color-button-hover:#e0e0e0}[data-theme=light]{--color-bg:#ffffff;--color-text:#222222;--color-border:#222222;--color-link:#0000ee;--color-button-bg:#fff;--color-button-hover:#e0e0e0}[data-theme=dark]{--color-bg:#1a1a1a;--color-text:#e0e0e0;--color-border:#e0e0e0;--color-link:#66b3ff;--color-button-bg:#2a2a2a;--color-button-hover:#3a3a3a}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--color-bg:#1a1a1a;--color-text:#e0e0e0;--color-border:#e0e0e0;--color-link:#66b3ff;--color-button-bg:#2a2a2a;--color-button-hover:#3a3a3a}:root:not([data-theme=light]) .image-wrapper img:hover{box-shadow:0 4px 12px rgba(255,255,255,.1)}:root:not([data-theme=light]) .expand-button{background:rgba(255,255,255,.2);color:#fff}:root:not([data-theme=light]) .expand-button:hover{background:rgba(255,255,255,.3)}:root:not([data-theme=light]) .image-caption{color:#aaa}:root:not([data-theme=light]) .post-item{border-bottom-color:#333}:root:not([data-theme=light]) .post-summary{color:#ccc}:root:not([data-theme=light]) .post-date{color:#aaa}:root:not([data-theme=light]) .hashtag{color:#999}:root:not([data-theme=light]) .hashtag:hover{color:var(--color-link)}:root:not([data-theme=light]) .post-meta{color:#999}:root:not([data-theme=light]) .site-subtitle{color:#ccc}:root:not([data-theme=light]) .section-separator{background-color:#444}:root:not([data-theme=light]) .library-card:hover{box-shadow:0 4px 12px rgba(255,255,255,.1)}:root:not([data-theme=light]) .library-card{border:1px solid rgba(255,255,255,.1)}:root:not([data-theme=light]) .card-meta .meta-item{color:#aaa}:root:not([data-theme=light]) .card-summary{color:#ccc}:root:not([data-theme=light]) .category-fiction{background-color:#1a3a5c;color:#66b3ff}:root:not([data-theme=light]) .category-non-fiction{background-color:#5c3a1a;color:#fa6}:root:not([data-theme=light]) .library-banner{box-shadow:0 4px 12px rgba(255,255,255,.1)}:root:not([data-theme=light]) .isbn{background:rgba(255,255,255,.1)}:root:not([data-theme=light]) .isbn-copy-btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:#ccc}:root:not([data-theme=light]) .isbn-copy-btn:hover{background:rgba(255,255,255,.15);color:#fff}:root:not([data-theme=light]) .tag-cloud-item:hover{color:var(--color-link)}:root:not([data-theme=light]) .tab-button{color:#aaa}:root:not([data-theme=light]) .project-card{border-color:rgba(255,255,255,.2)}:root:not([data-theme=light]) .project-card:hover{box-shadow:0 4px 20px rgba(255,255,255,.1)}:root:not([data-theme=light]) .project-card.cemetery{border-color:rgba(255,255,255,.1)}:root:not([data-theme=light]) .project-meta time{color:#aaa}:root:not([data-theme=light]) .status-current{background-color:#1a3a5c;color:#66b3ff}:root:not([data-theme=light]) .status-cemetery{background-color:#2a2a2a;color:#aaa}:root:not([data-theme=light]) .project-summary{color:#ccc}:root:not([data-theme=light]) .empty-state{color:#aaa}}.image-container{margin:1.5rem 0;position:relative;display:block;max-width:100%}.image-wrapper{position:relative;display:inline-block;max-width:100%;cursor:pointer;border-radius:8px;overflow:visible}.image-wrapper img{display:block;width:100%;height:auto;transition:all .3s ease;border-radius:8px}.image-wrapper img:hover{box-shadow:0 4px 12px rgba(0,0,0,.15)}[data-theme=dark] .image-wrapper img:hover{box-shadow:0 4px 12px rgba(255,255,255,.1)}.image-wrapper.collapsed img{max-width:clamp(280px,60vw + 100px,600px)}.image-wrapper.expanded img{max-width:100%}.image-wrapper.full-size img{max-width:100%}.image-wrapper.full-size{cursor:default}.image-wrapper.full-size img:hover{box-shadow:none}.image-wrapper.no-expansion{cursor:default !important}.image-wrapper.no-expansion img:hover{box-shadow:none !important}.expand-button{position:absolute;top:12px;left:12px;background:rgba(0,0,0,.7);color:#fff;border:none;border-radius:50%;width:36px;height:36px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .2s ease;backdrop-filter:blur(4px);opacity:.8}.expand-button:hover{background:rgba(0,0,0,.9);opacity:1;transform:scale(1.1)}[data-theme=dark] .expand-button{background:rgba(255,255,255,.2);color:#fff}[data-theme=dark] .expand-button:hover{background:rgba(255,255,255,.3)}.image-wrapper.full-size .expand-button{display:none}.expand-icon{width:18px;height:18px;transition:transform .2s ease}.image-wrapper.expanded .expand-icon{transform:rotate(180deg)}.image-caption{margin-top:.75rem;font-style:italic;color:#666;font-size:clamp(.85rem,1.8vw,.95rem);text-align:left;line-height:1.4}[data-theme=dark] .image-caption{color:#aaa}@media(max-width:768px){.expand-button{width:32px;height:32px;font-size:14px;top:8px;left:8px}.expand-icon{width:16px;height:16px}}@media(max-width:480px){.image-container{margin:1rem 0}}.image-wrapper.loading img{opacity:.7;filter:blur(2px)}.image-wrapper.loading .expand-button{opacity:.5;pointer-events:none}.image-wrapper *{transition:all .3s ease}body{color:var(--color-text);background-color:var(--color-bg);font-family:sans-serif;font-size:clamp(1rem,2vw,1.125rem);line-height:1.5;margin:1rem auto;padding-left:clamp(0rem,8vw,10rem);padding-right:clamp(0rem,8vw,10rem);max-width:1024px;transition:background-color .3s ease,color .3s ease}h1{font-size:clamp(1.5rem,3vw,1.8rem);font-weight:600;line-height:1.2;margin:1.5rem 0 1rem}h2{font-size:clamp(1.3rem,2.5vw,1.5rem);font-weight:600;line-height:1.3;margin:1.3rem 0 .8rem}h3{font-size:clamp(1.15rem,2.2vw,1.3rem);font-weight:600;line-height:1.3;margin:1.2rem 0 .6rem}h4{font-size:clamp(1.1rem,2vw,1.2rem);font-weight:600;line-height:1.4;margin:1rem 0 .5rem}h5{font-size:clamp(1.05rem,1.8vw,1.1rem);font-weight:600;line-height:1.4;margin:1rem 0 .5rem}h6{font-size:clamp(1rem,1.5vw,1.05rem);font-weight:600;line-height:1.4;margin:1rem 0 .5rem}.site-title{font-size:clamp(2rem,4vw,2.5rem);font-weight:700;line-height:1.1;margin:0}header{border-bottom:1px solid var(--color-border);margin-bottom:1rem;position:relative}.header-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.site-branding{display:flex;flex-direction:column}.site-subtitle{color:#666;font-size:1.1rem;font-weight:400;margin:0;opacity:1}.header-menu{margin-top:.5rem}.header-controls{display:flex;align-items:center;gap:1rem}.hamburger-menu{display:none;background:0 0;border:none;cursor:pointer;flex-direction:column;justify-content:space-around;width:32px;height:32px;padding:4px;transition:all .3s ease}.hamburger-line{display:block;height:2px;width:100%;background-color:var(--color-text);transition:all .3s ease;border-radius:2px}.hamburger-menu.active .hamburger-line:nth-child(1){transform:rotate(45deg)translate(6px,6px)}.hamburger-menu.active .hamburger-line:nth-child(2){opacity:0}.hamburger-menu.active .hamburger-line:nth-child(3){transform:rotate(-45deg)translate(6px,-6px)}@media(max-width:768px){.hamburger-menu{display:flex}.header-menu nav ul{display:none;position:fixed;top:0;left:-100%;width:80%;max-width:320px;height:100vh;background:var(--color-bg);flex-direction:column;gap:0;padding:2rem 1.5rem;margin:0;z-index:1000;transition:left .3s ease;border-right:1px solid var(--color-border);box-shadow:2px 0 10px rgba(0,0,0,.1)}.header-menu nav ul.mobile-nav-active{display:flex;left:0}.header-menu nav li{width:100%}.header-menu nav a{display:block;padding:1rem 0;border-bottom:1px solid rgba(0,0,0,.1);min-height:44px;display:flex;align-items:center;font-size:1.1rem}.header-menu nav a:last-child{border-bottom:none}[data-theme=dark] .header-menu nav ul{box-shadow:2px 0 10px rgba(255,255,255,.1)}[data-theme=dark] .header-menu nav a{border-bottom-color:rgba(255,255,255,.1)}.mobile-nav-overlay{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;background:rgba(0,0,0,.5);z-index:999}.mobile-nav-overlay.active{display:block}}nav ul{list-style:none;padding:0;padding-top:.5rem;margin:0;display:flex;gap:2rem}nav li{margin:0}nav a{text-transform:uppercase;font-weight:700;font-size:clamp(.9rem,2vw,1rem);letter-spacing:.05em;text-decoration:none;color:var(--color-text);transition:opacity .2s ease}nav a:hover{opacity:.7}nav a.active{color:var(--color-link)}footer{border-top:1px solid var(--color-border);margin-top:1rem}a{color:var(--color-link);text-decoration:none}.theme-switcher{width:40px;height:40px;padding:0;border:1px solid rgba(0,0,0,.1);background-color:var(--color-button-bg);color:var(--color-text);cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s ease}.theme-switcher:hover{background-color:var(--color-button-hover)}.theme-icon{display:none;width:24px;height:24px}[data-theme=system] .theme-icon-system,:root:not([data-theme]) .theme-icon-system{display:block}[data-theme=light] .theme-icon-light{display:block}[data-theme=dark] .theme-icon-dark{display:block}@media(prefers-color-scheme:dark){[data-theme=system] .system-sun,:root:not([data-theme]) .system-sun{display:none}[data-theme=system] .system-moon,:root:not([data-theme]) .system-moon{display:block !important}}.post-list{margin-top:1.5rem}.post-item{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid #eee}[data-theme=dark] .post-item{border-bottom-color:#333}.post-item:last-child{border-bottom:none;margin-bottom:0}.post-item-main{display:flex;flex-direction:column;gap:.5rem}.post-item-title{margin:0;font-size:clamp(1.2rem,2.5vw,1.4rem);font-weight:600;line-height:1.3}.post-title{color:var(--color-link);text-decoration:none}.post-title:hover{text-decoration:underline}.post-summary{color:#666;font-size:clamp(.9rem,2vw,1rem);line-height:1.5;margin-top:.25rem}[data-theme=dark] .post-summary{color:#ccc}.post-list.compact .post-item{margin-bottom:.5rem;padding-bottom:0;border-bottom:none;display:flex;font-size:clamp(.8rem,2vw,1rem);gap:1rem;align-items:baseline}.post-list.compact .post-item-main{display:flex;flex-direction:row;align-items:baseline;gap:1rem}.post-list.compact .post-item-title{font-size:inherit;font-weight:400}.post-date{color:#888;font-family:monospace;font-size:clamp(.8rem,2vw,1rem);min-width:80px;flex-shrink:0}[data-theme=dark] .post-date{color:#aaa}.hashtag-cloud{margin-top:1rem;margin-bottom:.5rem}.hashtag{display:inline-block;color:#666;font-size:clamp(.9rem,2vw,1rem);text-decoration:none;margin-right:.5rem;margin-bottom:.25rem;transition:color .2s ease}.hashtag:hover{color:var(--color-link)}[data-theme=dark] .hashtag{color:#999}[data-theme=dark] .hashtag:hover{color:var(--color-link)}.social-links{display:flex;gap:1rem;justify-content:center;margin:1rem 0}.social-links a{color:inherit;text-decoration:none;opacity:.7;transition:opacity .2s ease}.social-links a:hover{opacity:1}.copyright{text-align:center;opacity:.6;font-size:.9rem}.post-meta{color:#666;font-size:clamp(.9rem,2vw,1rem);margin-bottom:1.5rem;display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}[data-theme=dark] .post-meta{color:#999}.meta-separator{opacity:.7}.blip-permalink-icon{display:inline-flex;align-items:center;vertical-align:middle;text-decoration:none;color:inherit}.blip-permalink-icon svg{width:1em;height:1em}.blip-single{padding-top:2rem}.section-separator{border:none;height:1px;background-color:#d0d0d0;margin:1.5rem 0;opacity:.8}[data-theme=dark] .site-subtitle{color:#ccc}[data-theme=dark] .section-separator{background-color:#444}pre{position:relative;overflow-x:auto;padding:1.5rem;margin:1.5rem 0;border-radius:8px;font-family:sf mono,monaco,cascadia code,roboto mono,Consolas,courier new,monospace;font-size:clamp(.85rem,1.8vw,.95rem);line-height:1.4;background-color:#fafafa}code{font-family:sf mono,monaco,cascadia code,roboto mono,Consolas,courier new,monospace;font-size:clamp(.85rem,1.8vw,.95rem)}.code-block-wrapper{position:relative;margin:1.5rem 0}.code-copy-btn{position:absolute;top:.75rem;right:.75rem;background:rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.2);border-radius:4px;padding:.375rem;cursor:pointer;color:#666;transition:all .2s ease;z-index:10;display:flex;align-items:center;justify-content:center;width:32px;height:32px}.code-copy-btn:hover{background:rgba(0,0,0,.15);color:#333}.code-copy-btn.copied{background:#10b981;color:#fff;border-color:#10b981}[data-theme=dark] .code-copy-btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:#ccc}[data-theme=dark] .code-copy-btn:hover{background:rgba(255,255,255,.15);color:#fff}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .code-copy-btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:#ccc}:root:not([data-theme=light]) .code-copy-btn:hover{background:rgba(255,255,255,.15);color:#fff}:root:not([data-theme=light]) pre{background-color:#282a36;color:#f8f8f2}}[data-theme=dark] pre{background-color:#282a36;color:#f8f8f2}.blockquote-container{margin:2rem 0;position:relative}.blockquote-container blockquote{margin:0;padding:1.5rem;border-left:4px solid var(--color-link);background:rgba(0,0,0,2%);font-style:italic;font-size:clamp(1rem,2.2vw,1.125rem);line-height:1.6;color:var(--color-text);border-radius:0 8px 8px 0;position:relative}.blockquote-container blockquote p:first-child{margin-top:0}.blockquote-container blockquote p:last-child{margin-bottom:0}.blockquote-caption{margin-top:.75rem;font-size:clamp(.85rem,1.8vw,.95rem);color:#666;text-align:right;font-style:normal;font-weight:500}.blockquote-caption::before{content:"— ";opacity:.7}[data-theme=dark] .blockquote-container blockquote{background:rgba(255,255,255,5%);color:var(--color-text)}[data-theme=dark] .blockquote-caption{color:#aaa}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .blockquote-container blockquote{background:rgba(255,255,255,5%);color:var(--color-text)}:root:not([data-theme=light]) .blockquote-caption{color:#aaa}}.blockquote-alert{border-radius:8px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.1)}.blockquote-alert blockquote{border-left:none;border-radius:0;margin:0;font-style:normal}.blockquote-alert-header{display:flex;align-items:center;gap:.75rem;padding:1rem 1.5rem;font-weight:600;font-size:clamp(.9rem,2vw,1rem);border-bottom:1px solid rgba(0,0,0,.1)}.blockquote-alert-icon{font-size:1.2em;flex-shrink:0}.blockquote-alert-title{text-transform:uppercase;letter-spacing:.05em}.blockquote-note{border:1px solid #0ea5e9}.blockquote-note .blockquote-alert-header{background:#e0f2fe;color:#0c4a6e;border-bottom-color:#0ea5e9}.blockquote-note blockquote{background:#f0f9ff;color:#0c4a6e}.blockquote-tip{border:1px solid #10b981}.blockquote-tip .blockquote-alert-header{background:#d1fae5;color:#064e3b;border-bottom-color:#10b981}.blockquote-tip blockquote{background:#ecfdf5;color:#064e3b}.blockquote-important{border:1px solid #8b5cf6}.blockquote-important .blockquote-alert-header{background:#ede9fe;color:#4c1d95;border-bottom-color:#8b5cf6}.blockquote-important blockquote{background:#f5f3ff;color:#4c1d95}.blockquote-warning{border:1px solid #f59e0b}.blockquote-warning .blockquote-alert-header{background:#fef3c7;color:#78350f;border-bottom-color:#f59e0b}.blockquote-warning blockquote{background:#fffbeb;color:#78350f}.blockquote-caution{border:1px solid #ef4444}.blockquote-caution .blockquote-alert-header{background:#fecaca;color:#7f1d1d;border-bottom-color:#ef4444}.blockquote-caution blockquote{background:#fef2f2;color:#7f1d1d}[data-theme=dark] .blockquote-alert{box-shadow:0 2px 8px rgba(255,255,255,.1)}[data-theme=dark] .blockquote-alert-header{border-bottom-color:rgba(255,255,255,.2)}[data-theme=dark] .blockquote-note .blockquote-alert-header{background:rgba(14,165,233,.2);color:#7dd3fc}[data-theme=dark] .blockquote-note blockquote{background:rgba(14,165,233,.1);color:#bae6fd}[data-theme=dark] .blockquote-tip .blockquote-alert-header{background:rgba(16,185,129,.2);color:#6ee7b7}[data-theme=dark] .blockquote-tip blockquote{background:rgba(16,185,129,.1);color:#a7f3d0}[data-theme=dark] .blockquote-important .blockquote-alert-header{background:rgba(139,92,246,.2);color:#c4b5fd}[data-theme=dark] .blockquote-important blockquote{background:rgba(139,92,246,.1);color:#ddd6fe}[data-theme=dark] .blockquote-warning .blockquote-alert-header{background:rgba(245,158,11,.2);color:#fcd34d}[data-theme=dark] .blockquote-warning blockquote{background:rgba(245,158,11,.1);color:#fde68a}[data-theme=dark] .blockquote-caution .blockquote-alert-header{background:rgba(239,68,68,.2);color:#f87171}[data-theme=dark] .blockquote-caution blockquote{background:rgba(239,68,68,.1);color:#fca5a5}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .blockquote-alert{box-shadow:0 2px 8px rgba(255,255,255,.1)}:root:not([data-theme=light]) .blockquote-alert-header{border-bottom-color:rgba(255,255,255,.2)}:root:not([data-theme=light]) .blockquote-note .blockquote-alert-header{background:rgba(14,165,233,.2);color:#7dd3fc}:root:not([data-theme=light]) .blockquote-note blockquote{background:rgba(14,165,233,.1);color:#bae6fd}:root:not([data-theme=light]) .blockquote-tip .blockquote-alert-header{background:rgba(16,185,129,.2);color:#6ee7b7}:root:not([data-theme=light]) .blockquote-tip blockquote{background:rgba(16,185,129,.1);color:#a7f3d0}:root:not([data-theme=light]) .blockquote-important .blockquote-alert-header{background:rgba(139,92,246,.2);color:#c4b5fd}:root:not([data-theme=light]) .blockquote-important blockquote{background:rgba(139,92,246,.1);color:#ddd6fe}:root:not([data-theme=light]) .blockquote-warning .blockquote-alert-header{background:rgba(245,158,11,.2);color:#fcd34d}:root:not([data-theme=light]) .blockquote-warning blockquote{background:rgba(245,158,11,.1);color:#fde68a}:root:not([data-theme=light]) .blockquote-caution .blockquote-alert-header{background:rgba(239,68,68,.2);color:#f87171}:root:not([data-theme=light]) .blockquote-caution blockquote{background:rgba(239,68,68,.1);color:#fca5a5}}@media(max-width:768px){.blockquote-container{margin:1.5rem 0}.blockquote-container blockquote{padding:1rem}.blockquote-alert-header{padding:.75rem 1rem}}.caption{font-size:clamp(.85rem,1.8vw,.95rem);color:#666;font-style:italic;margin:.5rem 0 1rem;font-weight:500}.caption-left{text-align:left}.caption-center{text-align:center}.caption-right{text-align:right}.caption-right::before{content:"— ";opacity:.7}[data-theme=dark] .caption{color:#aaa}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .caption{color:#aaa}}.library-filter{margin-bottom:2rem;display:flex;align-items:center;gap:.75rem}.library-filter label{font-weight:600;font-size:clamp(.9rem,2vw,1rem)}.library-filter select{padding:.5rem .75rem;border:1px solid var(--color-border);background-color:var(--color-button-bg);color:var(--color-text);border-radius:4px;font-size:clamp(.9rem,2vw,1rem);cursor:pointer}.library-filter select:hover{background-color:var(--color-button-hover)}.library-cards{display:flex;flex-wrap:wrap;gap:1.5rem;margin-top:1.5rem}.library-card{flex:0 0 218px;width:218px;border:1px solid rgba(0,0,0,.2);border-radius:8px;overflow:hidden;background-color:var(--color-bg);transition:transform .2s ease,box-shadow .2s ease}.library-card:hover{box-shadow:0 4px 12px rgba(0,0,0,.3)}[data-theme=dark] .library-card:hover{box-shadow:0 4px 12px rgba(255,255,255,.3)}.card-image{width:100%;height:327px;overflow:hidden;position:relative;border-radius:8px 8px 0 0;margin:0}.card-image img{width:100%;height:100%;object-fit:cover;display:block;border-radius:8px 8px 0 0}.card-image-placeholder{background:linear-gradient( 135deg,var(--color-button-bg),var(--color-button-hover) );display:flex;align-items:center;justify-content:center;border-radius:8px 8px 0 0}.placeholder-content{text-align:center;padding:1rem;font-size:clamp(1rem,2.5vw,1.2rem);font-weight:600;color:var(--color-text);opacity:.7}.card-content{padding:.75rem}.card-title{margin:0 0 .5rem;font-size:clamp(.95rem,2vw,1.1rem);font-weight:600;line-height:1.2}.card-title a{color:var(--color-text);text-decoration:none}.card-title a:hover{color:var(--color-link)}.card-meta{margin-bottom:.5rem}.card-meta .meta-item{margin-bottom:.2rem;font-size:clamp(.75rem,1.6vw,.85rem);color:#666}[data-theme=dark] .card-meta .meta-item{color:#aaa}.category-badge{display:inline-block;padding:.2rem .4rem;border-radius:3px;font-size:clamp(.65rem,1.3vw,.75rem);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.category-fiction{background-color:#e6f3ff;color:#06c}.category-non-fiction{background-color:#fff2e6;color:#c60}[data-theme=dark] .category-fiction{background-color:#1a3a5c;color:#66b3ff}[data-theme=dark] .category-non-fiction{background-color:#5c3a1a;color:#fa6}.card-summary{font-size:clamp(.8rem,1.8vw,.9rem);line-height:1.3;color:#666;margin:0}.library-card .image-container{margin:0 0 1.5rem}[data-theme=dark] .library-card{border:1px solid rgba(255,255,255,.1)}.card-link{display:block;text-decoration:none;color:inherit;height:100%;cursor:pointer}.card-link *{cursor:pointer}[data-theme=dark] .card-summary{color:#ccc}@media(max-width:768px){.library-card{flex:0 0 200px;width:200px}.library-cards{gap:1rem}}@media(max-width:480px){.library-card{flex:0 0 100%;width:100%}.card-image{height:200px}}.library-banner{width:100%;margin:0 auto 2rem;overflow:hidden;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);aspect-ratio:1024/200}.library-banner img{width:100%;height:auto;display:block}[data-theme=dark] .library-banner{box-shadow:0 4px 12px rgba(255,255,255,.1)}.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}.library-single{max-width:1024px}.library-summary{margin-bottom:3rem;position:relative}.library-summary::before{content:"";position:absolute;top:0;left:0;width:4px;height:100%;background:linear-gradient(180deg,var(--color-link) 0%,transparent 100%);border-radius:2px;opacity:.6}.summary-text{padding-left:1.5rem;margin:0;font-size:clamp(1.1rem,2.2vw,1.25rem);line-height:1.6;color:var(--color-text);font-style:italic;opacity:.9}.library-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:3rem;padding:0;background:0 0;border:none}.library-meta .meta-item{display:flex;flex-direction:column;gap:.25rem;margin-bottom:0;font-size:clamp(.9rem,2vw,1rem)}.meta-label{font-size:clamp(.75rem,1.5vw,.85rem);font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text);opacity:.6}.meta-item time,.meta-item span:not(.meta-label):not(.category-badge){color:var(--color-text);font-weight:400}.isbn-wrapper{display:flex;align-items:center;gap:.5rem}.isbn{font-family:sf mono,monaco,cascadia code,roboto mono,Consolas,courier new,monospace;font-size:clamp(.85rem,1.8vw,.95rem);background:rgba(0,0,0,5%);padding:.25rem .5rem;border-radius:4px;display:inline-block}[data-theme=dark] .isbn{background:rgba(255,255,255,.1)}.isbn-copy-btn{background:rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.2);border-radius:4px;padding:.25rem;cursor:pointer;color:#666;transition:all .2s ease;display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0}.isbn-copy-btn:hover{background:rgba(0,0,0,.15);color:#333}.isbn-copy-btn.copied{background:#10b981;color:#fff;border-color:#10b981}[data-theme=dark] .isbn-copy-btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:#ccc}[data-theme=dark] .isbn-copy-btn:hover{background:rgba(255,255,255,.15);color:#fff}.library-navigation{margin-top:2rem;padding-top:1rem;border-top:1px solid var(--color-border)}.library-navigation a{color:var(--color-link);text-decoration:none;font-weight:600}.library-navigation a:hover{text-decoration:underline}.library-controls{display:flex;gap:3rem;margin-bottom:2rem;flex-wrap:wrap;align-items:flex-start}.library-filter,.library-sort{display:flex;align-items:center;gap:1rem}.control-label{font-weight:600;font-size:clamp(.9rem,2vw,1rem);color:var(--color-text)}.button-group{display:flex;background:#fff;border-radius:8px;padding:.25rem;gap:.25rem}[data-theme=dark] .button-group{background:rgba(255,255,255,8%)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .button-group{background:rgba(255,255,255,8%)}}.toggle-btn{padding:.5rem 1rem;border:none;background:0 0;color:var(--color-text);border-radius:6px;font-size:clamp(.85rem,1.8vw,.95rem);cursor:pointer;transition:all .2s ease;font-family:inherit;font-weight:500;opacity:.7;position:relative}.toggle-btn:hover{opacity:1;background:rgba(255,255,255,.5)}[data-theme=dark] .toggle-btn:hover{background:rgba(255,255,255,.1)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .toggle-btn:hover{background:rgba(255,255,255,.1)}}.toggle-btn.active{background:#000;color:#fff;opacity:1;box-shadow:0 2px 4px rgba(0,0,0,.1)}[data-theme=dark] .toggle-btn.active{background:rgba(255,255,255,.15);color:var(--color-text);box-shadow:0 2px 4px rgba(0,0,0,.3)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .toggle-btn.active{background:rgba(255,255,255,.15);color:var(--color-text);box-shadow:0 2px 4px rgba(0,0,0,.3)}}.library-content{display:flex;flex-direction:column}.library-section-header{font-size:clamp(1.5rem,3vw,1.8rem);font-weight:600;margin:2rem 0 1rem;color:var(--color-text);border-bottom:2px solid var(--color-link);padding-bottom:.5rem}.library-section-header:first-child{margin-top:0}.library-section-separator{border:none;height:1px;background-color:var(--color-border);margin:1.5rem 0;opacity:.5}.card-link{text-decoration:none;color:inherit;display:block;height:100%}.card-link:hover{text-decoration:none}@media(max-width:768px){.library-controls{flex-direction:column;gap:1rem}}@media(max-width:480px){.library-controls{gap:1rem}.library-filter,.library-sort{flex-direction:column;align-items:flex-start;gap:.5rem}}.library-cards-section{display:flex;flex-wrap:wrap;gap:1.5rem;margin-bottom:1rem}.library-cards-section .library-card{flex:0 0 236px;width:236px;margin:0}@media(max-width:768px){.library-cards-section{gap:1rem}.library-cards-section .library-card{flex:0 0 218px;width:218px}}@media(max-width:480px){.library-cards-section .library-card{flex:0 0 100%;width:100%}}.projects-container{max-width:1024px;margin:0 auto}.projects-tabs{display:flex;gap:0;margin-bottom:2rem;border-bottom:1px solid var(--color-border);justify-content:center}.tab-button{padding:1rem 1.5rem;border:none;background:0 0;color:#666;font-size:clamp(.95rem,2vw,1.1rem);font-weight:500;cursor:pointer;border-bottom:3px solid transparent;transition:all .2s ease;font-family:inherit;text-transform:uppercase;letter-spacing:.05em}.tab-button:hover{color:var(--color-text);background:var(--color-button-hover)}.tab-button.active{color:var(--color-link);border-bottom-color:var(--color-link);background:0 0}[data-theme=dark] .tab-button{color:#aaa}.tab-content{display:none;animation:fadeIn .3s ease}.tab-content.active{display:block}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.projects-grid{display:grid;grid-template-columns:1fr;gap:2rem;margin-bottom:1.5rem}.project-card{border:1px solid rgba(0,0,0,.1);border-radius:12px;padding:1.5rem;background-color:var(--color-bg);transition:all .2s ease;position:relative}[data-theme=dark] .project-card{border-color:rgba(255,255,255,.2)}[data-theme=dark] .project-card:hover{box-shadow:0 4px 20px rgba(255,255,255,.1)}.project-card.cemetery{opacity:.8;border-color:rgba(0,0,0,5%)}[data-theme=dark] .project-card.cemetery{border-color:rgba(255,255,255,.1)}.project-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;font-size:clamp(.85rem,1.8vw,.95rem)}.project-meta time{color:#666;font-family:monospace}[data-theme=dark] .project-meta time{color:#aaa}.project-status{padding:.25rem .75rem;border-radius:20px;font-size:clamp(.75rem,1.5vw,.85rem);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.status-current{background-color:#e6f7ff;color:#06c}.status-cemetery{background-color:#f5f5f5;color:#666}[data-theme=dark] .status-current{background-color:#1a3a5c;color:#66b3ff}[data-theme=dark] .status-cemetery{background-color:#2a2a2a;color:#aaa}.project-title{margin:0 0 1rem;font-size:clamp(1.2rem,2.5vw,1.4rem);font-weight:600;line-height:1.2}.project-title a{color:var(--color-text);text-decoration:none;transition:color .2s ease}.project-title a:hover{color:var(--color-link)}.project-summary{color:#666;line-height:1.5;margin-bottom:1.5rem;font-size:clamp(.95rem,2vw,1.05rem)}[data-theme=dark] .project-summary{color:#ccc}.project-links{display:flex;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.project-link{display:inline-flex;align-items:center;padding:.5rem 1rem;border:1px solid var(--color-border);border-radius:6px;text-decoration:none;font-size:clamp(.85rem,1.8vw,.95rem);font-weight:500;transition:all .2s ease}.project-link:hover{background-color:var(--color-button-hover)}.project-link.read-more{background-color:var(--color-link);color:#fff;border-color:var(--color-link)}.project-link.read-more:hover{opacity:.9;background-color:var(--color-link)}.project-tags{margin-top:1rem}.empty-state{text-align:center;padding:3rem 1rem;color:#666;font-style:italic}[data-theme=dark] .empty-state{color:#aaa}.project-single{max-width:1024px;margin:0 auto}.project-header{margin-bottom:0;border-bottom:none}.project-header .project-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.project-header .project-title{font-size:clamp(1.5rem,3vw,1.8rem);font-weight:600;margin-bottom:1rem}.project-links-primary{display:flex;gap:1rem;justify-content:center;margin-bottom:0}.project-link-primary{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background-color:var(--color-link);color:#fff;text-decoration:none;border-radius:8px;font-weight:600;transition:all .2s ease;font-size:clamp(.95rem,2vw,1.05rem)}.project-link-primary:hover{opacity:.9;transform:translateY(-1px)}.project-link-primary svg{width:1.2em;height:1.2em}.project-content{margin-bottom:1rem}.project-bottom-links{display:flex;justify-content:flex-end;gap:.75rem;margin-bottom:1rem}.project-github-bottom,.project-website-bottom{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background-color:var(--color-text);color:var(--color-bg);text-decoration:none;border-radius:6px;font-weight:500;transition:all .2s ease;font-size:clamp(.85rem,1.8vw,.95rem);border:1px solid var(--color-text)}.project-github-bottom:hover,.project-website-bottom:hover{opacity:.8}.project-github-bottom svg,.project-website-bottom svg{width:1em;height:1em}.project-navigation{margin-top:0;padding-top:0;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.back-to-projects{color:var(--color-link);text-decoration:none;font-weight:600;font-size:clamp(.95rem,2vw,1.05rem)}.back-to-projects:hover{text-decoration:underline}.project-nav-links{display:flex;gap:2rem;flex-wrap:wrap}.nav-prev,.nav-next{color:var(--color-link);text-decoration:none;font-weight:500;font-size:clamp(.9rem,1.8vw,1rem)}.nav-prev:hover,.nav-next:hover{text-decoration:underline}@media(max-width:768px){.projects-grid{grid-template-columns:1fr;gap:1.5rem}.project-links{flex-direction:column;gap:.75rem}.project-link{text-align:center;justify-content:center}.project-bottom-links{justify-content:center;flex-wrap:wrap}.project-navigation{flex-direction:column;text-align:center}.project-nav-links{flex-direction:column;gap:1rem;text-align:center}}@media(max-width:480px){.projects-tabs{flex-direction:column;gap:0;margin-bottom:1.5rem}.tab-button{padding:.75rem;border-bottom:1px solid var(--color-border)}.tab-button.active{border-bottom-color:var(--color-link)}.project-card{padding:1rem}}.tags-controls{margin:2rem 0;display:flex;gap:2rem;align-items:center;flex-wrap:wrap}.tags-view{display:flex;align-items:center;gap:.5rem}.control-label{font-weight:600;color:var(--color-text);font-size:clamp(.9rem,2vw,1rem)}.button-group{display:flex;border:1px solid var(--color-border);border-radius:4px;overflow:hidden}.tags-cloud-view{margin:2rem 0;line-height:2}.tag-cloud-item{display:inline-block;color:var(--color-link);text-decoration:none;margin:.25rem .5rem .25rem 0;padding:.25rem .5rem;border:1px solid var(--color-border);border-radius:4px;transition:all .2s ease;font-weight:500}.tag-cloud-item:hover{background:var(--color-button-hover);transform:translateY(-1px)}[data-theme=dark] .tag-cloud-item:hover{background:var(--color-button-hover)}.tags-alphabetical-view{margin:2rem 0}.tags-section-header{font-size:clamp(1.5rem,3vw,2rem);margin:2rem 0 1rem;font-weight:700;color:var(--color-text)}.tags-section-separator{border:none;height:1px;background:var(--color-border);margin:1rem 0}.tags-section{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin:2rem 0}.tag-alphabetical-item{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border:1px solid var(--color-border);border-radius:4px;transition:all .2s ease}.tag-alphabetical-item:hover{background:var(--color-button-hover);transform:translateY(-1px)}.tag-link{color:var(--color-link);text-decoration:none;font-weight:500;flex:1;font-size:clamp(.95rem,2.2vw,1.1rem)}.tag-link:hover{text-decoration:underline}.tag-count{color:var(--color-text);font-size:clamp(.85rem,1.8vw,.95rem);opacity:.7;font-weight:400}@media(max-width:768px){.tags-controls{flex-direction:column;align-items:flex-start;gap:1rem}.tags-section{grid-template-columns:1fr}.toggle-btn{padding:.4rem .8rem}}@media(max-width:390px){body{padding-left:1rem;padding-right:1rem}.site-title{font-size:clamp(1.5rem,5vw,2rem);line-height:1.1}.hamburger-menu{min-height:44px;min-width:44px}.header-menu nav ul{width:85%;padding:1.5rem 1rem}.projects-grid{gap:1rem}.library-card{margin-bottom:1rem}.image-container{margin:.75rem 0}.projects-tabs{margin-bottom:1rem}.tab-button{padding:.75rem 1rem;font-size:.9rem}.expand-button{width:28px;height:28px;font-size:12px;top:6px;left:6px}.code-copy-btn{right:.5rem;top:.5rem}}