@import"https://fonts.googleapis.com/css2?family=Fraunces:wght@400;600;700&family=Space+Mono:wght@400;700&display=swap";:root{color-scheme:only light;--ink: #0c1118;--ink-soft: rgba(12, 17, 24, .75);--grid-ink: rgba(12, 17, 24, .5);--sky: #8dbbe3;--sky-deep: #5a87b6;--sun: #f0dc2f;--sun-edge: #0c1118;--white: #f8f7f2}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0!important}body{background:var(--sky-deep);color:var(--ink);font-family:Fraunces,serif;overflow:hidden}#app{height:100%}.page-shell,.hero-layer,.page-content,.word-grid,.nav-pills{position:relative;z-index:0}a{color:inherit;text-decoration:none}.page-shell{position:relative;height:100dvh;height:100vh;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:none}.page-shell:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#0c11181f,#0c111800 40%,#0c111833);z-index:1;pointer-events:none}.hero-layer{position:relative;z-index:0;height:100%;overflow:hidden;display:grid;place-items:center;padding:0}.word-grid{width:100%;height:100%;display:grid;grid-template-columns:repeat(32,minmax(10px,1fr));grid-template-rows:repeat(20,minmax(10px,1fr));gap:clamp(2px,.35vw,6px);font-family:Space Mono,monospace;font-size:clamp(14px,1.6vw,28px);letter-spacing:.08em;text-transform:uppercase;color:var(--grid-ink);-webkit-user-select:none;user-select:none;padding:clamp(8px,1.5vw,20px)}@media(max-width:1200px){.word-grid{grid-template-columns:repeat(28,minmax(10px,1fr));font-size:clamp(12px,2vw,24px)}}@media(max-width:900px){.word-grid{grid-template-columns:repeat(24,minmax(8px,1fr));grid-template-rows:repeat(20,minmax(8px,1fr));font-size:clamp(11px,2.6vw,20px);gap:clamp(1px,.3vw,4px)}}.grid-layer{position:relative;display:grid;grid-column:1 / -1;grid-row:1 / -1;grid-template-columns:subgrid;grid-template-rows:subgrid}.grid-letter{display:grid;place-items:center;border:0;background:none!important;color:inherit;font:inherit;padding:0;margin:0;text-transform:uppercase;outline:none;box-shadow:none!important}.grid-letter:focus,.grid-letter:focus-visible,.grid-letter:hover,.grid-letter:active{outline:none;background:none!important;box-shadow:none!important}.word-letter{position:relative;color:#0b0f12;z-index:2;font-weight:700;text-shadow:.5px .5px 0 rgba(12,17,24,.15),-.3px .4px 0 rgba(12,17,24,.1);pointer-events:auto;transition:filter .2s ease,transform .2s ease}.word-letter:nth-child(3n+1){transform:rotate(-.8deg) translateY(-.3px)}.word-letter:nth-child(3n+2){transform:rotate(1.2deg) translateY(.4px)}.word-letter:nth-child(3n+3){transform:rotate(-.5deg) translateY(.2px)}.word-letter:nth-child(5n){transform:rotate(.9deg) translateY(-.2px)}.word-letter:nth-child(7n){transform:rotate(-1.1deg) translateY(.3px)}.word-click{cursor:pointer}.word-letter-hovered{filter:brightness(.95) drop-shadow(0 1px 2px rgba(12,17,24,.2));transform:scale(1.05)}.word-letter[data-word-id=home].word-letter-hovered{filter:brightness(.9) drop-shadow(0 2px 4px rgba(12,17,24,.4));transform:scale(1.08)}.word-highlight-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1}.word-ellipse{transition:filter .3s ease,opacity .3s ease}.word-ellipse-hovered{filter:brightness(1.2) drop-shadow(0 3px 6px rgba(12,17,24,.3));opacity:.95}.ground-band{position:absolute;left:0;right:0;bottom:0;height:18vh;background:linear-gradient(0deg,#08190af2,#1e4619d9);z-index:2}.page-content{position:relative;z-index:0;padding:120px clamp(24px,6vw,80px) 96px;padding-left:max(clamp(24px,6vw,80px),env(safe-area-inset-left));padding-right:max(clamp(24px,6vw,80px),env(safe-area-inset-right));padding-bottom:max(96px,env(safe-area-inset-bottom));max-width:1100px;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:24px;flex-wrap:wrap}.section-title{font-size:clamp(28px,4vw,56px);text-transform:uppercase;letter-spacing:.08em;margin-bottom:0;color:var(--white);text-shadow:0 2px 4px rgba(12,17,24,.3);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px;text-decoration-color:var(--white)}.section-text{font-size:clamp(16px,1.8vw,20px);line-height:1.7;max-width:820px;color:var(--white);text-shadow:0 1px 2px rgba(12,17,24,.2)}.article-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:24px;margin-top:24px}.article-card{background:#f8f7f2e6;border:2px solid rgba(12,17,24,.2);padding:20px;border-radius:18px;box-shadow:0 10px 24px #0c11181f;display:grid;gap:8px}.article-list{display:flex;flex-direction:column;gap:20px;margin-top:24px}.article-card-list{background:#f8f7f2e6;border:2px solid rgba(12,17,24,.2);padding:24px;border-radius:18px;box-shadow:0 10px 24px #0c11181f;display:grid;gap:8px}.article-card h3{margin:0;font-size:20px}.article-card p{margin:0;color:var(--ink-soft)}.article-card .meta{font-family:Space Mono,monospace;font-size:12px;letter-spacing:.08em;text-transform:uppercase}.meta{font-family:Space Mono,monospace;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}.editor-shell{display:grid;gap:16px;background:#f8f7f2e6;padding:24px;border-radius:20px;border:2px solid rgba(12,17,24,.2);box-shadow:0 12px 30px #0c111826}.editor-shell input,.editor-shell textarea,.editor-shell select{width:100%;padding:12px 14px;border-radius:12px;border:2px solid rgba(12,17,24,.2);font-family:Space Mono,monospace;font-size:14px}.editor-shell textarea{min-height:220px;font-family:Fraunces,serif}.button-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.button{background:var(--sun);border:2px solid var(--sun-edge);border-radius:999px;padding:10px 18px;font-family:Space Mono,monospace;font-weight:700;text-transform:uppercase;letter-spacing:.12em;cursor:pointer}.button.secondary{background:#f8f7f2f2;border:2px solid rgba(12,17,24,.3)}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0a0e128c;z-index:3;display:grid;place-items:center;padding:40px 24px}.overlay-panel{width:min(960px,90vw);max-height:85vh;overflow:auto;background:#f8f7f2f5;border-radius:28px;padding:clamp(24px,4vw,40px);border:3px solid rgba(12,17,24,.5);box-shadow:0 24px 60px #0c111859}.overlay-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.overlay-header h2{font-size:clamp(28px,4vw,48px);font-weight:700;margin:0;text-transform:uppercase;letter-spacing:.05em}@media(max-width:780px){.overlay-panel{width:min(94vw,520px)}.word-grid{padding:clamp(12px,3vw,24px)}}@media(max-width:600px){.word-grid{grid-template-columns:repeat(20,minmax(6px,1fr));grid-template-rows:repeat(18,minmax(6px,1fr));font-size:clamp(10px,3.2vw,18px)}}.img-shimmer{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(110deg,#0c11180f 30%,#0c11181f,#0c11180f 70%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite;border-radius:inherit}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.carousel{margin-top:0}.carousel-viewport{position:relative;overflow:hidden;aspect-ratio:4 / 5;border-radius:18px 18px 0 0;background:#0c11180f;cursor:pointer}.carousel-track{display:flex;height:100%;transition:transform .35s cubic-bezier(.4,0,.2,1)}.carousel-slide-wrap{position:relative;min-width:100%;height:100%}.carousel-slide{min-width:100%;height:100%;object-fit:cover;-webkit-user-select:none;user-select:none;opacity:0;transition:opacity .4s ease}.carousel-slide-loaded{opacity:1}.carousel-counter{position:absolute;top:12px;right:12px;background:#0c11188c;color:#fff;font-family:Space Mono,monospace;font-size:12px;padding:4px 10px;border-radius:999px;pointer-events:none}.carousel-arrow{position:absolute;top:50%;transform:translateY(-50%);background:#f8f7f2d9;border:none;width:36px;height:36px;border-radius:50%;font-size:22px;line-height:1;cursor:pointer;display:grid;place-items:center;opacity:0;transition:opacity .2s;box-shadow:0 2px 8px #0c111833;color:var(--ink)}.carousel-viewport:hover .carousel-arrow{opacity:1}.carousel-arrow-left{left:10px}.carousel-arrow-right{right:10px}.carousel-dots{display:flex;justify-content:center;gap:6px;padding:12px 0 4px}.carousel-dot{width:7px;height:7px;border-radius:50%;border:none;background:#0c111840;padding:0;cursor:pointer;transition:background .2s}.carousel-dot-active{background:var(--ink)}.lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:#000000eb;display:grid;place-items:center;animation:lightbox-fade-in .2s ease}@keyframes lightbox-fade-in{0%{opacity:0}to{opacity:1}}.lightbox-content{max-width:90vw;max-height:88vh;display:grid;place-items:center}.lightbox-image{max-width:90vw;max-height:88vh;object-fit:contain;border-radius:4px;-webkit-user-select:none;user-select:none;opacity:0;transition:opacity .3s ease}.lightbox-image-loaded{opacity:1}.lightbox-shimmer{width:60vw;max-width:600px;aspect-ratio:4 / 5;border-radius:4px;position:absolute}.lightbox-arrow{position:fixed;top:50%;transform:translateY(-50%);background:#ffffff26;border:none;color:#fff;width:48px;height:48px;border-radius:50%;font-size:28px;cursor:pointer;display:grid;place-items:center;transition:background .2s}.lightbox-arrow:hover{background:#ffffff4d}.lightbox-arrow-left{left:max(16px,env(safe-area-inset-left))}.lightbox-arrow-right{right:max(16px,env(safe-area-inset-right))}.lightbox-counter{position:fixed;bottom:max(20px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);color:#ffffffb3;font-family:Space Mono,monospace;font-size:14px}.lightbox-close{position:fixed;top:max(16px,env(safe-area-inset-top));right:max(20px,env(safe-area-inset-right));background:none;border:none;color:#fff;font-size:36px;cursor:pointer;line-height:1;opacity:.7;transition:opacity .2s}.lightbox-close:hover{opacity:1}.project-card{background:#f8f7f2e6;border:2px solid rgba(12,17,24,.2);border-radius:18px;box-shadow:0 10px 24px #0c11181f;overflow:hidden}.project-card .carousel-viewport{border-radius:0}.project-card-body{padding:20px 24px 24px;display:grid;gap:8px}.photo-grid-img{cursor:pointer;transition:filter .2s}.photo-grid-img:hover{filter:brightness(.92)}@media(max-width:600px){.carousel-arrow{width:30px;height:30px;font-size:18px}.lightbox-arrow{width:38px;height:38px;font-size:22px}.lightbox-arrow-left{left:max(8px,env(safe-area-inset-left))}.lightbox-arrow-right{right:max(8px,env(safe-area-inset-right))}}
