/* Pro Portfolio — minimal, modern, mobile-first. */
:root{
  --bg:#fafafa; --surface:#fff; --ink:#15161a; --ink-soft:#5b606b; --line:#e8e8ec;
  --brand:#0f0f10; --accent:#e9456b; --accent-ink:#fff;
  --radius:14px; --radius-sm:9px; --shadow:0 1px 2px rgba(20,22,26,.06),0 8px 24px rgba(20,22,26,.06);
  --maxw:1120px; --gap:18px; --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font);color:var(--ink);background:var(--bg);line-height:1.55;
  font-size:16px;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{line-height:1.2;margin:0 0 .4em;font-weight:680;letter-spacing:-.01em}
.muted{color:var(--ink-soft)}
.small{font-size:.86rem}
.lead{font-size:1.1rem;color:var(--ink-soft)}
.center{text-align:center}
.empty{padding:2.4rem 0;color:var(--ink-soft);text-align:center}
.bigicon{font-size:2.6rem;margin:.4rem 0}

/* layout */
.main{min-height:60vh}
.container{max-width:var(--maxw);margin:0 auto;padding:26px 18px}
.container--narrow{max-width:520px;margin:0 auto;padding:34px 18px}
.section-title{font-size:1.15rem;margin:.2rem 0 1rem}
.page-title{font-size:1.55rem;margin:.2rem 0 1rem}
/* Vertical rhythm — a new section (heading, card, table, list) that follows other content gets breathing
   room above it, so blocks never butt straight against each other. Only direct children of a page
   container are affected, so headings/cards nested inside components keep their own tight spacing. */
.container > .block__title:not(:first-child),
.container > .section-title:not(:first-child),
.container > .rowhead:not(:first-child),
.container > .card-box:not(:first-child),
.container > .table-wrap:not(:first-child),
.container > .postlist:not(:first-child),
.container > .feedlist:not(:first-child){margin-top:1.6rem}
/* …but keep a heading tight to the block it introduces (no double gap). */
.container > .block__title + .card-box,
.container > .block__title + .table-wrap,
.container > .block__title + .postlist,
.container > .block__title + .feedlist,
.container > .section-title + .card-box,
.container > .section-title + .table-wrap,
.container > .section-title + .postlist,
.container > .section-title + .feedlist{margin-top:.6rem}

/* nav */
.nav{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.86);backdrop-filter:saturate(150%) blur(10px);
  border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top)}
/* Slim site-wide "finish your profile" nudge bar (creators who aren't public yet). */
.ppbar{display:flex;align-items:center;gap:12px;padding:8px 16px;background:linear-gradient(90deg,var(--accent),#ff8a5c);color:#fff;text-decoration:none;font-size:.88rem;font-weight:560}
.ppbar:hover{filter:brightness(1.04)}
.ppbar__ico{font-size:1.05rem}
.ppbar__txt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.ppbar__pct{font-weight:800}
.ppbar__track{flex:1;max-width:220px;height:6px;background:rgba(255,255,255,.32);border-radius:3px;overflow:hidden}
.ppbar__fill{display:block;height:100%;background:#fff;border-radius:3px}
.ppbar__cta{margin-left:auto;white-space:nowrap;text-decoration:underline}
@media(max-width:560px){ .ppbar__track{display:none} .ppbar{font-size:.82rem;gap:8px;padding:7px 12px} }
.nav__wrap{max-width:var(--maxw);margin:0 auto;display:flex;align-items:center;gap:9px;padding:10px calc(18px + env(safe-area-inset-right)) 10px calc(18px + env(safe-area-inset-left))}
.nav__brand{font-weight:760;font-size:1.1rem;display:flex;align-items:center;gap:8px;letter-spacing:-.02em;white-space:nowrap;flex:none}
.nav__logo{width:22px;height:22px;flex:none;background:url(../img/logo-mark.png) center/contain no-repeat}
.nav__menu{display:flex;align-items:center;gap:8px;margin-left:10px;flex:1;flex-wrap:wrap;justify-content:flex-start;row-gap:8px}
.nav__menu a{color:var(--ink-soft);font-size:.875rem;font-weight:550;white-space:nowrap}
.nav__menu a:hover,.nav__menu a[aria-current]{color:var(--ink);text-decoration:none}
/* The "Register" CTA is a solid dark button — keep its label white. Needed because `.nav__menu a`
   (0,1,1) otherwise beats `.btn` (0,1,0) and tints the text dark-grey on the dark button. */
.nav__menu a.btn,.nav__menu a.btn:hover{color:#fff}
.nav__sep{width:1px;height:18px;background:var(--line);flex:none;margin-left:auto}
/* account dropdown (right side) */
.nav__account>summary{font-size:.9rem}
/* Username is shown but width-capped so a long handle (e.g. @photographer) can't widen the nav and
   push the account onto a second row; longer names get an ellipsis. */
.nav__acctn{max-width:122px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:bottom}
/* Inbox: icon-only on desktop (compact), text label only inside the mobile burger (see media query). */
.nav__inbox{display:inline-flex;align-items:center;gap:5px}
/* Unread messages/notifications → red envelope; reverts to normal once everything is read. */
.nav__inbox.is-alert .nav__inbox-ico{stroke:#c0392b}
.nav__inbox-txt{display:none}
.nav__dropdown--right{left:auto;right:0}
.nav__dropdown .nav__logout{margin:0}
.nav__dropdown .linklike{display:block;width:100%;text-align:left;padding:8px 12px;border-radius:7px;font-size:.92rem;color:var(--ink-soft)}
.nav__dropdown .linklike:hover{background:#eef0f3;color:var(--ink)}
/* "Profesionāļi" dropdown */
.nav__group{position:relative}
.nav__group>summary{list-style:none;cursor:pointer;color:var(--ink-soft);font-size:.95rem;font-weight:550;
  display:inline-flex;align-items:center;gap:5px}
.nav__group>summary::-webkit-details-marker{display:none}
.nav__group>summary:hover,.nav__group[open]>summary,.nav__group>summary[aria-current]{color:var(--ink)}
.nav__caret{font-size:.65rem;transition:transform .15s}
.nav__group[open] .nav__caret{transform:rotate(180deg)}
.nav__dropdown{position:absolute;top:calc(100% + 10px);left:0;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius-sm);box-shadow:0 10px 30px rgba(20,22,26,.14);padding:8px;display:flex;flex-direction:column;
  gap:2px;min-width:175px;z-index:60}
.nav__dropdown a{padding:8px 12px;border-radius:7px;color:var(--ink-soft);font-size:.92rem;font-weight:550;white-space:nowrap}
.nav__dropdown a:hover,.nav__dropdown a[aria-current]{background:#eef0f3;color:var(--ink);text-decoration:none}
.nav__lang{display:flex;gap:6px;font-size:.8rem;flex:none;align-items:center}
.nav__lang a{padding:2px 6px;border-radius:6px;color:var(--ink-soft)}
.nav__lang a.is-on{background:var(--ink);color:#fff}
.nav__logout{margin:0}
.linklike{background:none;border:0;cursor:pointer;color:var(--ink-soft);font:inherit;font-size:.95rem;padding:0}
.linklike:hover{color:var(--ink)}
.nav__burger{display:none;flex-direction:column;gap:4px;cursor:pointer;margin-left:auto;padding:8px;min-width:44px;min-height:44px;align-items:center;justify-content:center}
.nav__burger span{width:22px;height:2px;background:var(--ink);border-radius:2px;transition:.2s}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--brand);color:#fff;
  border:1px solid var(--brand);border-radius:var(--radius-sm);padding:11px 18px;font-weight:600;font-size:.95rem;
  cursor:pointer;transition:transform .06s ease,opacity .2s;text-decoration:none}
.btn:hover{opacity:.92;text-decoration:none}
.btn:active{transform:translateY(1px)}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.btn--sm{padding:7px 13px;font-size:.86rem}
.btn--lg{padding:14px 26px;font-size:1.02rem}
.btn--block{display:flex;width:100%}
.btn--ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.btn--ghost:hover{border-color:var(--ink)}

/* hero */
.hero{background:radial-gradient(1200px 400px at 50% -120px,#fff,transparent),linear-gradient(180deg,#fff,var(--bg));
  border-bottom:1px solid var(--line)}
.hero__inner{max-width:var(--maxw);margin:0 auto;padding:64px 18px 48px;text-align:center}
.hero__title{font-size:clamp(1.9rem,5vw,3rem);margin-bottom:.3em}
.hero__sub{font-size:1.12rem;color:var(--ink-soft);max-width:620px;margin:0 auto}

/* choose grid */
.choose{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap)}
.choose__item{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:26px 16px;
  display:flex;flex-direction:column;align-items:center;gap:12px;font-weight:620;box-shadow:var(--shadow);
  transition:transform .12s,border-color .2s}
.choose__item:hover{transform:translateY(-3px);border-color:var(--ink);text-decoration:none}
.choose__icon{width:40px;height:40px;color:var(--accent)}

/* cards */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--gap)}
/* /top — most-liked portfolio photos grid; each tile links to the photo owner's profile. */
.likedgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:2px 0 8px}
.likedtile{position:relative;display:block;aspect-ratio:1/1;border-radius:var(--radius-sm);overflow:hidden;background:#eee}
.likedtile img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .25s}
.likedtile:hover img{transform:scale(1.05)}
.likedtile:hover{text-decoration:none}
.likedtile__meta{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:6px;
  padding:18px 8px 6px;font-size:.8rem;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.72))}
.likedtile__likes{font-weight:700;flex:none}
.likedtile__by{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Video tiles in the "most-liked videos" grid: a ▶ badge over the thumbnail. */
.likedtile__play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#fff;font-size:1.3rem;
  width:42px;height:42px;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.45);border-radius:50%;pointer-events:none}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
  box-shadow:var(--shadow);transition:transform .12s}
.card:hover{transform:translateY(-3px);text-decoration:none}
.card__media{position:relative;aspect-ratio:4/3;background:#ececed;overflow:hidden}
/* Crop cover thumbnails from the TOP: portrait photos keep the face (usually near the top) instead
   of being centre-cropped through it. Landscape photos are unaffected (no vertical crop happens). */
.card__media img{width:100%;height:100%;object-fit:cover;object-position:center top}
/* Fallback cover for a creator with no portfolio photo AND no promo reel: the default role glyph is
   centred and contained (not photo-cropped) on a soft neutral field, so it reads as an intentional icon
   rather than a broken/stretched image. Real fallbacks (promo thumbnail, uploaded avatar) keep .card__media. */
.card__media--icon{background:linear-gradient(180deg,#f3f4f6,#e7e9ed);display:flex;align-items:center;justify-content:center}
.card__media--icon img{width:56%;height:56%;object-fit:contain;object-position:center}
/* Rotating cover: overlay image that crossfades the next portfolio photo in over the base image. */
.card__media-next{position:absolute;inset:0;opacity:0;transition:opacity .8s ease;pointer-events:none}
.card__media-next.show{opacity:1}
.card__role{position:absolute;left:10px;top:10px;z-index:2;background:rgba(15,15,16,.78);color:#fff;font-size:.72rem;
  padding:3px 9px;border-radius:20px;font-weight:600}
/* "New" ribbon — top-right of the card thumb, for creators who published their portfolio today. */
.card__new{position:absolute;right:7px;top:7px;z-index:2;background:var(--accent);color:#fff;font-size:.56rem;
  letter-spacing:.02em;padding:2px 6px;border-radius:14px;font-weight:700;text-transform:uppercase;box-shadow:0 1px 3px rgba(0,0,0,.25)}
/* Second day: the "New" ribbon fades to 50% before it disappears on day 3. */
.card__new--fade{opacity:.5}
.card__body{padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.card__name{font-weight:660}
.card__meta{font-size:.84rem;color:var(--ink-soft)}
/* Place type/genre shown before the city; fades while its text swaps when several genres rotate. */
.card__type{font-weight:600;color:var(--ink);transition:opacity .26s ease}
.card__type.is-fading{opacity:0}
/* Brand + model line on a classified card — a touch dimmer/smaller than price·city. */
.card__meta--bm{font-size:.8rem;color:var(--ink-mute,var(--ink-soft));font-weight:560}

/* cta */
.cta{background:var(--brand);color:#fff;margin-top:10px}
.cta__inner{max-width:var(--maxw);margin:0 auto;padding:48px 18px;text-align:center;display:flex;
  flex-direction:column;align-items:center;gap:16px}
.cta__sub{max-width:620px;margin:-4px 0 0;opacity:.92;line-height:1.55}
/* Homepage FAQ (also emitted as FAQPage JSON-LD for AI answer engines). */
.faq{max-width:760px;margin:0 auto}
.faq__item{border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 16px;margin-bottom:10px;background:var(--surface)}
.faq__item[open]{border-color:var(--brand)}
.faq__q{font-weight:600;cursor:pointer;list-style:none}
.faq__q::-webkit-details-marker{display:none}
.faq__q::after{content:'+';float:right;color:var(--ink-soft);font-weight:400}
.faq__item[open] .faq__q::after{content:'–'}
.faq__a{margin:10px 0 0;color:var(--ink-soft);line-height:1.6}
.cta .btn{background:#fff;color:var(--brand);border-color:#fff}

/* forms */
.form{display:flex;flex-direction:column;gap:15px}
.field{display:flex;flex-direction:column;gap:6px}
.field>span{font-size:.85rem;font-weight:600;color:var(--ink-soft)}
.field em{font-style:normal;color:var(--ink-soft);font-weight:400}
input[type=text],input[type=email],input[type=password],input[type=url],input[type=number],select,textarea{
  font:inherit;font-size:1rem;padding:11px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);
  background:var(--surface);color:var(--ink);width:100%}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px rgba(15,15,16,.08)}
textarea{resize:vertical}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.twocol{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap);margin-top:18px}
.card-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;
  box-shadow:var(--shadow);margin-top:18px;gap:14px}
.inline-form{display:flex;gap:10px}
.inline-form input{flex:1}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

fieldset{border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px;margin:0}
legend{font-size:.85rem;font-weight:600;color:var(--ink-soft);padding:0 6px}
.rolepick{display:flex;flex-wrap:wrap;gap:10px}
.rolepick__opt{flex:1 1 120px}
.rolepick__opt input{position:absolute;opacity:0}
.rolepick__opt span{display:block;text-align:center;padding:12px;border:1px solid var(--line);border-radius:var(--radius-sm);
  cursor:pointer;font-weight:600;transition:.15s}
.rolepick__opt input:checked+span{border-color:var(--ink);background:var(--ink);color:#fff}
.rolepick__opt input:focus-visible+span{box-shadow:0 0 0 3px rgba(15,15,16,.12)}
.checkset{margin-top:4px}
/* "?" help popover (e.g. next to video-link inputs) */
.vidhelp{display:inline-block;position:relative;vertical-align:middle}
/* Unique-views "reach" icon (views_icon()) — line eye that inherits text colour; nudged to sit on the baseline. */
.ico-views{vertical-align:-2px;opacity:.8}
.vidhelp>summary{list-style:none;cursor:pointer;width:18px;height:18px;border-radius:50%;border:1px solid var(--line);
  display:inline-grid;place-items:center;font-size:.72rem;font-weight:700;color:var(--ink-soft);background:var(--surface)}
.vidhelp>summary::-webkit-details-marker{display:none}
.vidhelp>summary:hover,.vidhelp[open]>summary{border-color:var(--accent);color:var(--accent)}
.vidhelp__box{position:absolute;z-index:30;top:calc(100% + 6px);left:0;width:290px;max-width:78vw;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow);
  padding:12px 14px;font-size:.85rem;font-weight:400;color:var(--ink-soft);line-height:1.45}
.vidhelp__box strong{color:var(--ink);display:block;margin-bottom:5px;font-size:.9rem}
.vidhelp__box p{margin:0 0 6px}.vidhelp__box p:last-child{margin:0}
.checkset .multi-other{margin-top:8px;width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 12px;font:inherit;background:var(--bg)}
.checkset__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-top:8px}
.check{display:flex;align-items:center;gap:8px;font-size:.92rem;cursor:pointer}
.notify-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px 18px;margin:6px 0 4px}
.check input{width:auto}
.check--radio{align-items:flex-start;margin:4px 0}
/* Admin capability grant panel (super-admin only, on the user editor). */
.admingrant{margin-top:10px}
.admincaps{margin:8px 0 0 24px;padding:10px 12px;border-left:3px solid var(--border,rgba(0,0,0,.12));background:var(--surface-2,rgba(0,0,0,.03));border-radius:var(--radius-sm);display:grid;gap:6px;transition:opacity .15s}
.admincaps.is-off{opacity:.4}
/* Per-admin feed badge: label picker + colour swatches + live preview. */
.badgecfg{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line);display:grid;gap:10px}
.badgecfg .field span{font-size:.85rem}
.badgeswatches{display:flex;flex-wrap:wrap;gap:8px}
.badgeswatch{position:relative;width:30px;height:30px;border-radius:50%;cursor:pointer;border:2px solid transparent;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08);display:flex;align-items:center;justify-content:center}
.badgeswatch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.badgeswatch:has(input:checked){border-color:var(--ink);box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--ink)}
.badgeswatch--auto{width:auto;height:30px;padding:0 12px;border-radius:20px;background:var(--surface);border:1px dashed var(--line);font-size:.8rem;color:var(--ink-soft)}
.badgeswatch--auto:has(input:checked){border-style:solid}
.badgeprev-row{font-size:.85rem;color:var(--ink-soft);display:flex;align-items:center;gap:8px}
/* Public-visibility card + toggle switch on the portfolio page. */
.vis__row{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.vis__form{flex:0 0 auto}
.vis__state--on{color:var(--success,#176c3a)}
.vis__state--off{color:var(--ink-soft)}
@media(max-width:768px){.vis__row{flex-direction:column;align-items:flex-start;gap:12px}}
.switch{display:inline-flex;align-items:center;cursor:pointer;font-size:.9rem;font-weight:600}
.switch input{position:absolute;opacity:0;width:0;height:0}
.switch__label{position:relative;padding-left:54px;white-space:normal}
.switch__label::before{content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:42px;height:24px;border-radius:999px;background:#cfd2d8;transition:background .15s}
.switch__label::after{content:'';position:absolute;left:3px;top:50%;transform:translateY(-50%);
  width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .15s;box-shadow:0 1px 2px rgba(0,0,0,.3)}
.switch input:checked+.switch__label::before{background:var(--brand)}
.switch input:checked+.switch__label::after{transform:translate(18px,-50%)}
.switch input:focus-visible+.switch__label::before{outline:2px solid var(--accent);outline-offset:2px}
/* Mail test: row of per-profile "send test" buttons under the recipient field. */
.mailtest__btns{display:flex;gap:10px;flex-wrap:wrap}
.filters{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap}
.filters select,.filters input{width:auto;flex:1;min-width:140px}
/* …but checkboxes/radios must stay their natural size — otherwise the flex:1/min-width:140px above
   stretches them to 140px and shoves the label far from its box. */
.filters input[type=checkbox],.filters input[type=radio]{flex:none;width:auto;min-width:0}
/* advanced (role-specific) filters */
.advfilter{flex-basis:100%;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-2,var(--surface));padding:0 12px}
.advfilter[open]{padding-bottom:12px}
.advfilter>summary{cursor:pointer;padding:10px 2px;font-weight:600;color:var(--ink-soft);font-size:.92rem;list-style:none}
.advfilter>summary::-webkit-details-marker{display:none}
.advfilter>summary::before{content:"▸ ";color:var(--accent)}
.advfilter[open]>summary::before{content:"▾ "}
.advfilter__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px 16px;margin-top:4px}
.advfilter__grid .field>span,.advfilter__grid .check{font-size:.85rem}
.advfilter__grid select,.advfilter__grid input[type=number]{flex:none;min-width:0;width:100%}
/* Boolean toggles laid out in aligned columns, set off from the dropdowns above by a divider. */
.advfilter__bools{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
  gap:10px 16px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.advfilter__bools .check{gap:10px;white-space:normal}
.advfilter__range{display:flex;align-items:center;gap:6px}
.advfilter__range input[type=number]{flex:1 1 0;width:auto;min-width:0}
.advfilter__range span{color:var(--ink-soft)}
.advfilter__act{display:flex;align-items:center;gap:14px;margin-top:14px}

/* flashes + banners */
.flashes{max-width:var(--maxw);margin:14px auto 0;padding:0 18px;display:flex;flex-direction:column;gap:8px}
.flash{padding:11px 14px;border-radius:var(--radius-sm);font-size:.92rem;border:1px solid}
.flash--ok{background:#eafaf0;border-color:#bfe9cf;color:#176c3a}
.flash--err{background:#fdecec;border-color:#f6c9c9;color:#a32020}
.banner{background:#fff8e6;border:1px solid #f3e2ad;color:#7a5b12;padding:12px 16px;text-align:center}
.banner--warn{border-radius:var(--radius-sm);margin-top:14px}

/* badges */
.badge{display:inline-block;font-size:.74rem;font-weight:650;padding:3px 9px;border-radius:20px;background:var(--ink);color:#fff}
.badge--soft{background:#eef0f3;color:var(--ink)}
.badge--approved{background:#176c3a}
.badge--pending{background:#b9821a}
.badge--draft{background:#7b8089}
.badge--rejected{background:#a32020}
.badge--unlisted{background:#a32020}

/* profile */
.profile__head{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;flex-wrap:wrap;padding-bottom:0}
.profile__name{font-size:1.8rem;margin:0}
.profile__realname{margin:.15rem 0 0;font-size:1rem}
.profile__sub{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:.4rem 0 .2rem}
.profile__actions{display:flex;gap:10px;align-items:center}
.profile__grid{display:grid;grid-template-columns:1fr 320px;gap:28px;align-items:start}
.block{margin-bottom:26px}
.block__title{font-size:1.05rem;margin-bottom:.6rem}
/* Portfolio editor: "add a photo here" button in a gallery heading + the flash on the target form. */
.gal-add{float:right;margin-top:-3px;font-weight:600}
.pf-flash{animation:pfflash 1.6s ease}
@keyframes pfflash{0%,100%{box-shadow:var(--shadow)}18%{box-shadow:0 0 0 3px var(--accent)}}
.block__sub{font-size:.92rem;color:var(--ink-soft);margin:1rem 0 .5rem;text-transform:uppercase;letter-spacing:.04em}
.prose{white-space:normal;word-break:break-word}
.prose a{color:var(--accent);text-decoration:underline}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{background:#eef0f3;border-radius:20px;padding:5px 12px;font-size:.85rem}
/* Browse city landing links: crawlable internal links to /browse/{role}/{city}. */
.citychips{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 20px}
.citychips .chip{color:var(--ink);text-decoration:none;transition:background .15s,color .15s}
.citychips .chip:hover{background:#e2e6ea}
.citychips .chip--on{background:var(--accent);color:var(--accent-ink)}
/* Answer-shaped lead paragraph on browse landing pages + the plain-language profile summary. */
.lede{font-size:1.05rem;line-height:1.6;color:var(--ink-soft);max-width:70ch;margin:.2rem 0 1rem}
.browse__intro{margin:.2rem 0 1.1rem}
.profile__summary{margin:.5rem 0 .2rem;color:var(--ink)}
.browse__faq{margin:2.4rem 0 .5rem}
.browse__faq .section-title{text-align:left}
.contacts{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-direction:column;gap:8px}
.contacts li{display:flex;justify-content:space-between;gap:10px;font-size:.92rem;border-bottom:1px solid var(--line);padding-bottom:8px}
.contacts li span{color:var(--ink-soft)}
.contacts a{color:var(--accent)}
.profile__side .block{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}

/* media */
.ratio{position:relative;aspect-ratio:16/9;border-radius:var(--radius);overflow:hidden;background:#000}
.ratio iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
/* Vertical (9:16) reels/shorts: portrait frame, capped width and centred so it isn't squeezed to a slice. */
.ratio--portrait{aspect-ratio:9/16;max-width:min(100%,340px);margin-inline:auto}
.videocard{position:relative;display:block;border-radius:var(--radius);overflow:hidden;background:#000;aspect-ratio:16/9}
.videocard img{width:100%;height:100%;object-fit:cover;opacity:.85}
.videocard__play,.tile__play{position:absolute;inset:0;margin:auto;width:54px;height:54px;display:grid;place-items:center;
  background:rgba(0,0,0,.55);color:#fff;border-radius:50%;font-size:1.1rem;pointer-events:none}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.tile{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;background:#ececed;display:block}
.tile img{width:100%;height:100%;object-fit:cover;object-position:center top}
.tile__play{width:42px;height:42px;font-size:.9rem}
.gallery--edit .tile__del,.edititem .tile__del{position:absolute;top:6px;right:6px;z-index:3}
.tile__del button{width:26px;height:26px;border-radius:50%;border:0;background:rgba(15,15,16,.7);color:#fff;cursor:pointer;font-size:.8rem}
.edititem .tile__del button{background:rgba(200,30,30,.82)}
.contact-toggle{margin-top:12px}
.contact-toggle summary{list-style:none;cursor:pointer}
.contact-toggle summary::-webkit-details-marker{display:none}
.contact{margin-top:14px}

/* like */
.like{display:inline-flex;align-items:center;gap:7px;background:var(--surface);border:1px solid var(--line);
  border-radius:30px;padding:8px 15px;font-weight:600;cursor:pointer;font-size:.92rem;color:var(--ink)}
.like__heart{color:#c9ccd2}
.like:hover{border-color:var(--accent)}
.like.is-on{border-color:var(--accent);background:#fff0f4}
.like.is-on .like__heart{color:var(--accent)}
.like__count{background:#eef0f3;border-radius:20px;padding:1px 8px;font-size:.8rem}

/* stats + actions */
.statgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;text-align:center;
  box-shadow:var(--shadow);display:flex;flex-direction:column;gap:4px}
.stat:hover{text-decoration:none}
.stat__n{font-size:1.7rem;font-weight:720;letter-spacing:-.02em}
.stat__l{font-size:.82rem;color:var(--ink-soft)}
.status-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.actions-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px}

/* editor */
.editor__head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.editor__status{display:flex;align-items:center;gap:12px}
.filechip{background:#f3f4f6;padding:8px 12px;border-radius:var(--radius-sm);word-break:break-all;font-size:.9rem}

/* admin */
.adminlist{display:flex;flex-direction:column;gap:12px}
.adminrow{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;
  display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;box-shadow:var(--shadow)}
.adminrow__main{display:flex;flex-direction:column;gap:3px}
.adminrow__act{display:flex;gap:8px;margin:0}
.adminrow__act input{width:170px}
.link{color:var(--accent)}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.table{width:100%;border-collapse:collapse;font-size:.9rem;min-width:680px}
.table th,.table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}
.table th{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft)}
.table select{padding:6px 8px}
.table--compact td,.table--compact th{padding:7px 10px}
.nowrap{white-space:nowrap}
.table td.nowrap .btn{margin-right:5px}
/* Admin users table: wider container, denser cells, sortable headings, right-aligned number columns. */
.container--wide{max-width:min(1500px,96vw)}
.table--users{min-width:1040px;font-size:.86rem}
.table--users th,.table--users td{padding:8px 10px}
.table--users td.num{text-align:right;font-variant-numeric:tabular-nums}
/* Generic opt-in numeric column (right-aligned, tabular figures) — used e.g. by the /admin/points onboarding table. */
.table td.num,.table th.num{text-align:right;font-variant-numeric:tabular-nums}
.table--users th.th-sort{text-align:left}
.table--users th.th-sort:has(.num),.table--users th.is-sorted.num{text-align:right}
.th-sort a{color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:3px;white-space:nowrap;cursor:pointer}
.th-sort a:hover{color:var(--ink)}
.th-sort.is-sorted a{color:var(--accent)}
.th-arrow{font-size:.7em;line-height:1}

/* auth */
.auth__alt{margin-top:18px;text-align:center;color:var(--ink-soft)}
.auth__alt a{color:var(--accent);font-weight:600}

/* footer */
.footer{border-top:1px solid var(--line);background:var(--surface);margin-top:40px}
.footer__wrap{max-width:var(--maxw);margin:0 auto;padding:30px 18px;display:flex;gap:24px;flex-wrap:wrap;
  align-items:flex-start;justify-content:space-between}
.footer__brand{max-width:240px}
.footer__logo{display:block;width:160px;max-width:60vw;height:auto;margin-bottom:10px}
.footer__ig{display:inline-flex;align-items:center;gap:7px;margin-top:10px;color:var(--ink-soft);text-decoration:none;font-size:.9rem;transition:color .12s ease}
.footer__ig:hover{color:var(--accent)}
.footer__links{display:flex;flex-direction:column;gap:6px}
.footer__links a{color:var(--ink-soft);font-size:.92rem}
.footer__copy{width:100%;border-top:1px solid var(--line);padding-top:14px;margin:8px 0 0}

/* responsive */
@media(max-width:860px){
  .profile__grid{grid-template-columns:1fr}
  .choose{grid-template-columns:repeat(2,1fr)}
  .statgrid{grid-template-columns:repeat(2,1fr)}
  .twocol{grid-template-columns:1fr}
  .adminrow{grid-template-columns:1fr}
  .adminrow__act input{width:100%}
}
/* Collapse the (link-heavy) nav into a burger early enough that it never wraps to two rows. */
@media(max-width:1260px){
  .nav__burger{display:flex;margin-left:auto}
  .nav__menu{position:fixed;inset:calc(54px + env(safe-area-inset-top)) 0 auto 0;background:var(--surface);flex-direction:column;align-items:stretch;
    gap:0;padding:8px 0 calc(8px + env(safe-area-inset-bottom));border-bottom:1px solid var(--line);box-shadow:var(--shadow);
    transform:translateY(-130%);transition:transform .22s ease;margin:0;
    max-height:calc(100dvh - 54px - env(safe-area-inset-top));overflow-y:auto;-webkit-overflow-scrolling:touch}
  .nav__toggle:checked~.nav__menu{transform:none}
  .nav__menu a,.nav__menu .nav__logout{padding:12px 20px;width:100%}
  .nav__menu .nav__inbox,.nav__menu>a{white-space:normal}
  .nav__inbox-ico{display:none}   /* burger: show the text label, hide the icon */
  .nav__inbox-txt{display:inline}
  .nav__menu .btn{margin:8px 20px;width:calc(100% - 40px)}
  .nav__sep{display:none}
  .nav__lang{margin-left:6px}
  /* dropdowns expand inline inside the mobile menu */
  .nav__group{width:100%}
  .nav__group>summary{padding:12px 20px;width:100%;justify-content:space-between}
  .nav__acctn{max-width:none}
  .nav__dropdown,.nav__dropdown--right{position:static;border:0;box-shadow:none;background:transparent;padding:0 0 6px;border-radius:0;min-width:0;right:auto}
  .nav__dropdown a,.nav__dropdown .linklike{padding:10px 34px}
}
@media(max-width:900px){ .grid2{grid-template-columns:1fr} }
@media(max-width:420px){ .choose{grid-template-columns:1fr} }

/* ───────── Phase 2 components ───────── */
/* response time + ratings */
.reply-badge{display:inline-block;background:#eafaf0;color:#176c3a;border:1px solid #bfe9cf;
  border-radius:20px;padding:3px 11px;font-size:.82rem;font-weight:600;margin:.2rem 0}
.stars{color:#e0a400;letter-spacing:1px}

/* price ranges */
.pricelist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.pricelist li{display:flex;justify-content:space-between;gap:10px;font-size:.92rem;border-bottom:1px solid var(--line);padding-bottom:8px}
.pricerows{display:flex;flex-direction:column;gap:8px}
.pricerow{display:grid;grid-template-columns:2fr 1fr;gap:8px}

/* reviews */
.reviews{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:14px}
.review{border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px;background:var(--surface)}
.review__top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.reviewform,.report-toggle{margin-top:12px}
.reviewform summary,.report-toggle summary{cursor:pointer}
.reviewform summary::-webkit-details-marker,.report-toggle summary::-webkit-details-marker{display:none}
.report-toggle{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}
.report-toggle .form{margin-top:10px;gap:10px}

/* favorite button */
.favform{margin:0}
.favform .is-on{border-color:#e0a400;background:#fff8e6;color:#7a5b12}

/* editor's choice */
.ec-card{position:relative}
.ec-card__slot{position:absolute;z-index:2;top:10px;left:10px;background:var(--accent);color:#fff;
  font-size:.72rem;font-weight:700;padding:4px 10px;border-radius:20px;box-shadow:var(--shadow)}
.ec-card .card__media{aspect-ratio:4/3}
.rowhead{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.rowhead .link{color:var(--accent);font-weight:600;font-size:.9rem}

/* budget fieldset */
.budget{margin:0}
.budget .grid2{gap:10px}

/* gated 18+ tile — locked for guests; a click opens the register modal (app.js). Kept dark + centred so it
   reads as an intentional "locked content" state rather than a broken image. */
.tile--gated{background:linear-gradient(135deg,#3a3a41,#212125);display:grid;place-items:center;gap:4px;text-align:center;cursor:pointer}
.tile__lock{font-size:1.7rem;line-height:1}
.tile__warn{color:#fff;font-weight:700;font-size:.8rem;padding:0 8px;line-height:1.3}
.tile__warn small{font-weight:500;opacity:.85;font-size:.7rem}

/* 18+ register-gate modal — shown when a guest clicks a locked mature tile (see app.js age-gate module). */
.agegate{position:fixed;inset:0;z-index:210;background:rgba(10,10,12,.72);display:flex;align-items:center;justify-content:center;padding:20px;padding-bottom:calc(20px + env(safe-area-inset-bottom))}
.agegate[hidden]{display:none}
.agegate__box{position:relative;background:var(--surface);color:var(--ink);max-width:380px;width:100%;border-radius:16px;padding:30px 24px 26px;text-align:center;box-shadow:0 24px 70px rgba(0,0,0,.45)}
.agegate__close{position:absolute;top:0;right:0;width:44px;height:44px;display:grid;place-items:center;background:none;border:0;font-size:1.7rem;line-height:1;color:var(--ink-soft);cursor:pointer}
.agegate__icon{font-size:2.6rem;line-height:1;margin-bottom:6px}
.agegate__title{font-size:1.2rem;margin:0 0 8px}
.agegate__text{color:var(--ink-soft);font-size:.92rem;line-height:1.5;margin:0 0 18px}
.agegate__reg{margin-bottom:12px}
.agegate__login{display:inline-block;color:var(--accent);font-size:.9rem;text-decoration:underline}

/* rules acceptance */
.check--rules{margin:6px 0;align-items:flex-start}
.check--rules a{color:var(--accent);font-weight:600}

/* inbox / messages */
.msglist{display:flex;flex-direction:column;gap:12px;margin-bottom:10px}
.msg{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}
.msg__head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.msg__meta{margin:4px 0}
.msg__act{margin-top:10px}
.msg__act .inline-form{display:inline-flex}

/* admin sub-nav */
.adminnav{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 20px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.adminnav a{font-size:.86rem;color:var(--ink-soft);padding:6px 11px;border-radius:20px;font-weight:550}
.adminnav a:hover{background:#eef0f3;text-decoration:none;color:var(--ink)}
.adminnav a[aria-current],.adminnav a.is-on{background:var(--ink);color:#fff}
.adminnav__home{display:inline-flex;align-items:center;gap:6px}
.adminnav__note{font-size:1.05rem;line-height:1;padding:6px 10px} /* Notes quick-access icon */
.adminnav__g{position:relative}
.adminnav__g>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:6px;
  font-size:.86rem;color:var(--ink-soft);padding:6px 11px;border-radius:20px;font-weight:550}
.adminnav__g>summary::-webkit-details-marker{display:none}
.adminnav__g>summary:hover{background:#eef0f3;color:var(--ink)}
.adminnav__g>summary.is-on{background:var(--ink);color:#fff}
.adminnav__caret{font-size:.7em;opacity:.7;transition:transform .15s}
.adminnav__g[open]>summary .adminnav__caret{transform:rotate(180deg)}
.adminnav__menu{position:absolute;z-index:30;top:calc(100% + 6px);left:0;min-width:200px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:0 12px 30px rgba(20,22,26,.16);padding:6px;display:flex;flex-direction:column;gap:2px}
.adminnav__menu a{display:flex;justify-content:space-between;align-items:center;border-radius:var(--radius-sm);padding:7px 10px;width:100%}
.navbadge--alert{background:#c0392b;color:#fff}
.adminnav__search{margin-left:auto}
.adminnav__search input{width:150px;max-width:38vw;padding:6px 12px;border:1px solid var(--line);border-radius:20px;background:var(--bg);font-size:.85rem}
.adminnav__search input:focus{outline:none;border-color:var(--ink);background:var(--surface)}
.impbar{display:flex;align-items:center;justify-content:center;gap:14px;background:#9a6a12;color:#fff;padding:8px 16px;font-size:.9rem;font-weight:600}
.impbar .inline{margin:0}
.impbar .btn{background:#fff;color:#9a6a12;border-color:#fff;padding:5px 12px}
.blocked-box{text-align:center;max-width:520px;margin:40px auto}
.blocked-box__icon{font-size:3rem;line-height:1}
.blocked-box__reason{background:#fff4e0;border:1px solid #f0d9a8;color:#7a5512;border-radius:var(--radius-sm);padding:10px 14px}
.blocked-box__count{font-size:1.15rem;margin:16px 0}

/* help / support badge (floating) */
.helpbadge{position:fixed;right:18px;bottom:18px;z-index:60}
.helpbadge__btn{list-style:none;width:46px;height:46px;border-radius:50%;background:var(--ink);color:#fff;
  display:grid;place-items:center;font-size:1.25rem;font-weight:700;cursor:pointer;box-shadow:var(--shadow)}
.helpbadge__btn::-webkit-details-marker{display:none}
.helpbadge[open] .helpbadge__btn{background:var(--accent)}
.helpbadge__panel{position:absolute;right:0;bottom:56px;width:280px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 10px 40px rgba(20,22,26,.18);
  padding:16px;display:flex;flex-direction:column;gap:8px}
.helpbadge__panel select,.helpbadge__panel textarea{font-size:.9rem}
@media(max-width:680px){
  .helpbadge{right:12px;bottom:calc(12px + env(safe-area-inset-bottom))}
  .helpbadge__panel{width:min(82vw,280px)}
  .pricerow{grid-template-columns:1fr}
}

/* ───────── Phase 3 components ───────── */
.crumb{margin:0 0 10px}
.crumb a{color:var(--ink-soft)}
.statgrid--6{grid-template-columns:repeat(6,1fr)}

/* news feed + forum posts */
.feedlist,.postlist{display:flex;flex-direction:column;gap:14px}
/* "New post" round + button that reveals the compose form (no JS; uses <details>) */
.feednew{margin-bottom:18px}
.feednew__note{margin:.4rem 0 1.2rem}
.feednew__btn{list-style:none;display:inline-flex;align-items:center;gap:10px;cursor:pointer;width:fit-content;
  padding:8px 16px 8px 8px;border-radius:30px;background:var(--surface);border:1px solid var(--line);
  font-weight:600;color:var(--ink);transition:transform .12s,border-color .12s,box-shadow .12s;box-shadow:var(--shadow)}
.feednew__btn::-webkit-details-marker{display:none}
.feednew__btn:hover{transform:translateY(-1px);border-color:var(--accent)}
.feednew__plus{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;flex:none;
  background:var(--accent);color:var(--accent-ink);font-size:1.4rem;line-height:1;font-weight:400;transition:transform .18s}
.feednew[open] .feednew__plus{transform:rotate(45deg)}
.feednew__form{margin-top:12px}
.fpost{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);position:relative}
.fpost__head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.fpost__img{margin-top:10px;border-radius:var(--radius-sm);max-height:520px;width:100%;object-fit:cover} /* full size — used on the single-post page */
/* feed list + profile: small thumbnail on the left, text to the right */
.fpost__row{display:flex;gap:14px;align-items:flex-start;margin-top:8px}
/* Feed thumbnail: larger, capped at 200px on the longest edge with aspect ratio kept and NO crop.
   Sizing is max-width/height with width/height:auto, so a small upload displays at its natural size
   instead of being stretched to fill a fixed box (which looked blurry / "upscaled"). */
.fpost__thumb{flex:none;align-self:flex-start;border-radius:var(--radius-sm);overflow:hidden;background:#ececed;line-height:0}
.fpost__thumb img{max-width:200px;max-height:200px;width:auto;height:auto;display:block}
.fpost__text{flex:1;min-width:0}
.fpost__text .prose{margin:0}
/* News-post headline (optional). Card = bold link above the body; detail page = larger article heading. */
/* Feed card headline — highlighted: larger, heavier, ink-dark, with a small accent tick to the left. */
.fpost__title{display:block;font-weight:750;font-size:1.22rem;line-height:1.28;color:var(--ink);margin-bottom:6px;padding-left:10px;border-left:3px solid var(--accent)}
.fpost__title:hover{color:var(--accent)}
.fpost__headline{font-size:1.5rem;font-weight:750;line-height:1.25;margin:2px 0 10px}
/* Author byline moved into the foot: compact, pushed to the right, small avatar. */
.fpost__by{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:.82rem;flex-wrap:wrap}
.fpost__by .avatar,.fpost__by .avatar img{width:24px!important;height:24px!important}
.fpost__by strong{font-weight:600}
.feednew__title{font-weight:600}
@media(max-width:520px){.fpost__thumb img{max-width:140px;max-height:140px}}
.fpost__tools{margin-left:auto;display:flex;align-items:center;gap:6px}
.fpost__tools .inline{display:inline-flex;margin:0}
.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid var(--line);
  border-radius:8px;background:var(--surface);color:var(--ink-soft);cursor:pointer;padding:0}
.iconbtn:hover{border-color:var(--ink);color:var(--ink)}
.iconbtn--danger:hover{border-color:var(--accent);color:var(--accent)}
.postedit{margin-top:10px}
.postedit>summary{cursor:pointer;font-size:.85rem;font-weight:600;color:var(--accent);list-style:none;display:inline-block}
.postedit>summary::-webkit-details-marker{display:none}
.postedit>summary::before{content:"✎ "}
.postedit textarea{width:100%;margin-top:8px;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;font:inherit;resize:vertical}
.postedit__act{display:flex;align-items:center;gap:10px;margin-top:8px}
.fpost--pinned{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),var(--shadow)}
.fpost__pin{font-size:.78rem;font-weight:650;color:var(--accent);margin-bottom:6px}
.fpost__foot{display:flex;align-items:center;gap:16px;margin-top:12px;flex-wrap:wrap}
.fpost__comments{color:var(--ink-soft);font-size:.92rem;text-decoration:none}
.fpost__comments:hover{color:var(--ink)}
.fpost__actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:10px;border-top:1px solid var(--line);padding-top:10px}
.fpost__actions .inline{display:inline;margin:0}
/* Edit toggle sits inline with pin/delete; when opened it breaks to its own full-width line for the form. */
.fpost__actions .postedit{margin:0}
.fpost__actions .postedit[open]{flex-basis:100%}
.fpost--comment{box-shadow:none;background:#fafafb}
.badge--admin{background:var(--accent);color:var(--accent-ink)}
/* Ordinary admins (not the official @ProPortfolio account) — same badge, calm grey instead of accent red. */
.badge--admin-soft{background:var(--ink-soft);color:#fff}

/* forum */
.forumcats{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.forumcat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;
  box-shadow:var(--shadow);display:flex;flex-direction:column;gap:4px;transition:transform .12s}
.forumcat:hover{transform:translateY(-3px);text-decoration:none;border-color:var(--ink)}
.forumcat__name{font-weight:660;font-size:1.02rem}
.threadlist{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.threadrow{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:13px 16px;
  display:flex;flex-direction:column;gap:3px}
.threadrow:hover{border-color:var(--ink);text-decoration:none}
.threadrow__title{font-weight:600}
/* main topic → subtopics tree (forum index + main page) */
.forummain{margin-top:22px}
.forummain__title{font-size:1.1rem;margin:0 0 10px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.forummain__title a{color:var(--ink)}
.forummain__empty{margin:0 0 4px}
.forumsubs{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.forumsub{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:13px 15px;
  display:flex;flex-direction:column;gap:3px;transition:transform .12s}
.forumsub:hover{transform:translateY(-2px);text-decoration:none;border-color:var(--ink)}
.forumsub__name{font-weight:620}
/* Forum HOME tree: main topic → subtopic → its recent thread titles, so you can click a thread from the
   front page. A left rule under each subtopic draws the "tree" line; titles are the primary links. */
.forumtree{display:flex;flex-direction:column;gap:26px;margin-top:20px}
.ftmain__title{font-size:1.15rem;margin:0 0 12px;padding-bottom:7px;border-bottom:2px solid var(--line)}
.ftmain__title a{color:var(--ink)}
.ftmain__empty{margin:0}
.ftsub{margin:0 0 16px}
.ftsub__head{display:flex;align-items:baseline;gap:10px;margin-bottom:5px}
.ftsub__name{font-weight:650;color:var(--ink)}
.ftsub__name:hover{color:var(--accent)}
.ftsub__count{flex:none}
.ftsub__threads{list-style:none;margin:0;padding:0 0 0 14px;border-left:2px solid var(--line)}
.ftthread{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:5px 0;border-bottom:1px solid rgba(0,0,0,.05)}
.ftthread:last-child{border-bottom:0}
.ftthread__title{font-weight:550;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.ftthread__title:hover{color:var(--accent)}
.ftthread__meta{flex:none;white-space:nowrap}
.ftthread--more{justify-content:flex-start}
.ftthread--more a{color:var(--accent);font-weight:600;font-size:.85rem}
/* Top-contributors leaderboard (/leaders): ranked rows of member · badges · points. */
.lead-you{margin:0 0 14px;font-weight:600}
.leaderboard{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:2px}
.lbrow{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:var(--radius-sm);border-bottom:1px solid rgba(0,0,0,.05)}
.lbrow__rank{flex:none;width:2.4em;text-align:center;font-weight:700;font-size:1.05rem;color:var(--muted,#6b7280)}
.lbrow--top .lbrow__rank{font-size:1.3rem}
.lbrow__name{flex:1;min-width:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.lbrow__name a{font-weight:600;color:var(--ink)}
.lbrow__name a:hover{color:var(--accent)}
.lbrow__role{flex:none}
.lbrow__pts{flex:none;white-space:nowrap;text-align:right}
.lbrow__pts strong{font-size:1.05rem}
.lbrow--top{background:var(--surface-2,rgba(0,0,0,.03))}
.lbrow--me{outline:2px solid var(--accent);outline-offset:-2px}
.forum-newtopic{margin-bottom:18px}
/* Forum index title row: heading left, compact "New topic" button right; the form drops to full width when opened. */
.forum-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.forum-head .page-title{margin:0}
.forum-head .forum-newtopic{margin:0}
.forum-head .forum-newtopic[open]{flex:1 1 100%}
/* personal "followed topics" list on the forum index */
.forum-followed{margin-bottom:22px}
.forum-followed__title{font-size:1rem;margin:0 0 12px}
.forum-followed__empty{margin:0}
.forum-followed__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.ffrow{display:flex;align-items:center;gap:12px;justify-content:space-between;
  border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 14px;background:var(--bg)}
.ffrow__main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1;color:var(--ink)}
.ffrow__main:hover{text-decoration:none}
.ffrow__main:hover .ffrow__title{text-decoration:underline}
.ffrow__title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ffrow .inline{margin:0;flex:none}
.thread-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:8px 0 18px}
.thread-bar .inline{display:inline;margin:0}
/* notification badge + inbox notifications */
.navbadge{display:inline-block;min-width:18px;padding:0 6px;border-radius:20px;background:var(--accent);
  color:var(--accent-ink);font-size:.72rem;font-weight:700;text-align:center;line-height:18px}
/* circular avatars (uploaded picture or role-based default) */
.avatar{display:inline-block;border-radius:50%;overflow:hidden;background:#e7eaee;flex:none;vertical-align:middle;
  border:1px solid var(--line)}
.avatar img{width:100%;height:100%;object-fit:cover;display:block}
.avatar--sm{width:32px;height:32px}
.avatar--md{width:46px;height:46px}
.avatar--lg{width:112px;height:112px}
.byline{display:inline-flex;align-items:center;gap:8px}
.profile__lead{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.threadrow--avatar{flex-direction:row;align-items:center;gap:12px}
.threadrow__main{display:flex;flex-direction:column;gap:3px;min-width:0}
/* admin forum-category editor */
.adminrow--stack{flex-direction:column;align-items:stretch;gap:10px}
.fcat-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.fcat-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0}
.fcat-form input[type=text]{flex:1;min-width:140px}
.fcat-main{border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin-bottom:14px;background:var(--surface)}
.fcat-form--main input[type=text]{font-weight:650}
.fcat-move{display:inline-flex;gap:4px;vertical-align:middle;margin-right:6px}
.fcat-move .btn[disabled]{opacity:.35;cursor:default}
.fcat-subs{margin:10px 0 0 18px;padding-left:14px;border-left:2px solid var(--line);display:flex;flex-direction:column;gap:8px}
.fcat-subrow{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.fcat-form--add{margin-top:4px;opacity:.9}
.forum-suggest{margin-top:24px}
/* site search: nav box + results bar */
.nav__search{margin:0;flex:none}
.nav__search input{width:106px;max-width:42vw;padding:7px 12px;border:1px solid var(--line);border-radius:20px;
  background:var(--bg);font:inherit;font-size:.88rem}
.nav__search input:focus{outline:none;border-color:var(--ink);background:var(--surface)}
.searchbar{display:flex;gap:10px;margin:0 0 22px}
.searchbar input{flex:1;padding:13px 16px;border:1px solid var(--line);border-radius:var(--radius-sm);font:inherit;font-size:1.05rem}
.searchbar input:focus{outline:none;border-color:var(--ink)}
/* model comp-card spec list */
.speclist{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px 18px}
.speclist li{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding:6px 0;font-size:.92rem}
.speclist__k{color:var(--ink-soft)}
.speclist__v{font-weight:600;text-align:right}
/* additional-info card grid (below the portfolio) */
/* "Additional information" — kept subtle so it doesn't shout over the portfolio. */
.block__title--sm{font-size:1rem;color:var(--ink-soft)}
.specgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.specitem{display:flex;flex-direction:column;gap:2px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius-sm);padding:7px 11px}
.specitem__k{font-size:.68rem;color:var(--ink-soft);font-weight:600;text-transform:uppercase;letter-spacing:.03em}
.specitem__v{font-size:.9rem;font-weight:600;color:var(--ink);line-height:1.25}
/* yes/no attributes as compact check pills instead of full cards */
.specchips{display:flex;flex-wrap:wrap;gap:7px}
.specgrid+.specchips{margin-top:10px}
.specchip{display:inline-flex;align-items:center;gap:5px;background:var(--surface);border:1px solid var(--line);
  border-radius:20px;padding:4px 11px;font-size:.82rem;color:var(--ink-soft);font-weight:550}
.specchip__ok{color:#176c3a;font-weight:700}
/* user badges — small, soft chips next to names everywhere */
.ubadges{display:inline-flex;gap:2px;vertical-align:middle;margin-left:3px}
.ubadge{display:inline-flex;align-items:center;justify-content:center;min-width:15px;height:15px;padding:0 3px;
  border-radius:20px;background:#f0f1f4;color:var(--ink-soft);font-size:.62rem;line-height:1;font-weight:600;opacity:.92}
.ubadge--rep{background:transparent;padding:0;min-width:0;font-size:.72rem;opacity:1}
.ubadge--gone{background:transparent;font-size:.8rem;opacity:.7}
/* Editor's choice — a warm gold chip so the editor pick stands out from the earned badges */
.ubadge--editor{background:linear-gradient(135deg,#ffe9a8,#ffd45e);color:#7a5a00;box-shadow:0 0 0 1px rgba(184,134,11,.35);opacity:1}
/* /stats "who liked" list (see_likers perk): work thumbnail on the left, liker chips wrapping on the right */
.likework{display:flex;flex-direction:column;gap:12px;margin-top:8px}
.likework__row{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap}
.likework__thumb{flex:0 0 auto;width:120px}
.likers{display:flex;flex-wrap:wrap;gap:6px;align-items:center;flex:1;min-width:220px}
.likers__chip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px 3px 3px;border-radius:20px;background:var(--surface-2,#f2f3f5);text-decoration:none;color:inherit;font-size:.82rem}
.likers__chip:hover{background:var(--surface-3,#e8eaee)}
.likers__more{align-self:center}
/* deleted-account tombstone + faded authors */
.author--gone{opacity:.55}
.author--gone a{color:var(--ink-soft)}
.tombstone{padding:48px 20px}
/* deleted classified (admin-only visibility) */
.card--gone{opacity:.6}
.card__media{position:relative}
.card__deleted{position:absolute;top:8px;left:8px;z-index:1;background:#c0392b;color:#fff;font-size:.66rem;
  font-weight:700;padding:3px 8px;border-radius:20px;letter-spacing:.02em}
/* inline edit toggles for comments / reviews */
.cedit summary,.revedit summary{display:inline;cursor:pointer}
.cedit[open] summary,.revedit[open] summary{display:none}
/* artist's reply to a review */
.review__reply{margin:8px 0 0 14px;padding:8px 12px;border-left:3px solid var(--accent);background:#fff7f9;border-radius:0 var(--radius-sm) var(--radius-sm) 0}
.review__reply strong{font-size:.82rem;color:var(--accent)}
.revreply summary,.revedit summary{cursor:pointer}
.revreply[open] summary{display:none}
/* admin notes */
.notes-add{margin:16px 0 22px}
.noteslist{display:flex;flex-direction:column;gap:12px}
.note{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}
.note--pinned{border-color:var(--accent);background:#fff7f9}
.note__meta{margin-top:8px}
.note__act{display:flex;gap:14px;align-items:center;margin-top:8px}
.note__act .inline{margin:0}
.note__edit summary{cursor:pointer}
.note__edit[open] summary{display:none}
/* Roomy editor for admin notes (the list can be long — give it space + monospace alignment). */
.note__edit textarea{min-height:300px;line-height:1.5;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9rem}
.notes-add textarea{min-height:130px;line-height:1.5}
.pf-filecount{color:var(--accent);font-weight:600}
/* profile address + map */
.address-block__addr{font-size:1.05rem;margin:0 0 10px}
.address-block__btns{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.address-block__map{border-radius:var(--radius);overflow:hidden;border:1px solid var(--line)}
.tombstone__icon{font-size:3rem;line-height:1;margin-bottom:8px;opacity:.5}
/* Private / not-yet-filled profile — a friendly card (big avatar + handle), never a 404. */
.privprofile{text-align:center;padding:52px 20px}
.privprofile__ava{position:relative;display:inline-block}
.privprofile__ava img{width:132px;height:132px;border-radius:50%;object-fit:cover;background:var(--line);box-shadow:var(--shadow)}
.privprofile__lock{position:absolute;right:0;bottom:6px;width:40px;height:40px;border-radius:50%;background:var(--surface);
  display:flex;align-items:center;justify-content:center;font-size:18px;box-shadow:0 1px 5px rgba(20,22,26,.22)}
.privprofile__name{margin:18px 0 8px;font-size:1.5rem}
.privprofile__msg{color:var(--ink-soft);max-width:36ch;margin:0 auto;line-height:1.5}
.privprofile__back{margin-top:24px}
/* "danger zone" account deletion */
.btn--danger{background:#c0392b;color:#fff;border-color:#c0392b}
.btn--danger:hover{background:#a93226}
.dangerzone{margin-top:22px;border-color:#e2b8b2}
.dangerzone__btn{cursor:pointer;font-weight:600;color:#c0392b;list-style:none}
.dangerzone__btn::-webkit-details-marker{display:none}
.dangerzone__btn::before{content:"⚠️ "}
/* labeled badges block on the profile */
.badgelist{display:flex;flex-wrap:wrap;gap:8px}
.badgechip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:20px;background:#f0f1f4;
  font-size:.85rem;font-weight:600}
.badgechip__i{font-size:1rem;line-height:1}
.stat--points{background:#fff7f9;border-color:var(--accent)}
.stat--points .stat__n{color:var(--accent)}
.stat--warn{background:#fff6f0;border-color:#c9531f}
.stat--warn .stat__n{color:#c9531f}
/* Inline failure reason in the admin translations table (why a text could not be translated). */
.tr-err{color:#c9531f}
/* Re-engagement admin: checkbox options + role grid. */
.reopt{display:inline-flex;align-items:center;gap:7px;margin:3px 16px 3px 0;font-size:.92rem;cursor:pointer}
.reopt input{width:auto}
.rerole-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:2px 10px;margin-top:4px}
/* Re-engagement explore tables (collapsible per bucket) + completeness meter. */
.re-explore{border:1px solid var(--line);border-radius:var(--radius-sm);padding:6px 12px;margin:8px 0;background:var(--surface)}
.re-explore>summary{cursor:pointer;padding:4px 0;font-size:.95rem}
.pctbar{display:inline-block;width:56px;height:7px;border-radius:4px;background:#e6e8ec;vertical-align:middle;overflow:hidden}
.pctbar__fill{display:block;height:100%;background:#2f7d55;border-radius:4px}
/* Admin help / documentation page. */
.help-toc__group{margin-bottom:12px}
.help-toc__list{list-style:none;padding:0;margin:4px 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1px 14px}
.help-toc__list a{text-decoration:none;font-size:.92rem}
.help-toc__list a:hover{text-decoration:underline}
.help-group{margin-top:26px}
.help-sec{scroll-margin-top:14px;margin-bottom:12px}
.help-sec__h{display:flex;align-items:center;gap:8px;font-size:1.05rem;margin:0 0 8px}
.help-sec__top{margin-left:auto;text-decoration:none;color:var(--ink-soft);font-size:.95rem}
.help-sec__body p{margin:0 0 8px}
.help-sec__body ul,.help-sec__body ol{margin:0 0 8px 20px}
.help-sec__body li{margin:3px 0}
.help-sec__body code{background:#eef0f3;border-radius:4px;padding:1px 5px;font-size:.86em}
.stat--alert{background:#fff7f9;border-color:var(--accent)}
.stat--alert .stat__n{color:var(--accent)}
/* dashboard: status CTA + completeness + activity preview + nudge */
.dashcta{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  background:var(--ink);color:#fff;border-radius:var(--radius);padding:16px 20px;margin:4px 0 18px}
.dashcta .muted{color:rgba(255,255,255,.7)}
.dashcta--warn{background:#fff6f0;color:var(--ink);border:1px solid #e2b8b2}
.dashcta--warn .muted{color:var(--ink-soft)}
.dashcta--soft{background:var(--surface);color:var(--ink-soft);border:1px solid var(--line);justify-content:flex-start}
.dashcomplete{margin:0 0 18px}
.dashcomplete .profmeter{margin:0}
.dashnext{margin:12px 0 0;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.dashdone{color:#176c3a;font-weight:600;margin:0 0 18px}
.dashfeed{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}
.dashrow{display:flex;align-items:center;gap:12px;padding:11px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);
  background:var(--surface);color:var(--ink)}
.dashrow:hover{border-color:var(--ink);text-decoration:none}
.dashrow__icon{flex:none;font-size:1.1rem}
.dashrow__main{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dashnudge{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:0 0 18px;
  background:#fff7f9;border-color:var(--accent)}
.dashnudge__actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
/* Dashboard "Priekšrocības" (Perks): point-gated bonuses shown as active / locked cards. */
.perks-box{margin:0 0 18px}
.perks-today{display:flex;align-items:center;gap:10px;margin:8px 0 4px}
.perks-note{margin:0 0 6px}
.perks-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin-top:10px}
.perk{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--surface)}
.perk--on{border-color:var(--accent)}
.perk__head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.perk__name{font-weight:600;font-size:.92rem}
.perk__badge{font-size:.72rem;font-weight:600;padding:2px 8px;border-radius:20px;background:var(--bg);color:var(--ink-soft);white-space:nowrap}
.perk__badge--on{background:#e9f7ef;color:#1a7a44}
.perk__help{margin:6px 0 0}
.perk__thresh{display:block;margin-top:4px}
.perkbar{display:block;height:5px;background:var(--line);border-radius:5px;overflow:hidden;margin-top:8px}
.perks-today .perkbar{flex:1;margin-top:0}
.perkbar>span{display:block;height:100%;background:var(--accent)}
/* admin device log: account clusters + chips */
.iconbtn{display:inline-block;text-decoration:none;font-size:1rem;padding:2px 4px;vertical-align:middle;opacity:.85}
.iconbtn:hover{opacity:1}
.table--compact td,.table--compact th{padding:6px 8px;font-size:.86rem}
.cluster{display:flex;flex-wrap:wrap;gap:8px}
.cluster-row{padding:12px 14px;margin-bottom:12px}
.cluster-row__head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.acctchip{display:inline-flex;flex-direction:column;gap:2px;border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:7px 11px;background:var(--bg);color:var(--ink);line-height:1.3}
.acctchip:hover{border-color:var(--ink);text-decoration:none}
.acctchip__tags{display:flex;gap:5px;margin-top:3px}
.tag{display:inline-block;font-size:.66rem;font-weight:700;padding:2px 7px;border-radius:20px;background:#e7eaee;color:#41474f}
.tag--warn{background:#c9531f;color:#fff}
/* classifieds: category chip on cards + action bar */
.card__cat{position:absolute;right:10px;top:10px;background:rgba(255,255,255,.92);color:var(--ink);
  font-size:.7rem;font-weight:600;padding:3px 9px;border-radius:20px;box-shadow:var(--shadow)}
.cl-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:16px 0}
.cl-actions .inline{display:inline;margin:0}
/* Structured Brand/Model spec row on a single classified — chip-like key + value pairs. */
/* Single-listing layout rhythm: small gap after the badges, byline tight under the title, a bigger
   gap before the price row, then the price (left) and make/model chips (right) on one line. */
.cl-title{margin:.6rem 0 .3rem}
.cl-byline{margin:0}
.cl-priceline{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 16px;margin:22px 0 14px}
.cl-spec{display:flex;flex-wrap:wrap;gap:8px;margin:0}
.cl-spec__i{display:inline-flex;align-items:baseline;gap:6px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;font-size:.9rem}
.cl-spec__k{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft)}
/* Highlighted price — big accent figure on a single listing, bold accent on cards. */
.cl-price{font-size:1.7rem;font-weight:800;color:var(--ink);margin:0;letter-spacing:-.01em}
.card__price{font-weight:800;color:var(--ink)}
.cl-delete{margin-top:14px}
/* Photo management on the classified edit form — existing thumbs with a remove tick. */
.climg-edit{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}
.climg-edit__item{width:96px;margin:0}
.climg-edit__item img{width:96px;height:96px;object-fit:cover;object-position:center top;border-radius:10px;display:block;border:1px solid var(--line)}
.climg-edit__item:has(input:checked) img{opacity:.35;outline:2px solid var(--accent);outline-offset:-2px}
.climg-edit__del{display:flex;align-items:center;justify-content:center;gap:4px;font-size:12px;color:var(--ink-soft);margin-top:4px;cursor:pointer}
/* Compact numeric input for the admin points / site editors. `input.pt-num` (0,1,1) is needed so it
   beats the base `input[type=number]{width:100%}` rule; a bare `.pt-num` (0,1,0) would lose and the input
   would fill the whole cell, pushing its unit label into the next column. */
input.pt-num{width:5.5rem;text-align:right}
/* Value cell = fixed-width input + its unit, kept together and never wider than needed. */
.site-val{display:inline-flex;align-items:baseline;gap:6px;white-space:nowrap}
/* Admin badges editor — a labelled grid per badge + a clickable icon palette. */
.badgeform{margin-bottom:14px}
.badgeedit{border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px;margin-bottom:12px;background:var(--surface)}
.badgeedit__head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.badgeedit__id{min-width:0}
.badgeedit__id code{font-size:.82em}
.badgeedit__del{margin:0 0 0 auto}
.badgeedit__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px 12px;align-items:end;margin-bottom:10px}
.badgeedit__grid .field{margin:0}
.badgeedit__grid .field--wide{grid-column:1/-1}
.badgeedit__grid .field--icon,.badgeedit__grid .field--color{max-width:130px}
/* Per-badge "assigned to" list + grant-by-username form. */
.badgeusers{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.badgeusers__head{font-size:.85rem;font-weight:600;color:var(--ink-soft);margin-bottom:6px}
.badgeusers__list{list-style:none;margin:0 0 8px;padding:0;display:grid;gap:4px}
.badgeusers__list li{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:.9rem}
.badgeusers__grant{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.badgeusers__grant input[type=text]{flex:1;min-width:150px}
.emojipal{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.emojipal__b{font-size:1.3rem;line-height:1;padding:6px 9px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;transition:transform .08s ease,border-color .12s ease}
.emojipal__b:hover{border-color:var(--accent);transform:scale(1.12)}
.emojipal__b.is-copied{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent) inset}
.emojipal__toast{display:inline-block;margin-top:8px;font-size:.85rem;color:var(--accent);font-weight:600}
/* ── Badge holders overview (/admin/userbadges) ── */
.ub-cond td{vertical-align:middle}
.ub-oncell{text-align:center}
.ub-showsel{max-width:120px}
.ub-condbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px}
.ub-refresh{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 4px}
/* "Ideas for more badges" grid — informational cards. */
.ub-ideas{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin:6px 0 4px}
.ub-idea{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface)}
.ub-idea__i{font-size:1.3rem;line-height:1.2}
/* Holder table. */
.ub-holders td{vertical-align:top}
.ub-member{display:flex;gap:10px;align-items:center}
.ub-member__id{display:flex;flex-direction:column;gap:2px;min-width:0}
.ub-badgelist{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.ub-badgelist li{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:.9rem}
.ub-bname{font-weight:600}
.ub-auto{color:var(--ink-soft);font-size:.8rem}
.ub-reason{flex:1 1 auto}
.ub-x{margin-left:auto}
.ub-x .linklike{color:var(--danger,#c0392b)}
.ub-actions{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.ub-grant{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.ub-grant select{max-width:190px}
/* Home dashboard "members with badges" list. */
.adm-badgeholders{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:6px}
.adm-badgeholders li{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:.9rem}
/* Error-log expandable details + stack trace (admin/errors). */
.errdet{margin-top:4px}
.errdet>summary{cursor:pointer}
.errdet__body{margin-top:6px;display:grid;gap:3px}
.errdet__body b{color:var(--ink-soft);font-weight:600}
.errtrace{margin:6px 0 0;padding:8px 10px;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);font-size:.78rem;white-space:pre-wrap;word-break:break-word;max-height:300px;overflow:auto}
.filters__cat{margin-left:auto}
.filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.notiflist{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.notif{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 15px;
  display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.notif:hover{border-color:var(--ink);text-decoration:none}
.notif--unread{border-left:3px solid var(--accent);background:#fff7f9}
.notif--warn{border-left:3px solid #c9531f;background:#fff6f0}
.notif__warnicon{font-size:1.05rem;line-height:1;flex:none}
.notif__emoji{font-size:1.1rem;line-height:1;flex:none}
.notif__text em{font-style:normal;font-weight:600}
/* editor: a portfolio video that is no longer publicly available */
.tile--down img{filter:grayscale(.7) brightness(.7)}
.tile__down{position:absolute;left:6px;bottom:6px;background:#c9531f;color:#fff;font-size:.66rem;font-weight:700;
  padding:3px 7px;border-radius:20px;letter-spacing:.02em;box-shadow:0 1px 4px rgba(0,0,0,.3)}

/* per-item likes on gallery */
.gtile{position:relative;margin:0}
.gtile__like{position:absolute;right:8px;bottom:8px;margin:0}
/* The promo-reel like sits INLINE below the video (not overlaid — an overlay would block the iframe). */
.gtile__like.promo__like{position:static;display:flex;justify-content:flex-end;margin-top:10px}
.ilike{display:inline-flex;align-items:center;gap:5px;background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  color:var(--accent);border:0;border-radius:20px;padding:5px 11px;font-size:.82rem;font-weight:700;cursor:pointer;line-height:1;
  box-shadow:0 2px 8px rgba(0,0,0,.18);transition:background .15s,transform .15s,box-shadow .15s}
.ilike:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.22)}
.ilike.is-on{background:var(--accent);color:#fff}
.ilike[disabled]{cursor:default}
.tile__likes{position:absolute;left:8px;bottom:8px;background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  color:var(--accent);border-radius:20px;padding:4px 10px;font-size:.78rem;font-weight:700;box-shadow:0 2px 8px rgba(0,0,0,.18)}

/* work credits / team tags */
.gtile__credits{margin-top:5px;display:flex;flex-direction:column;gap:1px}
.credits{display:flex;flex-wrap:wrap;gap:2px 10px;font-size:.78rem;line-height:1.35;color:var(--ink-soft)}
.credit__role{color:var(--ink-soft);font-weight:600;margin-right:3px}
.credits a{color:var(--accent);text-decoration:none;font-weight:600}
.credits a:hover{text-decoration:underline}
.creditset{border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;margin:10px 0}
.creditset>legend{font-size:.85rem;font-weight:700;padding:0 6px;color:var(--ink-soft)}
.creditset__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px 12px;margin-top:4px}
.creditset .field>span{font-size:.8rem}
.edititems{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}
.edititem{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface)}
.edititem .tile{aspect-ratio:4/3;border-radius:0}
.edititem__body{padding:8px 10px 10px}
.edititem__title{font-size:.85rem;font-weight:600;margin:0 0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Drag-and-drop reordering */
.edititems[data-reorder] .edititem[draggable]{cursor:grab}
.edititems[data-reorder] .edititem.dragging{opacity:.45;cursor:grabbing}
.tile__drag{position:absolute;top:6px;left:6px;display:none;width:24px;height:24px;border-radius:6px;
  background:rgba(15,15,16,.62);color:#fff;font-size:.8rem;line-height:24px;text-align:center;cursor:grab;z-index:2;user-select:none}
.edititems[data-reorder] .tile__drag{display:block}
.reorder-hint{margin:0 0 10px}
.reorder-hint::before{content:"⠿ ";opacity:.7}
.edititems--saved{outline:2px solid var(--ok,#1f9d55);outline-offset:3px;border-radius:8px;transition:outline-color .3s}
.creditedit{margin-top:8px}
.creditedit>summary{cursor:pointer;font-size:.82rem;font-weight:600;color:var(--accent);list-style:none}
.creditedit>summary::-webkit-details-marker{display:none}
.creditedit>summary::before{content:"✎ "}
.creditedit .creditset{margin-top:8px}
.lb__capwrap{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.lb__credits{font-size:.82rem}
.lb__credits .credit__role{color:rgba(255,255,255,.65)}
.lb__credits a{color:#fff;text-decoration:underline}

/* profile/portfolio split editor + galleries */
.editor__tabs{display:flex;gap:8px;margin:6px 0 18px}
.editor__tabs a{padding:7px 16px;border:1px solid var(--line);border-radius:20px;font-weight:600;font-size:.92rem;color:var(--ink-soft);text-decoration:none}
.editor__tabs a:hover{border-color:var(--accent);color:var(--accent)}
.editor__tabs a.is-active{background:var(--ink);border-color:var(--ink);color:#fff}
/* "View profile" sits apart from the tabs, pushed to the right. */
.editor__tabs{flex-wrap:wrap;align-items:center}
.profmeter{margin:0 0 18px}
.profmeter__top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:5px}
.profmeter__label{font-size:.9rem;font-weight:600;color:var(--ink-soft)}
.profmeter__pct{font-size:.95rem;font-weight:700;color:var(--ink)}
.profmeter__track{height:9px;background:var(--line);border-radius:20px;overflow:hidden}
.profmeter__fill{display:block;height:100%;border-radius:20px;background:linear-gradient(90deg,var(--accent),#ff8a5c);transition:width .3s ease}
.profmeter__fill.is-full{background:linear-gradient(90deg,#176c3a,#2bbd6a)}
.editor__sectiontitle{margin:28px 0 6px;font-size:1.25rem;padding-top:10px;border-top:2px solid var(--line)}
.avataredit{display:flex;align-items:center;gap:16px;margin-bottom:8px;flex-wrap:wrap}
.avataredit input[type=file]{width:auto}
.check--business{margin:10px 0;padding:10px 12px;background:var(--surface-2,rgba(0,0,0,.03));border-radius:var(--radius-sm)}
/* Portfolio-editor intro: two side-by-side cards explaining Portfolio (primary) vs Galleries. */
.pf-guide__grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0 4px}
.pf-guide__col{border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px;background:var(--bg)}
.pf-guide__col--primary{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.pf-guide__col strong{display:block;margin:7px 0 3px}
.pf-guide__col p{margin:0}
.pf-guide__tag{display:inline-block;font-size:.7rem;font-weight:650;letter-spacing:.03em;text-transform:uppercase;color:#fff;background:var(--accent);border-radius:999px;padding:2px 9px}
.pf-guide__tag--alt{background:var(--ink-soft)}
.pf-guide__lead{margin:8px 0 0}
@media(max-width:520px){.pf-guide__grid{grid-template-columns:1fr}}
.galrow{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.galrow__move{display:flex;flex-direction:column;gap:2px;flex:none}
.galmove{padding:1px 8px;line-height:1.25;min-width:0}
.galmove[disabled]{opacity:.35;cursor:default}
.galrow__edit{display:flex;align-items:center;gap:8px;flex:1;flex-wrap:wrap;margin:0}
.galrow__edit input[type=text]{flex:1;min-width:140px}
.galrow__edit select,.galrow--new select{width:auto;min-width:120px}
.galrow--new{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line);flex-wrap:wrap}
.galrow--new input[type=text]{flex:1;min-width:140px}
.genrow{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.genrow__edit{display:flex;align-items:center;gap:8px;flex:1;flex-wrap:wrap;margin:0}
.genrow__edit input[type=text]{flex:1;min-width:120px}
.genrow--new{margin-top:10px;padding-top:12px;border-top:1px dashed var(--line);flex-wrap:wrap}
.genrow--new input[type=text]{flex:1;min-width:120px}
/* Types & genres manager */
.typecard{border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin:0 0 16px}
.typecard--off{opacity:.55}
.typecard__head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px;padding-bottom:12px;border-bottom:1px dashed var(--line)}
.typecard__edit{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1 1 360px;margin:0}
.typecard__edit input[type=text]{flex:1;min-width:130px;font-weight:600}
.typecard__meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.typecard__roles{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.typecard__btns{display:inline-flex;align-items:center;gap:4px}
.typecard__btns form{margin:0}
.typecard__del{color:#c0392b}
.check--mini{font-size:.82rem;gap:4px}
.is-disabled{opacity:.4;cursor:not-allowed}
.typeadd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 28px;padding:12px 14px;background:var(--surface-2,rgba(0,0,0,.03));border-radius:var(--radius)}
.typeadd input[type=text]{flex:1;min-width:140px}
.typeadd strong{flex-basis:100%}
/* Admin archive disclosure (errors / reports / reviews history) */
.adminarchive{margin-top:22px;border-top:1px dashed var(--line);padding-top:14px}
.adminarchive>summary{cursor:pointer;font-weight:600;color:var(--ink-soft);list-style:none}
.adminarchive>summary::-webkit-details-marker{display:none}
.adminarchive>summary:hover{color:var(--ink)}
.table tr.is-muted{opacity:.6}
/* Inbox notices (admin → user: warnings + points) */
.noticestack{display:flex;flex-direction:column;gap:10px;margin:0 0 22px}
.noticebox{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;background:var(--surface-2,rgba(0,0,0,.02))}
.noticebox--warning{border-color:#e0a106;background:rgba(224,161,6,.09)}
.noticebox--points{border-color:#176c3a;background:rgba(23,108,58,.06)}
.noticebox__title{display:block;margin-bottom:3px}
.noticebox__body p{margin:2px 0 0;white-space:pre-line}
.noticebox__dismiss{margin:0;flex:none}
.notice__delta.pos{color:#176c3a;font-weight:700}
.notice__delta.neg{color:#c0392b;font-weight:700}
/* Admin per-user moderation panel + approval queue */
.gategrid{display:flex;flex-wrap:wrap;gap:8px 20px;margin:8px 0 12px}
.usermod-warns{list-style:none;padding:0;margin:0 0 12px;display:flex;flex-direction:column;gap:6px}
.usermod-warns li{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.modq__text{display:block;margin-top:4px}
.modq__reason{max-width:170px}
.galblock{margin-bottom:22px}
.galblock__title{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.badge--biz{background:rgba(23,108,58,.13);color:#176c3a;font-weight:600}

/* messaging — conversation list (iMessage-style) */
.convlist{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:8px}
/* One conversation row = the tappable link + its archive/restore button beside it. */
.convitem{display:flex;align-items:center;gap:6px;border-bottom:1px solid var(--line)}
.convitem:last-child{border-bottom:0}
.convitem .convrow{flex:1;border-bottom:0}
.convitem .inline-form{padding-right:8px}
.convrow{display:flex;align-items:center;gap:12px;padding:11px 14px;text-decoration:none;color:inherit;border-bottom:1px solid var(--line)}
.convrow:last-child{border-bottom:0}
.convrow:hover{background:var(--surface-2,rgba(0,0,0,.03))}
.convrow--unread{background:rgba(37,99,235,.05)}
.convrow__main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.convrow__top{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.convrow__name{font-size:.96rem}
.convrow--unread .convrow__name{font-weight:700}
.convrow__prev{font-size:.86rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.convrow--unread .convrow__prev{color:var(--ink)}
.convrow__dot{width:10px;height:10px;border-radius:50%;background:var(--accent);flex:none}

/* messaging — chat thread (iMessage-style) */
.chatpage{max-width:680px}
.chat__top{display:flex;align-items:center;gap:10px;padding:8px 0 12px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--bg,#fff);z-index:3}
.chat__back{font-size:1.8rem;line-height:1;color:var(--accent);text-decoration:none;padding:0 4px}
.chat__who{display:flex;flex-direction:column;line-height:1.2}
.chat__name{font-weight:700;color:var(--ink);text-decoration:none}
a.chat__name:hover{color:var(--accent)}
.chat{display:flex;flex-direction:column;gap:3px;padding:16px 2px;min-height:40vh;max-height:62vh;overflow-y:auto}
.chat__empty{text-align:center;margin:auto;padding:30px}
.chat__day{text-align:center;margin:12px 0 6px}
.chat__day span{font-size:.72rem;color:var(--ink-soft);background:var(--surface-2,rgba(0,0,0,.05));padding:3px 10px;border-radius:10px}
.bubblerow{display:flex;margin-top:2px}
.bubblerow--me{justify-content:flex-end}
.bubblerow--them{justify-content:flex-start}
.bubble{max-width:74%;padding:8px 13px;border-radius:18px;position:relative;word-wrap:break-word;overflow-wrap:anywhere}
.bubblerow--them .bubble{background:#e9e9eb;color:#111;border-bottom-left-radius:5px}
.bubblerow--me .bubble{background:var(--accent);color:#fff;border-bottom-right-radius:5px}
.bubble__body{font-size:.95rem;line-height:1.35;white-space:pre-wrap}
.bubble__body a{color:inherit;text-decoration:underline}
.bubble__time{display:block;font-size:.66rem;opacity:.65;margin-top:3px;text-align:right}
.chat__receipt{align-self:flex-end;font-size:.7rem;color:var(--ink-soft);margin:1px 4px 4px;font-weight:500}
.chat__compose{display:flex;gap:8px;align-items:flex-end;padding:12px 0 calc(12px + env(safe-area-inset-bottom));position:sticky;bottom:0;background:var(--bg,#fff);border-top:1px solid var(--line)}
.chat__compose textarea{flex:1;resize:none;border:1px solid var(--line);border-radius:20px;padding:10px 14px;font:inherit;max-height:140px;line-height:1.35}
.chat__compose .btn{border-radius:20px}

/* stats bar chart */
.barchart{display:flex;align-items:flex-end;gap:6px;height:170px;padding-top:10px}
.bar{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:6px}
.bar__fill{width:100%;max-width:34px;background:linear-gradient(180deg,var(--accent),#ff8a5c);border-radius:6px 6px 0 0;
  min-height:2px;transition:height .3s}
.bar__lbl{font-size:.7rem;color:var(--ink-soft)}

/* admin analytics dashboard */
.chart{display:flex;align-items:flex-end;gap:4px;height:150px;padding-top:10px;border-bottom:1px solid var(--line)}
.chart--hour{height:110px}
.chart__col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:4px}
.chart__bar{width:100%;max-width:30px;background:linear-gradient(180deg,var(--accent),#ff8a5c);border-radius:5px 5px 0 0;min-height:2px}
.chart__x{font-size:.62rem;color:var(--ink-soft)}
/* Small per-bar value label (unique-visitors-per-day chart) */
.chart__v{font-size:.58rem;line-height:1;font-weight:600;color:var(--ink-soft)}
/* Unique-per-day chart uses a cooler colour so it reads as a different metric from page views */
.chart--uniq{height:170px}
.chart--uniq .chart__bar{background:linear-gradient(180deg,#3f7fe6,#8fb4f5)}
.bdgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 22px;margin-top:18px}
.bd__h{font-size:.92rem;margin:0 0 8px}
.bdlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}
.bdlist li{position:relative;display:flex;align-items:center;gap:8px;padding:5px 9px;font-size:.85rem;border-radius:var(--radius-sm);overflow:hidden}
.bdlist__bar{position:absolute;left:0;top:0;bottom:0;background:#eef0f3;z-index:0}
.bdlist__k{position:relative;z-index:1;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bdlist__v{position:relative;z-index:1;font-weight:700;color:var(--ink-soft)}

/* Growth deltas strip under the KPIs */
.an-growth .repdelta{margin:0 2px}
/* Weekday × hour activity heatmap: fixed small cells, colour intensity set inline per cell */
.heat{border-collapse:separate;border-spacing:2px;font-size:.68rem}
.heat th{color:var(--ink-soft);font-weight:500;text-align:center;padding:0 2px}
.heat tbody th{text-align:right;white-space:nowrap;padding-right:6px}
.heat td{width:15px;height:15px;border-radius:3px;background:var(--line,#ececef)}
/* Two heatmaps side by side (weekday×hour + day-of-month×hour). Each block scrolls
   horizontally on its own via the inner .table-wrap; they stack when the row won't fit. */
.heat-pair{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:flex-start}
.heat-block{flex:1 1 420px;min-width:0}
.heat-block .bd__h{margin:0 0 .5rem}

@media(max-width:860px){ .statgrid--6{grid-template-columns:repeat(3,1fr)} }
@media(max-width:560px){ .statgrid--6{grid-template-columns:repeat(2,1fr)} }

/* Retention page: responsive multi-column blocks (histograms / detail tables) + an inline percentage
   meter for cohort & conversion cells. Auto-fit so 3 histograms sit across on desktop and collapse cleanly. */
.ret-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.25rem 1.5rem;align-items:start;margin-top:.5rem}
.retbar{display:inline-block;width:60px;height:8px;border-radius:4px;background:var(--line,#ececef);vertical-align:middle;overflow:hidden}
.retbar__fill{display:block;height:100%;background:var(--accent,#2f6f7d);border-radius:4px}
.retbar__n{margin-left:6px;font-variant-numeric:tabular-nums;color:var(--ink-soft)}

/* ───────── gallery lightbox ───────── */
.lb{position:fixed;inset:0;z-index:200;background:rgba(10,10,12,.94);display:flex;flex-direction:column;
  align-items:center;justify-content:center;padding:24px;padding-bottom:calc(24px + env(safe-area-inset-bottom));gap:14px;animation:lbfade .18s ease;overflow-y:auto}
.lb[hidden]{display:none}
@keyframes lbfade{from{opacity:0}to{opacity:1}}
.lb__stage{display:flex;align-items:center;justify-content:center;max-width:94vw;max-height:82vh}
.lb__img{max-width:94vw;max-height:82vh;object-fit:contain;border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
/* Portfolio image download deterrent: no drag-to-save and no mobile long-press "Save Image" menu.
   Deterrent only — screenshots / DevTools still work; pairs with the resolution tiers + JS handlers. */
.tile img,.gtile img,.lb__img{-webkit-user-drag:none;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}
.lb__video{position:relative;width:min(92vw,1100px);aspect-ratio:16/9;background:#000;border-radius:10px;overflow:hidden}
.lb__video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
/* Vertical clips (reels / Instagram / shorts): tall, height-bounded box instead of a wide 16:9 frame. */
.lb__video--portrait{width:min(94vw,440px);aspect-ratio:9/16;max-height:86vh}
/* Admin "Video URLs" diagnostic tool cards. */
.vc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-top:12px}
.vc-card{display:flex;flex-direction:column;gap:8px}
.vc-card__head{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.vc-card__url{font-size:.78rem;word-break:break-all}
.vc-thumb{width:100%;max-height:320px;object-fit:contain;border-radius:8px;background:#000}
.vc-nothumb{padding:20px;text-align:center;background:#f5f5f5;border-radius:8px}
.vc-meta{display:flex;flex-wrap:wrap;gap:2px 16px;margin:2px 0;font-size:.82rem}
.vc-meta>div{display:flex;gap:4px}
.vc-meta dt{color:#888}
.vc-meta dd{margin:0;font-weight:600}
.vc-card__actions{display:flex;gap:8px;margin-top:auto;padding-top:6px}
.vc-previews{display:flex;flex-direction:column;gap:10px}
.vc-pv{margin:0}
.vc-pv figcaption{margin-top:3px}
.vc-tile{position:relative;width:150px;height:150px;border-radius:8px;overflow:hidden;background:#000}
.vc-tile img{width:100%;height:100%;object-fit:cover;display:block}
.vc-tile__play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:30px;text-shadow:0 1px 6px rgba(0,0,0,.6);pointer-events:none}
.lb__close{position:fixed;top:calc(14px + env(safe-area-inset-top));right:calc(16px + env(safe-area-inset-right));width:44px;height:44px;border-radius:50%;border:0;cursor:pointer;
  background:rgba(255,255,255,.12);color:#fff;font-size:1.7rem;line-height:1;display:grid;place-items:center;z-index:2}
.lb__close:hover{background:rgba(255,255,255,.22)}
.lb__nav{position:fixed;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;border:0;
  cursor:pointer;background:rgba(255,255,255,.12);color:#fff;font-size:1.9rem;line-height:1;display:grid;place-items:center;z-index:2}
.lb__nav:hover{background:rgba(255,255,255,.22)}
.lb__prev{left:calc(14px + env(safe-area-inset-left))}
.lb__next{right:calc(14px + env(safe-area-inset-right))}
.lb__bar{display:flex;align-items:center;gap:14px;color:#fff;max-width:min(94vw,820px);
  background:rgba(255,255,255,.08);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,.14);border-radius:16px;padding:9px 9px 9px 16px}
.lb__capwrap{gap:3px}
.lb__cap{font-size:.95rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:52vw}
.lb__cap:empty{display:none}
.lb__credits{font-size:.8rem;opacity:.88}
.lb__credits .credit__role{color:rgba(255,255,255,.6)}
.lb__like{display:inline-flex;align-items:center;gap:7px;background:rgba(255,255,255,.16);color:#fff;border:0;
  border-radius:30px;padding:9px 18px;font-weight:700;cursor:pointer;font-size:.95rem;transition:background .15s}
.lb__like:hover{background:rgba(255,255,255,.26)}
.lb__like.is-on{background:var(--accent)}
.lb__like[disabled]{cursor:default}
@media(max-width:680px){
  .lb{padding:12px;padding-top:calc(12px + env(safe-area-inset-top));padding-bottom:calc(12px + env(safe-area-inset-bottom))}
  .lb__video--portrait{max-height:78vh}
  .lb__nav{width:40px;height:40px;font-size:1.6rem}
  .lb__cap{max-width:46vw}
  .lb__bar{gap:10px;padding:8px 8px 8px 12px}
}

/* inline "?" help hint (CSS-only popover via <details>) */
.hint{display:inline-block;position:relative;vertical-align:middle}
.hint summary{list-style:none;cursor:pointer}
.hint summary::-webkit-details-marker{display:none}
.hint__q{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;
  background:var(--ink-soft);color:#fff;font-size:.7rem;font-weight:700;margin-left:4px}
.hint[open] .hint__q{background:var(--accent)}
.hint__body{position:absolute;z-index:30;left:0;top:24px;width:262px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:0 10px 30px rgba(20,22,26,.16);
  padding:12px 14px;font-weight:400;font-size:.85rem;color:var(--ink);white-space:normal}
.hint__body strong{display:block;margin-bottom:6px}
.hint__body p{margin:5px 0 0}

/* verified (domain) badge */
.vbadge{display:inline-flex;align-items:center;gap:4px;vertical-align:middle;font-size:.7rem;font-weight:700;
  background:#e7f6ec;color:#127a37;border:1px solid #b6e3c5;border-radius:20px;padding:3px 10px;
  letter-spacing:.01em;position:relative;top:-2px}
.vcheck{display:inline-grid;place-items:center;width:15px;height:15px;border-radius:50%;background:#127a37;
  color:#fff;font-size:.62rem;font-weight:700;vertical-align:middle}

/* ── Admin users list: pagination + flags ── */
.pager{display:flex;align-items:center;justify-content:center;gap:14px;margin:16px 0}
.pager__info{color:var(--ink-soft);font-size:.9rem;font-weight:600}
.row--gone{opacity:.5}
.row--gone a{color:var(--ink-soft)}
.useract{display:flex;flex-wrap:nowrap;gap:4px;align-items:center;justify-content:flex-end}
.useract .inline{margin:0}
/* Keep the row actions pinned to the right edge so they're always reachable on wide tables. */
.table th.th-act,.table td.useract{position:sticky;right:0;background:var(--surface);box-shadow:-7px 0 8px -7px rgba(0,0,0,.18)}
.table th.th-act{z-index:2}
.th-ico{text-align:center}
.th-ico svg{vertical-align:middle}
.table td.nowrap.useract{white-space:nowrap}
.btn--icon{padding:5px 7px;line-height:1}

/* ── Admin overview ── */
.admincols{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:6px 0 18px}
@media(max-width:760px){.admincols{grid-template-columns:1fr}}
.admincols .card-box{margin:0}
.admincols .dashrow{margin-top:8px}
.badge--warn{background:#fff4e0;color:#9a6a12;border:1px solid #f0d9a8}
.d-block{display:block;margin-top:2px}
form.inline{display:inline-flex;margin:0}
/* Admin performance monitor (/admin/perf) */
.perf-table code{font-size:12px}
.perf-cell{display:flex;align-items:center;gap:8px}
.perf-bar{position:relative;flex:1;min-width:60px;height:14px;background:#eef0f2;border-radius:5px;overflow:hidden}
.perf-bar>span{display:block;height:100%;border-radius:5px;min-width:2px}
.perf-cell>b{font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}

/* Marketing: logo watermark tool (/admin/watermark) */
.wm-top{align-items:start}
/* Watermark 3×3 position picker: dots in a grid; the chosen cell fills with the accent colour. */
.wm-pos{display:inline-grid;grid-template-columns:repeat(3,28px);grid-template-rows:repeat(3,28px);gap:4px;border:1px solid var(--line);border-radius:8px;padding:6px;background:var(--surface)}
.wm-pos__cell{position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:5px}
.wm-pos__cell:hover{background:var(--line)}
.wm-pos__cell input{position:absolute;opacity:0;width:0;height:0}
.wm-pos__dot{width:11px;height:11px;border-radius:50%;background:var(--line);transition:all .12s}
.wm-pos__cell input:checked~.wm-pos__dot{width:17px;height:17px;background:var(--text,#111)}
.wm-results-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:22px}
.wm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
.wm-item{margin:0}
.wm-item>a{display:block;border-radius:8px;overflow:hidden;background:#eef0f3}
.wm-item img{width:100%;height:150px;object-fit:cover;display:block}
.wm-item figcaption{margin-top:6px;display:flex;flex-direction:column;gap:5px;align-items:center;text-align:center}

/* Admin user leaderboards (/admin/ratings) */
.rt-roles{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 18px}
.rt-roles .chip{cursor:pointer;text-decoration:none}
.chip--on{background:var(--ink);color:#fff;border-color:var(--ink)}
.rt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.rt-board{padding:14px 16px}
.rt-board__h{margin:0 0 10px;font-size:15px}
.rt-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.rt-row{display:flex;align-items:center;gap:9px}
.rt-rank{min-width:18px;text-align:right;font-weight:700;color:var(--muted,#889);font-size:13px}
.rt-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:none;font-weight:600}
.rt-metric{font-weight:700;font-variant-numeric:tabular-nums}
.rt-row--content .rt-name{font-weight:500}
.rt-owner{flex:none;max-width:92px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rt-imgs{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.rt-img{margin:0}
.rt-img a{position:relative;display:block;border-radius:8px;overflow:hidden;aspect-ratio:1}
.rt-img img{width:100%;height:100%;object-fit:cover;display:block}
.rt-img__likes{position:absolute;left:6px;bottom:6px;background:rgba(0,0,0,.62);color:#fff;font-size:12px;font-weight:700;padding:2px 7px;border-radius:20px}
.rt-img figcaption{margin-top:4px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Tagged education institutions — chips in the "Additional information" card */
.specedu{margin-top:12px}
.specedu__label{font-size:13px;font-weight:600;color:var(--muted,#667);margin-bottom:6px}
.educhips{display:flex;flex-wrap:wrap;gap:8px}
.educhip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--line,#e3e6ea);border-radius:999px;background:var(--card,#fff);font-size:13px;line-height:1.3}
.educhip__ic{font-size:14px}
.educhip a{text-decoration:none;font-weight:600}
.educhip__yr{margin-left:2px;padding:1px 7px;border-radius:999px;background:var(--soft,#f0f2f5);color:var(--muted,#667);font-size:12px;font-weight:600}

/* Editor's-choice weekly schedule grid */
.featured-grid td,.featured-grid th{vertical-align:top}
.featured-cell{min-width:180px}
.featured-cell__pick{margin-bottom:6px}
.featured-cell__set{display:flex;gap:4px;margin-top:4px}
.featured-cell__inp{flex:1;min-width:0;max-width:130px}

/* ── Admin monthly summary ── */
.repdelta{font-size:.72rem;font-weight:700;white-space:nowrap}
.rep-up{color:#1d8a4a}.rep-down{color:#c0392b}.rep-flat{color:var(--ink-soft)}.rep-warn{color:#b9821a}
.stat__u{font-size:.55em;font-weight:600;color:var(--ink-soft)}
.perfgrid{display:grid;grid-template-columns:1.4fr 1fr;gap:18px;align-items:start}
@media(max-width:760px){.perfgrid{grid-template-columns:1fr}}
.repsum td:nth-child(odd){color:var(--ink-soft);font-size:.85rem}
.repsum td:nth-child(even){font-weight:700;text-align:right;padding-right:18px}
.repgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin:6px 0 4px}
.repcard{border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;background:var(--surface)}
.repcard__h{margin:0 0 6px;font-size:.82rem;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-soft)}
.reptab{width:100%;border-collapse:collapse;font-size:.88rem}
.reptab td{padding:3px 0;border-bottom:1px solid var(--line)}
.reptab td:last-child{text-align:right;font-weight:700}
.reptab tr:last-child td{border-bottom:none}

/* ── Admin backup ── */
.bak-full{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:14px 0 22px}
.bak-full .btn{flex:none}

/* ── Search: tabs, facets, chips ── */
.stabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin:18px 0 16px;padding-bottom:0}
.stab{display:inline-flex;align-items:center;gap:7px;padding:9px 14px;border-radius:var(--radius-sm) var(--radius-sm) 0 0;
  color:var(--ink-soft);font-weight:600;font-size:.92rem;border:1px solid transparent;border-bottom:none;position:relative;top:1px}
.stab:hover{color:var(--ink);background:var(--bg)}
.stab.is-active{color:var(--ink);background:var(--surface);border-color:var(--line);box-shadow:0 -2px 0 var(--accent) inset}
.stab__n{font-size:.74rem;font-weight:700;min-width:18px;height:18px;padding:0 5px;border-radius:9px;
  display:inline-grid;place-items:center;background:var(--bg);color:var(--ink-soft)}
.stab.is-active .stab__n{background:var(--accent);color:var(--accent-ink)}

.sfacets{display:flex;flex-direction:column;gap:8px;margin:0 0 18px}
.sfacet{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.sfacet__label{font-size:.8rem;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.03em;margin-right:2px}

.schipset{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 16px}
.schipset--genre{margin-top:-4px}
.schipset__label{font-size:.8rem;font-weight:700;color:var(--ink-soft);margin-right:2px}
.schip{display:inline-flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--line);
  border-radius:20px;padding:6px 13px;font-size:.86rem;font-weight:500;color:var(--ink)}
.schip:hover{border-color:var(--accent);color:var(--accent)}
.schip.is-active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.schip--genre{border-style:dashed}
.schip--genre:hover{border-style:solid}
.schip__n{font-size:.72rem;font-weight:700;color:var(--ink-soft)}
.schip.is-active .schip__n{color:var(--accent-ink);opacity:.85}
/* Automatic translation */
.trnote{margin-top:6px}
.trnote>summary{cursor:pointer;list-style:none;display:inline-block;font-size:1rem;line-height:1;opacity:.5}
.trnote>summary:hover{opacity:.9}
.trnote>summary::-webkit-details-marker{display:none}
.trnote>.prose{margin-top:6px;padding-left:10px;border-left:2px solid var(--line)}
.trtest{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.trtest__row{display:flex;align-items:center;gap:8px;font-size:.9rem}
.trtest__txt{color:var(--text)}
.trtest__err{color:#c0392b}

/* ─────────────── Smartphone refinements (mobile audit): bigger tap targets + tidier phone layout ───────────────
   All additive + gated behind mobile widths, so desktop is unchanged. */
@media(max-width:1260px){
  /* Nav search needs ≥16px so iOS doesn't zoom the page in when it's tapped. */
  .nav__search input,.adminnav__search input{font-size:16px}
}
@media(max-width:860px){
  /* Comfortable ~40px+ touch targets for small inline controls. */
  .ilike,.like,.chip,.btn--sm{min-height:40px}
  .ilike,.btn--sm{padding-top:8px;padding-bottom:8px}
  .chip{padding:8px 13px;display:inline-flex;align-items:center;line-height:1}
  .nav__lang a{padding:8px 10px;display:inline-block}
}
@media(max-width:560px){
  /* /admin/ratings period + role filter chips: roomier, easier to switch on a phone. */
  .rt-roles{gap:8px;margin:10px 0 8px}
  .rt-roles + .rt-roles{margin-top:0}
  .rt-roles .chip{padding:9px 15px;font-size:.9rem;min-height:40px}
  /* Points editor tables reflow (stop the whole 4-col form side-scrolling on a phone). */
  .table--slim{min-width:0}
  .table--slim td,.table--slim th{padding:6px 6px}
}
@media(max-width:480px){
  /* Dashboard primary buttons → even 2-column grid of full-width, equal targets. */
  .actions-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}
  .actions-row .btn{width:100%}
  /* Review-nudge: stack its two actions as full-width buttons instead of crowding side-by-side. */
  .dashnudge__actions{width:100%}
  .dashnudge__actions form{flex:1}
  .dashnudge__actions .btn{width:100%;padding:10px 12px}
  /* Promo-reel like: comfortable phone tap target (only the reel like, not on-image gallery likes). */
  .promo__like .ilike{padding:9px 16px;font-size:.9rem}
}
