/* Match Made in HEAV3N (heav3n.org/dating). Sits on top of lilith.css and uses its tokens.
   --hue is set per kind (inc/dating/lib.php D_KIND_HUE) and tints cards, avatars and chat. */
.navlinks .nav-date,#drawer a.nav-date{color:#ff8fb1}
.dating{--rose:#ff5d8f;--card:#120d18;--line:rgba(255,248,236,.14)}
.dating main{min-height:70vh}
.dvh{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.dsmall{font-size:.86rem;line-height:1.5}
.dml{margin-left:18px}
.derr{color:#ffb4a8;background:rgba(224,20,43,.16);border-left:4px solid var(--scarlet);padding:10px 14px;border-radius:0 8px 8px 0;max-width:60ch}
.dlink{background:none;border:0;padding:10px 4px;color:var(--dim);font:inherit;font-size:.86rem;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.dlink:hover{color:#fff}

/* Google button */
.gbtn{display:inline-flex;align-items:center;gap:12px;background:#fff;color:#1f1f1f;text-decoration:none;border:3px solid #000;border-radius:999px;
  padding:11px 22px 11px 14px;font:600 1rem/1.2 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;box-shadow:0 6px 0 #000;transition:transform .12s var(--pop),box-shadow .12s}
.gbtn svg{width:24px;height:24px;flex:none}
.gbtn:hover{color:#000;transform:translateY(-2px)}
.gbtn:active{transform:translateY(4px);box-shadow:0 2px 0 #000}
.gbtn.big{font-size:clamp(1.02rem,2.4vw,1.2rem);padding:14px 28px 14px 18px}
.gbtn.big svg{width:28px;height:28px}

/* ── landing ─────────────────────────────────────────────────────────── */
.dhero{position:relative;min-height:100svh;display:grid;align-items:end;overflow:clip;background:
  radial-gradient(90% 70% at 70% 20%,rgba(255,93,143,.28),transparent 60%),
  radial-gradient(80% 60% at 15% 80%,rgba(245,197,66,.2),transparent 60%),linear-gradient(160deg,#1c0a22,#07050a 70%)}
.dhero-film,.dhero-veil{position:absolute;inset:0}
.dhero-film video{width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1.2s ease}
.dhero-film video.on{opacity:1}
.dhero-veil{background:linear-gradient(180deg,rgba(7,5,10,.55) 0,rgba(7,5,10,.05) 30%,rgba(7,5,10,.2) 52%,rgba(7,5,10,.94) 100%)}
.dhero-in{padding-top:calc(96px + env(safe-area-inset-top));padding-bottom:clamp(72px,11vh,120px);width:100%}
.dhero h1{font:900 clamp(3.2rem,13vw,9.5rem)/.9 var(--display);letter-spacing:-.02em;text-shadow:0 4px 0 #000,0 0 46px rgba(0,0,0,.7)}
.dhero h1 span{display:block;font:400 clamp(1.1rem,3.4vw,2.2rem)/1.1 var(--hand);letter-spacing:.02em;color:var(--gold);transform:rotate(-2deg);transform-origin:left;margin-bottom:.25em;text-shadow:0 3px 0 #000}
.dhero h1 b{color:var(--scarlet)}
.dhero .lede{max-width:34ch;margin:.9em 0 1.3em;font-size:clamp(1.08rem,2.3vw,1.45rem);text-shadow:0 2px 14px #000,0 0 3px #000}
.dhero .kicker{text-shadow:0 2px 0 #000}
.dhero-cta{display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px}
.dhero-cta [hidden]{display:none}
.dfree{margin:0;font:400 1rem/1.3 var(--hand);color:var(--gold);text-shadow:0 2px 0 #000}
.dfree b{font-family:var(--toon);font-weight:400;font-size:1.3em;color:#fff;letter-spacing:.06em}
.dhero-cue{position:absolute;left:50%;bottom:18px;width:44px;height:44px;margin-left:-22px;display:grid;place-items:center}
.dhero-cue span{width:14px;height:14px;border-right:3px solid var(--gold);border-bottom:3px solid var(--gold);transform:rotate(45deg);animation:dcue 1.8s ease-in-out infinite}
@keyframes dcue{50%{transform:translateY(7px) rotate(45deg)}}
.dsec{padding:clamp(64px,9vw,120px) 0}
.dsec .sec-head h2{max-width:20ch}

.dfor{list-style:none;margin:0;padding:0;display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}
@media(min-width:720px){.dfor{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}}
@media(min-width:1040px){.dfor{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(min-width:1280px){.dfor{grid-template-columns:repeat(7,minmax(0,1fr));gap:14px}}
.dfor-i{position:relative;aspect-ratio:3/4;border:3px solid #000;border-radius:16px;overflow:hidden;background:linear-gradient(160deg,hsl(var(--hue) 60% 26%),#120d18 75%);
  box-shadow:0 6px 0 #000;display:flex;align-items:flex-end;transition:transform .18s var(--pop)}
.dfor-i:hover{transform:translateY(-4px) rotate(-1deg)}
.dfor-i img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.dfor-i div{position:relative;width:100%;padding:44px 12px 12px;background:linear-gradient(transparent,rgba(7,5,10,.92) 55%)}
.dfor-i h3{font:400 clamp(1rem,2.4vw,1.2rem)/1.05 var(--toon);letter-spacing:.04em;color:hsl(var(--hue) 95% 78%);text-shadow:0 2px 0 #000}
.dfor-i p{margin:.3em 0 0;font-size:.86rem;line-height:1.3;color:var(--holy)}

.drap{background:radial-gradient(90% 80% at 50% 0,rgba(224,20,43,.2),transparent 65%),var(--pitch)}
.drap-frame{border:4px solid #000;border-radius:18px;overflow:hidden;box-shadow:0 10px 0 #000,0 30px 80px -30px var(--scarlet);background:#000;aspect-ratio:16/9;max-width:1100px}
.drap-frame video{display:block;width:100%;height:100%}
.drap .dsmall{margin-top:16px}

.dsteps{list-style:none;margin:0;padding:0;display:grid;gap:18px;grid-template-columns:minmax(0,1fr)}
@media(min-width:860px){.dsteps{grid-template-columns:repeat(3,minmax(0,1fr))}}
.dsteps li{position:relative;background:var(--paper);color:#1b1114;border:4px solid #000;border-radius:18px;padding:30px 22px 20px;box-shadow:0 8px 0 #000}
.dsteps li>b{position:absolute;top:-22px;left:18px;width:46px;height:46px;border-radius:50%;background:var(--scarlet);color:#fff;border:4px solid #000;display:grid;place-items:center;font:400 1.3rem/1 var(--toon)}
.dsteps h3{font:900 1.4rem/1.1 var(--display);margin-bottom:.35em}
.dsteps p{margin:0;color:var(--dim-ink)}

.dres{list-style:none;margin:0;padding:0;display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}
@media(min-width:700px){.dres{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1100px){.dres{grid-template-columns:repeat(3,minmax(0,1fr))}}
.dres li{display:flex;gap:14px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-left:4px solid hsl(var(--hue) 80% 60%);border-radius:0 14px 14px 0;padding:14px}
.dres img,.dres .dav{width:72px;height:72px;border-radius:50%;object-fit:cover;flex:none;border:3px solid #000}
.dres h3{font:900 1.12rem/1.15 var(--display)}
.dres-k{font:400 .7rem/1.3 var(--toon);letter-spacing:.1em;text-transform:uppercase;color:hsl(var(--hue) 90% 76%);margin:.3em 0 .5em}
.dres p:last-child{margin:0;font-size:.9rem;line-height:1.45;color:var(--dim)}

.dpledge{background:linear-gradient(180deg,var(--pitch),#150812)}
.dpledges{list-style:none;margin:0 0 clamp(30px,5vw,54px);padding:0;display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}
@media(min-width:860px){.dpledges{grid-template-columns:repeat(3,minmax(0,1fr))}}
.dpledges li{border-top:4px solid var(--gold);padding-top:14px}
.dpledges h3{font:900 1.35rem/1.15 var(--display);margin-bottom:.35em}
.dpledges p{margin:0;color:var(--dim)}

/* ── app shell ───────────────────────────────────────────────────────── */
.dapp main{padding-top:calc(64px + env(safe-area-inset-top));background:radial-gradient(100% 60% at 50% 0,rgba(255,93,143,.1),transparent 60%),var(--pitch)}
.dbar{position:sticky;top:calc(64px + env(safe-area-inset-top));z-index:40;display:flex;align-items:center;gap:clamp(4px,2vw,22px);padding:0 var(--gut);
  background:rgba(12,8,16,.96);border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.dbar::-webkit-scrollbar{display:none}
.dbar a,.dbar button{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:48px;padding:0 6px;color:var(--dim);text-decoration:none;background:none;border:0;cursor:pointer;
  font:400 .84rem/1 var(--toon);letter-spacing:.08em;text-transform:uppercase;border-bottom:3px solid transparent}
.dbar a:hover,.dbar button:hover{color:#fff}
.dbar a[aria-current="page"]{color:#fff;border-bottom-color:var(--rose)}
.dbar form{margin:0 0 0 auto;flex:none}
.dbar .dbar-brand{color:var(--holy);margin-right:auto;font-size:.95rem;letter-spacing:.05em}
.dbar .dbar-brand span{font:400 .8rem/1 var(--hand);color:var(--gold);text-transform:none;letter-spacing:0}
.dbar .dbar-brand b{color:var(--scarlet);font-weight:400}
.dbar .dbar-brand{gap:0}.dbar .dbar-brand span{margin-right:7px}
.dbar .dbar-brand+a{margin-left:0}
.dbar form{margin-left:0}
@media(max-width:620px){.dbar .dbar-brand{display:none}.dbar{justify-content:space-between}}
.dbadge{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--scarlet);color:#fff;font:600 .72rem/1 system-ui,sans-serif;letter-spacing:0}
.dmain{max-width:1240px;margin:0 auto;padding:clamp(20px,4vw,44px) var(--gut) clamp(48px,8vw,90px)}
.dpanel{max-width:760px;margin:0 auto}
.dpanel h1{font:900 clamp(2rem,6vw,3.6rem)/1.02 var(--display);text-wrap:balance;margin-bottom:.35em}
.dpanel h2{font:900 clamp(1.4rem,3.4vw,2rem)/1.1 var(--display);margin:1.6em 0 .5em}
.dcenter{text-align:center;padding-top:clamp(20px,6vh,70px)}
.dcenter .lede,.dcenter .dsmall{margin-inline:auto;max-width:46ch}
.dcenter svg.toon,.dempty svg{width:110px;height:auto;margin:0 auto 10px;display:block}
.dprose li{margin-bottom:.55em}
.dprose ol,.dprose ul{padding-left:1.2em;color:var(--dim)}
.dprose li b{color:var(--holy)}

/* forms (dark version of the site's fields) */
.dform fieldset{border:0;border-top:1px solid var(--line);margin:28px 0 0;padding:22px 0 0;min-width:0}
.dform legend{font:900 1.35rem/1.1 var(--display);padding:0 12px 0 0}
.dform legend small,.dform label small,.dlabel small{font:400 .78rem/1 var(--body);letter-spacing:0;text-transform:none;color:var(--dim);margin-left:6px}
.dform .field label,.dlabel{display:block;font:400 .8rem/1.2 var(--toon);letter-spacing:.1em;text-transform:uppercase;margin:0 0 7px;color:var(--gold)}
.dform .field input,.dform .field textarea,.dform .field select{width:100%;font:400 1.02rem/1.4 var(--body);color:var(--holy);background:#0c0910;border:2px solid rgba(255,248,236,.28);border-radius:12px;padding:12px 13px}
.dform .field select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--gold) 50%),linear-gradient(135deg,var(--gold) 50%,transparent 50%);background-position:calc(100% - 20px) 55%,calc(100% - 14px) 55%;background-size:6px 6px;background-repeat:no-repeat;padding-right:40px}
.dform .field textarea{min-height:130px;resize:vertical}
.dform .field input:focus,.dform .field textarea:focus,.dform .field select:focus{outline:3px solid var(--rose);outline-offset:1px;border-color:transparent}
.dform ::placeholder{color:rgba(255,248,236,.42)}
.dform .bad{border-color:var(--scarlet)!important}
.dchips{display:flex;flex-wrap:wrap;gap:8px}
.dchip{position:relative;cursor:pointer}
.dchip input{position:absolute;inset:0;opacity:0;cursor:pointer}
.dchip span{display:block;padding:9px 14px;border:2px solid rgba(255,248,236,.28);border-radius:999px;font-size:.92rem;line-height:1.2;color:var(--dim);transition:background .15s,color .15s}
.dchip input:checked+span{background:var(--rose);border-color:#000;color:#000;font-weight:600}
.dchip input:focus-visible+span{outline:3px solid var(--gold);outline-offset:2px}
.dcheck{display:flex;gap:12px;align-items:flex-start;margin:28px 0 18px;cursor:pointer}
.dcheck input{width:24px;height:24px;flex:none;accent-color:var(--scarlet);margin-top:2px}
.dphotos{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;max-width:520px;margin-bottom:12px}
.dphoto{position:relative;aspect-ratio:1;border-radius:14px;overflow:hidden;border:2px solid rgba(255,248,236,.28);background:#0c0910}
.dphoto img{width:100%;height:100%;object-fit:cover;display:block}
.dphoto button{position:absolute;top:4px;right:4px;width:32px;height:32px;border-radius:50%;border:2px solid #000;background:var(--scarlet);color:#fff;font:700 1rem/1 system-ui;cursor:pointer}
.dphoto-add{display:grid;place-items:center;border-style:dashed;cursor:pointer;color:var(--gold);font:400 2rem/1 var(--toon)}
.dphoto-add input{position:absolute;inset:0;opacity:0;cursor:pointer}
.dphoto-add.busy{opacity:.5;pointer-events:none}
.ddanger{margin-top:54px;border-top:1px solid var(--line);padding-top:18px}
.ddanger summary{cursor:pointer;color:var(--dim);padding:10px 0}
.ddanger .dform{max-width:340px}

/* ── cards + deck ────────────────────────────────────────────────────── */
.ddeck{display:flex;flex-direction:column;align-items:center}
.ddeck-stage{position:relative;width:min(100%,440px);min-height:420px}
.dcard{--hue:262;position:relative;width:100%;border:4px solid #000;border-radius:24px;overflow:hidden;background:var(--card);box-shadow:0 10px 0 #000,0 30px 70px -34px hsl(var(--hue) 90% 55%);
  touch-action:pan-y;will-change:transform;transition:transform .28s var(--pop),opacity .28s}
.dcard.drag{transition:none}
.dcard.out-l{transform:translateX(-130%) rotate(-18deg);opacity:0}
.dcard.out-r{transform:translateX(130%) rotate(18deg);opacity:0}
.dcard.in{animation:dcin .32s var(--pop)}
@keyframes dcin{from{transform:scale(.94) translateY(14px);opacity:0}}
.dcard-ph{position:relative;aspect-ratio:1;background:radial-gradient(80% 80% at 30% 20%,hsl(var(--hue) 85% 58%),hsl(var(--hue) 70% 22%) 60%,#0c0910)}
.dcard-ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.dcard-sig{position:absolute;inset:0;display:grid;place-items:center;font:900 clamp(7rem,40vw,11rem)/1 var(--display);color:rgba(0,0,0,.34);text-shadow:0 2px 0 rgba(255,255,255,.2)}
.dcard-nav{position:absolute;inset:0;display:flex}
.dcard-nav button{flex:1;background:none;border:0;cursor:pointer}
.dcard-dots{position:absolute;top:10px;left:12px;right:12px;display:flex;gap:5px;pointer-events:none}
.dcard-dots i{flex:1;height:4px;border-radius:2px;background:rgba(255,255,255,.4)}
.dcard-dots i.on{background:#fff}
.dcard-stamp{position:absolute;top:26px;padding:6px 14px;border:4px solid;border-radius:10px;font:400 1.7rem/1 var(--toon);letter-spacing:.08em;opacity:0;pointer-events:none}
.dcard-stamp.like{left:18px;color:#7dffb0;transform:rotate(-14deg)}
.dcard-stamp.pass{right:18px;color:#ff8a8a;transform:rotate(14deg)}
.dcard-top{position:absolute;left:0;right:0;bottom:0;padding:60px 18px 14px;background:linear-gradient(transparent,rgba(7,5,10,.94) 62%);pointer-events:none}
.dcard-top h2{font:900 clamp(1.6rem,6vw,2.1rem)/1.05 var(--display)}
.dkind{margin:.35em 0 0;font:400 .78rem/1.3 var(--toon);letter-spacing:.1em;text-transform:uppercase;color:hsl(var(--hue) 95% 78%)}
.dtag{display:inline-block;margin-top:8px;padding:4px 10px;border-radius:999px;background:var(--gold);color:#000;font:600 .72rem/1.2 system-ui,sans-serif}
.dcard-body{padding:16px 18px 20px}
.dcard-body p{margin:0 0 .8em}
.dcard-meta{font-size:.9rem;color:var(--dim)}
.dcard-bio{white-space:pre-line}
.dprompt{border-left:3px solid hsl(var(--hue) 80% 60%);padding:2px 0 2px 12px;margin:0 0 12px}
.dprompt dt{font:400 .7rem/1.3 var(--toon);letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}
.dprompt dd{margin:2px 0 0}
.dseek{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.dseek li{padding:4px 10px;border:1px solid var(--line);border-radius:999px;font-size:.8rem;color:var(--dim)}
.ddeck-acts{display:flex;gap:26px;margin-top:22px}
.ddeck-acts[hidden],.dhint[hidden],.dempty[hidden]{display:none}
.dact{display:flex;flex-direction:column;align-items:center;gap:6px;background:none;border:0;cursor:pointer;color:var(--dim);font:400 .74rem/1 var(--toon);letter-spacing:.1em;text-transform:uppercase}
.dact svg{width:68px;height:68px;padding:18px;border-radius:50%;border:4px solid #000;box-shadow:0 6px 0 #000;fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;transition:transform .12s var(--pop),box-shadow .12s}
.dact:hover svg{transform:translateY(-3px)}
.dact:active svg{transform:translateY(4px);box-shadow:0 2px 0 #000}
.dact-pass svg{background:var(--paper);stroke:#1b1114}
.dact-like svg{background:var(--scarlet);stroke:#fff;fill:#fff}
.dhint{margin-top:16px;font-size:.84rem}
@media(hover:none){.dhint{display:none}}
.dempty{text-align:center;max-width:460px;padding-top:20px}
.dempty h2{font:900 clamp(1.5rem,5vw,2.2rem)/1.1 var(--display);margin-bottom:.4em}
.dempty-btns{display:flex;flex-direction:column;gap:14px;align-items:center;margin-top:22px}
.dempty-btns [hidden]{display:none}
.dsolo-acts{display:flex;gap:20px;align-items:center;justify-content:space-between;width:min(100%,440px);margin-top:20px}

/* modal */
.dmodal{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:20px;background:rgba(7,5,10,.86);backdrop-filter:blur(6px)}
.dmodal[hidden]{display:none}
.dmodal-in{width:min(100%,520px);max-height:90svh;overflow:auto;background:linear-gradient(160deg,#2a0b22,#120d18);border:4px solid #000;border-radius:24px;padding:clamp(22px,5vw,38px);box-shadow:0 12px 0 #000,0 0 120px -20px var(--rose);text-align:center;animation:dcin .35s var(--pop)}
.dmodal-in h2{font:900 clamp(1.8rem,7vw,2.8rem)/1.02 var(--display);margin-bottom:.4em}
.dmodal-in h2 b{color:var(--scarlet)}
.dmodal-in.dform{text-align:left}
.dmodal-btns{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin:22px 0 0}

/* matches */
.dmatches{list-style:none;margin:22px 0 0;padding:0;display:grid;gap:10px}
.dmatch{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--line);border-left:4px solid hsl(var(--hue) 80% 60%);border-radius:0 14px 14px 0;background:var(--card);color:var(--holy);text-decoration:none;min-width:0}
.dmatch:hover{background:#1a1222;color:#fff}
.dav{width:56px;height:56px;border-radius:50%;object-fit:cover;flex:none;border:3px solid #000;background:#0c0910}
.dav-sig{display:grid;place-items:center;background:radial-gradient(circle at 30% 25%,hsl(var(--hue,262) 85% 62%),hsl(var(--hue,262) 70% 26%));color:rgba(0,0,0,.6);font:900 1.5rem/1 var(--display)}
.dmatch-t{min-width:0;flex:1}
.dmatch-t b{font:900 1.12rem/1.2 var(--display)}
.dmatch-t i{font:400 .7rem/1 var(--toon);letter-spacing:.08em;text-transform:uppercase;color:hsl(var(--hue) 90% 76%);font-style:normal;margin-left:6px}
.dmatch-l{display:block;color:var(--dim);font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dmatch.unread .dmatch-l{color:var(--holy);font-weight:600}

/* chat: the page is the conversation, the composer stays at the bottom */
.chatpage footer{display:none}
.chatpage .dmain{padding-top:0;padding-bottom:0;max-width:820px}
.dchat{display:flex;flex-direction:column;height:calc(100svh - 64px - 49px - env(safe-area-inset-top))}
.dchat-top{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
.dchat-back{display:grid;place-items:center;width:44px;height:44px;color:var(--gold);text-decoration:none;font-size:1.4rem;flex:none}
.dchat-who{display:flex;align-items:center;gap:12px;color:var(--holy);text-decoration:none;min-width:0;flex:1}
.dchat-who .dav{width:46px;height:46px}
.dchat-who span{min-width:0}
.dchat-who b{display:block;font:900 1.1rem/1.15 var(--display)}
.dchat-who i{display:block;font:400 .66rem/1.3 var(--toon);letter-spacing:.08em;text-transform:uppercase;color:hsl(var(--hue) 90% 76%);font-style:normal}
.dchat-log{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:18px 2px;overscroll-behavior:contain}
.dmsg{max-width:min(82%,560px);padding:10px 15px;border-radius:20px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}
.dmsg.them{align-self:flex-start;background:#2b2233;border-bottom-left-radius:6px}
.dmsg.mine{align-self:flex-end;background:var(--scarlet);color:#fff;border-bottom-right-radius:6px}
.dmsg small{display:block;margin-top:4px;font:400 .62rem/1 var(--toon);letter-spacing:.1em;text-transform:uppercase;opacity:.7}
.dchat-note{align-self:center;text-align:center;color:var(--dim);font-size:.86rem;max-width:40ch;margin:auto 0 6px}
.dchat-form{display:flex;gap:10px;align-items:flex-end;padding:10px 0 calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line)}
.dchat-form textarea{flex:1;min-width:0;max-height:140px;resize:none;font:400 1.02rem/1.4 var(--body);color:var(--holy);background:#0c0910;border:2px solid rgba(255,248,236,.28);border-radius:20px;padding:11px 15px}
.dchat-form textarea:focus{outline:3px solid var(--rose);outline-offset:1px;border-color:transparent}
.dchat-form .btn{padding:.7em 1.1em .6em;font-size:.95rem;flex:none;margin-bottom:6px}

/* admin */
.dadmin{max-width:1100px}
.dreport{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:12px;background:var(--card)}
.dreport blockquote{margin:8px 0;padding-left:12px;border-left:3px solid var(--scarlet);color:var(--dim)}
.dtable{overflow-x:auto}
.dtable table{border-collapse:collapse;width:100%;font-size:.88rem}
.dtable th,.dtable td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.dtable tr.banned td{opacity:.5;text-decoration:line-through}

@media(prefers-reduced-motion:reduce){
  .dcard,.dcard.in,.dmodal-in,.dhero-cue span,.dfor-i,.gbtn,.dact svg{animation:none!important;transition:none!important}
}

/* public profile (/dating/p/<slug>) */
.dpub{width:min(100%,440px);margin-top:26px;text-align:center}
.dpub [hidden]{display:none}
.dpub .gbtn{max-width:100%}
.dcheck-in{margin:6px 0 10px}

/* profile + the column of identity questions beside it */
.dduo{display:grid;gap:26px;grid-template-columns:minmax(0,440px);justify-content:center;width:100%}
.dduo .ddeck-stage{width:100%}
@media(min-width:980px){.dduo.has-qa{grid-template-columns:440px minmax(0,430px);align-items:start;gap:34px}}
.dqa{--hue:262;position:relative;border:4px solid #000;border-radius:24px;padding:22px 22px 16px;background:linear-gradient(170deg,hsl(var(--hue) 55% 16%),var(--card) 46%);box-shadow:0 10px 0 #000,0 30px 70px -40px hsl(var(--hue) 90% 55%)}
.dqa[hidden]{display:none}
.dqa h2{font:900 clamp(1.3rem,3.2vw,1.7rem)/1.1 var(--display);margin-bottom:.8em;text-wrap:balance}
.dqa-i{border-left:3px solid hsl(var(--hue) 80% 60%);padding:2px 0 2px 14px;margin-bottom:18px;animation:dqain .5s var(--pop) both;animation-delay:calc(var(--i) * 90ms + 150ms)}
@keyframes dqain{from{opacity:0;transform:translateX(18px)}}
.dqa-i h3{font:400 .76rem/1.35 var(--toon);letter-spacing:.08em;text-transform:uppercase;color:hsl(var(--hue) 95% 78%);margin-bottom:.4em}
.dqa-i p{margin:0;font-size:1.02rem;line-height:1.5;white-space:pre-line}
.dqa-by{margin:6px 0 0;font-size:.74rem;color:rgba(255,248,236,.5)}
.dqa-edit .field label{text-transform:none;letter-spacing:.01em;font:600 1rem/1.35 var(--body);color:var(--holy)}
.dqa-edit .field textarea{min-height:76px}
.dsolo-acts,.dpub{margin-inline:auto}
@media(prefers-reduced-motion:reduce){.dqa-i{animation:none}}

/* ── the swarm on the landing page (dating.php #dtoons) ───────────────── */
#dtoons{position:fixed;inset:0;z-index:70;pointer-events:none;overflow:hidden;contain:strict}
#dtoons .toon{filter:none;width:100%;height:auto}
.dt{position:absolute;left:0;top:var(--y);width:var(--s);will-change:transform;animation:dtr var(--d) linear var(--dl) infinite}
.dt>i{display:block}
.dt.l{animation-name:dtl}
.dt.l>i>svg{transform:scaleX(-1)}
.dt.g{top:auto;bottom:var(--y)}
.dt.g .t-leg.t-l{animation:legs .2s linear infinite alternate}
.dt.g .t-leg.t-r{animation:legs .2s linear infinite alternate-reverse}
.dt.g .t-all{animation:hop .2s ease-in-out infinite alternate}
.dt.g.slow .t-leg.t-l,.dt.g.slow .t-leg.t-r,.dt.g.slow .t-all{animation-duration:.5s}
.dt.g.hover .t-all,.dt.g.hover .t-leg{animation:none}
.dt.g.hover>i,.dt.f>i{animation:dtbob var(--b,1.3s) ease-in-out infinite alternate}
.dt.f.bounce>i{animation:dtbounce .46s cubic-bezier(.3,0,.7,1) infinite alternate}
.dt.up{top:100%;left:var(--x);animation-name:dtup;animation-timing-function:ease-in}
.dt.up>i{animation:dtsway var(--b,1.8s) ease-in-out infinite alternate}
.dt.shoot{animation-name:dtshoot;animation-timing-function:ease-in}
.dt.shoot>i{animation:dtspin 1.1s linear infinite}
@keyframes dtr{from{transform:translateX(-24vw)}to{transform:translateX(112vw)}}
@keyframes dtl{from{transform:translateX(112vw)}to{transform:translateX(-24vw)}}
@keyframes dtup{from{transform:translateY(0);opacity:1}85%{opacity:1}to{transform:translateY(-125vh);opacity:0}}
@keyframes dtshoot{from{transform:translate(-12vw,0) scale(.6);opacity:0}12%{opacity:1}to{transform:translate(112vw,52vh) scale(1.2);opacity:.9}}
@keyframes dtbob{from{transform:translateY(-16px) rotate(-4deg)}to{transform:translateY(16px) rotate(4deg)}}
@keyframes dtbounce{from{transform:translateY(0) scale(1.06,.9)}to{transform:translateY(-110px) scale(.96,1.05)}}
@keyframes dtsway{from{transform:translateX(-16px) rotate(-14deg)}to{transform:translateX(16px) rotate(14deg)}}
@keyframes dtspin{to{transform:rotate(360deg)}}
@media(max-width:700px){.dt-x{display:none}.dt{width:calc(var(--s) * .78)}}
@media(prefers-reduced-motion:reduce){#dtoons{display:none}}
