/* One-person discovery and candidate photo gallery. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.is-discover .workspace{height:calc(100dvh - 83px);min-height:480px;max-width:none;padding:20px 28px 12px;overflow:hidden}
.is-discover .app-footer{display:none}
.swipe-page{height:100%;min-height:0;display:flex;flex-direction:column;align-items:center;gap:10px}
.swipe-stage{width:100%;min-height:0;flex:1;display:flex;justify-content:center;align-items:stretch;perspective:1500px}
.swipe-card{position:relative;width:min(100%,540px);height:100%;isolation:isolate;border-radius:24px;overflow:hidden;background:#233e32;box-shadow:0 16px 50px #1c432927;touch-action:pan-y;user-select:none;cursor:grab;transform-origin:50% 80%;transition:transform .23s ease,opacity .23s ease;will-change:transform}
.swipe-card.is-dragging{cursor:grabbing;transition:none}
.swipe-portrait{position:absolute;inset:0;z-index:-2}
.swipe-shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(10,22,17,.35),transparent 24%,transparent 34%,rgba(9,24,17,.35) 54%,rgba(9,24,17,.9) 77%,rgba(9,24,17,.97))}
.swipe-toolbar{position:absolute;top:18px;left:20px;right:20px;display:flex;align-items:center;gap:10px;z-index:4}
.deck-filter{border:1px solid #ffffff40;display:inline-flex;gap:7px;align-items:center;justify-content:center;min-height:38px;border-radius:22px;padding:8px 13px;background:#142d234c;backdrop-filter:blur(12px);color:#fff;font-size:12px;font-weight:600}
.deck-filter svg{width:16px;height:16px}.deck-filter svg:last-child{width:13px;height:13px}
.deck-filter.filter-icon{width:38px;padding:0;margin-left:auto}.deck-filter.filter-icon svg{width:19px;height:19px}
.deck-filter:hover{background:#fff3}.deck-remaining{color:#fffd;font-size:10px;font-weight:500;text-shadow:0 1px 8px #0007;margin-left:auto}
.swipe-content{position:absolute;bottom:16px;left:26px;right:26px;color:white}
.swipe-goal{display:inline-flex;align-items:center;gap:6px;color:#e1ead5;font-size:10px;font-weight:550;letter-spacing:.2px;margin-bottom:9px}.swipe-goal svg{width:14px;height:14px}
.swipe-content h2{font-size:36px;font-weight:650;letter-spacing:-1px;display:flex;align-items:center;line-height:1.2;gap:0;color:white}.swipe-content h2>span:not(.verified){font-weight:400}.swipe-content .verified{margin-left:8px}.swipe-content .verified svg{width:23px;height:23px}
.swipe-location{display:flex;align-items:center;gap:7px;font-size:12px;color:#fffD;margin-top:7px;flex-wrap:wrap}.swipe-location svg{width:14px;height:14px}.swipe-location>span{opacity:.5}
.swipe-hobbies{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.swipe-hobbies>span{border:1px solid #ffffff36;background:#ffffff14;border-radius:20px;font-size:10px;padding:4px 10px;color:#fffE;backdrop-filter:blur(10px)}
.swipe-content .score-box{margin-top:15px;background:#ffffff12;border:1px solid #ffffff29;border-radius:12px;backdrop-filter:blur(14px)}
.swipe-content .score-cell{font-size:9px;color:#dfE7df;padding:10px 7px}.swipe-content .score-cell strong{color:#e0edcd;font-size:24px;line-height:1.2;margin-bottom:3px}.swipe-content .score-cell+.score-cell{border-color:#ffffff25}.swipe-content .score-cell.locked{font-size:9px;line-height:1.5;color:#eee5d6;border-left-color:#ffffff25}.swipe-content .score-cell .lock-label{height:29px;color:#e5d5b0;display:grid;place-items:center}.swipe-content .score-cell .lock-label svg{width:17px;height:17px}
.swipe-actions{display:flex;align-items:center;justify-content:center;gap:37px;margin-top:17px}
.decision-action{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border:0;background:none;padding:0;color:white;font-size:10px;font-weight:550;min-width:70px;cursor:pointer;touch-action:manipulation}
.decision-circle{display:grid;place-items:center;width:60px;height:60px;border-radius:50%;background:#fff;color:var(--green);box-shadow:0 4px 14px #0002;transition:transform .16s ease,background .16s ease}.decision-circle svg{width:29px;height:29px;stroke-width:2}
.pass-action .decision-circle{color:#dd806d;background:#fff7f2}.like-action .decision-circle{color:white;background:#c86c56}.like-action .decision-circle svg{fill:currentColor;stroke-width:1.5}.detail-action .decision-circle{width:46px;height:46px;background:#ffffff18;border:1px solid #ffffff65;color:#fff;backdrop-filter:blur(10px)}.detail-action .decision-circle svg{width:24px;height:24px;stroke-width:1.6}
.decision-action:hover .decision-circle{transform:scale(1.08)}.decision-action:active .decision-circle{transform:scale(.95)}.decision-action:focus-visible{outline-color:#e0edcd;border-radius:10px;outline-offset:7px}.decision-action:disabled{opacity:.7}
.swipe-hint{font-size:9px;color:#ffffff9e;text-align:center;margin-top:12px}.swipe-hint span{margin:0 7px;color:#ffffff4d}.desktop-swipe-note{font-size:10px;color:#798776;flex-shrink:0}.desktop-swipe-note span{margin-left:10px;color:#9aa494}
.swipe-stamp{position:absolute;top:100px;border:4px solid currentColor;border-radius:9px;padding:5px 14px;font-size:39px;font-weight:700;letter-spacing:3px;line-height:1.2;pointer-events:none;z-index:5;text-shadow:0 1px 8px #0002}.stamp-like{left:28px;color:#b8e4b7;transform:rotate(-15deg);opacity:var(--like-feedback,0)}.stamp-pass{right:28px;color:#ffad98;transform:rotate(15deg);opacity:var(--pass-feedback,0)}
.swipe-card.exit-like{transform:translate3d(115%,25px,0) rotate(15deg);opacity:0;pointer-events:none}.swipe-card.exit-pass{transform:translate3d(-115%,25px,0) rotate(-15deg);opacity:0;pointer-events:none}
.deck-finished{justify-content:center}.deck-empty{max-width:410px;text-align:center;display:flex;align-items:center;flex-direction:column;gap:16px;padding:30px 20px}.deck-empty-icon{width:77px;height:77px;border-radius:50%;display:grid;place-items:center;background:#e5eddd;color:#6c8f6e;margin-bottom:7px}.deck-empty-icon svg{width:35px;height:35px}.deck-empty h1{font-size:35px;line-height:1.2}.deck-empty .eyebrow{font-size:9px}.deck-empty p{font-size:12px;line-height:1.9;margin-bottom:4px}.deck-empty small{font-size:9px;color:#8d9887;margin-top:8px}
.gallery-portrait{background-image:url('assets/gallery-lifestyle.png');background-size:300% 400%}
.candidate-gallery{min-width:0}.gallery-viewer{position:relative;border-radius:20px;overflow:hidden;background:#dfe8da}.candidate-gallery .detail-photo{height:550px;border-radius:0;position:relative;overflow:hidden}.gallery-progress{position:absolute;top:13px;left:15px;right:15px;display:flex;gap:5px;z-index:3}.gallery-progress>span{height:4px;border-radius:4px;background:#ffffff60;flex:1}.gallery-progress>span.active{background:#fff}.gallery-count{position:absolute;right:15px;top:28px;padding:3px 8px;border-radius:12px;background:#172a2b6e;backdrop-filter:blur(10px);color:white;font-size:10px;display:flex;align-items:center;gap:5px;z-index:3}.gallery-count svg{width:12px;height:12px}
.gallery-arrow{position:absolute;top:46%;width:38px;height:38px;border:1px solid #ffffff55;border-radius:50%;background:#132c226b;backdrop-filter:blur(8px);color:white;z-index:4;display:grid;place-items:center}.gallery-arrow:hover{background:#183c2cbe}.gallery-arrow svg{width:19px;height:19px}.gallery-arrow.prev{left:13px}.gallery-arrow.prev svg{transform:rotate(180deg)}.gallery-arrow.next{right:13px}.gallery-arrow:disabled{opacity:.25;cursor:default}
.gallery-thumbnails{display:flex;align-items:center;gap:10px;margin-top:14px}.gallery-thumbnail{width:66px;height:82px;flex-shrink:0;border:3px solid transparent;border-radius:10px;padding:0;opacity:.65;background-origin:border-box}.gallery-thumbnail.selected{border-color:var(--green);opacity:1;box-shadow:0 0 0 2px var(--cream),0 0 0 3px var(--green)}.gallery-thumbnail:hover{opacity:1}.gallery-thumbnails>span{font-size:10px;color:var(--muted);line-height:1.8;margin-left:4px}
.candidate-full-name{font-family:'DM Serif Display',Georgia,serif;font-size:30px;font-weight:400;margin-top:10px}.detail-panel .detail-goal{margin:18px 0;gap:10px;flex-wrap:wrap}.detail-section-title{font-size:12px;letter-spacing:.1px;margin-bottom:10px}.detail-panel .quote{font-size:13px;line-height:1.9;margin:0 0 24px}.detail-decision-actions{display:grid;grid-template-columns:1fr 1.35fr;gap:12px;margin-top:28px}.detail-next-note{font-size:9px;text-align:center;line-height:1.8;margin-top:12px}
@media(min-width:1600px){.swipe-card{width:590px}.swipe-content{left:30px;right:30px;bottom:20px}.swipe-content h2{font-size:40px}.swipe-actions{margin-top:20px;gap:50px}.decision-circle{width:66px;height:66px}}
@media(max-width:1050px) and (min-width:761px){.is-discover .workspace{margin-left:82px;padding:18px 24px 10px}.candidate-gallery .detail-photo{height:500px}.candidate-full-name{font-size:26px}}
@media(max-width:760px){.is-discover .topbar{height:60px;padding:0 17px}.is-discover .workspace{margin-left:0;padding:0;height:calc(100dvh - 129px - env(safe-area-inset-bottom));min-height:0;overflow:hidden}.swipe-page{gap:0}.swipe-stage{padding:0 6px 6px}.swipe-card{width:100%;max-width:560px;border-radius:17px;box-shadow:none}.swipe-toolbar{left:16px;right:16px;top:14px}.deck-filter{font-size:11px;padding:7px 11px;min-height:34px}.deck-filter.filter-icon{width:34px}.deck-remaining{font-size:9px}.swipe-content{left:21px;right:21px;bottom:14px}.swipe-content h2{font-size:34px}.swipe-content .verified svg{width:21px;height:21px}.swipe-goal{font-size:9px;margin-bottom:6px}.swipe-location{font-size:11px;margin-top:5px;gap:6px}.swipe-hobbies{margin-top:8px;gap:5px}.swipe-hobbies>span{font-size:9px;padding:3px 9px}.swipe-content .score-box{margin-top:12px}.swipe-content .score-cell,.swipe-content .score-cell.locked{font-size:8px;padding:8px 5px}.swipe-content .score-cell strong{font-size:23px}.swipe-content .score-cell .lock-label{height:28px}.swipe-actions{gap:31px;margin-top:14px}.decision-circle{width:56px;height:56px}.decision-circle svg{width:27px;height:27px}.detail-action .decision-circle{width:44px;height:44px}.decision-action{font-size:9px;gap:4px;min-width:66px}.swipe-hint{font-size:8px;margin-top:9px}.desktop-swipe-note{display:none}.swipe-stamp{top:83px;font-size:33px}.deck-empty{padding:26px}.deck-empty h1{font-size:31px}.candidate-gallery .detail-photo{height:min(70dvh,570px)}.candidate-gallery .detail-photo-bottom{left:23px}.gallery-thumbnail{width:63px;height:78px}.gallery-thumbnails{gap:10px}.candidate-full-name{font-size:28px}.candidate-detail .detail-panel{padding:24px}.candidate-detail{gap:24px}}
@media(max-height:740px){.swipe-content{bottom:10px}.swipe-content h2{font-size:29px}.swipe-goal{margin-bottom:4px}.swipe-hobbies{display:none}.swipe-content .score-box{margin-top:9px}.swipe-content .score-cell,.swipe-content .score-cell.locked{padding:6px 4px}.swipe-content .score-cell strong{font-size:21px}.swipe-content .score-cell .lock-label{height:25px}.swipe-actions{margin-top:10px;gap:28px}.decision-circle{width:49px;height:49px}.decision-circle svg{width:25px;height:25px}.detail-action .decision-circle{width:39px;height:39px}.swipe-hint{margin-top:7px}.desktop-swipe-note{display:none}.is-discover .workspace{padding-top:12px;padding-bottom:12px}.swipe-toolbar{top:12px}}
@media(max-width:760px) and (max-height:740px){.is-discover .workspace{padding:0}.swipe-content{left:19px;right:19px}.swipe-goal{font-size:8px}.swipe-location{font-size:10px}.swipe-content h2{font-size:29px}}
@media(prefers-reduced-motion:reduce){.swipe-card,.decision-circle{transition:none}.swipe-card.exit-like,.swipe-card.exit-pass{transform:none}}

.dummy-marker{display:inline-flex;margin-left:9px;font-size:8px;padding:2px 7px;border:1px solid #ffffff50;border-radius:20px;color:#fffC;vertical-align:middle}.data-loading{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:28px;text-align:center}.data-loading h1{font-size:32px}.data-loading p{font-size:13px}
