:root{--bg:#f4f3ef;--surface:#ffffff;--text:#1d232b;--muted:#737b86;--line:#e3e1dc;--shadow:0 18px 38px rgba(25, 31, 40, .14);--shadow-strong:0 30px 70px rgba(25, 31, 40, .22)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:linear-gradient(rgba(29,35,43,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(29,35,43,.035) 1px,transparent 1px),var(--bg);background-size:40px 40px;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Helvetica,Arial,sans-serif;line-height:1.6}img{display:block;max-width:100%;height:auto}a{color:inherit;text-decoration:none}button{font:inherit}.site-head{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:16px clamp(18px,3vw,40px);border-bottom:1px solid var(--line);background:rgba(244,243,239,.82);backdrop-filter:blur(10px)}.brand{margin:0;font-size:18px;font-weight:650}.brand a:hover,.nav a:hover{color:#000}.nav{display:flex;align-items:center;gap:18px;color:var(--muted);font-size:14px}.nav .btn-link{border:0;padding:0;background:0 0;color:inherit;cursor:pointer}.intro{max-width:980px;padding-top:52px;padding-right:clamp(18px,3vw,40px);padding-bottom:24px;padding-left:clamp(18px,3vw,40px);animation:riseIn .5s ease both}.intro h2{margin:0 0 12px;max-width:760px;font-size:clamp(30px,4vw,40px);line-height:1.22;font-weight:650}.intro p{margin:0;max-width:720px;color:var(--muted);font-size:16px}.filters{display:flex;flex-wrap:wrap;gap:8px;padding-top:0;padding-right:clamp(18px,3vw,40px);padding-bottom:22px;padding-left:clamp(18px,3vw,40px);animation:riseIn .55s ease .04s both}.filters button{border:1px solid var(--line);border-radius:999px;padding:8px 14px;background:rgba(255,255,255,.72);color:var(--muted);cursor:pointer}.filters button:hover{border-color:#b8bec7;color:var(--text)}.filters button.on{border-color:var(--text);background:var(--text);color:#fff}.works-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;padding-top:0;padding-right:clamp(18px,3vw,40px);padding-bottom:64px;padding-left:clamp(18px,3vw,40px);animation:riseIn .6s ease .08s both}.work{margin:0}.work.is-hidden{display:none}.work__button{display:block;position:relative;width:100%;min-width:0;border:0;border-radius:18px;padding:0;overflow:hidden;background:0 0;cursor:pointer;box-shadow:0 1px 2px rgba(25,31,40,8%),0 12px 28px rgba(25,31,40,8%);transform:translateZ(0);transition:transform .22s ease,box-shadow .22s ease,filter .22s ease}.work__button:hover{transform:translateY(-4px);box-shadow:var(--shadow-strong);filter:saturate(1.04)contrast(1.02)}.work__button::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 68%,rgba(0,0,0,.1));opacity:0;transition:opacity .22s ease}.work__button:hover::after{opacity:1}.work__button img{width:100%;height:auto;background:0 0;transform:translateZ(0)scale(1);transition:transform .35s ease;backface-visibility:hidden;-webkit-backface-visibility:hidden;will-change:transform}.work__button:hover img{transform:translateZ(0)scale(1.025)}@media(min-width:760px){.works-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:1180px){.works-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:1640px){.works-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}.empty-state{margin:0 24px 80px;max-width:720px;border:1px dashed #c9ced6;border-radius:8px;padding:18px;color:var(--muted);background:#fafafa}.empty-state p{margin:0}.empty-state p+p{margin-top:8px}.empty-state code{color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em}.site-foot{border-top:1px solid var(--line);padding:20px 24px;color:var(--muted);text-align:center}@keyframes riseIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.modal{position:fixed;inset:0;display:none;z-index:20}.modal.active{display:block}.modal__overlay{position:absolute;inset:0;background:rgba(0,0,0,.24);backdrop-filter:blur(2px)}.modal__panel{position:absolute;top:24px;left:50%;width:min(560px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:auto;transform:translateX(-50%);border-radius:10px;background:#fff;box-shadow:var(--shadow)}.modal__close{position:sticky;top:10px;float:right;width:34px;height:34px;margin:10px 10px 0 0;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--text);cursor:pointer;font-size:20px;line-height:1}.modal__body{clear:both;padding:10px 22px 24px}#contact-title{margin:0 0 14px;font-size:20px}.contact-list{display:grid;gap:10px;margin:0;padding:0;list-style:none}.contact-list li{border:1px solid var(--line);border-radius:8px;padding:12px 14px}.contact-list a{text-decoration:underline;text-underline-offset:3px}.qr{margin:16px auto 0;text-align:center}.qr img{max-width:min(230px,70vw);margin:0 auto;border:1px solid var(--line);border-radius:8px}.qr figcaption{margin-top:6px;color:var(--muted);font-size:13px}.lightbox__panel{inset:0;width:auto;max-height:none;transform:none;border-radius:0;background:0 0;box-shadow:none}.lightbox__body{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:48px 64px}#lightbox-img{max-width:100%;max-height:calc(100vh - 130px);object-fit:contain;border-radius:8px;background:#fff;box-shadow:var(--shadow)}#lightbox-cap{margin-top:10px;color:#fff;text-align:center;font-size:13px}.lightbox__prev,.lightbox__next{position:fixed;top:50%;width:42px;height:54px;transform:translateY(-50%);border:1px solid rgba(255,255,255,.5);border-radius:8px;background:rgba(255,255,255,.92);color:var(--text);cursor:pointer;font-size:26px}.lightbox__prev{left:16px}.lightbox__next{right:16px}.project{max-width:880px;margin:0 auto;padding:32px 24px 56px}.project__head h1{margin:0 0 10px}.facts{display:flex;flex-wrap:wrap;gap:8px 14px;margin:0;padding:0;color:var(--muted);list-style:none}.entry-media{display:grid;gap:14px;margin-top:20px}.entry-media figure{margin:0}@media(max-width:640px){.site-head{align-items:flex-start;gap:10px;padding:14px 16px}.nav{gap:12px}.intro{padding:38px 16px 20px}.filters,.works-grid{padding-left:16px;padding-right:16px}.works-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.empty-state{margin-left:16px;margin-right:16px}.lightbox__body{padding:44px 16px}.lightbox__prev,.lightbox__next{width:38px;height:48px}}