/* TONAVI preprod portfolio hardening — 2026-09-06 */
.portfolio-card:not(.add-site-card):has(.live-project-preview):hover .portfolio-logo,
.portfolio-card:not(.add-site-card):has(.live-project-preview):focus-visible .portfolio-logo{opacity:0!important;transform:scale(.35)!important}
.tile-preview-surface{padding-top:0!important;display:grid;place-items:center}
.tile-preview-fallback{position:absolute;inset:0;display:grid;place-items:center;background:
 radial-gradient(circle at 50% 42%,color-mix(in srgb,var(--brand-color,#a78bfa) 22%,transparent),transparent 42%),
 linear-gradient(145deg,#12180e,#0f172a 72%);overflow:hidden}
.tile-preview-fallback:before{content:'';position:absolute;inset:7px;border:1px solid #ffffff14;background:linear-gradient(90deg,#ffffff08 1px,transparent 1px),linear-gradient(#ffffff08 1px,transparent 1px);background-size:18px 18px}
.tile-preview-fallback img{position:relative;z-index:1;max-width:72%;max-height:64px;object-fit:contain;filter:none!important;opacity:.86!important;transform:none!important}
.tile-preview-fallback span{position:absolute;right:7px;bottom:4px;z-index:2;color:#d7e8c3;font:700 6px/1.2 Arial,sans-serif;text-transform:uppercase;letter-spacing:.12em;opacity:.72}
.tile-preview-surface iframe,.tile-preview-shot{z-index:3}
.tile-preview-surface.preview-loaded .tile-preview-fallback{opacity:0;transition:opacity .22s ease}
.tile-preview-surface.preview-failed .tile-preview-fallback{opacity:1}
.preview-static{display:block;width:100%;height:100%;object-fit:cover;object-position:top center;background:#0b1020}
.preview-static[hidden]{display:none!important}

/* Empty cells in the last desktop row become deliberate CTA cards. */
.add-site-card{--brand-color:#a78bfa;cursor:pointer;isolation:isolate;background:#0a0c09!important;border-color:#506131!important;overflow:hidden;align-content:center;justify-items:center;text-align:center;padding:18px!important}
.add-site-card:before{content:'';position:absolute;inset:10px;border:1px dashed #a78bfa66;clip-path:polygon(0 0,26px 0,26px 1px,1px 1px,1px 26px,0 26px,0 0,100% 0,100% 26px,99% 26px,99% 1px,calc(100% - 26px) 1px,calc(100% - 26px) 0,100% 0,100% 100%,calc(100% - 26px) 100%,calc(100% - 26px) 99%,99% 99%,99% calc(100% - 26px),100% calc(100% - 26px),100% 100%,0 100%,0 calc(100% - 26px),1px calc(100% - 26px),1px 99%,26px 99%,26px 100%,0 100%);opacity:.72;pointer-events:none}
.add-site-card:after{content:''!important;position:absolute!important;inset:auto!important;width:140px!important;height:140px!important;border-radius:50%!important;background:#a78bfa!important;opacity:.04!important;transform:scale(.5)!important;transition:transform .5s cubic-bezier(.16,1,.3,1),opacity .3s!important;z-index:-1!important}
.add-site-card:hover:after,.add-site-card:focus-visible:after{transform:scale(1.45)!important;opacity:.11!important}
.add-site-plus{display:grid;place-items:center;width:48px;height:48px;border:1px solid #a78bfa;border-radius:50%;color:#a78bfa;font:300 32px/1 Arial,sans-serif;margin:0 auto 13px;transition:transform .45s cubic-bezier(.16,1,.3,1),background .3s,color .3s}
.add-site-card:hover .add-site-plus,.add-site-card:focus-visible .add-site-plus{transform:rotate(90deg) scale(1.08);background:#a78bfa;color:#091006}
.add-site-kicker{display:block;color:#7e8976;font:700 6px/1.2 Arial,sans-serif;letter-spacing:.18em;margin-bottom:6px}
.add-site-title{display:block;color:#f2f5ee;font:750 13px/1.1 Arial,sans-serif;text-transform:uppercase}
.add-site-note{display:block;color:#a9b69d;font:7px/1.25 Arial,sans-serif;margin-top:7px}

/* Quick brief dialog opened from the portfolio grid. */
.add-site-dialog{width:min(1040px,calc(100vw - 28px));max-width:none;padding:0;border:1px solid #536146;background:#0f172a;color:#edf2e8;box-shadow:0 35px 100px #000c;overflow:visible}
.add-site-dialog::backdrop{background:#000d;backdrop-filter:blur(12px)}
.add-site-modal{position:relative;background:radial-gradient(circle at 8% 5%,#a78bfa11,transparent 30%),#0f172a}
.add-site-modal-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid #30372b;padding:28px 30px 25px}
.add-site-modal-head>div>span{display:block;color:#89947f;font:700 9px/1.2 Arial,sans-serif;letter-spacing:.18em;margin-bottom:13px}
.add-site-modal h2{font:800 clamp(34px,5vw,64px)/.88 Arial,sans-serif;letter-spacing:-.055em;margin:0;color:#f2f4ef}
.add-site-modal h2 em{font-style:normal;color:#a78bfa}
.add-site-close{width:44px;height:44px;border:1px solid #4b5542;background:#0c100a;color:#e8eee1;font:300 28px/1 Arial;cursor:pointer}
.add-site-close:hover,.add-site-close:focus-visible{border-color:#a78bfa;color:#a78bfa}
.add-site-modal-grid{display:grid;grid-template-columns:.68fr 1.32fr;min-height:520px}
.add-site-promise{border-right:1px solid #30372b;padding:30px;display:flex;flex-direction:column}
.add-site-promise>p{margin:0;color:#b4beb0;font:14px/1.65 Arial,sans-serif;max-width:300px}
.add-site-promise ol{list-style:none;padding:0;margin:38px 0;display:grid;gap:14px;color:#dce3d6;font:11px/1.3 Arial,sans-serif;text-transform:uppercase;letter-spacing:.06em}
.add-site-promise li{display:flex;gap:14px;align-items:center;border-top:1px solid #252b22;padding-top:12px}.add-site-promise li b{color:#a78bfa;font-size:9px}
.add-site-badge{margin-top:auto;border:1px solid #51613b;padding:16px;color:#aab6a1;font:10px/1.45 Arial,sans-serif;text-transform:uppercase;letter-spacing:.08em}.add-site-badge strong{font-size:20px;color:#a78bfa;letter-spacing:-.03em}
.add-site-form{padding:28px 30px 30px;display:grid;gap:17px}
.add-site-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.add-site-form label{display:grid;gap:7px;color:#aeb8a8;font:9px/1.2 Arial,sans-serif;text-transform:uppercase;letter-spacing:.08em}.add-site-form label>span{opacity:.55;text-transform:none;letter-spacing:0}
.add-site-form input,.add-site-form select,.add-site-form textarea{box-sizing:border-box;width:100%;border:1px solid #3c4437;background:#121a36;color:#f2f5ee;border-radius:0;padding:12px 13px;font:13px/1.4 Arial,sans-serif;outline:0;text-transform:none;letter-spacing:0}
.add-site-form input,.add-site-form select{min-height:45px}.add-site-form textarea{resize:vertical;min-height:82px}
.add-site-form input:focus,.add-site-form select:focus,.add-site-form textarea:focus{border-color:#a78bfa;box-shadow:0 0 0 1px #a78bfa}
.add-site-consent{display:flex!important;grid-template-columns:18px 1fr!important;align-items:flex-start;gap:10px!important;text-transform:none!important;letter-spacing:0!important;font-size:10px!important;line-height:1.45!important}.add-site-consent input{width:16px!important;min-height:16px!important;height:16px;margin:1px 0 0}.add-site-consent a{color:#a78bfa}
.add-site-submit{justify-content:space-between;width:100%;margin-top:3px}
.add-site-status{min-height:18px;color:#b9c5b0;font:10px/1.4 Arial,sans-serif}.add-site-status.success{color:#a78bfa}.add-site-status.error{color:#ff8065}

@media(max-width:800px){.add-site-modal-grid{grid-template-columns:1fr}.add-site-promise{display:none}.add-site-dialog{width:calc(100vw - 16px);max-height:94dvh;overflow:auto}.add-site-modal-head{padding:20px}.add-site-form{padding:20px}.add-site-row{grid-template-columns:1fr}.add-site-card{min-height:140px!important}}
@media(max-width:600px){.add-site-plus{width:38px;height:38px;font-size:25px}.add-site-kicker{font-size:5px}.add-site-title{font-size:10px}.add-site-note{font-size:6px}.add-site-modal h2{font-size:38px}.add-site-close{width:38px;height:38px}}

/* V3 live viewport snapshots: bitmap thumbnail generated from the proven TONAVI proxy. */
.snapshot-project-preview .tile-preview-surface{background:#0b1020;padding:0!important}
.snapshot-project-preview .live-snapshot{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top center;opacity:0;transform:none!important;filter:none!important;transition:opacity .28s ease;z-index:4;background:#fff}
.snapshot-project-preview .tile-preview-surface.preview-loaded .live-snapshot{opacity:1}
.snapshot-project-preview .tile-preview-surface.preview-loaded .tile-preview-fallback{opacity:0}
.snapshot-project-preview .tile-preview-surface.preview-failed .live-snapshot{opacity:0}
