.projects_page{min-height:100vh;padding:18vh var(--space-edge) 16vh}.board_head{flex-direction:column;gap:.6rem;max-width:40rem;margin-bottom:8vh;display:flex}.board_kicker{color:var(--accent);letter-spacing:.22em}.board_title{font-size:var(--text-title);letter-spacing:-.03em;font-weight:900;line-height:.82}.board_sub{opacity:.5;line-height:1.5}.board{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));align-items:start;gap:clamp(3rem,5vw,6rem) clamp(2.5rem,4vw,5rem);display:grid}.pin:nth-child(2n){margin-top:clamp(1.5rem,4vw,4rem)}.pin{perspective:1100px;transform:rotate(var(--rot)) translateY(var(--ny));transition:transform .55s var(--ease-out-expo);will-change:transform;position:relative}.pin:hover{transform:rotate(0deg) translateY(calc(var(--ny) - 14px));z-index:5}.tape{width:92px;height:30px;transform:translateX(-50%) rotate(var(--tape));z-index:8;pointer-events:none;background:linear-gradient(135deg,#ffffff8c,#e4e2dc59);border-left:1px dashed #0000001f;border-right:1px dashed #0000001f;position:absolute;top:-14px;left:50%;box-shadow:0 2px 6px #1e1c181f}.pin:nth-child(3n) .tape{background:linear-gradient(135deg,#ff5c0066,#ff5c002e)}.print{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;border:1px solid var(--line);transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));background:#fdfdfb;padding:12px 12px 14px;transition:box-shadow .4s,transform .18s;display:block;position:relative;box-shadow:0 18px 34px #1e1c1829}.pin:hover .print{box-shadow:0 34px 60px #1e1c1842}.print_img{aspect-ratio:4/5;background:var(--surface);display:block;position:relative;overflow:hidden}.print_img img{object-fit:cover;filter:saturate(.96)contrast(1.02);width:100%;height:100%;display:block}.sheen{pointer-events:none;opacity:0;background:radial-gradient(220px circle at var(--mx,50%) var(--my,0%), #ffffff6b, #fff0 60%);mix-blend-mode:screen;transition:opacity .4s;position:absolute;inset:0}.pin:hover .sheen{opacity:1}.open_hint{background:var(--accent);color:#fff;opacity:0;padding:4px 8px;font-size:.62rem;transition:opacity .3s,transform .3s;position:absolute;bottom:8px;left:8px;transform:translateY(6px)}.pin:hover .open_hint{opacity:1;transform:translateY(0)}.print_meta{padding-top:11px;display:block}.print_meta .barcode_section{margin-bottom:7px}.print_name{letter-spacing:-.02em;align-items:baseline;gap:.5rem;font-size:clamp(1.6rem,.8rem + 2vw,2.3rem);font-weight:900;line-height:.96;display:flex}.pn_n{color:var(--accent);font-size:.7em;font-style:normal}.print_cat{opacity:.5;margin-top:5px;display:block}.album_overlay{z-index:9000;overscroll-behavior:contain;justify-content:center;display:flex;position:fixed;inset:0;overflow-y:auto}.album_scrim{cursor:pointer;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#1413129e;border:none;animation:.4s both scrim-in;position:fixed;inset:0}@keyframes scrim-in{0%{opacity:0}}.album_panel{z-index:1;background:var(--surface-2);width:min(1100px,100%);min-height:100%;animation:panel-in .5s var(--ease-out-expo) both;background-image:radial-gradient(120% 80% at 50% 0,#fafafa 0%,#ececeb 100%);margin:auto;padding:8vh clamp(1.5rem,4vw,4rem) 12vh;position:relative;box-shadow:0 -10px 80px #14131280}@keyframes panel-in{0%{opacity:0;transform:translateY(26px)}}.album_head{border-bottom:1px solid var(--ink);justify-content:space-between;align-items:flex-start;gap:2rem;margin-bottom:6vh;padding-bottom:2rem;display:flex}.album_kicker{color:var(--accent);letter-spacing:.2em;margin-bottom:.7rem}.album_title{letter-spacing:-.03em;align-items:baseline;gap:.7rem;font-size:clamp(2.6rem,1rem + 6vw,6rem);font-weight:900;line-height:.84;display:flex}.album_n{color:var(--accent);font-size:.34em;font-style:normal}.album_note{opacity:.7;max-width:34rem;margin-top:1.1rem;line-height:1.45}.album_meta{opacity:.45;margin-top:.8rem}.album_close{border:1px solid var(--ink);width:46px;height:46px;color:var(--ink);cursor:pointer;background:0 0;border-radius:50%;flex:none;font-size:1rem;line-height:1;transition:background .25s,color .25s,transform .25s;position:sticky;top:0}.album_close:hover{background:var(--accent);border-color:var(--accent);color:#fff;transform:rotate(90deg)}.album_wall{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));align-items:start;gap:clamp(2.5rem,4vw,4.5rem) clamp(2rem,3vw,3.5rem);display:grid}.frame{transform:rotate(var(--rot)) translateY(var(--ny));transition:transform .5s var(--ease-out-expo);animation:frame-in .55s var(--ease-out-expo) var(--d) both;margin:0;position:relative}.album_wall .frame:nth-child(2n){margin-top:clamp(1rem,3vw,3rem)}.frame:hover{transform:rotate(0deg) translateY(calc(var(--ny) - 10px));z-index:4}@keyframes frame-in{0%{opacity:0;transform:rotate(var(--rot)) translateY(calc(var(--ny) + 20px))}}.frame_img{aspect-ratio:4/5;border:1px solid var(--line);background:#fdfdfb;padding:10px;display:block;overflow:hidden;box-shadow:0 16px 30px #1e1c1829}.frame:hover .frame_img{box-shadow:0 28px 50px #1e1c183d}.frame_img img{object-fit:cover;filter:saturate(.96)contrast(1.02);width:100%;height:100%;display:block}.frame.is-empty .frame_img{background:#141312}.frame_slot{color:#f3f3f3a6;letter-spacing:.12em;border:1.5px dashed #f3f3f338;flex-direction:column;justify-content:center;align-items:center;gap:.4rem;width:100%;height:100%;font-size:.66rem;display:flex}.slot_x{color:var(--accent);font-size:1.8rem;font-weight:300;line-height:1}.slot_await{opacity:.4;font-size:.56rem}.frame_cap{margin-top:9px}.frame_cap .barcode_section{margin:0}@media (pointer:coarse){.print{transform:none}.sheen,.open_hint{display:none}}@media (max-width:700px){.board{grid-template-columns:1fr;gap:3rem;max-width:380px;margin:0 auto}.pin:nth-child(2n){margin-top:0}.pin{transform:rotate(var(--rot)) translateY(0)}.album_panel{padding:7vh 1.2rem 12vh}.album_head{flex-direction:column;gap:1.5rem}.album_close{z-index:3;background:var(--surface-2);position:fixed;top:1rem;right:1rem}.album_wall{grid-template-columns:1fr;gap:2.5rem;max-width:320px;margin:0 auto}.album_wall .frame:nth-child(2n){margin-top:0}.frame{transform:rotate(var(--rot)) translateY(0)}}@media (prefers-reduced-motion:reduce){.pin,.print,.frame{transition-duration:.01ms}.album_scrim,.album_panel,.frame{animation:none}}
