/* =========================================================
   SoulMate AI — Legal / Safety UI
   age gate · legal documents · legal hub · contact · chat safety
   (loaded after style.css on every page)
   ========================================================= */
.ph{background:rgba(245,192,74,.14);color:#f5c04a;border-bottom:1px dashed #f5c04a;padding:0 3px;border-radius:3px}
.ft-ai{font-size:12px !important;color:#cbb6bf !important;margin-top:-6px !important}
.ft-bottom a:hover,.ft-cols a:hover{color:var(--accent)}
.sb-legal a{color:inherit}
.sb-legal a:hover{color:var(--accent)}

/* ---------- 18+ age gate ---------- */
body.gated{overflow:hidden}
.gate{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:16px;
  background:rgba(8,6,12,.78);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);animation:gateIn .3s ease}
.gate.closing{opacity:0;transition:opacity .25s}
@keyframes gateIn{from{opacity:0}to{opacity:1}}
.gate-card{width:100%;max-width:440px;background:linear-gradient(180deg,#1c1622,#141118);border:1px solid rgba(249,113,135,.3);
  border-radius:22px;padding:26px 24px 20px;box-shadow:0 30px 80px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.04);animation:gateUp .35s ease}
@keyframes gateUp{from{transform:translateY(18px);opacity:0}to{transform:none;opacity:1}}
.gate-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.gate-badge{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:15px;color:#fff;
  background:var(--grad);box-shadow:0 0 0 4px rgba(245,59,112,.18),0 8px 18px rgba(245,59,112,.4)}
.gate-card h2{font-size:22px;font-weight:700;margin-bottom:4px}
.gate-sub{color:var(--muted);font-size:14px;margin-bottom:16px}
.gate-list{list-style:none;display:flex;flex-direction:column;gap:10px;margin-bottom:18px}
.gate-list li{display:flex;gap:10px;align-items:flex-start;font-size:14px;line-height:1.5;color:#e9e4ec}
.gate-list svg{color:#27d07a;margin-top:2px}
.gate-check{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;line-height:1.5;color:#d9d2dc;background:#1f1a25;
  border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:12px;cursor:pointer;margin-bottom:16px}
.gate-check input{width:18px;height:18px;margin-top:2px;accent-color:var(--pink);flex-shrink:0}
.gate-check a,.gate-note a{color:var(--accent);text-decoration:underline}
.gate-actions{display:flex;gap:10px}
.gate-enter{flex:1;height:48px;border:0;border-radius:999px;background:var(--grad);color:#fff;font-size:15px;font-weight:700;cursor:pointer;
  box-shadow:0 10px 24px rgba(245,59,112,.35);transition:opacity .2s,transform .15s}
.gate-enter:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}
.gate-enter:not(:disabled):active{transform:scale(.98)}
.gate-exit{height:48px;padding:0 22px;border-radius:999px;border:1px solid rgba(255,255,255,.18);display:grid;place-items:center;
  color:#d1d1d1;font-weight:600;font-size:14px}
.gate-exit:hover{background:#1f1f1f}
.gate-note{display:flex;gap:6px;align-items:flex-start;font-size:12px;color:#8f8794;margin-top:14px;line-height:1.5}
.gate-note svg{margin-top:2px;flex-shrink:0}

/* ---------- legal document pages ---------- */
.doc-wrap{max-width:1180px;margin:0 auto;padding:22px 28px 10px}
.crumbs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin-bottom:18px}
.crumbs a:hover{color:var(--accent)}
.crumbs span{color:#fff}
.doc-head{display:flex;align-items:center;gap:16px;padding:22px 24px;border-radius:20px;margin-bottom:24px;
  background:radial-gradient(500px 200px at 0% 0%,rgba(245,59,112,.18),transparent 70%),linear-gradient(180deg,#19141f,#141118);
  border:1px solid rgba(255,255,255,.07)}
.doc-head h1{font-size:30px;font-weight:700;line-height:1.2}
.doc-meta{color:var(--muted);font-size:13px;margin-top:4px}
.doc-ic{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;flex-shrink:0;color:#fff;background:var(--grad);
  box-shadow:0 8px 20px rgba(245,59,112,.35)}
.doc-ic.big{width:64px;height:64px;border-radius:20px}
.doc-print{margin-left:auto;display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 14px;border-radius:10px;cursor:pointer;
  background:#1f1a25;border:1px solid rgba(255,255,255,.12);color:#e6e1e8;font-size:13px;font-weight:500;flex-shrink:0}
.doc-print:hover{border-color:var(--accent)}
.doc-grid{display:grid;grid-template-columns:250px minmax(0,1fr);gap:32px;align-items:start}
.doc-toc{position:sticky;top:84px}
.toc-box{background:#141118;border:1px solid rgba(255,255,255,.07);border-radius:16px;padding:6px}
.toc-box summary{list-style:none;display:flex;align-items:center;justify-content:space-between;cursor:pointer;
  padding:10px 12px;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}
.toc-box summary::-webkit-details-marker{display:none}
.toc-box summary svg{transition:transform .2s}
.toc-box[open] summary svg{transform:rotate(180deg)}
.toc-box ol{list-style:none;padding:2px 4px 8px;max-height:calc(100dvh - 190px);overflow:auto}
.toc-box a{display:block;padding:7px 10px;border-radius:9px;font-size:13px;line-height:1.35;color:#bdb6c2;border-left:2px solid transparent}
.toc-box a:hover{background:#1d1822;color:#fff}
.toc-box a.active{color:#fff;background:rgba(245,59,112,.12);border-left-color:var(--pink)}
.doc-body{min-width:0;max-width:780px}
.doc-summary{background:linear-gradient(180deg,rgba(245,59,112,.1),rgba(245,59,112,.04));border:1px solid rgba(249,113,135,.35);
  border-radius:16px;padding:18px 20px;margin-bottom:28px}
.doc-summary h2{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:700;margin-bottom:10px;color:#ffd0dc}
.doc-summary ul{padding-left:20px;display:flex;flex-direction:column;gap:7px}
.doc-summary li{color:#efe8ee;font-size:14.5px;line-height:1.55}
.doc-summary .small{font-size:12px;color:var(--muted);margin-top:10px}
.doc-sec{padding:4px 0 22px;margin-bottom:6px;border-bottom:1px solid rgba(255,255,255,.06);scroll-margin-top:84px}
.doc-sec h2{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:700;margin:12px 0 12px;line-height:1.3}
.doc-sec h2 .num{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex-shrink:0;font-size:13px;
  color:var(--accent);background:rgba(245,59,112,.12);border:1px solid rgba(245,59,112,.3)}
.doc-sec p,.doc-sec li{color:#c4bdc8;font-size:15px;line-height:1.75}
.doc-sec p{margin-bottom:12px}
.doc-sec ul{padding-left:22px;margin-bottom:12px;display:flex;flex-direction:column;gap:6px}
.doc-sec a,.doc-help a,.doc-card a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}
.doc-sec b{color:#fff}
.doc-sec code{background:#1f1a25;border:1px solid rgba(255,255,255,.1);border-radius:6px;padding:1px 6px;font-size:13px;color:#ffd0dc}
.doc-card{background:#17131c;border:1px solid rgba(255,255,255,.09);border-radius:14px;padding:14px 16px;margin:6px 0 14px;
  color:#d9d2dc;font-size:14.5px;line-height:1.8}
.doc-table{width:100%;border-collapse:separate;border-spacing:0;margin:6px 0 14px;font-size:14px;border:1px solid rgba(255,255,255,.09);
  border-radius:14px;overflow:hidden}
.doc-table th{background:#1d1822;text-align:left;padding:11px 14px;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}
.doc-table td{padding:11px 14px;border-top:1px solid rgba(255,255,255,.07);color:#c9c2cd;vertical-align:top;line-height:1.55}
.doc-action{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:8px 0 14px;padding:16px 18px;
  border-radius:14px;background:rgba(255,77,94,.07);border:1px solid rgba(255,77,94,.3)}
.doc-action p{margin:2px 0 0 !important;font-size:13px !important;color:#bfaeb3 !important}
.btn-danger{height:40px;padding:0 18px;border-radius:10px;border:1px solid rgba(255,77,94,.6);background:rgba(255,77,94,.15);
  color:#ff98a2;font-weight:600;font-size:14px;cursor:pointer;white-space:nowrap}
.btn-danger:hover{background:rgba(255,77,94,.25)}
.btn-danger:disabled{opacity:.5}
.help-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:8px 0 14px}
.help-card{display:flex;flex-direction:column;gap:2px;padding:14px 16px;border-radius:14px;background:#17131c;border:1px solid rgba(39,208,122,.3)}
.help-card b{color:#fff;font-size:14px}
.help-num{font-size:26px;font-weight:800;color:#27d07a;letter-spacing:.5px}
.help-card small{color:var(--muted);font-size:12px;line-height:1.45}
.doc-help{display:flex;gap:14px;align-items:flex-start;margin-top:22px;padding:18px;border-radius:16px;background:#141118;
  border:1px solid rgba(255,255,255,.07)}
.doc-help>span{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:rgba(245,59,112,.14);color:var(--accent);flex-shrink:0}
.doc-help p{color:var(--muted);font-size:14px;margin-top:3px;line-height:1.6}
.doc-related{margin:38px 0 10px}
.doc-related h3{font-size:18px;font-weight:700;margin-bottom:14px}
.rel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.rel-card{display:flex;gap:12px;align-items:flex-start;padding:14px;border-radius:14px;background:#141118;border:1px solid rgba(255,255,255,.07);
  transition:border-color .2s,transform .2s}
.rel-card:hover{border-color:rgba(249,113,135,.5);transform:translateY(-2px)}
.rel-card b{display:block;font-size:14px}
.rel-card small{display:block;color:var(--muted);font-size:12.5px;line-height:1.45;margin-top:2px}
.rel-ic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;flex-shrink:0;background:rgba(245,59,112,.12);color:var(--accent)}

/* ---------- legal hub ---------- */
.hub-head{text-align:center;padding:26px 10px 8px}
.hub-head .doc-ic{margin:0 auto 14px}
.hub-head h1{font-size:34px;font-weight:800}
.hub-head p{color:var(--muted);max-width:620px;margin:8px auto 0;line-height:1.6}
.safe-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:24px 0 30px}
.safe-card{display:flex;flex-direction:column;gap:4px;padding:16px;border-radius:16px;background:#141118;border:1px solid rgba(255,255,255,.07)}
.safe-card span{font-size:22px;font-weight:800;color:var(--accent)}
.safe-card b{font-size:14px}
.safe-card small{color:var(--muted);font-size:12.5px;line-height:1.45}
.hub-sub{font-size:20px;font-weight:700;margin-bottom:14px}
.hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.hub-card{display:flex;flex-direction:column;gap:6px;padding:18px;border-radius:18px;background:linear-gradient(180deg,#19141f,#141118);
  border:1px solid rgba(255,255,255,.07);transition:border-color .2s,transform .2s,box-shadow .2s}
.hub-card:hover{border-color:rgba(249,113,135,.55);transform:translateY(-3px);box-shadow:0 14px 30px rgba(0,0,0,.4)}
.hub-card b{font-size:16px;margin-top:8px}
.hub-card small{color:var(--muted);font-size:13px;line-height:1.5}
.hub-go{display:inline-flex;align-items:center;gap:4px;margin-top:auto;padding-top:8px;color:var(--accent);font-size:13px;font-weight:600}
.hub-help{margin:34px 0 10px;padding:20px;border-radius:20px;background:#121a16;border:1px solid rgba(39,208,122,.25)}
.hub-help h2{display:flex;align-items:center;gap:8px;font-size:18px}
.hub-help p{color:var(--muted);font-size:14px;margin:4px 0 6px}

/* ---------- contact ---------- */
.contact-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:22px;align-items:start}
.contact-card{position:relative;background:linear-gradient(180deg,#19141f,#141118);border:1px solid rgba(255,255,255,.07);border-radius:20px;padding:22px;
  display:flex;flex-direction:column;gap:14px}
.contact-card h2{font-size:19px;font-weight:700}
.f-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.f-field{display:flex;flex-direction:column;gap:6px}
.f-field span{font-size:13px;color:var(--muted);font-weight:500}
.f-field input,.f-field select,.f-field textarea{width:100%;background:#0f0c13;border:1px solid rgba(255,255,255,.12);color:#fff;border-radius:12px;
  padding:12px 14px;font-family:'Poppins',sans-serif;font-size:15px;outline:none;transition:border-color .15s,box-shadow .15s}
.f-field textarea{resize:vertical;min-height:130px;line-height:1.55}
.f-field input:focus,.f-field select:focus,.f-field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(249,113,135,.15)}
.f-check{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;color:#cfc8d2;line-height:1.5;cursor:pointer}
.f-check input{width:18px;height:18px;margin-top:2px;accent-color:var(--pink);flex-shrink:0}
.f-check a{color:var(--accent);text-decoration:underline}
.f-note{font-size:12.5px;color:#a48f96}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.f-submit{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;height:46px;padding:0 26px;border:0;border-radius:999px;
  background:var(--grad);color:#fff;font-weight:700;font-size:15px;cursor:pointer;box-shadow:0 10px 22px rgba(245,59,112,.35)}
.f-submit:disabled{opacity:.6}
.f-msg{font-size:14px;min-height:20px;color:var(--muted)}
.f-msg.ok{color:#27d07a}
.f-msg.err{color:#ff8d98}
.contact-side{display:flex;flex-direction:column;gap:12px}
.info-card{display:flex;gap:12px;align-items:flex-start;padding:16px;border-radius:16px;background:#141118;border:1px solid rgba(255,255,255,.07);
  scroll-margin-top:84px}
.info-card b{font-size:15px}
.info-card p{color:#e1dae4;font-size:14px;line-height:1.6;margin-top:3px;word-break:break-word}
.info-card small{color:var(--muted);font-size:12.5px;line-height:1.5;display:block;margin-top:4px}
.info-card a{color:var(--accent)}
.info-card.warn{border-color:rgba(39,208,122,.3);background:#121a16}
.info-card:target{border-color:var(--accent);box-shadow:0 0 0 3px rgba(249,113,135,.15)}

/* ---------- chat page additions ---------- */
.chat-menu{position:relative;margin-left:auto}
.chat-menu-btn{width:40px;height:40px;border-radius:12px;border:0;background:none;color:#d1d1d1;cursor:pointer;display:grid;place-items:center}
.chat-menu-btn:hover{background:#1f1f1f;color:#fff}
.chat-menu-pop{position:absolute;right:0;top:46px;z-index:20;min-width:210px;padding:6px;border-radius:14px;background:#1b1720;
  border:1px solid rgba(255,255,255,.1);box-shadow:0 18px 40px rgba(0,0,0,.55);display:flex;flex-direction:column}
.chat-menu-pop[hidden]{display:none}
.chat-menu-pop a,.chat-menu-pop button{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;border:0;background:none;
  color:#e6e1e8;font-family:'Poppins',sans-serif;font-size:14px;font-weight:500;cursor:pointer;text-align:left}
.chat-menu-pop a:hover,.chat-menu-pop button:hover{background:#26202c}
.chat-menu-pop #deleteChat{color:#ff8d98}
.chat-notice{align-self:center;display:flex;gap:8px;align-items:flex-start;max-width:92%;margin-bottom:6px;padding:9px 12px;border-radius:12px;
  background:#17131c;border:1px solid rgba(255,255,255,.08);color:#b9b1bd;font-size:12.5px;line-height:1.5}
.chat-notice svg{margin-top:2px;color:var(--accent)}
.chat-notice b{color:#e9e4ec}
.chat-safety{align-self:center;max-width:92%;text-align:center;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.5}
.chat-safety.help{background:#121a16;border:1px solid rgba(39,208,122,.35);color:#c9f7dc}
.chat-safety.limit{background:#1f1a25;border:1px solid rgba(245,192,74,.35);color:#f5d27f}
.chat-legal{text-align:center;font-size:11px;color:#6f6a74;margin-top:8px}
.chat-legal a{color:#8f8794;text-decoration:underline}

/* ---------- responsive ---------- */
@media(max-width:1099px){
  .doc-grid{grid-template-columns:minmax(0,1fr);gap:16px}
  .doc-toc{position:static}
  .toc-box ol{max-height:none}
  .doc-body{max-width:none}
}
@media(max-width:1023px){
  .doc-wrap{padding:16px 12px 6px}
  .doc-head{padding:16px;gap:12px;flex-wrap:wrap;border-radius:16px}
  .doc-head h1{font-size:23px}
  .doc-ic{width:44px;height:44px;border-radius:13px}
  .doc-print{margin-left:0}
  .doc-sec h2{font-size:17px}
  .doc-sec p,.doc-sec li{font-size:14.5px}
  .safe-grid{grid-template-columns:repeat(2,1fr)}
  .hub-head h1{font-size:26px}
  .contact-grid{grid-template-columns:1fr}
  .gate{align-items:end;padding:0}
  .gate-card{max-width:none;border-radius:22px 22px 0 0;padding:22px 18px calc(18px + env(safe-area-inset-bottom))}
}
@media(max-width:640px){
  /* tables become stacked cards on phones */
  .doc-table thead{display:none}
  .doc-table,.doc-table tbody,.doc-table tr,.doc-table td{display:block;width:100%}
  .doc-table tr{border-top:1px solid rgba(255,255,255,.08);padding:8px 0}
  .doc-table tr:first-child{border-top:0}
  .doc-table td{border:0;padding:4px 14px}
  .doc-table td:first-child{color:#fff;font-weight:600;padding-top:8px}
}
@media(max-width:560px){
  .f-row{grid-template-columns:1fr}
  .doc-print span{display:none}
  .gate-actions{flex-direction:column-reverse}
  .gate-exit{height:42px}
}

/* ---------- print (legal pages) ---------- */
@media print{
  .topbar,.sidebar,.scrim,.bnav,.footer,.toast,.doc-toc,.doc-print,.doc-related,.crumbs,.doc-help,.doc-action{display:none !important}
  body,.main,.doc-wrap{background:#fff !important;color:#000 !important}
  .layout,.doc-grid{display:block}
  .doc-head,.doc-summary,.doc-card,.doc-table,.help-card{background:#fff !important;border-color:#ccc !important;box-shadow:none !important}
  .doc-head h1,.doc-sec h2,.doc-sec b,.doc-summary h2,.doc-summary li,.doc-sec p,.doc-sec li,.doc-table td,.doc-table th{color:#000 !important}
  .doc-ic{display:none}
  a{color:#000 !important}
}
