/* 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);
  /* --navmaxw tracks the page width so the sticky header rail lines up with the content below it
     (it used to be 1260px — wider than the 1120px body — which read as a shifted, wider top row). The
     inline search input became a compact icon (.nav__searchbtn) to free the width the links needed. */
  --maxw:1120px; --navmaxw:var(--maxw); --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} }
/* The sticky header rail shares the page max-width (--navmaxw = --maxw), so the nav edges line up with the
   content below. One row still fits because the search box is now a compact icon (.nav__searchbtn). */
.nav__wrap{max-width:var(--navmaxw);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}
/* flex-wrap:nowrap is the actual fix — it makes a second row (and thus the orphaned Register button that
   hung below the baseline) structurally impossible. min-width:0 lets the menu shrink below its content so
   any overflow is absorbed by the inner .nav__links shrink zone instead of shoving .nav__lang off the rail. */
.nav__menu{display:flex;align-items:center;gap:7px;margin-left:6px;flex:1;flex-wrap:nowrap;min-width:0;justify-content:flex-start}
.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}
/* The 9 primary browse links live in one shrink zone: flex:0 1 auto (never grows, so .nav__sep's margin-left
   :auto keeps the auth cluster pinned hard-right exactly as before, but MAY shrink) + min-width:0. overflow-x
   :clip is a durable safeguard — if content is ever forced over budget (e.g. a browser min-font-size a11y
   setting, or an exotic fallback font), the leftmost links clip here instead of overlapping the auth cluster
   or spawning a horizontal PAGE scrollbar. overflow-y:visible keeps the Portfolio dropdown opening downward. */
.nav__links{display:flex;align-items:center;gap:7px;flex:0 1 auto;min-width:0;overflow-x:clip;overflow-y:visible}
/* 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)}
/* Click-to-reveal contact button (masked until clicked; the real value is fetched server-side). The masked
   value itself is the click target — no visible "show" label — so it underlines on hover to look clickable. */
.reveal{color:var(--ink);cursor:pointer;text-align:left}
.reveal .reveal__mask{letter-spacing:.02em;border-bottom:1px dashed var(--line)}
.reveal:hover .reveal__mask{color:var(--accent);border-bottom-color:var(--accent)}
.reveal .reveal__hint{color:var(--accent);font-size:.85em}
.reveal__val{word-break:break-word}
.reveal__limit{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}
.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;
  background:transparent;border:0;border-radius:10px;color:inherit;font:inherit}
.nav__burger span{width:22px;height:2px;background:var(--ink);border-radius:2px;transition:.2s}
.nav__burger:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* Atvērta izvēlne → ikona kļūst par ✕ (redzams stāvoklis arī bez ekrāna lasītāja). 2 px svītra + 4 px atstarpe = 6 px. */
.nav__burger[aria-expanded="true"] span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.nav__burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav__burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

/* 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}
/* Mobilajā hero atkāpes uz pusi (2026-09-14) — kopā ar kompaktajām .choose flīzēm pirmais portfolio darbs
   sākumlapā ir ~850 px, nevis ~2300 px dziļumā. */
@media(max-width:860px){ .hero__inner{padding:30px 18px 24px} .hero__sub{font-size:1rem} }

/* 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)}
/* Mobilajā (2026-09-14): 12 flīzes pa vienai kolonnā (131 px katra) aizņēma ~1800 px, un pirmais portfolio darbs
   sākumlapā bija ~2300 px zemāk. Kompakta rinda (ikona pa kreisi + nosaukums) divās kolonnās → ~6 rindas × 60 px. */
@media(max-width:860px){
  .choose{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .choose__item{flex-direction:row;justify-content:flex-start;padding:12px;gap:10px;font-size:.92rem;line-height:1.2;min-height:52px;box-shadow:none}
  .choose__item span{min-width:0;overflow-wrap:normal;hyphens:auto}
  .choose__icon{width:26px;height:26px;flex:0 0 26px}
  .choose__item:hover{transform:none}
}
/* Šauri telefoni: vairāk vietas nosaukumam, lai vienvārda nosaukumi ("Photographers", "Uzņēmumi") nelūzt vārda vidū
   (review 2026-09-14: EN 360/375 px → "Photographer/s"). hyphens:auto (html lang) pārnes pareizi, ja tomēr jālauž. */
@media(max-width:400px){
  .choose{gap:8px}
  .choose__item{padding:10px 8px;gap:7px;font-size:.86rem}
  .choose__icon{width:22px;height:22px;flex-basis:22px}
}
/* 320–350 px telefoni: galvenes rinda (logo + meklēšana + izvēlne + LV/EN) bija ~19 px platāka par ekrānu un radīja
   horizontālu ritināšanu visās lapās (bija arī pirms 2026-09-14 izvēlnes pogas maiņas). Mazākas atstarpes/atkāpes. */
@media(max-width:350px){
  .nav__wrap{gap:6px;padding-left:calc(12px + env(safe-area-inset-left));padding-right:calc(12px + env(safe-area-inset-right))}
  .nav__brand{font-size:1rem;gap:6px}
  .nav .nav__lang{margin-left:0;gap:2px}      /* .nav prefikss: jāpārspēj vēlākie ≤1260/≤860 noteikumi faila beigās */
  .nav .nav__lang a{padding:8px 7px}
}

/* 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}
/* "Show more" on the /top liked grids: overflow tiles are hidden until the button adds .is-expanded to the
   grid — at which point this rule stops matching and the tiles revert to their normal .likedtile display
   (no per-tile JS, display-agnostic). CSP-safe: the reveal is a delegated handler on [data-showmore]. */
.likedgrid:not(.is-expanded) .likedtile.is-extra{display:none}
.showmore-wrap{text-align:center;margin:2px 0 12px}
/* /search creators beyond the first 24: a second grid hidden until [data-showmore="sprof-more"] expands it. */
.cards--more{margin-top:var(--gap)}
.cards--more:not(.is-expanded){display:none}
.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;min-width:0;line-height:1.25;overflow-wrap:anywhere}
/* Garš lietotājvārds (2026-09-13): byline bija inline-flex bez min-width → vārds izgāja aiz kartītes malas.
   Tagad byline aizņem kartītes platumu, avatārs nesaraujas, vārds lūst pie _ . - (<wbr> no card_name_html)
   un garajiem burts ir mazliet mazāks, tāpēc pilns vārds vienmēr redzams 1–2 rindās. */
.card__body .byline{display:flex;max-width:100%;min-width:0}
.card__body .byline .avatar{flex-shrink:0}
.card__name--long{font-size:.92em;letter-spacing:-.005em}
.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--narrow{max-width:340px} /* short number/text settings (e.g. alert delay / gap) */
/* "Request already being handled" dead-end page (a deleted job opened from an alert e-mail). */
.jobs-gone{max-width:620px;margin:40px auto;text-align:center}
.jobs-gone__icon{font-size:2.6rem;line-height:1;margin-bottom: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}
/* Grid-blowout aizsargs: grid šūnas noklusējuma min-width:auto neļauj tām kļūt šaurākām par saturu,
   tāpēc plata tabula (piem., /admin/activity anonīmo ienākšanas lapas ar gariem ceļiem) izspieda visu
   karti ārpus konteinera. min-width:0 ļauj šūnai sarukt — iekšējais .table-wrap tad ritinās horizontāli
   savā rāmī, nevis stiepj lapu. */
.grid2>*{min-width:0}
.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)}
/* Studio fork: a sub-choice (3 wide cards, stacked) shown only when "Studija" is picked. */
.rolepick--sub{flex-direction:column;gap:8px;margin:12px 0 4px;padding:12px;border:1px dashed var(--line);border-radius:var(--radius-sm)}
.rolepick--sub legend{font-weight:700;font-size:.9rem;padding:0 4px}
.rolepick__opt--wide{flex:1 1 100%}
.rolepick__opt--wide span{text-align:left;font-weight:600;line-height:1.35}
.rolepick__opt--wide input:checked+span .muted{color:rgba(255,255,255,.8)}
/* Profile editor "I also offer…" — a collapsed extra-roles block; unobtrusive for the single-role majority. */
.alsooffer{margin:14px 0;padding:0;border:1px dashed var(--line);border-radius:var(--radius-sm);background:var(--bg)}
.alsooffer>*{margin-left:14px;margin-right:14px}
.alsooffer__summary{cursor:pointer;padding:12px 14px;margin:0;list-style:none;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}
.alsooffer__summary::-webkit-details-marker{display:none}
.alsooffer__summary::before{content:"＋";margin-right:6px;font-weight:700;color:var(--ink-soft)}
.alsooffer[open] .alsooffer__summary::before{content:"−"}
.alsooffer__title{font-weight:700}
.alsooffer__role{margin-top:10px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface)}
.alsooffer__pick span{line-height:1.35}
.alsooffer__fields{margin-top:10px;padding-left:26px;display:flex;flex-direction:column;gap:8px}
.alsooffer__fields[hidden]{display:none}
.alsooffer-link{margin:12px 0}
/* Phase 5 — "Lomas" (roles) manager + per-role editor role strip */
.editor__roles{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 10px}
.editor__roles a{padding:5px 12px;border:1px solid var(--line);border-radius:999px;font-size:.9rem;line-height:1;color:var(--ink-soft);white-space:nowrap}
.editor__roles a.is-active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.editor__roles-add{border-style:dashed!important;color:var(--accent)!important}
.roles-links{margin-top:12px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface)}
.roles-links__list{list-style:none;margin:8px 0;padding:0;display:flex;flex-direction:column;gap:8px}
.roles-links__list li{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.roles-grid{display:flex;flex-direction:column;gap:10px;margin:10px 0}
.roles-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface)}
.roles-row__edit{display:flex;flex-wrap:wrap;gap:6px}
.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)}
/* Optional "why did you hide your profile?" feedback, shown when a published profile is withdrawn. */
.vis__reason{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.vis__reason .field{margin:0 0 8px}
.wd-reason{font-style:italic}
@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}
/* Info banner — a calm blue note (members-only profile heads-up), distinct from the amber warning. */
.banner--info{background:#eef4ff;border:1px solid #cadef7;color:#1c4e80;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)}
/* "Also offers" catalog links on a multi-role profile (Phase 4) — clickable soft chips into each extra catalog. */
.profile__also{margin:6px 0 0;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.badge--cat{background:#eef0f3;color:var(--ink);text-decoration:none;border:1px solid var(--line)}
.badge--cat:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.badge--perk{background:var(--accent);color:var(--accent-ink)} /* unlocked perk marker (e.g. avatar_hd) */
.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;flex-wrap:wrap}
/* "Sazināties" lēciens uz Kontaktiem — tikai kad sānu josla ir zem visa satura (≤860px); uz datora tā ir blakus. */
.profile__contactjump{display:none}
@media(max-width:860px){ .profile__contactjump{display:inline-flex;order:-1} }  /* pirmā rindā pie jebkuras valodas/pogu skaita */
#kontakti{scroll-margin-top:calc(64px + env(safe-area-inset-top))}
.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,.genrechips{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 20px}
.genrechips{margin-top:-10px}
/* Breathing room between the professionals grid and the crawlable city/genre chips that follow it —
   whichever chip nav comes first after the grid gets a clear gap (the sibling one keeps its tight spacing). */
.cards + .citychips,.cards + .genrechips{margin-top:30px}
.citychips .chip,.genrechips .chip{color:var(--ink);text-decoration:none;transition:background .15s,color .15s}
.citychips .chip:hover,.genrechips .chip:hover{background:#e2e6ea}
.citychips .chip--on,.genrechips .chip--on{background:var(--accent);color:var(--accent-ink)}
/* Admin → Follow: type-filter chips act like links; the count rides inside each chip. */
.followchips{margin:6px 0 4px}
.followchips .chip{color:var(--ink);text-decoration:none;transition:background .15s,color .15s}
.followchips .chip:hover{background:#e2e6ea}
.followchips .chip--on{background:var(--ink);color:#fff}
.chip__n{opacity:.6;font-weight:600;margin-left:2px}
.followchips .chip--on .chip__n{opacity:.8}
/* Synology follower-sync panel (/admin/follow): endpoint + token + rotate. */
.igsync{border:1px solid var(--line,#e5e7eb);border-radius:12px;padding:8px 14px;margin:10px 0 6px;background:var(--card,#fff)}
.igsync>summary{cursor:pointer;font-size:.92rem}
.igsync__body{margin-top:10px;display:flex;flex-direction:column;gap:10px}
.igsync__row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.igsync__label{font-weight:600;font-size:.85rem;min-width:96px}
.igsync__val{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;background:var(--bg,#f6f7f9);
             border-radius:6px;padding:3px 8px;max-width:100%;overflow-x:auto;white-space:nowrap}
.igsync__row form{margin:0}
/* Auto-block: phrase blocklist + IP bans (/admin/reports). */
.sp-add{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:10px 0 14px}
.sp-add input[type=text]{flex:1;min-width:200px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:.9rem}
.sp-table{width:100%}
.sp-phrase{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;word-break:break-all}
.sp-ips>summary{cursor:pointer;font-size:.85rem}
.sp-ips ul{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:3px}
.sp-ips code{font-size:.8rem}
/* Admin → Follow: user cell = avatar beside the name; the Instagram link is the row's call to action. */
.followuser{display:inline-flex;align-items:center;gap:8px}
/* Admin → Pending: the "deciding later" (deferred) list reads quieter than the active queue so the eye
   goes to what still needs a decision. Slightly dimmed + a soft left rule. */
.adminlist--muted .adminrow{opacity:.72;border-left:3px solid var(--line)}
.adminlist--muted .adminrow:hover{opacity:1}
/* Admin → IG attēli: the Instagram post-image generator. Canvases render at full print size (1080×…)
   and are scaled down by CSS; the grid shows one card per style variant. */
.igp-head{margin:6px 0 14px}
.igp-controls{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin:10px 0 4px}
.igp-formats{display:flex;gap:8px}
.igp-formats .chip{display:inline-flex;align-items:center;gap:7px;cursor:pointer;user-select:none}
.igp-formats .chip input{margin:0;accent-color:var(--accent)}
.igp-formats .chip:has(input:checked){background:var(--ink);color:#fff}
.igp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:20px;margin-top:16px}
.igp-card{margin:0;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.igp-card canvas{width:100%;height:auto;border-radius:10px;box-shadow:0 8px 26px rgba(0,0,0,.18)}
.igp-card figcaption{font-size:.82rem;color:var(--muted,#6b7280);font-weight:600}
/* Caption variants (post texts) + the copyable profile link row. Cards wrap pre-formatted Latvian text. */
.igp-link{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 18px}
.igp-link__label{font-weight:600;font-size:.9rem}
.igp-link__url{background:var(--surface,#f4f5f7);border:1px solid var(--line);border-radius:8px;padding:5px 10px;
  font-size:.85rem;word-break:break-all}
.igp-captions{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.igp-cap{border:1px solid var(--line);border-radius:12px;background:var(--surface,#fff);padding:14px 16px;
  display:flex;flex-direction:column;gap:10px}
.igp-cap__head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.igp-cap__text{margin:0;white-space:pre-wrap;word-break:break-word;font-family:inherit;font-size:.88rem;
  line-height:1.5;color:var(--ink);max-height:340px;overflow-y:auto}
/* Stored copies (kept 7 days): same card look, <img> instead of canvas, download + delete side by side. */
.igp-grid--saved{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}
.igp-card img{width:100%;height:auto;border-radius:10px;box-shadow:0 6px 18px rgba(0,0,0,.15);display:block}
.igp-card__row{display:flex;gap:8px;align-items:center}
.igp-card__row form{margin:0}
/* Instagram publishing: connection panel + per-image publish controls (/admin/igpost). */
.igpub-conn{border:1px solid var(--line,#e5e7eb);border-radius:14px;padding:16px 18px;margin:14px 0 24px;background:var(--card,#fff)}
.igpub-conn__ok{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:6px 0}
.igpub-conn__row{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.igpub-conn__row form{margin:0}
.igpub-form{display:flex;flex-direction:column;gap:12px;max-width:560px;margin:8px 0}
.igpub-form .field{margin:0}
.igp-card__pub{display:flex;flex-direction:column;gap:6px;width:100%;margin-top:2px}
.igp-card__pub>form{margin:0}
.igp-postbox{width:100%;border:1px solid var(--line,#e5e7eb);border-radius:10px;padding:6px 8px}
.igp-postbox>summary{cursor:pointer;font-weight:600;font-size:.85rem;list-style:none}
.igp-postbox>summary::-webkit-details-marker{display:none}
.igp-postbox[open]>summary{margin-bottom:8px}
.igp-postbox .field{margin:0 0 8px}
.igp-postbox textarea{width:100%;font:inherit;font-size:.85rem;line-height:1.4;resize:vertical}
.igp-tag{display:flex;align-items:flex-start;gap:6px;font-size:.82rem;margin:0 0 8px;cursor:pointer}
.igp-tag input{margin-top:3px}
/* Video links list (videographers) — copyable video URLs under the profile/IG links. */
.igp-videos{margin:4px 0 18px}
.igp-videos__head{font-weight:700;margin-bottom:6px}
.igp-videos__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.igp-video{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.igp-video__title{font-weight:600;font-size:.85rem}
.igp-video__url{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;color:var(--muted,#6b7280);
                max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:none}
.igp-video__url:hover{text-decoration:underline}
.iglink{display:inline-flex;align-items:center;gap:5px;font-weight:600;text-decoration:none;white-space:nowrap;
        background:#f4ecfb;color:#7a2fb0;border-radius:16px;padding:4px 11px;transition:background .15s}
.iglink:hover{background:#ead6f7}
/* 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}
/* Instagram reels embeds BEZ IG rāmja (2026-09-11): oficiālajam embedam parametru "tikai video" nav,
   tāpēc apgriežam CSS līmenī — rāmis rāda tikai media zonu. IG embed iekšējais izkārtojums (izmērīts):
   galvene 54px (fiksēta), media = platums × 5/4 (reels media kaste ir 4:5), zem tās ~154px pogu bloki
   (fiksēti). Tātad: konteiners 4:5, iframe augstums = 100% + 208px, pabīdīts par -54px. Autora
   atsauce paliek — klikšķināmā saite tekstā virs video. */
.ratio--igclean{position:relative;aspect-ratio:9/16;max-width:min(100%,340px);margin-inline:auto;border-radius:var(--radius);overflow:hidden;background:#000}
/* Apgriežam arī SĀNU melnās joslas (2026-09-11): IG media kaste ir 4:5, bet reels ir 9:16 — video kastē
   stāv pa vidu ar melnām malām (video platums = 45/64 ≈ 70.3% no iframe platuma). Tāpēc rāmis ir 9:16,
   iframe paplašināts līdz 64/45 ≈ 142.23% un nocentrēts (left −21.11%) — redzams tikai pats video.
   Matemātika: media augstums = iframeW·5/4 = (1.4223·C)·1.25 = C·16/9 = rāmja augstums ✓ (C = rāmja
   platums). Galvenes 54px un pogu 208px ir fiksēti iframe px — tāpat kā līdz šim. Retais 4:5 reels
   zaudēs malas — apzināts kompromiss tīra skata labā. */
.ratio--igclean iframe{position:absolute;top:-54px;left:-21.115%;width:142.23%;height:calc(100% + 208px);border:0}
.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}
/* Reports "act & resolve": stacked row → target preview card + a wrapping action bar under each open report. */
.rephead{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.repacts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:2px}
.repacts .inline{margin:0}
.repacts__sep{width:1px;align-self:stretch;min-height:26px;background:var(--line);margin:0 2px}
.rtcard{display:flex;gap:12px;align-items:center;margin-top:8px;padding:9px 11px;border:1px solid var(--line);
  border-radius:var(--radius-sm);background:var(--bg)}
.rtcard--gone{color:var(--ink-soft);font-style:italic}
.rtcard__thumbwrap{position:relative;flex:0 0 auto;line-height:0}
.rtcard__thumb{width:66px;height:66px;border-radius:10px;object-fit:cover;background:var(--line);display:block}
.rtcard__thumb--empty{display:flex;align-items:center;justify-content:center;font-size:1.5rem;line-height:66px}
.rtcard__play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#fff;font-size:1.1rem;
  text-shadow:0 1px 4px rgba(0,0,0,.6);pointer-events:none}
.rtcard__body{display:flex;flex-direction:column;gap:3px;min-width:0}
.rtcard__name{font-weight:600;display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.rtcard__meta{display:flex;flex-wrap:wrap;gap:5px 10px;align-items:center}
.btn--warn{background:#b9821a;color:#fff;border-color:#b9821a}
.btn--warn:hover{background:#9c6f16}
.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}
/* A .table forces min-width:680px so wide, full-width tables scroll on mobile. But small stat tables placed
   INSIDE a .bdgrid cell (~240px) would then force a horizontal scrollbar that clips their number columns.
   In a grid cell the table must fit its cell instead — the columns are short (a label + a few numbers). */
.bdgrid .table{min-width:0}
/* Grid variant for a small number of WIDE cards (e.g. multi-column stat tables): let 1–2 items expand to
   fill instead of staying pinned at the narrow auto-fill track width. */
.bdgrid.bdgrid--wide{grid-template-columns:repeat(auto-fit,minmax(400px,1fr))} /* .bdgrid base is defined later in the file — the double-class keeps this override winning */
/* A single grid CELL that holds a WIDE table (4+ columns, IPs, buttons, paths): span the whole grid row.
   Why: `.bdgrid .table{min-width:0}` lets a table shrink, but cannot make its CONTENT narrower — a 6-column
   table with a monospace IP and a button simply does not fit a ~250px track, so .table-wrap started to
   scroll horizontally and half the columns were hidden while the rest of the row sat empty
   (seen on /admin/logs). Narrow 2–3 column stat tables stay in their cell; wide ones take the full width. */
.bdgrid > .bd--wide{grid-column:1 / -1}

/* ───────── Jaunumu analītika (/admin/news) ───────── */
.nw-form textarea{font-family:inherit;font-size:.92rem;line-height:1.5;min-height:220px;resize:vertical}
.nw-form__row{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end}
.nw-form__row .field{min-width:220px}
.nw-form .check{padding-bottom:8px}
/* Stundu saraksts ir garš (līdz 24 rindas) — divās kolonnās, lai neizstiepj lapu */
.nw-hours{display:grid;grid-template-columns:1fr 1fr;column-gap:14px}
@media(max-width:560px){.nw-hours{grid-template-columns:1fr}}
/* Foruma ieraksti admina detaļu lapā: katrs savā kartītē ar mazāku teksta lauku */
.fs-post{margin-bottom:10px}
.fs-post textarea{min-height:70px}
/* Satura sarakstos: rindas, kas prasa uzmanību (gaidoša ziņa / tēma bez atbildes) — maigi dzeltenas, ne sarkanas */
.table tr.row--soft td{background:#fffaf0}
/* ───────── 18+ pārvaldība (/admin/adult): sīktēlu režģis ar pogu katrā kartītē ───────── */
.adgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin:8px 0 18px}
.adcard{margin:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column}
.adcard--m{border-color:#c0392b}
.adcard__img{position:relative;display:block;aspect-ratio:1/1;background:#111}
.adcard__img img{width:100%;height:100%;object-fit:cover;display:block}
.adcard__tag{position:absolute;top:6px;left:6px;background:#c0392b;color:#fff;font-size:.7rem;font-weight:700;padding:2px 6px;border-radius:4px}
.adcard__tag--v{left:auto;right:6px;background:rgba(0,0,0,.65)}
.adcard figcaption{padding:6px 8px 0;line-height:1.3;overflow:hidden;text-overflow:ellipsis}
.adcard__f{padding:6px 8px 8px;margin-top:auto}
.adcard__f .btn{width:100%}
.adlog__t{width:44px;height:44px;object-fit:cover;border-radius:4px;display:block}
.adsearch{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-bottom:10px}
.adsearch .field{flex:1 1 260px;max-width:420px}
/* Admin sākumlapa: drošības rindiņa (līmenis pēc krāsas) + 7 kolonnu KPI + piltuve */
.secline{border:1px solid var(--line);border-left-width:5px;border-radius:var(--radius);padding:9px 12px;font-size:.88rem;margin:8px 0 14px;background:var(--surface)}
.secline--ok{border-left-color:#1d8a4a}.secline--warn{border-left-color:#c9531f;background:#fff6f0}.secline--crit{border-left-color:#c0392b;background:#fdf3f2}
.statgrid--7{grid-template-columns:repeat(7,1fr)}
@media(max-width:1000px){.statgrid--7{grid-template-columns:repeat(4,1fr)}}
@media(max-width:600px){.statgrid--7{grid-template-columns:repeat(2,1fr)}}
.funnel li{padding:8px 10px;font-size:.92rem}
.funnel .bdlist__bar{background:#e3f1e8}
.quiet{font-size:.88rem;line-height:1.7;margin:6px 0 14px}
.quiet a{white-space:nowrap}
/* Reģistrācija: e-pasta lauks pēc domēna brīdinājuma — izceļam, lai acs nonāk tieši tur */
.field--attn input{border-color:#c9531f;box-shadow:0 0 0 3px rgba(201,83,31,.12)}
.field--attn .field__hint{color:#c9531f}
/* Foruma analītika: "pa dienām" kā kalendāra režģis (7 kolonnas = nedēļa) — 30 rindu saraksta vietā */
.daycal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:8px 0 14px}
.daycal__d{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:6px 4px 5px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:96px}
.daycal__d--today{border-color:var(--accent);background:#fff7f9}
.daycal__d--pad{border-style:dashed;opacity:.35;min-height:0}
.daycal__lbl{font-size:.68rem;color:var(--ink-soft);white-space:nowrap}
.daycal__bar{flex:1;width:60%;max-width:28px;display:flex;align-items:flex-end;min-height:34px}
.daycal__bar span{display:block;width:100%;background:linear-gradient(180deg,var(--accent),#ff8a5c);border-radius:4px 4px 0 0}
/* Salikta josla (kontakti): vairāki veidi viens virs otra — katram sava krāsa (inline), noapaļots tikai augšējais. */
.daycal__bar--stack{flex-direction:column;justify-content:flex-end}
.daycal__bar--stack span{border-radius:0;background:none}
.daycal__bar--stack span:first-child{border-radius:4px 4px 0 0}
.daycal__n{font-weight:700;font-size:.9rem;line-height:1}
.daycal__u{font-size:.66rem;color:var(--ink-soft)}
.daycal__p{font-size:.66rem;color:#1d8a4a;font-weight:600}
@media(max-width:700px){.daycal{grid-template-columns:repeat(5,1fr)}}
.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}
  .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,visibility 0s linear .22s;margin:0;visibility:hidden;
    max-height:calc(100dvh - 54px - env(safe-area-inset-top));overflow-y:auto;-webkit-overflow-scrolling:touch}
  /* visibility:hidden, kad aizvērta: citādi ārpus ekrāna pabīdītās saites paliek Tab secībā un tastatūras lietotājs
     "pazūd" neredzamā izvēlnē. Aizkave .22s ļauj aizvēršanas animācijai pabeigties, atverot — uzreiz. */
  .nav.is-open .nav__menu{transform:none;visibility:visible;transition:transform .22s ease,visibility 0s}
  /* Dissolve the .nav__links wrapper in the burger panel so its 9 links stack as direct column items again
     (the desktop-only wrapper must be a no-op here). display:contents removes its box from layout. */
  .nav__links{display:contents}
  .nav__menu a,.nav__menu .nav__logout{padding:12px 20px;width:100%}
  .nav__menu .nav__inbox,.nav__menu>a,.nav__links>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} }
/* (.choose vairs nesabrūk vienā kolonnā ≤420px — kompaktās rindas der divās kolonnās arī 320 px ekrānā) */

/* ───────── 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;flex-wrap:wrap;justify-content:space-between;gap:2px 10px;font-size:.92rem;border-bottom:1px solid var(--line);padding-bottom:8px}
/* Gara pakalpojuma nosaukuma gadījumā cena PĀRIET UZ JAUNU RINDU un paliek pie labās malas — nevis tiek
   lauzta pa vārdiem ("no / 50 / EUR", kā gadījās ar "Dienas/Vakara/Photoshoot/Liftinga", 2026-09-13).
   min-width:0 ļauj nosaukumam sarukt (flex noklusējums to neļauj), anywhere lauž arī garus vārdus bez
   atstarpēm ("iekļauts-makeup,hair,video,foto"); nowrap tur cenu vienā gabalā. */
.pricelist li>span{flex:1 1 auto;min-width:0;overflow-wrap:break-word}
.pricelist li>strong{white-space:nowrap;margin-left:auto}
.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}
/* Single-post image: fit WITHIN the column and the height cap, but NEVER upscale a smaller image beyond its
   own size (max-width instead of width:100%; no object-fit crop — show the picture as it actually is). */
.fpost__img{margin-top:10px;border-radius:var(--radius-sm);max-width:100%;max-height:520px;height:auto}
/* 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}
.avatar--xl{width:176px;height:176px} /* avatar_hd perk (300 pts): larger profile hero */
.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: compact nav icon (opens /search, whose input autofocuses) + results bar */
.nav__searchbtn{flex:none;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;
  border:1px solid var(--line);border-radius:50%;color:var(--ink-soft);background:var(--bg)}
.nav__searchbtn:hover{color:var(--ink);border-color:var(--ink);background:var(--surface);text-decoration:none}
.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)}
/* Search form: the bar plus the "where to search" scope checkboxes below it. */
.searchform .searchbar{margin:0 0 12px}
.searchform{margin:0 0 22px}
.searchscope{display:flex;align-items:center;flex-wrap:wrap;gap:8px;border:0;padding:0;margin:0}
.searchscope__label{font-size:.8rem;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.03em;padding:0;margin-right:2px}
/* Each scope option is a pill; ticking it fills the pill so the active scope reads at a glance. */
.scopechip{display:inline-flex;align-items:center;gap:7px;background:var(--surface);border:1px solid var(--line);
  border-radius:20px;padding:6px 13px;font-size:.86rem;font-weight:500;color:var(--ink);cursor:pointer;user-select:none}
.scopechip:hover{border-color:var(--accent)}
.scopechip input{margin:0;accent-color:var(--accent)}
/* Checked (in-scope) stays plain white so it doesn't shout; UNchecked (excluded) dims to ~50% opacity so
   the active scope reads by contrast. The native checkbox tick still shows the on/off state either way. */
.scopechip:not(:has(input:checked)){opacity:.5}
/* Compact per-section result-count summary (informational, not clickable). */
.scount{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:18px 0 16px}
.scount__all,.scount__k{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:20px;
  font-weight:600;font-size:.86rem;color:var(--ink-soft);background:var(--surface);border:1px solid var(--line)}
.scount__all{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}
/* Members-only hidden card: a stronger headline message + hint + the log-in / register call-to-action. */
.privprofile--members .privprofile__msg{font-size:1.12rem;font-weight:600;color:var(--ink)}
.privprofile__hint{max-width:40ch;margin:10px auto 0;line-height:1.5;font-size:.9rem}
.privprofile__cta{margin-top:22px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
/* "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)}
/* Tumšajā .dashcta blokā "ghost" poga mantoja color:var(--ink) — melns teksts uz melna fona, t.i. poga
   izskatījās tukša (redzams /admin/files "Aizslēgt tagad"). Gaišie varianti (--warn/--soft) ir izņēmums. */
.dashcta:not(.dashcta--warn):not(.dashcta--soft) .btn--ghost{color:#fff;border-color:rgba(255,255,255,.55)}
.dashcta:not(.dashcta--warn):not(.dashcta--soft) .btn--ghost:hover{border-color:#fff;background:rgba(255,255,255,.14)}
.dashcta--warn{background:#fff6f0;color:var(--ink);border:1px solid #e2b8b2}
/* "Remind me later": a pill button (matches the editor tabs) that opens a small dropdown of day options.
   Used beside the editor tabs and inside the admin user-info card. */
.remindbox{position:relative;display:inline-block}
.remindbox__sum{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:6px;
  padding:7px 16px;border:1px solid var(--line);border-radius:20px;font-weight:600;font-size:.92rem;
  color:var(--ink-soft);background:var(--surface);white-space:nowrap}
.remindbox__sum::-webkit-details-marker{display:none}
.remindbox__sum:hover,.remindbox[open] .remindbox__sum{border-color:var(--accent);color:var(--accent)}
.remindbox__body{position:absolute;z-index:30;top:calc(100% + 6px);left:0;min-width:240px;max-width:320px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:0 8px 24px rgba(0,0,0,.14);padding:12px 14px}
.remindbox__active{color:var(--accent);font-weight:600}
.remindbox__opts{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.remindbox__opts form{margin:0}
.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}
/* Community block: three mini-lists (forum / classifieds / news) of the latest public content. */
.dashcommunity{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:20px}
@media (max-width:760px){.dashcommunity{grid-template-columns:1fr}}
.commcol{border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px;background:var(--surface);min-width:0}
.commcol__head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font-weight:650}
.commrow{display:flex;align-items:center;gap:8px;padding:6px 0;color:var(--ink);border-top:1px solid var(--line)}
.commrow:hover{text-decoration:none;color:var(--accent)}
.commrow__t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9rem}
/* “Kopienā šobrīd” — bloks ar jauniem, neredzētiem ierakstiem ir pamanāmāks: akcenta rāmis + josla, gaišs fons,
   “● N jauni” nozīmīte; jaunās rindas treknas ar punktu priekšā. Sk. community_mark_new() (1 → 24 h, ≥2 → 1 h). */
.commcol--new{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent),0 2px 10px rgba(233,69,107,.10);background:#fff7f9}
.commnew{display:inline-block;margin-left:6px;font-size:.68rem;font-weight:700;color:#fff;background:var(--accent);border-radius:10px;padding:1px 7px;vertical-align:middle;letter-spacing:.01em}
.commrow--new .commrow__t{font-weight:700;color:var(--ink)}
.commrow--new .commrow__t::before{content:'●';color:var(--accent);font-size:.6rem;margin-right:6px;vertical-align:middle}
/* /admin/features: mini josla zem funkcijas nosaukuma (relatīvi pret lielāko) + “+N” detaļas TOP kolonnā */
.fu-bar{height:4px;background:var(--line);border-radius:2px;margin-top:4px;max-width:180px;overflow:hidden}
.fu-bar span{display:block;height:100%;background:var(--accent);border-radius:2px}
.fu-more{display:inline-block;margin-left:4px}
.fu-more summary{cursor:pointer;font-size:.8rem}
.fu-more div{margin-top:2px}
/* /stats konkurences ieskats: reizinātājs pret mediānu pie skaitļa */
.cmp-ratio{font-size:.7rem;font-weight:600;vertical-align:middle;margin-left:4px}
.cmpgrid .stat .small{display:block;line-height:1.3}
/* Dashboard “Uzaicini kolēģi”: saite + e-pasta forma blakus */
.refbox{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:8px}
.refbox__row{display:flex;gap:6px;margin-top:4px}
.refbox__row input{flex:1;font-size:12px;min-width:0}
.refbox__form{gap:6px}
@media(max-width:720px){.refbox{grid-template-columns:1fr}}
/* /statspro: dienu sīkā josla zem nedēļu grafika, siltumkarte, piltuve */
.spdays{display:flex;align-items:flex-end;gap:1px;height:34px;margin:6px 0 2px}
.spdays__d{flex:1;background:var(--accent);opacity:.75;border-radius:1px 1px 0 0;min-width:1px}
.spgrid td{text-align:center;min-width:34px}
.spfunnel .bdlist__bar{background:rgba(29,138,74,.25)}
/* ── Job requests board ── */
.jobs__head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:8px}
.jobs__filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;align-items:end;margin:8px 0 12px}
.jobs__filterbtns{display:flex;gap:8px}
.jobs__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.jobcard{display:flex;flex-direction:column;gap:6px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink)}
.jobcard:hover{border-color:var(--ink);text-decoration:none}
.jobcard__top{display:flex;gap:6px;flex-wrap:wrap}
/* Compensation marks (paid / unpaid / collaboration) — coloured badges on the board + detail, and the
   owner/admin edit row on the detail page. Light/dark friendly via colour-mix on the accent. */
.jpay{border:0;font-weight:600}
.jpay--paid{background:color-mix(in srgb,#1f9d5b 16%,transparent);color:#1f7a4d}
.jpay--unpaid{background:color-mix(in srgb,#d64054 16%,transparent);color:#b23a4e}
.jpay--collab{background:color-mix(in srgb,#5a4fe0 16%,transparent);color:#4a3fbf}
@media (prefers-color-scheme:dark){.jpay--paid{color:#57d693}.jpay--unpaid{color:#f2899a}.jpay--collab{color:#a99cff}}
.jobs__pay{margin:2px 0 4px}
.jobs__paybtns{display:flex;flex-wrap:wrap;gap:14px;margin-top:6px}
.job__payedit{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:12px 0}
.job__payedit .check{margin:0}
.jobcard__title{font-size:1.05rem;margin:2px 0;line-height:1.25}
.jobcard__excerpt{color:var(--ink-soft);font-size:.9rem;flex:1}
.jobcard__foot,.jobcard__stats{display:flex;justify-content:space-between;gap:10px}
.jobcard__stats{gap:14px;justify-content:flex-start;border-top:1px solid var(--line);padding-top:8px;margin-top:2px}
.jobs__empty{text-align:center;padding:28px}
.jobs--detail{max-width:760px}
.jobs__back{display:inline-block;margin-bottom:10px}
.job__facts{display:flex;gap:14px;flex-wrap:wrap;margin:4px 0 6px;font-weight:600}
.job__poster{margin:0 0 12px}
.job__details{white-space:pre-wrap;margin-bottom:16px}
.job__actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:14px}
.job__manage{display:flex;gap:8px;margin-top:12px}
.jobs__contact{border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px;margin:6px 0}
.jobs__contact legend{font-weight:650;padding:0 6px}
.job__done{font-weight:600;color:#176c3a}
.jobapp,.jobcomment{border-top:1px solid var(--line);padding:12px 0}
.jobapp:first-of-type,.jobcomment:first-of-type{border-top:0}
.jobapp__who,.jobcomment__who{margin:0 0 4px;font-weight:600}
.jobapp__msg,.jobcomment__body{white-space:pre-wrap}
.jobcomment__form{margin-top:14px}
/* 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)}
/* Collapsible variant (add-photo/video forms): the team block is a closed <details>; the summary looks like
   the legend and gets a ▸/▾ caret. Matches the "perks"/"invite reviews" collapsibles elsewhere. */
.creditbox>summary{list-style:none;cursor:pointer;font-size:.85rem;font-weight:700;color:var(--ink-soft);user-select:none}
.creditbox>summary::-webkit-details-marker{display:none}
.creditbox>summary::before{content:"▸ ";display:inline-block;color:var(--accent);font-weight:700}
.creditbox[open]>summary::before{content:"▾ "}
.creditbox:not([open]){padding-bottom:8px}
.creditbox[open]>summary{margin-bottom:6px}
/* .creditset__grid sets display:grid, which would override the browser's default "hide children of a closed
   <details>" — so hide the body explicitly while collapsed. */
.creditbox:not([open]) > *:not(summary){display:none}
.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 — dragging starts only from the ⠿ handle (JS arms the tile on handle press). */
.edititems[data-reorder] .edititem[draggable="true"]{cursor:grabbing}
.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;touch-action:none}
.tile__drag:active{cursor:grabbing}
.edititems[data-reorder] .tile__drag{display:block}
/* Deleting a photo: the tile fades + shrinks in place (JS removes it after the transition). */
.edititem--removing{opacity:0;transform:scale(.92);transition:opacity .2s ease,transform .2s ease;pointer-events:none}
.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}
/* Empty-portfolio nudge: the Portfolio tab becomes a filled accent call-to-action with a soft pulse, so a
   creator on the Profile tab clearly sees where to add their first photos. */
/* Small helper text under a form field (e.g. the username format rule). */
.field__hint{display:block;margin-top:5px;line-height:1.4}
.editor__tabs a.editor__tab--cta{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);
  display:inline-flex;align-items:center;gap:7px;animation:pfCtaPulse 1.8s ease-in-out infinite}
.editor__tabs a.editor__tab--cta:hover{color:var(--accent-ink);filter:brightness(1.05)}
.editor__tab-badge{font-weight:700;font-size:.82rem;background:rgba(255,255,255,.22);border-radius:12px;padding:1px 9px;white-space:nowrap}
@keyframes pfCtaPulse{0%,100%{box-shadow:0 0 0 0 rgba(233,69,107,.45)}50%{box-shadow:0 0 0 6px rgba(233,69,107,0)}}
@media (prefers-reduced-motion:reduce){.editor__tabs a.editor__tab--cta{animation:none}}
/* "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}
/* Avatar HD crop widget (avatar_hd perk): file picker → square pan/zoom stage → canvas export on submit. */
.cropper{margin-top:8px}
.cropper__stage{margin-top:10px;max-width:240px}
.cropper__frame{position:relative;width:220px;height:220px;border-radius:50%;overflow:hidden;background:#e7eaee;
  touch-action:none;cursor:grab;box-shadow:0 0 0 3px var(--accent)}
.cropper__frame:active{cursor:grabbing}
.cropper__img{position:absolute;top:0;left:0;max-width:none;user-select:none;-webkit-user-drag:none;pointer-events:none}
.cropper__zoom{display:flex;align-items:center;gap:8px;margin-top:10px}
.cropper__zoom input[type=range]{flex:1}
.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}
/* Rejection-reason macro dropdown (sits inside a reject form's action cluster) + its manager add-row. */
.macrosel{max-width:190px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:.82rem;
  color:var(--ink-soft);background:var(--surface)}
.macro-add{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:10px 0 14px}
.macro-add input[type=text]{flex:1;min-width:220px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:.9rem}
.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)}
/* Per-bar count label (shown only with the Advanced-stats perk) */
.bar__n{font-size:.66rem;font-weight:700;color:var(--ink-soft);font-variant-numeric:tabular-nums;line-height:1}
/* Advanced-stats gating: locked KPI tiles + the "unlock at 200 pts" teaser */
.stat--locked .stat__n{opacity:.55;filter:grayscale(1)}
.statgrid--5{grid-template-columns:repeat(5,1fr)}
.statlock{border-color:var(--accent);text-align:center}
@media(max-width:860px){ .statgrid--5{grid-template-columns:repeat(3,1fr)} }
@media(max-width:560px){ .statgrid--5{grid-template-columns:repeat(2,1fr)} }

/* 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)}
/* Admin sākumlapas 7 dienu grafiks: divas joslas vienā kolonnā (skatījumi + unikālie), augstāks par stundu grafiku */
.chart--home{height:130px;gap:10px}
.chart--home .chart__v{font-size:.68rem}
.chart__pair{display:flex;align-items:flex-end;gap:2px;height:100%;width:100%;max-width:56px;justify-content:center}
.chart__pair .chart__bar{width:45%;max-width:26px}
.chart__bar--u{background:linear-gradient(180deg,#9aa3ad,#c7cdd3)}
/* Unique-per-day chart uses a cooler colour so it reads as a different metric from page views */
.chart--uniq{height:170px}
/* Kontaktu grafiks (/admin/contacts): augstāks, joslas saliktas no trīs veidiem (flex proporcijā pēc skaita);
   šodienas kolonnai fons. Krāsas inline (sakrīt ar leģendu): e-pasts zils, telefons zaļš, mājaslapa dzeltena. */
.chart--clog{height:200px;gap:3px}
.chart--clog .chart__v{font-size:.62rem}
.chart__stack{display:flex;flex-direction:column;width:100%;max-width:30px;border-radius:5px 5px 0 0;overflow:hidden;min-height:1px}
.chart__stack span{display:block;width:100%;min-height:2px}
.chart__col--today{background:rgba(233,69,107,.06);border-radius:6px 6px 0 0}
/* Anonīmi/reģistrēti procentu josla */
.splitbar{display:flex;height:14px;border-radius:7px;overflow:hidden;background:var(--line)}
.splitbar__a{background:#9aa0a6}
.splitbar__r{background:var(--accent)}
/* Admin tiesību forma (partial admin_caps_form): grupas kā atveramas <details>, lapas zem tām divās kolonnās. */
.capgroups{margin-top:6px;display:flex;flex-direction:column;gap:4px}
.capgroup{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);padding:4px 10px}
.capgroup>summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none}
.capgroup>summary::-webkit-details-marker{display:none}
.capgroup>summary::after{content:'▾';margin-left:auto;color:var(--ink-soft);font-size:.8rem}
.capgroup[open]>summary::after{content:'▴'}
.capgroup__pages{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:2px 14px;padding:6px 0 6px 26px}
.check--inline{margin:0;font-size:.9rem}
.check--inline input:disabled+span{opacity:.45}
.admincaps.is-off{opacity:.45;pointer-events:none}
/* /admin/admins: tiesību rediģēšanas rinda paslēpta, līdz noklikšķina “Tiesības” (CSS :target, bez JS). */
.adm-editrow{display:none}
.adm-editrow:target{display:table-row}
.adm-editrow td{background:var(--surface)}
/* /admin/deleted: darba kartīte bez bildes (fails nav saglabāts) */
.adcard__img--none{display:flex;align-items:center;justify-content:center;background:var(--line);color:var(--ink-soft);font-size:1.4rem;aspect-ratio:1}
/* Ziņas rediģēšana: attēla bloks (pašreizējais sīktēls + noņemt + jauns fails) */
.feededit__img{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0 8px}
.feededit__img img{width:72px;height:72px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.feededit__img label{margin:0}
/* /settings — sadaļu kartītes: katra sadaļa atsevišķi, vienots atstatums; pogai sava rinda ar atstarpi.
   Agrāk vienā garā formā h2 virsraksti stāvēja cieši zem “Saglabāt” bez atstarpes. */
.settings>.page-title{margin-bottom:6px}
.settings>.muted{margin-bottom:18px}
.settings .form{gap:16px;margin-bottom:16px}
.settings .form>.setcard{margin-bottom:0}
.settings .setcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;margin-bottom:16px;display:flex;flex-direction:column;gap:10px}
.settings form.setcard{margin-top:0}
.settings .setcard .block__title{margin:0 0 2px;font-size:1.02rem}
.settings .setcard .check{margin:0}
.settings .setcard__hint{margin:-4px 0 4px 26px}
.settings .setcard__actions{display:flex;justify-content:flex-start;padding:0}
.settings .card-box{margin:4px 0 0}
.settings details.card-box{margin-bottom:16px}
.settings details.dangerzone{margin-top:4px}
.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)}
/* Weekly active-member trend: WAU bar with a "new" segment overlaid on a "returning" ground */
.retweek{list-style:none;margin:.25rem 0 0;padding:0;display:flex;flex-direction:column;gap:4px}
.retweek li{display:flex;align-items:center;gap:10px;font-size:.85rem}
.retweek__k{flex:0 0 92px;font-variant-numeric:tabular-nums;color:var(--ink-soft);white-space:nowrap}
.retweek__bar{flex:1 1 auto;height:14px;min-width:2px;border-radius:4px;background:var(--accent,#2f6f7d);position:relative;overflow:hidden;max-width:100%}
.retweek__new{position:absolute;left:0;top:0;bottom:0;background:#e6a417;border-radius:4px 0 0 4px}
.retweek__v{flex:0 0 auto;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.retweek__key{display:inline-block;width:10px;height:10px;border-radius:2px;vertical-align:middle;margin-right:3px}
.retweek__key--new{background:#e6a417}
.retweek__key--ret{background:var(--accent,#2f6f7d)}
.table tr.ret-lurker td{background:rgba(120,120,130,.08);color:var(--ink-soft)}
/* Anti-abuse admin panel: toggle rows + compact number fields */
.ab-row{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:flex-end;margin:6px 0 4px}
.ab-tog{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:.9rem}
.ab-tog input[type=checkbox]{width:18px;height:18px}
.ab-num{max-width:230px}
.ab-num input{width:100%}
.table tr.row--warn td{background:rgba(233,69,107,.10)}
/* Neutral row highlight — "this is the selected item", NOT a warning. row--warn above is pink/red and must
   stay reserved for actual problems, otherwise a healthy page reads as an alarm (/admin/sql, 2026-08). */
.table tr.is-sel td{background:rgba(127,127,127,.10)}
/* Kampaņu saraksts (/admin/marketing): rindas fons pēc stāvokļa, ar krāsainu joslu kreisajā malā.
   Fons ir apzināti bāls — tabula joprojām jālasa; josla ir tā, kas ļauj skenēt sarakstu ar acīm.
   Krāsa NEKAD nav vienīgā pazīme: statusa kolonnā ir arī punkts (🟢/🟡/⚪️/🔴) un vārds. */
.table tr.crow--run td{background:rgba(29,138,74,.09)}
.table tr.crow--run td:first-child{box-shadow:inset 3px 0 0 #1d8a4a}
.table tr.crow--draft td{background:rgba(214,158,46,.11)}
.table tr.crow--draft td:first-child{box-shadow:inset 3px 0 0 #d69e2e}
.table tr.crow--done td{background:rgba(127,127,127,.07)}
.table tr.crow--done td:first-child{box-shadow:inset 3px 0 0 #9aa0a6}
.table tr.crow--done td strong{font-weight:600;color:var(--ink-soft)}
.table tr.crow--paused td{background:rgba(233,69,107,.09)}
.table tr.crow--paused td:first-child{box-shadow:inset 3px 0 0 #e9456b}
/* Green stat card for a verified-good state (integrity ok). stat--points is brand pink = "noteworthy",
   which looked like a failure on a healthy database. */
.stat--good{background:#f2faf5;border-color:#1d8a4a}
.stat--good .stat__n{color:#1d8a4a}

/* ───────── Drošības apkopojums (/admin/secsum) ─────────
   Trauksmju saraksts: viena rinda = viens brīdinājums. Krāsu josla pa kreisi kodē bīstamību, lai
   admins to nolasa pirms teksta izlasīšanas. Rindas ir pilna platuma — NEVIS režģa šūnās, jo šeit
   teksts ir garš un šaurā kolonnā kļūtu nesalasāms. */
.ssalerts{list-style:none;margin:10px 0 18px;padding:0;display:flex;flex-direction:column;gap:8px}
.ssalert{display:flex;align-items:flex-start;gap:10px;padding:11px 14px;border:1px solid var(--line);
  border-left-width:5px;border-radius:var(--radius);background:var(--surface);font-size:.9rem}
.ssalert__i{flex:0 0 auto;line-height:1.35}
.ssalert__t{flex:1;line-height:1.4}
.ssalert__a{flex:0 0 auto;white-space:nowrap}
.ssalert--crit{border-left-color:#c0392b;background:#fdf3f2}
.ssalert--warn{border-left-color:#c9531f;background:#fff6f0}
.ssalert--info{border-left-color:#b9821a;background:#fffaf0}
/* “viss tīrs” un “nav atrasts” pozitīvās atbildes — zaļas, lai tukšums nelīdzinās kļūdai */
.ssok{background:#f2faf5;border:1px solid #1d8a4a;border-radius:var(--radius);
  padding:11px 14px;margin:10px 0 18px;font-size:.9rem;color:#1d6b3d}
@media(max-width:620px){
  .ssalert{flex-wrap:wrap}
  .ssalert__a{width:100%;text-align:right}
}

/* ───────── 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}
/* Link history: url + date + re-check, kept for re-submitting later. */
.vc-hist-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.vc-hist{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.vc-hist__row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid var(--line);border-radius:8px;padding:6px 10px}
.vc-hist__date{white-space:nowrap;font-variant-numeric:tabular-nums}
.vc-hist__url{flex:1;min-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
              font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem}
.vc-hist__act{margin:0}
.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}
/* Extra statgrid densities (used inside .repsplit's summary column). */
.statgrid--2{grid-template-columns:repeat(2,1fr)}
.statgrid--3{grid-template-columns:repeat(3,1fr)}
.statgrid--4{grid-template-columns:repeat(4,1fr)}
@media(max-width:860px){.statgrid--4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.statgrid--2,.statgrid--3{grid-template-columns:repeat(2,1fr)}}
/* Dense key-value grid — replaces the summary page's wide, gap-prone .repsum tables. Each number is a small
   self-contained bordered chip (label over value) that auto-fills the row, so a section's numbers pack
   tightly. Cells are individually bordered with a gap (NOT a single background-filled box), so a partly-full
   last row simply ends against the page background — no grey empty tracks. Big .stat tiles stay for the
   headline KPI rows; .kvgrid is the compact per-section variant. */
.kvgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin:6px 0 4px}
.kvcell{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px 12px;display:flex;flex-direction:column;gap:2px;min-width:0}
.kvcell__l{font-size:.72rem;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kvcell__v{font-size:1.05rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.2}
/* Two-column "numbers | detail card" split: a section's summary beside its breakdown card, so a lone card
   never floats next to an empty void. Stacks to one column on narrow screens; the summary column is a touch
   wider than the card. .repsplit--even splits 50/50 (two equal cards, e.g. the top-10 pair). */
.repsplit{display:grid;grid-template-columns:1fr;gap:14px;align-items:start;margin:6px 0 4px}
.repsplit > .kvgrid,.repsplit > .statgrid,.repsplit > .repcard,.repsplit > .repstack{margin:0}
.repstack{display:flex;flex-direction:column;gap:12px;min-width:0}
.repstack > .repcard{margin:0}
@media(min-width:860px){
  .repsplit{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}
  .repsplit--even{grid-template-columns:1fr 1fr}
}
/* auto-FIT (not auto-fill): collapse empty tracks so 1–2 breakdown cards stretch to fill the row instead of
   leaving big blank space on the right (a full row of many cards behaves identically to before). */
.repgrid{display:grid;grid-template-columns:repeat(auto-fit,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}
/* Rows may wrap to 2+ lines when a label is long (referrer URLs, long @usernames); vertical-align:top
   keeps the right-aligned count on the first line instead of floating in the middle of the wrapped label. */
.reptab td{padding:3px 0;border-bottom:1px solid var(--line);vertical-align:top}
/* Referrer URLs and long usernames have no natural break points. Under table-layout:auto that forces the
   label column wider than the card, which pushed the right-aligned count off the edge (clipped) or made the
   row grow so the count overlapped the wrapped text. overflow-wrap:anywhere lets these labels break, so the
   count column always keeps its space. Applies to every .reptab (summary top-10 + all breakdown cards). */
.reptab td:first-child{overflow-wrap:anywhere;word-break:break-word}
/* The count itself must never wrap, and a small gap keeps its digits clear of the label. */
.reptab td:last-child{text-align:right;font-weight:700;white-space:nowrap;padding-left:10px}
.reptab tr:last-child td{border-bottom:none}

/* ── Trends dashboard (/admin/trends) ─────────────────────────────────────────
   Cross-month charts built from the stored monthly summaries. Inline SVG sparklines + inline-style bars only
   (CSP allows inline style="", never inline <script>). Colours use var() with literal fallbacks so a missing
   theme token still renders sensibly in both light and dark. */
.spark{display:inline-block;vertical-align:middle}
.spark--up{color:var(--ok,#1d8a4a)}
.spark--down{color:var(--accent,#c0392b)}
.spark--flat{color:var(--ink-soft,#8a8f98)}
/* 100%-stacked composition bar (share-shift over months). */
.stackbar{display:flex;height:16px;border-radius:5px;overflow:hidden;background:var(--line);min-width:0}
.stackbar__seg{display:block;height:100%}
.stackbar--empty{opacity:.4}
.tstack{display:flex;flex-direction:column;gap:5px;margin:6px 0 2px}
.tstack__row{display:grid;grid-template-columns:74px 1fr;gap:10px;align-items:center;font-size:.82rem}
.tstack__row .tstack__p{color:var(--ink-soft);white-space:nowrap;font-variant-numeric:tabular-nums}
.tlegend{display:flex;flex-wrap:wrap;gap:8px 14px;margin:2px 0 8px;font-size:.8rem;color:var(--ink-soft)}
.tlegend span{display:inline-flex;align-items:center;gap:5px}
.tlegend .dot{width:10px;height:10px;border-radius:2px;display:inline-block;flex:0 0 auto}
/* Small-multiples grid: one mini bar-chart per metric. */
.tgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin:8px 0 4px}
.tcard{border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;background:var(--surface)}
.tcard__h{font-size:.8rem;color:var(--ink-soft);margin:0 0 3px}
.tcard__top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.tcard__n{font-size:1.18rem;font-weight:700;font-variant-numeric:tabular-nums}
/* Mini bar chart: fixed height so the %-height bars resolve (a %-height bar under an auto-height parent
   collapses to min-height — the frame MUST have a definite height). */
.tmini{display:flex;align-items:flex-end;gap:3px;height:46px;margin-top:7px}
.tmini__col{flex:1;min-width:3px;display:flex;align-items:flex-end;height:100%}
.tmini__bar{width:100%;border-radius:2px 2px 0 0;background:var(--accent);min-height:2px}
/* Provisional current month (month-to-date): hatched + faded so it never reads as a finished bar. */
.tmini__bar--mtd{opacity:.55;background:repeating-linear-gradient(45deg,var(--accent),var(--accent) 3px,transparent 3px,transparent 6px)}
.tcard__foot{display:flex;justify-content:space-between;align-items:center;margin-top:6px;font-size:.76rem;color:var(--ink-soft)}
/* Small pill badges (record / streak). */
.tbadge{display:inline-block;font-size:.72rem;padding:1px 7px;border-radius:10px;font-weight:600;white-space:nowrap}
.tbadge--rec{background:rgba(230,164,24,.16);color:#b9821a}
.tbadge--streak{background:rgba(29,138,74,.14);color:#1d8a4a}
.tbadge--low{background:rgba(201,83,31,.14);color:#c0392b}
.mtd-tag{font-size:.7rem;font-weight:600;color:var(--ink-soft);border:1px dashed var(--line);border-radius:6px;padding:0 5px;vertical-align:middle}

/* ── 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. */
  .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}
}

/* Forum "Slēptais forums" (registered-only): the locked teaser card for guests + the muted lock note. */
.forum-locked{text-align:center;padding:34px 22px;max-width:560px;margin:16px auto}
.forum-locked__icon{font-size:2.6rem;line-height:1;margin-bottom:6px}
.forum-locked__lead{font-size:1.05rem;font-weight:600;margin:6px 0 8px}
.forum-locked__cta{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:18px}
.ftmain--locked .ftmain__title a{opacity:.92}
.ftmain__locked{margin:2px 0 4px}

/* Forum index: subtopic "chips" for the still-empty hidden forum, so it's clearly present + clickable. */
.ftchips{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 6px}
.ftchip{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border:1px solid var(--line);border-radius:16px;
  font-size:.86rem;color:var(--ink);text-decoration:none;background:var(--surface);transition:border-color .15s,color .15s}
.ftchip:hover{border-color:var(--accent);color:var(--accent)}
.ftchip__n{font-weight:700;font-size:.78rem;background:var(--accent);color:var(--accent-ink);border-radius:10px;padding:0 7px;min-width:18px;text-align:center}
/* Compact "recent threads" list under each main's chips (front-page discovery). */
.ftrecent{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:2px}
.ftrecent .ftthread{display:flex;justify-content:space-between;gap:10px;align-items:baseline;padding:3px 0}
.ftrecent .ftthread__title{text-decoration:none;color:var(--ink);font-weight:500}
.ftrecent .ftthread__title:hover{color:var(--accent)}

/* Admin → Follow: follower-count cell — small manual-entry number field + save + auto-refresh (🔄). */
.igfoll{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.igfoll__form{display:inline-flex;align-items:center;gap:4px;margin:0}
.igfoll__n{width:74px;padding:4px 8px;border:1px solid var(--line);border-radius:8px;font-size:.86rem;text-align:right}
.igfoll__auto{margin:0}
.igfoll__at{order:3;white-space:nowrap}
.igfoll__count{font-weight:700;font-variant-numeric:tabular-nums;min-width:52px;text-align:right}
/* Sortable table header link (/admin/follow followers column). */
.thsort{text-decoration:none;color:inherit;white-space:nowrap}
.thsort:hover{text-decoration:underline}
.thsort--on{color:var(--accent,#7a2fb0)}

/* ── Admin → E-mail log (/admin/maillog) ───────────────────────────────────────────────────────────── */
/* Rendered preview: an INERT sandboxed iframe (no scripts, no origin) showing the mail as the recipient
   saw it. White background on purpose — e-mails are designed for a light client, so a dark admin theme
   must not restyle them. Fixed height + its own scrollbar keeps long mails from stretching the table. */
.ml-preview{width:100%;height:480px;background:#fff;border:1px solid var(--line);border-radius:8px;margin:6px 0}
/* The body SOURCE (escaped) stays available under a nested details. It can be long, so it
   scrolls in its own box rather than stretching the page, and wraps so no line forces a horizontal
   scrollbar onto the whole table. */
.ml-body{max-height:340px;overflow:auto;white-space:pre-wrap;word-break:break-word;
  background:var(--bg-soft,#f6f6f7);border:1px solid var(--line);border-radius:6px;
  padding:10px;font-size:.76rem;line-height:1.45;margin:6px 0 0}
.ml-detail summary{cursor:pointer;padding:2px 0}
.ml-detail[open] summary{margin-bottom:4px}
/* A wide log table must scroll inside itself, not push the layout sideways. */
.tbl--wide{width:100%;border-collapse:collapse}
.tbl--wide td,.tbl--wide th{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top;text-align:left}
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.filters input[type=search]{flex:1 1 240px;min-width:0}

/* ── Admin → Role usage (/admin/roles) ─────────────────────────────────────────────────────────────── */
.rgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:14px 0}
@media(max-width:720px){.rgrid{grid-template-columns:1fr}}
/* Horizontal share bar for the activation / logical / eligibility breakdowns. */
.rbar{display:inline-block;width:100%;height:9px;border-radius:5px;background:var(--line);overflow:hidden;vertical-align:middle}
.rbar__fill{display:block;height:100%;background:var(--accent);border-radius:5px}
.rbar--alt .rbar__fill{background:#2f80c9}
/* One extra-role/link context inside the "who uses roles" table cell. */
.rctx{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:5px 0;border-top:1px solid var(--line)}
.rctx:first-child{border-top:0}
.rctx--logical{background:#eef4ff;color:#1c4e80}
.rctx--empty{color:#c9531f}

/* IG video generator — the motion/real-footage clips share the .igp-card grid; a <video> fills the card
   like the still <img> does, and the on-demand generator block has a little breathing room. */
.igp-card video{width:100%;display:block;border-radius:10px;background:#000;aspect-ratio:4/5;object-fit:cover}
.igp-videogen{margin-top:8px}
.igp-videogen [data-igv-status]{margin-left:10px}
/* IG video screen-capture control row. */
.igv-screen{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line)}
.igv-screen [data-igv-screen-status]{margin-left:10px}

/* /admin/featured punktu tabulas: sekcijas rinda ar slota nosaukumu + kurš tajā rādās + avota piezīme.
   Agrāk tas viss stāvēja pirmajā šūnā, un rindas kļuva trīsstāvu augstas (karte 3797px). Sekcijas rinda
   to izceļ un vienlaikus atbrīvo vienu kolonnu. Fons ir tas pats neitrālais, ko lieto tabulu galvenes. */
.table tr.fx-sect td{background:rgba(127,127,127,.07);border-top:1px solid var(--line);padding-top:12px}
.fx-sect__who{margin-left:6px}
.fx-sect__note{display:block;margin-top:2px}
