/* =============================================================
   Müşteri Paneli — customer overrides on panel-core.css
   Direction: calmer, roomier, reassuring, easy on mobile.
   ============================================================= */

.panel--customer {
  --sidebar-w: 270px;
  --topbar-h: 68px;
  --main-max: 1080px;
}

.panel--customer .panel-main { padding: clamp(1.3rem, .8rem + 2vw, 2.6rem); }
.panel--customer .panel-nav { padding: 1rem .8rem; }
.panel--customer .panel-nav a { padding: .74rem .8rem; font-size: .915rem; margin-bottom: 3px; }
.panel--customer .panel-nav a .ic { width: 19px; height: 19px; }

/* =============================================================
   Sidebar help card — a live-support module
   (customer only; admin keeps the plain panel-core .panel-support)
   ============================================================= */
.panel--customer .panel-support {
  position: relative; overflow: hidden;
  margin: .6rem;
  padding: 1rem .9rem .9rem;
  border: 1px solid var(--p-border-strong);
  border-radius: var(--p-radius);
  background: var(--p-surface-soft);
  transition: border-color .16s var(--ease);
}
.panel--customer .panel-support::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background-image: var(--brand-gradient);
}
.panel--customer .panel-support:hover { border-color: rgba(20, 43, 81, .24); }
.panel--customer .panel-support__head {
  display: flex; align-items: flex-start; gap: .7rem; margin-bottom: .85rem;
}
.panel--customer .panel-support__ic {
  position: relative; flex: none;
  width: 40px; height: 40px; border-radius: 12px;
  display: grid; place-items: center;
  background-image: var(--brand-gradient); color: #fff;
}
.panel--customer .panel-support__ic svg { width: 19px; height: 19px; }
.panel--customer .panel-support__ic::after {
  content: ""; position: absolute; top: -2px; right: -2px;
  width: 10px; height: 10px; border-radius: 50%;
  background: var(--brand-accent-secondary);
  border: 2px solid var(--p-surface-soft);
  animation: panel-support-pulse 2.2s ease-in-out infinite;
}
@keyframes panel-support-pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%      { transform: scale(1.25); opacity: .55; }
}
.panel--customer .panel-support__title {
  margin: 0; font-size: .82rem; font-weight: 700; line-height: 1.25; color: var(--p-text-strong);
}
.panel--customer .panel-support__text {
  margin: .3rem 0 0; font-size: .735rem; line-height: 1.5; color: var(--p-text-muted);
}
.panel--customer .panel-support__acts { display: flex; flex-direction: column; gap: .4rem; }
.panel--customer .panel-support__act.customer-qa__tile { padding: .55rem .6rem; background: var(--p-surface); }
.panel--customer .panel-support__act .customer-qa__title { font-size: .8rem; }
.panel--customer .panel-support__act--wa .customer-qa__ic { background: rgba(37, 211, 102, .12); color: #25d366; }
@media (prefers-reduced-motion: reduce) {
  .panel--customer .panel-support { transition: none; }
  .panel--customer .panel-support__ic::after { animation: none; }
}

/* sidebar menu count badge — brand-gradient pill, white number
   (customer only; admin keeps the neutral panel-core badge) */
.panel--customer .panel-nav__badge {
  min-width: 21px; height: 21px; padding: 0 6px;
  border: 0;
  background: var(--brand-gradient);
  color: #fff;
  font-size: .72rem; font-weight: 700;
  transition: filter .16s var(--ease);
}
.panel--customer .panel-nav a.is-active .panel-nav__badge,
.panel--customer .panel-nav a:hover .panel-nav__badge {
  background: var(--brand-gradient); color: #fff;
  filter: brightness(1.07);
}
@media (prefers-reduced-motion: reduce) { .panel--customer .panel-nav__badge { transition: none; } }

/* =============================================================
   Topbar announcement rotator (customer only) — one line, one
   message visible at a time, advanced by panel-demo.js. The
   viewport is a fixed one-line box; each message is absolutely
   stacked inside it and slides up + fades on the way in/out.
   Hidden below the sidebar-collapse breakpoint to keep the
   compact mobile topbar clean (title + bell/profile only).
   ============================================================= */
.panel--customer .panel-announce {
  display: flex; align-items: center; gap: .55rem;
  flex: 1 1 auto; min-width: 0;
  margin: 0 1.1rem;
}
.panel--customer .panel-announce__ic {
  flex: none; width: 30px; height: 30px; border-radius: 10px;
  display: grid; place-items: center;
  background-image: var(--brand-gradient); color: #fff;
}
.panel--customer .panel-announce__ic svg { width: 14px; height: 14px; }
.panel--customer .panel-announce__viewport {
  position: relative; flex: 1 1 auto; min-width: 0;
  height: 1.3em; overflow: hidden;
}
.panel--customer .panel-announce__list { list-style: none; margin: 0; padding: 0; }
.panel--customer .panel-announce__item {
  position: absolute; inset: 0;
  display: flex; align-items: center;
  font-size: .82rem; font-weight: 500; color: var(--p-text-strong);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  opacity: 0; transform: translateY(13px);
  transition: transform .4s var(--ease), opacity .4s var(--ease);
  pointer-events: none;
}
.panel--customer .panel-announce__item.is-active { opacity: 1; transform: translateY(0); pointer-events: auto; }
.panel--customer .panel-announce__item.is-leaving { opacity: 0; transform: translateY(-13px); }
@media (max-width: 991.98px) { .panel--customer .panel-announce { display: none; } }
@media (prefers-reduced-motion: reduce) { .panel--customer .panel-announce__item { transition: none; } }

/* =============================================================
   Topbar notification dropdown (customer only) — frontend demo.
   Reuses the shared .dropdown-menu (panel-core.css) for the pop
   animation/soft shadow/border and just overrides radius, padding
   and width; the bell button + Bootstrap's dropdown JS give click
   toggle, outside-click-close and Esc-close for free.
   ============================================================= */
.panel--customer .panel-iconbtn__count {
  position: absolute; top: -4px; right: -4px;
  min-width: 17px; height: 17px; padding: 0 4px;
  display: grid; place-items: center;
  border-radius: 999px;
  background-image: var(--brand-gradient); color: #fff;
  font-size: .64rem; font-weight: 700; line-height: 1;
  box-shadow: 0 0 0 2px #fff;
}
.panel--customer .panel-notif__panel {
  width: 368px; max-width: calc(100vw - 24px);
  padding: 0; border-radius: var(--p-radius-lg); overflow: hidden;
}
.panel--customer .panel-notif__head {
  display: flex; align-items: center; justify-content: space-between; gap: .75rem;
  padding: .95rem 1.1rem;
  border-bottom: 1px solid var(--p-line);
}
.panel--customer .panel-notif__head h3 { margin: 0; font-size: .92rem; font-weight: 700; color: var(--p-text-strong); }
.panel--customer .panel-notif__markall {
  flex: none; border: 0; background: none; padding: 0; cursor: pointer;
  font-family: inherit; font-size: .74rem; font-weight: 600; color: var(--brand-primary);
  transition: color .16s var(--ease);
}
.panel--customer .panel-notif__markall:hover { color: var(--brand-accent-secondary); }
.panel--customer .panel-notif__list { max-height: 360px; overflow-y: auto; }
/* empty state for the notification panel (Backend Phase 2B — the frozen
   prototype always had demo items so had no empty state). */
.panel--customer .panel-notif__empty { margin: 0; padding: 1.4rem 1.1rem; font-size: .84rem; color: var(--p-text-muted); text-align: center; }
.panel--customer .panel-notif__item {
  position: relative;
  display: flex; align-items: flex-start; gap: .75rem;
  padding: .85rem 1.1rem;
  color: inherit;
  transition: background-color .16s var(--ease);
}
.panel--customer .panel-notif__item:hover { background: var(--p-surface-soft); }
.panel--customer .panel-notif__item + .panel-notif__item { border-top: 1px solid var(--p-line); }
.panel--customer .panel-notif__ic {
  flex: none; width: 34px; height: 34px; margin-top: .1rem; border-radius: 10px;
  display: grid; place-items: center;
  background-image: var(--brand-gradient); color: #fff;
}
.panel--customer .panel-notif__ic svg { width: 16px; height: 16px; }
.panel--customer .panel-notif__body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.panel--customer .panel-notif__title { display: inline-flex; align-items: center; gap: .4rem; font-size: .84rem; font-weight: 700; color: var(--p-text-strong); }
.panel--customer .panel-notif__dot { flex: none; width: 6px; height: 6px; border-radius: 50%; background-image: var(--brand-gradient); }
.panel--customer .panel-notif__text { margin-top: .22rem; font-size: .78rem; line-height: 1.45; color: var(--p-text-muted); }
.panel--customer .panel-notif__time { margin-top: .32rem; font-size: .7rem; color: var(--p-text-faint); }
@media (max-width: 420px) { .panel--customer .panel-notif__panel { width: calc(100vw - 24px); } }

/* =============================================================
   SHARED : brand accent mark on card surfaces
   A SHORT brand-gradient bar in the top-left corner zone — a
   restrained design signature, NOT a full-width stripe. Respects
   the card radius, never overflows, never covers content.
   NOT for rows / chips / buttons / inputs / tiny widgets.
   ============================================================= */
.panel--customer .customer-stat,
.panel--customer .customer-renewal,
.panel--customer .customer-hero,
.panel--customer .customer-module,
.panel--customer .customer-toolbar,
.panel--customer .customer-doc,
.panel--customer .dash-svc { position: relative; }

.panel--customer .customer-stat::before,
.panel--customer .customer-renewal::before,
.panel--customer .customer-hero::before,
.panel--customer .customer-module::before,
.panel--customer .customer-toolbar::before,
.panel--customer .customer-doc::before,
.panel--customer .customer-list-shell::before,
.panel--customer .dash-svc::before {
  content: "";
  position: absolute; top: 0; left: 1.4rem;
  width: 94px; height: 3px;
  border-radius: 999px;
  background-image: var(--brand-gradient);
  z-index: 2; pointer-events: none;
}
/* compact wrappers get a shorter mark */
.panel--customer .customer-stat::before,
.panel--customer .customer-toolbar::before { width: 64px; left: 1.25rem; }

/* =============================================================
   CUSTOMER PANEL — shared page shell + component system
   Bootstrap 5 = grid / breakpoints / flex / utilities only.
   Every visual element is a custom Uygun Web Tasarım component
   from ONE system, all continuing musteri-paneli.html:
     shell  .customer-page  .customer-page-head
     button .customer-action + --primary / --secondary / --sm / --file
            (ONE button system — every secondary/section/table action uses
             --secondary --sm; no .panel-section-action, no .customer-row-action)
     status .st-dot  (the single status language)
     cards  .customer-module  .dash-svc/.svc-item  .customer-stat
            .customer-renewal  .customer-hero
     dur    .customer-duration  (ONE 12-month indicator — dashboard, services,
            service-detail — always via the month_seg() helper)
     data   .customer-list  .dash-support
     list   .customer-list-shell + .customer-data-table + .customer-pagination
            (shared: Ödemelerim · Faturalarım · Destek Taleplerim)
     tools  .customer-toolbar  .customer-filter
     doc    .customer-doc  (payment-request document + .doc-stamp)
     accent SHORT brand-gradient bar (~94px, or 64px on compact cards) in
            the top-left of every major card wrapper (stat / renewal / hero /
            module / toolbar / doc / list-shell / dash-svc) — a design
            signature; never on rows, chips, buttons or inputs
   ============================================================= */
.customer-dashboard,
.customer-services,
.customer-page {
  display: flex; flex-direction: column;
  gap: clamp(1.5rem, 1.1rem + 1.7vw, 2.3rem);
}

/* page heading — ONE shared component for every main customer page
   (title + description + optional right-aligned actions). A short
   vertical brand-gradient bar marks the block on the left; it's a
   ::before on __titles, so no page needs any extra markup for it.
   The description carries no artificial ch cap — it fills the
   available row width, so it naturally prefers one line on desktop
   and only wraps once the column itself is narrower than the text. */
.customer-page-head {
  display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between;
  gap: 1rem 1.5rem;
}
.customer-page-head__titles {
  position: relative; min-width: 0; flex: 1 1 auto;
  padding-left: 1.15rem;
}
.customer-page-head__titles::before {
  content: "";
  position: absolute; left: 0; top: 50%; transform: translateY(-50%);
  width: 4px; height: 50px;
  border-radius: 999px;
  background-image: var(--brand-gradient);
}
.customer-page-head h2 {
  font-size: clamp(1.55rem, 1.2rem + 1.4vw, 1.9rem); font-weight: 700; letter-spacing: -.02em;
  color: var(--p-text-strong);
}
.customer-page-head p {
  margin-top: .5rem; font-size: .95rem; line-height: 1.5; color: var(--p-text-muted);
}
.customer-page-head__actions { display: flex; flex-wrap: wrap; gap: .5rem; flex: none; }
@media (max-width: 560px) {
  .customer-page-head__actions { width: 100%; }
  .customer-page-head__actions > .customer-action { flex: 1 1 auto; justify-content: center; }
  .customer-page-head__titles { padding-left: .9rem; }
  .customer-page-head__titles::before { height: 38px; }
}

/* breadcrumb — reuse panel-core .p-crumbs, tighten for customer pages */
.customer-page .p-crumbs { margin-bottom: -.4rem; }

/* ---- BUTTON SYSTEM -------------------------------------------------- */
/* primary + secondary — identical language to the public site .btn-brand */
.panel .customer-action {
  --shine: rgba(255, 255, 255, .42);
  position: relative; isolation: isolate; overflow: hidden;
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  padding: .72rem 1.4rem;
  border: 1px solid transparent; border-radius: 11px;
  font-family: inherit; font-size: .9rem; font-weight: 600; letter-spacing: .005em;
  line-height: 1.2; white-space: nowrap; cursor: pointer;
  transition: transform .2s ease, filter .2s ease, border-color .2s ease, background-color .2s ease;
}
.panel .customer-action > span, .panel .customer-action > svg { position: relative; z-index: 2; }
.panel .customer-action svg { width: 16px; height: 16px; transition: transform .2s var(--ease); }
.panel .customer-action::after {
  content: ""; position: absolute; top: -50%; left: -70%; width: 40%; height: 200%; z-index: 1;
  pointer-events: none;
  background: linear-gradient(90deg, transparent, var(--shine), transparent);
  transform: rotate(20deg); transition: left .6s ease;
}
.panel .customer-action:hover { transform: translateY(-1px); }
.panel .customer-action:active { transform: translateY(0); }
.panel .customer-action:hover::after,
.panel .customer-action:focus-visible::after { left: 130%; }
.panel .customer-action:hover svg { transform: translateX(2px); }
.panel .customer-action--sm { padding: .5rem 1rem; font-size: .82rem; border-radius: 10px; }
.panel .customer-action--sm svg { width: 14px; height: 14px; }

.panel .customer-action--primary {
  color: #fff !important; background-image: var(--brand-gradient);
  text-shadow: 0 1px 2px rgba(90, 34, 0, .35);
}
.panel .customer-action--primary:hover { filter: brightness(1.05); }

.panel .customer-action--secondary {
  --shine: rgba(20, 43, 81, .06);
  color: var(--brand-primary); background-color: #fff; border-color: var(--p-border-strong);
}
.panel .customer-action--secondary:hover { border-color: rgba(20, 43, 81, .28); background: var(--p-surface-soft); }
/* download variant — icon dips instead of sliding right */
.panel .customer-action--file:hover svg { transform: translateY(1px); }

@media (prefers-reduced-motion: reduce) {
  .panel .customer-action::after { display: none; }
  .panel .customer-action:hover, .panel .customer-action:hover svg { transform: none; }
}

/* ---- 1 · SUMMARY STAT CARDS -------------------------------------- */
.customer-stats {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: clamp(.75rem, .45rem + .9vw, 1.1rem);
}
.customer-stat {
  position: relative; overflow: hidden;
  display: flex; flex-direction: column;
  background: var(--p-surface);
  border: 1px solid var(--p-border);
  border-radius: 18px;
  box-shadow: var(--p-shadow-card);
  color: var(--p-text);
  transition: transform .2s var(--ease), border-color .2s var(--ease);
}
.customer-stat:hover { transform: translateY(-3px); border-color: var(--p-border-strong); }
.customer-stat__top { display: flex; align-items: center; gap: .9rem; padding: 1.15rem 1.2rem .55rem; }
.customer-stat__ic {
  flex: none; width: 46px; height: 46px; border-radius: 13px;
  display: grid; place-items: center;
  background-image: var(--brand-gradient); color: #fff;
  transition: transform .2s var(--ease);
}
.customer-stat__ic svg { width: 21px; height: 21px; }
.customer-stat:hover .customer-stat__ic { transform: translateY(-2px); }
.customer-stat__figure { display: flex; flex-direction: column; min-width: 0; }
.customer-stat__value {
  font-size: clamp(1.7rem, 1.45rem + .9vw, 2rem); font-weight: 700; line-height: 1;
  letter-spacing: -.035em; color: var(--p-text-strong); font-variant-numeric: tabular-nums;
}
.customer-stat__label {
  margin-top: .3rem; font-size: .78rem; font-weight: 600;
  color: var(--p-text-strong);
}
.customer-stat__note {
  padding: 0 1.2rem 1rem; font-size: .77rem; color: var(--p-text-muted);
  min-height: 2.05em; line-height: 1.35;
}
.customer-stat__action {
  margin-top: auto;
  display: flex; align-items: center; justify-content: space-between; gap: .5rem;
  padding: .72rem 1.2rem;
  border-top: 1px solid var(--p-line);
  background: var(--p-surface-soft);
  font-size: .8rem; font-weight: 600; color: var(--brand-primary);
  transition: background-color .18s var(--ease), color .18s var(--ease);
}
.customer-stat__action svg { width: 14px; height: 14px; flex: none; transition: transform .18s var(--ease); }
.customer-stat:hover .customer-stat__action { background: #fff; color: var(--brand-accent-secondary); }
.customer-stat:hover .customer-stat__action svg { transform: translateX(3px); }

/* --plain — same card body as the dashboard metric cards, but a read-only
   KPI (no navigation): drops the action strip and the clickable lift. */
.customer-stat--plain { cursor: default; }
.customer-stat--plain:hover { transform: none; border-color: var(--p-border); }
.customer-stat--plain:hover .customer-stat__ic { transform: none; }
.customer-stat--plain .customer-stat__top { padding-top: 1.25rem; }
.customer-stat--plain .customer-stat__note { padding-bottom: 1.25rem; }
/* Backend — label-only KPI card (Hizmetlerim): no explanatory sub-text.
   Restore the card's bottom padding when __top is the only child. Same
   tokens/spacing, no visual language change. */
.customer-stat--plain .customer-stat__top:last-child { padding-bottom: 1.25rem; }

/* all four metric icons share ONE treatment (brand-gradient fill, white glyph);
   all four values stay navy — orange/gradient is icon + accent only. */
@media (max-width: 1300px) { .customer-stats { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) {
  .customer-stats { grid-template-columns: repeat(2, 1fr); }
  .customer-stat__top { flex-direction: column; align-items: flex-start; gap: .7rem; padding: .95rem 1rem .5rem; }
  .customer-stat__ic { width: 38px; height: 38px; border-radius: 11px; }
  .customer-stat__ic svg { width: 17px; height: 17px; }
  .customer-stat__value { font-size: 1.6rem; }
  .customer-stat__label { margin-top: .2rem; }
  .customer-stat__note { padding: .1rem 1rem .8rem; font-size: .74rem; min-height: 0; }
  .customer-stat__action { padding: .6rem 1rem; font-size: .76rem; }
}
@media (max-width: 380px) { .customer-stats { grid-template-columns: 1fr; } }

/* ---- 2 · UPCOMING RENEWAL — one designed component ---------------- */
.customer-renewal {
  position: relative; overflow: hidden;
  display: grid; grid-template-columns: minmax(0, 1fr) 264px;
  background: var(--p-surface);
  border: 1px solid var(--p-border);
  border-radius: 22px;
  box-shadow: var(--p-shadow-card);
}
.customer-renewal__info {
  position: relative; z-index: 1;
  padding: clamp(1.4rem, 1.1rem + 1.2vw, 1.9rem);
}
.customer-renewal__eyebrow {
  font-size: .7rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase;
  color: var(--p-text-faint);
}
.customer-renewal__title { margin-top: .5rem; font-size: 1.22rem; font-weight: 700; }
.customer-renewal__domain {
  margin-top: .28rem; font-size: .9rem; font-weight: 600; color: var(--brand-primary);
  display: inline-flex; align-items: center; gap: .35rem;
}
.customer-renewal__domain svg { width: 13px; height: 13px; opacity: .55; }
.customer-renewal__facts {
  margin: 1.1rem 0 0; display: flex; flex-wrap: wrap; gap: .9rem 2.6rem;
}
.customer-renewal__facts div { min-width: 0; }
.customer-renewal__facts dt { font-size: .72rem; color: var(--p-text-muted); }
.customer-renewal__facts dd { margin: .22rem 0 0; font-size: .9rem; font-weight: 600; color: var(--p-text-strong); }
.customer-renewal__cta { margin-top: 1.25rem; display: flex; flex-wrap: wrap; gap: .6rem; }

.customer-renewal__aside {
  position: relative; z-index: 1;
  display: flex; flex-direction: column; align-items: center; justify-content: space-evenly;
  text-align: center;
  padding: 1.6rem 1.4rem;
  border-left: 1px solid var(--p-line);
  background: linear-gradient(180deg, var(--p-surface), var(--p-surface-soft)); /* clean cool-white, no warm tint */
}
.customer-renewal__count {
  font-size: clamp(2.6rem, 2.1rem + 1.4vw, 3.1rem); font-weight: 700; line-height: 1;
  letter-spacing: -.05em; color: var(--p-text-strong); font-variant-numeric: tabular-nums;
}
.customer-renewal__count-label { margin-top: .4rem; font-size: .82rem; color: var(--p-text-muted); }
/* ---- SHARED : 12-month duration indicator -----------------------
   ONE component for dashboard renewal / services cards / service detail.
   12 segments, 1 segment = 1 month. Filled = remaining months
   (ceil(days/30), clamped 0–12). Tone: 7–12 green · 2–6 orange · 1 red · 0 none.
   Rendered only by the month_seg() helper — never hand-write the segments. */
.customer-duration {
  display: flex; gap: 3px; width: 100%; max-width: 216px;
  margin: .2rem 0;
}
.customer-duration i {
  flex: 1; height: 6px; border-radius: 3px;
  background: var(--p-surface-sink);
}
.customer-duration--ok     i.is-on { background: var(--st-ok-dot); }
.customer-duration--warn   i.is-on { background-image: var(--brand-gradient); background-color: var(--brand-accent-secondary); }
.customer-duration--danger i.is-on { background: var(--st-danger-dot); }
.customer-renewal__date { font-size: .78rem; font-weight: 600; color: var(--p-text-strong); }
@media (max-width: 720px) {
  .customer-renewal { grid-template-columns: 1fr; }
  .customer-renewal__aside {
    border-left: 0; border-top: 1px solid var(--p-line);
    flex-direction: row; flex-wrap: wrap; gap: .1rem 1rem; justify-content: flex-start; text-align: left;
  }
  .customer-renewal__aside .customer-duration { order: 3; max-width: none; margin: .9rem 0 0; }
  .customer-renewal__count-label { align-self: flex-end; margin-top: 0; padding-bottom: .35rem; }
  .customer-renewal__date { order: 4; width: 100%; margin-top: .5rem; }
}

/* ---- section block (flat header + content, no wrapper card) ------- */
.dash-block__head {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  margin-bottom: 1.05rem;
}
.dash-block__head h3 { font-size: 1.08rem; font-weight: 700; }

/* ---- 3 · SERVICE CARDS — structured, not table-like -------------- */
/* cards in a row are equal height; the footer is pinned to the bottom */
.dash-svc-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(.85rem, .6rem + .8vw, 1.15rem); align-items: stretch; }
.dash-svc-grid > * { min-width: 0; }
@media (max-width: 760px) { .dash-svc-grid { grid-template-columns: 1fr; } }

.dash-svc {
  position: relative;
  display: flex; flex-direction: column; height: 100%;
  padding: 1.15rem 1.25rem 1.2rem;
  background: var(--p-surface);
  border: 1px solid var(--p-border);
  border-radius: 18px;
  box-shadow: var(--p-shadow-card);
  transition: transform .2s var(--ease), border-color .2s var(--ease);
}
.dash-svc:hover { transform: translateY(-2px); border-color: var(--p-border-strong); }
.dash-svc__top { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.dash-svc__ic {
  flex: none; width: 34px; height: 34px; border-radius: 10px;
  display: grid; place-items: center;
  background-image: var(--brand-gradient); color: #fff;
}
.dash-svc__ic svg { width: 16px; height: 16px; }
.dash-svc__name { font-size: .95rem; font-weight: 600; color: var(--p-text-strong); min-width: 0; flex: 1 1 auto; }
/* service status = the shared .st-dot chip (Aktif / Süresi Doldu / İptal Edildi / Pasif) */
.dash-svc__top .st-dot { flex: none; }
.dash-svc__domain {
  margin-top: .7rem; font-size: .9rem; font-weight: 600; color: var(--brand-primary);
  display: inline-flex; align-items: center; gap: .35rem; align-self: flex-start;
}
.dash-svc__domain svg { width: 13px; height: 13px; opacity: .55; transition: transform .16s var(--ease); }
.dash-svc__domain:hover svg { transform: translate(1px, -1px); }
.dash-svc__facts {
  margin: 1rem 0 0; padding-top: 1rem; border-top: 1px solid var(--p-line);
  display: grid; grid-template-columns: 1fr 1fr; gap: .85rem 1.4rem;
}
.dash-svc__facts div { min-width: 0; }
.dash-svc__facts dt { font-size: .71rem; color: var(--p-text-muted); }
.dash-svc__facts dd { margin: .2rem 0 0; font-size: .84rem; font-weight: 600; color: var(--p-text-strong); }
.dash-svc__facts dd.is-soon { color: var(--st-warn-fg); }
.dash-svc__foot {
  margin-top: auto; padding-top: 1.1rem; border-top: 1px solid var(--p-line);
  display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
}
.dash-svc__price { font-size: .92rem; font-weight: 700; color: var(--p-text-strong); font-variant-numeric: tabular-nums; }
.dash-svc__price small { font-size: .72rem; font-weight: 500; color: var(--p-text-muted); }

/* ---- 4 · LOWER ROW : support + payment modules ------------------- */
.dash-lower { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(.85rem, .6rem + .8vw, 1.2rem); align-items: start; }
.dash-lower > * { min-width: 0; }
@media (max-width: 820px) { .dash-lower { grid-template-columns: 1fr; } }

.customer-module {
  padding: 1.35rem 1.4rem;
  background: var(--p-surface);
  border: 1px solid var(--p-border);
  border-radius: var(--p-radius-lg);
  box-shadow: var(--p-shadow-card);
}
.customer-module__head {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  margin-bottom: 1.1rem;
}
.customer-module__head h3 { font-size: 1rem; font-weight: 700; }
.customer-module__foot { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.customer-module > form + .customer-module__foot { margin-top: 1rem; }

/* support list — flat rows, custom icon + inline state, hairline separators.
   Every row keeps the SAME symmetric vertical padding (no :first-child /
   :last-child zeroing) so every row's box — and its hover highlight — is
   the same shape; the slightly larger gap this leaves above the first row
   and below the last is the trade-off for that consistency. */
.dash-support { display: flex; flex-direction: column; }
.dash-support__row {
  display: flex; align-items: center; gap: .85rem;
  padding: .85rem 0 .85rem 1rem; color: inherit;
}
.dash-support__row + .dash-support__row { border-top: 1px solid var(--p-line); }
.dash-support__row:hover .dash-support__title { color: var(--brand-primary); }
.dash-support__ic {
  flex: none; align-self: center;
  width: 36px; height: 36px; border-radius: 10px;
  display: grid; place-items: center;
  background-image: var(--brand-gradient); color: #fff;
}
.dash-support__ic svg { width: 16px; height: 16px; }
.dash-support__main { flex: 1; align-self: center; min-width: 0; }
.dash-support__title {
  display: block; font-size: .88rem; font-weight: 600; color: var(--p-text-strong);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  transition: color .16s var(--ease);
}
.dash-support__meta { display: block; font-size: .75rem; color: var(--p-text-muted); margin-top: .12rem; }
.dash-support__row .st-dot { flex: none; align-self: center; font-size: .78rem; }
@media (max-width: 520px) {
  .dash-support__row { align-items: flex-start; }
  .dash-support__ic { margin-top: .1rem; }
  .dash-support__title { white-space: normal; }
  .dash-support__row .st-dot { align-self: flex-start; margin-top: .1rem; }
}

/* Ödemelerim module — flat list of the latest payment records, same family
   as .dash-support: icon + main + a right-side amount / status stack. */
.dash-pay { display: flex; flex-direction: column; }
.dash-pay__row {
  display: flex; align-items: center; gap: .85rem;
  padding: .85rem 0 .85rem 1rem; color: inherit;
}
.dash-pay__row + .dash-pay__row { border-top: 1px solid var(--p-line); }
.dash-pay__row:hover .dash-pay__title { color: var(--brand-primary); }
.dash-pay__ic {
  flex: none; align-self: center;
  width: 36px; height: 36px; border-radius: 10px;
  display: grid; place-items: center;
  background-image: var(--brand-gradient); color: #fff;
}
.dash-pay__ic svg { width: 16px; height: 16px; }
.dash-pay__main { flex: 1; align-self: center; min-width: 0; }
.dash-pay__title {
  display: block; font-size: .88rem; font-weight: 600; color: var(--p-text-strong);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  transition: color .16s var(--ease);
}
.dash-pay__meta { display: block; font-size: .75rem; color: var(--p-text-muted); margin-top: .12rem; font-variant-numeric: tabular-nums; }
.dash-pay__end {
  flex: none; align-self: center;
  display: flex; flex-direction: column; align-items: flex-end; gap: .22rem;
  text-align: right;
}
.dash-pay__amount { font-size: .88rem; font-weight: 700; color: var(--p-text-strong); font-variant-numeric: tabular-nums; }
.dash-pay__end .st-dot { flex: none; font-size: .77rem; }
@media (max-width: 520px) {
  .dash-pay__row { flex-wrap: wrap; }
  .dash-pay__main { flex-basis: calc(100% - 36px - .85rem); }
  .dash-pay__title { white-space: normal; }
  .dash-pay__end {
    flex-basis: 100%; margin-top: .5rem; padding-left: calc(36px + .85rem);
    flex-direction: row; align-items: baseline; gap: .8rem; text-align: left;
  }
}

/* =============================================================
   SHARED : interactive compact row (dashboard modules)
   Same interaction language as the odemelerim.html table
   row: subtle surface wash + a 3px brand-gradient accent on the
   left edge (appears on hover/focus) + a tiny nudge. Flat rows —
   never wrapped in a card.
   ============================================================= */
.customer-interactive-row {
  position: relative; cursor: pointer;
  transition: background-color .2s var(--ease), transform .2s var(--ease);
}
.customer-interactive-row::before {
  content: ""; position: absolute; left: 0; top: 8px; bottom: 8px; width: 3px;
  border-radius: 0 999px 999px 0;
  background-image: var(--brand-gradient);
  opacity: 0; transform: scaleY(.4);
  transition: opacity .2s var(--ease), transform .2s var(--ease);
}
.customer-interactive-row:hover,
.customer-interactive-row:focus-visible {
  background: var(--p-surface-soft);
  transform: translateX(2px);
}
.customer-interactive-row:hover::before,
.customer-interactive-row:focus-visible::before { opacity: 1; transform: scaleY(1); }
@media (prefers-reduced-motion: reduce) {
  .customer-interactive-row, .customer-interactive-row::before { transition: none; }
  .customer-interactive-row:hover,
  .customer-interactive-row:focus-visible { transform: none; }
}


/* =============================================================
   SHARED : toolbar (search) + segmented filter
   ============================================================= */
.customer-toolbar {
  display: flex; flex-wrap: wrap; align-items: center; gap: .7rem 1rem;
  padding: .8rem .95rem;
  background: var(--p-surface);
  border: 1px solid var(--p-border);
  border-radius: var(--p-radius-lg);
  box-shadow: var(--p-shadow-card);
}
.customer-toolbar .p-search { flex: 1 1 220px; max-width: 300px; }
.customer-toolbar .p-search input { background: var(--p-surface-soft); border-color: var(--p-border); }
.customer-toolbar .p-search input:focus { background: #fff; }

.customer-filter { display: flex; flex-wrap: wrap; gap: .35rem; margin-left: auto; }
.customer-filter__btn {
  position: relative;
  display: inline-flex; align-items: center; gap: .45rem;
  padding: .45rem .75rem;
  border: 1px solid transparent; border-radius: 9px;
  background: transparent; color: var(--p-text-muted);
  font-family: inherit; font-size: .8rem; font-weight: 600; white-space: nowrap; cursor: pointer;
  transition: color .16s var(--ease), border-color .16s var(--ease), background-color .16s var(--ease);
}
/* a subtle vertical separator between (not around) filter options —
   only between two DOM-adjacent buttons, never before the first or
   after the last; purely a grouping cue, independent of active state */
.customer-filter__btn:not(:first-child)::after {
  content: "";
  position: absolute; left: -.2rem; top: 50%; transform: translateY(-50%);
  width: 1px; height: 20px;
  background: var(--p-border-strong);
}
.customer-filter__btn .n {
  font-size: .7rem; font-weight: 700; color: var(--p-text-faint);
  background: var(--p-surface-sink); border-radius: 999px;
  padding: .05rem .38rem; min-width: 1.1rem; text-align: center;
}
.customer-filter__btn:hover { color: var(--p-text-strong); }
.customer-filter__btn.is-active {
  background: #fff; border-color: var(--p-border-strong); color: var(--brand-primary);
}
.customer-filter__btn.is-active::before {
  content: ""; width: 6px; height: 6px; border-radius: 50%; flex: none;
  background-image: var(--brand-gradient);
}
.customer-filter__btn.is-active .n { color: var(--brand-accent-secondary); background: rgba(250, 164, 26, .12); }
@media (max-width: 640px) {
  .customer-filter { margin-left: 0; width: 100%; flex-wrap: nowrap; overflow-x: auto; padding-bottom: 2px; scrollbar-width: none; }
  .customer-filter::-webkit-scrollbar { display: none; }
}

/* =============================================================
   HİZMETLERİM : service card extras (dashboard .dash-svc DNA)
   ============================================================= */
.svc-item .dash-svc__facts dd.is-over { color: var(--st-danger-fg); }

/* renewal warning — a SEPARATE signal from '● Aktif'. A small tab attached
   to the card's top-right edge: OUT of document flow (position:absolute) so
   it never adds a row or changes card height. White surface, thin warning
   border, one gently pulsing marker, dark text. */
.svc-warn {
  position: absolute; top: 0; right: 1rem; z-index: 2;
  transform: translateY(-45%);
  display: inline-flex; align-items: center; gap: .45rem;
  padding: .3rem .6rem .3rem .48rem;
  border: 1px solid var(--st-warn-bd); border-radius: 8px;
  background: var(--p-surface);
  font-size: .73rem; font-weight: 600; color: var(--p-text-strong); white-space: nowrap;
}
.svc-warn b { color: var(--st-warn-fg); font-weight: 700; }
.svc-warn { transition: border-color .16s var(--ease); }
.svc-warn:hover { border-color: var(--st-warn-fg); }
.svc-warn__pulse {
  flex: none; width: 8px; height: 8px; border-radius: 50%;
  background: var(--brand-accent-secondary);
  animation: svc-warn-pulse 2.1s ease-in-out infinite;
}
@keyframes svc-warn-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: .5; transform: scale(1.08); }
}
@media (prefers-reduced-motion: reduce) { .svc-warn__pulse { animation: none; } }
/* stacked cards — no top-edge room, so let it sit in flow under the status */
@media (max-width: 760px) {
  .svc-warn {
    position: static; transform: none; z-index: auto;
    align-self: flex-start; margin-top: .7rem;
  }
}

/* yearly service-time meter — every service card, 1 segment = 1 month.
   Reuses the shared .customer-duration (month_seg() helper). */
.svc-item__meter {
  margin: 1rem 0 0; padding-top: .95rem;
  border-top: 1px solid var(--p-line);
  display: flex; flex-direction: column; gap: .5rem;
}
.svc-item__meter-head {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: .3rem 1rem; flex-wrap: wrap; font-size: .77rem;
}
.svc-item__meter-label { color: var(--p-text-muted); font-weight: 600; }
.svc-item__meter-val { font-weight: 700; color: var(--p-text-strong); font-variant-numeric: tabular-nums; }
.svc-item__meter-val.is-warn   { color: var(--st-warn-fg); }
.svc-item__meter-val.is-danger { color: var(--st-danger-fg); }
.svc-item__meter .customer-duration { max-width: none; margin: 0; }

/* the meter above already reads as its own divider (border-top + a
   segmented bar) — an immediately-following .dash-svc__foot border
   reads as a second, "stuck together" line right under it, so drop
   just that one on services-list cards; spacing stays via padding-top.
   The dashboard's own preview cards (.dash-svc without .svc-item, no
   meter) keep their .dash-svc__foot border untouched. */
.svc-item .dash-svc__foot { border-top: 0; }

.p-empty .customer-action { margin-top: .2rem; }

/* =============================================================
   SHARED : clean list / table-hybrid  (payments history, invoices)
   White surface, hairline rows, no boxed cells, wraps on mobile.
   ============================================================= */
.customer-list {
  background: var(--p-surface);
  border: 1px solid var(--p-border);
  border-radius: var(--p-radius-lg);
  box-shadow: var(--p-shadow-card);
  overflow: hidden;
}
.customer-list__row {
  display: flex; align-items: center; flex-wrap: wrap; gap: .6rem 1.25rem;
  padding: 1rem 1.35rem;
  color: inherit;
}
.customer-list__row + .customer-list__row { border-top: 1px solid var(--p-line); }
a.customer-list__row { transition: background-color .15s var(--ease); }
a.customer-list__row:hover { background: var(--p-surface-soft); }
.customer-list__main { flex: 1 1 220px; min-width: 0; display: flex; align-items: center; gap: .8rem; }
.customer-list__ic {
  flex: none; width: 34px; height: 34px; border-radius: 10px;
  display: grid; place-items: center;
  background: var(--brand-soft); color: var(--brand-primary);
}
.customer-list__ic svg { width: 15px; height: 15px; }
.customer-list__txt { min-width: 0; display: flex; flex-direction: column; }
.customer-list__title { font-size: .89rem; font-weight: 600; color: var(--p-text-strong); }
.customer-list__sub { font-size: .77rem; color: var(--p-text-muted); margin-top: .12rem; }
.customer-list__amount {
  flex: none; font-size: .92rem; font-weight: 700; color: var(--p-text-strong);
  font-variant-numeric: tabular-nums; letter-spacing: -.01em;
}
.customer-list__row .st-dot { flex: none; font-size: .8rem; }
/* hide the whole list surface when a filter leaves no rows (empty state takes over) */
[data-filter-scope] .customer-list:not(:has([data-row]:not([hidden]))) { display: none; }
@media (max-width: 620px) {
  .customer-list__row { align-items: flex-start; }
  .customer-list__main { flex-basis: 100%; }
  .customer-list__amount { font-size: 1rem; }
}

/* =============================================================
   HİZMET DETAYI : one strong service overview + sections
   ============================================================= */
.customer-hero {
  position: relative; overflow: hidden;
  display: grid; grid-template-columns: minmax(0, 1fr) 264px;
  background: var(--p-surface);
  border: 1px solid var(--p-border);
  border-radius: 22px;
  box-shadow: var(--p-shadow-card);
}
.customer-hero__main { padding: clamp(1.4rem, 1.1rem + 1.2vw, 1.9rem); }
.customer-hero__id { display: flex; align-items: center; gap: .8rem; }
.customer-hero__ic {
  flex: none; width: 44px; height: 44px; border-radius: 13px;
  display: grid; place-items: center;
  background-image: var(--brand-gradient); color: #fff;
}
.customer-hero__ic svg { width: 20px; height: 20px; }
.customer-hero__title { font-size: 1.25rem; font-weight: 700; color: var(--p-text-strong); }
.customer-hero__dom {
  margin-top: .05rem; font-size: .9rem; font-weight: 600; color: var(--brand-primary);
  display: inline-flex; align-items: center; gap: .35rem;
}
.customer-hero__dom svg { width: 13px; height: 13px; opacity: .55; }
.customer-hero__facts {
  margin: 1.2rem 0 0; display: flex; flex-wrap: wrap; gap: 1rem 2.4rem;
}
.customer-hero__facts div { min-width: 0; }
.customer-hero__facts dt { font-size: .72rem; color: var(--p-text-muted); }
.customer-hero__facts dd { margin: .28rem 0 0; font-size: .9rem; font-weight: 600; color: var(--p-text-strong); }
.customer-hero__aside {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: .5rem; text-align: center;
  padding: 1.5rem 1.4rem;
  border-left: 1px solid var(--p-line);
  background:
    radial-gradient(90% 55% at 50% 0%, rgba(250, 164, 26, .08), transparent 70%),
    linear-gradient(180deg, var(--p-surface), var(--p-surface-soft));
}
.customer-hero__count {
  font-size: clamp(2.4rem, 2rem + 1.2vw, 2.9rem); font-weight: 700; line-height: 1;
  letter-spacing: -.05em; color: var(--p-text-strong); font-variant-numeric: tabular-nums;
}
.customer-hero__count-label { font-size: .8rem; color: var(--p-text-muted); }
.customer-hero__aside .customer-duration { width: 100%; max-width: 180px; margin: .7rem 0 .3rem; }
.customer-hero__aside-date { font-size: .77rem; font-weight: 600; color: var(--p-text-strong); }
@media (max-width: 760px) {
  .customer-hero { grid-template-columns: 1fr; }
  .customer-hero__aside {
    border-left: 0; border-top: 1px solid var(--p-line);
    flex-direction: row; flex-wrap: wrap; justify-content: flex-start; text-align: left; gap: .2rem .9rem;
  }
  .customer-hero__aside .customer-duration { order: 3; max-width: none; margin: .8rem 0 0; }
  .customer-hero__count-label { align-self: flex-end; padding-bottom: .3rem; }
  .customer-hero__aside-date { order: 4; width: 100%; margin-top: .45rem; }
}

/* detail body : main column + side column */
.customer-detail { display: grid; grid-template-columns: minmax(0, 1fr) 324px; gap: clamp(1rem, .7rem + 1vw, 1.4rem); align-items: start; }
.customer-detail > * { min-width: 0; display: flex; flex-direction: column; gap: clamp(1rem, .7rem + 1vw, 1.4rem); }
@media (max-width: 940px) {
  .customer-detail { grid-template-columns: 1fr; }
  /* on the service detail, surface the actions before the reference sections */
  .customer-detail--aside-first > aside { order: -1; }
}

/* =============================================================
   Hesabım — grouped profile sections + password/security
   ============================================================= */
/* the left <form> stacks its section cards via .customer-detail > *;
   the right security card is a module, so keep its inner flow normal */
.customer-detail > .customer-module { gap: 0; }
.pf-actions { display: flex; flex-wrap: wrap; gap: .6rem; }
@media (max-width: 560px) { .pf-actions .customer-action { flex: 1 1 auto; justify-content: center; } }

.pf-pw { position: relative; }
.pf-pw .p-input { padding-right: 2.7rem; }
.pf-pw__toggle {
  position: absolute; right: .3rem; top: 50%; transform: translateY(-50%);
  width: 30px; height: 30px; display: grid; place-items: center;
  border: 0; background: none; color: var(--p-text-faint); cursor: pointer; border-radius: 7px;
  transition: color .16s var(--ease);
}
.pf-pw__toggle:hover { color: var(--p-text-muted); }
.pf-pw__toggle svg { width: 16px; height: 16px; }

/* =============================================================
   SHARED : compact "İsteğe Bağlı" style badge — a calm, bordered
   marker (never a filled Bootstrap-style badge) for optional
   sections. Reusable anywhere a heading needs the same note.
   ============================================================= */
.customer-tag {
  display: inline-flex; align-items: center; gap: .4rem;
  margin-left: .55rem;
  padding: .22rem .6rem .22rem .5rem;
  border: 1px solid var(--p-border); border-radius: 999px;
  background: var(--p-surface);
  font-size: .68rem; font-weight: 600; letter-spacing: .02em;
  color: var(--p-text-strong); vertical-align: middle;
}
.customer-tag::before {
  content: ""; flex: none; width: 6px; height: 6px; border-radius: 50%;
  background-image: var(--brand-gradient);
}

/* Backend — customer order progress (the five LOCKED stages). Vertical
   stepper; reuses the .timeline dot/line language + existing tokens, no new
   visual language. done = filled gradient dot; current = ringed dot; todo =
   hollow. A cancelled order shows how far it got and no "current". */
.order-steps { list-style: none; position: relative; margin: 0; padding: .25rem 0 .25rem 1.6rem; }
.order-steps::before { content: ""; position: absolute; left: 6px; top: .8rem; bottom: .8rem; width: 2px; background: var(--p-line); }
.order-steps li { position: relative; padding: .1rem 0 1rem; }
.order-steps li:last-child { padding-bottom: 0; }
.order-steps li::before {
  content: ""; position: absolute; left: -1.6rem; top: .12rem;
  width: 14px; height: 14px; border-radius: 50%;
  background: #fff; border: 2px solid var(--p-border-strong);
}
.order-steps li.is-done::before { border-color: transparent; background-image: var(--brand-gradient); }
.order-steps li.is-current::before { border-color: var(--brand-accent-secondary); box-shadow: 0 0 0 4px var(--brand-soft); }
.order-steps__label { font-size: .86rem; font-weight: 600; color: var(--p-text-faint); }
.order-steps li.is-done .order-steps__label { color: var(--p-text-muted); }
.order-steps li.is-current .order-steps__label { color: var(--p-text-strong); }
.order-steps--cancelled li::before { border-color: var(--p-border-strong); background-image: none; }
.order-steps--cancelled li.is-done::before { border-color: transparent; background: var(--p-border-strong); }
.order-steps--cancelled .order-steps__label { color: var(--p-text-faint); }

/* key/value inside a .customer-module — stacked pairs, dashboard rhythm */
.customer-kv { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem 2rem; }
.customer-kv > div { display: flex; flex-direction: column; min-width: 0; }
.customer-kv dt { font-size: .72rem; color: var(--p-text-muted); }
.customer-kv dd { margin: .25rem 0 0; font-size: .88rem; font-weight: 600; color: var(--p-text-strong); word-break: break-word; }
.customer-kv dd.is-brand { color: var(--brand-primary); }
.customer-kv--1 { grid-template-columns: 1fr; }
@media (max-width: 480px) { .customer-kv { grid-template-columns: 1fr; } }

/* flat list rows nested inside a module (no inner surface) */
.customer-list--flush { border: 0; box-shadow: none; border-radius: 0; background: none; overflow: visible; }
.customer-list--flush .customer-list__row { padding-inline: 0; }
.customer-list--flush .customer-list__row:first-child { padding-top: 0; }
.customer-list--flush .customer-list__row:last-child { padding-bottom: 0; }
.customer-list--flush a.customer-list__row:hover { background: none; }
.customer-list--flush a.customer-list__row:hover .customer-list__title { color: var(--brand-primary); }

/* stacked quick-action tiles for the detail side column */
.customer-qa { display: flex; flex-direction: column; gap: .5rem; }
.customer-qa__tile {
  display: flex; align-items: center; gap: .75rem;
  padding: .7rem .8rem;
  border: 1px solid var(--p-border); border-radius: 12px;
  background: #fff; color: inherit;
  transition: border-color .16s var(--ease), background-color .16s var(--ease), transform .16s var(--ease);
}
.customer-qa__tile:hover { border-color: var(--p-border-strong); background: var(--p-surface-soft); transform: translateY(-1px); }
.customer-qa__ic {
  flex: none; width: 32px; height: 32px; border-radius: 9px;
  display: grid; place-items: center;
  background: var(--brand-soft); color: var(--brand-primary);
}
.customer-qa__ic svg { width: 15px; height: 15px; }
.customer-qa__tile--grad .customer-qa__ic { background-image: var(--brand-gradient); color: #fff; }
.customer-qa__body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.customer-qa__title { font-size: .84rem; font-weight: 600; color: var(--p-text-strong); }
.customer-qa__sub { font-size: .73rem; color: var(--p-text-muted); margin-top: .05rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.customer-qa__go { flex: none; color: var(--p-text-faint); transition: transform .16s var(--ease); }
.customer-qa__go svg { width: 14px; height: 14px; }
.customer-qa__tile:hover .customer-qa__go { color: var(--brand-accent-secondary); transform: translateX(2px); }

/* =============================================================
   SHARED CUSTOMER LIST SYSTEM
   Ödemelerim · Faturalarım · Destek Taleplerim are ONE system:
   desktop = semantic <table>; mobile (<768px) = stacked record cards.
   Surface = white + subtle border + one thin brand-gradient line;
   accent shows only in that line, icons, the active page and hover.
   ============================================================= */
.customer-list-shell {
  position: relative;
  background: var(--p-surface);
  border: 1px solid var(--p-border);
  border-radius: var(--p-radius-lg);
  box-shadow: var(--p-shadow-card);
  overflow: hidden;
}
/* the short brand accent mark is shared — see "brand accent mark" block above */

.customer-list-toolbar {
  display: flex; flex-wrap: wrap; align-items: center; gap: .7rem 1rem;
  padding: .8rem .95rem;
  border-bottom: 1px solid var(--p-line);
}
.customer-list-toolbar .p-search { flex: 1 1 200px; max-width: 300px; }
.customer-list-toolbar .p-search input { background: var(--p-surface-soft); border-color: var(--p-border); }
.customer-list-toolbar .p-search input:focus { background: #fff; }
.customer-list-toolbar .customer-filter { margin-left: auto; }
.customer-list-toolbar__count { margin-left: auto; font-size: .8rem; color: var(--p-text-muted); white-space: nowrap; }
.customer-list-toolbar__count b { font-weight: 700; color: var(--p-text-strong); }

.customer-data-table { width: 100%; border-collapse: collapse; font-size: .86rem; }
.customer-data-table thead th {
  padding: .78rem 1.15rem; text-align: left;
  font-size: .68rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
  color: var(--p-text-muted); background: var(--p-surface-soft);
  border-bottom: 1px solid var(--p-border); white-space: nowrap;
}
.customer-data-table th.is-num, .customer-data-table td.is-num { text-align: right; font-variant-numeric: tabular-nums; }
.customer-data-table th.is-end, .customer-data-table td.is-end  { text-align: right; white-space: nowrap; }
.customer-data-table tbody td {
  padding: .9rem 1.15rem; border-bottom: 1px solid var(--p-line);
  color: var(--p-text); vertical-align: middle;
}
.customer-data-table tbody tr:last-child td { border-bottom: 0; }
/* row hover — shared by Ödemelerim, Faturalarım, Destek Taleplerim:
   subtle neutral wash + a 3px brand-gradient accent on the left edge */
.customer-data-table__row { transition: background-color .18s var(--ease); }
.customer-data-table__row[data-href] { cursor: pointer; }
.customer-data-table tbody td:first-child { position: relative; }
.customer-data-table__row:hover,
.customer-data-table__row:focus-within { background: var(--p-surface-soft); }
.customer-data-table__row:hover > td:first-child::after,
.customer-data-table__row:focus-within > td:first-child::after {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  background-image: var(--brand-gradient);
}

.customer-data-table__id { font-weight: 700; color: var(--p-text-strong); font-variant-numeric: tabular-nums; white-space: nowrap; }
.customer-data-table__svc { color: var(--p-text-strong); font-weight: 600; }
.customer-data-table__stack { display: flex; flex-direction: column; gap: .1rem; }
.customer-data-table__amount { font-weight: 700; color: var(--p-text-strong); font-variant-numeric: tabular-nums; white-space: nowrap; }
.customer-data-table__muted { color: var(--p-text-muted); font-size: .8rem; }

/* totals row — a labelled summary line, never a naked numeric row */
.customer-data-table tfoot th,
.customer-data-table tfoot td {
  padding: .9rem 1.15rem;
  border-top: 2px solid var(--p-border);
  background: var(--p-surface-soft);
  font-variant-numeric: tabular-nums;
}
.customer-data-table tfoot th {
  text-align: left; text-transform: none; letter-spacing: 0;
  font-size: .82rem; font-weight: 700; color: var(--p-text-strong); white-space: nowrap;
}
.customer-data-table tfoot .customer-data-table__amount { font-size: 1.02rem; }

/* record status — the .st-dot language + an optional small sub-line */
.customer-record-status { display: inline-flex; flex-direction: column; gap: .3rem; align-items: flex-start; }
.customer-record-status__sub { font-size: .71rem; font-weight: 500; color: var(--p-text-muted); padding-left: .1rem; }

/* =============================================================
   STATUS CHIP — one lightweight component for every customer state
   The panel status language is .st-dot (dot + label). Across the
   customer panel it also gets a subtle bordered surface so payment,
   support and service states all read as one calm, scannable chip —
   never a Bootstrap badge, filled pill or solid capsule. Semantic
   colour still lives only in the dot + text; the surface stays white
   and the border is a faint tint of the same hue.
   ============================================================= */
.panel--customer .st-dot {
  padding: .26rem .5rem .26rem .55rem;
  border: 1px solid var(--p-border);
  border-radius: 9px;
  background: var(--p-surface);
  font-size: .76rem;
  line-height: 1.25;
}
.panel--customer .st-dot--ok      { border-color: var(--st-ok-bd); }
.panel--customer .st-dot--warn    { border-color: var(--st-warn-bd); }
.panel--customer .st-dot--danger  { border-color: var(--st-danger-bd); }
.panel--customer .st-dot--info    { border-color: var(--st-info-bd); }
.panel--customer .st-dot--neutral { border-color: var(--st-neutral-bd); }
.panel--customer .st-dot--check svg { width: 13px; height: 13px; }

/* table action buttons (Detayı Gör / Faturayı İndir / Görüntüle) reuse the
   shared .customer-action .customer-action--secondary .customer-action--sm. */

/* pagination */
.customer-pagination {
  display: flex; align-items: center; justify-content: center; gap: .3rem;
  padding: .85rem; border-top: 1px solid var(--p-line);
}
.customer-pagination button {
  min-width: 34px; height: 34px; padding: 0 .7rem;
  display: inline-flex; align-items: center; justify-content: center; gap: .3rem;
  border: 1px solid var(--p-border-strong); border-radius: 9px;
  background: #fff; color: var(--brand-primary);
  font-family: inherit; font-size: .8rem; font-weight: 600; cursor: pointer;
  transition: border-color .16s var(--ease), background-color .16s var(--ease);
}
.customer-pagination button:hover:not([disabled]):not(.is-active) { border-color: rgba(20, 43, 81, .28); background: var(--p-surface-soft); }
.customer-pagination button.is-active { background-image: var(--brand-gradient); color: #fff; border-color: transparent; cursor: default; }
.customer-pagination button[disabled] { opacity: .4; cursor: default; }

/* the table scrolls inside its own box on the narrow laptop range;
   below the sidebar breakpoint it turns into cards and never scrolls */
.p-tablewrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }

.customer-list-shell .p-empty { border-top: 1px solid var(--p-line); border-radius: 0; box-shadow: none; }
[data-filter-scope].customer-list-shell:not(:has(.customer-data-table__row:not([hidden]))) .p-tablewrap,
[data-filter-scope].customer-list-shell:not(:has(.customer-data-table__row:not([hidden]))) .customer-pagination { display: none; }


/* MOBILE / TABLET / SMALL LAPTOP — the table becomes stacked record cards.
   With the 262px sidebar back at >=992px the content column is still too
   narrow for a 6–7 column table until ~1200px, so cards run up to there. */
@media (max-width: 1199.98px) {
  .p-tablewrap { overflow-x: visible; }
  .customer-data-table, .customer-data-table tbody { display: block; }
  .customer-data-table thead { display: none; }
  .customer-data-table__row {
    display: block;
    padding: 1rem 1.1rem; border-bottom: 1px solid var(--p-line);
  }
  .customer-data-table__row:last-child { border-bottom: 0; }
  .customer-data-table__row:hover > td:first-child::after,
  .customer-data-table__row:focus-within > td:first-child::after { display: none; }
  .customer-data-table tbody td {
    padding: .34rem 0; border: 0;
    display: flex; align-items: baseline; justify-content: space-between; gap: 1rem;
  }
  .customer-data-table tbody td::before {
    content: attr(data-label); flex: none;
    font-size: .72rem; font-weight: 600; letter-spacing: .03em; text-transform: uppercase; color: var(--p-text-muted);
  }
  .customer-data-table tbody td > * { text-align: right; }
  .customer-data-table__stack { align-items: flex-end; }
  .customer-data-table .customer-record-status { align-items: flex-end; }
  .customer-data-table .customer-record-status__sub { padding-left: 0; }

  .customer-data-table td.is-hero {
    display: block; padding: 0 0 .6rem; margin-bottom: .5rem;
    border-bottom: 1px solid var(--p-line);
  }
  .customer-data-table td.is-hero::before { display: none; }
  .customer-data-table td.is-hero > * { text-align: left; }
  .customer-data-table td.is-hero .customer-data-table__id { font-size: .98rem; }

  .customer-data-table td.is-action {
    display: flex; justify-content: flex-end; margin-top: .85rem; padding: 0;
  }
  .customer-data-table td.is-action::before { display: none; }
  .customer-data-table td.is-action > * { text-align: center; }

  .customer-list-toolbar { padding: .75rem .8rem; }
  .customer-list-toolbar .p-search { max-width: none; }

  /* totals row stacks into labelled lines (Net Toplam / KDV / Toplam Tutar) */
  .customer-data-table tfoot { display: block; border-top: 2px solid var(--p-border); background: var(--p-surface-soft); }
  .customer-data-table tfoot tr { display: block; padding: .55rem 1.1rem .7rem; }
  .customer-data-table tfoot th { display: none; }
  .customer-data-table tfoot td {
    display: flex; align-items: baseline; justify-content: space-between; gap: 1rem;
    padding: .3rem 0; border: 0; background: none;
  }
  .customer-data-table tfoot td::before {
    content: attr(data-label); flex: none;
    font-size: .72rem; font-weight: 600; letter-spacing: .03em; text-transform: uppercase; color: var(--p-text-muted);
  }
  .customer-data-table tfoot td > * { text-align: right; }
  .customer-data-table tfoot td:last-child {
    margin-top: .35rem; padding-top: .5rem; border-top: 1px solid var(--p-line);
  }
  .customer-data-table tfoot td:last-child::before { color: var(--p-text-strong); font-weight: 700; }
}

@media (max-width: 480px) {
  .customer-data-table td.is-action > * { display: flex; width: 100%; justify-content: center; }
}

/* small note line under a list */
.customer-hint {
  display: flex; align-items: flex-start; gap: .55rem;
  font-size: .8rem; color: var(--p-text-muted); line-height: 1.5;
}
.customer-hint svg { flex: none; width: 15px; height: 15px; color: var(--p-text-faint); margin-top: .12rem; }
.customer-hint b { color: var(--p-text-strong); font-weight: 600; }

/* =============================================================
   ÖDEME TALEBİ  —  hizmet-odemesi.html
   A premium invoice-style document.  White surface, ~960px,
   fine separators, minimal gradient.  Print-friendly.
   ============================================================= */
.customer-doc {
  max-width: 960px; margin-inline: auto;
  background: var(--p-surface);
  border: 1px solid var(--p-border);
  border-radius: var(--p-radius-lg);
  box-shadow: var(--p-shadow-card);
  overflow: hidden;
}
.customer-doc__inner { padding: clamp(1.5rem, 1rem + 3vw, 3.25rem); }
.customer-doc__head {
  display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between;
  gap: 1.5rem; padding-bottom: 1.6rem; border-bottom: 1px solid var(--p-line);
}
.customer-doc__brand img { height: 34px; width: auto; }
.customer-doc__brand p { margin-top: .7rem; font-size: .78rem; color: var(--p-text-muted); line-height: 1.6; overflow-wrap: anywhere; }
.customer-doc__title { text-align: right; }
.customer-doc__title h2 {
  font-size: 1.05rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: var(--brand-primary);
}
.customer-doc__title dl { margin-top: .7rem; display: grid; grid-template-columns: auto auto; gap: .3rem .8rem; justify-content: end; font-size: .8rem; }
.customer-doc__title dt { color: var(--p-text-muted); text-align: right; }
.customer-doc__title dd { font-weight: 600; color: var(--p-text-strong); text-align: right; }

/* document status stamp — replaces the small badge on this page only.
   Large, uppercase, dashed outline, transparent fill, slight tilt. */
.doc-stamp {
  display: inline-block; margin-top: 1.1rem;
  padding: .46rem 1.05rem;
  border: 2px dashed currentColor; border-radius: 10px;
  font-size: clamp(1.35rem, 1.05rem + 1.3vw, 1.75rem);
  font-weight: 800; letter-spacing: .12em; text-transform: uppercase; line-height: 1;
  background: transparent;
  transform: rotate(-2deg);
}
.doc-stamp--unpaid    { color: var(--st-danger-fg); }
.doc-stamp--paid      { color: var(--st-ok-fg); }
.doc-stamp--cancelled { color: var(--p-text-muted); }

.customer-doc__grid {
  margin-top: 1.8rem; display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem 2.5rem;
}
.customer-doc__block h3 {
  font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  color: var(--p-text-faint); margin-bottom: .7rem;
}
.customer-doc__block p { font-size: .88rem; line-height: 1.7; color: var(--p-text); }
.customer-doc__block p b { color: var(--p-text-strong); font-weight: 600; }
.customer-doc__block .is-brand { color: var(--brand-primary); font-weight: 600; }

.customer-doc__items { margin-top: 2rem; width: 100%; border-collapse: collapse; }
.customer-doc__items thead th {
  font-size: .7rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
  color: var(--p-text-muted); text-align: right; padding: 0 0 .7rem;
  border-bottom: 1px solid var(--p-border-strong);
}
.customer-doc__items thead th:first-child { text-align: left; }
.customer-doc__items tbody td { padding: .9rem 0; border-bottom: 1px solid var(--p-line); font-size: .88rem; text-align: right; color: var(--p-text-strong); }
.customer-doc__items tbody td:first-child { text-align: left; font-weight: 600; }
.customer-doc__items tbody td .muted { display: block; font-weight: 400; font-size: .78rem; color: var(--p-text-muted); margin-top: .15rem; }

.customer-doc__totals { margin-top: 1.4rem; display: flex; justify-content: flex-end; }
.customer-doc__totals dl { width: min(340px, 100%); display: flex; flex-direction: column; gap: .55rem; }
.customer-doc__totals dl > div { display: flex; justify-content: space-between; gap: 1.5rem; }
.customer-doc__totals dt { font-size: .84rem; color: var(--p-text-muted); }
.customer-doc__totals dd { font-size: .88rem; font-weight: 600; color: var(--p-text-strong); text-align: right; font-variant-numeric: tabular-nums; }
.customer-doc__totals .is-grand {
  padding-top: .8rem; margin-top: .35rem; border-top: 1px solid var(--p-border-strong); align-items: baseline;
}
.customer-doc__totals .is-grand dt { font-size: .8rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--p-text-strong); }
.customer-doc__totals .is-grand dd {
  font-size: 1.5rem; font-weight: 700; letter-spacing: -.03em;
  background: var(--brand-gradient); -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: transparent;
}

.customer-doc__pay {
  margin-top: 2rem; padding: 1.25rem 1.4rem;
  background: var(--p-surface-soft); border: 1px solid var(--p-border); border-radius: 14px;
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 1.5rem;
}
.customer-doc__pay dl { display: flex; flex-wrap: wrap; gap: .5rem 2rem; }
.customer-doc__pay dt { font-size: .72rem; color: var(--p-text-muted); }
.customer-doc__pay dd { margin: .15rem 0 0; font-size: .9rem; font-weight: 700; color: var(--p-text-strong); font-variant-numeric: tabular-nums; }
/* the explanatory copy takes the row width beside the button — it must not
   wrap into a stack of 2–4 word lines on desktop */
.customer-doc__pay-info { flex: 1 1 360px; min-width: 0; }
.customer-doc__pay-cta { flex: none; display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.customer-doc__pay-hint { margin: 0; max-width: 62ch; font-size: .8rem; line-height: 1.6; color: var(--p-text-muted); }
.customer-doc__pay-hint b { color: var(--p-text-strong); font-weight: 600; }

/* payment-options info block — a calm navy-tinted surface, not a warning */
.customer-doc__payopts {
  margin-top: .9rem; padding: .95rem 1.1rem;
  display: flex; align-items: flex-start; gap: .75rem;
  position: relative; overflow: hidden;
  background: var(--brand-soft); border: 1px solid rgba(20, 43, 81, .12); border-radius: 12px;
}
.customer-doc__payopts::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  background-image: var(--brand-gradient);
}
.customer-doc__payopts-ic {
  flex: none; width: 34px; height: 34px; display: grid; place-items: center;
  border-radius: 9px; background: #fff; color: var(--brand-primary);
  border: 1px solid rgba(20, 43, 81, .12);
}
.customer-doc__payopts-ic svg { width: 16px; height: 16px; }
.customer-doc__payopts-body { font-size: .82rem; line-height: 1.6; color: var(--p-text-muted); }
.customer-doc__payopts-body p { margin: 0; }
.customer-doc__payopts-body b { color: var(--p-text-strong); font-weight: 600; }
.customer-doc__payopts-title { font-size: .82rem; font-weight: 700; color: var(--brand-primary); margin-bottom: .15rem !important; }

.customer-doc__note {
  margin-top: 1.8rem; padding: .95rem 1.1rem;
  display: flex; align-items: flex-start; gap: .65rem;
  background: var(--p-surface-soft); border: 1px solid var(--p-border); border-radius: 12px;
  font-size: .8rem; line-height: 1.6; color: var(--p-text-muted);
}
.customer-doc__note svg { flex: none; width: 16px; height: 16px; color: var(--p-text-faint); margin-top: .1rem; }
.customer-doc__note b { color: var(--p-text-strong); font-weight: 600; }

.customer-doc__actions { max-width: 960px; margin: 1rem auto 0; display: flex; flex-wrap: wrap; gap: .55rem; }

@media (max-width: 640px) {
  .customer-doc__head { gap: 1rem; }
  .customer-doc__title, .customer-doc__title dl, .customer-doc__title dt, .customer-doc__title dd { text-align: left; }
  .customer-doc__title dl { justify-content: start; }
  .customer-doc__grid { grid-template-columns: 1fr; gap: 1.3rem; }
  .customer-doc__items thead { display: none; }
  .customer-doc__items tbody td { display: flex; justify-content: space-between; gap: 1rem; padding: .35rem 0; border: 0; text-align: right; }
  .customer-doc__items tbody tr { display: block; padding: .85rem 0; border-bottom: 1px solid var(--p-line); }
  .customer-doc__items tbody td::before { content: attr(data-label); color: var(--p-text-muted); font-weight: 500; text-align: left; }
  .customer-doc__items tbody td:first-child { display: block; text-align: left; margin-bottom: .3rem; }
  .customer-doc__items tbody td:first-child::before { content: ""; display: none; }
  .customer-doc__items tbody td:first-child .muted { margin-top: .1rem; }
  .customer-doc__totals dl { width: 100%; }
}

/* ---- payment document: corporate contact block + KDV rate ---------- */
.customer-doc__contact { margin-top: .7rem; display: flex; flex-direction: column; gap: .28rem;
  font-size: .78rem; color: var(--p-text-muted); line-height: 1.5; overflow-wrap: anywhere; }
.customer-doc__contact > b { color: var(--p-text-strong); font-weight: 700; font-size: .84rem; }
.customer-doc__contact span { display: flex; gap: .5rem; }
.customer-doc__contact .k { flex: none; min-width: 64px; color: var(--p-text-faint); }
.customer-doc__totals-rate { font-size: .72rem; font-weight: 600; color: var(--p-text-faint); margin-left: .25rem; }

/* ---- payment document: deadline + Ödeme Yap strip ----------------- */
.customer-doc__pay-info { display: flex; flex-direction: column; gap: .55rem; }
.pay-deadline { display: inline-flex; align-items: center; gap: .45rem; align-self: flex-start;
  padding: .4rem .7rem; border: 1px solid var(--p-border); border-radius: 999px;
  background: #fff; font-size: .8rem; color: var(--p-text); }
.pay-deadline svg { width: 14px; height: 14px; color: var(--p-text-faint); }
.pay-deadline b { color: var(--p-text-strong); font-weight: 600; font-variant-numeric: tabular-nums; }
.pay-deadline.is-over { border-color: var(--st-danger-bd); color: var(--st-danger-fg); }
.pay-deadline.is-over svg { color: var(--st-danger-fg); }
.pay-deadline__left { color: var(--p-text-muted); }

/* ---- payment method modal --------------------------------------- */
/* the bank-transfer step wants room to breathe: a wider desktop dialog and
   comfortable internal spacing, still snug on phones */
.pay-modal-dialog { max-width: 720px; }
.pay-modal { position: relative; border: 1px solid var(--p-border); border-radius: var(--p-radius-lg);
  padding: clamp(1.4rem, 1rem + 1.5vw, 2rem); }
.pay-modal__x { position: absolute; top: .8rem; right: .8rem; width: 32px; height: 32px; z-index: 2;
  display: grid; place-items: center; border: 0; background: none; color: var(--p-text-faint);
  cursor: pointer; border-radius: 8px; transition: color .16s var(--ease), background-color .16s var(--ease); }
.pay-modal__x svg { width: 16px; height: 16px; }
.pay-modal__x:hover { color: var(--p-text-strong); background: var(--p-surface-soft); }
.pay-modal__body h2 { font-size: 1.18rem; font-weight: 700; padding-right: 1.5rem; color: var(--brand-primary); }
.pay-modal__lead { margin-top: .5rem; font-size: .88rem; color: var(--p-text-muted); line-height: 1.6; }
.pay-modal__lead b { color: var(--p-text-strong); }
/* thin orange-gradient accent detail under a heading */
.pay-modal__accent { display: block; width: 46px; height: 3px; margin-top: .85rem;
  border-radius: 3px; background-image: var(--brand-gradient); }
.pay-modal__foot { margin-top: 1.2rem; padding-top: 1rem; border-top: 1px solid var(--p-line);
  display: flex; gap: .5rem; align-items: flex-start;
  font-size: .78rem; line-height: 1.6; color: var(--p-text-muted); }
.pay-modal__foot svg { flex: none; width: 14px; height: 14px; color: var(--p-text-faint); margin-top: .15rem; }
.pay-modal__foot b { color: var(--p-text-strong); font-weight: 600; }
.pay-modal__back { display: inline-flex; align-items: center; gap: .3rem; margin-bottom: 1rem;
  border: 0; background: none; padding: 0; cursor: pointer; font: inherit; font-size: .8rem;
  font-weight: 600; color: var(--p-text-muted); }
.pay-modal__back svg { width: 14px; height: 14px; }
.pay-modal__back:hover { color: var(--p-text-strong); }

/* bank step — themed header block */
.pay-modal__hd { display: flex; align-items: flex-start; gap: .85rem; padding-bottom: 1rem; }
.pay-modal__hd-ic { flex: none; width: 42px; height: 42px; display: grid; place-items: center;
  border-radius: 11px; background: var(--brand-soft); color: var(--brand-primary); }
.pay-modal__hd-ic svg { width: 20px; height: 20px; }
.pay-modal__hd-txt { flex: 1 1 auto; min-width: 0; }
.pay-modal__hd-txt p { margin: .3rem 0 0; font-size: .82rem; line-height: 1.55; color: var(--p-text-muted); }
.pay-modal__body--bank > .pay-modal__accent { margin-top: 0; margin-bottom: .2rem; }

.pay-choice { margin-top: 1.15rem; display: flex; flex-direction: column; gap: .6rem; }
.pay-choice__opt { display: flex; align-items: center; gap: .85rem; width: 100%; text-align: left;
  padding: .9rem 1rem; border: 1px solid var(--p-border); border-radius: 12px; background: #fff;
  cursor: pointer; font: inherit; transition: border-color .16s var(--ease), background-color .16s var(--ease); }
.pay-choice__opt:not(:disabled):hover { border-color: rgba(20, 43, 81, .28); background: var(--p-surface-soft); }
.pay-choice__opt.is-soon { cursor: default; opacity: .72; }
.pay-choice__ic { flex: none; width: 38px; height: 38px; display: grid; place-items: center;
  border-radius: 10px; background: var(--p-surface-soft); color: var(--brand-primary); }
.pay-choice__ic svg { width: 18px; height: 18px; }
.pay-choice__txt { display: flex; flex-direction: column; gap: .1rem; flex: 1 1 auto; min-width: 0; }
.pay-choice__t { font-size: .9rem; font-weight: 600; color: var(--p-text-strong); }
.pay-choice__s { font-size: .78rem; color: var(--p-text-muted); }
.pay-choice__go { flex: none; color: var(--p-text-faint); }
.pay-choice__go svg { width: 16px; height: 16px; }
.pay-soon { flex: none; padding: .2rem .5rem; border-radius: 999px; font-size: .7rem; font-weight: 700;
  background: var(--st-warn-sf); color: var(--st-warn-fg); }

.pay-ref { margin-top: 1.15rem; padding: 1rem 1.1rem; border: 1px solid var(--p-border);
  border-radius: 12px; background: var(--p-surface-soft); }
.pay-ref p { margin: 0 0 .6rem; font-size: .83rem; line-height: 1.6; color: var(--p-text); }
.pay-ref p b { color: var(--p-text-strong); font-weight: 600; }
.pay-ref__row { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap;
  padding: .55rem .7rem; background: #fff; border: 1px solid var(--p-border); border-radius: 9px; }
.pay-ref__row code, .pay-bank__ibanval { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: .95rem; font-weight: 600; letter-spacing: .04em; color: var(--p-text-strong); overflow-wrap: anywhere; }
.pay-ref__row code { flex: 1 1 auto; }

/* premium per-account card: [logo] name / holder  —  IBAN row + copy */
/* gap = vertical breathing space BETWEEN separate bank cards (~18px desktop) */
.pay-bank { list-style: none; margin: 1.15rem 0 0; padding: 0; display: flex; flex-direction: column; gap: 1.15rem; }
.pay-bank__item { padding: 1rem 1.05rem; border: 1px solid var(--p-border); border-radius: 13px; background: #fff;
  display: flex; flex-direction: column; gap: .8rem; box-shadow: var(--p-shadow-card); }
.pay-bank__top { display: flex; align-items: center; gap: .85rem; }
.pay-bank__logo { flex: none; width: 52px; height: 52px; display: grid; place-items: center; overflow: hidden;
  background: #fff; border: 1px solid var(--p-border); border-radius: 11px; }
.pay-bank__logo img { max-width: 100%; max-height: 100%; object-fit: contain; display: block; }
.pay-bank__logo svg { width: 22px; height: 22px; color: var(--p-text-faint); }
.pay-bank__idn { display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
.pay-bank__name { font-size: .95rem; font-weight: 700; color: var(--brand-primary); }
.pay-bank__holder { font-size: .8rem; color: var(--p-text-muted); }
.pay-bank__holder .k { color: var(--p-text-faint); font-weight: 500; margin-right: .1rem; }
.pay-bank__ibanrow { display: flex; align-items: center; gap: .55rem; flex-wrap: wrap;
  padding: .6rem .75rem; background: var(--p-surface-soft); border: 1px solid var(--p-line); border-radius: 9px; }
.pay-bank__ibanlabel { flex: none; font-size: .68rem; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; color: var(--p-text-faint); }
.pay-bank__ibanval { flex: 1 1 12ch; }

.pay-copy { position: relative; flex: none; display: inline-grid; place-items: center; width: 30px; height: 30px;
  border: 1px solid var(--p-border); border-radius: 8px; background: #fff; color: var(--p-text-faint);
  cursor: pointer; transition: color .15s var(--ease), border-color .15s var(--ease); }
.pay-copy:hover { color: var(--p-text-strong); border-color: rgba(20, 43, 81, .28); }
.pay-copy svg { width: 14px; height: 14px; }
.pay-copy__done { position: absolute; right: calc(100% + .4rem); white-space: nowrap; font-size: .7rem;
  font-weight: 700; color: var(--st-ok-fg); opacity: 0; pointer-events: none; transition: opacity .15s var(--ease); }
.pay-copy.is-copied .pay-copy__done { opacity: 1; }

@media (max-width: 640px) {
  .customer-doc__pay { flex-direction: column; align-items: stretch; }
  .customer-doc__pay-info { flex-basis: auto; }
  .customer-doc__pay-cta { width: 100%; }
  .customer-doc__pay-cta .customer-action { width: 100%; justify-content: center; }
  .pay-bank { gap: .9rem; }            /* ~14px between cards on narrow screens */
  .pay-bank__top { align-items: flex-start; }
  .pay-bank__logo { width: 44px; height: 44px; }
  .pay-copy { width: 34px; height: 34px; }
}
@media print {
  .customer-doc__pay-cta, .customer-doc__payopts, .pay-modal { display: none !important; }
}

/* =============================================================
   YENİ SİPARİŞ  —  yeni-siparis.html
   Authenticated order flow. Reuses .customer-module / .st-dot /
   .customer-action; a two-column layout with a desktop-sticky
   summary and the package / add-on / theme cards.
   ============================================================= */
.order-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 340px;
  gap: clamp(1rem, .6rem + 1.2vw, 1.6rem);
  align-items: start;
}
.order-layout__main {
  min-width: 0;
  display: flex; flex-direction: column;
  gap: clamp(1rem, .7rem + 1vw, 1.4rem);
}
.order-layout__side { min-width: 0; }
.order-layout__side .order-summary {
  position: sticky;
  top: calc(var(--topbar-h) + 1.1rem);
}

/* ---- selected package card ----------------------------------
   Layout/content ported from the approved public order page
   (siparis.html — .order-package*): a Yıllık Paket/Seçili Paket
   meta row, then a title-left/price-right header row separated
   from the feature grid by ONE hairline (the only divider, same
   as the reference — never add more). Card chrome (surface,
   border, radius, the short top-left accent) stays the Customer
   Panel's own .customer-module language, not the public page's. */
.order-pkg__meta {
  display: flex; align-items: center; justify-content: space-between;
  gap: .75rem; margin-bottom: 1rem;
}
.order-pkg__tag {
  display: inline-flex; padding: .3rem .66rem; border-radius: 999px;
  background: var(--brand-soft);
  font-size: .68rem; font-weight: 600; letter-spacing: .09em; text-transform: uppercase;
  color: var(--brand-primary);
}
.order-pkg__badge {
  display: inline-flex; align-items: center; gap: .3rem; flex: none;
  padding: .36rem .8rem; border-radius: 999px;
  background-image: var(--brand-gradient); color: #fff;
  font-size: .74rem; font-weight: 600; line-height: 1; white-space: nowrap;
}
.order-pkg__badge svg { width: 12px; height: 12px; }

.order-pkg__top {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 1rem 1.5rem; flex-wrap: wrap;
  padding-bottom: 1.2rem;
}
.order-pkg__id { display: flex; align-items: center; gap: .7rem; min-width: 0; }
.order-pkg__ic {
  flex: none; width: 36px; height: 36px; border-radius: 11px;
  display: grid; place-items: center;
  background-image: var(--brand-gradient); color: #fff;
}
.order-pkg__ic svg { width: 17px; height: 17px; }
.order-pkg__id h3 { font-size: 1.14rem; font-weight: 700; letter-spacing: -.01em; color: var(--p-text-strong); }

.order-pkg__price { margin: 0; flex: none; text-align: right; line-height: 1.2; white-space: nowrap; }
.order-pkg__amount {
  font-size: 1.55rem; font-weight: 700; letter-spacing: -.02em;
  color: var(--p-text-strong); font-variant-numeric: tabular-nums;
}
.order-pkg__vat { margin-left: .3rem; font-size: .8rem; font-weight: 600; color: var(--p-text-muted); }
.order-pkg__billing { display: block; margin-top: .3rem; font-size: .76rem; font-weight: 500; color: var(--p-text-muted); }

.order-pkg__feats {
  list-style: none; margin: 1.25rem 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(2, 1fr); gap: .6rem 1.4rem;
}
.order-pkg__feats li {
  display: flex; align-items: center; gap: .55rem;
  font-size: .86rem; color: var(--p-text);
}
.order-pkg__chk {
  flex: none; width: 18px; height: 18px; border-radius: 999px;
  display: grid; place-items: center;
  background-image: var(--brand-gradient); color: #fff;
}
.order-pkg__chk svg { width: 11px; height: 11px; }
@media (max-width: 560px) {
  .order-pkg__price { text-align: left; }
  .order-pkg__feats { grid-template-columns: 1fr; }
}

/* ---- form error line (new-site fields) --------------------- */
.p-field__error { display: none; font-size: .76rem; color: var(--st-danger-fg); }
.p-field.is-invalid .p-field__error { display: block; }
.p-field.is-invalid .p-input,
.p-field.is-invalid .p-select,
.p-field.is-invalid .p-textarea {
  border-color: var(--st-danger-dot);
  box-shadow: 0 0 0 3px rgba(208, 84, 79, .14);
}

/* ---- theme preference (vertical, preview + demo list) -------
   Each row: custom radio · 16:9 preview (real screenshot, or an
   icon tile when none exists yet) · name + sector + description ·
   "İncele" (opens the theme demo in a new tab). The radio has TWO
   safe activation targets — .order-theme-row__pick and __head —
   both plain <label for>; the preview and "İncele" are separate
   <a> siblings, never nested in a label, so opening a demo can
   never also select the theme. Selected state = stronger border +
   a small brand-gradient bar on the left edge; never a filled
   orange row. --------------------------------------------------- */
.order-theme-list { display: flex; flex-direction: column; gap: .7rem; }

.order-theme-row {
  position: relative;
  display: grid;
  grid-template-columns: 22px 200px 1fr auto;
  grid-template-areas: "pick media head cta" "pick media desc cta";
  align-items: center;
  column-gap: 1.1rem; row-gap: .3rem;
  padding: .95rem 1.1rem;
  border: 1px solid var(--p-border-strong); border-radius: 14px;
  background: #fff;
  transition: border-color .16s var(--ease);
}
.order-theme-row::before {
  content: "";
  position: absolute; top: 8px; bottom: 8px; left: 0;
  width: 3px; border-radius: 0 999px 999px 0;
  background-image: var(--brand-gradient);
  opacity: 0; transform: scaleY(.4);
  transition: opacity .16s var(--ease), transform .16s var(--ease);
}
.order-theme-row:has(.order-theme-row__radio:checked) { border-color: var(--brand-accent-secondary); }
.order-theme-row:has(.order-theme-row__radio:checked)::before { opacity: 1; transform: scaleY(1); }
.order-theme-row:has(.order-theme-row__radio:focus-visible) { outline: 2px solid rgba(20, 43, 81, .35); outline-offset: 2px; }

.order-theme-row__radio { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.order-theme-row__pick { grid-area: pick; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.order-theme-row__dot {
  width: 20px; height: 20px; border-radius: 999px;
  border: 1.5px solid var(--p-border-strong);
  display: grid; place-items: center;
  transition: border-color .16s var(--ease);
}
.order-theme-row__dot::after {
  content: ""; width: 10px; height: 10px; border-radius: 999px;
  background-image: var(--brand-gradient);
  transform: scale(0); transition: transform .16s var(--ease);
}
.order-theme-row__radio:checked + .order-theme-row__dot { border-color: var(--brand-accent-secondary); }
.order-theme-row__radio:checked + .order-theme-row__dot::after { transform: scale(1); }

.order-theme-row__media {
  grid-area: media; display: block; overflow: hidden;
  width: 100%; aspect-ratio: 16 / 9;
  border: 1px solid var(--p-border); border-radius: 11px;
  background: var(--p-surface-soft);
}
.order-theme-row__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.order-theme-row__media--placeholder {
  display: grid; place-items: center;
  background-image: linear-gradient(135deg, var(--brand-soft), var(--brand-soft-2));
  color: var(--brand-primary);
}
.order-theme-row__media--placeholder svg { width: 24px; height: 24px; }

.order-theme-row__head { grid-area: head; display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; cursor: pointer; }
.order-theme-row__name { font-size: .94rem; font-weight: 700; color: var(--p-text-strong); }
.order-theme-row__sector {
  font-size: .68rem; font-weight: 600; letter-spacing: .02em;
  color: var(--p-text-muted); background: var(--p-surface-soft);
  border: 1px solid var(--p-border); border-radius: 999px; padding: .1rem .5rem;
}
.order-theme-row__desc { grid-area: desc; font-size: .82rem; line-height: 1.5; color: var(--p-text-muted); }
.order-theme-row__cta { grid-area: cta; }

/* "Daha Sonra Belirleyeceğim" — always visible above the paginated
   catalog, never counted as one of its pages */
.order-theme-row--simple { display: flex; align-items: center; gap: .9rem; cursor: pointer; }
.order-theme-row--simple .order-theme-row__simple-body { flex: 1 1 auto; min-width: 0; }
.order-theme-row--simple .order-theme-row__name { display: block; font-size: .9rem; }
.order-theme-row--simple .order-theme-row__desc { display: block; margin-top: .2rem; }

/* ~30-theme catalog, paginated 5-at-a-time by customer-order.js (native
   `hidden` on the rows outside the current page); reuses the shared
   .customer-pagination look from the list pages, lightly re-tuned since
   it isn't sitting inside a .customer-list-shell here. */
.order-theme-pager-list { display: flex; flex-direction: column; gap: .7rem; }
.order-theme-pagination {
  border-top: 0; padding: .2rem 0 0;
}

/* Below ~1200px the 262px sidebar leaves too little room for the
   200px preview + text + "İncele" to share one row (same threshold
   as the customer-data-table mobile/desktop switch below). */
@media (max-width: 1199.98px) {
  .order-theme-row {
    grid-template-columns: 22px 1fr;
    grid-template-areas: "pick head" "media media" "desc desc" "cta cta";
    row-gap: .7rem;
  }
  .order-theme-row__media { max-width: 260px; }
  .order-theme-row__cta { width: 100%; justify-content: center; }
}

/* ---- optional add-on (selectable) ------------------------- */
.order-addon {
  display: flex; align-items: flex-start; gap: .9rem;
  padding: 1rem 1.1rem;
  border: 1px solid var(--p-border-strong); border-radius: 14px;
  background: #fff; cursor: pointer;
  transition: border-color .16s var(--ease);
}
.order-addon__in { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.order-addon__ic {
  flex: none; width: 38px; height: 38px; border-radius: 11px;
  display: grid; place-items: center;
  background: var(--brand-soft); color: var(--brand-primary);
  transition: background-image .16s var(--ease), color .16s var(--ease);
}
.order-addon__ic svg { width: 18px; height: 18px; }
.order-addon__body { flex: 1 1 auto; min-width: 0; }
.order-addon__row { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.order-addon__name { font-size: .92rem; font-weight: 600; color: var(--p-text-strong); }
.order-addon__row .st-dot { flex: none; }
/* "Tek Sefer Ödeme" — the shared .st-dot--ok green (dot + text), with a
   faint green fill instead of the usual white chip surface, scoped to
   this one card so the "Aktif" status chips elsewhere stay untouched. */
.order-addon__row .st-dot--ok { background: var(--st-ok-sf); }
.order-addon__desc { display: block; margin-top: .4rem; font-size: .82rem; line-height: 1.55; color: var(--p-text-muted); }
.order-addon__price {
  display: block; margin-top: .55rem;
  font-size: .95rem; font-weight: 700; color: var(--p-text-strong); font-variant-numeric: tabular-nums;
}
.order-addon__price small { font-size: .78rem; font-weight: 600; color: var(--p-text-muted); }
.order-addon__tick {
  flex: none; width: 24px; height: 24px; border-radius: 999px;
  display: grid; place-items: center;
  border: 1.5px solid var(--p-border-strong); color: transparent;
  transition: border-color .16s var(--ease), background-image .16s var(--ease), color .16s var(--ease);
}
.order-addon__tick svg { width: 13px; height: 13px; }
.order-addon:hover { border-color: var(--p-text-faint); }
.order-addon:has(.order-addon__in:checked) { border-color: var(--brand-accent-secondary); }
.order-addon:has(.order-addon__in:checked) .order-addon__ic { background-image: var(--brand-gradient); color: #fff; }
.order-addon:has(.order-addon__in:checked) .order-addon__tick {
  border-color: transparent; background-image: var(--brand-gradient); color: #fff;
}
.order-addon:has(.order-addon__in:focus-visible) { outline: 2px solid rgba(20, 43, 81, .35); outline-offset: 2px; }

/* ---- "İsteğe bağlı" tag ----------------------------------- */
.order-optional {
  margin-left: .5rem; font-size: .68rem; font-weight: 600; letter-spacing: .02em;
  color: var(--p-text-muted); background: var(--p-surface-soft);
  border: 1px solid var(--p-border); border-radius: 999px; padding: .1rem .5rem;
  vertical-align: middle;
}

/* ---- order summary -----------------------------------------
   Structure/hierarchy ported from siparis.html's .order-summary
   (item list · calc rows · gradient-emphasised total · footer
   CTA), on the Customer Panel's own .customer-module card chrome. */
.order-summary .customer-module__head {
  padding-bottom: 1rem; margin-bottom: 1rem; border-bottom: 1px solid var(--p-line);
}
.order-sum__lines { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; }
.order-sum__line { display: flex; justify-content: space-between; align-items: baseline; gap: .75rem; }
.order-sum__line[hidden] { display: none; }
.order-sum__name { font-size: .92rem; font-weight: 600; line-height: 1.35; color: var(--p-text-strong); min-width: 0; }
.order-sum__name span { display: block; margin-top: .25rem; font-size: .74rem; font-weight: 500; color: var(--p-text-muted); }
.order-sum__val { flex: none; font-weight: 700; font-size: .92rem; color: var(--p-text-strong); font-variant-numeric: tabular-nums; }

.order-sum__calc {
  margin-top: 1.15rem; padding-top: 1rem;
  border-top: 1px solid var(--p-line);
  display: grid; gap: .55rem;
}
.order-sum__row { display: flex; justify-content: space-between; gap: .75rem; font-size: .86rem; color: var(--p-text-muted); }
.order-sum__row b { font-weight: 600; color: var(--p-text-strong); font-variant-numeric: tabular-nums; }

.order-sum__total {
  margin-top: 1rem; padding-top: 1rem;
  border-top: 1px solid var(--p-border-strong);
  display: flex; justify-content: space-between; align-items: baseline; gap: .75rem;
}
.order-sum__total-label { font-weight: 600; font-size: 1rem; color: var(--p-text-strong); }
.order-sum__total-val {
  display: inline-block;
  font-weight: 700; font-size: clamp(1.35rem, 1.15rem + .5vw, 1.5rem); letter-spacing: -.01em;
  background-image: var(--brand-gradient);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: transparent;
  font-variant-numeric: tabular-nums;
}

.order-sum__foot { margin-top: 1.3rem; padding-top: 1.15rem; border-top: 1px solid var(--p-line); }
.order-sum__cta { width: 100%; }

/* ---- demo success modal --------------------------------- */
.order-done.modal-content {
  position: relative;
  border: 1px solid var(--p-border); border-radius: var(--p-radius-lg);
  padding: clamp(1.7rem, 1.2rem + 1.6vw, 2.5rem);
  text-align: center;
}
.order-done__x {
  position: absolute; top: .7rem; right: .7rem;
  width: 32px; height: 32px; display: grid; place-items: center;
  border: 0; background: none; color: var(--p-text-faint); cursor: pointer; border-radius: 8px;
  transition: color .16s var(--ease), background-color .16s var(--ease);
}
.order-done__x svg { width: 16px; height: 16px; }
.order-done__x:hover { color: var(--p-text-strong); background: var(--p-surface-soft); }
.order-done__mark {
  width: 56px; height: 56px; margin: 0 auto 1rem; border-radius: 999px;
  display: grid; place-items: center;
  background: var(--st-ok-sf); color: var(--st-ok-fg);
}
.order-done__mark svg { width: 28px; height: 28px; }
.order-done h2 { font-size: 1.25rem; font-weight: 700; }
.order-done__lead { margin-top: .55rem; font-size: .9rem; line-height: 1.6; color: var(--p-text-muted); }
.order-done__meta {
  margin: 1.3rem 0; padding: 1rem 1.1rem;
  border: 1px solid var(--p-border); border-radius: 12px; background: var(--p-surface-soft);
  display: flex; flex-wrap: wrap; justify-content: center; gap: .7rem 2.2rem;
}
.order-done__meta div { text-align: left; }
.order-done__meta dt { font-size: .68rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--p-text-faint); }
.order-done__meta dd { margin: .3rem 0 0; font-size: .92rem; font-weight: 700; color: var(--p-text-strong); font-variant-numeric: tabular-nums; }
.order-done__meta dd .st-dot { font-weight: 600; }
.order-done__acts { display: flex; flex-wrap: wrap; gap: .6rem; justify-content: center; }

/* ---- content-delivery method — two branded selection cards (real radios
   underneath; :has() drives the selected look, same pattern as .order-addon
   and .order-theme-row) ---------------------------------------------------- */
.order-delivery { display: grid; gap: .9rem; grid-template-columns: 1fr; margin-top: .3rem; }
@media (min-width: 700px) { .order-delivery { grid-template-columns: repeat(2, 1fr); } }
.order-delivery__opt {
  position: relative; display: flex; flex-direction: column; gap: .5rem;
  padding: 1.1rem 1.2rem; padding-right: 2.6rem;
  border: 1.5px solid var(--p-border-strong); border-radius: 14px;
  background: #fff; cursor: pointer;
  transition: border-color .16s var(--ease), background-color .16s var(--ease);
}
.order-delivery__opt:hover { border-color: var(--p-text-faint); }
.order-delivery__opt:has(.order-delivery__radio:checked) { border-color: var(--brand-accent-secondary); background: var(--brand-soft); }
.order-delivery__opt:has(.order-delivery__radio:focus-visible) { outline: 2px solid rgba(20, 43, 81, .35); outline-offset: 2px; }
.order-delivery__opt:has(.order-delivery__radio:disabled) { opacity: .55; cursor: not-allowed; }
.order-delivery__radio { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.order-delivery__badge {
  align-self: flex-start; font-size: .72rem; font-weight: 700; letter-spacing: .02em;
  padding: .2rem .6rem; border-radius: 999px;
  background: var(--p-surface-soft); color: var(--p-text-muted); border: 1px solid var(--p-border);
}
.order-delivery__badge--accent { background: var(--brand-soft); color: var(--brand-primary); border-color: transparent; }
.order-delivery__title { font-size: .96rem; font-weight: 700; color: var(--p-text-strong); }
.order-delivery__desc { font-size: .84rem; line-height: 1.6; color: var(--p-text-muted); }
.order-delivery__hint { font-size: .76rem; color: var(--p-text-faint); }
.order-delivery__check {
  position: absolute; top: 1.05rem; right: 1.05rem; width: 22px; height: 22px; border-radius: 999px;
  border: 1.5px solid var(--p-border-strong); display: grid; place-items: center; color: transparent;
  transition: border-color .16s var(--ease), background-image .16s var(--ease), color .16s var(--ease);
}
.order-delivery__check svg { width: 12px; height: 12px; display: block; }
.order-delivery__opt:has(.order-delivery__radio:checked) .order-delivery__check {
  border-color: transparent; background-image: var(--brand-gradient); color: #fff;
}
.order-delivery { margin-bottom: .5rem; }

/* ---- required acknowledgement — only shown for the self-managed option -- */
.order-ack {
  margin-top: .9rem; padding: .9rem 1rem;
  border: 1px solid var(--p-border); border-radius: 12px; background: var(--p-surface-soft);
}
.order-ack .p-check { align-items: flex-start; gap: .65rem; cursor: pointer; }
.order-ack .p-check input { margin-top: .15rem; }
.order-ack .p-check span { font-size: .84rem; line-height: 1.55; color: var(--p-text); }
.order-ack.is-invalid { border-color: var(--st-danger-bd); background: var(--st-danger-sf); }
.order-ack .p-field__error { margin-top: .5rem; }

/* ---- Order Summary confirmation modal (.pay-modal chrome + .order-sum__*
   money block + .customer-kv fact rows — all reused, not reinvented) ------ */
.order-confirm .customer-kv { margin: 1.1rem 0; }
.order-confirm .order-sum__lines { margin-top: 1rem; }
.order-confirm__acts {
  margin-top: 1.3rem; padding-top: 1.1rem; border-top: 1px solid var(--p-line);
  display: flex; gap: .6rem; justify-content: flex-end;
}

@media (max-width: 940px) {
  .order-layout { grid-template-columns: 1fr; }
  .order-layout__side .order-summary { position: static; }
}
@media (max-width: 480px) {
  .order-done__acts .customer-action { flex: 1 1 100%; }
  .order-confirm__acts { flex-direction: column-reverse; }
  .order-confirm__acts .customer-action { width: 100%; }
}

/* print — only the document, readable on paper */
@media print {
  .panel-sidebar, .panel-topbar, .panel-scrim, .panel-support,
  .customer-doc__actions, .customer-doc__pay-cta,
  .customer-page > .p-crumbs, .p-toast-wrap { display: none !important; }
  .customer-doc__pay { justify-content: flex-start; }
  .panel, .panel-shell, .panel-body, .panel-main { display: block; background: #fff; }
  .panel-main { padding: 0; }
  .panel-main__inner { max-width: none; }
  .customer-doc {
    border: 0; box-shadow: none; border-radius: 0; max-width: none;
  }
  .customer-doc::before { display: none; }
  .customer-doc__inner { padding: 0; }
  .customer-doc__totals .is-grand dd {
    -webkit-text-fill-color: var(--brand-primary); color: var(--brand-primary);
    background: none;
  }
  .customer-doc__note, .customer-doc__pay { background: #fff; }
  a[href]::after { content: ""; }
}

/* ---- support conversation: verified support-team identity --------- */
/* The support row reads a touch more premium than the customer row: a
   photo avatar (manually placed JPG, initials fallback), the team name and
   a small in-house blue verified badge — not a Meta mark, not a redesign. */
.msg--staff .msg__head {
  background:
    linear-gradient(0deg, rgba(84, 128, 212, .05), rgba(84, 128, 212, .05)),
    var(--p-surface-soft);
}
.msg__avatar--support { overflow: hidden; }
.msg__avatar--support img { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: inherit; }
.msg__verified {
  flex: none; display: inline-grid; place-items: center;
  width: 17px; height: 17px; border-radius: 50%;
  background: var(--st-info-dot); color: #fff;
  margin-left: -.15rem;
}
.msg__verified svg { width: 11px; height: 11px; }

/* ticket conversation — softer message header wrapping on small screens */
@media (max-width: 560px) {
  .panel--customer .msg__head { flex-wrap: wrap; }
  .panel--customer .msg__time { margin-left: 0; width: 100%; order: 3; }
}

@media (max-width: 991.98px) { .panel--customer { --topbar-h: 60px; } }

/* =============================================================
   AUTH PAGES (musteri-giris.html + sifremi-unuttum.html) —
   full-screen, single-card canvas. Entirely its own namespace
   (.c-auth*) — independent of the shared .auth* split-screen
   system in panel-core.css, which admin-login.html still uses.
   One white card, centered, short top-left brand accent, a
   full-page subtle technical grid behind it.
   ============================================================= */
.c-auth {
  position: relative; isolation: isolate;
  min-height: 100vh;
  display: flex; align-items: center; justify-content: center;
  padding: clamp(2rem, 1.4rem + 3vw, 4.5rem) 1.25rem;
  background: #fff;
}
.c-auth__bg {
  position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background-image:
    radial-gradient(60% 50% at 50% 35%, rgba(250, 164, 26, .07), transparent 70%),
    repeating-linear-gradient(to right, rgba(20, 43, 81, .045) 0 1px, transparent 1px 56px),
    repeating-linear-gradient(to bottom, rgba(20, 43, 81, .045) 0 1px, transparent 1px 56px);
}

.c-auth__wrap { position: relative; z-index: 1; width: 100%; max-width: 460px; }
.c-auth__logo { display: flex; justify-content: center; margin-bottom: 1.9rem; animation: c-auth-in .55s var(--ease) both; }
.c-auth__logo img { display: block; width: 168px; height: auto; }

.c-auth__card {
  position: relative;
  background: var(--p-surface);
  border: 1px solid var(--p-border-strong);
  border-radius: 24px;
  box-shadow: var(--p-shadow-card);
  padding: clamp(1.9rem, 1.6rem + 1vw, 2.5rem) clamp(1.6rem, 1.3rem + 1vw, 2.3rem);
  animation: c-auth-in .6s var(--ease) .08s both;
}
.c-auth__accent {
  position: absolute; top: 0; left: 1.4rem;
  width: 94px; height: 3px; border-radius: 999px;
  background-image: var(--brand-gradient);
}
@keyframes c-auth-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) { .c-auth__logo, .c-auth__card { animation: none; } }

.c-auth__eyebrow {
  font-size: .72rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--p-text-faint);
}
.c-auth__card h1 {
  margin: .55rem 0 1.75rem; font-size: clamp(1.35rem, 1.15rem + .8vw, 1.6rem);
  font-weight: 700; letter-spacing: -.01em; color: var(--p-text-strong);
}
/* sifremi-unuttum.html keeps a short supporting line under its h1;
   when present it takes over the bottom spacing h1 carries alone */
.c-auth__card h1:has(+ .c-auth__lead) { margin-bottom: .5rem; }
.c-auth__lead { font-size: .89rem; line-height: 1.55; color: var(--p-text-muted); margin-bottom: 1.9rem; }

.c-auth__field { margin-bottom: 1.15rem; }
.c-auth .p-field > label { margin-bottom: .4rem; display: inline-block; font-size: .82rem; font-weight: 600; color: var(--p-text-strong); }
.c-auth__control { position: relative; }
.c-auth__control .c-auth__ic {
  position: absolute; left: 1rem; top: 50%; transform: translateY(-50%);
  color: var(--p-text-faint); pointer-events: none;
}
.c-auth__control .c-auth__ic svg { display: block; width: 18px; height: 18px; }
.c-auth .p-input { height: 52px; padding: 0 1rem 0 2.7rem; border-radius: 13px; font-size: .92rem; }
.c-auth__control:has(.c-auth__pw-toggle) .p-input { padding-right: 2.8rem; }
.c-auth__pw-toggle {
  position: absolute; right: .4rem; top: 50%; transform: translateY(-50%);
  width: 34px; height: 34px; display: grid; place-items: center;
  border: 0; background: none; color: var(--p-text-faint); cursor: pointer; border-radius: 8px;
  transition: color .16s var(--ease);
}
.c-auth__pw-toggle:hover { color: var(--p-text-muted); }
.c-auth__pw-toggle svg { width: 17px; height: 17px; }

.c-auth__row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin: .3rem 0 1.4rem; font-size: .82rem; }
.c-auth__link { font-weight: 600; color: var(--brand-primary); transition: color .16s var(--ease); }
.c-auth__link:hover { color: var(--brand-accent-secondary); text-decoration: underline; }

/* custom "Beni Hatırla" checkbox — replaces the native accent-color box
   (looked like a plain dark square) with a fully custom control: empty
   rounded square at rest, brand-gradient fill + white check when ticked.
   Scoped to .c-auth only; the shared .p-check used elsewhere is untouched. */
.c-auth .p-check { gap: .55rem; }
.c-auth .p-check input[type="checkbox"] {
  appearance: none; -webkit-appearance: none; margin: 0; flex: none;
  width: 19px; height: 19px;
  border: 1.5px solid var(--p-border-strong); border-radius: 6px;
  background-color: #fff; background-repeat: no-repeat; background-position: center;
  cursor: pointer;
  transition: border-color .16s var(--ease), background-color .16s var(--ease);
}
.c-auth .p-check input[type="checkbox"]:hover { border-color: var(--p-text-faint); }
.c-auth .p-check input[type="checkbox"]:checked {
  border-color: transparent;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 6.5'/%3E%3C/svg%3E"),
    var(--brand-gradient);
  background-size: 11px 11px, 100% 100%;
}
.c-auth .p-check input[type="checkbox"]:focus-visible { outline: 2px solid rgba(20, 43, 81, .35); outline-offset: 2px; }

.c-auth__submit.customer-action { width: 100%; height: 52px; font-size: .95rem; }

/* form-level auth feedback (login error / reset notice). Added for Backend
   Phase 2A — the frozen prototype had no server-side feedback slot. Uses only
   existing status tokens; no new visual language. */
.c-auth__alert {
  margin-bottom: 1.3rem; padding: .75rem .9rem;
  border: 1px solid var(--st-danger-bd); border-radius: 11px;
  background: var(--st-danger-sf); color: var(--st-danger-fg);
  font-size: .83rem; line-height: 1.5;
}
.c-auth__alert--ok   { border-color: var(--st-ok-bd);   background: var(--st-ok-sf);       color: var(--st-ok-fg); }
.c-auth__alert--info { border-color: var(--p-border);   background: var(--p-surface-soft); color: var(--p-text-muted); }

/* sifremi-unuttum.html only — quiet "back to login" link under the form */
.c-auth__back {
  display: flex; align-items: center; justify-content: center; gap: .4rem;
  margin-top: 1.7rem;
  font-size: .84rem; font-weight: 600; color: var(--brand-primary);
  transition: color .16s var(--ease);
}
.c-auth__back svg { width: 15px; height: 15px; flex: none; transition: transform .16s var(--ease); }
.c-auth__back:hover { color: var(--brand-accent-secondary); }
.c-auth__back:hover svg { transform: translateX(-2px); }
@media (prefers-reduced-motion: reduce) { .c-auth__back:hover svg { transform: none; } }

/* musteri-giris.php ⇄ kayit.php cross-link — a quiet centered line beneath the
   form. Added for the customer self-registration page; reuses existing tokens
   and .c-auth__link, no new visual language. */
.c-auth__aside { margin-top: 1.6rem; text-align: center; font-size: .84rem; color: var(--p-text-muted); }
.c-auth__aside .c-auth__link { margin-left: .3rem; }

@media (max-width: 480px) {
  .c-auth__logo img { width: 148px; }
  .c-auth__card { border-radius: 20px; }
}
