:root {
    --ps-bg: #f6f7f9;
    --ps-card: #ffffff;
    --ps-text: #1d2327;
    --ps-muted: #667085;
    --ps-border: #d9dee6;
    --ps-primary: #2271b1;
    --ps-primary-dark: #135e96;
    --ps-danger: #b42318;
    --ps-success: #067647;
    --ps-success-bg: #ecfdf3;
    --ps-danger-bg: #fff1f0;
    --ps-radius: 12px;
    --ps-shadow: 0 12px 32px rgba(16, 24, 40, .07);
}

* { box-sizing: border-box; }
html { min-height: 100%; }
body {
    margin: 0;
    min-height: 100%;
    font-family: Tahoma, Arial, sans-serif;
    background: var(--ps-bg);
    color: var(--ps-text);
    line-height: 1.8;
    font-size: 14px;
}
a { color: var(--ps-primary); text-decoration: none; }
a:hover { color: var(--ps-primary-dark); }
img, svg { max-width: 100%; }
button, input, select, textarea { font-family: inherit; }

.container { width: min(1180px, calc(100% - 32px)); margin: 0 auto; }
.main { padding: 26px 0 42px; }
.footer { color: var(--ps-muted); padding: 24px 0; border-top: 1px solid var(--ps-border); }

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-height: 40px;
    border: 1px solid var(--ps-primary);
    border-radius: 8px;
    padding: 8px 18px;
    background: var(--ps-primary);
    color: #fff !important;
    cursor: pointer;
    font-size: 14px;
    line-height: 1.4;
    transition: .16s ease;
    white-space: nowrap;
}
.btn:hover { background: var(--ps-primary-dark); border-color: var(--ps-primary-dark); color: #fff !important; }
.btn:disabled { opacity: .55; cursor: not-allowed; }
.btn--ghost { background: #fff; color: var(--ps-primary) !important; }
.btn--ghost:hover { background: #f3f8fc; color: var(--ps-primary-dark) !important; }
.btn--small { min-height: 32px; padding: 4px 11px; font-size: 13px; }
.btn--full { width: 100%; }
.link-danger { border: 0; background: transparent; color: var(--ps-danger); cursor: pointer; font-family: inherit; padding: 0; }

.card {
    background: var(--ps-card);
    border: 1px solid var(--ps-border);
    border-radius: var(--ps-radius);
    box-shadow: var(--ps-shadow);
    padding: 22px;
    margin-bottom: 20px;
}
.card h1, .card h2, .page-head h1 { margin-top: 0; }
.muted { color: var(--ps-muted); }
.alert {
    border-radius: 10px;
    padding: 12px 14px;
    margin-bottom: 18px;
    border: 1px solid var(--ps-border);
    background: #fff;
}
.alert--success { background: var(--ps-success-bg); border-color: #abefc6; color: #054f31; }
.alert--danger { background: var(--ps-danger-bg); border-color: #fecdca; color: #7a271a; }

.form { display: grid; gap: 16px; }
.form label { display: grid; gap: 7px; font-weight: 700; }
input, select, textarea {
    width: 100%;
    border: 1px solid var(--ps-border);
    border-radius: 9px;
    padding: 10px 12px;
    font-size: 14px;
    background: #fff;
    color: var(--ps-text);
    outline: none;
    transition: border-color .15s ease, box-shadow .15s ease;
}
input:focus, select:focus, textarea:focus {
    border-color: var(--ps-primary);
    box-shadow: 0 0 0 3px rgba(34, 113, 177, .14);
}
textarea { resize: vertical; }
.checkbox { display: flex !important; align-items: center; gap: 8px !important; }
.checkbox input { width: auto; }
.compact-form { gap: 10px; }
.search-inline { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.search-inline input { flex: 1; min-width: 220px; }

.grid { display: grid; gap: 18px; }
.grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 14px; margin-bottom: 20px; }
.stat { background: #fff; border: 1px solid var(--ps-border); border-radius: var(--ps-radius); padding: 18px; box-shadow: var(--ps-shadow); }
.stat span { display: block; font-size: 25px; font-weight: 800; color: var(--ps-primary); line-height: 1.4; direction: ltr; text-align: right; }
.stat p { margin: 4px 0 0; color: var(--ps-muted); }

.page-head { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-bottom: 20px; }
.page-head h1 { margin-bottom: 4px; }
.page-head p { margin: 0; color: var(--ps-muted); }

.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; min-width: 760px; }
th, td { padding: 12px; border-bottom: 1px solid var(--ps-border); text-align: right; vertical-align: top; }
th { background: #f6f7f7; font-weight: 800; }
.row-actions { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }

.avatar {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: linear-gradient(135deg, #229ed9, #69cef4);
    color: #fff;
    font-size: 22px;
    font-weight: 900;
    box-shadow: 0 10px 24px rgba(34,158,217,.22);
    flex: 0 0 auto;
}
.avatar--small { width: 40px; height: 40px; font-size: 17px; }

.people-list { display: grid; gap: 10px; }
.person-row { display: flex; align-items: center; gap: 12px; border: 1px solid var(--ps-border); background: #fff; border-radius: 14px; padding: 10px; }
.person-main { flex: 1; display: grid; gap: 2px; min-width: 0; }
.person-main span { color: var(--ps-muted); font-size: 13px; }
.profile-cover { display: flex; align-items: center; gap: 18px; }
.profile-cover h1 { margin: 0 0 6px; }
.profile-action { margin-right: auto; }

@media (max-width: 920px) {
    .grid--2, .grid--3, .stats { grid-template-columns: 1fr; }
    .page-head { align-items: flex-start; flex-direction: column; }
}
@media (max-width: 560px) {
    .container { width: min(100% - 20px, 1180px); }
    .card { padding: 16px; }
    .actions, .search-inline { flex-direction: column; align-items: stretch; }
    .search-inline input { min-width: 0; }
    .profile-cover, .person-row { align-items: flex-start; flex-direction: column; }
    .profile-action { margin-right: 0; width: 100%; }
    .profile-action .btn { width: 100%; }
}

.optional-label {
    display: inline-flex;
    align-items: center;
    margin-right: 6px;
    padding: 2px 8px;
    border-radius: 999px;
    background: #eef6ff;
    color: #2271b1;
    font-size: 11px;
    font-weight: 700;
}

input.js-money-input {
    direction: ltr;
    text-align: left;
    font-family: Tahoma, Arial, sans-serif;
    letter-spacing: .2px;
}

/* v2.8 - IranSansWeb, avatar images, actions */
@font-face {
    font-family: 'IRANSansWeb';
    src: url('../fonts/IRANSansWeb.woff2') format('woff2'), url('../fonts/IRANSansWeb.woff') format('woff');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}
body, button, input, select, textarea {
    font-family: 'IRANSansWeb', 'IranSans', Tahoma, Arial, sans-serif !important;
}
.avatar { overflow: hidden; }
.avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: inherit;
    display: block;
}
.profile-avatar { width: 82px; height: 82px; font-size: 28px; }
.avatar--tiny { width: 28px; height: 28px; font-size: 12px; box-shadow: none; }
.form-hint { display: block; margin-top: 5px; color: var(--ps-muted); font-size: 12px; }
.btn--danger-outline {
    background: #fff;
    color: var(--ps-danger) !important;
    border-color: #fecdca;
}
.btn--danger-outline:hover { background: var(--ps-danger-bg); color: var(--ps-danger) !important; border-color: #fda29b; }
.profile-actions-form,
.private-actions-form { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.message__actions {
    display: flex;
    gap: 6px;
    margin-top: 6px;
    opacity: .75;
}
.message__actions button {
    border: 0;
    background: rgba(255,255,255,.72);
    color: inherit;
    border-radius: 999px;
    padding: 2px 9px;
    cursor: pointer;
    font-size: 11px;
}
.message__edited { display: block; margin-top: 2px; font-size: 10px; opacity: .65; }
.message--deleted .message__text { opacity: .68; font-style: italic; }
.result-top { display: flex; align-items: center; gap: 8px; margin-bottom: 5px; }
.friend-badge.is-danger { background: var(--ps-danger-bg); border-color: #fecdca; color: var(--ps-danger); }
.private-thread-row { justify-content: space-between; }
.private-thread-row .private-thread-link {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
    flex: 1;
}
@media (max-width: 620px) {
    .profile-actions-form,
    .private-actions-form { width: 100%; align-items: stretch; flex-direction: column; }
    .profile-actions-form .btn,
    .private-actions-form .btn { width: 100%; }
    .private-thread-row { align-items: stretch; }
    .private-thread-row .private-thread-link { width: 100%; }
}

.required-label{color:#dc2626;font-size:12px;font-weight:700;margin-right:4px}.optional-label{color:#64748b;font-size:12px;font-weight:700;margin-right:4px}
/* v2.10 - inline required/optional labels */
.field-label{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;line-height:1.8}
.field-label .required-label,.field-label .optional-label{display:inline-flex;align-items:center;margin-right:0;vertical-align:middle}

/* v2.11 fixes */
.optional-label{color:#dc2626!important;background:transparent!important;border:0!important;padding:0!important;font-size:12px;font-weight:700;margin-right:4px}
.required-label{color:#dc2626!important;background:transparent!important;border:0!important;padding:0!important}
.field-label{display:inline-flex!important;align-items:center!important;gap:6px!important;flex-wrap:wrap!important}
.section-title-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.inline-edit summary{cursor:pointer;color:#2271b1;font-weight:700;list-style:none}
.inline-edit-form{display:flex;gap:8px;align-items:center;margin-top:8px;min-width:280px}
.inline-edit-form input{min-width:220px}
.jalali-datepicker-wrap{position:relative;display:flex;align-items:center;gap:8px}
.jalali-datepicker-wrap input{flex:1}
.jalali-datepicker-button{width:42px;height:42px;border:1px solid var(--border,#d0d7de);border-radius:12px;background:#fff;cursor:pointer}
.jalali-datepicker-panel{position:absolute;z-index:50;top:calc(100% + 8px);right:0;width:292px;background:#fff;border:1px solid #dbe3ea;border-radius:16px;box-shadow:0 20px 45px rgba(15,23,42,.14);padding:12px;display:none;direction:rtl}
.jalali-datepicker-panel.is-open{display:block}
.jdp-head,.jdp-years{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.jdp-head button,.jdp-years button,.jdp-days button{border:0;background:#eef7fd;color:#0b7fbd;border-radius:10px;cursor:pointer;font-family:inherit;font-weight:700}
.jdp-head button{width:34px;height:34px;font-size:20px}
.jdp-years button{padding:7px 10px;font-size:12px}
.jdp-days{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.jdp-days button{height:34px;background:#f6f8fb;color:#1f2937}
.jdp-days button.active,.jdp-days button:hover{background:#25a8e0;color:#fff}
.emoji-btn{width:42px;height:42px;border:1px solid #d7e4ed;border-radius:14px;background:#fff;cursor:pointer;font-size:18px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.native-emoji-panel{position:absolute;bottom:calc(100% + 8px);right:12px;display:none;grid-template-columns:repeat(6,34px);gap:6px;background:#fff;border:1px solid #dbe3ea;border-radius:16px;box-shadow:0 18px 40px rgba(15,23,42,.14);padding:10px;z-index:60}
.native-emoji-panel.is-open{display:grid}
.native-emoji-panel button{border:0;background:#f6f8fb;border-radius:10px;width:34px;height:34px;cursor:pointer;font-size:18px}
.native-emoji-panel small{grid-column:1/-1;color:#64748b;font-size:11px;text-align:center;margin-top:4px}
.chat-form{position:relative}
.notification-list .person-main small{display:block;color:#64748b;margin-top:4px;line-height:1.8}
.maintenance-grid .card form{margin-top:10px}
.admin-chat-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* v2.13 - stable Jalali Date Picker */
.jalali-datepicker-wrap{position:relative!important;display:flex!important;align-items:center!important;gap:8px!important;width:100%}
.jalali-datepicker-wrap input{flex:1 1 auto!important;min-width:0!important}
.jalali-datepicker-button{flex:0 0 42px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;line-height:1!important;user-select:none!important}
.jalali-datepicker-panel{position:absolute!important;z-index:9999!important;top:calc(100% + 8px)!important;right:0!important;width:300px!important;max-width:calc(100vw - 32px)!important;max-height:360px!important;overflow:auto!important;background:#fff!important;border:1px solid #dbe3ea!important;border-radius:16px!important;box-shadow:0 22px 55px rgba(15,23,42,.18)!important;padding:12px!important;display:none!important;direction:rtl!important;text-align:center!important;touch-action:manipulation!important}
.jalali-datepicker-panel.is-open{display:block!important}
.jdp-week{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px;color:#64748b;font-size:11px;font-weight:800}
.jdp-week span{display:flex;align-items:center;justify-content:center;height:22px}
.jdp-days button,.jdp-head button,.jdp-years button{font-family:inherit!important;line-height:1!important;user-select:none!important}
.jdp-days button{display:flex!important;align-items:center!important;justify-content:center!important;min-width:0!important;padding:0!important}
@media (max-width: 520px){.jalali-datepicker-panel{right:50%!important;transform:translateX(50%)!important;width:min(300px,calc(100vw - 28px))!important}}

.link-button {
    border: 0;
    background: transparent;
    color: var(--ps-primary);
    cursor: pointer;
    font-family: inherit;
    padding: 0;
    font-weight: 700;
}

/* v2.17 - حذف کامل پیام و تیک ارسال/دیده‌شدن */
.message__meta-tail {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    direction: ltr;
}
.message__receipt {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 14px;
    font-size: 12px;
    line-height: 1;
    font-weight: 700;
    letter-spacing: -3px;
    color: rgba(64, 83, 98, .58);
    transform: translateY(1px);
}
.message__receipt.is-seen {
    color: #229ed9;
}
.message--mine .message__receipt {
    color: rgba(13, 94, 132, .62);
}
.message--mine .message__receipt.is-seen {
    color: #168acd;
}

/* v2.37 - notifications and tickets */
.btn--warning{background:#f59e0b!important;border-color:#f59e0b!important;color:#111827!important}
.ps-admin-menu-badge{margin-right:auto;background:#d63638;color:#fff;border-radius:999px;font-size:11px;line-height:1;padding:3px 7px;font-style:normal}
.system-notification-row{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid #e5e7eb;border-radius:16px;margin-bottom:10px;background:#fff}
.system-notification-row.is-unread{border-color:#93c5fd;background:#eff6ff}
.notification-icon{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#f3f4f6;flex:0 0 36px}
.ticket-view-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px;align-items:start}
.ticket-messages{display:flex;flex-direction:column;gap:12px}
.ticket-message{border:1px solid #e5e7eb;border-radius:18px;padding:12px;background:#fff;max-width:82%}
.ticket-message.is-mine{margin-right:auto;background:#dcf8c6;border-color:#b9e6a3}
.ticket-message.is-admin,.ticket-message.is-user{margin-left:auto;background:#fff}
.ticket-message-head{display:flex;align-items:center;gap:10px;margin-bottom:8px;color:#64748b;font-size:13px;flex-wrap:wrap}
.ticket-message-head strong{color:#111827}.ticket-message-body{white-space:pre-wrap;line-height:1.9}.ticket-list{display:flex;flex-direction:column;gap:10px;margin-top:14px}.ticket-row{display:block;text-decoration:none;color:inherit;border:1px solid #e5e7eb;border-radius:14px;padding:12px;background:#fff}.ticket-row span{display:block;color:#64748b;margin-top:5px;font-size:13px}.ticket-row em{display:inline-block;margin-top:8px;background:#ef4444;color:#fff;border-radius:999px;padding:2px 8px;font-size:12px;font-style:normal}.ticket-row.is-unread,.is-unread-row{background:#eff6ff!important}.ticket-close-form{margin-top:12px}.admin-ticket-grid{align-items:start}.ticket-stats{margin-top:0}.compact-people-list .person-row{text-decoration:none;color:inherit;border-bottom:1px solid #eef2f7}.message__actions .js-delete-user-room-messages{color:#b91c1c}
@media(max-width:920px){.ticket-view-layout{grid-template-columns:1fr}.ticket-message{max-width:100%}.admin-ticket-grid{grid-template-columns:1fr!important}}


/* v2.55 - theme toggle base */
html[data-theme="dark"] { color-scheme: dark; }
.ps-theme-toggle {
    width: auto;
    min-width: 42px;
    height: 42px;
    border: 1px solid rgba(34, 113, 177, .18);
    border-radius: 14px;
    padding: 0 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: #fff;
    color: var(--ps-primary);
    font: inherit;
    font-weight: 800;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 8px 22px rgba(16, 24, 40, .08);
    transition: background .16s ease, color .16s ease, border-color .16s ease, transform .16s ease;
}
.ps-theme-toggle:hover { transform: translateY(-1px); background: #f3f8fc; }
.ps-theme-toggle i { font-size: 15px; line-height: 1; }
html[data-theme="dark"] body:not(.user-shell):not(.admin-shell) {
    --ps-bg: #111827;
    --ps-card: #172033;
    --ps-text: #eef2f7;
    --ps-muted: #aeb8c7;
    --ps-border: #2a3548;
    --ps-primary: #60a5fa;
    --ps-primary-dark: #93c5fd;
    background: var(--ps-bg);
    color: var(--ps-text);
}
html[data-theme="dark"] body:not(.user-shell):not(.admin-shell) .card,
html[data-theme="dark"] body:not(.user-shell):not(.admin-shell) .alert,
html[data-theme="dark"] body:not(.user-shell):not(.admin-shell) input,
html[data-theme="dark"] body:not(.user-shell):not(.admin-shell) select,
html[data-theme="dark"] body:not(.user-shell):not(.admin-shell) textarea {
    background: var(--ps-card);
    color: var(--ps-text);
    border-color: var(--ps-border);
}

/* v2.58 - Avatar 1:1 display and cropper */
.avatar,
.avatar--small {
    width: 50px;
    height: 50px;
    min-width: 50px;
    min-height: 50px;
    aspect-ratio: 1 / 1;
}
.avatar img,
.avatar--small img,
.profile-avatar img,
.tg-header-avatar img,
.tg-mobile-avatar img {
    width: 100%;
    height: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
}
.avatar-cropper-modal {
    position: fixed;
    inset: 0;
    display: none;
    z-index: 99999;
    direction: rtl;
}
.avatar-cropper-modal.is-open { display: block; }
.avatar-cropper-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, .58);
    backdrop-filter: blur(3px);
}
.avatar-cropper-modal__box {
    position: relative;
    width: min(94vw, 440px);
    margin: 6vh auto;
    background: #fff;
    border-radius: 22px;
    padding: 16px;
    box-shadow: 0 25px 80px rgba(0,0,0,.28);
}
.avatar-cropper-modal__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}
.avatar-cropper-modal__head strong { font-size: 18px; }
.avatar-cropper-modal__head button {
    width: 38px;
    height: 38px;
    border: 1px solid #dbe7ef;
    border-radius: 50%;
    background: #f7fbff;
    color: #0e8fc7;
    cursor: pointer;
}
.avatar-cropper-stage {
    position: relative;
    width: min(78vw, 330px);
    height: min(78vw, 330px);
    margin: 0 auto;
    overflow: hidden;
    border-radius: 50%;
    background: #e5edf3;
    touch-action: none;
    cursor: grab;
    box-shadow: inset 0 0 0 999px rgba(0,0,0,.08);
}
.avatar-cropper-stage:active { cursor: grabbing; }
.avatar-cropper-stage img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform-origin: center center;
    user-select: none;
    -webkit-user-drag: none;
}
.avatar-cropper-frame {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    box-shadow: inset 0 0 0 3px rgba(255,255,255,.92), inset 0 0 0 999px rgba(255,255,255,.02);
    pointer-events: none;
}
.avatar-cropper-zoom {
    display: grid;
    gap: 8px;
    margin: 14px 8px 8px;
    color: #344054;
    font-size: 13px;
}
.avatar-cropper-zoom input { width: 100%; }
.avatar-cropper-hint {
    margin: 8px;
    color: #667085;
    font-size: 12px;
    line-height: 1.8;
}
.avatar-cropper-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 14px;
}
.avatar-crop-selected {
    display: inline-block;
    margin-top: 8px;
    color: #0e8fc7;
    font-size: 12px;
    font-weight: 700;
}
html[data-theme="dark"] .avatar-cropper-modal__box {
    background: #17212b;
    color: #e6eef6;
}
html[data-theme="dark"] .avatar-cropper-modal__head button {
    background: #111b24;
    border-color: #263746;
    color: #7ab8ff;
}
html[data-theme="dark"] .avatar-cropper-zoom,
html[data-theme="dark"] .avatar-cropper-hint { color: #a8b3bd; }

/* v2.60 - Standard user/admin avatar display size 32x32 */
.avatar,
.avatar--small,
.avatar--tiny,
.profile-avatar {
    width: 32px !important;
    height: 32px !important;
    min-width: 32px !important;
    min-height: 32px !important;
    max-width: 32px !important;
    max-height: 32px !important;
    aspect-ratio: 1 / 1;
    font-size: 13px !important;
}
.avatar img,
.avatar--small img,
.avatar--tiny img,
.profile-avatar img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    border-radius: 50% !important;
}

/* v2.62 - Telegram-like avatar cropper, WebP output */
.avatar-cropper-modal__box {
    width: min(94vw, 480px);
    min-height: min(88vh, 720px);
    border-radius: 26px;
    padding: 18px 18px 20px;
    background: #f4f4f7;
}
.avatar-cropper-modal__head--telegram {
    justify-content: flex-start;
    gap: 14px;
    border-bottom: 0;
    margin-bottom: 18px;
}
.avatar-cropper-modal__head--telegram strong {
    color: #111827;
    font-size: 17px;
    font-weight: 900;
}
.avatar-cropper-back {
    border: 0 !important;
    background: transparent !important;
    color: #4b5563 !important;
    box-shadow: none !important;
}
.avatar-cropper-stage {
    width: min(55vw, 190px);
    height: min(55vw, 190px);
    background: #dbe6ec;
    box-shadow: 0 12px 36px rgba(15,23,42,.16), inset 0 0 0 999px rgba(0,0,0,.05);
}
.avatar-cropper-frame {
    box-shadow: inset 0 0 0 3px rgba(255,255,255,.94), 0 0 0 1px rgba(15,23,42,.05);
}
.avatar-cropper-camera {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    color: rgba(255,255,255,.95);
    font-size: 38px;
    text-shadow: 0 2px 18px rgba(0,0,0,.45);
    pointer-events: none;
}
.avatar-cropper-zoom {
    width: min(72vw, 320px);
    margin: 22px auto 8px;
    color: #6b7280;
}
.avatar-cropper-zoom input {
    accent-color: #229ed9;
}
.avatar-cropper-hint {
    width: min(78vw, 360px);
    margin: 14px auto;
    color: #6b7280;
    text-align: center;
}
.avatar-cropper-actions {
    justify-content: center;
}
html[data-theme="dark"] .avatar-cropper-modal__box { background: #17212b; }
html[data-theme="dark"] .avatar-cropper-modal__head--telegram strong { color: #e6eef6; }
html[data-theme="dark"] .avatar-cropper-back { color: #cbd5e1 !important; }
@media (max-width: 640px) {
    .avatar-cropper-modal__box { width: calc(100vw - 14px); min-height: calc(100vh - 22px); margin: 10px auto; border-radius: 24px; }
    .avatar-cropper-stage { width: 170px; height: 170px; }
}

/* v2.65.6 - Support desk ticketing UI */
.supportdesk-ticket-head,
.ps-admin-supportdesk-ticket-head {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:18px;
    margin-bottom:16px;
    border:1px solid #dcdcde;
    border-radius:10px;
    background:linear-gradient(180deg,#fff,#f8fafc);
}
.supportdesk-ticket-head h1,
.ps-admin-supportdesk-ticket-head h1 { margin:4px 0 6px; font-size:24px; line-height:1.5; color:#111827; }
.supportdesk-ticket-head p,
.ps-admin-supportdesk-ticket-head p { margin:0; color:#64748b; line-height:1.8; }
.supportdesk-kicker,
.ps-admin-supportdesk-kicker { display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:800; letter-spacing:.04em; color:#0ea5e9; text-transform:uppercase; }
.supportdesk-head-actions { display:flex; align-items:center; gap:10px; flex-wrap:wrap; justify-content:flex-end; }
.supportdesk-ticket-tabs,
.ps-admin-supportdesk-ticket-tabs { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:0 0 16px; }
.supportdesk-ticket-tabs a,
.ps-admin-supportdesk-ticket-tabs a { display:inline-flex; align-items:center; gap:8px; min-height:38px; padding:7px 14px; border:1px solid #d0d7de; border-radius:8px; background:#fff; color:#1f2937; text-decoration:none; font-weight:700; }
.supportdesk-ticket-tabs a.active,
.ps-admin-supportdesk-ticket-tabs a.active { background:#2271b1; border-color:#2271b1; color:#fff; }
.supportdesk-ticket-tabs em,
.ps-admin-supportdesk-ticket-tabs em { min-width:22px; height:22px; padding:0 7px; border-radius:999px; display:inline-flex; align-items:center; justify-content:center; background:#eef2f7; color:#334155; font-style:normal; font-size:12px; }
.supportdesk-ticket-tabs a.active em,
.ps-admin-supportdesk-ticket-tabs a.active em { background:rgba(255,255,255,.22); color:#fff; }
.supportdesk-ticket-grid { display:grid; grid-template-columns:minmax(310px, .82fr) minmax(0, 1.18fr); gap:18px; align-items:start; }
.supportdesk-new-ticket-card,
.supportdesk-ticket-list-card,
.ps-admin-supportdesk-ticket-list-card,
.ps-admin-supportdesk-filter-card { border:1px solid #dcdcde; border-radius:10px; }
.supportdesk-section-title { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; padding-bottom:12px; border-bottom:1px solid #e5e7eb; }
.supportdesk-section-title h2 { margin:0; font-size:18px; color:#111827; }
.supportdesk-section-title span { color:#64748b; font-size:12px; font-weight:800; }
.supportdesk-ticket-form .grid { gap:12px; }
.supportdesk-table-wrap { border:1px solid #e5e7eb; border-radius:10px; overflow:auto; background:#fff; }
.supportdesk-ticket-table { width:100%; border-collapse:separate; border-spacing:0; min-width:760px; }
.supportdesk-ticket-table th { background:#f6f7f7; color:#1d2327; font-size:13px; font-weight:800; border-bottom:1px solid #dcdcde; padding:11px 12px; text-align:right; white-space:nowrap; }
.supportdesk-ticket-table td { border-bottom:1px solid #edf0f2; padding:12px; vertical-align:middle; color:#334155; }
.supportdesk-ticket-table tr:last-child td { border-bottom:0; }
.supportdesk-ticket-table tr.is-unread-row td { background:#f0f6fc !important; }
.supportdesk-ticket-subject { color:#2271b1; text-decoration:none; font-weight:800; }
.supportdesk-ticket-subject:hover { color:#135e96; text-decoration:underline; }
.supportdesk-unread-dot { display:inline-flex; align-items:center; justify-content:center; min-width:22px; height:22px; margin-inline-start:6px; padding:0 6px; border-radius:999px; background:#d63638; color:#fff; font-size:12px; font-style:normal; font-weight:800; }
.ticket-badge { display:inline-flex; align-items:center; justify-content:center; min-height:24px; padding:3px 9px; border-radius:999px; font-size:12px; font-weight:800; line-height:1.4; border:1px solid transparent; white-space:nowrap; }
.ticket-badge--status { color:#1d4ed8; background:#dbeafe; border-color:#bfdbfe; }
.ticket-status-waiting_admin { color:#92400e; background:#fef3c7; border-color:#fde68a; }
.ticket-status-open { color:#166534; background:#dcfce7; border-color:#bbf7d0; }
.ticket-status-answered { color:#075985; background:#e0f2fe; border-color:#bae6fd; }
.ticket-status-closed { color:#475569; background:#f1f5f9; border-color:#cbd5e1; }
.ticket-badge--priority { color:#475569; background:#f8fafc; border-color:#e2e8f0; }
.ticket-priority-low { color:#166534; background:#dcfce7; border-color:#bbf7d0; }
.ticket-priority-normal { color:#334155; background:#f1f5f9; border-color:#cbd5e1; }
.ticket-priority-high { color:#92400e; background:#fef3c7; border-color:#fde68a; }
.ticket-priority-urgent { color:#991b1b; background:#fee2e2; border-color:#fecaca; }
.supportdesk-ticket-meta-grid,
.ps-admin-supportdesk-ticket-meta-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-bottom:16px; }
.supportdesk-ticket-meta-grid .card { border:1px solid #dcdcde; border-radius:10px; padding:13px 15px; }
.supportdesk-ticket-meta-grid span { display:block; margin-bottom:7px; color:#64748b; font-size:12px; font-weight:800; }
.supportdesk-ticket-meta-grid strong { color:#111827; font-size:14px; }
.supportdesk-ticket-view { align-items:start; }
.supportdesk-thread,
.supportdesk-ticket-sidebar { border:1px solid #dcdcde; border-radius:10px; }
.supportdesk-ticket-messages { gap:14px; }
.supportdesk-ticket-message { max-width:100%; border-radius:8px; border-color:#dcdcde; background:#fff; box-shadow:0 1px 0 rgba(0,0,0,.03); }
.supportdesk-ticket-message.is-mine { margin-right:0; margin-left:0; background:#f6ffed; border-color:#bbf7d0; }
.supportdesk-ticket-message.is-admin,
.supportdesk-ticket-message.is-user { margin-right:0; margin-left:0; background:#fff; }
.supportdesk-ticket-sidebar .form { gap:12px; }
.supportdesk-empty { text-align:center; color:#64748b; padding:28px !important; }
.tg-field-pill--readonly-ticket .tg-readonly-ticket-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; align-items:center; }
.tg-profile-ticket-link { min-width:0 !important; white-space:nowrap !important; }
.tg-profile-ticket-link i { margin-inline-end:2px; }
@media(max-width:1100px){
    .supportdesk-ticket-grid { grid-template-columns:1fr; }
    .supportdesk-ticket-meta-grid,
    .ps-admin-supportdesk-ticket-meta-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:720px){
    .supportdesk-ticket-head,
    .ps-admin-supportdesk-ticket-head { align-items:flex-start; flex-direction:column; }
    .supportdesk-head-actions { width:100%; justify-content:flex-start; }
    .supportdesk-ticket-tabs,
    .ps-admin-supportdesk-ticket-tabs { flex-wrap:nowrap; overflow-x:auto; padding-bottom:4px; }
    .supportdesk-ticket-tabs a,
    .ps-admin-supportdesk-ticket-tabs a { flex:0 0 auto; }
    .supportdesk-ticket-meta-grid,
    .ps-admin-supportdesk-ticket-meta-grid { grid-template-columns:1fr; }
    .tg-field-pill--readonly-ticket .tg-readonly-ticket-row { grid-template-columns:1fr; }
    .tg-profile-ticket-link { width:100% !important; }
}


/* v2.80.5 - public icon square radius safety */
body:not(.admin-shell) i[class^="fa-"],
body:not(.admin-shell) i[class*=" fa-"],
body:not(.admin-shell) .fa,
body:not(.admin-shell) .fa-solid,
body:not(.admin-shell) .fa-regular,
body:not(.admin-shell) .fa-brands {
    border-radius: 0 !important;
}


/* v2.99.80 - AJAX system toast messages */
.ps-ajax-toast-stack {
    position: fixed;
    z-index: 2147483300;
    top: 18px;
    left: 18px;
    width: min(360px, calc(100vw - 36px));
    display: grid;
    gap: 10px;
    pointer-events: none;
}
.ps-ajax-toast {
    transform: translateY(-8px);
    opacity: 0;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
    padding: 12px 14px;
    border-radius: 16px;
    border: 1px solid rgba(34, 197, 94, .26);
    background: rgba(240, 253, 244, .98);
    color: #14532d;
    box-shadow: 0 18px 44px rgba(15, 23, 42, .16);
    font-size: 13px;
    font-weight: 850;
    line-height: 1.9;
    pointer-events: auto;
    transition: opacity .18s ease, transform .18s ease;
}
.ps-ajax-toast.is-visible {
    opacity: 1;
    transform: translateY(0);
}
.ps-ajax-toast--danger {
    border-color: rgba(239, 68, 68, .28);
    background: rgba(254, 242, 242, .98);
    color: #7f1d1d;
}
.ps-ajax-toast--warning {
    border-color: rgba(245, 158, 11, .36);
    background: rgba(255, 251, 235, .98);
    color: #78350f;
}
.ps-ajax-toast button {
    appearance: none;
    border: 0;
    background: transparent;
    color: currentColor;
    width: 24px;
    height: 24px;
    min-width: 24px;
    display: grid;
    place-items: center;
    cursor: pointer;
    font-size: 18px;
    line-height: 1;
    opacity: .72;
}
.ps-ajax-toast button:hover {
    opacity: 1;
}
form.is-ajax-busy {
    opacity: .72;
    pointer-events: none;
}
button.is-loading,
.btn.is-loading {
    opacity: .76;
    cursor: wait !important;
}
@media (max-width: 640px) {
    .ps-ajax-toast-stack {
        left: 10px;
        right: 10px;
        top: 10px;
        width: auto;
    }
}


/* v2.99.81 - toast top center responsive position */
.ps-ajax-toast-stack {
    top: 18px !important;
    left: 50% !important;
    right: auto !important;
    width: min(420px, calc(100vw - 32px)) !important;
    transform: translateX(-50%) !important;
    justify-items: center !important;
}
.ps-ajax-toast {
    width: 100% !important;
}
@media (max-width: 920px) {
    .ps-ajax-toast-stack {
        top: 12px !important;
        left: 50% !important;
        right: auto !important;
        width: min(400px, calc(100vw - 24px)) !important;
        transform: translateX(-50%) !important;
    }
}
@media (max-width: 640px) {
    .ps-ajax-toast-stack {
        top: 10px !important;
        left: 50% !important;
        right: auto !important;
        width: calc(100vw - 20px) !important;
        transform: translateX(-50%) !important;
    }
}


/* v2.99.86 - captcha refresh text button */
.ps-captcha-field {
    display: grid !important;
    gap: 8px !important;
}
.ps-captcha-field__label {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    font-weight: 900 !important;
}
.ps-captcha-field__label strong {
    direction: ltr !important;
    unicode-bidi: plaintext !important;
    font-weight: 950 !important;
    color: #0f172a !important;
}
.ps-captcha-refresh {
    width: max-content !important;
    min-height: 34px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
    border: 1px solid #c5d9ed !important;
    border-radius: 999px !important;
    background: #f0f6fc !important;
    color: #1d4ed8 !important;
    padding: 5px 12px !important;
    cursor: pointer !important;
    font-size: 12px !important;
    font-weight: 900 !important;
}
.ps-captcha-refresh:hover {
    border-color: #93c5fd !important;
    background: #eff6ff !important;
}
.ps-captcha-refresh.is-loading {
    opacity: .7 !important;
    cursor: wait !important;
}
@media (max-width: 520px) {
    .ps-captcha-field__label {
        align-items: flex-start !important;
        flex-direction: column !important;
    }
    .ps-captcha-refresh {
        width: 100% !important;
    }
}


/* v2.99.92 - registration terms/privacy popup */
.register-legal-modal {
    position: fixed !important;
    inset: 0 !important;
    z-index: 2147483200 !important;
    display: grid !important;
    place-items: center !important;
    padding: 18px !important;
    background: rgba(15, 23, 42, .46) !important;
}
.register-legal-modal[hidden] {
    display: none !important;
}
.register-legal-modal__dialog {
    width: min(760px, calc(100vw - 28px)) !important;
    max-height: min(78vh, 760px) !important;
    display: grid !important;
    grid-template-rows: 1fr auto !important;
    position: relative !important;
    overflow: hidden !important;
    border-radius: 24px !important;
    border: 1px solid rgba(56, 88, 233, .18) !important;
    background: #ffffff !important;
    box-shadow: 0 28px 90px rgba(15, 23, 42, .28) !important;
    direction: rtl !important;
    outline: none !important;
}
.register-legal-modal__close {
    position: absolute !important;
    top: 12px !important;
    left: 12px !important;
    z-index: 2 !important;
    width: 38px !important;
    height: 38px !important;
    border: 0 !important;
    border-radius: 14px !important;
    background: #f1f5f9 !important;
    color: #0f172a !important;
    cursor: pointer !important;
    font-size: 24px !important;
    line-height: 1 !important;
}
.register-legal-modal__panel {
    min-height: 0 !important;
    overflow: auto !important;
    padding: 24px 24px 8px !important;
}
.register-legal-modal__panel[hidden] {
    display: none !important;
}
.register-legal-modal__head {
    display: flex !important;
    align-items: flex-start !important;
    gap: 12px !important;
    padding: 4px 0 16px !important;
    margin: 0 0 16px !important;
    border-bottom: 1px solid #e2e8f0 !important;
}
.register-legal-modal__icon {
    width: 42px !important;
    height: 42px !important;
    min-width: 42px !important;
    display: grid !important;
    place-items: center !important;
    border-radius: 16px !important;
    background: #eef2ff !important;
    color: #3858e9 !important;
}
.register-legal-modal__head h2 {
    margin: 0 0 6px !important;
    color: #0f172a !important;
    font-size: 20px !important;
    font-weight: 950 !important;
}
.register-legal-modal__head p {
    margin: 0 !important;
    color: #64748b !important;
    line-height: 1.9 !important;
}
.register-legal-modal__body {
    color: #334155 !important;
    font-size: 14px !important;
    line-height: 2.15 !important;
}
.register-legal-modal__body p {
    margin: 0 0 12px !important;
}
.register-legal-modal__foot {
    display: flex !important;
    justify-content: flex-end !important;
    gap: 10px !important;
    padding: 14px 18px !important;
    border-top: 1px solid #e2e8f0 !important;
    background: #f8fafc !important;
}
body.register-legal-modal-open {
    overflow: hidden !important;
}
@media (max-width: 560px) {
    .register-legal-modal {
        padding: 10px !important;
    }
    .register-legal-modal__dialog {
        width: 100% !important;
        max-height: 86vh !important;
        border-radius: 18px !important;
    }
    .register-legal-modal__panel {
        padding: 20px 16px 8px !important;
    }
}


/* v3.00.00 - unified inline captcha box for user/admin/public forms */
.ps-captcha-field,
label.ps-captcha-field {
    width: 100% !important;
    min-height: 62px !important;
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    direction: rtl !important;
    padding: 10px 12px !important;
    margin: 0 !important;
    border: 1px solid #e2e8f0 !important;
    border-radius: 16px !important;
    background: #f8fafc !important;
    box-shadow: 0 1px 0 rgba(15, 23, 42, .02) !important;
    overflow: visible !important;
}

.ps-captcha-field .ps-captcha-refresh {
    order: 1 !important;
    flex: 0 0 auto !important;
    min-width: 104px !important;
    height: 40px !important;
    min-height: 40px !important;
    margin: 0 !important;
    border: 1px solid #bfdbfe !important;
    border-radius: 12px !important;
    background: #eff6ff !important;
    color: #1d4ed8 !important;
    padding: 0 12px !important;
    font-size: 13px !important;
    font-weight: 900 !important;
    white-space: nowrap !important;
}

.ps-captcha-field .ps-captcha-field__label {
    order: 2 !important;
    flex: 0 0 auto !important;
    width: auto !important;
    min-width: max-content !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
    margin: 0 !important;
    color: #0f172a !important;
    font-size: 14px !important;
    font-weight: 950 !important;
    line-height: 1.4 !important;
    white-space: nowrap !important;
}

.ps-captcha-field .ps-captcha-field__label strong {
    display: inline-block !important;
    direction: ltr !important;
    unicode-bidi: plaintext !important;
    color: #0f172a !important;
    font-size: 15px !important;
    font-weight: 950 !important;
}

.ps-captcha-field input[name="captcha_answer"] {
    order: 3 !important;
    flex: 1 1 150px !important;
    width: auto !important;
    min-width: 118px !important;
    max-width: 180px !important;
    height: 40px !important;
    min-height: 40px !important;
    margin: 0 !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 12px !important;
    background: #ffffff !important;
    color: #0f172a !important;
    text-align: center !important;
    direction: ltr !important;
    padding: 0 10px !important;
    box-shadow: none !important;
}

.ps-captcha-field input[name="captcha_answer"]::placeholder {
    color: #94a3b8 !important;
    text-align: center !important;
}

@media (max-width: 520px) {
    .ps-captcha-field,
    label.ps-captcha-field {
        gap: 7px !important;
        padding: 9px !important;
        min-height: 58px !important;
    }
    .ps-captcha-field .ps-captcha-refresh {
        min-width: 92px !important;
        height: 38px !important;
        min-height: 38px !important;
        padding: 0 9px !important;
        font-size: 12px !important;
    }
    .ps-captcha-field .ps-captcha-field__label {
        font-size: 13px !important;
        gap: 4px !important;
    }
    .ps-captcha-field .ps-captcha-field__label strong {
        font-size: 14px !important;
    }
    .ps-captcha-field input[name="captcha_answer"] {
        flex-basis: 112px !important;
        min-width: 96px !important;
        max-width: 132px !important;
        height: 38px !important;
        min-height: 38px !important;
        font-size: 12px !important;
    }
}

@media (max-width: 390px) {
    .ps-captcha-field,
    label.ps-captcha-field {
        flex-wrap: wrap !important;
    }
    .ps-captcha-field .ps-captcha-field__label {
        flex: 1 1 auto !important;
        justify-content: flex-start !important;
    }
    .ps-captcha-field input[name="captcha_answer"] {
        flex: 1 1 100% !important;
        max-width: none !important;
    }
}
