body{
  background:
    radial-gradient(760px 340px at 96% 0%, rgba(255,63,121,.08), transparent 68%),
    radial-gradient(700px 360px at 0% 8%, rgba(103,92,255,.07), transparent 66%),
    linear-gradient(180deg, #fffafd 0%, #f8f7ff 46%, #ffffff 100%);
}

.pf{
  position:relative;
  padding: 28px 0 58px;
  isolation:isolate;
}

.pf::before,
.pf::after{
  content:"";
  position:absolute;
  z-index:-1;
  border-radius:34px;
  pointer-events:none;
  border:1px solid rgba(255,255,255,.44);
  box-shadow:0 24px 60px rgba(31,24,47,.06);
}

.pf::before{
  right:1%;
  top:126px;
  width:238px;
  height:132px;
  background:linear-gradient(135deg, rgba(255,63,121,.10), rgba(255,255,255,.28));
  transform:rotate(10deg);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}

.pf::after{
  left:3%;
  bottom:10%;
  width:210px;
  height:118px;
  background:linear-gradient(135deg, rgba(103,92,255,.10), rgba(255,255,255,.32));
  transform:rotate(-8deg);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}

.pf-head{
  position:relative;
  overflow:hidden;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 18px;
  margin-bottom: 20px;
  padding:30px;
  border:1px solid rgba(255,255,255,.72);
  border-radius:28px;
  background:
    radial-gradient(380px 220px at 86% 0%, rgba(255,63,121,.18), transparent 70%),
    linear-gradient(135deg, rgba(255,255,255,.74), rgba(255,255,255,.38));
  box-shadow:0 24px 68px rgba(31,24,47,.09), inset 0 1px 0 rgba(255,255,255,.72);
  backdrop-filter:blur(22px) saturate(1.18);
  -webkit-backdrop-filter:blur(22px) saturate(1.18);
}

.pf-head > *{
  position:relative;
  z-index:1;
}

.pf-head-cherry{
  position:absolute;
  right:-58px;
  bottom:-56px;
  z-index:0;
  width:230px;
  height:auto;
  pointer-events:none;
  opacity:.96;
  filter:drop-shadow(0 22px 30px rgba(31,24,47,.13));
  transform:rotate(-4deg);
}

.pf-head::after{
  content:"";
  position:absolute;
  right:112px;
  top:-38px;
  width:245px;
  height:150px;
  border-radius:34px;
  background:rgba(255,255,255,.36);
  border:1px solid rgba(255,255,255,.48);
  transform:rotate(8deg);
}

.page-title{
  margin: 0 0 8px;
  color:#211a30;
  font-size: clamp(34px, 4vw, 58px);
  line-height: .95;
  letter-spacing:0;
  text-wrap:balance;
}

.pf-head .muted{
  max-width:620px;
  color:#62566f;
  font-weight:750;
}

.pf-section-title img,
.pf-side img,
.icon-btn img,
.uploader-ic img{
  width:17px;
  height:17px;
  display:block;
}

.profile-progress{
  width:min(430px, 100%);
  display:grid;
  gap:7px;
  margin-top:18px;
  padding:13px 14px;
  border:1px solid rgba(255,255,255,.72);
  border-radius:18px;
  background:rgba(255,255,255,.52);
  box-shadow:0 14px 32px rgba(31,24,47,.06), inset 0 1px 0 rgba(255,255,255,.72);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
}

.progress-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  color:#6b6077;
  font-size:12px;
  line-height:1.2;
  font-weight:900;
}

.progress-row strong{
  color:#211a30;
  font-weight:950;
  white-space:nowrap;
}

.profile-row{
  margin-top:3px;
}

.progress-track{
  position:relative;
  height:8px;
  overflow:hidden;
  border-radius:999px;
  background:rgba(32,25,47,.08);
}

.progress-fill{
  position:absolute;
  inset:0 auto 0 0;
  width:0%;
  border-radius:inherit;
  transition:width .35s ease;
}

.access-fill{
  background:linear-gradient(90deg, #675cff, #ff3f79);
}

.profile-fill{
  background:linear-gradient(90deg, #ff3f79, #ffb0ca);
}

.pf-grid{
  display:grid;
  grid-template-columns: 1fr;
  gap: 22px;
  align-items:start;
}

.pf-card,
.pf-side{
  border:1px solid rgba(255,255,255,.70);
  border-radius:28px;
  background:rgba(255,255,255,.70);
  box-shadow:0 24px 68px rgba(31,24,47,.10), inset 0 1px 0 rgba(255,255,255,.72);
  backdrop-filter:blur(22px) saturate(1.18);
  -webkit-backdrop-filter:blur(22px) saturate(1.18);
}

.pf-card{
  padding:26px;
}

.pf-form{ display:grid; gap: 20px; }

.pf-row{
  display:grid;
  grid-template-columns: 1fr;
  gap: 16px;
}

.pf-field{ display:grid; gap: 8px; min-width:0; }

.pf-field .label{
  color:#40354f;
  font-size:12px;
  font-weight:950;
  letter-spacing:.04em;
  text-transform:uppercase;
}

.pf-field .input{
  width:100%;
  min-height:54px;
  border:1px solid rgba(32,25,47,.10);
  border-radius:16px;
  background:rgba(255,255,255,.76);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.78);
  color:#211a30;
  font-weight:850;
}

.pf-field textarea.input{
  padding-top:15px;
  line-height:1.45;
}

.pf-field .input::placeholder{
  color:#9a8fa6;
}

.pf-field .input:focus{
  border-color:rgba(255,63,121,.42);
  box-shadow:0 0 0 6px rgba(255,63,121,.10), inset 0 1px 0 rgba(255,255,255,.80);
}

.pf-section-title{
  display:flex;
  align-items:center;
  gap:12px;
  margin-bottom:2px;
}

.pf-section-title > span{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  flex:0 0 auto;
  border-radius:14px;
  color:#fff;
  background:linear-gradient(135deg, #ff3f79, #675cff);
  box-shadow:0 14px 30px rgba(255,63,121,.18);
}

.pf-section-title > span img{
  filter:brightness(0) invert(1);
}

.pf-section-title strong,
.pf-photos-title{
  color:#211a30;
  font-size:18px;
  line-height:1.15;
  font-weight:950;
}

.pf-section-title small{
  display:block;
  margin-top:3px;
  color:#71667d;
  font-size:13px;
  line-height:1.4;
  font-weight:750;
}

.pf-section-title-inline{
  margin-bottom:10px;
}

.pf-field .seg{
  gap:10px;
}

.pf-field .seg-btn{
  min-height:54px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:0 16px;
  border:1px solid rgba(32,25,47,.10);
  border-radius:16px;
  background:rgba(255,255,255,.74);
  color:#211a30;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.78);
  transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease, background .16s ease;
}

.pf-field .seg-btn:hover{
  transform:translateY(-1px);
  border-color:rgba(255,63,121,.24);
  box-shadow:0 14px 28px rgba(31,24,47,.07);
}

.pf-field .seg-btn.is-active{
  border-color:rgba(255,63,121,.44);
  background:linear-gradient(135deg, rgba(255,63,121,.13), rgba(103,92,255,.10), rgba(255,255,255,.76));
  box-shadow:0 0 0 6px rgba(255,63,121,.10), inset 0 1px 0 rgba(255,255,255,.78);
}

.sex-seg .seg-btn{
  min-width:128px;
}

.sex-seg .seg-btn img{
  width:18px;
  height:18px;
  flex:0 0 auto;
}

.sex-seg .seg-btn.is-active img{
  filter:brightness(0) saturate(100%) invert(41%) sepia(81%) saturate(2602%) hue-rotate(318deg) brightness(102%) contrast(101%);
}

#pfCategoryMount .dd-btn{
  min-height:54px;
  padding:0 14px;
  border:1px solid rgba(32,25,47,.10);
  border-radius:16px;
  background:rgba(255,255,255,.76);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.78);
  color:#211a30;
  font-weight:850;
}

#pfCategoryMount .dd-btn:focus{
  border-color:rgba(255,63,121,.42);
  box-shadow:0 0 0 6px rgba(255,63,121,.10), inset 0 1px 0 rgba(255,255,255,.80);
}

#pfCategoryMount .dd-panel{
  border:1px solid rgba(32,25,47,.10);
  border-radius:16px;
  box-shadow:0 22px 48px rgba(31,24,47,.12);
}

#pfCategoryMount .dd-item:hover,
#pfCategoryMount .dd-item.is-active{
  background:rgba(255,63,121,.09);
}

.geo-inline{
  display:flex;
  align-items:center;
  gap: 10px;
  flex-wrap: wrap;
}

.geo-inline .btn,
.pf-actions .btn,
.uploader-actions .btn,
.cam-actions .btn{
  text-decoration:none;
}

.geo-btn{
  min-height:46px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:0 14px;
  border:1px solid rgba(32,25,47,.08);
  border-radius:16px;
  background:rgba(255,255,255,.70);
  box-shadow:0 12px 28px rgba(31,24,47,.06), inset 0 1px 0 rgba(255,255,255,.76);
  color:#211a30;
  font-weight:950;
}

.geo-btn-primary{
  border-color:rgba(255,63,121,.22);
  color:#ff3f79;
  background:linear-gradient(135deg, rgba(255,255,255,.88), rgba(255,242,247,.72));
}

.geo-btn img{
  width:17px;
  height:17px;
  flex:0 0 auto;
}

.geo-btn-primary img{
  filter:brightness(0) saturate(100%) invert(41%) sepia(81%) saturate(2602%) hue-rotate(318deg) brightness(102%) contrast(101%);
}

.geo-btn:hover{
  transform:translateY(-1px);
  box-shadow:0 18px 38px rgba(255,63,121,.11), inset 0 1px 0 rgba(255,255,255,.80);
}

.geo-status{
  min-height:46px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:0 14px;
  border:1px solid rgba(255,255,255,.72);
  border-radius:16px;
  background:rgba(255,255,255,.52);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.76);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
}

.geo-dot{
  width:9px;
  height:9px;
  border-radius:999px;
  background:#c8bfd2;
  box-shadow:0 0 0 5px rgba(200,191,210,.16);
  flex:0 0 auto;
}

.geo-status.is-live .geo-dot{
  background:#ff3f79;
  box-shadow:0 0 0 5px rgba(255,63,121,.14);
  animation:geoPulse 1.45s ease-in-out infinite;
}

@keyframes geoPulse{
  0%, 100%{
    transform:scale(1);
    box-shadow:0 0 0 5px rgba(255,63,121,.14);
  }
  50%{
    transform:scale(1.2);
    box-shadow:0 0 0 9px rgba(255,63,121,.05);
  }
}

.geo-status #pfGeoHint,
.geo-status #pfGeoPoint{
  color:#62566f;
  font-weight:850;
  line-height:1;
}

.geo-status #pfGeoPoint{
  color:#ff3f79;
  font-weight:950;
}

.geo-status #pfGeoPoint:empty{
  display:none;
}

.geo-status #pfGeoPoint:not(:empty)::before{
  content:"/";
  margin-right:8px;
  color:#b8afc4;
}

#catHint:empty,
.field-error:empty,
#photoStatus:empty,
#pfStatus:empty,
#profileRulesHint:empty{
  display:none;
}

.pf-actions{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 12px;
  flex-wrap: wrap;
  flex-direction:row-reverse;
}

.pf-actions-bottom{
  padding-top: 6px;
}

.pf-card .divider{
  margin:0;
}

.rules-check{
  display:flex;
  gap:12px;
  align-items:flex-start;
  cursor:pointer;
  padding:12px 14px;
  border:1px solid rgba(255,255,255,.58);
  border-radius:16px;
  background:rgba(255,255,255,.44);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.68);
}

.rules-check input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}

.rules-box{
  width:20px;
  height:20px;
  flex:0 0 auto;
  display:grid;
  place-items:center;
  margin-top:1px;
  border:1px solid rgba(32,25,47,.18);
  border-radius:7px;
  background:#fff;
  box-shadow:0 8px 18px rgba(31,24,47,.06), inset 0 1px 0 rgba(255,255,255,.78);
  transition:background .16s ease, border-color .16s ease, box-shadow .16s ease;
}

.rules-box::after{
  content:"";
  width:9px;
  height:5px;
  border-left:2px solid #fff;
  border-bottom:2px solid #fff;
  transform:rotate(-45deg) scale(.7);
  opacity:0;
  transition:opacity .16s ease, transform .16s ease;
}

.rules-check input:checked + .rules-box{
  border-color:rgba(255,63,121,.52);
  background:linear-gradient(135deg, #ff3f79, #675cff);
  box-shadow:0 0 0 6px rgba(255,63,121,.10), 0 12px 24px rgba(255,63,121,.14);
}

.rules-check input:checked + .rules-box::after{
  opacity:1;
  transform:rotate(-45deg) scale(1);
}

.rules-check input:focus-visible + .rules-box{
  outline:2px solid rgba(255,63,121,.50);
  outline-offset:3px;
}

.pf-actions-bottom .btn:disabled{
  opacity:.55;
  cursor:not-allowed;
  transform:none;
  box-shadow:none;
}

#pfBio{
  resize: vertical;
  min-height: 110px;
}

#pfStatus{ min-height: 0; }

.pf-photos{ display:grid; gap: 10px; }
.pf-photos-head{ min-width:0; }

.pf-photos-title{
  font-weight: 950;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap:wrap;
}

/* ✅ Бейдж "required" рядом с заголовком Photos */
.photo-required-badge{
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(255,47,93,.12);
  border: 1px solid rgba(255,47,93,.28);
  color: #a10f52;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .3px;
  text-transform: uppercase;
}

#photoStatus{ min-height: 0; }

/* photo cards */
.pf-photo-grid{
  display:grid;
  grid-template-columns: 1fr;
  gap: 12px;
  min-height:24px;
}

.pimg{
  width: 100%;
  aspect-ratio: 4 / 5;
  height: auto;
  object-fit: cover;
  object-position: center;
  border-radius: 16px;
  border: 1px solid var(--line);
  background: rgba(2,6,23,.92);
}


.pimg-card{
  border: 1px solid rgba(32,25,47,.08);
  border-radius: 18px;
  background:rgba(255,255,255,.78);
  padding: 10px;
  display:grid;
  gap: 10px;
  box-shadow:0 16px 36px rgba(31,24,47,.08);
  transition:transform .18s ease, box-shadow .18s ease;
}

.pimg-card:hover{
  transform:translateY(-2px);
  box-shadow:0 22px 44px rgba(31,24,47,.12);
}

.pimg-actions{
  display:flex;
  gap: 10px;
}

.pimg-actions .btn{
  width: auto;
  padding: 10px 12px;
  border-radius: 12px;
  font-weight: 900;
}

/* =======================
   Fancy uploader
   ======================= */

.uploader{
  position:relative;
  overflow:hidden;
  border: 1px solid rgba(255,255,255,.70);
  border-radius: 24px;
  background:
    radial-gradient(260px 180px at 92% 8%, rgba(255,63,121,.12), transparent 68%),
    radial-gradient(260px 180px at 8% 92%, rgba(103,92,255,.12), transparent 66%),
    rgba(255,255,255,.58);
  padding: 14px;
  display:grid;
  gap: 12px;
  box-shadow:0 18px 48px rgba(31,24,47,.08), inset 0 1px 0 rgba(255,255,255,.68);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
}

.uploader-cherry{
  position:absolute !important;
  right:-54px;
  top:-38px;
  z-index:3;
  width:154px;
  height:auto;
  pointer-events:none;
  filter:drop-shadow(0 20px 24px rgba(31,24,47,.13));
  transform:rotate(2deg);
}

.uploader::before{
  content:"";
  position:absolute;
  right:18px;
  top:18px;
  width:78px;
  height:78px;
  border-radius:24px;
  background:
    linear-gradient(135deg, rgba(255,63,121,.12), rgba(103,92,255,.10));
  transform:rotate(9deg);
  pointer-events:none;
}

.uploader > *{
  position:relative;
  z-index:1;
}

.uploader.is-disabled{
  opacity: .6;
  pointer-events: none;
}

.uploader-input{
  position:absolute;
  left:-9999px;
  width:1px;
  height:1px;
  overflow:hidden;
}

.uploader-drop{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 14px;
  min-height:112px;
  padding: 18px;
  border-radius: 20px;
  border: 1px dashed rgba(255,63,121,.34);
  background:rgba(255,255,255,.52);
  cursor: pointer;
  user-select:none;
  transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease, background .12s ease;
}

.uploader-drop:hover{
  transform: translateY(-1px);
  box-shadow:0 18px 42px rgba(255,63,121,.12);
  border-color: rgba(255,63,121,.55);
  background: rgba(255,255,255,.72);
}

.uploader.is-dragover .uploader-drop{
  border-color: rgba(236,72,153,.55);
  background: rgba(236,72,153,.08);
  transform: translateY(-1px);
  box-shadow: var(--shadow);
}

.uploader-ic{
  width: 54px;
  height: 54px;
  border-radius: 18px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border: 1px solid rgba(255,255,255,.72);
  background:linear-gradient(135deg, #ff3f79, #675cff);
  color: #fff;
  flex: 0 0 auto;
  box-shadow:0 16px 34px rgba(255,63,121,.18);
}

.uploader-ic img{
  width:24px;
  height:24px;
  filter:brightness(0) invert(1);
}

.uploader-text{
  display:grid;
  gap: 2px;
  flex: 1 1 auto;
  min-width: 0;
}

.uploader-title{
  font-weight: 950;
  color:#211a30;
  font-size:17px;
}

.uploader-sub{
  color:#71667d;
  font-weight: 700;
  font-size: 12px;
  line-height:1.35;
}

.uploader-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid rgba(255,63,121,.18);
  background:#fff;
  color:#ff3f79;
  font-weight: 900;
  white-space: nowrap;
  flex: 0 0 auto;
}

/* bottom row: preview + filename + camera btn */
.uploader-meta{
  display:grid;
  grid-template-columns: auto 1fr auto;
  gap: 10px;
  align-items:center;
}

.uploader-preview{
  width: 56px;
  height: 56px;
  border-radius: 18px;
  border: 1px solid rgba(255,255,255,.80);
  overflow:hidden;
  background: #fff;
  display:none;
  box-shadow:0 12px 26px rgba(31,24,47,.08);
}

.uploader-preview img{
  width:100%;
  height:100%;
  object-fit: cover;
}

/* pill with file name */
.file-pill{
  display:flex;
  align-items:center;
  gap: 10px;
  border: 1px solid rgba(32,25,47,.08);
  border-radius: 16px;
  padding: 10px 12px;
  min-height: 44px;
  background:#fff;
  overflow:hidden;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.72);
}

.file-pill-name{
  font-weight: 900;
  color: var(--text);
  overflow:hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
  flex: 1 1 auto;
}

.file-pill-size{
  color: var(--muted);
  font-weight: 800;
  font-size: 12px;
  flex: 0 0 auto;
}

.file-pill-x{
  width: 34px;
  height: 34px;
  border-radius: 12px;
  border: 1px solid var(--line);
  background:#fff;
  font-weight: 950;
  cursor:pointer;
  flex: 0 0 auto;
  color:#ff3f79;
}

.file-pill-x:hover{
  box-shadow: var(--shadow);
  transform: translateY(-1px);
  transition: transform .12s ease, box-shadow .12s ease;
}

.uploader-actions{
  display:flex;
  gap: 10px;
  align-items:center;
  justify-content:flex-end;
}

.icon-btn{
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-height:44px;
}

.icon-btn img{
  width:16px;
  height:16px;
}

.pf-side{
  position:sticky;
  top:88px;
  overflow:hidden;
  display:grid;
  gap:16px;
  padding:22px;
}

.pf-side::before{
  content:"";
  position:absolute;
  right:-54px;
  top:28px;
  width:190px;
  height:112px;
  border-radius:30px;
  background:linear-gradient(135deg, rgba(255,63,121,.12), rgba(255,255,255,.20));
  border:1px solid rgba(255,255,255,.42);
  transform:rotate(12deg);
}

.pf-side::after{
  content:"";
  position:absolute;
  left:-58px;
  bottom:28px;
  width:170px;
  height:100px;
  border-radius:28px;
  background:linear-gradient(135deg, rgba(103,92,255,.14), rgba(255,255,255,.22));
  border:1px solid rgba(255,255,255,.44);
  transform:rotate(-9deg);
}

.pf-side > *{
  position:relative;
  z-index:1;
}

.pf-side-hero{
  display:flex;
  gap:14px;
  align-items:flex-start;
  padding:16px;
  border:1px solid rgba(255,255,255,.70);
  border-radius:22px;
  background:rgba(255,255,255,.48);
}

.pf-side-icon,
.tip-card > span,
.access-icon{
  display:grid;
  place-items:center;
  flex:0 0 auto;
  border-radius:16px;
  color:#fff;
  background:linear-gradient(135deg, #ff3f79, #675cff);
  box-shadow:0 14px 30px rgba(255,63,121,.18);
}

.pf-side-icon{
  width:48px;
  height:48px;
}

.pf-side-icon img,
.tip-card > span img,
.access-icon img{
  filter:brightness(0) invert(1);
}

.pf-side h3{
  margin:0;
  color:#211a30;
  font-size:22px;
}

.pf-side-hero p{
  margin:6px 0 0;
  color:#675d73;
  font-size:13px;
  line-height:1.45;
  font-weight:750;
}

.tip-stack{
  display:grid;
  gap:10px;
}

.tip-card{
  display:flex;
  gap:12px;
  align-items:flex-start;
  padding:14px;
  border:1px solid rgba(32,25,47,.07);
  border-radius:18px;
  background:rgba(255,255,255,.62);
  box-shadow:0 12px 28px rgba(31,24,47,.06);
  transition:transform .18s ease, background .18s ease, box-shadow .18s ease;
}

.tip-card:hover{
  transform:translateX(3px);
  background:rgba(255,255,255,.78);
  box-shadow:0 18px 36px rgba(31,24,47,.09);
}

.tip-card > span{
  width:38px;
  height:38px;
  border-radius:14px;
}

.tip-card strong{
  display:block;
  color:#211a30;
  font-size:13px;
  line-height:1.25;
  font-weight:950;
}

.tip-card small{
  display:block;
  margin-top:4px;
  color:#756a81;
  font-size:12px;
  line-height:1.35;
  font-weight:750;
}

.access-card{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  padding:18px;
  border-radius:22px;
  color:#fff;
  background:
    radial-gradient(160px 120px at 88% 10%, rgba(255,255,255,.26), transparent 66%),
    linear-gradient(135deg, #211a30, #675cff);
  box-shadow:0 18px 42px rgba(103,92,255,.16);
}

.access-kicker{
  display:block;
  margin-bottom:8px;
  color:#ff78a0;
  font-size:11px;
  font-weight:950;
  text-transform:uppercase;
  letter-spacing:.07em;
}

.access-card h3{
  color:#fff;
  font-size:24px;
}

.access-card p{
  margin:8px 0 0;
  color:rgba(255,255,255,.76);
  font-size:13px;
  line-height:1.45;
}

.access-icon{
  width:46px;
  height:46px;
  background:rgba(255,255,255,.18);
  border:1px solid rgba(255,255,255,.22);
  box-shadow:none;
}

/* ✅ camera box */
.cam-box{
  border: 1px solid rgba(32,25,47,.08);
  border-radius: 20px;
  padding: 12px;
  background: rgba(255,255,255,.70);
  display:grid;
  gap: 10px;
  box-shadow:0 14px 30px rgba(31,24,47,.07);
}

.cam-box[hidden]{
  display:none !important;
}


#camVideo{
  width: 100%;
  max-height: 360px;
  border-radius: 14px;
  border: 1px solid var(--line);
  background: #000;
  object-fit: cover;
}

.cam-actions{
  display:flex;
  gap: 10px;
  justify-content:flex-end;
  flex-wrap: wrap;
}

/* mobile uploader */
@media (max-width: 679px){
  .uploader-actions{
    justify-content: stretch;
  }
  .uploader-actions .btn{ width: 100%; }

  .cam-actions{ justify-content: stretch; }
  .cam-actions .btn{ width: 100%; }
}


@media (min-width: 680px){
  .pf-row{ grid-template-columns: 1fr 1fr; }
  .pf-photo-grid{ grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 980px){
  .pf-grid{ grid-template-columns: minmax(0, 1.18fr) minmax(330px, .62fr); gap: 22px; }
  .pf-photo-grid{ grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 860px){
  .pf-head{
    flex-direction:column;
    align-items:flex-start;
    padding:24px;
  }

  .pf-head .btn{
    width:100%;
  }

  .pf-head-cherry{
    right:-48px;
    bottom:-42px;
    width:150px;
    opacity:.72;
  }

  .pf-side{
    position:relative;
    top:auto;
  }
}

/* mobile uploader */
@media (max-width: 679px){
  .pf{
    padding:18px 0 42px;
  }

  .pf-head,
  .pf-card,
  .pf-side{
    border-radius:22px;
  }

  .pf-card,
  .pf-side{
    padding:18px;
  }

  .page-title{
    font-size:34px;
    line-height:1;
  }

  .pf-head-cherry{
    right:-54px;
    bottom:-34px;
    width:128px;
    opacity:.58;
  }

  .geo-inline{
    align-items:stretch;
  }

  .geo-btn,
  .geo-status{
    flex:1 1 100%;
  }

  .uploader-drop{
    align-items:flex-start;
    flex-direction:column;
    min-height:168px;
  }

  .uploader-btn{
    width:100%;
  }

  .uploader-meta{
    grid-template-columns: 1fr;
  }

  .uploader-preview{ display:none !important; }

  .file-pill{
    min-width:0;
  }

  .pf-actions-bottom .btn{
    width:100%;
  }

  .access-card{
    flex-direction:column-reverse;
  }

  .uploader-cherry{
    right:-42px;
    top:-28px;
    width:112px;
  }
}

/* =======================
   Soft validation UI
   ======================= */

:root{
  --err-bg: rgba(255, 77, 138, .10);
  --err-border: rgba(255, 77, 138, .40);
  --err-glow: rgba(255, 77, 138, .14);
  --err-text: #a10f52;
}

.pf-field.is-invalid .input{
  border-color: var(--err-border);
  background: var(--err-bg);
  box-shadow: 0 0 0 6px var(--err-glow);
}

.pf-field.is-invalid .input:focus{
  border-color: rgba(255, 77, 138, .55);
  box-shadow: 0 0 0 7px rgba(255, 77, 138, .16);
}

/* Для кастомных контролов (segmented и dropdown) */
.pf-field.is-invalid .seg-btn{
  border-color: var(--err-border);
  background: rgba(255, 77, 138, .08);
}

.pf-field.is-invalid .seg-btn.is-active{
  border-color: rgba(255, 77, 138, .65);
  box-shadow: 0 0 0 6px rgba(255, 77, 138, .12);
}

.pf-field.is-invalid .dd-btn{
  border-color: var(--err-border);
  background: rgba(255, 77, 138, .08);
  box-shadow: 0 0 0 6px rgba(255, 77, 138, .12);
}

.field-error{
  display:block;
  font-size: 12.5px;
  font-weight: 800;
  color: var(--err-text);
  line-height: 1.25;
}

/* rules чекбокс — мягко подсвечиваем */
.geo-toggle.is-invalid{
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px solid var(--err-border);
  background: var(--err-bg);
  box-shadow: 0 0 0 6px var(--err-glow);
}

/* ✅ Ошибка блока фото — подсветка рамки вокруг всего uploader */
#photoValidationWrap.is-invalid .uploader{
  border-color: var(--err-border);
  background: rgba(255, 77, 138, .04);
  box-shadow: 0 0 0 6px var(--err-glow);
}

#photoValidationWrap.is-invalid .uploader-drop{
  border-color: rgba(255, 77, 138, .40);
  background: rgba(255, 77, 138, .06);
}

/* ✅ Кнопка "Go to Profiles" появляется после сохранения */
#pfGoToProfilesBtn{
  animation: fadeSlideIn .25s ease both;
}

@keyframes fadeSlideIn {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* =========================================================
   SaaS polish: denser profile editor
   ========================================================= */
.main{
  width:100%;
  max-width:none;
  padding:0 20px;
}

.pf{
  width:min(1180px, 100%);
  margin:0 auto;
  padding:20px 0 44px;
}

.pf::before,
.pf::after,
.pf-head::after,
.pf-head-cherry,
.pf-side::before,
.pf-side::after,
.uploader-cherry,
.uploader::before{
  display:none;
}

.pf-head,
.pf-card,
.pf-side,
.profile-progress,
.rules-check,
.uploader,
.uploader-drop,
.file-pill,
.access-card,
.tip-card,
.pf-side-hero,
.pimg-card,
.cam-box{
  border-radius:8px;
  border-color:rgba(32,25,47,.08);
  background:rgba(255,255,255,.88);
  box-shadow:0 14px 34px rgba(31,24,47,.07);
}

.pf-head{
  display:grid;
  grid-template-columns:minmax(0, 1fr) minmax(260px, 390px) auto;
  align-items:center;
  gap:14px;
  margin-bottom:14px;
  padding:14px 16px;
}

.pf-head > div{
  display:grid;
  grid-template-columns:minmax(0, 1fr) minmax(260px, 390px);
  align-items:center;
  gap:14px;
}

.pf-head .page-title{
  grid-column:1;
}

.pf-head .muted{
  grid-column:1;
}

.pf-head .profile-progress{
  grid-column:2;
  grid-row:1 / span 2;
}

.pf-head > .btn{
  justify-self:end;
}

.page-title{
  margin-bottom:4px;
  font-size:clamp(28px, 2.8vw, 38px);
  line-height:1;
}

.pf-head .muted{
  margin:0;
  font-size:13px;
}

.profile-progress{
  margin-top:0;
  padding:10px 12px;
}

.pf-grid{
  grid-template-columns:minmax(0, 1fr);
  gap:14px;
}

.pf-card,
.pf-side{
  padding:18px;
}

.pf-form{
  gap:15px;
}

.pf-row{
  gap:12px;
}

.pf-section-title > span,
.pf-side-icon,
.tip-card > span,
.access-icon,
.uploader-ic{
  border-radius:8px;
}

.pf-section-title > span{
  width:38px;
  height:38px;
}

.pf-section-title strong,
.pf-photos-title{
  font-size:16px;
}

.pf-section-title small{
  font-size:12px;
}

.pf-field .input,
#pfCategoryMount .dd-btn{
  min-height:46px;
  border-radius:8px;
  background:#fff;
}

.geo-btn,
.geo-status,
.pf-field .seg-btn,
.uploader-btn,
.file-pill-x,
.pimg-actions .btn,
.cam-actions .btn{
  border-radius:8px;
}

.geo-btn,
.geo-status{
  min-height:42px;
}

.uploader{
  padding:12px;
  gap:10px;
}

.uploader-drop{
  min-height:92px;
  padding:14px;
}

.uploader-ic{
  width:46px;
  height:46px;
}

.uploader-title{
  font-size:15px;
}

.pf-side{
  gap:12px;
}

.pf-side-hero{
  padding:12px;
}

.pf-side h3,
.access-card h3{
  font-size:18px;
}

.tip-card{
  padding:11px;
}

.access-card{
  color:#211a30;
  background:
    radial-gradient(190px 110px at 90% 0%, rgba(255,63,121,.12), transparent 68%),
    #fff;
}

.access-card h3{
  color:#211a30;
}

.access-card p{
  color:#6b6077;
}

.access-kicker{
  color:#ff3f79;
}

@media (min-width: 980px){
  .pf-grid{
    grid-template-columns:minmax(0, 1fr) minmax(300px, 360px);
  }
}

@media (max-width: 980px){
  .pf-head,
  .pf-head > div{
    grid-template-columns:1fr;
  }

  .pf-head .page-title,
  .pf-head .muted,
  .pf-head .profile-progress{
    grid-column:auto;
    grid-row:auto;
  }

  .pf-head > .btn{
    justify-self:stretch;
  }
}

@media (max-width: 679px){
  .main{
    padding:0 12px;
  }

  .pf{
    padding:10px 0 36px;
  }

  .pf-head,
  .pf-card,
  .pf-side{
    padding:12px;
  }

  .page-title{
    font-size:28px;
  }

  .pf-field .input,
  #pfCategoryMount .dd-btn,
  .report-form__control{
    font-size:16px;
  }

  .uploader-drop{
    min-height:132px;
  }
}
