.pj-hero-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;margin-top:26px}.pj-showcase{display:flex;align-items:flex-end;justify-content:center;position:relative}.pj-showcase figure{margin:0}.pj-showcase.has-both{padding-right:0}.pj-browser{flex:1 1 auto;min-width:0;max-width:820px;border-radius:18px;overflow:hidden;background:#111116;border:1px solid var(--border);box-shadow:0 34px 80px rgba(0,0,0,.55)}.pj-browser-bar{height:36px;display:flex;align-items:center;gap:7px;padding:0 14px;background:rgba(255,255,255,.04);border-bottom:1px solid var(--border)}.pj-dot{width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.16);flex:none}.pj-dot:first-child{background:var(--primary)}.pj-url{margin-left:12px;flex:0 1 auto;min-width:0;max-width:60%;padding:4px 14px;border-radius:999px;background:rgba(255,255,255,.05);border:1px solid var(--border);color:var(--text-dim);font-size:.74rem;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pj-url i{color:var(--accent);font-size:.68rem;margin-right:4px}.pj-browser-screen{aspect-ratio:16/10;background:#0d0d10;overflow:hidden}.pj-browser-screen picture{display:block;width:100%;height:100%}.pj-browser-screen img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}.pj-phone{flex:none;width:220px;position:relative;z-index:2;margin-left:-84px;margin-bottom:-34px;padding:9px;border-radius:38px;background:#0d0d10;border:1px solid rgba(255,255,255,.14);box-shadow:0 30px 70px rgba(0,0,0,.6),0 0 0 1px rgba(225,29,42,.12)}.pj-phone::before{content:'';position:absolute;top:17px;left:50%;transform:translateX(-50%);width:62px;height:17px;border-radius:999px;background:#000;z-index:2}.pj-phone-screen{aspect-ratio:390/844;border-radius:30px;overflow:hidden;background:#000}.pj-phone-screen picture{display:block;width:100%;height:100%}.pj-phone-screen img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}.pj-showcase.only-phone .pj-phone{margin:0;width:260px}.pj-features{margin-bottom:44px}.pj-subtitle{display:flex;align-items:center;gap:10px;font-family:var(--font-head);font-size:1.35rem;margin:0}.pj-subtitle i{color:var(--accent);font-size:1rem}.pj-features .detail-features{margin:18px 0 0}.pj-steps{position:relative}.pj-steps .case-block{position:relative}.pj-steps .case-block:not(:last-child)::after{content:'';position:absolute;left:22px;top:54px;bottom:-30px;width:2px;background:linear-gradient(180deg,rgba(225,29,42,.45),rgba(225,29,42,.05))}.pj-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.pj-shot{position:relative;display:block;aspect-ratio:16/10;overflow:hidden;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);transition:transform .45s var(--ease),border-color .4s,box-shadow .4s}.pj-shot picture{display:block;width:100%;height:100%}.pj-shot img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center;transition:transform .7s var(--ease)}.pj-shot:hover{transform:translateY(-6px);border-color:var(--border-hover);box-shadow:0 22px 50px rgba(0,0,0,.45)}.pj-shot:hover img{transform:scale(1.04)}.pj-shot-zoom{position:absolute;right:12px;bottom:12px;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:.8rem;background:rgba(0,0,0,.55);border:1px solid rgba(255,255,255,.2);opacity:0;transition:opacity .3s}.pj-shot:focus-visible .pj-shot-zoom,.pj-shot:hover .pj-shot-zoom{opacity:1}.pj-quote{margin:0}.pj-quote blockquote{margin:0}.pj-cta-actions{display:flex;flex-wrap:wrap;gap:12px;position:relative;justify-content:flex-end}.pj-cta-actions .btn{position:relative}.cta-inner .pj-cta-ghost{background:rgba(0,0,0,.22);border-color:rgba(255,255,255,.35);color:#fff;backdrop-filter:none}.cta-inner .pj-cta-ghost:hover{background:rgba(0,0,0,.32);border-color:#fff}.pj-mini-phone{position:absolute;right:14px;bottom:12px;z-index:2;width:54px;padding:3px;border-radius:12px;background:#0d0d10;border:1px solid rgba(255,255,255,.22);box-shadow:0 10px 24px rgba(0,0,0,.5);transition:transform .45s var(--ease)}.pj-mini-phone picture{display:block}.pj-mini-phone img{display:block;width:100%;aspect-ratio:390/844;height:auto;object-fit:cover;object-position:top center;border-radius:9px}.project-card:hover .pj-mini-phone{transform:translateY(-4px)}@media (max-width:1024px){.pj-gallery{grid-template-columns:repeat(2,1fr)}}@media (max-width:820px){.pj-phone{width:170px;margin-left:-70px;margin-bottom:-26px;padding:7px;border-radius:30px}.pj-phone::before{top:13px;width:48px;height:13px}.pj-phone-screen{border-radius:24px}.pj-cta-actions{justify-content:center}.pj-steps .case-block:not(:last-child)::after{display:none}}@media (max-width:768px){.cta-inner .pj-cta-actions{width:100%}}@media (max-width:640px){.pj-browser-bar{height:28px;padding:0 10px;gap:5px}.pj-dot{width:8px;height:8px}.pj-url{font-size:.68rem;padding:2px 10px;margin-left:6px}.pj-phone{width:104px;margin-left:-46px;margin-bottom:-18px;padding:4px;border-radius:20px}.pj-phone::before{top:8px;width:30px;height:8px}.pj-phone-screen{border-radius:16px}.pj-showcase.only-phone .pj-phone{width:200px;padding:8px;border-radius:34px}.pj-showcase.only-phone .pj-phone-screen{border-radius:26px}.pj-gallery{grid-template-columns:1fr;gap:14px}.pj-mini-phone{width:46px}}html.lite .pj-browser,html.lite .pj-phone{box-shadow:0 14px 34px rgba(0,0,0,.45)}html.lite .pj-shot:hover img{transform:none}.pl-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.pl-card[hidden],.pl-feat[hidden]{display:none!important}.pl-head{position:relative;overflow:hidden;padding:calc(var(--nav-h) + 30px) 0 22px;background:rgba(16,16,20,.35);border-bottom:1px solid var(--border)}.pl-head-inner{position:relative;z-index:2}.pl-head-row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px 40px;flex-wrap:wrap}.pl-head-text{min-width:0;flex:1 1 380px}.pl-crumb{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:.82rem;color:var(--text-dim)}.pl-crumb a{transition:color .25s}.pl-crumb a:hover{color:var(--accent)}.pl-crumb>span[aria-hidden]{opacity:.55}.pl-crumb [aria-current]{color:var(--text)}.pl-h1{font-family:var(--font-head);font-weight:800;letter-spacing:-.5px;font-size:clamp(1.9rem, 3.2vw, 2.5rem);line-height:1.1;margin:8px 0 6px}.pl-sub{color:var(--text-dim);font-size:1rem;line-height:1.5;max-width:560px}.pl-stats{display:flex;flex-wrap:wrap;gap:10px;margin:0}.pl-stat{display:flex;flex-direction:column-reverse;justify-content:flex-end;min-width:128px;padding:12px 16px;border-radius:14px;background:var(--surface);border:1px solid var(--border)}.pl-stat dd{margin:0;font-family:var(--font-head);font-weight:800;font-size:1.6rem;line-height:1.1;color:var(--text);font-variant-numeric:tabular-nums}.pl-stat-plus{color:var(--accent);margin-left:1px}.pl-stat dt{margin-top:4px;font-size:.76rem;color:var(--text-dim);line-height:1.35}.pl-stat dt i{color:var(--accent);font-size:.72rem;margin-right:3px}.pl-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.pl-chip{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border-radius:999px;background:var(--surface);border:1px solid var(--border);color:var(--text-dim);font-family:var(--font-head);font-weight:600;font-size:.82rem;line-height:1.3;transition:color .25s,border-color .25s,background .25s}.pl-chip:hover{color:var(--text);border-color:var(--border-hover)}.pl-chip.is-active{background:var(--gradient);color:#fff;border-color:transparent;box-shadow:0 6px 18px rgba(225,29,42,.3)}.pl-chip-n{font-size:.7rem;padding:1px 7px;border-radius:999px;background:rgba(255,255,255,.07);color:inherit}.pl-chip.is-active .pl-chip-n{background:rgba(255,255,255,.22)}.pl-main{padding:32px 0 10px}.pl-sec-title{font-family:var(--font-head);font-weight:700;font-size:1.3rem;line-height:1.3;margin:46px 0 20px}.pl-feat[hidden]+.pl-sec-title,.pl-main .container>.pl-sec-title:first-child{margin-top:0}.pl-kicker{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.pl-cat{display:inline-flex;align-items:center;max-width:100%;padding:4px 12px;border-radius:999px;background:rgba(225,29,42,.12);border:1px solid rgba(225,29,42,.32);color:#ff8f8f;font-size:.72rem;font-weight:600;letter-spacing:.3px;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pl-flag,.pl-year{font-size:.76rem;color:var(--text-dim)}.pl-flag i{color:#fbbf24}.pl-tags{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.pl-tags li{padding:3px 10px;border-radius:8px;background:var(--surface-2);border:1px solid var(--border);color:var(--text-dim);font-size:.72rem;font-weight:500;line-height:1.5}.pl-frame{display:block;overflow:hidden;border-radius:14px;background:#111116;border:1px solid rgba(255,255,255,.1);box-shadow:0 14px 34px rgba(0,0,0,.4)}.pl-bar{display:flex;align-items:center;gap:10px;height:30px;padding:0 12px;background:rgba(255,255,255,.04);border-bottom:1px solid var(--border)}.pl-dots{display:inline-flex;gap:6px;flex:none}.pl-dots i{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.16)}.pl-dots i:first-child{background:var(--primary)}.pl-url{flex:0 1 auto;min-width:0;max-width:70%;margin-left:4px;padding:2px 12px;border-radius:999px;background:rgba(255,255,255,.05);border:1px solid var(--border);color:var(--text-dim);font-size:.72rem;line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pl-url i{color:var(--accent);font-size:.62rem;margin-right:5px}.pl-cover,.pl-media{position:relative;display:block;overflow:hidden;aspect-ratio:16/10;background:var(--bg-alt)}.pl-cover picture{display:block;width:100%;height:100%}.pl-cover-img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}.pl-media-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top center}.pl-cover-fallback{position:absolute;inset:0;display:grid;place-items:center;font-size:3.2rem;color:rgba(255,255,255,.92)}.pl-cover-phone{position:absolute;inset:0;display:grid;place-items:center;padding:14px 0}.pl-cover-phone picture{width:auto;height:100%}.pl-cover-phone img{display:block;height:100%;width:auto;aspect-ratio:390/844;object-fit:cover;object-position:top center;border-radius:14px;border:3px solid #0d0d10;box-shadow:0 12px 28px rgba(0,0,0,.45)}.pl-card,.pl-feat{position:relative}.pl-link{color:inherit}.pl-link::after{content:'';position:absolute;inset:0;z-index:1;border-radius:20px}.pl-feat .pl-link::after{border-radius:24px}.pl-link:focus{outline:0}.pl-link:focus-visible::after{outline:2px solid var(--accent);outline-offset:-3px}.pl-feat-live,.pl-live{position:relative;z-index:2}.pl-chip:focus-visible,.pl-crumb a:focus-visible,.pl-feat-live:focus-visible,.pl-live:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.pl-feat{display:grid;grid-template-columns:minmax(0,60fr) minmax(0,40fr);align-items:center;border-radius:24px;overflow:hidden;background:var(--surface);border:1px solid var(--border);transition:border-color .3s,box-shadow .3s,transform .35s var(--ease)}.pl-feat-shot{position:relative;display:block;min-width:0;padding:22px;background:rgba(255,255,255,.015);border-right:1px solid var(--border)}.pl-feat-shot.has-phone{padding:22px calc(clamp(84px,16%,118px) + 34px) 22px 22px}.pl-feat-shot .pl-frame{box-shadow:0 22px 50px rgba(0,0,0,.45)}.pl-feat-shot .pl-bar{height:34px}.pl-feat-phone{position:absolute;right:18px;bottom:22px;z-index:0;width:clamp(84px,16%,118px);padding:5px;border-radius:22px;background:#0d0d10;border:1px solid rgba(255,255,255,.16);box-shadow:0 18px 40px rgba(0,0,0,.55)}.pl-feat-phone-screen{display:block;aspect-ratio:390/844;border-radius:17px;overflow:hidden;background:#000}.pl-feat-phone-screen picture{display:block;width:100%;height:100%}.pl-feat-phone-screen img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}.pl-feat-body{display:flex;flex-direction:column;align-items:flex-start;gap:14px;padding:30px 34px;min-width:0}.pl-feat-title{font-family:var(--font-head);font-weight:700;letter-spacing:-.3px;font-size:clamp(1.35rem, 2.2vw, 1.85rem);line-height:1.25;overflow-wrap:break-word;transition:color .25s}.pl-feat-desc{color:var(--text-dim);font-size:.98rem;line-height:1.65;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden}.pl-feat-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}.pl-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}.pl-card{display:flex;flex-direction:column;height:100%;border-radius:20px;overflow:hidden;background:var(--surface);border:1px solid var(--border);transition:border-color .3s,box-shadow .3s,transform .35s var(--ease)}.pl-shot{display:block;flex-shrink:0;padding:14px 14px 0}.pl-body{display:flex;flex-direction:column;gap:10px;flex:1;padding:18px 24px 22px;min-width:0}.pl-title{font-family:var(--font-head);font-weight:700;font-size:1.2rem;line-height:1.35;transition:color .25s;overflow-wrap:break-word}@media (hover:hover) and (pointer:fine){.pl-card:hover,.pl-feat:hover{border-color:var(--border-hover);transform:translateY(-4px);box-shadow:0 22px 50px rgba(0,0,0,.45),0 0 0 1px rgba(225,29,42,.18)}.pl-card:hover .pl-title,.pl-feat:hover .pl-feat-title{color:var(--accent)}.pl-card:hover .pl-frame,.pl-feat:hover .pl-frame{border-color:rgba(255,82,82,.3)}.pl-card:hover .pl-more{gap:12px}.pl-feat:hover .pl-feat-actions .btn-primary{transform:translateY(-2px)}}.pl-desc{color:var(--text-dim);font-size:.9rem;line-height:1.6;min-height:calc(1.6em * 2);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}.pl-foot{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 12px;margin-top:auto;padding-top:14px;border-top:1px solid var(--border)}.pl-more{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-head);font-weight:600;font-size:.86rem;color:var(--accent);transition:gap .3s var(--ease)}.pl-live{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border);color:var(--text-dim);font-family:var(--font-head);font-weight:600;font-size:.76rem;line-height:1.3;transition:color .25s,border-color .25s}.pl-live i{font-size:.68rem}.pl-live:hover{color:var(--text);border-color:var(--border-hover)}.pl-empty{text-align:center;padding:54px 22px;border-radius:22px;border:1px dashed rgba(255,255,255,.14);background:var(--surface)}.pl-empty-icon{width:54px;height:54px;margin:0 auto 16px;border-radius:16px;display:grid;place-items:center;font-size:1.2rem;background:rgba(225,29,42,.12);border:1px solid rgba(225,29,42,.3);color:#ff8f8f}.pl-empty h2{font-family:var(--font-head);font-size:1.25rem;margin-bottom:8px}.pl-empty p{color:var(--text-dim);max-width:460px;margin:0 auto 20px}.pl-cta-section{padding:56px 0 80px}@media (max-width:1080px) and (min-width:900px){.pl-grid{gap:24px}.pl-feat{grid-template-columns:minmax(0,58fr) minmax(0,42fr)}.pl-feat-body{padding:24px 26px}}@media (max-width:899px){.pl-grid{grid-template-columns:minmax(0,1fr);gap:24px}.pl-feat{grid-template-columns:minmax(0,1fr)}.pl-feat-shot,.pl-feat-shot.has-phone{padding:14px 14px 0;border-right:0;background:0 0}.pl-feat-phone{display:none}.pl-feat-body{padding:20px 22px 24px}}@media (max-width:760px){.pl-head{padding:calc(var(--nav-h) + 22px) 0 18px}.pl-head-row{flex-direction:column;align-items:stretch;gap:16px}.pl-head-text{flex:none}.pl-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.pl-stat{min-width:0;padding:10px 14px}.pl-stat dd{font-size:1.35rem}.pl-chips{margin-top:16px}}@media (max-width:640px){.pl-grid{gap:18px}.pl-feat-shot,.pl-feat-shot.has-phone,.pl-shot{padding:10px 10px 0}.pl-frame{border-radius:11px;box-shadow:none}.pl-bar,.pl-feat-shot .pl-bar{height:26px;padding:0 10px;gap:8px}.pl-dots{gap:5px}.pl-dots i{width:7px;height:7px}.pl-url{font-size:.66rem;padding:1px 10px}.pl-body{padding:16px 18px 18px}.pl-title{font-size:1.1rem}.pl-desc{min-height:0}.pl-feat-actions .btn{flex:1 1 auto;justify-content:center}.pl-cta-section{padding:40px 0 60px}}@media (max-width:768px){.pl-grid:not(#plGrid){display:flex;gap:12px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;margin-inline:calc(50% - 50vw);padding:2px calc(50vw - 50%) 10px;scroll-padding-inline:calc(50vw - 50%);scrollbar-width:none}.pl-grid:not(#plGrid)::-webkit-scrollbar{display:none}.pl-grid:not(#plGrid)>.pl-card{flex:0 0 84%;max-width:420px;height:auto;min-width:0;scroll-snap-align:start}.pl-grid:not(#plGrid) .pl-tags{display:none}.pl-grid:not(#plGrid) .pl-body{padding:14px 16px 16px;gap:8px}.pl-grid:not(#plGrid) .pl-title{font-size:1.05rem}.pl-grid:not(#plGrid) .pl-desc{font-size:.86rem;line-height:1.55}.pl-grid:not(#plGrid) .pl-foot{padding-top:10px}.pl-main{padding-top:24px}.pl-sec-title{margin:32px 0 14px;font-size:1.15rem}.pl-feat-body{gap:10px}.pl-feat-desc{-webkit-line-clamp:2;line-clamp:2;font-size:.92rem}.pl-feat .pl-tags{display:none}}@media (min-width:641px) and (max-width:768px){#plGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}}@media (max-width:640px){#plGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}#plGrid .pl-card{border-radius:14px}#plGrid .pl-link::after{border-radius:14px}#plGrid .pl-shot{padding:6px 6px 0}#plGrid .pl-frame{border-radius:9px}#plGrid .pl-bar{height:18px;padding:0 7px;gap:5px}#plGrid .pl-dots{gap:4px}#plGrid .pl-dots i{width:5px;height:5px}#plGrid .pl-url{display:none}#plGrid .pl-body{padding:10px 10px 12px;gap:6px}#plGrid .pl-kicker{gap:4px 8px}#plGrid .pl-cat{font-size:.66rem;padding:2px 8px}#plGrid .pl-title{font-size:.9rem;line-height:1.32}#plGrid .pl-desc,#plGrid .pl-foot,#plGrid .pl-tags,#plGrid .pl-year{display:none}.pj-gallery{display:flex;gap:10px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;margin-inline:calc(50% - 50vw);padding:2px calc(50vw - 50%) 8px;scroll-padding-inline:calc(50vw - 50%);scrollbar-width:none}.pj-gallery::-webkit-scrollbar{display:none}.pj-gallery>.pj-shot{flex:0 0 82%;min-width:0;scroll-snap-align:start;border-radius:14px}.pj-features{margin-bottom:30px}}html.lite .pl-card:hover,html.lite .pl-feat:hover{transform:none;box-shadow:none}html.lite .pl-feat:hover .pl-feat-actions .btn-primary{transform:none}html.lite .pl-feat-shot .pl-frame,html.lite .pl-frame{box-shadow:none}@media (prefers-reduced-motion:reduce){.pl-card,.pl-chip,.pl-feat,.pl-feat-title,.pl-more,.pl-title{transition:none}.pl-card:hover,.pl-feat:hover,.pl-feat:hover .pl-feat-actions .btn-primary{transform:none}}