.page-projects{z-index:20;min-height:100vh;padding:clamp(90px,12vh,140px)var(--pad)var(--pad);position:relative}.page-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-end;padding-bottom:28px;display:flex}.page-head h1{letter-spacing:-.04em;text-transform:uppercase;font-size:clamp(3rem,10vw,9rem);font-weight:900;line-height:.85}.page-head .meta{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-dim);text-align:right;font-size:12px}.row{text-align:left;border:0;border-bottom:1px solid var(--line-soft);width:100%;font:inherit;color:inherit;cursor:none;transition:padding .45s var(--ease-out),background .45s;background:0 0;grid-template-columns:60px 1fr auto auto 34px;align-items:center;gap:24px;padding:30px 0;display:grid}.row:hover{padding-left:18px;padding-right:8px}.row .no{font-family:var(--font-mono);color:var(--accent);font-size:12px}.row .name{letter-spacing:-.02em;font-size:clamp(1.6rem,4vw,3rem);font-weight:700}.row .tags{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-dim);font-size:11px}.row .yr{font-family:var(--font-mono);color:var(--fg-dim);font-size:12px}.row .arr{justify-content:flex-end;display:flex;overflow:hidden}.row .arr svg{width:17px;height:17px;transition:transform .45s var(--ease-out)}.row .arr svg *{stroke:var(--fg-dim);stroke-width:1.4px;fill:none;stroke-linecap:round;stroke-linejoin:round;transition:stroke .45s var(--ease-out)}.row:hover .arr svg{transform:translate(3px,-3px)}.row:hover .arr svg *{stroke:var(--accent)}.detail{z-index:70;background:var(--bg);padding:clamp(56px,8vh,92px)var(--pad)clamp(20px,3vh,36px);opacity:0;visibility:hidden;pointer-events:none;display:flex;position:fixed;inset:0;overflow:hidden}.detail.open{opacity:1;visibility:visible;pointer-events:auto}@media (prefers-reduced-motion:no-preference){.detail.closing{animation:detailOut .4s var(--ease-out)forwards}}@keyframes detailOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(20px)}}.detail-inner{opacity:1;flex-direction:column;width:100%;max-width:1100px;min-height:0;margin:0 auto;display:flex;transform:translateY(0)}@media (prefers-reduced-motion:no-preference){.detail.open .detail-inner{animation:detailRise .55s var(--ease-out)}}@keyframes detailRise{0%{transform:translateY(20px)}to{transform:translateY(0)}}.detail-eyebrow{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--accent);align-items:center;gap:12px;font-size:11px;display:flex}.detail h2{letter-spacing:-.04em;text-transform:uppercase;margin:clamp(8px,1.4vh,16px) 0 0;font-size:clamp(2.1rem,5vw,4.2rem);font-weight:900;line-height:.9}.detail-meta{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-dim);border-bottom:1px solid var(--line);flex-wrap:wrap;gap:8px 24px;margin-top:clamp(10px,1.6vh,18px);padding-bottom:clamp(13px,2vh,20px);font-size:12px;display:flex}.detail-meta .accent{color:var(--accent)}.detail-desc{color:var(--fg-dim);max-width:64ch;margin:clamp(14px,2.4vh,28px) 0 clamp(16px,2.8vh,30px);font-size:clamp(.98rem,1.45vw,1.22rem);line-height:1.55}.detail-desc strong{color:var(--fg);font-weight:600}.carousel-wrap{flex-direction:column;flex:auto;min-height:0;display:flex;position:relative}.carousel{scroll-snap-type:x mandatory;scrollbar-width:none;border-radius:4px;flex:auto;gap:16px;min-height:0;display:flex;overflow-x:auto}.carousel::-webkit-scrollbar{display:none}.carousel .slide{scroll-snap-align:center;border:1px solid var(--line);-webkit-user-select:none;user-select:none;border-radius:4px;flex:0 0 100%;height:100%;min-height:0;overflow:hidden}.carousel.dragging{scroll-behavior:auto;cursor:grabbing}.carousel .slide img{object-fit:cover;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;pointer-events:none;width:100%;height:100%;display:block}.carousel .slide-empty{text-align:center;color:var(--fg-faint);letter-spacing:.02em;place-items:center;padding:24px;font-size:13px;display:grid}.cbtn{z-index:4;border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:none;width:52px;height:52px;color:var(--fg);transition:background .4s var(--ease-out),border-color .4s var(--ease-out),opacity .4s;background:#0b0b0d99;border-radius:50%;place-items:center;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.cbtn:hover{background:var(--accent);border-color:var(--accent);color:#000}.cbtn svg{width:16px;height:16px}.cbtn svg *{stroke:currentColor;stroke-width:1.6px;fill:none;stroke-linecap:round;stroke-linejoin:round}.cbtn.prev{left:16px}.cbtn.next{right:16px}.cbtn[disabled]{opacity:0;pointer-events:none}.dots{flex:none;justify-content:center;gap:9px;margin-top:clamp(12px,1.8vh,20px);display:flex}.dots i{background:var(--line);width:7px;height:7px;transition:background .4s var(--ease-out),width .4s var(--ease-out);border-radius:50%}.dots i.on{background:var(--accent);border-radius:100px;width:22px}.detail-close{top:var(--pad);right:var(--pad);z-index:72;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:#ffffff4d;font-size:11px;font-weight:inherit;cursor:none;background:0 0;border:0;align-items:center;gap:14px;text-decoration:none;transition:color .5s cubic-bezier(.16,1,.3,1);display:flex;position:fixed}.detail-close:hover{color:#ffffffe6}.detail-close .x{display:flex}.detail-close .x svg{width:13px;height:13px;overflow:visible}.detail-close .x svg line{stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;transform-origin:50%;transition:transform .45s cubic-bezier(.16,1,.3,1)}.detail-close:hover .x svg{transition:transform .5s cubic-bezier(.16,1,.3,1);transform:rotate(90deg)}@media (max-width:680px){.page-head{flex-direction:column;align-items:flex-start;gap:14px}.page-head .meta{text-align:left}.row{grid-template-columns:40px 1fr 30px}.row .tags,.row .yr{display:none}}
