html,body{height:100%}body{background-color:#f5f5f5;margin:5px}#root{min-height:100%}.page-wrapper{min-height:calc(100vh - 10px);display:flex;flex-direction:column}.page-content{flex:1}.lora-reg{font-family:Lora,serif;font-optical-sizing:auto;font-weight:400;font-style:normal}h1,h2,h3,h4,h5,h6,p,li,button{font-family:Lora}.nav-item-top{font-size:1.6rem;text-decoration:underline;color:#00f}.home-back-link{display:inline-block;font-family:Lora;font-size:.9rem;color:inherit;text-decoration:none;padding:.5rem;opacity:.7;transition:opacity .2s ease}.home-back-link:hover{opacity:1}.home-bar{position:sticky;top:0;background-color:#f5f5f5;z-index:50;padding-top:.25rem}.home-bar hr{margin:0}.home-container{max-width:600px;margin:0;padding:2rem 1rem}.home-header{margin-bottom:3rem}.home-header h1{font-size:3.2rem;margin-bottom:.5rem}.home-tagline{font-size:1.1rem;opacity:.8;margin:0}.home-nav{display:flex;flex-direction:column;gap:.5rem}.home-nav-item{position:relative}.home-nav-item>a{text-decoration:none;color:inherit}.home-heading{font-size:2.5rem;margin:0;padding:.25rem 0;cursor:pointer;transition:opacity .2s ease;text-decoration:none;color:inherit;display:block}.home-heading:hover{opacity:.6}.home-heading.expandable{position:relative}.home-heading.expandable:after{margin-left:.5rem;font-size:1.5rem;transition:transform .3s ease;display:inline-block}.home-submenu{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease-out;overflow:hidden}.home-submenu.open{grid-template-rows:1fr}.home-submenu>a{min-height:0;overflow:hidden}.home-submenu a{display:block;font-size:1.4rem;padding:.4rem 0 .4rem 1.5rem;color:#00f;text-decoration:underline;transition:opacity .2s ease;font-family:Lora}.home-submenu a:hover{opacity:.6}.home-submenu{display:block;max-height:0;overflow:hidden;transition:max-height .35s ease-out,opacity .25s ease-out;opacity:0}.home-submenu.open{max-height:300px;opacity:1;transition:max-height .35s ease-in,opacity .25s ease-in}@media(max-width:480px){.home-header h1,.home-heading{font-size:2rem}.home-submenu a{font-size:1.2rem}}.dream-container{position:fixed;bottom:calc(1rem + env(safe-area-inset-bottom,0px));right:calc(.5rem + env(safe-area-inset-right,0px));z-index:100}.dream{writing-mode:vertical-rl;white-space:nowrap;margin:0;font-size:.9rem;opacity:.7}@media(max-width:480px){.dream-container{right:calc(1rem + env(safe-area-inset-right,0px))}.dream{font-size:.75rem}}.container{display:flex;justify-content:center;align-items:center}.photo-stream{margin:auto}.photo-post{display:block;max-width:900px;max-height:80vh;padding-bottom:10px}@media(max-width:590px){.photo-post{max-width:100%}}.photography-page{min-height:100vh;display:flex;flex-direction:column}.photography-header{text-align:left;padding:1.5rem 1.5rem 1rem}.photography-header h1{font-family:Lora,serif;font-size:2.5rem;font-weight:400;margin:0;color:#1a1a1a}.photography-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;gap:1.5rem}.loading-spinner{width:40px;height:40px;border:2px solid #e0e0e0;border-top-color:#1a1a1a;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.photography-loading p{color:#666;font-size:.9rem;letter-spacing:.05em}.photography-error{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;text-align:center}.photography-error p{font-size:1.1rem;color:#1a1a1a;margin:0 0 .5rem}.photography-error span{color:#999;font-size:.85rem}.photography-empty{display:flex;align-items:center;justify-content:center;flex:1}.photography-empty p{color:#666;font-style:italic}.photography-gallery{display:flex;flex-direction:row;gap:1.5rem;padding:.5rem 1.5rem 1rem;overflow-x:auto;overflow-y:hidden;flex:1;align-items:center;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch}.photography-gallery::-webkit-scrollbar{height:8px}.photography-gallery::-webkit-scrollbar-track{background:transparent}.photography-gallery::-webkit-scrollbar-thumb{background:#0003;border-radius:4px}.photography-gallery::-webkit-scrollbar-thumb:hover{background:#00000059}.gallery-item{position:relative;flex-shrink:0;height:calc(100vh - 120px);max-height:88vh;min-height:500px;cursor:pointer;overflow:hidden;background:transparent;border:none;padding:0;border-radius:2px;scroll-snap-align:center}.gallery-item-placeholder{position:absolute;inset:0;background:linear-gradient(135deg,#f0f0f0,#e8e8e8);transition:opacity .3s ease}.gallery-item.loaded .gallery-item-placeholder{opacity:0}.gallery-item img{display:block;height:100%;width:auto;object-fit:contain;opacity:0;transition:transform .5s cubic-bezier(.25,.1,.25,1),opacity .4s ease}.gallery-item.loaded img{opacity:1}.gallery-item:hover img{transform:scale(1.02)}.gallery-item-overlay{position:absolute;inset:0;background:#0000;display:flex;align-items:center;justify-content:center;transition:background .3s ease}.gallery-item:hover .gallery-item-overlay{background:#0003}.view-icon{opacity:0;transform:scale(.8);transition:opacity .3s ease,transform .3s ease}.gallery-item:hover .view-icon{opacity:1;transform:scale(1)}.view-icon svg{width:40px;height:40px;color:#fff;filter:drop-shadow(0 2px 8px rgba(0,0,0,.3))}.lightbox-overlay{position:fixed;inset:0;background:#000000f2;z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .25s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.lightbox-content{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.lightbox-image-container{max-width:calc(100vw - 160px);max-height:calc(100vh - 100px);display:flex;align-items:center;justify-content:center;animation:scaleIn .3s cubic-bezier(.25,.1,.25,1)}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.lightbox-image-container img{max-width:100%;max-height:calc(100vh - 100px);width:auto;height:auto;object-fit:contain;box-shadow:0 25px 80px #00000080}.lightbox-close{position:absolute;top:1.5rem;right:1.5rem;background:transparent;border:none;cursor:pointer;padding:.75rem;z-index:10;opacity:.7;transition:opacity .2s ease,transform .2s ease}.lightbox-close:hover{opacity:1;transform:scale(1.1)}.lightbox-close svg{width:28px;height:28px;color:#fff}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);background:#ffffff1a;border:none;cursor:pointer;padding:1.25rem 1rem;opacity:.6;transition:opacity .2s ease,background .2s ease;border-radius:4px}.lightbox-nav:hover:not(:disabled){opacity:1;background:#fff3}.lightbox-nav:disabled{opacity:.2;cursor:not-allowed}.lightbox-nav svg{width:32px;height:32px;color:#fff}.lightbox-prev{left:1.5rem}.lightbox-next{right:1.5rem}.lightbox-info{position:absolute;bottom:2rem;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.5rem;color:#fff}.lightbox-counter{font-size:.85rem;letter-spacing:.1em;opacity:.7}@media(max-width:900px){.photography-gallery{gap:1rem;padding:1rem}.gallery-item{height:calc(100vh - 100px);min-height:400px}.lightbox-image-container{max-width:calc(100vw - 100px)}.lightbox-nav{padding:1rem .75rem}.lightbox-nav svg{width:24px;height:24px}}@media(max-width:600px){.photography-page{height:auto;min-height:100vh;overflow:visible}.photography-header{padding:1rem}.photography-header h1{font-size:2rem}.photography-gallery{flex-direction:column;gap:1rem;padding:.5rem 1rem 2rem;overflow-x:hidden;overflow-y:visible;scroll-snap-type:none;align-items:stretch;flex:none}.gallery-item{height:auto;min-height:0;max-height:none;width:100%;scroll-snap-align:none}.gallery-item img{width:100%;height:auto}.view-icon svg{width:32px;height:32px}.lightbox-image-container{max-width:calc(100vw - 20px);max-height:calc(100vh - 100px)}.lightbox-image-container img{max-height:calc(100vh - 100px)}.lightbox-nav{padding:.75rem .5rem}.lightbox-prev{left:.5rem}.lightbox-next{right:.5rem}.lightbox-close{top:1rem;right:1rem}.lightbox-close svg{width:24px;height:24px}.lightbox-info{bottom:1.5rem}}.gallery-item:focus-visible{outline:2px solid #1a1a1a;outline-offset:4px}.lightbox-close:focus-visible,.lightbox-nav:focus-visible{outline:2px solid white;outline-offset:2px}@media(prefers-reduced-motion:reduce){.gallery-item img,.gallery-item-overlay,.view-icon,.lightbox-overlay,.lightbox-image-container,.lightbox-close,.lightbox-nav,.photography-gallery{transition:none;animation:none;scroll-behavior:auto}}.fiction-container{max-width:80%;margin:auto;text-align:center;padding:40px 20px}.fiction-container h1{margin-bottom:10px}.fiction-container p{font-size:1.2rem;margin-bottom:30px}.construction-image{max-width:300px;height:auto;display:block;margin:20px auto}.blog-list-container{max-width:95%;margin:0;padding:2rem 1rem}.blog-list-container h1{font-size:1.75rem;font-weight:600;margin-bottom:1.5rem}.blog-list{list-style:none;padding:0;margin:0}.blog-list-item{margin-bottom:.75rem}.blog-list-link{display:inline-flex;flex-wrap:wrap;align-items:baseline;text-decoration:none;color:inherit;font-size:1.1rem;line-height:1.5;transition:color .2s ease}.blog-list-link:hover{color:orange}.blog-list-title{font-weight:500}.blog-list-separator{white-space:pre}.blog-list-date{color:#666;font-size:.95rem}.blog-list-link:hover .blog-list-date{color:orange}@media(min-width:768px){.blog-list-container{max-width:none;padding:3rem 2rem}.blog-list-container h1{font-size:2rem}.blog-list-link{font-size:1.2rem}.blog-list-date{font-size:1rem}}.blog-post-container{max-width:100%;margin:0 auto;padding:2rem 1.25rem}.blog-post-loading,.blog-post-error{text-align:center;padding:4rem 1rem}.blog-post-error h1{font-size:1.5rem;margin-bottom:.5rem}.blog-post-error p{color:#666;margin-bottom:1.5rem}.back-to-blog{font-family:Lora;display:inline-block;text-decoration:none;font-size:.9rem;margin-bottom:2rem;transition:color .2s ease}.back-to-blog:hover{color:#000}.blog-post{max-width:680px;margin:0 auto}.blog-post-header{margin-bottom:2.5rem}.blog-post-title{font-size:2rem;font-weight:700;line-height:1.2;margin:0 0 .75rem;letter-spacing:-.02em}.blog-post-date{display:block;color:#000;font-size:.95rem}.blog-post-featured-image{width:100%;height:auto;border-radius:8px;margin-bottom:2rem}.blog-post-content{font-size:1.125rem;line-height:1.75;color:#000}.blog-post-content p{margin-bottom:1.5rem}.blog-post-content h2{font-size:1.5rem;font-weight:600;margin:2.5rem 0 1rem;line-height:1.3}.blog-post-content h3{font-size:1.25rem;font-weight:600;margin:2rem 0 .75rem;line-height:1.4}.blog-post-content a{color:#06c;text-decoration:underline;text-underline-offset:2px}.blog-post-content a:hover{color:#049}.blog-post-content ul,.blog-post-content ol{margin:1.5rem 0;padding-left:1.5rem}.blog-post-content li{margin-bottom:.5rem}.blog-post-content blockquote{border-left:3px solid #ddd;margin:1.5rem 0;padding:.5rem 0 .5rem 1.5rem;color:#555;font-style:italic}.blog-post-content code{background:#f4f4f4;padding:.2em .4em;border-radius:4px;font-size:.9em;font-family:SF Mono,Monaco,Inconsolata,Roboto Mono,monospace}.blog-post-content pre{background:#f4f4f4;padding:1rem;border-radius:8px;overflow-x:auto;margin:1.5rem 0}.blog-post-content pre code{background:none;padding:0}.blog-post-content img{max-width:100%;height:auto;border-radius:8px;margin:1.5rem 0}.blog-post-content hr{border:none;border-top:1px solid #e0e0e0;margin:2.5rem 0}.blog-post-footer{margin-top:3rem;padding-top:1.5rem;border-top:1px solid #e0e0e0}.blog-post-tags{display:flex;flex-wrap:wrap;gap:.5rem}.blog-post-tag{background:#f0f0f0;color:#555;padding:.35rem .75rem;border-radius:20px;font-size:.85rem}@media(min-width:768px){.blog-post-container{padding:3rem 2rem}.blog-post-title{font-size:2.5rem}.blog-post-content{font-size:1.2rem;line-height:1.8}.blog-post-content h2{font-size:1.75rem}.blog-post-content h3{font-size:1.4rem}}@media(min-width:1024px){.blog-post-container{padding:4rem 2rem}.blog-post-title{font-size:2.75rem}}.project-container{display:flex;flex-direction:column;max-width:500px}.single-project{padding-bottom:18px}.proj-button{padding:12px 20px;background-color:#fff;border-color:#00f;color:#00f}.proj-button:hover{background-color:orange}#bk-bookshelf{width:100%}.book-card{margin:auto 20px;display:flex;padding-bottom:20px}.book-img{max-height:200px;padding:10px;margin-top:40px}.book-deets{margin:40px}.book-title{font-weight:900}.commentary{font-style:italic}.search-container{display:flex;flex-direction:column}.query-item{padding:10px;font-size:2rem}.query-item>a:hover{color:orange}.dream-scape{font-size:8rem;display:flex;justify-content:center}
