/* Project window: a browser-style pop-up that shows a project page in an iframe. */
html.pm-lock{overflow:hidden}
.pmodal[hidden]{display:none}
.pmodal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;font-family:'Geist','Helvetica Neue',system-ui,sans-serif}
.pmodal-backdrop{position:absolute;inset:0;background:rgba(14,12,10,.62);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;transition:opacity .22s ease}
.pmodal-win{position:relative;display:flex;flex-direction:column;width:min(1180px,calc(100vw - 96px));height:calc(100vh - 72px);background:var(--bg,#f7f3ed);color:var(--text,#1a1814);border:1px solid var(--border,#e3dccf);border-radius:14px;overflow:hidden;box-shadow:0 40px 90px rgba(0,0,0,.45),0 8px 24px rgba(0,0,0,.25);opacity:0;transform:translateY(16px) scale(.985);transition:opacity .22s ease,transform .3s cubic-bezier(.16,1,.3,1)}
.pmodal.is-open .pmodal-backdrop{opacity:1}
.pmodal.is-open .pmodal-win{opacity:1;transform:none}

.pmodal-bar{flex:none;display:flex;align-items:center;gap:12px;height:46px;padding:0 14px;background:var(--surface2,#f4eee4);border-bottom:1px solid var(--border,#e3dccf)}
.pmodal-dots{display:flex;gap:7px;flex:none}
.pmodal-dots i{width:11px;height:11px;border-radius:50%;background:#ff5f57}
.pmodal-dots i:nth-child(2){background:#febc2e}
.pmodal-dots i:nth-child(3){background:#28c840}
.pmodal-url{flex:1;min-width:0;display:flex;align-items:center;gap:8px;height:30px;padding:0 12px;border-radius:8px;background:var(--bg,#f7f3ed);border:1px solid var(--border,#e3dccf);font-family:'Geist Mono',ui-monospace,Menlo,Consolas,monospace;font-size:12px;color:var(--muted,#5b564c)}
.pmodal-url svg{flex:none;opacity:.7}
.pmodal-url-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pmodal-ext{flex:none;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;color:var(--muted,#5b564c);transition:background-color .15s,color .15s}
.pmodal-ext:hover{background:var(--border,#e3dccf);color:var(--text,#1a1814)}

.pmodal-body{position:relative;flex:1;min-height:0;background:var(--bg,#f7f3ed)}
.pmodal-frame{position:absolute;inset:0;width:100%;height:100%;border:0;background:var(--bg,#f7f3ed);opacity:0;transition:opacity .2s ease}
.pmodal-frame.is-ready{opacity:1}
.pmodal-load{position:absolute;inset:0;display:flex;flex-direction:column;gap:14px;padding:56px min(10%,90px);pointer-events:none}
.pmodal-load[hidden]{display:none}
.pmodal-load i{display:block;height:14px;border-radius:7px;background:linear-gradient(90deg,var(--border,#e3dccf) 25%,var(--surface2,#f4eee4) 50%,var(--border,#e3dccf) 75%);background-size:200% 100%;animation:pm-shimmer 1.2s linear infinite}
.pmodal-load i:nth-child(1){width:42%;height:30px}
.pmodal-load i:nth-child(2){width:78%}
.pmodal-load i:nth-child(3){width:64%}
.pmodal-load i:nth-child(4){width:70%;margin-top:18px;height:120px}
@keyframes pm-shimmer{to{background-position:-200% 0}}

.pmodal-x{position:absolute;top:14px;right:16px;z-index:2;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:rgba(20,18,15,.72);color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background-color .15s,transform .15s}
.pmodal-x:hover{background:rgba(20,18,15,.92);transform:scale(1.06)}
.pmodal :focus-visible{outline:2px solid var(--accent,#f5500a);outline-offset:2px}
.pmodal-x:focus-visible{outline-color:#fff}

@media (max-width:760px){
  .pmodal-win{width:100vw;height:100vh;height:100dvh;border:0;border-radius:0}
  .pmodal-dots{display:none}
  .pmodal-bar{padding-right:58px}
  .pmodal-x{top:7px;right:8px;width:32px;height:32px;background:var(--surface2,#f4eee4);border-color:var(--border,#e3dccf);color:var(--text,#1a1814)}
  .pmodal-x:focus-visible{outline-color:var(--accent,#f5500a)}
}
@media (prefers-reduced-motion:reduce){
  .pmodal-backdrop,.pmodal-win,.pmodal-frame{transition:none}
  .pmodal-win{transform:none}
  .pmodal-load i{animation:none}
}
