/* Synthetic Hearts — swipe discovery */
.swipe-dashboard{max-width:1380px}
.swipe-topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:40px;margin-bottom:38px}
.swipe-topbar h1{margin:0;font:800 clamp(2.5rem,4.8vw,4.6rem)/.98 Manrope,Inter,sans-serif;letter-spacing:-.055em}
.swipe-topbar h1 span{background:linear-gradient(90deg,#fff,#ff78b2 55%,#9c88ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.swipe-topbar>div>p{max-width:650px;margin:18px 0 0;color:#938d9c;line-height:1.65}
.compact-profile{min-width:260px}
.compact-profile .profile-orb{width:62px;height:62px;flex-basis:62px}

.discovery-layout{display:grid;grid-template-columns:minmax(210px,.75fr) minmax(380px,520px) minmax(210px,.75fr);gap:34px;align-items:center;min-height:690px}
.discovery-side{padding:26px}
.discovery-side h2{margin:0;font:800 1.7rem/1.1 Manrope,Inter,sans-serif;letter-spacing:-.035em}
.discovery-side>p{margin:14px 0 0;color:#817b89;font-size:.9rem;line-height:1.65}
.swipe-legend{display:grid;gap:10px;margin-top:28px}
.swipe-legend>div{display:flex;align-items:center;gap:13px;padding:12px;border:1px solid rgba(255,255,255,.055);border-radius:16px;background:rgba(255,255,255,.018)}
.swipe-legend>div>span{width:42px;height:42px;display:grid;place-items:center;border-radius:50%;font-size:1.4rem;font-weight:700}
.legend-no{background:rgba(255,255,255,.04);color:#a49daa}.legend-yes{background:rgba(255,79,154,.09);color:#ff6fac}
.swipe-legend strong,.swipe-legend small{display:block}.swipe-legend small{margin-top:2px;color:#6f6975;font-size:.7rem}

.swipe-stage{position:relative;text-align:center;user-select:none}
.swipe-deck{position:relative;height:590px;perspective:1200px}
.swipe-card{position:absolute;inset:0;margin:auto;width:min(100%,430px);height:570px;border:1px solid rgba(255,255,255,.1);border-radius:31px;background:#15111c;box-shadow:0 35px 100px rgba(0,0,0,.42);overflow:hidden}
.swipe-card-back{pointer-events:none}
.back-two{transform:translateY(22px) scale(.91);opacity:.28;background:linear-gradient(145deg,#25192c,#111019)}
.back-one{transform:translateY(12px) scale(.955);opacity:.52;background:linear-gradient(145deg,#201725,#121018)}
.swipe-card-active{z-index:3;touch-action:none;cursor:grab;will-change:transform;transition:transform .15s ease,opacity .15s ease}
.swipe-card-active.is-dragging{cursor:grabbing;transition:none}
.swipe-photo{position:relative;height:440px;overflow:hidden;background:radial-gradient(circle at 50% 26%,rgba(255,142,190,.23),transparent 23%),radial-gradient(circle at 50% 58%,rgba(120,83,255,.13),transparent 37%),linear-gradient(160deg,#311b32 0%,#18111f 54%,#0d0b12 100%)}
.demo-persona-silhouette{position:absolute;left:50%;top:50%;transform:translate(-50%,-48%);width:235px;height:235px;display:grid;place-items:center;border-radius:50%;font:800 6rem Manrope;color:rgba(255,255,255,.64);background:linear-gradient(145deg,rgba(255,255,255,.09),rgba(255,255,255,.02));border:1px solid rgba(255,255,255,.09);box-shadow:0 0 90px rgba(255,79,154,.14)}
.persona-gradient{position:absolute;inset:30% 0 0;background:linear-gradient(transparent,rgba(9,7,12,.3) 32%,#0c0910 100%)}
.persona-content{position:absolute;z-index:2;left:25px;right:25px;bottom:23px;text-align:left}
.persona-online{display:inline-flex;align-items:center;gap:6px;margin-bottom:10px;padding:5px 9px;border-radius:999px;background:rgba(8,7,12,.52);backdrop-filter:blur(10px);font-size:.68rem;color:#a8edc4}
.persona-online i{width:6px;height:6px;border-radius:50%;background:#68df9c;box-shadow:0 0 8px #68df9c}
.persona-name-row{display:flex;align-items:center;gap:9px}.persona-name-row h2{margin:0;font:800 2.15rem/1 Manrope;letter-spacing:-.04em}.persona-name-row h2 span{font-weight:500;color:#d1cbd4}.verified-dot{width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:#ff579f;color:#fff;font-size:.65rem}
.persona-content>p{margin:8px 0 13px;color:#c5bec9;font-size:.87rem}
.persona-tags{display:flex;flex-wrap:wrap;gap:7px}.persona-tags span{padding:7px 10px;border:1px solid rgba(255,255,255,.1);border-radius:999px;background:rgba(12,9,16,.52);backdrop-filter:blur(8px);font-size:.68rem;color:#d9d3dc}
.swipe-card-detail{height:130px;box-sizing:border-box;padding:19px 24px;text-align:left;background:#100d15}
.swipe-card-detail p{margin:0 0 9px;color:#d7d0da;font-size:.86rem;line-height:1.45}.swipe-card-detail>span{color:#6f6976;font-size:.64rem}

.swipe-stamp{position:absolute;z-index:8;top:55px;padding:9px 13px;border:3px solid;border-radius:9px;font:900 1.55rem Manrope;letter-spacing:.05em;opacity:0;pointer-events:none}
.swipe-stamp-no{right:30px;transform:rotate(13deg);color:#d4ced7;border-color:#d4ced7}.swipe-stamp-yes{left:28px;transform:rotate(-13deg);color:#ff5ca4;border-color:#ff5ca4}

.swipe-controls{position:relative;z-index:5;display:flex;justify-content:center;align-items:center;gap:17px;margin-top:18px}
.swipe-button{border:1px solid rgba(255,255,255,.09);background:#15111c;color:#fff;border-radius:50%;display:grid;place-items:center;cursor:pointer;box-shadow:0 12px 35px rgba(0,0,0,.22);transition:.2s ease}
.swipe-button:hover:not(:disabled){transform:translateY(-3px) scale(1.04)}
.swipe-pass,.swipe-match{width:62px;height:62px;font-size:2rem}.swipe-info{width:45px;height:45px;color:#837c8a;font-weight:800}.swipe-info:disabled{opacity:.45;cursor:default}
.swipe-pass{color:#aaa2ae}.swipe-match{color:#ff5aa2;border-color:rgba(255,90,162,.22);box-shadow:0 12px 35px rgba(255,79,154,.08)}
.swipe-hint{margin:12px 0 0;color:#625d67;font-size:.69rem}

.empty-matches{margin-top:28px;padding:21px;border:1px dashed rgba(255,255,255,.08);border-radius:20px;background:rgba(255,255,255,.015)}
.empty-match-orbs{display:flex;margin-bottom:14px}.empty-match-orbs i{width:34px;height:34px;margin-right:-7px;border:2px solid #131019;border-radius:50%;background:linear-gradient(145deg,#342139,#1c1722)}
.empty-matches strong,.empty-matches span{display:block}.empty-matches span{margin-top:5px;color:#6f6975;font-size:.73rem;line-height:1.45}

.demo-match-overlay{position:fixed;z-index:100;inset:0;display:grid;place-items:center;padding:20px;background:rgba(5,4,8,.72);backdrop-filter:blur(16px)}
.demo-match-overlay[hidden]{display:none!important}
.demo-match-dialog{width:min(100%,440px);padding:42px 34px;text-align:center;border:1px solid rgba(255,104,169,.2);border-radius:30px;background:radial-gradient(circle at 50% 0,rgba(255,79,154,.15),transparent 38%),#120e18;box-shadow:0 40px 120px rgba(0,0,0,.5)}
.match-heart{display:grid;place-items:center;width:72px;height:72px;margin:0 auto 18px;border-radius:50%;background:linear-gradient(135deg,#ff4f9a,#7658ff);font-size:2rem;box-shadow:0 0 50px rgba(255,79,154,.28)}
.demo-match-dialog h2{margin:0;font:800 2.5rem Manrope;letter-spacing:-.05em}.demo-match-dialog p{margin:14px 0 25px;color:#948d9c;line-height:1.6}

@media(max-width:1080px){.discovery-layout{grid-template-columns:1fr minmax(370px,500px)}.discovery-side-right{display:none}}
@media(max-width:800px){.swipe-topbar{display:block}.compact-profile{margin-top:22px;max-width:340px}.discovery-layout{display:block}.discovery-side{display:none}.swipe-deck{margin-top:10px}}
@media(max-width:520px){.swipe-dashboard{width:100%;padding-left:12px;padding-right:12px}.swipe-topbar{padding:0 8px}.swipe-topbar h1{font-size:2.55rem}.swipe-topbar>div>p{font-size:.87rem}.compact-profile{display:none}.swipe-deck{height:min(590px,calc(100vh - 250px));min-height:500px}.swipe-card{height:min(570px,calc(100vh - 270px));min-height:480px;border-radius:26px}.swipe-photo{height:calc(100% - 120px)}.swipe-card-detail{height:120px}.demo-persona-silhouette{width:190px;height:190px;font-size:5rem}.swipe-controls{margin-top:12px}}


/* Real character/match data */
.character-avatar-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.discovery-empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:36px;text-align:center;background:radial-gradient(circle at 50% 35%,rgba(255,79,154,.12),transparent 30%),#120f18}
.discovery-empty>span{width:70px;height:70px;display:grid;place-items:center;margin-bottom:18px;border-radius:50%;background:rgba(255,79,154,.09);color:#ff66a7;font-size:1.7rem}
.discovery-empty h2{max-width:300px;margin:0;font:800 1.65rem/1.15 Manrope}.discovery-empty p{max-width:310px;margin:12px 0 0;color:#817a89;line-height:1.55;font-size:.85rem}
.swipe-button:disabled{opacity:.3;cursor:not-allowed;transform:none!important}
.match-list{display:grid;gap:9px;margin-top:24px}
.match-row{display:flex;align-items:center;gap:11px;padding:10px;border:1px solid rgba(255,255,255,.06);border-radius:15px;background:rgba(255,255,255,.018)}
.match-avatar{width:42px;height:42px;flex:0 0 42px;display:grid;place-items:center;overflow:hidden;border-radius:50%;background:linear-gradient(145deg,#ff4f9a,#7257ff);font-weight:800}
.match-avatar img{width:100%;height:100%;object-fit:cover}
.match-row>div:nth-child(2){min-width:0;flex:1}.match-row strong,.match-row span{display:block}.match-row strong{font-size:.83rem}.match-row span{margin-top:2px;color:#716a77;font-size:.68rem}.match-row>i{color:#ff5aa2;font-style:normal;font-size:.8rem}

.swipe-photo{background:linear-gradient(145deg,var(--char-a,#E45772),var(--char-b,#542348))}
.persona-online.offline{color:#b9b2bf}
.persona-online.offline i{background:#8a838e;box-shadow:none}


/* Match Modal v1 */
.match-dialog-actions{display:grid;gap:10px;margin-top:24px}
.match-dialog-actions .button{width:100%;min-height:48px;display:flex;align-items:center;justify-content:center;text-decoration:none;border-radius:14px;font-weight:800}
.match-chat-now{box-shadow:0 12px 35px rgba(220,54,145,.22)}
.match-continue{border:1px solid rgba(255,255,255,.09);background:rgba(255,255,255,.035);color:#c9c1cc;cursor:pointer}
.match-continue:hover{background:rgba(255,255,255,.07);color:#fff}
.match-row-link{text-decoration:none;color:inherit;transition:transform .18s ease,border-color .18s ease,background .18s ease}
.match-row-link:hover{transform:translateX(3px);border-color:rgba(255,91,160,.16);background:rgba(255,91,160,.035)}
.demo-match-dialog{animation:matchDialogIn .32s cubic-bezier(.2,.8,.2,1)}
.match-heart{animation:matchHeartPop .55s cubic-bezier(.2,.9,.25,1)}
@keyframes matchDialogIn{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}
@keyframes matchHeartPop{0%{transform:scale(.55) rotate(-12deg)}65%{transform:scale(1.12) rotate(4deg)}100%{transform:scale(1) rotate(0)}}

.match-chat-now{border:0;cursor:pointer}
.match-chat-now:disabled{opacity:.45;cursor:not-allowed}
