:root{color-scheme:dark;--bg:#0b0d17;--bg-soft:#101420;--surface:#141927;--surface-2:#181e2e;--surface-3:#1d2436;--border:#293149;--border-soft:#20273a;--text:#f6f7ff;--muted:#8f9bb8;--muted-2:#66718f;--purple:#7565f4;--purple-2:#9387ff;--cyan:#36caef;--teal:#2bd4b8;--rose:#ff647f;--amber:#ffbd45;--shadow:0 22px 55px rgba(0,0,0,.28);--radius:18px;--sidebar:248px;--topbar:74px;font-family:Inter,"Segoe UI",system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text)}body{min-height:100vh;font-size:15px}button,input,select,textarea{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--purple-2);outline-offset:2px}.hidden{display:none!important}.net-banner{position:sticky;top:var(--topbar);z-index:14;padding:8px 34px;border-bottom:1px solid rgba(255,189,69,.28);background:rgba(58,44,14,.94);color:#ffd27a;font-size:12px;font-weight:650;backdrop-filter:blur(12px)}@media(max-width:820px){.net-banner{padding:8px 16px;font-size:11px}}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);display:flex;flex-direction:column;padding:24px 15px;background:#0d101a;border-right:1px solid var(--border-soft);z-index:20}.brand,.mobile-brand{display:flex;align-items:center;gap:12px}.brand{padding:0 10px 28px}.brand strong{display:block;font-size:17px;letter-spacing:-.25px}.brand small{display:block;color:var(--muted-2);font-size:10px;margin-top:3px;text-transform:uppercase;letter-spacing:1.4px}.brand-mark{display:grid;place-items:center;width:38px;height:38px;flex:0 0 auto;border-radius:12px;color:#fff;font-weight:800;font-size:18px;background:linear-gradient(145deg,var(--purple),#4c3fd0);box-shadow:0 8px 22px rgba(117,101,244,.26)}.brand-mark.has-icon{overflow:hidden}.brand-mark.has-icon img{display:block;width:100%;height:100%;border-radius:inherit;object-fit:cover}.brand-mark.large{width:54px;height:54px;border-radius:16px;font-size:25px;margin-bottom:10px}.nav{display:flex;flex-direction:column;gap:7px}.nav-item{border:0;background:transparent;display:flex;align-items:center;gap:13px;width:100%;min-height:47px;padding:0 14px;border-radius:12px;color:#9ca8c2;text-align:left;cursor:pointer;transition:.18s ease}.nav-item:hover{color:#dfe4f4;background:#151a28}.nav-item.active{background:linear-gradient(90deg,rgba(117,101,244,.24),rgba(117,101,244,.08));color:#fff;box-shadow:inset 3px 0 var(--purple)}.nav-icon{width:21px;text-align:center;font-size:19px;color:#8490ae}.nav-item.active .nav-icon{color:var(--purple-2)}.nav-badge{margin-left:auto;padding:2px 7px;border-radius:8px;color:#aab5d0;background:#1a2030;font-size:11px}.sidebar-status{margin-top:auto;padding:14px;border:1px solid var(--border-soft);border-radius:14px;background:#111624}.sidebar-status>div{display:flex;gap:8px;align-items:center;font-size:12px}.sidebar-status small{display:block;color:var(--muted-2);font-size:10px;line-height:1.5;margin:7px 0 0 15px}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 4px rgba(43,212,184,.1)}.main{min-height:100vh;margin-left:var(--sidebar)}.topbar{height:var(--topbar);position:sticky;top:0;display:flex;align-items:center;gap:10px;padding:0 34px;background:rgba(11,13,23,.88);backdrop-filter:blur(18px);border-bottom:1px solid var(--border-soft);z-index:15}.topbar-spacer{flex:1}.mobile-brand{display:none}.server-pill{display:flex;align-items:center;gap:9px;padding:9px 13px;border-radius:999px;color:#aab5cf;background:#121725;border:1px solid var(--border-soft);font-size:12px}.avatar-button,.icon-button{border:1px solid #5146be;background:#6556df;width:40px;height:40px;border-radius:12px;cursor:pointer;font-weight:750}.avatar-button{border-radius:var(--avatar-radius)}.icon-button{background:#151b2a;border-color:var(--border);font-size:20px}.content{max-width:1580px;margin:0 auto;padding:38px 34px 60px}.page{display:none;animation:page-in .1s ease}.page.active{display:block}@keyframes page-in{from{opacity:.3;transform:translateY(4px)}to{opacity:1;transform:none}}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:22px;margin-bottom:28px}.page-heading h1{font-size:34px;line-height:1.05;letter-spacing:-1.1px;margin:4px 0 8px}.page-heading p{margin:0;color:var(--muted)}.eyebrow{color:#736da1!important;font-size:10px!important;line-height:1!important;font-weight:800!important;letter-spacing:1.55px!important;text-transform:uppercase}.accent-text{color:var(--purple-2)}.heading-actions,.toolbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.button{min-height:42px;border:1px solid var(--border);border-radius:11px;padding:0 16px;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:#171d2b;color:#eef1fb;font-weight:650;font-size:13px;white-space:nowrap;cursor:pointer;transition:.16s}.button:hover{transform:translateY(-1px);border-color:#44506f;background:#1d2435}.button:disabled{opacity:.42;pointer-events:none}.button.primary{background:linear-gradient(135deg,#7a69f5,#6757df);border-color:#8677ff;box-shadow:0 9px 24px rgba(108,91,224,.2)}.button.primary:hover{background:linear-gradient(135deg,#8878ff,#7160ec)}.button.danger{background:#ea5d74;border-color:#ff758b;color:white}.button.danger.subtle{background:rgba(255,100,127,.1);border-color:rgba(255,100,127,.28);color:#ff8498}.button.wide{width:100%;justify-content:space-between;padding:0 19px}.text-button{border:0;background:transparent;color:#9f94ff;font-size:12px;cursor:pointer}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.metric-card{min-height:150px;position:relative;overflow:hidden;padding:21px;border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(145deg,#161b29,#131824)}.metric-card:after{content:"";position:absolute;width:110px;height:110px;border-radius:50%;filter:blur(30px);opacity:.12;right:-35px;bottom:-55px;background:currentColor}.metric-card.purple{color:var(--purple-2)}.metric-card.cyan{color:var(--cyan)}.metric-card.rose{color:var(--rose)}.metric-card.amber{color:var(--amber)}.metric-top{display:flex;justify-content:space-between;align-items:center;color:#9aa6c0}.metric-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:10px;background:rgba(255,255,255,.04);color:currentColor}.metric-card>strong{display:block;margin:20px 0 5px;font-size:30px;letter-spacing:-1px;color:currentColor}.metric-card>small{color:var(--muted-2)}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(280px,.8fr);gap:18px}.panel{border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(145deg,#151a28,#121722);box-shadow:0 1px 0 rgba(255,255,255,.015)}.activity-panel,.health-panel{min-height:425px;padding:24px}.panel-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.panel-heading h2{font-size:19px;margin:5px 0 0}.activity-list{display:flex;flex-direction:column}.activity-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:13px;padding:15px 2px;border-bottom:1px solid var(--border-soft)}.activity-row:last-child{border:0}.activity-bullet{display:grid;place-items:center;width:36px;height:36px;border-radius:12px;color:var(--teal);background:rgba(43,212,184,.09)}.activity-row.error .activity-bullet{color:var(--rose);background:rgba(255,100,127,.09)}.activity-copy strong{display:block;font-size:13px}.activity-copy small{display:block;color:var(--muted-2);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity-time{color:var(--muted-2);font-size:11px}.activity-list.full .activity-row{padding:18px 6px}.health-ring{width:162px;height:162px;margin:30px auto;display:grid;place-items:center;border-radius:50%;background:conic-gradient(var(--teal) var(--health,100%),#242b3c 0);position:relative}.health-ring:after{content:"";position:absolute;inset:12px;border-radius:50%;background:#141a26}.health-ring>div{position:relative;z-index:1;text-align:center}.health-ring strong{display:block;font-size:27px}.health-ring span{font-size:11px;color:var(--muted)}.health-list{list-style:none;padding:0;margin:0}.health-list li{display:flex;justify-content:space-between;padding:10px 0;color:var(--muted);border-bottom:1px solid var(--border-soft);font-size:12px}.health-list li:last-child{border:0}.positive{color:var(--teal)}.section-toolbar{display:grid;grid-template-columns:minmax(220px,360px) 1fr auto;align-items:center;gap:12px;margin-bottom:12px}.search{height:43px;display:flex;align-items:center;gap:10px;padding:0 13px;border:1px solid var(--border);border-radius:11px;background:#151a28;color:var(--muted)}.search:focus-within{border-color:#675be4}.search input{width:100%;border:0;outline:0;background:transparent;color:var(--text)}.search input::placeholder{color:#6f7a97}.toolbar-meta{color:var(--muted-2);font-size:12px}.select{height:43px;min-width:180px;padding:0 34px 0 13px;border:1px solid var(--border);border-radius:11px;background:#151a28;color:var(--text)}
/* ── Поисковое меню вместо родного списка ────────────────────────────────────────────────
   Родной <select> остаётся в разметке источником правды и просто спрятан; всё, что читает
   его `.value`, продолжает работать. Здесь только внешность и поповер. */
.picker{position:relative;display:inline-flex;min-width:180px}
.lot-filter-group .picker,.section-toolbar .picker{width:100%;min-width:0}
.picker-button{width:100%;height:43px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 13px;border:1px solid var(--border);border-radius:11px;background:#151a28;color:var(--text);font-size:13px;text-align:left;cursor:pointer;transition:.16s}
.picker-button:hover{border-color:#44506f;background:#1a2131}
.picker-button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.picker-button i{flex:0 0 auto;width:0;height:0;border:5px solid transparent;border-top-color:var(--muted);margin-top:4px;transition:.16s}
.picker-button[aria-expanded="true"]{border-color:#675be4;background:#1a2131}
.picker-button[aria-expanded="true"] i{transform:rotate(180deg);margin-top:-4px;border-top-color:var(--purple-2)}
.picker-chosen .picker-button{color:var(--text);border-color:#3c4560}
.picker-pop{position:absolute;top:calc(100% + 6px);left:0;min-width:max(100%,244px);max-width:min(360px,86vw);z-index:60;display:flex;flex-direction:column;padding:8px;border:1px solid var(--border);border-radius:13px;background:#141927;box-shadow:var(--shadow)}
.picker-search{height:36px;margin-bottom:7px;padding:0 11px;border:1px solid var(--border-soft);border-radius:9px;background:#101420;color:var(--text);outline:0}
.picker-search:focus{border-color:#675be4}
.picker-search::placeholder{color:#6f7a97}
.picker-list{display:flex;flex-direction:column;gap:2px;max-height:min(320px,50vh);overflow-y:auto}
.picker-row{min-height:34px;display:flex;align-items:center;padding:0 10px;border:0;border-radius:8px;background:transparent;color:#c8d0e6;font-size:13px;text-align:left;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.picker-row:hover,.picker-row.marked{background:#1d2436;color:var(--text)}
.picker-row.on{color:var(--purple-2);background:rgba(117,101,244,.12)}
.picker-empty{margin:6px 2px;color:var(--muted-2);font-size:12px}.select-strip{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted-2);font-size:11px;padding:0 5px;margin:0 0 15px}.check-label{display:flex;align-items:center;gap:8px;color:#aeb8ce;cursor:pointer}.check-label input,.account-select,.lot-select,.choice-list input{accent-color:var(--purple)}.accounts-grid{display:grid;grid-template-columns:repeat(3,minmax(270px,1fr));gap:14px}.account-card{position:relative;overflow:hidden;min-height:218px;padding:19px;border:1px solid var(--border);border-radius:16px;background:linear-gradient(145deg,#171c2a,#131824);transition:.16s}.account-card:hover{transform:translateY(-2px);border-color:#3c4560;box-shadow:var(--shadow)}.account-card.selected{border-color:#7668e8;box-shadow:inset 0 0 0 1px rgba(133,118,255,.25)}.account-card.has-error{border-color:rgba(255,100,127,.38)}.account-card-top{display:flex;align-items:center;gap:12px}.account-avatar{width:52px;height:52px;border-radius:var(--avatar-radius);object-fit:cover;background:#20283b;border:1px solid #343d56}.avatar-fallback{display:grid;place-items:center;font-size:19px;font-weight:800;color:white;background:linear-gradient(145deg,#7160e4,#3f88d2)}.account-main{min-width:0;flex:1}.account-main strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:15px}.account-main small{display:block;color:var(--muted-2);margin-top:4px}.account-select{width:17px;height:17px}.account-status{display:flex;align-items:center;gap:7px;font-size:11px;padding:5px 9px;border-radius:999px;color:var(--teal);background:rgba(43,212,184,.08)}.account-status.off{color:var(--muted);background:rgba(143,155,184,.08)}.account-status.error{color:var(--rose);background:rgba(255,100,127,.08)}.account-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:21px 0 17px}.mini-metric{padding:10px;background:#111622;border-radius:10px}.mini-metric span{display:block;color:var(--muted-2);font-size:10px;margin-bottom:5px}.mini-metric strong{font-size:13px}
/* Второй и третий кошельки под основным: три суммы в строку не влезают даже на широком
   экране, а карточка не должна расти в высоту от одной валюты. */
.account-wallets{display:block;margin-top:3px;color:var(--muted);font-size:11px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* «В обработке» и возраст цифры — те же метрики, что у строки валют рядом (11px/1.35), иначе ряд
   перестаёт давать одно число на высоту. Возраст показывается ТОЛЬКО когда цифра успела
   состариться: подпись под каждым балансом — шум, а не польза. */
.account-wallets.pending{color:var(--muted-2)}
.account-balance-age{display:block;margin-top:3px;font-size:11px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.account-balance-age.stale{color:#e0a23c}.star{color:var(--amber)}.account-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:13px;border-top:1px solid var(--border-soft);font-size:11px;color:var(--muted-2)}.account-proxy{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-menu{border:0;background:transparent;color:#98a4be;cursor:pointer;font-size:18px}.account-error{position:absolute;left:0;right:0;bottom:0;padding:8px 18px;background:rgba(255,100,127,.11);color:#ff91a3;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lots-table{border:1px solid var(--border);border-radius:16px;overflow:hidden;background:#131824}.lot-row{display:grid;grid-template-columns:42px minmax(230px,2.4fr) minmax(130px,1fr) 110px 90px 44px;align-items:center;min-height:72px;border-bottom:1px solid var(--border-soft);transition:.12s}.lot-row:last-child{border:0}.lot-row:hover{background:#171d2b}.lot-row.selected{background:rgba(117,101,244,.08)}.lot-cell{padding:10px 13px;min-width:0}.lot-title strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}.lot-title small,.lot-account small{display:block;margin-top:5px;color:var(--muted-2);font-size:10px}.lot-price{color:var(--amber);font-weight:750}.lot-id{font-variant-numeric:tabular-nums;color:#a7b1c8;font-size:12px}.lot-edit{border:0;background:transparent;color:var(--purple-2);font-size:18px;cursor:pointer}.lot-header{min-height:42px;background:#171d2b;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.5px}.empty-state{text-align:center;padding:75px 20px;color:var(--muted)}.empty-state h2{color:var(--text);font-size:19px}.empty-state p{max-width:420px;margin:0 auto 22px}.empty-icon{width:58px;height:58px;margin:0 auto 18px;display:grid;place-items:center;border-radius:18px;background:#171d2b;color:var(--purple-2);font-size:27px}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.setting-card{display:flex;align-items:flex-start;gap:16px;padding:22px}.setting-card h2{margin:0 0 8px;font-size:17px}.setting-card p{color:var(--muted);line-height:1.6;margin:0 0 16px;font-size:13px}.setting-icon{display:grid;place-items:center;flex:0 0 auto;width:45px;height:45px;border-radius:14px;color:var(--purple-2);background:rgba(117,101,244,.1)}.status-chip{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;background:#1b2131;color:#a9b3ca;font-size:11px}.status-chip.success{color:var(--teal);background:rgba(43,212,184,.08)}.mobile-nav{display:none}.login-view{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;overflow:hidden;background:radial-gradient(circle at 20% 15%,#19163b 0,transparent 33%),radial-gradient(circle at 80% 82%,#102c39 0,transparent 28%),#090b13}.login-card{position:relative;z-index:2;width:min(430px,100%);padding:38px;border:1px solid #2c3350;border-radius:24px;background:rgba(16,20,32,.92);backdrop-filter:blur(24px);box-shadow:0 35px 90px rgba(0,0,0,.42)}.login-card h1{font-size:33px;letter-spacing:-1px;margin:4px 0 9px}.login-card>.muted{line-height:1.55;margin:0 0 27px}.login-card .field{margin-bottom:18px}.secure-note{text-align:center;color:var(--muted-2);font-size:11px;margin-top:20px}.form-error{min-height:18px;color:var(--rose);font-size:12px;text-align:center}.login-orb{position:absolute;border-radius:50%;filter:blur(1px);opacity:.32}.orb-one{width:270px;height:270px;left:6%;top:11%;background:linear-gradient(145deg,#6d55ec,transparent)}.orb-two{width:230px;height:230px;right:9%;bottom:8%;background:linear-gradient(145deg,#17bad1,transparent)}.modal{width:min(620px,calc(100% - 28px));max-height:min(88vh,820px);padding:0;border:1px solid #343d58;border-radius:19px;background:#111622;color:var(--text);box-shadow:0 34px 95px rgba(0,0,0,.6)}.modal::backdrop{background:rgba(3,5,10,.72);backdrop-filter:blur(4px)}.modal>form{padding:26px}.wide-modal{width:min(820px,calc(100% - 28px))}.small-modal{width:min(440px,calc(100% - 28px))}.modal-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px}.modal-heading h2{font-size:24px;margin:5px 0 6px}.modal-heading p{color:var(--muted);margin:0}.modal-close{border:0;background:#1c2231;color:#aab4ca;width:34px;height:34px;border-radius:10px;font-size:22px;cursor:pointer}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field{display:flex;flex-direction:column;gap:7px}.field.full{grid-column:1/-1}.field>span{font-size:12px;font-weight:650;color:#bac3d6}.field>span small{color:var(--muted-2);font-weight:400}.field input,.field textarea,.field select{width:100%;min-height:44px;padding:10px 12px;border:1px solid #30384f;border-radius:10px;background:#171c29;color:var(--text)}.field textarea{min-height:105px;resize:vertical}.field>small{color:var(--muted-2);font-size:10px}.input-action{display:flex;gap:8px}.input-action input{min-width:0}.input-action button{min-width:86px;border:1px solid var(--border);border-radius:10px;background:#1c2231;color:#b9c2d5;cursor:pointer}.proxy-input button{min-width:105px;color:#c8c2ff;border-color:#4c447b}.advanced-field{opacity:.85}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:22px;padding:15px;border:1px solid var(--border-soft);border-radius:12px;background:#141a27;cursor:pointer}.switch-row strong,.switch-row small{display:block}.switch-row strong{font-size:13px}.switch-row small{color:var(--muted-2);font-size:10px;margin-top:4px}.switch-row input{display:none}.switch-row i{position:relative;width:43px;height:24px;flex:0 0 auto;border-radius:99px;background:#30374a;transition:.2s}.switch-row i:after{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;border-radius:50%;background:#a9b1c3;transition:.2s}.switch-row input:checked+i{background:var(--purple)}.switch-row input:checked+i:after{transform:translateX(19px);background:white}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:26px}.dynamic-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-height:49vh;overflow:auto;padding-right:5px}.dynamic-fields:empty{display:none}.dynamic-fields .textarea-field{grid-column:1/-1}.choice-list{display:flex;gap:8px;flex-wrap:wrap;padding:11px;border:1px solid var(--border);border-radius:11px;background:#151a28}.choice-pill{display:flex;align-items:center;gap:7px;padding:7px 10px;border-radius:9px;background:#1d2333;font-size:12px}.node-loader{display:grid;grid-template-columns:1fr auto;align-items:end;gap:10px;margin:16px 0}.confirm-modal{width:min(420px,calc(100% - 28px));text-align:center}.confirm-icon{width:54px;height:54px;margin:0 auto 15px;display:grid;place-items:center;border-radius:17px;background:rgba(255,100,127,.11);color:var(--rose);font-size:23px;font-weight:800}.confirm-modal h2{margin:0 0 10px}.confirm-modal p{color:var(--muted);line-height:1.55}.confirm-modal .modal-actions{justify-content:center}.loading-overlay{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:rgba(7,9,16,.72);backdrop-filter:blur(5px)}.loading-overlay strong{font-size:13px}.spinner{width:38px;height:38px;border:3px solid #2d3449;border-top-color:var(--purple-2);border-radius:50%;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast-region{position:fixed;right:24px;bottom:24px;z-index:120;display:flex;flex-direction:column;gap:9px;pointer-events:none}.toast{min-width:280px;max-width:420px;display:grid;grid-template-columns:26px 1fr;gap:10px;padding:14px 16px;border:1px solid #35405c;border-radius:13px;background:#171d2b;box-shadow:var(--shadow);animation:toast-in .24s ease}.toast.success{border-color:rgba(43,212,184,.36)}.toast.error{border-color:rgba(255,100,127,.4)}
/* Всплывашка о новом сообщении: по ней кликают, поэтому она и выглядит нажимаемой. */
.message-toast{cursor:pointer;border-color:rgba(120,140,255,.45);background:linear-gradient(180deg,#1b2337,#171d2b)}
.message-toast:hover{border-color:rgba(120,140,255,.7)}
.message-toast .toast-icon{background:rgba(120,140,255,.18)}
body[data-market="g2g"] .message-toast{border-color:rgba(240,132,42,.45)}
body[data-market="g2g"] .message-toast .toast-icon{background:rgba(240,132,42,.18)}.toast-icon{color:var(--teal);font-weight:800}.toast.error .toast-icon{color:var(--rose)}.toast strong{display:block;font-size:12px}.toast small{display:block;margin-top:3px;color:var(--muted);line-height:1.4}@keyframes toast-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.staff-ledger{display:flex;flex-direction:column;gap:2px;margin-top:14px}.ledger-total{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}.ledger-money{display:grid;grid-template-columns:44px repeat(3,minmax(0,1fr));align-items:center;gap:10px;padding:13px 15px;border:1px solid var(--border);border-radius:12px;background:var(--surface-2)}.ledger-money .ledger-unit{font-size:19px;font-weight:800;color:var(--purple-2);text-align:center}.ledger-money span{display:flex;flex-direction:column;gap:3px;min-width:0}.ledger-money small{color:var(--muted-2);font-size:10px;text-transform:uppercase;letter-spacing:1.1px}.ledger-money strong{font-size:15px;font-variant-numeric:tabular-nums}.ledger-money .ledger-owed strong{color:var(--amber)}.ledger-money .ledger-over strong{color:var(--rose)}.ledger-form{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.8fr) 70px minmax(0,2fr) auto;gap:8px;margin-bottom:6px}.ledger-row{display:grid;grid-template-columns:minmax(0,1fr) 130px 150px auto;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px solid var(--border-soft)}.ledger-row.pale{opacity:.62}.ledger-row.manual .ledger-order strong{color:var(--cyan)}.ledger-order{min-width:0}.ledger-order strong{display:block;font-size:13px}.ledger-order small{display:block;color:var(--muted-2);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ledger-sum{text-align:right;font-variant-numeric:tabular-nums}.ledger-sum small{display:block;color:var(--muted-2);font-size:11px}.ledger-sum strong{font-size:14px}/* align-items: колонка флекса тянет детей по ширине, и чип «ждёт ставку» растягивался на все
   150 пикселей колонки — подложка вместо пометки. Облегать текст она обязана. */
.ledger-when{display:flex;flex-direction:column;align-items:flex-start;gap:3px;font-size:11px}.ledger-when small{color:var(--muted-2)}/* ПОМЕТКА — ЧИП, А НЕ ПОДЧЁРКНУТЫЙ ТЕКСТ.
   У «ждёт ставку» был фон и НИ ОТСТУПОВ, НИ СКРУГЛЕНИЯ: подложка лепилась вплотную к буквам
   и резала их края. Рядом, в сводке, живёт тот же по смыслу чип `.staff-owe-wait` — с
   отступами и радиусом; две пометки об одном и том же выглядели по-разному, и худшая из них
   читалась как поломка вёрстки. `nowrap` — потому что пометка стоит в узкой колонке и
   перенос «ждёт / ставку» на два этажа ломает высоту строки. */
.ledger-state{font-size:11px;white-space:nowrap}
.ledger-state.rate{padding:3px 7px;border-radius:7px}.ledger-state.ok{color:var(--teal)}.ledger-state.out{color:var(--rose)}.ledger-state.wait{color:var(--muted)}@media(max-width:820px){.ledger-form{grid-template-columns:1fr 1fr}.ledger-money{grid-template-columns:36px repeat(3,minmax(0,1fr));gap:6px;padding:11px}.ledger-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"o s" "w b";row-gap:6px}.ledger-row .ledger-order{grid-area:o}.ledger-row .ledger-sum{grid-area:s}.ledger-row .ledger-when{grid-area:w}.ledger-row button{grid-area:b;justify-self:end}}.my-ledger{padding:24px;margin-bottom:18px}.my-ledger .ledger-row{grid-template-columns:minmax(0,1fr) 130px 150px}
@media(max-width:1180px){:root{--sidebar:216px}.content{padding-left:24px;padding-right:24px}.accounts-grid{grid-template-columns:repeat(2,minmax(270px,1fr))}.section-toolbar{grid-template-columns:minmax(210px,1fr) auto}.toolbar-meta{display:none}.toolbar-actions{grid-column:1/-1;justify-content:flex-end}.lots-toolbar{grid-template-columns:minmax(210px,1fr) 190px}.metric-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){:root{--topbar:62px}.sidebar{display:none}.main{margin-left:0;padding-bottom:70px}.topbar{padding:0 16px}.mobile-brand{display:flex}.mobile-brand .brand-mark{width:34px;height:34px;border-radius:10px;font-size:16px}.server-pill{display:none}.content{padding:24px 16px 38px}.mobile-nav{position:fixed;display:grid;grid-template-columns:repeat(5,1fr);left:0;right:0;bottom:0;min-height:67px;padding:6px 7px calc(6px + env(safe-area-inset-bottom));background:rgba(13,16,26,.96);backdrop-filter:blur(18px);border-top:1px solid var(--border-soft);z-index:30}.mobile-nav button{border:0;background:transparent;color:#6f7a98;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-radius:10px}.mobile-nav button span{font-size:19px}.mobile-nav button small{font-size:9px}.mobile-nav button.active{color:var(--purple-2);background:rgba(117,101,244,.09)}.page-heading{align-items:flex-start}.page-heading h1{font-size:28px}.dashboard-grid{grid-template-columns:1fr}.health-panel{min-height:auto}.section-toolbar,.lots-toolbar{grid-template-columns:1fr}.section-toolbar .select{width:100%}.toolbar-actions{justify-content:flex-start;overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}.accounts-grid{grid-template-columns:1fr}.lots-table{border:0;background:transparent;display:grid;grid-template-columns:1fr;gap:10px}/* Шапка не прячется, а превращается в полосу кнопок сортировки — ровно как у G2G. Раньше она скрывалась, и сортировать на телефоне можно было только выпадающим списком в фильтрах; список убран, значит сортировка обязана жить здесь. */.lot-header{display:flex;flex-wrap:wrap;gap:6px;min-height:0;padding:2px 2px 6px;background:transparent}.lot-header>div:not([data-sort-key]){display:none}.lot-header .lot-sortable{min-height:28px;display:flex;align-items:center;gap:5px;padding:5px 10px;border:1px solid var(--border);border-radius:999px;background:var(--bg-soft)}.lot-row{position:relative;grid-template-columns:34px minmax(0,1fr) 40px;grid-template-areas:"check title edit" "check account edit" "check meta edit";min-height:120px;border:1px solid var(--border);border-radius:14px;background:#151a27}.lot-row .lot-cell:nth-child(1){grid-area:check}.lot-row .lot-title{grid-area:title;padding-bottom:2px}.lot-row .lot-account{grid-area:account;padding-top:2px}.lot-row .lot-id{grid-area:meta;padding-top:4px}.lot-row .lot-price{position:absolute;right:50px;bottom:17px}.lot-row .lot-cell:last-child{grid-area:edit}.settings-grid{grid-template-columns:1fr}.toast-region{left:12px;right:12px;bottom:83px}.toast{min-width:0;max-width:none;width:100%}}
@media(max-width:560px){.content{padding-top:20px}.page-heading{display:block;margin-bottom:20px}.page-heading>.button,.page-heading>.heading-actions{margin-top:16px}.heading-actions{width:100%}.heading-actions .button{flex:1}.metric-grid{gap:10px}.metric-card{min-height:126px;padding:16px}.metric-card>strong{font-size:25px;margin-top:14px}.metric-top{font-size:11px}.activity-panel,.health-panel{padding:18px}.select-strip>span:last-child{display:none}.account-card{min-height:210px}.account-metrics{margin-top:18px}.form-grid,.dynamic-fields{grid-template-columns:1fr}.dynamic-fields .textarea-field{grid-column:auto}.modal{max-height:94vh;border-radius:17px}.modal>form{padding:20px}.modal-heading h2{font-size:21px}.input-action{display:grid;grid-template-columns:1fr auto}.node-loader{grid-template-columns:1fr}.node-loader .button{width:100%}.modal-actions .button{flex:1}.login-card{padding:28px 23px}.login-card h1{font-size:29px}}

/* Unified chats */
.chat-page{min-height:calc(100vh - var(--topbar) - 98px)}.chat-page-heading{margin-bottom:20px}.chat-workspace{height:clamp(620px,calc(100vh - var(--topbar) - 170px),850px);min-height:620px;display:grid;grid-template-columns:215px 355px minmax(390px,1fr);overflow:hidden;border:1px solid var(--border);border-radius:20px;background:#111522;box-shadow:0 22px 64px rgba(0,0,0,.18)}.chat-account-rail{min-width:0;padding:16px 11px;border-right:1px solid var(--border-soft);background:linear-gradient(180deg,#121725,#0f131f);overflow-y:auto}.chat-rail-title{padding:5px 9px 13px}.chat-rail-title strong,.chat-rail-title small{display:block}.chat-rail-title strong{font-size:12px}.chat-rail-title small{margin-top:4px;color:var(--muted-2);font-size:9px}.chat-account-filters{display:flex;flex-direction:column;gap:4px}.chat-account-filter{width:100%;min-height:57px;display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px;border:1px solid transparent;border-radius:12px;background:transparent;color:#abb5cb;text-align:left;cursor:pointer;transition:.16s}.chat-account-filter:hover{background:#181d2b;color:#fff}.chat-account-filter.active{color:#fff;border-color:rgba(117,101,244,.28);background:linear-gradient(90deg,rgba(117,101,244,.22),rgba(117,101,244,.06))}.chat-account-filter>span:nth-child(2){min-width:0}.chat-account-filter strong,.chat-account-filter small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-account-filter strong{font-size:11px}.chat-account-filter small{margin-top:4px;color:var(--muted-2);font-size:9px}.chat-account-filter b{min-width:20px;padding:3px 6px;border-radius:8px;background:#202638;color:#aeb8ce;font-size:9px;text-align:center}.chat-filter-avatar,.chat-all-icon{width:35px;height:35px;border-radius:var(--avatar-radius);object-fit:cover;background:#20273a}.chat-all-icon{display:grid;place-items:center;color:var(--purple-2);font-size:18px}.chat-filter-avatar.fallback{display:grid;place-items:center;color:white;font-size:12px;font-weight:800;background:linear-gradient(145deg,#7160e4,#3f88d2)}.chat-list-column{min-width:0;display:flex;flex-direction:column;border-right:1px solid var(--border-soft);background:#131824}.chat-list-heading{padding:16px 15px 12px;border-bottom:1px solid var(--border-soft)}.chat-list-heading>div{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:11px}.chat-list-heading strong{font-size:14px}.chat-list-heading small{color:var(--muted-2);font-size:9px}.chat-search{height:38px;display:flex;align-items:center;gap:8px;padding:0 11px;border:1px solid #293148;border-radius:10px;background:#101521;color:var(--muted)}.chat-search:focus-within{border-color:#6257cc}.chat-search input{width:100%;border:0;outline:0;background:transparent;color:#eef1fb;font-size:11px}.chat-errors{margin:9px 10px 0;padding:8px 10px;border:1px solid rgba(255,100,127,.25);border-radius:9px;background:rgba(255,100,127,.07);color:#ff91a3;font-size:9px;line-height:1.4}.chat-list{flex:1;min-height:0;overflow-y:auto;padding:6px}.chat-conversation{position:relative;width:100%;min-height:91px;display:grid;grid-template-columns:44px minmax(0,1fr) auto;grid-template-rows:auto auto auto;gap:3px 10px;padding:11px 9px;border:1px solid transparent;border-radius:13px;background:transparent;color:inherit;text-align:left;cursor:pointer;transition:.14s}.chat-conversation:hover{background:#181e2d}.chat-conversation.active{border-color:rgba(117,101,244,.34);background:linear-gradient(100deg,rgba(117,101,244,.16),rgba(117,101,244,.04))}.chat-conversation.unread:before{content:"";position:absolute;left:2px;top:17px;width:3px;height:28px;border-radius:4px;background:var(--purple-2);box-shadow:0 0 14px rgba(147,135,255,.6)}.chat-avatar{width:44px;height:44px;grid-row:1/3;border-radius:var(--avatar-radius);object-fit:cover;border:1px solid #313a53;background:#20273a}.chat-avatar-fallback{display:grid;place-items:center;color:#fff;font-size:14px;font-weight:800;background:linear-gradient(145deg,#5d53ca,#227e9b)}.chat-conversation-name{min-width:0;display:flex;align-items:center;gap:6px}.chat-conversation-name strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.chat-unread-dot{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:var(--purple-2)}.chat-conversation-time{color:var(--muted-2);font-size:9px;white-space:nowrap}.chat-conversation-preview{grid-column:2/4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#8d98b3;font-size:10px}.chat-conversation-footer{grid-column:1/4;display:flex;align-items:center;gap:7px;margin-top:5px;padding-left:1px;min-width:0}.chat-owner-chip{display:inline-flex;align-items:center;min-width:0;gap:5px;color:#8c97b1;font-size:9px}.chat-owner-chip img,.chat-owner-initial{width:16px;height:16px;flex:0 0 auto;border-radius:6px;object-fit:cover;background:#252d42}.chat-owner-initial{display:grid;place-items:center;color:white;font-size:7px;font-weight:800;background:#6053cd}.chat-owner-chip span{max-width:105px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-flag{display:inline-flex;align-items:center;gap:4px;min-width:0;max-width:125px;padding:3px 7px;border-radius:7px;font-size:8px;font-weight:700}.chat-flag span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-flag.violet{color:#b8adff;background:rgba(117,101,244,.14)}.chat-flag.cyan{color:#71dcf7;background:rgba(54,202,239,.12)}.chat-flag.green{color:#66e0c4;background:rgba(43,212,184,.12)}.chat-flag.amber{color:#ffd078;background:rgba(255,189,69,.12)}.chat-flag.rose{color:#ff91a3;background:rgba(255,100,127,.12)}.chat-list-empty,.chat-thread-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--muted)}.chat-list-empty{padding:35px 18px}.chat-list-empty strong{color:#e9ecf6;font-size:13px}.chat-list-empty span{max-width:230px;margin-top:7px;color:var(--muted-2);font-size:10px;line-height:1.5}.chat-list-empty .empty-icon{width:46px;height:46px;margin-bottom:13px;font-size:20px}.chat-list-tail{flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:8px;margin:4px 12px 12px;min-height:34px;color:var(--muted-2);font-size:9px}
.chat-list-tail.hidden{display:none}
.chat-list-spinner{width:11px;height:11px;border:2px solid #303852;border-top-color:#8b7dff;border-radius:50%;animation:chat-spin .7s linear infinite}
@keyframes chat-spin{to{transform:rotate(360deg)}}.chat-thread-column{min-width:0;display:flex;position:relative;background:radial-gradient(circle at 72% 8%,rgba(117,101,244,.05),transparent 32%),#0f131e}.chat-thread-empty{padding:30px}.chat-thread-empty h2{margin:19px 0 8px;font-size:18px}.chat-thread-empty p{max-width:350px;margin:0;color:var(--muted-2);font-size:11px;line-height:1.6}.chat-empty-graphic{width:92px;height:68px;position:relative}.chat-empty-graphic span{position:absolute;display:block;border:1px solid #333b56;border-radius:14px;background:#171d2b}.chat-empty-graphic span:nth-child(1){width:67px;height:38px;left:0;top:0}.chat-empty-graphic span:nth-child(2){width:55px;height:32px;right:0;bottom:0;border-color:#51489e;background:#1b1d35}.chat-empty-graphic span:nth-child(3){width:8px;height:8px;left:15px;top:15px;border:0;border-radius:50%;background:var(--purple-2);box-shadow:14px 0 #5e6680,28px 0 #5e6680}.chat-thread{width:100%;min-width:0;display:flex;flex-direction:column}.chat-thread-header{min-height:72px;display:flex;align-items:center;gap:11px;padding:12px 16px;border-bottom:1px solid var(--border-soft);background:rgba(18,23,35,.84);backdrop-filter:blur(12px)}.chat-thread-header .chat-avatar{grid-row:auto}.chat-thread-person{min-width:0;flex:1}.chat-thread-person strong,.chat-thread-person span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-thread-person strong{font-size:13px}.chat-thread-person span{margin-top:5px;color:var(--muted-2);font-size:9px}.chat-tag-button{max-width:165px;min-height:34px;display:flex;align-items:center;gap:6px;padding:0 10px;border:1px solid #303851;border-radius:10px;background:#171d2b;color:#9da8c0;font-size:9px;cursor:pointer}.chat-tag-button:hover{border-color:#5f55c2;color:#c5bdff}.chat-tag-button.has-tag{color:#c2b9ff;background:rgba(117,101,244,.1)}.chat-mobile-back{display:none;border:0;background:transparent;color:#c7cde0;font-size:29px;cursor:pointer}.chat-messages{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:20px 22px}.chat-message{display:flex;align-items:flex-end;gap:8px;max-width:78%;align-self:flex-start}.chat-message.outgoing{align-self:flex-end;flex-direction:row-reverse}.chat-message.system{align-self:center;max-width:90%}.chat-message-avatar{width:25px;height:25px;flex:0 0 auto;border-radius:var(--avatar-radius);object-fit:cover;background:#252d40}.chat-message-bubble{min-width:54px;padding:9px 11px 7px;border:1px solid #2a3248;border-radius:13px 13px 13px 4px;background:#181e2c;color:#edf0f8;font-size:11px;line-height:1.45;white-space:pre-wrap;word-break:break-word}.chat-message.outgoing .chat-message-bubble{border-color:#6658d1;border-radius:13px 13px 4px 13px;background:linear-gradient(145deg,#6557d2,#5448b4);color:white}.chat-message.system .chat-message-bubble{border:0;border-radius:9px;background:#171c29;color:#8994ad;text-align:center;font-size:9px}.chat-message-meta{display:flex;justify-content:flex-end;gap:6px;margin-top:5px;color:rgba(205,211,228,.55);font-size:7px}.chat-composer{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:end;gap:9px;padding:12px 15px;border-top:1px solid var(--border-soft);background:#121724}.chat-composer textarea{max-height:120px;min-height:43px;resize:none;padding:12px 13px;border:1px solid #303850;border-radius:12px;outline:0;background:#181e2c;color:#f3f4fb;font-size:11px;line-height:1.5}.chat-composer textarea:focus{border-color:#655ad7}.chat-composer button{width:43px;height:43px;border:1px solid #8475ff;border-radius:12px;background:linear-gradient(145deg,#7867f0,#6152d2);color:#fff;font-size:17px;cursor:pointer;box-shadow:0 8px 20px rgba(105,88,222,.22)}.chat-composer button:disabled{opacity:.45}.tag-color-field{margin-top:18px}.tag-color-field>span{display:block;margin-bottom:9px;color:#bac3d6;font-size:12px;font-weight:650}.tag-colors{display:flex;gap:9px}.tag-colors label{cursor:pointer}.tag-colors input{position:absolute;opacity:0;pointer-events:none}.tag-colors i{display:block;width:31px;height:31px;border:3px solid #111622;border-radius:10px;box-shadow:0 0 0 1px #303850}.tag-colors input:checked+i{box-shadow:0 0 0 2px #fff}.tag-colors .violet{background:var(--purple)}.tag-colors .cyan{background:var(--cyan)}.tag-colors .green{background:var(--teal)}.tag-colors .amber{background:var(--amber)}.tag-colors .rose{background:var(--rose)}.split-actions{display:grid;grid-template-columns:auto 1fr auto auto}.chat-skeleton{height:86px;margin:6px;border-radius:13px;background:linear-gradient(90deg,#171c2a 25%,#202638 38%,#171c2a 52%);background-size:300% 100%;animation:chat-shimmer 1.25s infinite}@keyframes chat-shimmer{to{background-position:-100% 0}}

@media(max-width:1180px) and (min-width:821px){.chat-workspace{grid-template-columns:185px 320px minmax(340px,1fr)}.chat-account-filter{grid-template-columns:34px minmax(0,1fr)}.chat-account-filter>b{display:none}.chat-filter-avatar,.chat-all-icon{width:33px;height:33px}.chat-thread-header{padding-left:13px;padding-right:13px}.chat-tag-button{max-width:120px}.chat-owner-chip span{max-width:78px}}
@media(max-width:820px){.mobile-nav{grid-template-columns:repeat(6,1fr)}.chat-page{min-height:0}.chat-page-heading{align-items:center}.chat-page-heading p:not(.eyebrow){display:none}.chat-workspace{height:calc(100dvh - var(--topbar) - 160px);min-height:520px;display:block;position:relative;border-radius:16px;overflow:hidden}.chat-account-rail{height:72px;display:flex;align-items:center;gap:6px;padding:8px;border:0;border-bottom:1px solid var(--border-soft);overflow-x:auto;overflow-y:hidden}.chat-rail-title{display:none}.chat-account-filters{display:flex;flex-direction:row;gap:6px}.chat-account-filter{width:auto;min-width:145px;min-height:54px;grid-template-columns:34px minmax(72px,1fr) auto;padding:7px}.chat-account-filter b{display:none}.chat-list-column{height:calc(100% - 72px);border:0}.chat-list-heading{padding:11px 12px}.chat-list-heading>div{margin-bottom:8px}.chat-thread-column{position:absolute;inset:0;z-index:4;transform:translateX(102%);transition:transform .2s ease;box-shadow:-14px 0 40px rgba(0,0,0,.35)}.chat-workspace.mobile-thread-open .chat-thread-column{transform:none}.chat-mobile-back{display:block}.chat-thread-header{min-height:66px;padding:9px 11px}.chat-thread-header .chat-avatar{width:39px;height:39px;border-radius:var(--avatar-radius)}.chat-tag-button{max-width:105px}.chat-tag-button span:last-child{max-width:70px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-messages{padding:15px 12px}.chat-message{max-width:88%}.chat-composer{padding:9px 10px calc(9px + env(safe-area-inset-bottom))}.chat-thread-empty{display:none}.split-actions{grid-template-columns:1fr 1fr}.split-actions>span{display:none}}
@media(max-width:560px){.chat-page-heading{display:flex}.chat-page-heading h1{font-size:25px;margin-bottom:0}.chat-page-heading .button{margin-top:0;min-height:38px;padding:0 12px}.chat-workspace{height:calc(100dvh - var(--topbar) - 143px);min-height:480px;margin-left:-6px;margin-right:-6px}.chat-conversation{min-height:88px}.chat-account-filter{min-width:132px}.chat-thread-person span{max-width:150px}.chat-tag-button{padding:0 8px}.chat-message-bubble{font-size:11px}.chat-composer textarea{font-size:16px}.chat-page-heading .eyebrow{display:none}}
.avatar-pair{display:grid;grid-template:1fr/1fr;flex:0 0 auto;justify-self:start}.avatar-pair>*{grid-area:1/1}.chat-account-filter .avatar-pair{width:35px;height:35px}.chat-conversation>.avatar-pair{grid-row:1/3}.chat-thread-header>#threadCustomerAvatar{display:grid;place-items:center;overflow:hidden;flex:0 0 auto}.chat-thread-header>#threadCustomerAvatar>img{width:100%;height:100%;object-fit:cover}.chat-thread-error{margin:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px;text-align:center}.chat-thread-error strong{font-size:12px}.chat-thread-error span{max-width:330px;margin-top:7px;color:var(--muted-2);font-size:9px;line-height:1.5}.chat-account-filter.disabled{opacity:.55}.chat-account-filter.down{opacity:.55}
.account-down-note{color:var(--rose)}
@media(max-width:820px){#page-chats.thread-open .chat-page-heading{display:none}#page-chats.thread-open .chat-workspace{height:calc(100dvh - var(--topbar) - 91px);min-height:0}}
.thread-viewed-lot{min-height:66px;display:grid;grid-template-columns:42px minmax(0,1fr) auto 18px;align-items:center;gap:10px;margin:9px 13px 0;padding:9px 11px;border:1px solid rgba(54,202,239,.22);border-radius:13px;background:linear-gradient(110deg,rgba(54,202,239,.08),rgba(117,101,244,.07));color:inherit;text-decoration:none;transition:.16s}.thread-viewed-lot:hover{transform:translateY(-1px);border-color:rgba(54,202,239,.42)}.thread-viewed-lot.no-link{pointer-events:none}.viewed-lot-image{width:42px;height:42px;display:grid;place-items:center;overflow:hidden;border-radius:11px;background:#20283a;color:var(--cyan)}.viewed-lot-image img{width:100%;height:100%;object-fit:cover}.viewed-lot-copy{min-width:0}.viewed-lot-copy small,.viewed-lot-copy strong,.viewed-lot-copy>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewed-lot-copy small{color:#72d7ef;font-size:8px;text-transform:uppercase;letter-spacing:.45px}.viewed-lot-copy small i{display:inline-block;width:5px;height:5px;margin-right:4px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 3px rgba(43,212,184,.1)}.viewed-lot-copy strong{margin-top:5px;font-size:11px}.viewed-lot-copy>span{margin-top:3px;color:var(--muted-2);font-size:8px}.thread-viewed-lot>b{color:var(--amber);font-size:11px;white-space:nowrap}.thread-viewed-lot>em{color:var(--muted-2);font-size:13px;font-style:normal}.chat-message-text{display:block}.chat-message-image{display:block;max-width:320px;margin:-5px -7px 7px;overflow:hidden;border-radius:10px;background:#0f1420}.chat-message-image:last-of-type{margin-bottom:4px}.chat-message-image img{display:block;width:100%;max-height:310px;object-fit:contain}.chat-message-image+.chat-message-image{margin-top:8px}.chat-attachment-preview{display:grid;grid-template-columns:46px minmax(0,1fr) 30px;align-items:center;gap:10px;margin:8px 15px 0;padding:8px 10px;border:1px solid rgba(117,101,244,.32);border-radius:12px;background:#171c2b}.chat-attachment-preview img{width:46px;height:42px;border-radius:9px;object-fit:cover;background:#0e121d}.chat-attachment-preview span{min-width:0}.chat-attachment-preview strong,.chat-attachment-preview small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-attachment-preview strong{font-size:10px}.chat-attachment-preview small{margin-top:4px;color:var(--muted-2);font-size:8px}.chat-attachment-preview button{width:29px;height:29px;border:0;border-radius:9px;background:#242b3e;color:#9da8c1;font-size:18px;cursor:pointer}.chat-composer{grid-template-columns:43px minmax(0,1fr) 44px}.chat-composer .chat-attach-button{width:43px;height:43px;border:1px solid #303850;background:#181e2c;color:#aaa3f5;box-shadow:none;font-size:21px}.chat-composer .chat-attach-button:hover{border-color:#6258ca;background:#1d2334}.chat-composer .chat-send-button{background:linear-gradient(145deg,#7867f0,#6152d2)}
@media(max-width:820px){.thread-viewed-lot{margin:7px 9px 0}.viewed-lot-copy>span{max-width:190px}.thread-viewed-lot>b{display:none}.chat-message-image{max-width:260px}.chat-attachment-preview{margin-left:10px;margin-right:10px}}
@media(max-width:420px){.thread-viewed-lot{grid-template-columns:38px minmax(0,1fr) 14px;padding:8px}.viewed-lot-image{width:38px;height:38px}.viewed-lot-copy>span{max-width:180px}.chat-message-image{max-width:220px}}
.chat-workspace{overflow:clip}.chat-workspace>*,.chat-thread{height:100%;min-height:0}
.thread-viewed-lot{min-height:82px;grid-template-columns:42px minmax(0,1fr) auto auto;cursor:default}.thread-viewed-lot:hover{transform:none}.viewed-lot-copy strong{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;line-height:1.3}.viewed-lot-text-link{display:block;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#8f83ff;text-decoration:none;font-size:8px}.viewed-lot-text-link:hover{color:#b7afff;text-decoration:underline}.viewed-lot-price{min-width:92px;color:var(--amber);font-size:18px;line-height:1;letter-spacing:-.25px;text-align:right;white-space:nowrap}.viewed-lot-price.missing{color:var(--muted-2);font-size:9px;letter-spacing:0}.viewed-lot-actions{display:flex;align-items:center;gap:6px}.viewed-lot-action{width:32px;height:32px;display:grid;place-items:center;flex:0 0 auto;border:1px solid #35405a;border-radius:10px;background:#1a2030;color:#b8b0ff;text-decoration:none;font-size:14px;cursor:pointer;transition:.15s}.viewed-lot-action:hover{border-color:#6d61df;background:#222840;color:#fff}.viewed-lot-action:disabled{opacity:.4;cursor:default}
@media(max-width:560px){.thread-viewed-lot{min-height:96px;grid-template-columns:38px minmax(0,1fr) auto;grid-template-areas:"image copy actions" "image price actions";align-items:start;padding:9px;gap:5px 9px}.viewed-lot-image{grid-area:image;align-self:center}.viewed-lot-copy{grid-area:copy}.viewed-lot-price{grid-area:price;min-width:0;margin-top:2px;text-align:left;font-size:17px}.viewed-lot-actions{grid-area:actions;align-self:center;flex-direction:column;gap:5px}.viewed-lot-action{width:29px;height:29px;border-radius:9px}.viewed-lot-copy>span{max-width:none}.viewed-lot-text-link{max-width:100%}}
.viewed-lot-copy small{display:flex;align-items:center;gap:0;min-width:0;line-height:1;white-space:nowrap}
.viewed-lot-copy small i{display:block;flex:0 0 6px;width:6px;height:6px;margin:0;box-sizing:border-box;border-radius:50%}
.viewed-lot-copy small>span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.viewed-lot-image{position:relative;flex:none;isolation:isolate}
.viewed-lot-image>b{position:absolute;inset:0;display:grid;place-items:center;line-height:1}
.lots-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.lots-toolbar .search{flex:1 1 260px}.lot-filter-group{display:grid;grid-template-columns:repeat(3,minmax(145px,1fr));gap:8px;flex:2 1 520px}.lot-filter-group .select{width:100%;min-width:0}.lots-toolbar .toolbar-actions{margin-left:auto}.lot-taxonomy{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0;margin-top:7px}.lot-taxonomy span{display:inline-flex;align-items:center;max-width:180px;height:22px;padding:0 8px;border:1px solid var(--border-soft);border-radius:7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#aab5d0;background:#181f2e;font-size:9px}.lot-taxonomy .lot-game{color:#a9e6f5;border-color:rgba(54,202,239,.2);background:rgba(54,202,239,.07)}.lot-taxonomy .lot-category{color:#c4bcff;border-color:rgba(117,101,244,.25);background:rgba(117,101,244,.09)}.lot-taxonomy .lot-server{color:#ffd9a8;border-color:rgba(240,168,74,.24);background:rgba(240,168,74,.08)}.lot-taxonomy .lot-node{color:var(--muted-2);background:transparent}.lot-row{min-height:78px}
@media(max-width:820px){.lots-toolbar{display:grid;grid-template-columns:1fr}.lot-filter-group{grid-template-columns:1fr 1fr;width:100%}.lot-filter-group .select:first-child{grid-column:1/-1}.lots-toolbar .toolbar-actions{width:100%;margin-left:0}.lot-row{min-height:134px}.lot-taxonomy{flex-wrap:wrap;gap:4px}.lot-taxonomy span{max-width:145px;height:20px;padding:0 6px}.lot-taxonomy .lot-node{max-width:none}}
.lot-row{grid-template-columns:42px minmax(230px,2.4fr) minmax(130px,1fr) 110px 90px 82px}.lot-actions-cell{display:flex;align-items:center;justify-content:center;gap:5px;padding-left:5px;padding-right:5px}.lot-action-button{width:31px;height:31px;display:grid;place-items:center;flex:0 0 auto;border:1px solid #303952;border-radius:9px;background:#181e2d;cursor:pointer;transition:.15s}.lot-action-button:hover{transform:translateY(-1px);border-color:#655ad0;background:#20263a}.lot-copy{color:var(--cyan);font-size:14px}.lot-edit{color:var(--purple-2);font-size:16px}
@media(max-width:820px){.lot-row{grid-template-columns:34px minmax(0,1fr) 40px}.lot-actions-cell{flex-direction:column;gap:6px;padding:7px 4px}.lot-action-button{width:30px;height:30px}}

/* System status */
.positive{color:var(--teal)!important}.negative{color:var(--rose)!important}.status-heading-actions{display:flex;align-items:center;gap:13px}.status-heading-actions>span{color:var(--muted-2);font-size:11px;white-space:nowrap}.status-hero{min-height:132px;display:flex;align-items:center;justify-content:space-between;gap:28px;margin-bottom:16px;padding:25px 27px;overflow:hidden;position:relative;background:radial-gradient(circle at 8% 20%,rgba(43,212,184,.09),transparent 32%),linear-gradient(145deg,#161c2a,#121722)}.status-hero:after{content:"";position:absolute;width:270px;height:270px;right:-105px;top:-150px;border:1px solid rgba(117,101,244,.13);border-radius:50%;box-shadow:0 0 0 28px rgba(117,101,244,.025),0 0 0 62px rgba(117,101,244,.018)}.status-hero-main{min-width:0;display:flex;align-items:center;gap:17px;position:relative;z-index:1}.status-hero-main h2{margin:5px 0 6px;font-size:23px;letter-spacing:-.45px}.status-hero-main>div>span{color:var(--muted);font-size:12px}.status-beacon{width:52px;height:52px;display:grid;place-items:center;flex:0 0 auto;border:1px solid rgba(43,212,184,.28);border-radius:16px;background:rgba(43,212,184,.08);box-shadow:inset 0 0 20px rgba(43,212,184,.04)}.status-beacon i{width:12px;height:12px;border:3px solid #15242a;border-radius:50%;background:var(--teal);box-shadow:0 0 0 5px rgba(43,212,184,.1),0 0 20px rgba(43,212,184,.5)}.status-beacon.error{border-color:rgba(255,100,127,.3);background:rgba(255,100,127,.08)}.status-beacon.error i{background:var(--rose);box-shadow:0 0 0 5px rgba(255,100,127,.1),0 0 20px rgba(255,100,127,.45)}.status-hero-facts{display:grid;grid-template-columns:repeat(3,minmax(125px,1fr));min-width:min(610px,54%);position:relative;z-index:1}.status-hero-facts>div{padding:8px 21px;border-left:1px solid var(--border-soft)}.status-hero-facts span,.status-hero-facts strong{display:block}.status-hero-facts span{margin-bottom:8px;color:var(--muted-2);font-size:10px;text-transform:uppercase;letter-spacing:.55px}.status-hero-facts strong{font-size:14px}.status-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}.status-metric{min-height:172px;padding:20px;overflow:hidden;position:relative}.status-metric:after{content:"";position:absolute;width:90px;height:90px;right:-38px;bottom:-45px;border-radius:50%;background:currentColor;filter:blur(30px);opacity:.08}.status-metric.cyan{color:var(--cyan)}.status-metric.purple{color:var(--purple-2)}.status-metric.amber{color:var(--amber)}.status-metric.teal{color:var(--teal)}.status-metric-head{display:flex;align-items:center;justify-content:space-between;color:#aab4ca;font-size:12px}.status-metric-head b{padding:4px 6px;border-radius:6px;color:currentColor;background:rgba(255,255,255,.035);font-size:8px;letter-spacing:.65px}.status-metric>strong{display:block;margin:19px 0 13px;color:currentColor;font-size:28px;letter-spacing:-.8px}.status-metric>small{display:block;margin-top:10px;color:var(--muted-2);font-size:10px}.status-progress{height:5px;overflow:hidden;border-radius:999px;background:#252c3d}.status-progress i{display:block;width:0;height:100%;border-radius:inherit;background:currentColor;box-shadow:0 0 13px currentColor;transition:width .35s ease}.status-process-line{min-height:19px;display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--muted-2);font-size:10px}.status-process-line b{overflow:hidden;color:#b8c1d5;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.status-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.status-detail-card,.status-accounts-card{padding:23px}.status-card-heading{display:flex;align-items:center;gap:12px;margin-bottom:18px}.status-card-heading h2{margin:5px 0 0;font-size:17px}.status-card-icon{width:40px;height:40px;display:grid;place-items:center;flex:0 0 auto;border-radius:12px;color:var(--cyan);background:rgba(54,202,239,.08)}.status-card-icon.purple{color:var(--purple-2);background:rgba(117,101,244,.1)}.status-card-icon.green{color:var(--teal);background:rgba(43,212,184,.08)}.status-detail-list{margin:0}.status-detail-list>div{min-height:41px;display:grid;grid-template-columns:minmax(120px,.75fr) minmax(0,1.25fr);align-items:center;gap:16px;border-bottom:1px solid var(--border-soft)}.status-detail-list>div:last-child{border-bottom:0}.status-detail-list dt{color:var(--muted-2);font-size:10px}.status-detail-list dd{min-width:0;margin:0;color:#dbe0ee;font-size:11px;text-align:right;overflow-wrap:anywhere}.status-accounts-card{grid-column:1/-1;display:grid;grid-template-columns:minmax(190px,.8fr) minmax(360px,1.5fr);align-items:center;gap:24px}.status-accounts-card .status-card-heading{margin:0}.status-account-values{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--border-soft);border-radius:13px;background:#111622}.status-account-values>div{padding:14px 18px;border-right:1px solid var(--border-soft)}.status-account-values>div:last-child{border:0}.status-account-values span,.status-account-values strong{display:block}.status-account-values span{color:var(--muted-2);font-size:10px}.status-account-values strong{margin-top:6px;font-size:20px}.status-accounts-card>p{grid-column:2;margin:-11px 0 0;color:var(--muted-2);font-size:10px}
@media(max-width:1180px){.status-hero{align-items:flex-start}.status-hero-facts{min-width:0;width:52%}.status-hero-facts>div{padding:8px 13px}.status-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.mobile-nav{grid-template-columns:repeat(7,1fr)}.mobile-nav button{min-width:0;padding:0 1px}.mobile-nav button span{font-size:17px}.mobile-nav button small{font-size:8px}.status-page-heading{align-items:flex-start}.status-heading-actions{align-items:flex-end;flex-direction:column-reverse;gap:6px}.status-heading-actions>span{font-size:9px}.status-hero{display:block;padding:20px}.status-hero-facts{width:100%;margin-top:19px;grid-template-columns:1fr}.status-hero-facts>div{display:flex;align-items:center;justify-content:space-between;min-height:39px;padding:8px 0;border-left:0;border-top:1px solid var(--border-soft)}.status-hero-facts span{margin:0}.status-metric-grid,.status-detail-grid{grid-template-columns:1fr}.status-metric{min-height:158px}.status-accounts-card{grid-column:auto;display:block}.status-accounts-card .status-card-heading{margin-bottom:18px}.status-account-values{grid-template-columns:repeat(3,1fr)}.status-account-values>div{padding:13px 10px}.status-accounts-card>p{margin:12px 0 0}.status-detail-list>div{grid-template-columns:minmax(105px,.7fr) minmax(0,1.3fr)}}
@media(max-width:480px){.status-page-heading{display:block}.status-heading-actions{margin-top:14px;align-items:flex-start;flex-direction:row-reverse;justify-content:space-between}.status-heading-actions .button{min-height:38px}.status-hero-main h2{font-size:19px}.status-beacon{width:46px;height:46px;border-radius:14px}.status-account-values strong{font-size:17px}.status-account-values span{font-size:8px}.status-detail-card,.status-accounts-card{padding:18px}.status-detail-list>div{display:block;padding:10px 0}.status-detail-list dd{margin-top:5px;text-align:left}.mobile-nav button small{font-size:7.5px}}

/* Finance */
.finance-page-heading{margin-bottom:20px}.finance-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:16px}.finance-metric{min-height:124px;padding:19px 20px;position:relative;overflow:hidden;border:1px solid var(--border);border-radius:16px;background:linear-gradient(145deg,#171c2a,#131824)}.finance-metric:after{content:"";position:absolute;width:90px;height:90px;right:-35px;bottom:-50px;border-radius:50%;background:currentColor;filter:blur(25px);opacity:.1}.finance-metric.balance{color:var(--amber)}.finance-metric.total{color:var(--teal)}.finance-metric.month{color:var(--purple-2)}.finance-metric.pending{color:var(--cyan)}.finance-metric>span,.finance-metric>strong,.finance-metric>small{display:block}.finance-metric>span{color:#9ba7c0;font-size:11px}.finance-metric>strong{margin:15px 0 5px;color:currentColor;font-size:23px;line-height:1.15;letter-spacing:-.55px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.finance-metric>small{color:var(--muted-2);font-size:9px}.finance-workspace{min-height:570px;display:grid;grid-template-columns:220px minmax(0,1fr);overflow:hidden}.finance-account-rail{min-width:0;padding:15px 11px;border-right:1px solid var(--border-soft);background:linear-gradient(180deg,#121725,#0f131f)}.finance-rail-heading{padding:5px 9px 13px}.finance-rail-heading strong,.finance-rail-heading small{display:block}.finance-rail-heading strong{font-size:12px}.finance-rail-heading small{margin-top:4px;color:var(--muted-2);font-size:9px}.finance-account-filters{display:flex;flex-direction:column;gap:4px}.finance-account-filter{width:100%;min-height:58px;display:grid;grid-template-columns:37px minmax(0,1fr) 8px;align-items:center;gap:10px;padding:8px;border:1px solid transparent;border-radius:12px;background:transparent;color:#abb5cb;text-align:left;cursor:pointer;transition:.16s}.finance-account-filter:hover{background:#181d2b;color:#fff}.finance-account-filter.active{color:#fff;border-color:rgba(117,101,244,.3);background:linear-gradient(90deg,rgba(117,101,244,.22),rgba(117,101,244,.06))}.finance-account-filter.disabled{opacity:.58}.finance-account-filter>span:nth-child(2){min-width:0}.finance-account-filter strong,.finance-account-filter small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.finance-account-filter strong{font-size:11px}.finance-account-filter small{margin-top:4px;color:var(--muted-2);font-size:9px}.finance-filter-avatar,.finance-all-icon{width:36px;height:36px;border-radius:var(--avatar-radius);object-fit:cover}.finance-all-icon{display:grid;place-items:center;color:var(--amber);font-size:17px;background:rgba(255,189,69,.08)}.finance-account-filter>b{padding:3px 6px;border-radius:8px;color:#aeb8ce;background:#202638;font-size:9px}.finance-account-state{width:7px;height:7px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 3px rgba(43,212,184,.08)}.finance-account-state.error{background:var(--rose);box-shadow:0 0 0 3px rgba(255,100,127,.08)}.finance-account-state.off{background:var(--muted-2);box-shadow:none}.finance-main{min-width:0;padding:17px}.finance-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:15px}.finance-tabs{display:flex;padding:4px;border:1px solid var(--border-soft);border-radius:11px;background:#111622}.finance-tabs button{min-height:33px;padding:0 14px;border:0;border-radius:8px;background:transparent;color:#8490aa;font-size:10px;font-weight:700;cursor:pointer}.finance-tabs button.active{color:#fff;background:#222941;box-shadow:0 4px 12px rgba(0,0,0,.16)}.finance-search{width:min(340px,48%);height:41px;display:flex;align-items:center;gap:9px;padding:0 12px;border:1px solid var(--border);border-radius:10px;background:#111622;color:var(--muted)}.finance-search:focus-within{border-color:#655ad7}.finance-search input{min-width:0;width:100%;border:0;outline:0;background:transparent;color:var(--text);font-size:10px}.finance-errors{margin-bottom:12px;padding:9px 11px;border:1px solid rgba(255,100,127,.25);border-radius:9px;background:rgba(255,100,127,.07);color:#ff91a3;font-size:9px}.finance-history-list,.finance-recipients-list{display:flex;flex-direction:column;gap:8px}.finance-history-card{min-height:93px;display:grid;grid-template-columns:minmax(145px,.9fr) minmax(190px,1.25fr) minmax(150px,1fr) minmax(125px,.65fr) 31px;align-items:center;gap:12px;padding:13px 12px;border:1px solid var(--border-soft);border-radius:13px;background:#141927;transition:.15s}.finance-history-card:hover,.finance-recipient-card:hover{border-color:#3b4561;background:#171d2c}.finance-account-cell{min-width:0;display:flex;align-items:center;gap:10px}.finance-row-avatar{width:37px;height:37px;border-radius:var(--avatar-radius);object-fit:cover}.finance-account-cell>span{min-width:0}.finance-account-cell strong,.finance-account-cell small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.finance-account-cell strong{font-size:11px}.finance-account-cell small{margin-top:4px;color:var(--muted-2);font-size:8px}.finance-recipient-cell,.finance-note-cell{min-width:0}.finance-recipient-cell>small,.finance-note-cell>small{display:block;margin-bottom:5px;color:var(--muted-2);font-size:8px;text-transform:uppercase;letter-spacing:.4px}.finance-recipient-cell>div{display:flex;align-items:center;gap:6px;min-width:0}.finance-recipient-cell>div strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.finance-copy{width:25px;height:25px;display:grid;place-items:center;flex:0 0 auto;border:1px solid #303951;border-radius:7px;background:#1b2131;color:var(--cyan);cursor:pointer}.finance-recipient-cell>span{display:block;margin-top:6px}.finance-flag,.finance-no-flag{display:inline-flex;align-items:center;width:max-content;max-width:100%;padding:3px 7px;border-radius:7px;font-size:8px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.finance-flag.violet{color:#b8adff;background:rgba(117,101,244,.14)}.finance-flag.cyan{color:#71dcf7;background:rgba(54,202,239,.12)}.finance-flag.green{color:#66e0c4;background:rgba(43,212,184,.12)}.finance-flag.amber{color:#ffd078;background:rgba(255,189,69,.12)}.finance-flag.rose{color:#ff91a3;background:rgba(255,100,127,.12)}.finance-no-flag{padding-left:0;color:#65708b;font-weight:500}.finance-note-cell strong,.finance-note-cell time{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.finance-note-cell strong{font-size:10px;color:#c7cede}.finance-note-cell time{margin-top:6px;color:var(--muted-2);font-size:8px}.finance-amount-cell{text-align:right}.finance-amount-cell>strong{display:block;color:var(--amber);font-size:15px;white-space:nowrap}.finance-status{display:inline-flex;margin-top:7px;padding:3px 7px;border-radius:7px;font-size:8px}.finance-status.complete{color:var(--teal);background:rgba(43,212,184,.08)}.finance-status.pending{color:var(--amber);background:rgba(255,189,69,.08)}.finance-edit-tag{width:30px;height:30px;border:1px solid transparent;border-radius:9px;background:transparent;color:#8793ad;cursor:pointer}.finance-edit-tag:hover{border-color:#3c4562;background:#1c2232;color:#fff}.finance-load-more{width:100%;min-height:41px;margin-top:11px;border:1px solid #303852;border-radius:10px;background:#171d2c;color:#aaa3f5;font-size:10px;font-weight:700;cursor:pointer}.notify-quiet{margin-top:14px;padding-top:13px;border-top:1px solid var(--border-soft)}.notify-quiet>.eyebrow{display:block;margin-bottom:9px}.notify-quiet-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.notify-quiet-chip{padding:6px 11px;border:1px solid var(--border-soft);border-radius:999px;background:#151a27;color:#c7cede;font-size:9px;font-weight:650;cursor:pointer;transition:.15s}.notify-quiet-chip:hover{border-color:#3b4561}.notify-quiet-chip.muted{border-color:rgba(255,166,87,.35);background:rgba(255,166,87,.10);color:var(--amber)}.notify-quiet-empty{color:var(--muted-2);font-size:9px}.finance-tail-note{margin:10px 0 0;padding:9px 11px;border:1px solid rgba(255,189,69,.22);border-radius:10px;background:rgba(255,189,69,.06);color:#d6b877;font-size:9px;line-height:1.5}.finance-empty{min-height:330px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.finance-empty>span{width:50px;height:50px;display:grid;place-items:center;margin-bottom:14px;border-radius:15px;color:var(--purple-2);background:rgba(117,101,244,.09);font-size:20px}.finance-empty strong{font-size:13px}.finance-empty small{margin-top:7px;color:var(--muted-2);font-size:10px}.finance-recipient-card{min-height:90px;display:grid;grid-template-columns:42px minmax(0,1fr) minmax(120px,.35fr) 31px;align-items:center;gap:12px;padding:13px;border:1px solid var(--border-soft);border-radius:13px;background:#141927;transition:.15s}.finance-recipient-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;color:var(--cyan);background:rgba(54,202,239,.08)}.finance-recipient-main{min-width:0}.finance-recipient-main>div{display:flex;align-items:center;gap:7px}.finance-recipient-main>div>strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.finance-recipient-main>small{display:block;margin:4px 0 7px;color:var(--muted-2);font-size:9px}.finance-recipient-main>p{margin:7px 0 0;color:#9ca7bd;font-size:9px}.finance-recipient-stats{text-align:right}.finance-recipient-stats strong,.finance-recipient-stats small{display:block}.finance-recipient-stats strong{color:var(--amber);font-size:12px}.finance-recipient-stats small{margin-top:5px;color:var(--muted-2);font-size:8px}.finance-withdraw-modal{width:min(760px,calc(100% - 28px))}.finance-withdraw-modal>form{max-height:88vh;overflow-y:auto}.finance-withdraw-fields{gap:14px}.finance-fee-hint{align-self:end;min-height:44px;display:flex;flex-direction:column;justify-content:center;padding:7px 12px;border:1px solid var(--border-soft);border-radius:10px;background:#141a27}.finance-fee-hint span{color:var(--muted-2);font-size:9px}.finance-fee-hint strong{margin-top:4px;font-size:10px}.finance-tag-colors{padding:2px 1px}.finance-preview{margin-top:19px;padding:16px;border:1px solid rgba(43,212,184,.25);border-radius:14px;background:linear-gradient(145deg,rgba(43,212,184,.07),rgba(117,101,244,.045))}.finance-preview-head{display:flex;justify-content:space-between;gap:10px;margin-bottom:14px}.finance-preview-head span{color:var(--teal);font-size:8px;font-weight:800;letter-spacing:1px}.finance-preview-head strong{font-size:11px}.finance-preview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.finance-preview-grid>div{padding:10px;border-radius:10px;background:rgba(8,12,20,.35)}.finance-preview-grid span,.finance-preview-grid strong{display:block}.finance-preview-grid span{color:var(--muted-2);font-size:8px}.finance-preview-grid strong{margin-top:5px;font-size:11px;overflow-wrap:anywhere}.finance-preview>p{margin:11px 0;color:#8f9bb4;font-size:9px}.finance-final-check{display:flex;align-items:flex-start;gap:10px;margin-top:14px;padding:12px;border:1px solid rgba(255,189,69,.2);border-radius:10px;background:rgba(255,189,69,.055);cursor:pointer}.finance-final-check input{margin-top:2px;accent-color:var(--amber)}.finance-final-check strong,.finance-final-check small{display:block}.finance-final-check strong{font-size:10px}.finance-final-check small{margin-top:4px;color:#9a8d70;font-size:8px;line-height:1.45}
@media(max-width:1100px){.finance-history-card{grid-template-columns:minmax(135px,.8fr) minmax(175px,1.2fr) minmax(120px,.8fr) 115px 31px}.finance-note-cell{display:none}.finance-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.mobile-nav{grid-template-columns:repeat(8,1fr)}.mobile-nav button span{font-size:16px}.mobile-nav button small{font-size:7px}.finance-page-heading{align-items:flex-start}.finance-page-heading .heading-actions{justify-content:flex-end}.finance-page-heading #syncFinanceButton{display:none}.finance-metrics{gap:9px}.finance-metric{min-height:105px;padding:15px}.finance-metric>strong{font-size:18px}.finance-workspace{display:block;min-height:0}.finance-account-rail{display:flex;align-items:center;gap:6px;padding:8px;border-right:0;border-bottom:1px solid var(--border-soft);overflow-x:auto}.finance-rail-heading{display:none}.finance-account-filters{display:flex;flex-direction:row;gap:6px}.finance-account-filter{width:auto;min-width:145px;min-height:54px;padding:7px}.finance-main{padding:11px}.finance-toolbar{align-items:stretch;flex-direction:column;gap:9px}.finance-search{width:100%}.finance-history-card{grid-template-columns:minmax(0,1fr) auto 28px;grid-template-areas:"account amount edit" "recipient recipient edit";gap:10px;min-height:128px;padding:12px}.finance-account-cell{grid-area:account}.finance-recipient-cell{grid-area:recipient;padding-top:9px;border-top:1px solid var(--border-soft)}.finance-note-cell{display:none}.finance-amount-cell{grid-area:amount}.finance-edit-tag{grid-area:edit}.finance-recipient-card{grid-template-columns:38px minmax(0,1fr) 28px;grid-template-areas:"icon main edit" "stats stats edit"}.finance-recipient-icon{grid-area:icon;width:37px;height:37px}.finance-recipient-main{grid-area:main}.finance-recipient-stats{grid-area:stats;display:flex;justify-content:space-between;padding-top:8px;border-top:1px solid var(--border-soft);text-align:left}.finance-withdraw-modal>form{padding:20px}.finance-withdraw-modal .form-grid{grid-template-columns:1fr}.finance-withdraw-modal .field.full{grid-column:auto}.finance-preview-grid{grid-template-columns:1fr}.finance-withdraw-modal .modal-actions{position:sticky;bottom:-20px;margin:20px -20px -20px;padding:13px 20px calc(13px + env(safe-area-inset-bottom));background:#111622;border-top:1px solid var(--border-soft)}}
@media(max-width:480px){.finance-page-heading{display:block}.finance-page-heading .heading-actions{margin-top:14px;justify-content:flex-start}.finance-page-heading .button{min-height:38px;padding:0 12px}.finance-metrics{grid-template-columns:1fr 1fr}.finance-metric>strong{font-size:16px}.finance-metric>span{font-size:9px}.finance-metric>small{font-size:8px}.mobile-nav button small{font-size:6.5px}}

/* Account profile links */
.account-footer-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px;min-width:0;white-space:nowrap}.account-profile-link{min-height:28px;display:inline-flex;align-items:center;gap:5px;padding:0 9px;border:1px solid rgba(117,101,244,.3);border-radius:8px;background:rgba(117,101,244,.08);color:#b7adff;text-decoration:none;font-size:9px;font-weight:700;transition:.15s}.account-profile-link b{color:var(--cyan);font-size:11px}.account-profile-link:hover{border-color:#6e61dc;background:rgba(117,101,244,.16);color:#fff}.account-profile-link.disabled{opacity:.38;cursor:not-allowed;pointer-events:none}.account-footer>.account-proxy{min-width:0;flex:1}@media(max-width:480px){.account-footer{align-items:flex-start;flex-direction:column}.account-footer-actions{width:100%;justify-content:space-between}}

/* Orders */
.orders-page-heading{margin-bottom:20px}.order-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:16px}.order-metric{min-height:120px;padding:19px 20px;position:relative;overflow:hidden;border:1px solid var(--border);border-radius:16px;background:linear-gradient(145deg,#171c2a,#131824)}.order-metric:after{content:"";position:absolute;width:90px;height:90px;right:-35px;bottom:-50px;border-radius:50%;background:currentColor;filter:blur(25px);opacity:.09}.order-metric.purple{color:var(--purple-2)}.order-metric.cyan{color:var(--cyan)}.order-metric.green{color:var(--teal)}.order-metric.amber{color:var(--amber)}.order-metric>span,.order-metric>strong,.order-metric>small{display:block}.order-metric>span{color:#9ba7c0;font-size:11px}.order-metric>strong{margin:14px 0 5px;color:currentColor;font-size:23px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.order-metric>small{color:var(--muted-2);font-size:9px}.orders-workspace{min-height:570px;display:grid;grid-template-columns:220px minmax(0,1fr);overflow:hidden}.orders-account-rail{min-width:0;padding:15px 11px;border-right:1px solid var(--border-soft);background:linear-gradient(180deg,#121725,#0f131f)}.orders-rail-heading{padding:5px 9px 13px}.orders-rail-heading strong,.orders-rail-heading small{display:block}.orders-rail-heading strong{font-size:12px}.orders-rail-heading small{margin-top:4px;color:var(--muted-2);font-size:9px}.orders-account-filters{display:flex;flex-direction:column;gap:4px}.orders-account-filter{width:100%;min-height:58px;display:grid;grid-template-columns:37px minmax(0,1fr) 8px;align-items:center;gap:10px;padding:8px;border:1px solid transparent;border-radius:12px;background:transparent;color:#abb5cb;text-align:left;cursor:pointer;transition:.16s}.orders-account-filter:hover{color:#fff;background:#181d2b}.orders-account-filter.active{color:#fff;border-color:rgba(117,101,244,.3);background:linear-gradient(90deg,rgba(117,101,244,.22),rgba(117,101,244,.06))}.orders-account-filter.disabled{opacity:.58}.orders-account-filter>span:nth-child(2){min-width:0}.orders-account-filter strong,.orders-account-filter small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.orders-account-filter strong{font-size:11px}.orders-account-filter small{margin-top:4px;color:var(--muted-2);font-size:8px}.orders-filter-avatar,.orders-all-icon{width:36px;height:36px;border-radius:var(--avatar-radius);object-fit:cover}.orders-all-icon{display:grid;place-items:center;color:var(--purple-2);background:rgba(117,101,244,.1);font-size:15px}.orders-account-filter>b{padding:3px 6px;border-radius:8px;color:#aeb8ce;background:#202638;font-size:9px}.orders-account-state{width:7px;height:7px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 3px rgba(43,212,184,.08)}.orders-account-state.error{background:var(--rose)}.orders-account-state.off{background:var(--muted-2);box-shadow:none}.orders-main{min-width:0;padding:17px}.orders-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:15px}.orders-status-tabs{display:flex;padding:4px;border:1px solid var(--border-soft);border-radius:11px;background:#111622}.orders-status-tabs button{min-height:33px;padding:0 14px;border:0;border-radius:8px;background:transparent;color:#8490aa;font-size:10px;font-weight:700;cursor:pointer}.orders-status-tabs button.active{color:#fff;background:#222941;box-shadow:0 4px 12px rgba(0,0,0,.16)}.orders-search{width:min(360px,45%);height:41px;display:flex;align-items:center;gap:9px;padding:0 12px;border:1px solid var(--border);border-radius:10px;background:#111622;color:var(--muted)}.orders-search:focus-within{border-color:#655ad7}.orders-search input{min-width:0;width:100%;border:0;outline:0;background:transparent;color:var(--text);font-size:10px}.orders-errors{margin-bottom:12px;padding:9px 11px;border:1px solid rgba(255,100,127,.25);border-radius:9px;background:rgba(255,100,127,.07);color:#ff91a3;font-size:9px}.orders-list{display:flex;flex-direction:column;gap:8px}.order-card{min-height:96px;display:grid;grid-template-columns:minmax(135px,.75fr) minmax(240px,1.55fr) minmax(125px,.7fr) minmax(105px,.55fr) 34px;align-items:center;gap:13px;padding:13px;border:1px solid var(--border-soft);border-radius:13px;background:#141927;transition:.15s}.order-card:hover{border-color:#3b4561;background:#171d2c}.order-card.active-order{border-color:rgba(54,202,239,.22);background:linear-gradient(100deg,rgba(54,202,239,.045),#141927 38%)}.order-owner{min-width:0;display:flex;align-items:center;gap:10px}.order-account-avatar{width:38px;height:38px;border-radius:var(--avatar-radius);object-fit:cover}.order-owner>span{min-width:0}.order-owner strong,.order-owner small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.order-owner strong{font-size:11px}.order-owner small{margin-top:4px;color:var(--muted-2);font-size:8px}.order-description{min-width:0}.order-number{display:block;margin-bottom:5px;color:#8077cb;font-size:8px;font-weight:800;letter-spacing:.4px}.order-description>strong,.order-description>small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.order-description>strong{font-size:11px}.order-description>small{margin-top:6px;color:var(--muted-2);font-size:8px}.order-customer{min-width:0}.order-customer>small,.order-customer>strong,.order-customer>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.order-customer>small{margin-bottom:5px;color:var(--muted-2);font-size:8px;text-transform:uppercase;letter-spacing:.4px}.order-customer>strong{font-size:10px}.order-customer>span{margin-top:4px;color:#68738d;font-size:8px}.order-summary{text-align:right}.order-summary>strong{display:block;color:var(--amber);font-size:14px;white-space:nowrap}.order-status{display:inline-flex;margin-top:7px;padding:3px 7px;border-radius:7px;font-size:8px}.order-status.active{color:var(--cyan);background:rgba(54,202,239,.09)}.order-status.complete{color:var(--teal);background:rgba(43,212,184,.08)}.order-status.refunded{color:var(--amber);background:rgba(255,189,69,.1)}
/* Деньги в строке заказа: успешный — зелёным, возврат — жёлтым. Возврат это не ошибка и не
   продажа, поэтому и не красный, и не зелёный. */
.order-summary strong.money-earned{color:var(--teal)}
.order-summary strong.money-refunded{color:var(--amber)}.order-open-link{width:32px;height:32px;display:grid;place-items:center;border:1px solid #313a53;border-radius:9px;background:#191f2e;color:var(--cyan);text-decoration:none;font-size:14px}.order-open-link:hover{border-color:#4cabc4;background:#1c2738}.orders-load-more{width:100%;min-height:41px;margin-top:11px;border:1px solid #303852;border-radius:10px;background:#171d2c;color:#aaa3f5;font-size:10px;font-weight:700;cursor:pointer}.orders-empty{min-height:330px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.orders-empty>span{width:50px;height:50px;display:grid;place-items:center;margin-bottom:14px;border-radius:15px;color:var(--purple-2);background:rgba(117,101,244,.09);font-size:18px}.orders-empty strong{font-size:13px}.orders-empty small{margin-top:7px;color:var(--muted-2);font-size:10px}
@media(max-width:1100px){.order-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.order-card{grid-template-columns:minmax(125px,.7fr) minmax(220px,1.4fr) minmax(105px,.55fr) 34px}.order-customer{display:none}}
@media(max-width:820px){.mobile-nav{grid-template-columns:repeat(9,1fr)}.mobile-nav button span{font-size:15px}.mobile-nav button small{font-size:6px}.orders-page-heading{display:flex;align-items:flex-start}.order-metrics{gap:9px}.order-metric{min-height:105px;padding:15px}.order-metric>strong{font-size:18px}.orders-workspace{display:block;min-height:0}.orders-account-rail{display:flex;align-items:center;gap:6px;padding:8px;border-right:0;border-bottom:1px solid var(--border-soft);overflow-x:auto}.orders-rail-heading{display:none}.orders-account-filters{display:flex;flex-direction:row;gap:6px}.orders-account-filter{width:auto;min-width:155px;min-height:54px;padding:7px}.orders-main{padding:11px}.orders-toolbar{align-items:stretch;flex-direction:column;gap:9px}.orders-search{width:100%}.order-card{grid-template-columns:minmax(0,1fr) auto 32px;grid-template-areas:"owner summary open" "description description open";gap:10px;min-height:128px;padding:12px}.order-owner{grid-area:owner}.order-description{grid-area:description;padding-top:10px;border-top:1px solid var(--border-soft)}.order-customer{display:none}.order-summary{grid-area:summary}.order-open-link{grid-area:open}.orders-status-tabs button{flex:1}.orders-status-tabs{display:flex}}
@media(max-width:480px){.orders-page-heading{display:block}.orders-page-heading .button{margin-top:14px}.order-metrics{grid-template-columns:1fr 1fr}.order-metric>span{font-size:9px}.order-metric>strong{font-size:16px}.order-metric>small{font-size:8px}.mobile-nav button small{font-size:5.8px}}

/* Send account lots from a chat */
.chat-groups{margin:0 0 8px;padding:0 4px}.chat-groups-toggle{width:100%;min-height:32px;display:flex;align-items:center;gap:7px;padding:0 9px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--muted);font-size:10px;font-weight:750;letter-spacing:.3px;cursor:pointer;transition:.15s}.chat-groups-toggle:hover{border-color:#293248;background:#141a27;color:#b8c1d5}.chat-groups-toggle.open{color:#b8c1d5}.chat-groups-caret{font-size:9px;opacity:.75}.chat-groups-toggle b{margin-left:auto;padding:1px 6px;border-radius:6px;background:rgba(117,101,244,.14);color:#c4bcff;font-size:9px;font-weight:750}.chat-group-list{display:flex;flex-direction:column;gap:3px;margin-top:4px}.chat-group-row{display:flex;align-items:center;gap:8px;min-height:38px;padding:5px 10px;border:1px solid transparent;border-radius:10px;background:transparent;color:inherit;text-align:left;cursor:pointer;transition:.15s}.chat-group-row:hover{border-color:#293248;background:#141a27}.chat-group-row.active{border-color:#6b5edf;background:linear-gradient(110deg,rgba(117,101,244,.16),rgba(54,202,239,.05))}.chat-group-name{flex:0 0 auto;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#b8c1d5;font-size:10.5px;font-weight:700}.chat-group-preview{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted-2);font-size:9.5px}.chat-group-bell{flex:0 0 auto;font-size:10px;font-style:normal}.chat-mute-button{min-height:34px;width:34px;min-width:34px;display:flex;align-items:center;justify-content:center;padding:0;border:1px solid rgba(54,202,239,.28);border-radius:10px;background:rgba(54,202,239,.07);color:#83def4;font-size:14px;cursor:pointer;transition:.15s}.chat-mute-button:hover{border-color:rgba(54,202,239,.55);background:rgba(54,202,239,.12)}.chat-mute-button.off{border-color:rgba(255,100,127,.3);background:rgba(255,100,127,.08)}.chat-mute-button.off:hover{border-color:rgba(255,100,127,.55);background:rgba(255,100,127,.13)}.chat-lots-button{min-height:34px;display:flex;align-items:center;gap:6px;padding:0 11px;border:1px solid rgba(54,202,239,.28);border-radius:10px;background:rgba(54,202,239,.07);color:#83def4;font-size:9px;font-weight:750;cursor:pointer;transition:.15s}.chat-lots-button:hover{border-color:rgba(54,202,239,.55);background:rgba(54,202,239,.12);color:#fff}.chat-lots-button>span:first-child{font-size:15px}.chat-lot-modal{width:min(850px,calc(100% - 28px))}.chat-lot-modal>form{max-height:min(88vh,780px);overflow-y:auto}.chat-lot-filter-grid{display:grid;grid-template-columns:1fr 1fr 1.35fr;gap:11px;margin-bottom:13px}.chat-lot-list{min-height:170px;max-height:310px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:8px;padding:4px;overflow-y:auto}.chat-lot-placeholder{grid-column:1/-1;min-height:160px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:25px;color:var(--muted-2);text-align:center}.chat-lot-placeholder>span{width:48px;height:48px;display:grid;place-items:center;margin-bottom:12px;border:1px solid #303953;border-radius:15px;background:#171d2b;color:var(--purple-2);font-size:20px}.chat-lot-placeholder strong{color:#b8c1d5;font-size:11px}.chat-lot-placeholder small{max-width:360px;margin-top:7px;font-size:9px;line-height:1.5}.chat-lot-card{min-width:0;min-height:82px;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;gap:8px 10px;padding:12px 13px;border:1px solid #293248;border-radius:12px;background:#141a27;color:inherit;text-align:left;cursor:pointer;transition:.15s}.chat-lot-card:hover{transform:translateY(-1px);border-color:#485571;background:#181f2f}.chat-lot-card.selected{border-color:#6b5edf;background:linear-gradient(110deg,rgba(117,101,244,.18),rgba(54,202,239,.055));box-shadow:0 0 0 1px rgba(117,101,244,.12)}.chat-lot-card>strong{min-width:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;white-space:normal;word-break:break-word;line-height:1.35;font-size:11px}.chat-lot-card>em{align-self:start;color:var(--amber);font-size:12px;font-style:normal;font-weight:800;white-space:nowrap}.chat-lot-card>span{grid-column:1/-1;display:flex;align-items:center;gap:6px;min-width:0}.chat-lot-card>span small{max-width:150px;padding:3px 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:6px;color:#a9e6f5;background:rgba(54,202,239,.07);font-size:8px}.chat-lot-card>span small+small{color:#c4bcff;background:rgba(117,101,244,.09)}.chat-lot-card>span b{margin-left:auto;color:#66718b;font-size:8px;font-weight:600}.chat-lot-selection{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.65fr);align-items:end;gap:18px;margin-top:14px;padding:15px;border:1px solid rgba(117,101,244,.28);border-radius:14px;background:linear-gradient(120deg,rgba(117,101,244,.085),rgba(54,202,239,.035))}.chat-lot-selected-copy{min-width:0}.chat-lot-selected-copy small,.chat-lot-selected-copy strong,.chat-lot-selected-copy span{display:block}.chat-lot-selected-copy small{color:var(--purple-2);font-size:8px;font-weight:800;letter-spacing:.65px;text-transform:uppercase}.chat-lot-selected-copy strong{margin-top:7px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;white-space:normal;word-break:break-word;line-height:1.35;font-size:12px}.chat-lot-selected-copy span{margin-top:6px;color:var(--muted-2);font-size:9px}.chat-lot-price-field{margin:0}.chat-lot-price-field small{line-height:1.4}.chat-lot-modal .modal-actions{align-items:center}.chat-lot-send-hint{margin-right:auto;color:var(--muted-2);font-size:9px}.chat-lot-send-hint.price-change{color:var(--amber)}
@media(max-width:820px){.chat-lots-button{padding:0 9px}.chat-lot-filter-grid{grid-template-columns:1fr 1fr}.chat-lot-filter-grid .field:last-child{grid-column:1/-1}.chat-lot-list{grid-template-columns:1fr}.chat-lot-selection{grid-template-columns:1fr}.chat-lot-modal .modal-actions{position:sticky;bottom:-20px;margin:18px -20px -20px;padding:13px 20px calc(13px + env(safe-area-inset-bottom));background:#111622;border-top:1px solid var(--border-soft)}.chat-lot-send-hint{display:none}}
@media(max-width:560px){.chat-lots-button{width:35px;min-width:35px;padding:0;justify-content:center}.chat-lots-button>span:last-child{display:none}.chat-lot-modal{width:calc(100% - 14px)}.chat-lot-modal>form{padding:18px}.chat-lot-filter-grid{grid-template-columns:1fr}.chat-lot-filter-grid .field:last-child{grid-column:auto}.chat-lot-list{min-height:210px;max-height:300px}.chat-lot-placeholder{min-height:200px}.chat-lot-card{min-height:78px}.chat-lot-modal .modal-actions{bottom:-18px;margin-left:-18px;margin-right:-18px;margin-bottom:-18px;padding-left:18px;padding-right:18px}.chat-lot-modal .modal-actions .button{flex:1}}

/* Direct chat navigation from orders */
.order-card{grid-template-columns:minmax(135px,.75fr) minmax(240px,1.55fr) minmax(125px,.7fr) minmax(105px,.55fr) 98px}.order-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px}.order-chat-button{height:32px;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:0 9px;border:1px solid rgba(54,202,239,.28);border-radius:9px;background:rgba(54,202,239,.07);color:#8ce4f7;font-size:9px;cursor:pointer;transition:.15s}.order-chat-button span{font-size:13px}.order-chat-button b{font-size:9px}.order-chat-button:hover{border-color:rgba(54,202,239,.55);background:rgba(54,202,239,.13);color:#fff}.order-chat-button:disabled{opacity:.45;cursor:wait}
@media(max-width:1100px){.order-card{grid-template-columns:minmax(125px,.7fr) minmax(220px,1.4fr) minmax(105px,.55fr) 98px}}
@media(max-width:820px){.order-card{grid-template-columns:minmax(0,1fr) auto 58px;grid-template-areas:"owner summary actions" "description description actions"}.order-actions{grid-area:actions;align-self:center;flex-direction:column}.order-chat-button{width:54px;padding:0 5px}.order-open-link{grid-area:auto}}

/* Active and inactive lot catalogue */
.lot-filter-group{grid-template-columns:repeat(4,minmax(125px,1fr));flex-basis:650px}.lot-row.inactive{background:linear-gradient(90deg,rgba(255,100,127,.035),#131824);color:#c8cfdf}.lot-row.inactive:hover{background:linear-gradient(90deg,rgba(255,100,127,.065),#171d2b)}.lot-row.inactive .lot-price{color:#9aa5bd}.lot-status-badge{gap:5px!important;max-width:none!important;font-weight:750}.lot-status-badge i{width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px currentColor;opacity:.9}.lot-status-badge.active{color:var(--teal)!important;border-color:rgba(43,212,184,.24)!important;background:rgba(43,212,184,.075)!important}.lot-status-badge.inactive{color:#ff8498!important;border-color:rgba(255,100,127,.25)!important;background:rgba(255,100,127,.07)!important}.lot-status-badge.gone{color:#f4b942!important;border-color:rgba(244,185,66,.32)!important;background:rgba(244,185,66,.1)!important}.chat-lot-card.inactive{border-color:rgba(255,100,127,.22);background:linear-gradient(115deg,rgba(255,100,127,.055),#141a27)}.chat-lot-card.inactive:hover{border-color:rgba(255,100,127,.42)}.chat-lot-state{padding:3px 6px;border-radius:6px;font-size:8px;font-style:normal;font-weight:750;white-space:nowrap}.chat-lot-state.active{color:var(--teal);background:rgba(43,212,184,.08)}.chat-lot-state.inactive{color:#ff8498;background:rgba(255,100,127,.09)}
@media(max-width:820px){.lot-filter-group{grid-template-columns:1fr 1fr}.lot-filter-group .select:first-child{grid-column:auto}}

/* Temporary chat price rollback */
.chat-lot-rollback{min-height:27px;line-height:1.45!important;color:var(--muted-2)}.chat-lot-rollback.scheduled{color:#ffcc69}

/* Smart lot raising */
.lot-raise-panel{position:relative;overflow:hidden;margin:-5px 0 18px;padding:18px;background:radial-gradient(circle at 92% 0,rgba(54,202,239,.09),transparent 31%),linear-gradient(135deg,rgba(117,101,244,.095),rgba(20,25,39,.96) 42%,#121722);border-color:#303956}.lot-raise-panel:before{content:"";position:absolute;left:0;top:24px;bottom:24px;width:3px;border-radius:0 4px 4px 0;background:linear-gradient(var(--purple-2),var(--cyan))}.lot-raise-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:15px}.lot-raise-title{display:flex;align-items:center;gap:13px;min-width:0}.lot-raise-icon{width:42px;height:42px;display:grid;place-items:center;flex:0 0 auto;border:1px solid rgba(147,135,255,.36);border-radius:13px;background:linear-gradient(145deg,rgba(117,101,244,.2),rgba(54,202,239,.08));color:#c2baff;font-size:24px;font-weight:800}.lot-raise-title>span:last-child{display:flex;flex-direction:column;min-width:0}.lot-raise-title small{color:#8e82ff;font-size:8px;font-weight:850;letter-spacing:1.25px}.lot-raise-title strong{margin-top:3px;font-size:16px}.lot-raise-title em{margin-top:4px;color:var(--muted-2);font-size:9px;font-style:normal}.lot-raise-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}.lot-raise-actions .button.primary span{font-size:17px}.lot-raise-accounts{display:grid;grid-template-columns:repeat(auto-fit,minmax(275px,1fr));gap:9px}.lot-raise-account{position:relative;min-width:0;padding:13px 14px 11px;border:1px solid #29324a;border-radius:13px;background:rgba(15,20,32,.76);transition:border-color .15s,background .15s}.lot-raise-account:hover{border-color:#3b4664;background:#151b2a}.lot-raise-account.ready{border-color:rgba(43,212,184,.27);background:linear-gradient(135deg,rgba(43,212,184,.045),rgba(15,20,32,.8))}.lot-raise-account.waiting{border-color:rgba(255,189,69,.2)}.lot-raise-account.error{border-color:rgba(255,100,127,.3)}.lot-raise-account-top{display:flex;align-items:center;gap:9px;min-width:0}.lot-raise-avatar{position:relative;width:38px;height:38px;display:grid;place-items:center;flex:0 0 auto;overflow:hidden;border:1px solid #35405b;border-radius:var(--avatar-radius);background:linear-gradient(145deg,#6c5ce2,#3187af);color:#fff;font-size:13px;font-weight:850}.lot-raise-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#171d2b}.lot-raise-owner{min-width:0;flex:1}.lot-raise-owner strong,.lot-raise-owner small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lot-raise-owner strong{font-size:11px}.lot-raise-owner small{margin-top:3px;color:var(--muted-2);font-size:8px}.lot-raise-status{display:inline-flex;align-items:center;gap:5px;max-width:122px;padding:4px 7px;border-radius:999px;color:#9aa5bd;background:rgba(143,155,184,.08);font-size:7.5px;font-weight:800;white-space:nowrap}.lot-raise-status i{width:5px;height:5px;flex:0 0 auto;border-radius:50%;background:currentColor}.lot-raise-status.ready{color:var(--teal);background:rgba(43,212,184,.09)}.lot-raise-status.waiting{color:var(--amber);background:rgba(255,189,69,.08)}.lot-raise-status.error{color:var(--rose);background:rgba(255,100,127,.09)}.lot-raise-status.unknown{color:#aaa0ff;background:rgba(117,101,244,.1)}.lot-raise-status.queued{color:#aaa0ff;background:rgba(117,101,244,.1)}.lot-raise-account.queued{border-color:rgba(117,101,244,.28)}.lot-raise-account.queued .lot-raise-timer{color:#c2baff}.lot-raise-timer{min-height:25px;margin-top:12px;color:#f2f4ff;font-size:17px;font-weight:760;letter-spacing:-.25px;font-variant-numeric:tabular-nums}.lot-raise-account.waiting .lot-raise-timer{color:#ffd06f}.lot-raise-account.ready .lot-raise-timer{color:#64e2cd}.lot-raise-account.disabled .lot-raise-timer,.lot-raise-account.empty .lot-raise-timer{color:#7b86a2}.lot-raise-stats{display:flex;align-items:center;gap:11px;margin-top:4px;color:#6f7b98;font-size:8px}.lot-raise-stats b{color:#aab5cf;font-weight:750}.lot-raise-last{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;padding-top:9px;border-top:1px solid #222a3d;font-size:8px}.lot-raise-last span{color:#697591}.lot-raise-last strong{color:#aeb8ce;font-weight:650;white-space:nowrap}.lot-raise-error{margin:8px -3px -2px;padding:6px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:7px;color:#ff8fa1;background:rgba(255,100,127,.07);font-size:8px}.lot-raise-note{display:flex;align-items:flex-start;gap:7px;margin-top:11px;color:#66728e;font-size:8px;line-height:1.45}.lot-raise-note>span:first-child{color:var(--teal);font-size:7px}.lot-raise-placeholder{grid-column:1/-1;min-height:96px;display:grid;place-items:center;color:var(--muted-2);font-size:10px}.lot-raise-placeholder.error{color:var(--rose)}
@media(max-width:820px){.lot-raise-panel{margin-top:0;padding:16px 13px 12px}.lot-raise-heading{align-items:flex-start;flex-direction:column}.lot-raise-actions{width:100%}.lot-raise-actions .button{flex:1}.lot-raise-title em{max-width:270px;line-height:1.4}.lot-raise-accounts{grid-template-columns:1fr}.lot-raise-account{padding:13px}.lot-raise-timer{font-size:16px}}

/* Lot raise account selection and server-side automation */
.lot-raise-actions{flex-wrap:wrap;justify-content:flex-end}.lot-auto-action{color:#bfb7ff;border-color:rgba(147,135,255,.28);background:rgba(117,101,244,.075)}.lot-raise-selection{min-height:34px;display:flex;align-items:center;gap:12px;margin:-3px 0 12px;padding:7px 10px;border:1px solid #252e43;border-radius:10px;background:rgba(12,16,27,.42);color:#7f8aa5;font-size:8px}.lot-raise-selection>label{display:flex;align-items:center;gap:7px;color:#b4bdd1;cursor:pointer}.lot-raise-selection input,.lot-raise-select{accent-color:var(--purple)}#lotRaiseSelectionText{padding-left:11px;border-left:1px solid #2b3347;color:#8f9ab5}.lot-raise-auto-caption{display:flex;align-items:center;gap:6px;margin-left:auto;color:#6f7c99}.lot-raise-auto-caption i{width:6px;height:6px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 3px rgba(43,212,184,.08)}.lot-raise-account.selected{border-color:rgba(147,135,255,.58);box-shadow:inset 0 0 0 1px rgba(117,101,244,.13)}.lot-raise-account.auto-enabled{background:linear-gradient(135deg,rgba(43,212,184,.035),rgba(15,20,32,.82))}.lot-raise-select{width:15px;height:15px;flex:0 0 auto;margin:0 1px 0 0;cursor:pointer}.lot-raise-bottom{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px;margin-top:10px;padding-top:9px;border-top:1px solid #222a3d}.lot-raise-bottom .lot-raise-last{display:block;min-width:0;margin:0;padding:0;border:0}.lot-raise-bottom .lot-raise-last span,.lot-raise-bottom .lot-raise-last strong{display:block}.lot-raise-bottom .lot-raise-last strong{margin-top:4px;overflow:hidden;text-overflow:ellipsis}.lot-auto-switch{display:flex;align-items:center;gap:6px;position:relative;z-index:1;color:#77839f;font-size:8px;font-weight:750;cursor:pointer}.lot-auto-switch input{position:absolute;opacity:0;pointer-events:none}.lot-auto-switch i{position:relative;width:30px;height:17px;flex:0 0 auto;border:1px solid #39425a;border-radius:999px;background:#1a2030;transition:.18s}.lot-auto-switch i:after{content:"";position:absolute;width:11px;height:11px;left:2px;top:2px;border-radius:50%;background:#71809f;transition:.18s}.lot-auto-switch input:checked+i{border-color:rgba(43,212,184,.48);background:rgba(43,212,184,.13)}.lot-auto-switch input:checked+i:after{left:15px;background:var(--teal);box-shadow:0 0 8px rgba(43,212,184,.45)}.lot-auto-switch input:checked~span{color:#57dcc5}.lot-auto-switch input:disabled+i{opacity:.45}.lot-raise-error{position:relative;z-index:2}
@media(max-width:820px){.lot-raise-actions{display:grid;grid-template-columns:1fr 1fr}.lot-raise-actions #refreshLotRaiseButton{grid-column:1/-1}.lot-raise-selection{align-items:flex-start;flex-wrap:wrap}.lot-raise-auto-caption{width:100%;margin-left:0;padding-top:6px;border-top:1px solid #242c3f;line-height:1.4}.lot-raise-account-top{gap:8px}.lot-raise-status{max-width:105px}.lot-raise-bottom{gap:8px}}

/* Notification center */
.settings-heading{align-items:center}.notification-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.notification-card{min-height:285px;padding:24px;position:relative;overflow:hidden}.notification-card:after{content:"";position:absolute;width:170px;height:170px;right:-95px;top:-105px;border-radius:50%;background:var(--purple);filter:blur(45px);opacity:.08;pointer-events:none}.notification-card-head{display:flex;align-items:center;gap:13px;margin-bottom:18px}.notification-card-head>div{min-width:0;flex:1}.notification-card-head h2{margin:4px 0 0;font-size:18px;letter-spacing:-.25px}.notification-card>p{max-width:680px;margin:0 0 20px;color:var(--muted);font-size:12px;line-height:1.65}.notification-channel-icon{width:46px;height:46px;display:grid;place-items:center;flex:0 0 auto;border:1px solid rgba(117,101,244,.22);border-radius:14px;background:rgba(117,101,244,.1);color:#a99fff;font-weight:800;font-size:18px}.notification-channel-icon.push{color:var(--cyan);background:rgba(54,202,239,.09);border-color:rgba(54,202,239,.2)}.notification-channel-icon.telegram{color:#70d9ff;background:rgba(54,202,239,.09);border-color:rgba(54,202,239,.2)}.notification-channel-icon.rules{color:var(--teal);background:rgba(43,212,184,.08);border-color:rgba(43,212,184,.18)}.notification-channel-icon.secure{color:var(--amber);background:rgba(255,189,69,.08);border-color:rgba(255,189,69,.18)}.channel-state{padding:6px 9px;border:1px solid var(--border-soft);border-radius:99px;background:#111622;color:var(--muted-2);font-size:9px;white-space:nowrap}.channel-state.active{color:var(--teal);border-color:rgba(43,212,184,.23);background:rgba(43,212,184,.07)}.notification-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.notification-hint{display:block;margin-top:13px;color:var(--muted-2);font-size:9px}.telegram-connect{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px}.telegram-connect .field input{min-width:0}.telegram-connected{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px;border:1px solid var(--border-soft);border-radius:13px;background:#111622}.telegram-connected strong,.telegram-connected small{display:block}.telegram-connected strong{font-size:14px;color:#c7c1ff}.telegram-connected small{margin-top:5px;color:var(--muted-2);font-size:9px}.notification-switch{margin-top:10px}.notification-switch:first-of-type{margin-top:0}/* Отступ списан у соседнего переключателя, а не выдуман: поле стоит в том же ряду и должно попадать в его ритм. Подсказке возвращаем её собственный отступ — .notification-hint рассчитан на низ карточки, а тут он идёт сразу за чипами. */.notify-games-field{margin-top:10px}.notify-games-field .notification-hint{margin-top:8px}/* В карточке настроек список игр стоит В ПОТОКЕ, а не поверх. Всплывающий он работает в модальном окне выдачи, где карточка ничего не режет, — а у .notification-card стоит overflow:hidden ради размытого круга в углу, и список обрезался по нижней границе: видно две игры, пролистать нечего. Здесь карточка просто становится выше. */.notify-games-field .game-picker{position:static}.notify-games-field .game-picker-drop{position:static;margin-top:6px;box-shadow:none}.notification-security-list{display:grid;gap:14px;margin:5px 0 0;padding:0;list-style:none;color:#aeb8cd;font-size:12px}.notification-security-list li{display:flex;align-items:center;gap:10px;padding-bottom:12px;border-bottom:1px solid var(--border-soft)}.notification-security-list li:last-child{border:0}.notification-security-list span{width:22px;height:22px;display:grid;place-items:center;border-radius:8px;background:rgba(43,212,184,.08);color:var(--teal);font-size:10px}.push-card{background:linear-gradient(145deg,rgba(54,202,239,.035),#121722 55%)}
/* Справочник игр. Карточка на всю ширину сетки — как карточка приёма в команду; отступы и
   радиус те же, что у соседних .notification-card, метрики списаны с них, а не выдуманы. */
.games-card{grid-column:1/-1;min-height:0}
.notification-channel-icon.games{color:#ffd27d;background:rgba(255,189,69,.1);border-color:rgba(255,189,69,.2)}
.games-list{display:grid;gap:8px}
.game-entry{display:grid;grid-template-columns:minmax(120px,auto) minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;padding:9px 12px;border:1px solid var(--border-soft);border-radius:12px;background:#111622}
.game-entry-tag{max-width:none;font-size:10px!important;padding:5px 10px}
.game-entry-aliases{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.game-entry-aliases em{padding:3px 8px;border-radius:999px;background:rgba(255,255,255,.05);color:var(--muted);font-size:9px;font-style:normal}
.game-entry-aliases em.muted{background:transparent;color:var(--muted-2)}
/* Площадки идут первыми: главный вопрос к строке справочника — где эта игра вообще есть.
   Дальше — другие написания, если площадки зовут её по-разному. */
/* Написание и площадка — одной парой: слева площадка, справа то, как она эту игру зовёт. */
.game-entry-alias{display:inline-flex;align-items:center;gap:7px;padding:3px 9px 3px 3px}
/* Отступ списан у соседней карточки: там ряд кнопок отделён от текста двадцатью пикселями
   (абзац несёт margin-bottom:20px). Без него кнопка выхода прилипала к списку вплотную. */
.settings-logout-row{margin-top:20px}
/* Доля сотрудника стоит РЯДОМ с ценой, а не вместо неё: покупатель в переписке называет
   настоящую сумму, и подменённая цена разошлась бы с его словами. */
.order-share{display:block;margin-top:3px;color:var(--teal);font-size:9px;font-weight:750}
.order-detail-share{display:block;margin-top:8px;color:var(--teal);font-size:12px;font-weight:800}
/* Подпись псевдонима — служебная строка для владельца, поэтому мельче и тише имени. */
/* Роли человека в шапке карточки. Чип-кнопка: видно и что роль есть, и чем она доказана. */
.customer-dialog-roles{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 0}
.customer-dialog-roles.hidden{display:none}
.customer-role-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--border);
  border-radius:999px;background:transparent;color:var(--muted-2);font-size:11px;cursor:pointer;
  transition:border-color .16s ease,color .16s ease,background .16s ease}
.customer-role-chip:hover{border-color:#44506f;color:var(--text)}
.customer-role-chip b{font-size:11px;line-height:1}
.customer-role-chip small{color:var(--muted-2);font-size:10px}
.customer-role-chip.on{border-color:rgba(117,101,244,.45);background:rgba(117,101,244,.12);color:var(--text)}
.customer-role-chip.on small{color:var(--purple-2)}

.customer-dialog-alias{margin:4px 0 0;color:var(--muted-2);font-size:10px}
.game-entry-alias b{padding:2px 7px;border-radius:999px;background:rgba(117,101,244,.16);color:#b9adff;font-size:9px;font-weight:750}
.game-entry-split{min-height:28px;padding:0 11px;border:1px solid var(--border);border-radius:9px;background:transparent;color:var(--muted);font-size:9px;font-weight:750;cursor:pointer}
.game-entry-split:hover{border-color:#7565f4;color:#fff}
/* Подсказка стоит НАД списком: это вопрос, на который ждут ответа, а не строка справочника. */
.game-suggestions{display:grid;gap:8px;margin-bottom:12px}
.game-suggestion{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:11px 12px;border:1px solid rgba(255,189,69,.3);border-radius:12px;background:rgba(255,189,69,.045)}
.game-suggestion strong{display:block;font-size:11px}
.game-suggestion small{display:block;margin-top:4px;color:var(--muted-2);font-size:9px}
.chat-filter-switch{display:flex;gap:6px;flex-wrap:wrap}
.chat-filter-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.chat-filter-mode{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--line);border-radius:8px}
.chat-filter-mode button{min-height:20px;padding:0 8px;border:0;border-radius:6px;background:transparent;color:var(--muted-2);font-size:9px;cursor:pointer}
.chat-filter-mode button.on{color:var(--text);background:rgba(255,189,69,.12)}
.chat-filter-picker.hide-mode .game-pick b{text-decoration:line-through;text-decoration-color:rgba(255,107,107,.8)}
.chat-filter-picker.hide-mode .game-pick{border-color:rgba(255,107,107,.35)}
.chat-filter-switch button{min-height:28px;padding:0 10px;border:1px solid var(--line);border-radius:9px;background:transparent;color:var(--muted-2);font-size:9px;cursor:pointer}
.chat-filter-switch button.on{border-color:var(--accent);color:var(--text);background:rgba(255,189,69,.08)}
.chat-flag.chat-supplier{border-color:rgba(120,170,255,.35);background:rgba(120,170,255,.08)}
/* Направление — часть игры, и цвет у него свой: рядом с игровыми метками оно обязано читаться
   как другая мысль, а не как ещё одна игра. */
.chat-flag.chat-direction{border-color:rgba(117,101,244,.4);background:rgba(117,101,244,.09)}
/* ОТСТУП У ПАНЕЛИ, А НЕ У ЕЁ ДЕТЕЙ.
   `.panel` своего padding НЕ имеет — его каждая панель добавляет себе сама (.activity-panel,
   .my-ledger, .notification-card: все 24px). У этих двух правила не было, и отступ брали на
   себя дети: `.staff-owe-body` и `.staff-owe-gap` — по 15px с боков. Заголовку панели при этом
   не доставалось ничего, и «Кому сколько должен» стояло вплотную к рамке: замер показал 1px
   от границы против 25px у всех соседей, а радиус угла 18px — то есть дуга проходила прямо
   по первой букве. Ровно это Larpbase и показал двумя скриншотами рядом.
   Отступ теперь один, панельный; из детей он убран, иначе сложился бы в 39px. */
.staff-owe{padding:24px;margin-bottom:15px}
.ledger-person{padding:24px}
.staff-owe-body{display:flex;flex-direction:column;gap:6px;padding:0}
.staff-owe-row{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--border-soft);border-radius:12px;background:#141927;color:inherit;text-align:left;cursor:pointer;transition:.15s}
.staff-owe-row:hover{border-color:#3b4561;background:#171d2c}
.staff-owe-who{min-width:0}
.staff-owe-who strong,.staff-owe-who small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.staff-owe-who strong{font-size:11px}
.staff-owe-who small{margin-top:4px;color:var(--muted-2);font-size:8px}
.staff-owe-money{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.staff-owe-money strong{color:var(--amber);font-size:13px;white-space:nowrap}
/* Переплата — не долг, и красить её тем же цветом значило бы звать платить ещё раз. */
.staff-owe-money strong.staff-owe-over{color:var(--cyan)}
.staff-owe-clean{color:var(--teal);font-size:9px}
.staff-owe-wait{padding:3px 7px;border-radius:7px;color:var(--amber);background:rgba(255,189,69,.1);font-size:8px}
.staff-owe-open{color:var(--muted-2);font-size:9px;white-space:nowrap}
/* Период и «пересчитать» стоят парой: переключатель без кнопки читается как фильтр списка,
   а кнопка без переключателя — как «других периодов нет». */
.staff-owe-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.staff-owe-tools .select{min-height:36px;font-size:10px}
/* «За период» — рядом с «заработал», тем же весом: это соседнее число, а не итог. */
.ledger-period small{color:var(--cyan)}
/* Закрыть долг — действие со СЛЕДСТВИЯМИ, поэтому отдельной строкой, а не в ряду формы. */
.ledger-settle{margin:0 0 10px;width:100%}
.staff-owe-gap{margin:14px 0 0;padding:9px 11px;border:1px solid rgba(255,189,69,.22);border-radius:10px;color:var(--muted-2);background:rgba(255,189,69,.05);font-size:9px;line-height:1.5}
/* «Ждёт ставку» — свой цвет: это не «учтён» и не «в работе», а вопрос к владельцу. */
.ledger-state.rate{color:var(--amber);background:rgba(255,189,69,.1)}
@media(max-width:820px){.staff-owe-row{grid-template-columns:minmax(0,1fr) auto}.staff-owe-open{display:none}}
.lot-image-blank{width:92px;height:92px;display:grid;place-items:center;border:1px solid var(--border);border-radius:10px;color:var(--muted-2);background:#10151f;font-size:9px;letter-spacing:.3px}
/* ПОДЧАТЫ. Полоса веток одного разговора: контейнер по образцу вкладок заказов, кружок внутри —
   готовый .chat-account-face. flex:0 0 auto обязателен: .chat-thread — колонка, где ленте отдан
   весь остаток, и без него полоса сжалась бы в ноль. */
.thread-account-tabs{flex:0 0 auto;display:flex;gap:6px;margin:9px 13px 0;padding:4px;border:1px solid var(--border-soft);border-radius:11px;background:#111622;overflow-x:auto;scrollbar-width:none}
.thread-account-tabs::-webkit-scrollbar{display:none}
.thread-account-tab{position:relative;flex:0 0 auto;min-height:38px;display:flex;align-items:center;gap:8px;padding:0 11px 0 6px;border:1px solid transparent;border-radius:9px;background:transparent;color:#8490aa;cursor:pointer;transition:.15s}
.thread-account-tab:hover{color:#fff;background:#181d2b}
.thread-account-tab.on{color:#fff;border-color:rgba(117,101,244,.3);background:linear-gradient(90deg,rgba(117,101,244,.22),rgba(117,101,244,.06))}
.thread-account-tab .chat-account-face{width:24px;height:24px}
.thread-account-tab-copy{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0}
.thread-account-tab-copy b{font-size:10px;font-weight:700;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.thread-account-tab-copy small{color:var(--muted-2);font-size:8px}
.thread-account-tab .chat-unread-dot{position:static;margin-left:2px}
.thread-account-tab.absent{align-items:center;padding:0 11px;color:var(--muted-2);font-size:9px;cursor:default}
/* «Отвечаешь от …» — подпись, а не кнопка: нажимать тут нечего, переключают вкладками выше. */
.chat-reply-as{flex:0 0 auto;margin:0 13px -2px;padding:5px 9px;border-radius:8px;background:rgba(117,101,244,.07);color:var(--muted-2);font-size:9px}
@media(max-width:820px){.thread-account-tabs{margin:7px 9px 0}.chat-reply-as{margin:0 9px -2px}}
/* Панель фильтра заказов висит от своей кнопки, как в чатах: у тулбара заказов своя раскладка,
   и без якоря панель уезжала бы к левому краю страницы. */
/* Обёртка сжимается по кнопке (38px), а панель внутри растянута left:0;right:0 — то есть
   раскрывалась бы шириной с кнопку, в один символ на строку. Якорим её правым краем и задаём
   ширину явно; на узком экране ширина уходит под экран, а не за его край. */
.order-direction{border-color:rgba(117,101,244,.4);background:rgba(117,101,244,.09);color:var(--muted)}
button.chat-flag.chat-supplier{cursor:pointer;opacity:.55}
button.chat-flag.chat-supplier.on{opacity:1}
.game-suggestion-gain{color:var(--muted-2)}
.game-suggestion-actions{display:flex;gap:7px}
.game-suggestion-actions .button{min-height:30px;padding:0 12px;font-size:9px}
@media(max-width:720px){.game-entry{grid-template-columns:1fr;gap:7px}.game-entry-split{justify-self:start}}.telegram-card{background:linear-gradient(145deg,rgba(117,101,244,.045),#121722 55%)}

/* Refund action */
.order-card{grid-template-columns:minmax(135px,.75fr) minmax(240px,1.55fr) minmax(125px,.7fr) minmax(105px,.55fr) 136px}.order-refund-button{width:32px;height:32px;display:grid;place-items:center;border:1px solid rgba(255,100,127,.28);border-radius:9px;background:rgba(255,100,127,.07);color:#ff8da0;font-size:14px;cursor:pointer}.order-refund-button:hover{border-color:rgba(255,100,127,.55);background:rgba(255,100,127,.13);color:#fff}.order-refund-button:disabled{opacity:.42;cursor:wait}
.order-review{grid-column:1/-1;margin-top:10px;padding:10px 12px;border:1px solid rgba(255,255,255,.08);border-radius:11px;background:rgba(255,255,255,.03);display:flex;flex-direction:column;gap:6px}
.order-review-head{display:flex;align-items:center;gap:8px}
.order-review-stars{color:#ffca6b;letter-spacing:2px;font-size:13px}
.order-review-head small{color:#8b93a7;font-size:11px;text-transform:uppercase;letter-spacing:.05em}
.order-review-text{margin:0;font-size:13px;line-height:1.45;color:#dfe3ee;white-space:pre-wrap;word-break:break-word}
.order-review-text.muted{color:#8b93a7;font-style:italic}
.order-review-reply{border-left:2px solid rgba(124,131,255,.5);padding-left:9px}
.order-review-reply small{color:#8b93a7;font-size:11px}
.order-review-reply p{margin:2px 0 0;font-size:12.5px;color:#c7ccdb;white-space:pre-wrap;word-break:break-word}
.order-review-button{align-self:flex-start;margin-top:2px;padding:5px 11px;border:1px solid rgba(124,131,255,.35);border-radius:8px;background:rgba(124,131,255,.1);color:#c3c8ff;font-size:12px;cursor:pointer}
/* Неотвеченный отзыв — единственная кнопка здесь, которая зовёт сделать дело: зелёная.
   «Изменить ответ» остаётся спокойной — там всё уже сделано. */
.order-review-button.answer{border-color:rgba(43,212,184,.45);background:rgba(43,212,184,.12);color:var(--teal);font-weight:650}
.order-review-button.answer:hover{background:rgba(43,212,184,.2)}
.order-review-button:hover{border-color:rgba(124,131,255,.6);background:rgba(124,131,255,.18);color:#fff}
.chat-flag.chat-cross-account{border-color:rgba(255,178,90,.34);background:rgba(255,178,90,.1);color:#ffcf94}
.chat-flag.chat-cross-account>span{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-staff-mode{display:flex;gap:6px;margin:2px 0 14px;padding:4px;border:1px solid rgba(255,255,255,.08);border-radius:12px;background:rgba(255,255,255,.03)}
.chat-staff-mode button{flex:1;padding:8px 10px;border:0;border-radius:9px;background:transparent;color:#9aa3b8;font-size:12px;font-weight:700;cursor:pointer;transition:.15s}
.chat-staff-mode button.active{background:rgba(124,131,255,.16);color:#dfe3ff;box-shadow:inset 0 0 0 1px rgba(124,131,255,.3)}
.account-currency{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(255,255,255,.06)}
.account-currency>span{color:#8b93a7;font-size:10px;text-transform:uppercase;letter-spacing:.04em}
.account-cy-group{display:flex;gap:4px}
.account-cy-btn{width:30px;height:26px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:rgba(255,255,255,.03);color:#9aa3b8;font-size:13px;font-weight:700;cursor:pointer;transition:.15s}
.account-cy-btn:hover{border-color:rgba(124,131,255,.45);color:#dfe3ff}
.account-cy-btn.active{border-color:rgba(124,131,255,.55);background:rgba(124,131,255,.16);color:#fff}
.account-cy-btn:disabled{opacity:.5;cursor:wait}
.reviews-distribution{display:flex;flex-direction:column;gap:4px;padding:12px 16px;border-bottom:1px solid var(--border-soft)}
.reviews-distribution.hidden{display:none}
.reviews-bar{display:grid;grid-template-columns:32px 1fr 44px;align-items:center;gap:10px}
.reviews-bar-label{color:#8b93a7;font-size:11px;font-variant-numeric:tabular-nums}
.reviews-bar-track{height:6px;border-radius:999px;background:rgba(255,255,255,.06);overflow:hidden}
.reviews-bar-track i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#7c6cff,#4bc0ff)}
.reviews-bar-count{color:#dfe3ee;font-size:11px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums}
.reviews-bar.empty .reviews-bar-count{color:#5c6479}
.reviews-filter-name{display:flex;align-items:baseline;gap:6px;min-width:0}
.reviews-filter-name strong{min-width:0;flex:0 1 auto;transition:color .16s}
.reviews-filter-name strong.faded{text-overflow:clip;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 22px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 22px),transparent)}
.reviews-filter-rating{flex:0 0 auto;color:#ffc75f;font-size:10px;font-style:normal;font-weight:800;white-space:nowrap}
.review-customer-link{display:block;max-width:100%;padding:0;border:0;background:transparent;color:var(--text);font:inherit;font-size:11px;font-weight:700;text-align:left;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .16s}
.review-customer-link:hover{color:var(--cyan);text-decoration:underline}
.review-card{transition:border-color .16s,background .16s,transform .16s}
.review-card:hover{transform:translateY(-1px)}
@media(prefers-reduced-motion:reduce){.review-card,.reviews-filter-name strong,.review-customer-link{transition:none}.review-card:hover{transform:none}}
.reviews-account-filter>.avatar-pair{flex:0 0 auto}
.reviews-account-filter .orders-filter-avatar{width:36px;height:36px;border-radius:var(--avatar-radius);object-fit:cover}
.review-owner{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;margin-left:auto;padding:3px 10px 3px 3px;border-radius:999px;background:rgba(255,255,255,.04);color:#8b93a7;font-size:11px;font-weight:700;line-height:1}
.review-owner .avatar-pair{flex:0 0 auto;width:22px;height:22px;display:block;position:relative}
.review-account-avatar{width:22px;height:22px;min-width:22px;border-radius:var(--avatar-radius);object-fit:cover;display:block}
.review-owner .chat-avatar-fallback{width:22px;height:22px;display:grid;place-items:center;border-radius:var(--avatar-radius);font-size:10px}
.review-order{width:100%;display:flex;align-items:baseline;gap:10px;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:color .16s}
.review-order:hover strong{color:var(--cyan);text-decoration:underline}
.order-title-button{display:block;width:100%;padding:0;border:0;background:transparent;color:var(--text);font:inherit;font-size:11px;font-weight:700;text-align:left;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .16s}
.order-title-button:hover{color:var(--cyan);text-decoration:underline}
/* Modal padding lives on `.modal>form`, and this dialog has no form — without its own padding the
   content sat flush against the rounded edge. The heading's text column also needs min-width:0,
   or a long unbreakable title stretches the flex row and spills outside the card. */
.order-detail-modal{width:min(560px,calc(100% - 28px));padding:26px;overflow-x:hidden}
.modal-heading>div{min-width:0}
.order-detail-modal .modal-heading{gap:14px;margin-bottom:18px}
.order-detail-modal .modal-heading h2{overflow-wrap:anywhere}
.order-detail-modal .modal-heading h2{font-size:15px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.order-detail-modal .modal-heading p{margin-top:6px;color:#8077cb;font-size:10px;font-weight:800;letter-spacing:.4px}
.order-detail-top{display:grid;grid-template-columns:1.15fr 1fr;gap:10px;margin-bottom:10px}
.order-detail-payout,.order-detail-buyer{min-width:0;padding:14px 15px;border:1px solid var(--border-soft);border-radius:14px;background:linear-gradient(150deg,#171d2c,#141927)}
.order-detail-payout{position:relative;overflow:hidden;border-color:rgba(255,178,90,.22)}
.order-detail-payout:after{content:"";position:absolute;width:96px;height:96px;right:-38px;bottom:-54px;border-radius:50%;background:var(--amber);filter:blur(26px);opacity:.12}
.order-detail-payout>span,.order-detail-buyer>span{display:block;color:var(--muted-2);font-size:9px;text-transform:uppercase;letter-spacing:.05em}
.order-detail-payout>strong{display:block;margin:9px 0 6px;color:var(--amber);font-size:24px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.order-detail-payout.refunded>strong{color:var(--rose)}
.order-detail-payout>small,.order-detail-buyer>small{display:block;color:var(--muted-2);font-size:9px}
.order-detail-buyer>small{margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.order-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0}
.order-detail-grid>div{min-width:0;padding:11px 13px;border:1px solid var(--border-soft);border-radius:12px;background:#141927}
.order-detail-grid dt{margin:0 0 6px;color:var(--muted-2);font-size:9px;text-transform:uppercase;letter-spacing:.05em}
.order-detail-grid dd{margin:0;color:var(--text);font-size:12px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.order-detail-amount{color:var(--amber);font-size:15px}
.order-detail-customer{display:block;max-width:100%;margin-top:9px;padding:0;border:0;background:transparent;color:var(--cyan);font:inherit;font-size:16px;font-weight:800;text-align:left;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .16s}
.order-detail-customer:hover{color:#8fe3ff;text-decoration:underline}
.order-detail-staff{margin-top:10px;padding:12px 13px;border:1px solid var(--border-soft);border-radius:12px;background:#141927}
.order-detail-staff small{color:var(--muted-2);font-size:10px}
.order-detail-staff-title{display:block;margin-bottom:9px;font-size:11px}
.order-detail-staff-row{display:grid;grid-template-columns:1fr auto;gap:6px 12px;align-items:center;padding:9px 0;border-top:1px solid var(--border-soft)}
.order-detail-staff-row span{grid-column:1;display:flex;align-items:baseline;gap:7px}
.order-detail-staff-row small{grid-column:1}
.order-detail-staff-row em{color:#8fe3b0;font-style:normal;font-size:10px}
.order-detail-staff-row .button{grid-column:2;grid-row:1/3;min-height:32px;padding:0 12px;font-size:10px}
@media(max-width:560px){.order-detail-grid{grid-template-columns:1fr}}
/* Стена кнопок уехала: здесь тот же список с поиском, что в выдаче и в уведомлениях. */
.customer-game-choices{margin-top:6px}
.chat-lot-currency{margin:0 0 12px}
.chat-lot-currency>span{display:block;color:#8b93a7;font-size:9px;text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px}
.chat-lot-currency-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.chat-lot-currency-options{display:inline-flex;gap:4px;padding:3px;border:1px solid rgba(255,255,255,.1);border-radius:11px;background:rgba(255,255,255,.03)}
.chat-lot-currency-options button{min-width:52px;min-height:30px;padding:0 12px;border:0;border-radius:8px;background:transparent;color:#8b93a7;font-size:12px;font-weight:700;cursor:pointer}
.chat-lot-currency-options button:hover{color:#dfe3ee}
.chat-lot-currency-options button.active{background:rgba(124,108,255,.22);color:#dfe3ee;box-shadow:inset 0 0 0 1px rgba(124,108,255,.45)}
.chat-lot-currency-rate{color:#8b93a7;font-size:11px;white-space:nowrap}
.chat-lot-equivalent{display:block;margin-top:6px;color:#8fe3b0;font-size:11px;font-weight:600}
.customer-card-badges{display:flex;align-items:center;gap:6px}
.customer-flag{padding:3px 7px;border-radius:7px;font-size:9px;font-weight:800;white-space:nowrap}
.customer-flag.vip{color:#ffdf9b;background:rgba(255,202,107,.14);border:1px solid rgba(255,202,107,.35)}
.customer-flag.problem{color:#ff9aa8;background:rgba(255,100,127,.12);border:1px solid rgba(255,100,127,.35)}
.chat-flag.chat-vip{border-color:rgba(255,202,107,.4);background:rgba(255,202,107,.12);color:#ffdf9b}
.chat-flag.chat-problem{border-color:rgba(255,100,127,.4);background:rgba(255,100,127,.12);color:#ff9aa8}
.push-devices-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.push-device{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border:1px solid rgba(255,255,255,.08);border-radius:10px;background:rgba(255,255,255,.03)}
.push-device.current{border-color:rgba(124,131,255,.4);background:rgba(124,131,255,.08)}
.push-device-info{display:flex;flex-direction:column;min-width:0}
/* Чьё устройство. Своё — спокойным цветом, чужое — цветом чужого: в списке владельца лежат и
   телефоны сотрудников, и путать их нельзя. */
.push-device-owner{margin-top:1px;color:var(--muted-2);font-size:9px;font-style:normal;font-weight:700}
.push-device-owner.staff{color:#c4bcff}
.push-device.foreign{border-color:rgba(117,101,244,.28);background:rgba(117,101,244,.05)}
.push-device-info strong{font-size:12px;color:#dfe3ee}
.push-device-info small{font-size:10px;color:#8b93a7}
.push-device-remove{flex:0 0 auto;width:26px;height:26px;border:1px solid rgba(255,100,127,.28);border-radius:8px;background:rgba(255,100,127,.07);color:#ff8da0;font-size:14px;cursor:pointer}
.push-device-remove:hover{border-color:rgba(255,100,127,.55);background:rgba(255,100,127,.13);color:#fff}
.push-device-remove:disabled{opacity:.5;cursor:wait}
.member-notify-prefs{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.member-notify-prefs>small{color:#8b93a7;font-size:10px}
.member-notify-toggle{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:#c7ccdb;cursor:pointer}
.member-notify-toggle input{accent-color:#7c83ff}
.staff-profile-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0}
.staff-profile-metric{padding:10px;border:1px solid rgba(255,255,255,.08);border-radius:10px;background:rgba(255,255,255,.03);text-align:center}
.staff-profile-metric span{display:block;color:#8b93a7;font-size:9px;text-transform:uppercase;letter-spacing:.04em}
.staff-profile-metric strong{display:block;margin-top:4px;font-size:15px;color:#dfe3ee}
.staff-profile-timeline{max-height:min(60vh,560px);overflow-y:auto;display:flex;flex-direction:column;gap:14px}
.staff-profile-section>h3{margin:0 0 8px;font-size:12px;color:#c7ccdb}
.staff-direct-list{display:flex;flex-direction:column;gap:6px}
.staff-direct{padding:8px 10px;border-radius:10px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06)}
.staff-direct.out{border-color:rgba(124,131,255,.25)}
.staff-direct span{color:#8b93a7;font-size:9px}
.staff-direct p{margin:2px 0 0;font-size:12.5px;color:#dfe3ee;white-space:pre-wrap;word-break:break-word}
.staff-direct time{color:#66718b;font-size:9px}
.staff-assignment{margin-bottom:10px;padding:11px 12px;border:1px solid rgba(255,255,255,.08);border-radius:12px;background:rgba(255,255,255,.03)}
.staff-assignment>header{display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer}
.staff-assignment>header strong{font-size:13px;color:#e7eaf3}
.staff-assignment>header small{display:block;color:#8b93a7;font-size:10px}
.staff-assignment-when{color:#8b93a7;font-size:10px;white-space:nowrap}
.staff-assignment-order{margin-top:8px;padding:8px 10px;border-radius:9px;background:rgba(255,202,107,.08);border:1px solid rgba(255,202,107,.22)}
.staff-assignment-order small{color:#ffca6b;font-size:8px;letter-spacing:.05em}
.staff-assignment-order strong{display:block;margin-top:2px;font-size:12px;color:#ffe3ad}
.staff-assignment-order span{color:#ffca6b;font-size:12px;font-weight:700}
.staff-assignment-order.none{color:#8b93a7;font-size:11px;background:rgba(255,255,255,.03);border-color:rgba(255,255,255,.06)}
.staff-assignment-comment{margin-top:6px;font-size:11.5px;color:#c7ccdb}
.staff-assignment-status{margin-top:6px;font-size:10px;color:#8b93a7}
.staff-transcript{display:none;margin-top:8px;padding-top:8px;border-top:1px solid rgba(255,255,255,.06);flex-direction:column;gap:5px}
.staff-assignment.open .staff-transcript{display:flex}
.staff-transcript-line{display:grid;grid-template-columns:auto 1fr auto;gap:6px;align-items:baseline;font-size:12px}
.staff-transcript-line b{color:#8b93a7;font-size:10px;white-space:nowrap}
.staff-transcript-line span{color:#dfe3ee;word-break:break-word}
.staff-transcript-line time{color:#66718b;font-size:9px;white-space:nowrap}
.staff-transcript-line.employee b{color:#8fe3b0}
.staff-transcript-line.owner b{color:#c3c8ff}
.staff-transcript-line.client b{color:#ffcf94}
.staff-transcript-empty{color:#66718b;font-size:11px;font-style:italic}
.staff-member-buttons{display:flex;gap:6px;flex-wrap:wrap}
.chat-staff-mute{display:flex;align-items:flex-start;gap:8px;margin:4px 0 2px;font-size:11.5px;color:#c7ccdb;cursor:pointer}
.chat-staff-mute input{margin-top:2px;accent-color:#7c83ff}

@media(max-width:1100px){.order-card{grid-template-columns:minmax(125px,.7fr) minmax(220px,1.4fr) minmax(105px,.55fr) 136px}}
@media(max-width:820px){.notification-grid{grid-template-columns:1fr}.notification-card{min-height:0;padding:19px}.settings-heading{align-items:flex-start}.settings-heading>.status-chip{margin-top:5px}.telegram-connect{grid-template-columns:1fr}.telegram-connect>.button{width:100%}.telegram-connected{align-items:flex-start;flex-direction:column}.order-card{grid-template-columns:minmax(0,1fr) auto 58px;grid-template-areas:"owner summary actions" "description description actions"}.order-actions{gap:5px}.order-refund-button{width:54px}}
@media(max-width:480px){.settings-heading{display:block}.settings-heading>.status-chip{margin-top:13px}.notification-card-head{display:grid;grid-template-columns:46px minmax(0,1fr);align-items:start}.notification-card-head .notification-channel-icon{grid-row:1/3}.notification-card-head .channel-state{grid-column:2;margin:8px 0 0;justify-self:start}.notification-actions .button{flex:1}.telegram-connected .notification-actions{width:100%}.telegram-connected .notification-actions .button{flex:1}}

/* Catalog workspace and safe JSON constructor */
.lot-page-heading{margin-bottom:20px}.lot-management-bar{display:flex;align-items:center;justify-content:space-between;gap:22px;margin:0 0 16px;padding:18px;background:linear-gradient(120deg,rgba(117,101,244,.055),#121722 48%,rgba(54,202,239,.035))}.lot-management-bar>div:first-child{min-width:0}.lot-management-bar strong,.lot-management-bar small{display:block}.lot-management-bar strong{margin-top:5px;font-size:14px}.lot-management-bar small{margin-top:5px;color:var(--muted-2);font-size:9px;line-height:1.45}.lot-management-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.import-lots-modal{width:min(980px,calc(100% - 28px));max-height:min(92vh,920px);overflow:hidden}.import-lots-modal>form{max-height:min(92vh,920px);overflow:auto}.import-scope{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;margin-bottom:18px;padding:14px;border:1px solid var(--border-soft);border-radius:14px;background:#121824}.import-scope>div:first-child strong,.import-scope>div:first-child small{display:block}.import-scope>div:first-child strong{font-size:12px}.import-scope>div:first-child small{margin-top:4px;color:var(--muted-2);font-size:9px}.import-scope>label{display:flex;align-items:center;gap:7px;color:#c5cce0;font-size:10px;cursor:pointer}.import-scope input{accent-color:var(--purple)}.import-account-choices{grid-column:1/-1;padding:8px}.import-editor-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:9px}.import-editor-head strong,.import-editor-head small{display:block}.import-editor-head strong{font-size:12px}.import-editor-head small{margin-top:3px;color:var(--muted-2);font-size:9px}.import-editor-head>div:last-child{display:flex;gap:8px}.import-json-editor{width:100%;height:190px;resize:vertical;padding:15px;border:1px solid #313a54;border-radius:13px;outline:0;background:#0c111c;color:#cdd6eb;font:11px/1.55 Consolas,"Cascadia Code",monospace;tab-size:2}.import-json-editor:focus{border-color:#6d61de;box-shadow:0 0 0 3px rgba(117,101,244,.08)}.import-plan{margin-top:14px;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:#111622}.import-plan-summary{display:grid;grid-template-columns:repeat(5,1fr);border-bottom:1px solid var(--border-soft);background:#151b29}.import-plan-summary>div{padding:12px 14px;border-right:1px solid var(--border-soft)}.import-plan-summary>div:last-child{border:0}.import-plan-summary span,.import-plan-summary strong{display:block}.import-plan-summary span{color:var(--muted-2);font-size:8px;text-transform:uppercase;letter-spacing:.5px}.import-plan-summary strong{margin-top:5px;font-size:16px}.import-plan-summary .danger strong{color:var(--rose)}.import-plan-items{max-height:160px;overflow:auto;padding:7px}.import-plan-warnings{max-height:190px;overflow:auto;margin:14px 0 9px;padding:11px 13px;border:1px solid rgba(255,189,69,.28);border-radius:13px;background:rgba(255,189,69,.06);font-size:9px;line-height:1.5}.import-plan-warnings b{display:block;margin:0 0 6px;color:var(--amber);font-size:10px}.import-plan-warnings b~b{margin-top:11px;padding-top:9px;border-top:1px solid rgba(255,189,69,.18)}.import-plan-warnings span{display:block;padding-left:11px;color:#c5cce0;text-indent:-11px}.import-plan-warnings span+span{margin-top:4px}.import-skip-dupes{width:100%;margin:0 0 9px}.import-plan-item{display:grid;grid-template-columns:34px 86px minmax(110px,.75fr) minmax(0,1.3fr) auto;align-items:center;gap:9px;min-height:46px;padding:7px 9px;border-bottom:1px solid var(--border-soft);font-size:9px}.import-plan-item:last-child{border:0}.import-plan-item>i{width:24px;height:24px;display:grid;place-items:center;border-radius:8px;background:rgba(43,212,184,.08);color:var(--teal);font-style:normal}.import-plan-item.error>i{background:rgba(255,100,127,.09);color:var(--rose)}.import-plan-item>em{color:#bcb4ff;font-style:normal;font-weight:750;text-transform:uppercase}.import-plan-item>strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-plan-item>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.import-plan-item>small{color:var(--muted-2);white-space:nowrap}.import-format-note{display:flex;align-items:flex-start;gap:10px;margin-top:13px;padding:11px 13px;border:1px solid rgba(54,202,239,.14);border-radius:12px;background:rgba(54,202,239,.035)}.import-format-note>span{width:20px;height:20px;display:grid;place-items:center;flex:0 0 auto;border-radius:7px;background:rgba(54,202,239,.1);color:var(--cyan);font-size:10px;font-weight:800}.import-format-note p{margin:0;color:var(--muted);font-size:9px;line-height:1.55}.import-format-note code{padding:1px 4px;border-radius:4px;background:#1b2232;color:#c9c2ff}.import-lots-modal .modal-actions{align-items:center}.import-lots-modal .modal-actions>span{margin-right:auto;color:var(--muted-2);font-size:9px}

@media(max-width:820px){
  .mobile-nav{grid-template-columns:repeat(7,minmax(0,1fr));min-height:72px;padding-left:5px;padding-right:5px}
  .mobile-nav button{min-width:0;padding:2px 1px;gap:4px}
  .mobile-nav button span{font-size:18px}
  .mobile-nav button small{font-size:8px}
  .main{padding-bottom:76px}
  .chat-page-heading{margin-bottom:12px}
  .chat-workspace{height:calc(100dvh - var(--topbar) - 146px);min-height:460px;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:72px minmax(0,1fr)}
  .chat-workspace>.chat-account-rail{grid-row:1;height:72px!important;min-height:72px;align-self:stretch}
  .chat-workspace>.chat-list-column{grid-row:2;height:auto!important;min-height:0}
  .chat-workspace>.chat-thread-column{height:100%!important;min-height:0}
  #page-chats.thread-open .chat-workspace{height:calc(100dvh - var(--topbar) - 78px);min-height:0;grid-template-rows:minmax(0,1fr)}
  .chat-list{padding-bottom:12px}
  .chat-account-filter{flex:0 0 auto}
  .lot-management-bar{align-items:flex-start;flex-direction:column;padding:15px}
  .lot-management-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .lot-management-actions .button{width:100%}
  .lot-management-actions #createLotButton{grid-column:1/-1}
  .import-lots-modal>form{padding:19px}
  .import-scope{grid-template-columns:1fr}
  .import-account-choices{grid-column:auto}
  .import-editor-head{align-items:flex-start;flex-direction:column}
  .import-editor-head>div:last-child{width:100%}
  .import-editor-head .button{flex:1}
  .import-json-editor{height:245px;font-size:10px}
  .import-plan-summary{grid-template-columns:repeat(5,minmax(0,1fr))}
  .import-plan-summary>div{padding:10px 7px}
  .import-plan-summary span{font-size:6px}
  .import-plan-summary strong{font-size:13px}
  .import-plan-item{grid-template-columns:28px 66px minmax(0,1fr) auto}
  .import-plan-item>span{grid-column:2/-1}
  .import-plan-item>small{grid-column:4;grid-row:1}
  .import-lots-modal .modal-actions{position:sticky;bottom:-19px;margin:17px -19px -19px;padding:12px 19px calc(12px + env(safe-area-inset-bottom));background:#111622;border-top:1px solid var(--border-soft)}
  .import-lots-modal .modal-actions>span{display:none}
  .import-lots-modal .modal-actions .button{flex:1;padding-left:9px;padding-right:9px}
}

/* Reviews */
.review-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,240px));gap:12px;margin-bottom:16px}.review-metric{padding:17px 19px;border:1px solid var(--border);border-radius:14px;background:#141927}.review-metric span,.review-metric strong{display:block}.review-metric span{color:var(--muted);font-size:10px}.review-metric strong{margin-top:8px;font-size:25px;color:var(--teal)}.review-metric.amber strong{color:var(--amber)}.reviews-toolbar{display:grid;grid-template-columns:260px minmax(240px,430px);align-items:end;gap:12px;margin-bottom:15px}.reviews-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.review-card{padding:18px;border:1px solid var(--border);border-radius:16px;background:linear-gradient(145deg,#161b29,#121722)}.review-card.needs-reply{border-color:rgba(255,189,69,.3)}.review-head{display:grid;grid-template-columns:43px minmax(0,1fr) auto;align-items:center;gap:11px}.review-avatar{width:43px;height:43px;border-radius:var(--avatar-radius);object-fit:cover}.review-head strong,.review-head small{display:block}.review-head small{margin-top:4px;color:var(--muted-2);font-size:9px}.review-stars{color:var(--amber);letter-spacing:1px}.review-order{display:flex;align-items:center;gap:9px;margin:15px 0 10px;color:var(--muted);font-size:10px}.review-order span{color:#a99fff}.review-text{min-height:44px;margin:0;padding:12px;border-radius:11px;background:#101521;line-height:1.55;font-size:12px}.review-answer{margin-top:9px;padding:11px;border-left:2px solid var(--teal);background:rgba(43,212,184,.035)}.review-answer.empty{border-left-color:var(--amber);color:var(--muted)}.review-answer small{color:var(--muted-2);font-size:8px;text-transform:uppercase}.review-answer p{margin:6px 0 0;font-size:11px;line-height:1.5}.review-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:13px}.chat-message-employee{display:block;margin-top:6px;color:#a99fff;font-size:8px;font-weight:700}.thread-viewed-lot.active-order{border-color:rgba(43,212,184,.42);background:linear-gradient(120deg,rgba(43,212,184,.09),rgba(54,202,239,.04))}

@media(max-width:900px){.reviews-list{grid-template-columns:1fr}}
@media(max-width:820px){.reviews-toolbar{grid-template-columns:1fr}.review-metrics{grid-template-columns:1fr 1fr}.review-card{padding:14px}.review-head{grid-template-columns:40px minmax(0,1fr)}.review-stars{grid-column:2}.review-actions .button{flex:1}}

@media(max-width:430px){
  .content{padding-left:12px;padding-right:12px}
  .chat-workspace{margin-left:0;margin-right:0}
  .mobile-nav button small{font-size:7.5px}
  .lot-management-actions{grid-template-columns:1fr}
  .lot-management-actions #createLotButton{grid-column:auto}
}

.account-card.recovering{border-color:rgba(255,189,69,.42)}
.account-status.recovery{color:var(--amber);background:rgba(255,189,69,.1)}
.account-status.recovery .status-dot{background:var(--amber);box-shadow:0 0 0 4px rgba(255,189,69,.1)}
/* Раздел не доезжает. Не красный «всё сломалось» — аккаунт жив, беда точечная; поэтому
   янтарный, и рядом с ошибкой аккаунта, а не вместо неё. */
.account-troubles{display:flex;flex-direction:column;gap:4px;margin-top:8px}
.account-trouble{padding:7px 10px;border-radius:10px;font-size:12px;line-height:1.35;
  border:1px solid rgba(240,175,80,.28);background:rgba(240,175,80,.09);color:#f0af50}
.account-trouble strong{font-weight:600}
.account-trouble small{display:block;margin-top:2px;color:#9aa4bd}
.account-trouble.proxy{border-color:rgba(240,175,80,.45)}
.account-card.recovering .account-error{color:#ffd27e;background:rgba(255,189,69,.1)}

/* Linked FunPay pricing */
.linked-price-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.linked-price-hint{display:block;margin-top:8px;color:var(--cyan);font-size:10px}.linked-price input{font-variant-numeric:tabular-nums}.linked-price.buyer{padding-left:13px;border-left:1px solid var(--border-soft)}.lot-pay-methods{grid-column:1/-1;display:flex;flex-direction:column;gap:8px;padding:12px 13px;border:1px solid #293248;border-radius:12px;background:#141a27}.lot-pay-methods.hidden{display:none}.lot-pay-title{color:var(--purple-2);font-size:8px;font-weight:800;letter-spacing:.65px;text-transform:uppercase}.lot-pay-row{display:flex;flex-wrap:wrap;gap:9px}.lot-pay-method{flex:1 1 150px;max-width:250px;min-width:0;display:flex;flex-direction:column;gap:5px;padding:9px 11px;border:1px solid rgba(54,202,239,.2);border-radius:10px;background:rgba(54,202,239,.05)}.lot-pay-method>small{color:#9fb4c9;font-size:9px;font-weight:650;letter-spacing:.2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lot-pay-method small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#a9e6f5;font-size:9px}.lot-pay-amounts{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px}.lot-pay-sum{color:var(--amber);font-size:16px;font-weight:750;line-height:1.2;white-space:nowrap}.lot-pay-method b{color:var(--amber);font-size:14px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}.lot-pay-amounts i{color:#4d5a72;font-style:normal}.lot-pay-note{color:var(--muted-2);font-size:9px;line-height:1.45}.lot-pay-note.preview{color:var(--amber)}

@media(max-width:820px){
  .mobile-nav{position:fixed!important;inset:auto 0 0 0!important;top:auto!important;bottom:0!important;transform:none!important;margin:0!important;width:100%!important;max-width:none!important;z-index:2147483000!important;contain:layout paint;background:#0d101a}
  .linked-price-grid{grid-template-columns:1fr}.linked-price.buyer{padding-left:0;border-left:0}.lot-pay-method{max-width:none;flex-basis:100%}
}
.finance-withdraw-modal #financeSavedRecipientField{padding:12px;border:1px solid rgba(54,202,239,.2);border-radius:11px;background:rgba(54,202,239,.045)}
.finance-withdraw-modal #financeSavedRecipientField>span{color:#b8c6dc}
.finance-withdraw-modal #financeSavedRecipientField>small{color:#6f829f}
.finance-account-filters .finance-account-filter{grid-template-columns:37px minmax(0,1fr) 8px 28px}
.finance-account-tag{display:block;width:max-content;max-width:100%;margin-top:5px;padding:2px 6px;border-radius:6px;font-size:7px;font-style:normal;font-weight:750;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.finance-account-tag.violet{color:#b8adff;background:rgba(117,101,244,.14)}.finance-account-tag.cyan{color:#71dcf7;background:rgba(54,202,239,.12)}.finance-account-tag.green{color:#66e0c4;background:rgba(43,212,184,.12)}.finance-account-tag.amber{color:#ffd078;background:rgba(255,189,69,.12)}.finance-account-tag.rose{color:#ff91a3;background:rgba(255,100,127,.12)}.finance-account-tag.empty{padding-left:0;color:#5f6b86;background:transparent;font-weight:500}
.finance-account-tag-edit{width:28px;height:28px;display:grid;place-items:center;border:1px solid #303951;border-radius:8px;background:#1a2030;color:#8d98b2;cursor:pointer}.finance-account-tag-edit:hover{border-color:#6659d5;color:#b9b1ff;background:#211f3b}
.finance-overlap-badges{display:flex!important;align-items:center;gap:4px;flex-wrap:wrap;margin-top:6px}.finance-overlap-badges small{margin:0!important;color:#b86b7b!important;font-size:7px!important;text-transform:none!important;letter-spacing:0!important}.finance-overlap-chip{display:inline-flex;padding:2px 6px;border:1px solid rgba(255,100,127,.24);border-radius:999px;background:rgba(255,100,127,.09);color:#ff899c;font-size:7px;font-weight:750}
.finance-recipient-overlap{padding:11px 12px;border:1px solid rgba(255,100,127,.32);border-radius:11px;background:rgba(255,100,127,.075)}.finance-recipient-overlap>strong,.finance-recipient-overlap>span{display:block}.finance-recipient-overlap>strong{color:#ff9bad;font-size:11px}.finance-recipient-overlap>span{margin-top:4px;color:#b7808b;font-size:9px}.finance-recipient-overlap>div{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}.finance-recipient-overlap b{padding:4px 8px;border-radius:999px;background:rgba(255,100,127,.13);color:#ff9bad;font-size:8px}

.chat-staff-button{min-height:34px;display:flex;align-items:center;gap:6px;padding:0 10px;border:1px solid rgba(117,101,244,.32);border-radius:10px;background:rgba(117,101,244,.08);color:#b8adff;font-size:9px;font-weight:750;cursor:pointer}.chat-staff-button:hover,.chat-staff-button.assigned{border-color:rgba(43,212,184,.42);background:rgba(43,212,184,.09);color:#6de4ca}.chat-assignment-bar{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:10px;margin:9px 13px 0;padding:9px 11px;border:1px solid rgba(43,212,184,.28);border-radius:12px;background:linear-gradient(110deg,rgba(43,212,184,.09),rgba(117,101,244,.06))}.chat-assignment-bar>span{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:rgba(43,212,184,.11);color:var(--teal);font-size:16px}.chat-assignment-bar small,.chat-assignment-bar strong{display:block}.chat-assignment-bar small{color:#5bd6bd;font-size:7px;font-weight:800;letter-spacing:.65px}.chat-assignment-bar strong{margin-top:4px;color:#d8f7ef;font-size:10px}.chat-assignment-bar button{padding:6px 9px;border:1px solid rgba(43,212,184,.24);border-radius:8px;background:#151d29;color:#83dcca;font-size:8px;cursor:pointer}.chat-staff-current{margin-bottom:14px;padding:11px 12px;border:1px solid rgba(43,212,184,.24);border-radius:11px;background:rgba(43,212,184,.07);color:#bcebe0;font-size:10px;line-height:1.5}
.notification-channel-icon.access{color:#b9adff;background:rgba(117,101,244,.1)}.telegram-access-card{grid-column:1/-1;min-height:0}.telegram-members{display:grid;gap:9px}.telegram-member{display:grid;grid-template-columns:minmax(190px,1.2fr) minmax(150px,.8fr) 150px auto;align-items:center;gap:10px;padding:11px;border:1px solid #283149;border-radius:12px;background:#101520}.telegram-member.pending{border-color:rgba(255,189,69,.3);background:rgba(255,189,69,.045)}.telegram-member-person{min-width:0;display:grid;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:10px}.telegram-member-avatar{width:38px;height:38px;display:grid;place-items:center;border-radius:var(--avatar-radius);background:linear-gradient(145deg,#6558d7,#277f9d);color:white;font-size:13px;font-weight:850}.telegram-member-person strong,.telegram-member-person small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.telegram-member-person strong{font-size:11px}.telegram-member-person small{margin-top:4px;color:var(--muted-2);font-size:8px}.telegram-member input,.telegram-member select{width:100%;height:37px;padding:0 10px;border:1px solid #303a54;border-radius:9px;outline:0;background:#171d2a;color:#eef1fa;font-size:10px}.telegram-member input:focus,.telegram-member select:focus{border-color:#665bd5}.telegram-member-actions{display:flex;gap:7px}.telegram-member-actions button{min-height:36px;padding:0 11px;border:1px solid #353e59;border-radius:9px;background:#1a2030;color:#c5cbea;font-size:9px;font-weight:750;cursor:pointer}.telegram-member-actions .approve{border-color:#7565f4;background:#6859de;color:white}.telegram-member-actions .remove{width:36px;padding:0;border-color:rgba(255,100,127,.25);color:#ff8fa2;background:rgba(255,100,127,.06)}.telegram-role-badge{display:inline-flex;margin-top:5px;padding:3px 7px;border-radius:99px;background:rgba(43,212,184,.09);color:#61d9c0;font-size:7px;font-weight:750}.telegram-member.pending .telegram-role-badge{background:rgba(255,189,69,.1);color:#ffd078}.telegram-members-empty{padding:24px;border:1px dashed #2c354c;border-radius:12px;text-align:center}.telegram-members-empty strong,.telegram-members-empty span{display:block}.telegram-members-empty strong{font-size:11px}.telegram-members-empty span{margin-top:6px;color:var(--muted-2);font-size:9px}
@media(max-width:980px){.telegram-member{grid-template-columns:minmax(190px,1fr) minmax(140px,.75fr) 135px}.telegram-member-actions{grid-column:1/-1;justify-content:flex-end}}
@media(max-width:820px){.chat-staff-button{padding:0 8px}.telegram-member{grid-template-columns:1fr 1fr}.telegram-member-person{grid-column:1/-1}.telegram-member-actions{grid-column:1/-1}.chat-assignment-bar{margin-left:9px;margin-right:9px}}
@media(max-width:560px){.chat-staff-button{width:35px;min-width:35px;padding:0;justify-content:center}.chat-staff-button>span:last-child{display:none}.chat-thread-header{gap:7px}.chat-tag-button{width:35px;min-width:35px;padding:0;justify-content:center}.chat-tag-button>span:last-child{display:none}.telegram-member{grid-template-columns:1fr}.telegram-member-person,.telegram-member-actions{grid-column:auto}.telegram-member-actions{justify-content:stretch}.telegram-member-actions .approve{flex:1}.chat-assignment-bar{grid-template-columns:30px minmax(0,1fr) auto;padding:8px}.chat-assignment-bar>span{width:30px;height:30px}}
#proxyStatus.error{color:#ff879b}#proxyStatus.success{color:#62ddc3}

/* Employee dispatch */
/* Слабину забирает колонка навыков, а не колонка с именем. Раньше первая колонка была 1.15fr:
   на широком экране она растягивалась, содержимое оставалось прижатым влево, и посередине
   строки зияла дыра — это и выглядело как «плывёт». */
.telegram-member{grid-template-columns:minmax(180px,auto) minmax(140px,230px) 150px minmax(160px,520px) minmax(auto,1fr)}
/* Колонка навыков ограничена, слабину забирает последняя, а кнопки в ней прижаты вправо.
   Так строка читается как строка таблицы при любой ширине экрана: слева человек, справа
   действия, между ними — то, что у него выдано. */
.telegram-member>.telegram-member-actions{justify-content:flex-end}
/* Правил строки владельца тут больше нет: он в этот список не попадает вовсе — основной
   телеграм кабинета живёт в «Настройках», рядом с ботом. */
.chat-staff-control-row{display:flex;gap:8px;margin-top:14px}.chat-staff-control-row .button{flex:1}.chat-assignment-bar.paused{border-color:rgba(255,189,69,.34);background:linear-gradient(110deg,rgba(255,189,69,.09),rgba(117,101,244,.05))}.chat-assignment-bar.paused>span{color:var(--amber);background:rgba(255,189,69,.1)}.chat-assignment-bar.paused small,.chat-assignment-bar.paused strong{color:#ffd47d}
.staff-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.staff-metric{min-height:112px;padding:18px;border:1px solid var(--border);border-radius:15px;background:linear-gradient(145deg,#161b29,#121722)}.staff-metric span,.staff-metric strong,.staff-metric small{display:block}.staff-metric span{color:#9ba7c0;font-size:10px}.staff-metric strong{margin:12px 0 4px;color:var(--purple-2);font-size:24px}.staff-metric small{color:var(--muted-2);font-size:9px}.staff-metric.cyan strong{color:var(--cyan)}.staff-metric.green strong{color:var(--teal)}.staff-metric.amber strong{color:var(--amber)}
.staff-dispatch-card{display:grid;grid-template-columns:minmax(230px,.65fr) minmax(320px,1.35fr);gap:20px;padding:18px;margin-bottom:16px}.staff-dispatch-copy h2{margin:5px 0 7px;font-size:18px}.staff-dispatch-copy>p:last-child{max-width:430px;margin:0;color:var(--muted);font-size:10px;line-height:1.55}.staff-message-field textarea{min-height:90px}.staff-audience-row{grid-column:1/-1;display:grid;grid-template-columns:minmax(180px,260px) minmax(0,1fr) auto;align-items:end;gap:12px;padding-top:15px;border-top:1px solid var(--border-soft)}.staff-audience-summary{display:flex;align-items:center;gap:10px;min-height:43px;color:var(--muted);font-size:10px}.staff-workspace{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,.75fr);gap:17px}.staff-section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:0 2px 12px}.staff-section-heading h2{margin:4px 0 0;font-size:17px}.staff-section-heading>span{color:var(--muted-2);font-size:9px}.staff-members-list{display:grid;gap:9px}.staff-member-card{display:grid;grid-template-columns:24px 44px minmax(160px,1fr) minmax(120px,.55fr) auto;align-items:center;gap:12px;min-height:88px;padding:13px 14px;border:1px solid var(--border);border-radius:14px;background:linear-gradient(145deg,#151a28,#121722);transition:.15s}.staff-member-card:hover{border-color:#3d4661}.staff-member-card.selected{border-color:#7466e8;background:linear-gradient(120deg,rgba(117,101,244,.13),#141927)}.staff-member-check input{display:none}.staff-member-check i{display:block;width:17px;height:17px;border:1px solid #46506b;border-radius:5px;background:#111622}.staff-member-check input:checked+i{border-color:#897bff;background:#7565f4;box-shadow:inset 0 0 0 4px #7565f4}.staff-member-check input:checked+i:after{content:'✓';display:block;color:#fff;font-size:11px;line-height:15px;text-align:center}.staff-member-avatar{width:44px;height:44px;display:grid;place-items:center;border-radius:var(--avatar-radius);background:linear-gradient(145deg,#6d5ee4,#267e9c);font-weight:800}.staff-member-main{min-width:0}.staff-member-main>div:first-child{display:flex;align-items:baseline;gap:8px}.staff-member-main strong{font-size:12px}.staff-member-main small{color:var(--muted-2);font-size:8px}.staff-tag-list{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}.staff-tag{padding:3px 7px;border-radius:999px;color:#bdb4ff;background:rgba(117,101,244,.11);font-size:7px;font-weight:700}.staff-tag.empty{color:var(--muted-2);background:#1a2030}.staff-member-state strong,.staff-member-state small{display:block}.staff-member-state strong{font-size:9px}.staff-member-state small{margin-top:5px;color:var(--muted-2);font-size:8px}.staff-member-state .status-dot{margin-right:6px}.staff-personal-button{min-height:35px;padding:0 11px;font-size:9px}.staff-replies-panel{padding:17px;min-height:360px}.staff-replies-list{display:grid;gap:9px;max-height:620px;overflow:auto}.staff-reply-card{padding:13px;border:1px solid var(--border-soft);border-radius:13px;background:#101520}.staff-reply-head{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:9px}.staff-reply-head>span{width:34px;height:34px;display:grid;place-items:center;border-radius:11px;background:rgba(43,212,184,.1);color:var(--teal);font-weight:800}.staff-reply-head strong,.staff-reply-head small{display:block}.staff-reply-head strong{font-size:10px}.staff-reply-head small{margin-top:3px;color:var(--muted-2);font-size:7px}.staff-question,.staff-answer{margin:10px 0 0;padding:9px 10px;border-radius:10px;font-size:9px;line-height:1.45}.staff-question{color:var(--muted);background:#171d2a}.staff-answer{color:#d9f8f1;background:rgba(43,212,184,.07)}.staff-reply-card>button{width:100%;margin-top:9px;padding:7px;border:0;border-radius:8px;background:rgba(117,101,244,.09);color:#b9aeff;font-size:8px;cursor:pointer}.staff-replies-empty{text-align:center;padding:55px 16px}.staff-replies-empty span{font-size:24px}.staff-replies-empty strong,.staff-replies-empty small{display:block}.staff-replies-empty strong{margin-top:12px;font-size:11px}.staff-replies-empty small{margin-top:6px;color:var(--muted-2);font-size:8px;line-height:1.5}
@media(max-width:1120px){.telegram-member{grid-template-columns:minmax(180px,1fr) 1fr 130px}.telegram-member [data-member-tags]{grid-column:2/4}.telegram-member-actions{grid-column:1/-1;justify-content:flex-end}.staff-workspace{grid-template-columns:1fr}.staff-replies-panel{min-height:0}.staff-replies-list{grid-template-columns:repeat(2,minmax(0,1fr));max-height:none}}
@media(max-width:820px){.staff-page-heading{align-items:flex-start}.staff-metrics{grid-template-columns:1fr 1fr;gap:8px}.staff-metric{min-height:92px;padding:14px}.staff-metric strong{font-size:20px;margin-top:9px}.staff-dispatch-card{grid-template-columns:1fr;padding:16px}.staff-audience-row{grid-column:auto;grid-template-columns:1fr}.staff-audience-summary{min-height:28px}.staff-member-card{grid-template-columns:22px 40px minmax(0,1fr) auto;grid-template-areas:'check avatar main action' 'check avatar state action';gap:9px;padding:11px}.staff-member-check{grid-area:check}.staff-member-avatar{grid-area:avatar;width:40px;height:40px}.staff-member-main{grid-area:main}.staff-member-state{grid-area:state}.staff-personal-button{grid-area:action;width:36px;min-width:36px;padding:0;font-size:0;flex:0 0 auto;white-space:nowrap;overflow:hidden}.staff-personal-button:after{content:'✎';font-size:15px}.staff-replies-list{grid-template-columns:1fr}.telegram-member{grid-template-columns:1fr 1fr}.telegram-member [data-member-tags]{grid-column:1/-1}}
@media(max-width:520px){.staff-page-heading{display:block}.staff-page-heading .button{margin-top:13px}.staff-metrics{grid-template-columns:1fr 1fr}.staff-metric span{font-size:9px}.staff-metric small{font-size:7px}.staff-member-main>div:first-child{display:block}.staff-member-main small{display:block;margin-top:3px}.staff-member-state strong{font-size:8px}.staff-member-state small{font-size:7px}.staff-dispatch-card{border-radius:15px}.chat-staff-control-row{flex-direction:column}}
.staff-tag-list>button{width:19px;height:19px;padding:0;border:1px dashed #46506d;border-radius:7px;background:transparent;color:#9e94e8;font-size:11px;line-height:16px;cursor:pointer}
.finance-sync-state{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 10px;border:1px solid var(--border-soft);border-radius:999px;background:#111622;color:var(--muted-2);font-size:8px;white-space:nowrap}.finance-sync-state i{width:7px;height:7px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 3px rgba(43,212,184,.08)}.finance-sync-state.syncing{color:#bcb4ff;border-color:rgba(117,101,244,.28);background:rgba(117,101,244,.07)}.finance-sync-state.syncing i{background:var(--purple-2);box-shadow:0 0 0 3px rgba(117,101,244,.12);animation:finance-sync-pulse 1s ease-in-out infinite}@keyframes finance-sync-pulse{50%{opacity:.35;transform:scale(.78)}}
@media(max-width:820px){.finance-sync-state{order:-1;width:100%;justify-content:center}.finance-page-heading .heading-actions{max-width:100%}}

/* Customer CRM */
.customer-sync-state{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 11px;border:1px solid var(--border-soft);border-radius:999px;background:#111622;color:var(--muted-2);font-size:8px;white-space:nowrap}.customer-sync-state i{width:7px;height:7px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 3px rgba(43,212,184,.09)}.customer-sync-state.syncing{color:#c0b8ff;border-color:rgba(117,101,244,.3);background:rgba(117,101,244,.07)}.customer-sync-state.syncing i{background:var(--purple-2);animation:customer-sync-pulse 1s ease-in-out infinite}@keyframes customer-sync-pulse{50%{opacity:.35;transform:scale(.75)}}
.customer-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.customer-metric{min-height:112px;padding:18px;border:1px solid var(--border);border-radius:15px;background:linear-gradient(145deg,#161b29,#121722)}.customer-metric span,.customer-metric strong,.customer-metric small{display:block}.customer-metric span{color:#9ba7c0;font-size:10px}.customer-metric strong{margin:12px 0 4px;color:var(--purple-2);font-size:24px}.customer-metric small{color:var(--muted-2);font-size:9px}.customer-metric.cyan strong{color:var(--cyan)}.customer-metric.green strong{color:var(--teal)}.customer-metric.amber strong{color:var(--amber)}
.customer-toolbar{display:grid;grid-template-columns:minmax(260px,1.3fr) minmax(160px,.65fr) minmax(150px,.6fr) auto auto;align-items:center;gap:10px;padding:12px;margin-bottom:15px}.customer-search{min-height:42px;display:flex;align-items:center;gap:9px;padding:0 12px;border:1px solid #30384f;border-radius:11px;background:#111622;color:var(--muted)}.customer-search:focus-within{border-color:#655ad7}.customer-search input{width:100%;border:0;outline:0;background:transparent;color:var(--text);font-size:11px}.customer-attention-filter,.customer-archive-filter{display:flex;align-items:center;gap:8px;color:#a8b2c9;font-size:9px;white-space:nowrap;cursor:pointer}.customer-attention-filter input{display:none}.customer-attention-filter i{width:29px;height:17px;position:relative;border-radius:99px;background:#30374a;transition:.18s}.customer-attention-filter i:after{content:'';position:absolute;width:11px;height:11px;left:3px;top:3px;border-radius:50%;background:#a9b1c3;transition:.18s}.customer-attention-filter input:checked+i{background:var(--purple)}.customer-attention-filter input:checked+i:after{transform:translateX(12px);background:#fff}.customer-archive-filter input{accent-color:var(--purple)}.customer-sync-error{margin:0 0 14px;padding:10px 12px;border:1px solid rgba(255,100,127,.28);border-radius:11px;background:rgba(255,100,127,.07);color:#ff93a5;font-size:9px}
.customers-grid{display:grid;grid-template-columns:repeat(3,minmax(260px,1fr));gap:12px}.customer-card{min-width:0;min-height:286px;padding:16px;border:1px solid var(--border);border-radius:16px;background:linear-gradient(145deg,#151a28,#111621);color:inherit;text-align:left;cursor:pointer;transition:.16s}.customer-card:hover{transform:translateY(-2px);border-color:#465171;box-shadow:0 14px 35px rgba(0,0,0,.18)}.customer-card.unread{box-shadow:inset 3px 0 var(--purple-2)}.customer-card.overdue{border-color:rgba(255,189,69,.34)}.customer-card>header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.customer-card-person{min-width:0;display:flex;align-items:center;gap:10px}.customer-card-person>span:last-child{min-width:0}.customer-card-person strong,.customer-card-person small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.customer-card-person strong{font-size:12px}.customer-card-person small{margin-top:4px;color:var(--muted-2);font-size:8px}.customer-card-avatar{width:43px;height:43px;object-fit:cover;border-radius:var(--avatar-radius);background:#242b3f}.customer-stage{flex:0 0 auto;padding:5px 8px;border-radius:999px;color:#bcb4ff;background:rgba(117,101,244,.12);font-size:7px;font-weight:800;text-transform:uppercase;letter-spacing:.25px}.customer-stage.interested{color:#70daf4;background:rgba(54,202,239,.1)}.customer-stage.buyer,.customer-stage.repeat{color:#67e0c4;background:rgba(43,212,184,.1)}.customer-stage.vip{color:#ffd174;background:rgba(255,189,69,.11)}.customer-stage.dormant,.customer-stage.lost{color:#ff91a4;background:rgba(255,100,127,.1)}
.customer-card-suggestion{min-height:58px;display:flex;align-items:center;gap:10px;margin-top:15px;padding:10px 11px;border:1px solid var(--border-soft);border-radius:12px;background:#101520}.customer-card-suggestion>i{width:28px;height:28px;display:grid;place-items:center;flex:0 0 auto;border-radius:9px;background:rgba(117,101,244,.11);color:var(--purple-2);font-size:11px;font-style:normal;font-weight:800}.customer-card-suggestion span{min-width:0}.customer-card-suggestion small,.customer-card-suggestion strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.customer-card-suggestion small{color:var(--muted-2);font-size:7px;letter-spacing:.65px}.customer-card-suggestion strong{margin-top:4px;font-size:9px}.customer-card-suggestion.due>i{color:var(--amber);background:rgba(255,189,69,.1)}.customer-card-suggestion.reply>i{color:var(--teal);background:rgba(43,212,184,.1)}.customer-card-stats{display:grid;grid-template-columns:.55fr 1fr .85fr;gap:8px;margin-top:13px}.customer-card-stats>span{min-width:0;padding:9px;border:1px solid var(--border-soft);border-radius:10px;background:rgba(16,21,32,.55)}.customer-card-stats small,.customer-card-stats strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.customer-card-stats small{color:var(--muted-2);font-size:7px}.customer-card-stats strong{margin-top:5px;font-size:9px}.customer-card-tags{height:25px;display:flex;gap:5px;overflow:hidden;margin-top:12px}.customer-card-tags>span{max-width:105px;padding:4px 8px;border-radius:999px;color:#bcb4ff;background:rgba(117,101,244,.1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:7px;font-weight:700}.customer-card-tags>.muted-tag{color:var(--muted-2);background:#191f2e}.customer-card>footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:12px;padding-top:11px;border-top:1px solid var(--border-soft)}.customer-account-chips{display:flex;align-items:center;gap:5px;min-width:0}.customer-account-chips>span{display:flex;align-items:center;gap:4px;min-width:0}.customer-account-chips b{max-width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#8995af;font-size:7px}.customer-account-chip-avatar{width:18px;height:18px;object-fit:cover;border-radius:var(--avatar-radius);background:#252d41}.customer-open{color:#a99fff;font-size:8px}.customer-open b{font-size:14px}.customers-empty{min-height:310px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px;text-align:center}.customers-empty>span{width:54px;height:54px;display:grid;place-items:center;border-radius:17px;background:rgba(117,101,244,.1);color:var(--purple-2);font-size:24px}.customers-empty strong{margin-top:14px;font-size:13px}.customers-empty small{max-width:350px;margin-top:7px;color:var(--muted-2);font-size:9px;line-height:1.55}
.customer-modal{width:min(1060px,calc(100% - 28px));max-height:92vh}.customer-modal>form{padding:24px}.customer-dialog-person{display:flex;align-items:center;gap:13px;min-width:0}.customer-dialog-person>div:last-child{min-width:0}.customer-dialog-avatar{width:52px;height:52px;display:grid;place-items:center;overflow:hidden;flex:0 0 auto;border-radius:var(--avatar-radius);background:linear-gradient(145deg,#6759d9,#267e9c);font-weight:800}.customer-dialog-avatar .avatar-pair,.customer-dialog-avatar-image{width:52px;height:52px}.customer-dialog-avatar-image{object-fit:cover;border-radius:var(--avatar-radius)}.customer-modal-heading{align-items:center}.customer-dialog-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-bottom:16px}.customer-dialog-summary>div{min-width:0;padding:12px;border:1px solid var(--border-soft);border-radius:11px;background:#101520}.customer-dialog-summary span,.customer-dialog-summary strong{display:block}.customer-dialog-summary span{color:var(--muted-2);font-size:7px}.customer-dialog-summary strong{margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}.customer-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:15px;border:1px solid var(--border-soft);border-radius:14px;background:#101520}.customer-note-field{grid-column:1/-1}.customer-note-field textarea{min-height:85px}.customer-archive-switch{grid-column:1/-1;display:flex;align-items:center;gap:11px;padding-top:11px;border-top:1px solid var(--border-soft);cursor:pointer}.customer-archive-switch input{display:none}.customer-archive-switch>i{width:35px;height:20px;position:relative;flex:0 0 auto;border-radius:99px;background:#30374a}.customer-archive-switch>i:after{content:'';position:absolute;width:14px;height:14px;left:3px;top:3px;border-radius:50%;background:#a9b1c3;transition:.18s}.customer-archive-switch input:checked+i{background:var(--rose)}.customer-archive-switch input:checked+i:after{transform:translateX(15px);background:#fff}.customer-archive-switch strong,.customer-archive-switch small{display:block}.customer-archive-switch strong{font-size:9px}.customer-archive-switch small{margin-top:3px;color:var(--muted-2);font-size:7px}.customer-detail-section{margin-top:15px;padding:15px;border:1px solid var(--border-soft);border-radius:14px;background:#101520}.customer-detail-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px}.customer-detail-heading h3{margin:4px 0 0;font-size:13px}.customer-account-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.customer-account-list article{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:9px;padding:9px;border:1px solid #252d42;border-radius:11px;background:#151a27}.customer-detail-account-avatar{width:38px;height:38px;object-fit:cover;border-radius:var(--avatar-radius)}.customer-account-list strong,.customer-account-list small{display:block}.customer-account-list strong{font-size:9px}.customer-account-list small{margin-top:4px;color:var(--muted-2);font-size:7px}.customer-account-list .button{min-height:32px;padding:0 9px;font-size:8px}/* Подпись вместо кнопки: у переписки без опознанного аккаунта переходить некуда, и в третьей колонке стоит слово, а не кнопка. Колонка узкая (на телефоне 37px), и текст в ней обязан уменьшиться и переноситься, иначе он вылезает за карточку. */.customer-account-list .quiet{font-size:8px;line-height:1.25;text-align:right;overflow-wrap:anywhere}.customer-reminder-compose{display:grid;grid-template-columns:190px minmax(0,1fr) auto;gap:8px}.customer-reminder-compose input{min-height:40px;padding:8px 10px;border:1px solid #30384f;border-radius:10px;background:#171c29;color:var(--text);font-size:10px}.customer-reminder-compose .button{min-height:40px}.customer-reminder-list{display:grid;gap:7px;margin-top:10px}.customer-reminder{display:grid;grid-template-columns:30px minmax(0,1fr) 27px;align-items:center;gap:9px;padding:9px;border:1px solid #252d42;border-radius:11px;background:#151a27}.customer-reminder.overdue{border-color:rgba(255,189,69,.31);background:rgba(255,189,69,.045)}.customer-reminder.done{opacity:.52}.customer-reminder>button{width:28px;height:28px;border:0;border-radius:9px;background:rgba(43,212,184,.1);color:var(--teal);cursor:pointer}.customer-reminder>button:last-child{width:25px;height:25px;background:transparent;color:var(--muted-2);font-size:16px}.customer-reminder strong,.customer-reminder small{display:block}.customer-reminder strong{font-size:9px}.customer-reminder small{margin-top:4px;color:var(--muted-2);font-size:7px}.customer-reminder.overdue small{color:var(--amber)}.customer-history-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.customer-order-list,.customer-interest-list{display:grid;gap:7px;max-height:270px;overflow:auto}.customer-order-list>a,.customer-order-list>button,.customer-order-list>article,.customer-interest-list>a,.customer-interest-list>article{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px;border:1px solid #252d42;border-radius:11px;background:#151a27;color:inherit;text-decoration:none}.customer-order-list>a:hover,.customer-order-list>button:hover,.customer-interest-list>a:hover{border-color:#51499a}.customer-order-list>button{width:100%;font:inherit;text-align:left;cursor:pointer}
.customer-order-list span,.customer-interest-list span{min-width:0}.customer-order-list span:last-child,.customer-interest-list span:last-child{text-align:right;flex:0 0 auto}.customer-order-list strong,.customer-order-list small,.customer-interest-list strong,.customer-interest-list small{display:block;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.customer-order-list strong,.customer-interest-list strong{font-size:8px}.customer-order-list small,.customer-interest-list small{margin-top:4px;color:var(--muted-2);font-size:7px}
.customer-order-stars{margin-right:6px;color:#ffcf5c;letter-spacing:.5px}.customer-detail-empty{padding:18px;color:var(--muted-2);font-size:8px;text-align:center}.customer-modal-actions{position:sticky;bottom:-24px;margin:20px -24px -24px;padding:13px 24px calc(13px + env(safe-area-inset-bottom));border-top:1px solid var(--border-soft);background:#111622}.customer-modal-actions>span{margin-right:auto;align-self:center;color:var(--muted-2);font-size:8px}
@media(max-width:1180px){.customers-grid{grid-template-columns:repeat(2,minmax(260px,1fr))}.customer-toolbar{grid-template-columns:minmax(240px,1fr) 1fr 1fr}.customer-attention-filter,.customer-archive-filter{justify-content:center}}
@media(max-width:820px){.customer-page-heading{align-items:flex-start}.customer-page-heading .heading-actions{width:auto}.customer-sync-state{order:-1;width:100%;justify-content:center}.customer-metrics{grid-template-columns:1fr 1fr;gap:8px}.customer-metric{min-height:94px;padding:14px}.customer-metric strong{font-size:20px;margin-top:9px}.customer-toolbar{grid-template-columns:1fr 1fr;padding:10px}.customer-search{grid-column:1/-1}.customer-attention-filter,.customer-archive-filter{min-height:34px}.customers-grid{grid-template-columns:1fr}.customer-card{min-height:270px}.customer-dialog-summary{grid-template-columns:1fr 1fr}.customer-editor-grid{grid-template-columns:1fr}.customer-note-field,.customer-archive-switch{grid-column:auto}.customer-account-list{grid-template-columns:1fr}.customer-history-grid{grid-template-columns:1fr}.customer-reminder-compose{grid-template-columns:1fr 1fr}.customer-reminder-compose input:nth-child(2){grid-column:1/-1}.customer-reminder-compose .button{grid-column:1/-1}.customer-modal{width:calc(100% - 14px);max-height:95vh}.customer-modal>form{padding:18px}.customer-modal-actions{bottom:-18px;margin-left:-18px;margin-right:-18px;margin-bottom:-18px;padding-left:18px;padding-right:18px}.customer-modal-actions>span{display:none}}
@media(max-width:520px){.customer-page-heading{display:block}.customer-page-heading .heading-actions{width:100%;margin-top:13px}.customer-page-heading .button{flex:1}.customer-metric span{font-size:8px}.customer-metric small{font-size:7px}.customer-toolbar{grid-template-columns:1fr}.customer-search{grid-column:auto}.customer-card{padding:14px}.customer-card-stats{grid-template-columns:.55fr 1fr .9fr}.customer-dialog-summary{gap:6px}.customer-dialog-summary>div{padding:9px}.customer-account-list article{grid-template-columns:36px minmax(0,1fr) 37px}.customer-account-list .button{width:35px;min-width:35px;padding:0;font-size:0}.customer-account-list .button:after{content:'◌';font-size:15px}.customer-reminder-compose{grid-template-columns:1fr}.customer-reminder-compose input:nth-child(2),.customer-reminder-compose .button{grid-column:auto}.customer-order-list strong,.customer-interest-list strong{max-width:180px}}

/* Customer CRM classification and card layout */
.customer-toolbar{grid-template-columns:repeat(4,minmax(150px,1fr))}.customer-toolbar .customer-search{grid-column:span 2}.customer-toolbar .customer-archive-filter{justify-self:end;padding:0 8px}
.customer-card{min-height:370px;display:flex;flex-direction:column;overflow:hidden}.customer-card.reseller{border-color:rgba(255,77,142,.65);box-shadow:inset 3px 0 #ff4d8e,0 12px 38px rgba(255,40,120,.08)}.customer-card.reseller:hover{border-color:#ff6aa1;box-shadow:inset 3px 0 #ff4d8e,0 16px 42px rgba(255,40,120,.15)}
.customer-stage.reseller{color:#ff8fb8;background:linear-gradient(110deg,rgba(255,52,126,.2),rgba(185,65,255,.2));box-shadow:inset 0 0 0 1px rgba(255,91,155,.18)}
.customer-card-reminder{min-height:45px;display:flex;align-items:center;gap:9px;margin-top:12px;padding:8px 10px;border:1px solid rgba(255,189,69,.25);border-radius:11px;background:rgba(255,189,69,.055)}.customer-card-reminder>b{width:25px;height:25px;display:grid;place-items:center;flex:0 0 auto;border-radius:8px;background:rgba(255,189,69,.12);color:var(--amber)}.customer-card-reminder span{min-width:0}.customer-card-reminder small,.customer-card-reminder strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.customer-card-reminder small{color:var(--amber);font-size:6px;letter-spacing:.6px}.customer-card-reminder strong{margin-top:3px;font-size:8px}
.customer-card-stats strong.tier-blue{color:#58a9ff}.customer-card-stats strong.tier-gold{color:#f6c453;text-shadow:0 0 14px rgba(246,196,83,.16)}.customer-card-stats strong.tier-diamond{color:transparent;background:linear-gradient(100deg,#6ff8ff,#9da9ff 42%,#f2a8ff 76%,#72fff1);background-clip:text;-webkit-background-clip:text;text-shadow:0 0 17px rgba(112,225,255,.12)}.customer-card-stats strong.contact-fresh{color:#4ad8aa}.customer-card-stats strong.contact-warm{color:#ffb64d}.customer-card-stats strong.contact-cold{color:#ff667f}
.customer-card-labels{min-height:25px;display:flex;align-items:center;gap:5px;overflow:hidden;margin-top:11px}.customer-card-labels>span{max-width:120px;padding:5px 8px;border-radius:999px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:7px;font-weight:750}.customer-activity{color:#9ba7c0;background:#1b2130}.customer-activity.active{color:#5ee4ba;background:rgba(43,212,184,.11)}.customer-activity.attention{color:#ffbd57;background:rgba(255,189,69,.1)}.customer-activity.inactive{color:#ff7d93;background:rgba(255,100,127,.1)}.customer-game-label{color:hsl(var(--game-hue) 86% 77%);background:hsl(var(--game-hue) 70% 52% / .12);box-shadow:inset 0 0 0 1px hsl(var(--game-hue) 70% 62% / .17)}.customer-manual-label{color:#b8b0ff;background:rgba(117,101,244,.1)}
.customer-card-views{min-height:81px;margin-top:11px;padding:9px 10px;border:1px solid var(--border-soft);border-radius:11px;background:rgba(13,18,29,.58)}.customer-card-views>small{display:block;margin-bottom:6px;color:#67738f;font-size:6px;letter-spacing:.55px}.customer-card-views>div{display:grid;gap:4px}.customer-card-views>div>span{min-width:0;display:grid;grid-template-columns:minmax(58px,.42fr) minmax(0,1fr);gap:7px;align-items:center}.customer-card-views i,.customer-card-views strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.customer-card-views i{color:#9086ed;font-size:7px;font-style:normal}.customer-card-views strong{font-size:7px}.customer-card-views em{color:var(--muted-2);font-size:7px;font-style:normal}
.customer-card>footer{display:grid;grid-template-columns:minmax(0,1fr) auto;margin-top:auto}.customer-account-chips{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;width:100%}.customer-account-chips>span{width:100%;display:flex;align-items:center;gap:5px;overflow:hidden}.customer-account-chips b{max-width:none;min-width:0}.customer-account-chip-avatar{width:21px;height:21px;flex:0 0 21px;border-radius:var(--avatar-radius)}.customer-open{align-self:center;white-space:nowrap}
@media(max-width:1180px){.customer-toolbar{grid-template-columns:repeat(2,minmax(160px,1fr))}.customer-toolbar .customer-search{grid-column:1/-1}.customer-toolbar .customer-archive-filter{justify-self:start}.customer-card{min-height:360px}}
@media(max-width:820px){.customer-toolbar{grid-template-columns:1fr 1fr}.customer-toolbar .customer-search{grid-column:1/-1}.customer-card{min-height:350px}.customer-card-views{min-height:76px}}
@media(max-width:520px){.customer-toolbar{grid-template-columns:1fr}.customer-toolbar .customer-search{grid-column:auto}.customer-toolbar .customer-archive-filter{justify-self:start}.customer-card{min-height:360px}.customer-card-labels{overflow-x:auto;padding-bottom:2px}.customer-account-chips{gap:4px}.customer-account-chips b{font-size:6px}.customer-card-views>div>span{grid-template-columns:75px minmax(0,1fr)}}

/* Customer notifications and chat CRM context */
.customer-events-button{position:relative}.customer-events-button>span{color:var(--purple-2)}.customer-events-button.has-events{border-color:rgba(117,101,244,.5);background:rgba(117,101,244,.1);color:#dedaff}.customer-events-button b{min-width:19px;height:19px;display:inline-grid;place-items:center;margin-left:2px;padding:0 5px;border-radius:999px;background:var(--rose);color:#fff;font-size:8px;box-shadow:0 0 0 3px rgba(255,100,127,.08)}
.customer-events-modal{width:min(720px,calc(100% - 28px));max-height:90vh}.customer-events-modal>form{max-height:90vh;overflow:auto}.customer-events-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:2px 0 13px;padding:11px 12px;border:1px solid var(--border-soft);border-radius:12px;background:#101520}.customer-events-toolbar>span{color:#9da8c0;font-size:9px}.customer-events-list{display:grid;gap:8px;max-height:510px;overflow:auto}.customer-event{width:100%;display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:11px;padding:11px 12px;border:1px solid var(--border-soft);border-radius:13px;background:#121824;color:inherit;text-align:left;cursor:pointer;transition:.15s}.customer-event:hover{border-color:#4b5473;background:#151c2b}.customer-event.unread{border-color:rgba(117,101,244,.38);box-shadow:inset 3px 0 var(--purple-2);background:linear-gradient(100deg,rgba(117,101,244,.1),#121824 45%)}.customer-event-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;background:rgba(54,202,239,.09);color:var(--cyan);font-size:16px}.customer-event.reminder .customer-event-icon{background:rgba(255,189,69,.1);color:var(--amber)}.customer-event-copy{min-width:0}.customer-event-copy strong,.customer-event-copy small,.customer-event-copy em{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.customer-event-copy strong{font-size:11px}.customer-event-copy small{margin-top:4px;color:#a5b0c7;font-size:8px}.customer-event-copy em{margin-top:5px;color:var(--muted-2);font-size:8px;font-style:normal}.customer-event time{color:var(--muted-2);font-size:8px;white-space:nowrap}
.chat-thread-person{appearance:none;border:0;outline:0;background:transparent;color:inherit;text-align:left;cursor:pointer;padding:6px 7px;margin:-6px 0;border-radius:10px}.chat-thread-person:hover{background:rgba(117,101,244,.08)}.chat-thread-person:focus-visible{box-shadow:0 0 0 2px rgba(117,101,244,.55)}.chat-thread-person small{display:flex;align-items:center;gap:4px;overflow:hidden;margin-top:5px}.chat-thread-person small:empty{display:none}.chat-thread-person small>span,.chat-game-label{display:inline-flex!important;align-items:center;max-width:90px;padding:3px 6px;border-radius:999px;color:hsl(var(--game-hue) 86% 77%)!important;background:hsl(var(--game-hue) 70% 52% / .12);box-shadow:inset 0 0 0 1px hsl(var(--game-hue) 70% 62% / .17);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:7px!important;font-weight:750}.chat-conversation-footer{overflow:hidden}.chat-game-label{flex:0 1 auto}.chat-owner-chip{flex:0 1 auto}
.notification-card.rules-card{min-height:330px}
@media(max-width:820px){.customer-events-modal>form{padding:18px}.customer-events-modal .modal-actions{position:sticky;bottom:-18px;margin:17px -18px -18px;padding:12px 18px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--border-soft);background:#111622}.customer-page-heading .heading-actions{display:grid;grid-template-columns:1fr 1fr}.customer-sync-state{grid-column:1/-1}.customer-events-button,.customer-page-heading #refreshCustomersButton{width:100%}.chat-thread-person{padding-left:4px;padding-right:4px}}
@media(max-width:520px){.customer-events-toolbar{align-items:flex-start;flex-direction:column}.customer-events-toolbar .button{width:100%}.customer-event{grid-template-columns:36px minmax(0,1fr);padding:10px}.customer-event-icon{width:36px;height:36px}.customer-event time{grid-column:2}.customer-event-copy strong{font-size:10px}.customer-page-heading .heading-actions{grid-template-columns:1fr}.customer-sync-state{grid-column:auto}.chat-thread-person small{max-width:150px}.chat-thread-person small>span{max-width:72px}.chat-conversation-footer .chat-game-label:nth-of-type(n+2){display:none!important}}

/* Game identities and employee skills */
.game-tag{display:inline-flex!important;align-items:center;width:max-content;max-width:130px;padding:4px 8px;border-radius:999px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:7px!important;font-weight:800;line-height:1.1;letter-spacing:.01em;box-sizing:border-box}
.game-tag.game-rust,.game-rust{color:#ffaaa4!important;background:rgba(220,62,53,.18)!important;box-shadow:inset 0 0 0 1px rgba(255,97,87,.29)!important}
.game-tag.game-marathon,.game-marathon{color:#91efad!important;background:rgba(54,172,91,.17)!important;box-shadow:inset 0 0 0 1px rgba(93,220,129,.25)!important}
.game-tag.game-arena,.game-arena{color:#d0d5dd!important;background:rgba(144,153,169,.13)!important;box-shadow:inset 0 0 0 1px rgba(179,187,201,.2)!important}
.game-tag.game-discord,.game-discord{color:#b5c0ff!important;background:rgba(88,101,242,.18)!important;box-shadow:inset 0 0 0 1px rgba(121,135,255,.3)!important}
.game-tag.game-gray-zone,.game-gray-zone{color:#9adca4!important;background:rgba(27,94,47,.34)!important;box-shadow:inset 0 0 0 1px rgba(75,155,93,.31)!important}
.game-tag.game-arc-raiders,.game-arc-raiders{color:#fff8e8!important;background:linear-gradient(105deg,rgba(24,165,223,.28) 0 24%,rgba(52,203,135,.25) 24% 44%,rgba(246,190,45,.24) 44% 64%,rgba(225,58,49,.28) 64% 100%)!important;box-shadow:inset 0 0 0 1px rgba(255,229,175,.23),0 0 12px rgba(42,194,196,.07)!important}
.game-tag.game-generic{color:hsl(var(--game-hue) 86% 77%)!important;background:hsl(var(--game-hue) 70% 52% / .12)!important;box-shadow:inset 0 0 0 1px hsl(var(--game-hue) 70% 62% / .17)!important}
.customer-game-label,.chat-game-label,.staff-tag.game{margin:0}
.chat-thread-person small .game-tag{display:inline-flex!important;margin:0;max-width:92px}

.chat-owner-chip{max-width:190px}.chat-owner-meta{display:flex!important;align-items:center;gap:5px;min-width:0;max-width:none!important;overflow:visible!important}.chat-owner-name{display:block;max-width:76px!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-owner-games{display:flex!important;align-items:center;gap:4px;max-width:none!important;overflow:visible!important}.chat-owner-games .chat-game-label{max-width:78px}.chat-assignment-chip{flex:0 1 auto;max-width:118px}

.staff-tag-library{display:grid;grid-template-columns:minmax(235px,.75fr) minmax(390px,1.25fr);gap:16px;padding:18px;margin-bottom:16px}.staff-tag-library-copy h2{margin:5px 0 6px;font-size:17px}.staff-tag-library-copy>p:last-child{margin:0;color:var(--muted);font-size:9px;line-height:1.5}.staff-tag-create{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(150px,1fr) auto;align-items:end;gap:9px}.staff-tag-definitions{grid-column:1/-1;display:flex;gap:7px;flex-wrap:wrap;padding-top:13px;border-top:1px solid var(--border-soft)}.staff-definition-chip{display:inline-flex;align-items:center;gap:5px;padding:6px 7px 6px 9px;border-radius:999px;color:#c7cce0;background:#1a2030;font-size:8px}.staff-definition-chip button{width:18px;height:18px;padding:0;border:0;border-radius:50%;background:rgba(6,9,15,.25);color:inherit;cursor:pointer}.staff-definition-empty{color:var(--muted-2);font-size:9px}
.skill-choice-list{display:flex;align-items:center;gap:7px;flex-wrap:wrap;min-height:36px;margin-top:7px}.skill-choice-list button{min-height:31px;padding:0 10px;border:1px solid #303952;border-radius:999px;background:#171d2a;color:#9da8c1;font-size:9px;font-weight:700;cursor:pointer;transition:.15s}.skill-choice-list button:hover{border-color:#5b53ad;color:#d7d2ff}.skill-choice-list button.selected{border-color:#7768ed;background:rgba(117,101,244,.18);color:#fff;box-shadow:0 0 0 2px rgba(117,101,244,.07)}.skill-choice-list.game-choices button{box-shadow:none!important}.skill-choice-groups{display:grid;gap:9px;margin-top:8px}.skill-choice-groups>section{padding:10px;border:1px solid var(--border-soft);border-radius:11px;background:#101520}.skill-choice-groups>section>strong{display:block}.skill-choice-groups .skill-choice-list{min-height:28px}.skill-choice-empty{color:var(--muted-2);font-size:9px;line-height:1.45}
.telegram-member-skills{min-width:0}.telegram-member-skills>div{display:flex;gap:4px;flex-wrap:wrap}.telegram-member-skills>button{margin-top:7px;padding:5px 8px;border:1px solid #39425e;border-radius:8px;background:#1a2030;color:#bbb3ff;font-size:8px;cursor:pointer}.telegram-member-skills>small{display:block;color:var(--muted-2);font-size:8px;line-height:1.4}
.assignment-file-picker{width:100%;min-height:46px;display:flex;align-items:center;gap:10px;margin-top:7px;padding:0 12px;border:1px dashed #465171;border-radius:11px;background:#121824;color:#aeb8ce;text-align:left;cursor:pointer}.assignment-file-picker:hover{border-color:#7063dc;background:rgba(117,101,244,.06);color:#d2ccff}.assignment-file-picker b{width:27px;height:27px;display:grid;place-items:center;border-radius:8px;background:rgba(117,101,244,.14);color:#a99eff}.assignment-image-previews{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin-top:8px}.assignment-image-previews>span{position:relative;min-width:0}.assignment-image-previews img{width:100%;aspect-ratio:1.25;display:block;object-fit:cover;border:1px solid #36405a;border-radius:9px}.assignment-image-previews small{display:block;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted-2);font-size:6px}.assignment-image-previews button{position:absolute;right:-4px;top:-4px;width:19px;height:19px;padding:0;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:#ef5c75;color:#fff;cursor:pointer}

@media(max-width:820px){.staff-tag-library{grid-template-columns:1fr;padding:15px}.staff-tag-create{grid-template-columns:1fr 1fr}.staff-tag-create .button{grid-column:1/-1}.telegram-member-skills{grid-column:1/-1}.chat-conversation-footer{align-items:center;gap:6px;overflow:hidden}.chat-owner-chip{flex:1 1 auto;max-width:none}.chat-owner-meta{flex:1}.chat-owner-name{max-width:90px!important}.chat-owner-games .chat-game-label{max-width:84px}.chat-assignment-chip{flex:0 0 auto;max-width:105px}}
@media(max-width:520px){.staff-tag-library{border-radius:15px}.staff-tag-create{grid-template-columns:1fr}.staff-tag-create .button{grid-column:auto}.assignment-image-previews{grid-template-columns:repeat(3,minmax(0,1fr))}.chat-owner-chip{min-width:0}.chat-owner-name{max-width:68px!important}.chat-owner-games .chat-game-label{max-width:72px}.chat-owner-games .chat-game-label:nth-child(n+2){display:none!important}.chat-flag:not(.chat-assignment-chip):not(.chat-direction):not(.chat-claim){display:none}.chat-assignment-chip{max-width:94px;padding-left:6px;padding-right:6px}.chat-assignment-chip span{max-width:70px!important}.skill-choice-list button{min-height:34px}}

/* Chat list: who sent the last message, and keeping the cross-account chip alive on phones. */
.chat-preview-mine{color:#6fd0ff;font-weight:800}
.viewed-lot-title{display:block;width:100%;padding:0;border:0;background:transparent;color:var(--text);font:inherit;font-size:12px;font-weight:700;text-align:left;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .16s}
.viewed-lot-title:hover{color:var(--cyan);text-decoration:underline}
@media(max-width:520px){
  /* The blanket "hide every chip" rule below 520px also swallowed the cross-account marker,
     which is the one flag you can't get from anywhere else in the list. */
  .chat-flag.chat-cross-account{display:inline-flex;max-width:96px;padding-left:6px;padding-right:6px}
  .chat-flag.chat-cross-account>span{max-width:58px}
}
@media(max-width:560px){.order-detail-top{grid-template-columns:1fr}.order-detail-payout>strong{font-size:21px}}
@media(max-width:820px){.order-detail-modal{padding:20px}}

/* Account rails: the third grid track was pinned to 8px for the status dot, but the "all" button
   puts a counter badge in that same slot — three digits then hung outside the rounded card.
   An auto track still collapses to the dot's width when that's all there is. */
.orders-account-filter,.finance-account-filter{grid-template-columns:37px minmax(0,1fr) auto}
.orders-account-filter>b,.finance-account-filter>b,.chat-account-filter>b{
  justify-self:end;min-width:0;max-width:100%;white-space:nowrap;font-variant-numeric:tabular-nums}
@media(max-width:820px){.finance-account-filter{grid-template-columns:37px minmax(0,1fr) auto 28px}}

/* Brand block doubles as the hard-refresh button, with the live connection dot next to the name. */
button.brand,button.mobile-brand{appearance:none;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:12px;transition:background .16s,opacity .16s}
button.brand:hover,button.mobile-brand:hover{background:rgba(255,255,255,.04)}
button.brand:active,button.mobile-brand:active{opacity:.7}
button.brand.reloading,button.mobile-brand.reloading{opacity:.45;cursor:progress}
button.brand strong,button.mobile-brand strong{display:inline-flex;align-items:center;gap:7px}
.connection-dot{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:var(--teal);box-shadow:0 0 0 3px rgba(43,212,184,.12);transition:background .2s,box-shadow .2s}
.connection-dot.offline{background:var(--rose);box-shadow:0 0 0 3px rgba(255,100,127,.14);animation:connection-pulse 1.4s ease-in-out infinite}
#brandSubtitle.offline{color:#ff9aa8}
@keyframes connection-pulse{0%,100%{opacity:1}50%{opacity:.35}}
@media(prefers-reduced-motion:reduce){.connection-dot.offline{animation:none}}

/* Cross-account marker must survive the squeeze: the owner chip is the greedy one on phones, so
   it yields first, and below 820px the marker collapses to a count with the names in the tooltip. */
.chat-flag.chat-cross-account>em{display:none;font-style:normal;font-weight:800}
@media(max-width:820px){
  .chat-conversation-footer .chat-owner-chip{flex:0 1 auto;min-width:0}
  .chat-flag.chat-cross-account{flex:0 0 auto;max-width:none;padding-left:6px;padding-right:8px;gap:4px}
  .chat-flag.chat-cross-account>span{display:none}
  .chat-flag.chat-cross-account>em{display:inline}
}

/* Review head: adding the account chip made it four children while the narrow layout still had a
   two-column grid, so the stars were forced on top of the chip. Flex wraps instead of colliding. */
.review-head{display:flex;flex-wrap:wrap;align-items:center;gap:11px}
.review-head>div{flex:1 1 150px;min-width:0}
.review-head>.review-owner{margin-left:auto}
.review-head>.review-stars{flex:0 0 auto;white-space:nowrap}
@media(max-width:560px){
  .review-head>div{flex:1 1 100%}
  .review-head>.review-owner{margin-left:0}
}

/* Staff cards: four tracks with 190+150+150px minimums never fit a phone, so the grid overflowed
   and the notification labels slid under the next column. Stack them below 640px. */
@media(max-width:640px){
  .telegram-member{grid-template-columns:minmax(0,1fr);gap:10px}
  .telegram-member-actions{grid-column:auto;justify-content:flex-start}
  .member-notify-prefs{width:100%;gap:6px}
  .member-notify-prefs>small{width:100%}
  .member-notify-toggle{flex:0 0 auto;gap:6px;padding:5px 9px;border:1px solid var(--border-soft);border-radius:9px;background:rgba(255,255,255,.03)}
  .member-notify-toggle input{flex:0 0 auto;width:15px;height:15px;margin:0}
}

/* Analytics */
.analytics-range{flex-wrap:wrap}
.analytics-hint{color:var(--muted-2);font-size:10px;text-align:right;max-width:240px}
.analytics-chart-panel{margin-bottom:14px;padding:18px}
.analytics-chart{position:relative;width:100%;height:250px;margin-top:8px}
.analytics-chart svg{width:100%;height:100%;display:block;overflow:visible}
.analytics-area{fill:url(#analyticsFill)}
.analytics-line{fill:none;stroke:url(#analyticsStroke);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.analytics-dot{fill:#0f1420;stroke:#7c6cff;stroke-width:2;opacity:0;transition:opacity .12s}
.analytics-dot.on{opacity:1}
.analytics-active{fill:#4bc0ff;stroke:#0f1420;stroke-width:2.5}
.analytics-cursor{stroke:rgba(124,108,255,.45);stroke-width:1;stroke-dasharray:3 4}
.analytics-grid{stroke:rgba(255,255,255,.06);stroke-width:1}
.analytics-axis{fill:#6b748c;font-size:11px}
.analytics-hit{cursor:crosshair}
.analytics-tip{position:absolute;top:6px;z-index:3;min-width:170px;max-width:250px;padding:10px 12px;border:1px solid #33405f;border-radius:12px;background:rgba(15,20,32,.97);box-shadow:0 16px 40px rgba(0,0,0,.5);pointer-events:none}
.analytics-tip strong{display:block;color:var(--muted);font-size:10px}
.analytics-tip-sum{display:block;margin:4px 0 2px;color:var(--amber);font-size:16px}
.analytics-tip small{display:block;color:var(--muted-2);font-size:9px}
.analytics-tip ul{margin:8px 0 0;padding:8px 0 0;border-top:1px solid var(--border-soft);list-style:none;display:flex;flex-direction:column;gap:5px}
.analytics-tip li{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:10px}
.analytics-tip li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#c7ccdb}
.analytics-tip li b{flex:0 0 auto;color:#8fe3b0}
.analytics-breakdowns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}
.analytics-breakdowns .panel{padding:16px 18px}
.analytics-list{display:grid;grid-template-columns:150px minmax(0,1fr);align-items:start;gap:18px;margin-top:12px}
.analytics-donut{position:relative;width:150px;height:150px;flex:0 0 auto}
.analytics-donut svg{width:100%;height:100%;display:block}
.analytics-arc{transition:opacity .16s}
.analytics-arc:hover{opacity:.75}
.analytics-donut-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 34px;pointer-events:none}
.analytics-donut-center b{color:var(--text);font-size:23px;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.analytics-donut-center small{margin-top:5px;color:var(--muted-2);font-size:9px;font-weight:600;line-height:1.25;max-width:100%;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.analytics-legend{min-width:0;display:flex;flex-direction:column;gap:11px}
.analytics-legend-row{display:grid;grid-template-columns:9px minmax(0,1fr) auto;column-gap:9px;row-gap:3px;align-items:baseline}
.analytics-legend-row i{grid-column:1;align-self:center;width:9px;height:9px;border-radius:50%;box-shadow:0 0 0 3px rgba(255,255,255,.04)}
.analytics-legend-row span{grid-column:2;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:700}
.analytics-legend-row em{grid-column:3;font-style:normal;font-size:11px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.analytics-legend-row b{grid-column:2/-1;color:#aab3c6;font-size:10px;font-weight:600;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.analytics-legend-total{grid-column:1/-1;padding-top:11px;margin-top:6px;border-top:1px solid var(--border-soft);color:var(--muted-2);font-size:10px;font-variant-numeric:tabular-nums}
.customer-detail-empty{grid-column:1/-1}
@media(max-width:1100px){.analytics-breakdowns{grid-template-columns:1fr}}
@media(max-width:820px){
  .analytics-chart{height:210px}
  .analytics-chart-panel{padding:14px 15px}
  .analytics-hint{max-width:none;text-align:left}
  .analytics-range{width:100%}
  .analytics-range button{flex:1}
  .analytics-tip{min-width:150px;max-width:200px}
}
@media(max-width:1240px) and (min-width:1101px){
  .analytics-list{grid-template-columns:1fr;justify-items:center}
  .analytics-legend{width:100%}
}
@media(max-width:520px){
  .analytics-list{grid-template-columns:1fr;justify-items:center}
  .analytics-legend{width:100%}
}

/* Account dialog: marketplace picker and the G2G session fields. */
.account-marketplace{width:100%}
.account-marketplace button{flex:1}
.g2g-only .g2g-help{display:block;margin:2px 0 8px;color:var(--muted-2);font-size:9px;line-height:1.5}
.g2g-only .g2g-help code{font-family:var(--mono,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:9px;padding:0 3px;border-radius:3px;background:rgba(255,255,255,.06)}
.g2g-only input{width:100%;margin-bottom:7px}
.g2g-only input:last-child{margin-bottom:0}
/* Одна длинная строка для консоли: переносим её и даём выделить целиком, а не подбирать мышью. */
.g2g-snippet{margin:0 0 9px;padding:8px 9px;border-radius:7px;border:1px solid var(--line,rgba(255,255,255,.09));background:rgba(0,0,0,.22);max-height:96px;overflow:auto;user-select:all}
.g2g-snippet code{font-family:var(--mono,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:9px;line-height:1.55;color:var(--muted-1,#c8cbd4);white-space:pre-wrap;word-break:break-all}

/* --- G2G chat inside the FunPay chat page --- */
.account-chat-btn{padding:2px 9px;border-radius:7px;border:1px solid var(--line,rgba(255,255,255,.14));background:rgba(120,140,255,.14);color:inherit;cursor:pointer;font-size:11px}
.account-chat-btn:hover{background:rgba(120,140,255,.24)}
/* У переписки G2G нет флагов FunPay — кнопку флага прячем. «Лоты» НЕ прячем: с 17.10 она
   открывает окно отправки лота G2G (openG2GChatLotsDialog), а это правило прятало её с первых
   дней G2G, и окно было недостижимо. «Сотрудник» общий для обеих площадок и остаётся. */
#chatWorkspace.g2g-active #editChatTagButton{display:none}

/* --- Product switch: each marketplace is its own CRM, not a filter --- */
.product-switch{display:flex;align-items:center;gap:2px;padding:4px;margin:0 0 18px;border-radius:11px;background:#10141f;border:1px solid var(--border-soft)}
.product-switch.can-scroll{touch-action:pan-y}
/* Стрелки появляются вместе с третьей площадкой: пока их две и обе видны, крутить нечего. */
.ps-arrow{display:none;flex:0 0 auto;width:16px;height:28px;place-items:center;border:0;border-radius:7px;background:transparent;color:var(--muted-2);font-size:15px;line-height:1;cursor:pointer;transition:.16s}
.product-switch.can-scroll .ps-arrow{display:grid}
.ps-arrow:hover{color:#dfe4f4;background:#161c2b}
.ps-arrow:active{transform:scale(.92)}
.ps-window{flex:1;min-width:0;overflow:hidden}
.ps-track{display:flex;gap:4px;will-change:transform;user-select:none;-webkit-user-select:none;touch-action:pan-y}
/* Доезд — резкий старт и мягкое торможение БЕЗ перелёта: лента встаёт на площадку как в паз.
   Пружина с перелётом читалась как дребезг (Larpbase 06.10: «чётко и брутально»). */
.ps-track.sliding{transition:transform var(--ps-dur,.3s) cubic-bezier(.25,1,.5,1)}
.ps-ico{flex:0 0 auto;width:18px;height:18px;padding:1px;box-sizing:border-box;border-radius:6px;object-fit:contain;object-position:50% 50%;transform-origin:center}
.product-switch-btn{flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:7px;padding:8px 7px;border:0;border-radius:8px;background:transparent;color:var(--muted-2);font:inherit;font-size:12px;font-weight:700;line-height:1;white-space:nowrap;cursor:pointer;transition:color .16s,background .16s;user-select:none}
.product-switch-btn span{display:flex;align-items:center;min-height:18px}
.product-switch-btn:hover{color:#dfe4f4}
/* Выбранная — плотная заливка и жёсткая грань ВНУТРИ кнопки. Наружной тени нет и не будет:
   лента — пять копий подряд, и тень выбранной из соседней копии заползала в окно с края, пока
   сама площадка стояла за его пределами, — то самое «свечение» по краям (Larpbase 06.10). */
.product-switch-btn.active,.product-switch-btn.active:hover{background:var(--purple);color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.16),inset 0 -2px 0 rgba(0,0,0,.3)}
.chat-rail-empty{padding:16px 12px;color:var(--muted-2);font-size:12px;line-height:1.5}

/* G2G wears its own palette so it reads as a separate product, not a FunPay skin. */
body[data-market="g2g"]{--purple:#f0842a;--purple-2:#ffa252}
body[data-market="g2g"] .brand-mark{background:linear-gradient(145deg,#f0842a,#c2410c);box-shadow:0 8px 22px rgba(240,132,42,.26)}
/* Значок площадки закрывает марку целиком, но у него скруглённые края — под ними просвечивала
   бы подложка, а у G2G она своего цвета и правилом выше по весу. Гасим обе разом, весом ещё
   выше: подложка тут не нужна вовсе, картинка сама себе фон. */
body[data-market] .brand-mark.has-icon{background:none;box-shadow:none}
body[data-market="g2g"] .nav-item.active{background:linear-gradient(90deg,rgba(240,132,42,.22),rgba(240,132,42,.07));box-shadow:inset 3px 0 var(--purple)}
body[data-market="g2g"] .button.primary{background:linear-gradient(135deg,#f0842a,#dd6b12);border-color:#ffa252;box-shadow:0 9px 24px rgba(200,110,30,.2)}
body[data-market="g2g"] .button.primary:hover{background:linear-gradient(135deg,#ff9440,#ef7a1e)}
body[data-market="g2g"] .avatar-button{background:#e07b25;border-color:#c2650f}
body[data-market="g2g"] .setting-icon,body[data-market="g2g"] .empty-icon{color:var(--purple-2);background:rgba(240,132,42,.1)}
body[data-market="g2g"] .text-button{color:#ffb877}
body[data-market="g2g"] .account-card.selected{border-color:#e08640;box-shadow:inset 0 0 0 1px rgba(240,132,42,.25)}
body[data-market="g2g"] .chat-account-filter.active{background:rgba(240,132,42,.14)}
body[data-market="g2g"] .login-view{background:radial-gradient(circle at 20% 15%,#3b2410 0,transparent 33%),radial-gradient(circle at 80% 82%,#10292c 0,transparent 28%),#090b13}

/* У переписки G2G нет флагов FunPay — кнопку флага прячем. «Лоты» НЕ прячем: с 17.10 она
   открывает окно отправки лота G2G (openG2GChatLotsDialog), а это правило прятало её с первых
   дней G2G, и окно было недостижимо. «Сотрудник» общий для обеих площадок и остаётся. */
#chatWorkspace.g2g-active #editChatTagButton{display:none}
.account-chat-btn{padding:2px 9px;border-radius:7px;border:1px solid var(--line,rgba(255,255,255,.14));background:rgba(240,132,42,.16);color:inherit;cursor:pointer;font-size:11px}
.account-chat-btn:hover{background:rgba(240,132,42,.28)}

/* Вход через Telegram и экран приостановленной подписки */
.login-telegram{display:flex;flex-direction:column;gap:10px;margin-bottom:4px}
.login-hint{min-height:16px;font-size:12px;text-align:center;margin:0}
.login-telegram-link{display:block;text-align:center;font-size:12px;color:#9f94ff;text-decoration:none}
.login-telegram-link:hover{text-decoration:underline}
.login-divider{position:relative;margin:16px 0;text-align:center}
.login-divider::before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:var(--border-soft)}
.login-divider span{position:relative;padding:0 12px;background:rgba(16,20,32,.92);color:var(--muted-2);font-size:11px;text-transform:uppercase;letter-spacing:.08em}
.subscription-logout{margin-top:10px}
/* Справка по JSON-конструктору лотов */
.import-help{margin-top:13px;border:1px solid rgba(54,202,239,.16);border-radius:12px;background:rgba(54,202,239,.03);overflow:hidden}
.import-help>summary{cursor:pointer;list-style:none;padding:11px 14px;color:#7fd4f2;font-size:12px;font-weight:650;user-select:none}
.import-help>summary::-webkit-details-marker{display:none}
.import-help>summary::before{content:"?";display:inline-grid;place-items:center;width:18px;height:18px;margin-right:9px;border-radius:6px;background:rgba(54,202,239,.14);font-size:11px;vertical-align:-4px}
.import-help[open]>summary{border-bottom:1px solid rgba(54,202,239,.14)}
.import-help>summary:hover{color:#a4e3fa}
.import-help-body{padding:4px 16px 16px;color:var(--muted);font-size:12px;line-height:1.62}
.import-help-body h4{margin:16px 0 6px;color:var(--text);font-size:12px;font-weight:650}
.import-help-body h4:first-child{margin-top:8px}
.import-help-body p{margin:0 0 6px}
.import-help-body code{padding:1px 5px;border-radius:5px;background:#0c111c;color:#cdd6eb;font:11px/1.5 Consolas,"Cascadia Code",monospace}
.import-help-steps{margin:0 0 6px;padding-left:19px}
.import-help-steps li{margin-bottom:3px}
.import-help-list{margin:0 0 6px;padding-left:19px;list-style:disc}
.import-help-list li{margin-bottom:3px}
.import-help-tip{color:var(--muted-2)}
.import-help-warn{margin-top:12px;padding:10px 12px;border:1px solid rgba(244,101,138,.22);border-radius:10px;background:rgba(244,101,138,.05);color:#f0b7c6}
.import-help-table{width:100%;margin:0 0 6px;border-collapse:collapse;font-size:11.5px}
.import-help-table th{padding:6px 8px;border-bottom:1px solid var(--border-soft);color:var(--muted-2);font-weight:600;text-align:left}
.import-help-table td{padding:6px 8px;border-bottom:1px solid var(--border-soft);vertical-align:top}
.import-help-table tr:last-child td{border-bottom:0}
.import-help-table td.danger code{background:rgba(244,101,138,.12);color:#f4658a}
.disabled-field{opacity:.55;cursor:not-allowed}

.lot-management-help{grid-column:1/-1;margin-top:14px}

/* Плавающий индикатор длинных операций: экспорт и импорт лотов */
.job-hud{position:fixed;right:18px;bottom:18px;z-index:70;width:min(340px,calc(100vw - 28px));
  border:1px solid #2f3958;border-radius:14px;background:rgba(13,17,28,.96);backdrop-filter:blur(18px);
  box-shadow:0 18px 46px rgba(0,0,0,.5);overflow:hidden;animation:job-hud-in .22s ease}
@keyframes job-hud-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.job-hud-head{display:flex;align-items:center;gap:9px;padding:11px 12px}
.job-hud-head strong{flex:1;font-size:12.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.job-hud-count{font:11px/1 Consolas,"Cascadia Code",monospace;color:var(--muted)}
.job-hud-spark{width:8px;height:8px;flex:0 0 auto;border-radius:50%;background:#8b7bff;
  box-shadow:0 0 0 0 rgba(139,123,255,.55);animation:job-hud-pulse 1.5s infinite}
@keyframes job-hud-pulse{70%{box-shadow:0 0 0 7px rgba(139,123,255,0)}100%{box-shadow:0 0 0 0 rgba(139,123,255,0)}}
.job-hud.done .job-hud-spark{background:#3ddc97;animation:none}
.job-hud-btn{width:22px;height:22px;flex:0 0 auto;border:0;border-radius:6px;background:#1b2233;color:var(--muted);
  font-size:11px;line-height:1;cursor:pointer}
.job-hud-btn:hover{color:var(--text)}
.job-hud.collapsed .job-hud-body{display:none}
.job-hud.collapsed .job-hud-btn{transform:rotate(180deg)}
.job-hud-body{padding:0 12px 12px}
.job-hud-track{height:5px;border-radius:3px;background:#1b2233;overflow:hidden}
/* Бегущая заливка для операций без счётчика: «работаю», а не «сделано N%».
   Имя СВОЁ, не job-hud-pulse: то уже занято пульсацией точки в шапке двадцатью строками
   выше. Одинаковые @keyframes — валидный CSS, и второй молча перетирает первый по всему
   документу: точка переставала пульсировать и вместо этого уезжала вправо через весь
   виджет, поверх заголовка. Ошибки при этом нет ни одной — ровно как с двумя функциями
   одного имени в app.js. */
@keyframes job-hud-run{0%{transform:translateX(-100%)}100%{transform:translateX(400%)}}
.job-hud-bar.pulse{width:25%!important;animation:job-hud-run 1.4s ease-in-out infinite}
.job-hud-bar{display:block;height:100%;width:0;border-radius:3px;
  background:linear-gradient(90deg,#6d61de,#8b7bff 60%,#36caef);background-size:200% 100%;
  transition:width .25s ease;animation:job-hud-flow 1.6s linear infinite}
@keyframes job-hud-flow{to{background-position:-200% 0}}
.job-hud.done .job-hud-bar{animation:none;background:#3ddc97}
.job-hud-meta{display:flex;gap:10px;justify-content:space-between;margin-top:7px;
  font-size:11px;color:var(--muted-2)}
.job-hud-meta span:first-child{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Устройства и входы */
.security-panel{padding:18px;margin-bottom:16px}
.security-panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:6px}
.security-panel-head h2{margin:4px 0 0;font-size:15px}
.security-note{margin:0 0 14px;color:var(--muted-2);font-size:9px;line-height:1.55}
.security-sessions{display:grid;gap:9px}
.security-session{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:12px;
  padding:12px 13px;border:1px solid var(--border);border-radius:14px;background:#121824}
.security-session.current{border-color:rgba(117,101,244,.32);background:linear-gradient(120deg,rgba(117,101,244,.08),#141927)}
.security-session-icon{width:28px;height:28px;display:grid;place-items:center;border-radius:9px;
  background:rgba(117,101,244,.1);color:#bcb4ff;font-size:12px}
.security-session strong,.security-session small,.security-who{display:block}
.security-session strong{font-size:12px}
.security-session strong i{margin-left:7px;padding:2px 6px;border-radius:6px;background:rgba(61,220,151,.1);
  color:#3ddc97;font-size:8px;font-style:normal;font-weight:750;text-transform:uppercase;letter-spacing:.4px}
.security-session small{margin-top:4px;color:var(--muted-2);font-size:9px}
.security-who{margin-top:3px;color:#bcb4ff;font-size:9px;font-style:normal}
.security-log{display:grid;gap:5px;max-height:420px;overflow:auto}
.security-log-row{display:grid;grid-template-columns:64px minmax(90px,.8fr) 118px minmax(0,1fr) 96px;
  align-items:center;gap:9px;padding:8px 10px;border-bottom:1px solid var(--border-soft);font-size:9px}
.security-log-row:last-child{border:0}
.security-log-row>span:first-child{padding:2px 0;border-radius:6px;text-align:center;font-weight:750;
  text-transform:uppercase;letter-spacing:.4px;font-size:8px}
.security-log-row.ok>span:first-child{background:rgba(61,220,151,.1);color:#3ddc97}
.security-log-row.failed>span:first-child{background:rgba(255,100,127,.1);color:var(--rose)}
.security-log-row.revoked>span:first-child{background:rgba(255,183,77,.1);color:#ffb74d}
.security-log-row strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}
.security-log-ip,.security-log-row small,.security-log-row time{min-width:0;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;color:var(--muted-2)}
.security-log-ip{color:var(--muted);font-family:Consolas,"Cascadia Code",monospace}
.security-log-row time{text-align:right}
.security-log-empty{padding:18px;color:var(--muted-2);font-size:10px;text-align:center}
@media (max-width:760px){
  .security-panel-head{flex-wrap:wrap}
  .security-session{grid-template-columns:28px minmax(0,1fr);row-gap:9px}
  .security-session>button{grid-column:1/-1;width:100%}
  .security-log-row{grid-template-columns:58px minmax(0,1fr);row-gap:3px}
  .security-log-row .security-log-ip,.security-log-row small{grid-column:2}
  .security-log-row time{grid-column:2;text-align:left}
}
.subscription-hint{margin:-4px 0 12px;font-size:9px;line-height:1.5;opacity:.8}
#subscriptionBlock .field{margin:14px 0 10px;text-align:left}

/* Lot catalog sorting */
.lot-sortable{display:flex;align-items:center;gap:5px;cursor:pointer;user-select:none;transition:color .12s}
.lot-sortable:hover{color:var(--text)}
.lot-sortable:focus-visible{outline:2px solid var(--purple-2);outline-offset:-2px;border-radius:6px}
.lot-sortable.sorted{color:var(--purple-2)}
.lot-sort-mark{font-style:normal;font-size:11px;line-height:1}

/* Переключатель площадок на телефоне: сайдбар там скрыт, поэтому копия живёт в верхней панели */
.product-switch-mobile{display:none}
@media(max-width:820px){
  .product-switch-mobile{display:flex;margin:0;padding:3px;gap:3px;flex:0 0 auto}
/* На телефоне в ленте одни значки: имя кабинета уже стоит крупно в марке слева, и повторять его
     втрое дороже места. С надписями верхняя полоса просила 432 px при экране 375. */
/* На телефоне в ленте одни значки. Померено: с именами верхняя полоса просит 397 px при экране
     375, и урезать её больше нечего — имя кабинета уже стоит крупно в марке слева, а колокольчик
     с аватаркой не двигаются. */
  .product-switch-mobile{width:96px}
  .product-switch-mobile .product-switch-btn{padding:6px 4px;gap:5px}
  .product-switch-mobile .product-switch-btn span{display:none}
  .product-switch-mobile .ps-ico{width:16px;height:16px;border-radius:5px}
  .product-switch-mobile .ps-arrow{height:24px}
  .topbar .server-pill{display:none}
}

/* Каталог G2G. Свои классы, а не .lot-row: у той сетки шесть колонок FunPay и своя карточная
   раскладка на телефоне — переиспользовать её под другой набор столбцов значило бы драться с ней. */
.g2g-offer-summary{display:grid;grid-template-columns:auto 1fr;gap:14px 22px;align-items:center;padding:16px 18px}
.g2g-offer-account{display:flex;align-items:center;gap:10px}
.g2g-offer-account label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.5px}
.g2g-offer-figures{display:flex;flex-wrap:wrap;gap:22px;justify-content:flex-end}
.g2g-offer-figures div{display:flex;flex-direction:column;gap:2px}
.g2g-offer-figures small{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.5px}
.g2g-offer-figures strong{font-size:17px}
.g2g-offer-note{grid-column:1/-1;display:flex;gap:9px;margin:0;padding-top:12px;border-top:1px solid var(--border-soft);color:var(--muted);font-size:12px;line-height:1.5}
.g2g-offer-note>span:first-child{color:var(--amber);line-height:1.4}
.g2g-offer-note strong{color:var(--text)}
.g2g-offer-note code{padding:1px 5px;border-radius:5px;background:var(--bg-soft);font-size:11px}

.g2g-offer-table{display:grid;grid-template-columns:1fr;gap:10px}
.g2g-offer-row{display:grid;grid-template-columns:28px minmax(240px,2.4fr) 190px 130px 110px 78px;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:14px;background:#151a27;min-height:74px}
/* Ячейка с галочкой. Ширина 28px — ровно под сам квадрат: колонка шире оставляла бы
   пустоту, из-за которой название лота начинается не там, где привык глаз. */
.g2g-offer-pick{display:flex;align-items:center;justify-content:center}
.g2g-offer-pick input{width:15px;height:15px;accent-color:var(--purple);cursor:pointer}
/* Выбранная строка. Тем же способом, что и у лотов FunPay: подсветка рамкой, а не фоном —
   фон уже занят состоянием лота (снят, истёк), и второй смысл на нём не помещается. */
.g2g-offer-row.picked{border-color:var(--purple);background:rgba(117,101,244,.06)}
/* План перевода валюты: строка на пару валют. */
.g2g-convert-plan{display:grid;gap:8px;margin:12px 0}
.g2g-convert-line{display:grid;gap:3px;padding:10px 12px;border:1px solid var(--border-soft);border-radius:11px;background:#101520}
.g2g-convert-line strong{font-size:10px}
.g2g-convert-line span{color:var(--muted-2);font-size:8px}
.g2g-convert-line small{color:var(--muted);font-size:8px}

.g2g-offer-row.inactive{opacity:.62}
.g2g-offer-head{min-height:0;padding:8px 14px;border:0;background:transparent;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.5px}
.g2g-offer-sortable{display:flex;align-items:center;gap:5px;cursor:pointer;user-select:none;transition:color .12s}
.g2g-offer-sortable:hover{color:var(--text)}
.g2g-offer-sortable:focus-visible{outline:2px solid var(--purple-2);outline-offset:-2px;border-radius:6px}
.g2g-offer-sortable.sorted{color:var(--purple-2)}
.g2g-offer-cell{display:flex;flex-direction:column;gap:3px;min-width:0}
.g2g-offer-cell small{color:var(--muted);font-size:11px;line-height:1.35}
.g2g-offer-title strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.g2g-offer-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:2px}
.g2g-offer-tags span{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 7px;border-radius:6px;background:var(--bg-soft);color:var(--muted);font-size:10px;white-space:nowrap}
.g2g-offer-tags .g2g-id{font-family:ui-monospace,Menlo,Consolas,monospace;letter-spacing:-.2px}
.g2g-status i{width:6px;height:6px;border-radius:50%;background:currentColor}
.g2g-status.live{color:var(--teal);background:rgba(45,212,191,.12)}
.g2g-status.delisted{color:var(--muted)}
.g2g-offer-price strong{font-size:13px;font-variant-numeric:tabular-nums}
.g2g-offer-stock strong,.g2g-offer-sales strong{font-size:14px;font-variant-numeric:tabular-nums}
.g2g-mark{font-style:normal}
.g2g-mark.out{color:var(--rose)}
.g2g-mark.low{color:var(--amber)}
.g2g-mark.hold{color:var(--muted)}
.g2g-offer-actions{align-items:flex-end;display:flex;gap:4px;justify-content:flex-end}
.g2g-offer-actions .lot-action-button{flex:0 0 auto}
/* Редактор лота: поля в две колонки, действия площадки отдельной полосой над кнопками
   формы — «снять с продажи» это не «сохранить», и путать их нельзя. */
.g2g-offer-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}
.g2g-offer-modal .field{margin-top:14px}
.g2g-offer-form-grid .field{margin-top:0}
.g2g-offer-actions-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;padding-top:16px;border-top:1px solid var(--border-soft)}
.g2g-offer-loading{padding:26px;border:1px dashed var(--border);border-radius:14px;color:var(--muted);text-align:center;font-size:13px}
.g2g-offer-attrs{margin-top:14px}
/* Валюта ввода в редакторе лота FunPay (18.10) — тот же вид, что в «Отправить лот». */
.lot-price-currency{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:12px;font-size:12px;color:var(--muted)}
.lot-price-currency>span:first-child{font-weight:650;color:#bac3d6}

/* Форма каталожного оффера G2G (18.10) — разделами, как страница оффера площадки. */
.g2gf-modal{width:min(980px,calc(100vw - 32px))}
/* Высота тела — окно минус шапка, кнопки и поля окна: замер 18.10 на 900 px высоты — окно 792,
   шапка ~95, кнопки ~70; при 250 кнопки уходили за нижний край. */
.g2gf-body{display:flex;flex-direction:column;gap:14px;flex:1 1 auto;min-height:0;overflow:auto;padding-right:4px}
/* Окно — колонкой высотой в само окно: тело забирает остаток и крутится одно. Было max-height от
   высоты экрана, не связанное с потолком .modal (820 px), — на высоком экране окно крутилось
   вторым ползунком поверх первого (Larpbase 18.10, скрин). */
.g2gf-modal>form,.g2gr-modal>form{display:flex;flex-direction:column;max-height:min(88vh,820px)}
.g2gf-modal>form>.modal-heading,.g2gf-modal>form>.modal-actions,.g2gr-modal>form>.modal-heading,.g2gr-modal>form>.modal-actions{flex:none}
/* Поля в строках (цены в валютах, ступени, картинки, поиск страны) — тот же вид, что у .field:
   без этого они рисовались браузерными серыми коробками с тёмным текстом. */
.g2gf-line input,.g2gf-line select,.g2gf-tier input,.g2gf-tier select,.g2gf-image-row input,.g2gf-section>input[type=search]{width:100%;min-width:0;min-height:40px;padding:8px 10px;border:1px solid #30384f;border-radius:10px;background:#171c29;color:var(--text)}
.g2gf-tier input:disabled,.g2gf-section .field input:disabled,.g2gf-section .field select:disabled{opacity:.55}
.g2gf-section>input[type=search]{margin-top:4px}
/* Выпадашки кабинета (.picker) держат min-width 180 px и в узкой колонке строки наезжали на
   соседнее поле, закрывая его текст (замер 18.10: колонка 120, выпадашка 180). */
.g2gf-line .picker,.g2gf-tier .picker{min-width:0;width:100%}
.g2gf-section{border:1px solid var(--border-soft);border-radius:14px;padding:14px 16px;background:rgba(255,255,255,.015)}
.g2gf-section>header{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px;margin-bottom:10px}
.g2gf-section>header h3{margin:0;font-size:14px}
.g2gf-section>header small{color:var(--muted-2);font-size:11.5px}
.g2gf-section .field{margin-top:10px}
.g2gf-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.g2gf-grid .field{margin-top:0}
.g2gf-sub{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:14px 0 8px}
.g2gf-sub strong{font-size:12.5px}
.g2gf-sub small{color:var(--muted-2);font-size:11.5px}
.g2gf-note{color:var(--muted);font-size:12.5px;line-height:1.45}
.g2gf-banner{padding:10px 12px;border-radius:12px;font-size:12.5px;line-height:1.45}
.g2gf-banner.warn{border:1px solid rgba(240,180,80,.45);background:rgba(240,180,80,.08);color:var(--amber)}
.g2gf-status{display:flex;align-items:center;gap:12px;font-size:12.5px}
.g2gf-status a{color:var(--teal)}
.g2gf-line{display:grid;grid-template-columns:120px minmax(0,1fr) 34px;gap:8px;margin-bottom:8px}
.g2gf-tiers{display:flex;flex-direction:column;gap:6px;margin-bottom:8px;overflow-x:auto}
.g2gf-tier{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(90px,1fr);gap:8px;align-items:center}
.g2gf-tier>button,.g2gf-tier>span:last-child{width:34px}
.g2gf-tier.head span{color:var(--muted-2);font-size:11px;text-transform:uppercase;letter-spacing:.5px}
.g2gf-seg{display:flex;flex-wrap:wrap;gap:6px 16px;margin:8px 0;font-size:13px}
.g2gf-seg label{display:flex;align-items:center;gap:6px;cursor:pointer}
.g2gf-checks{display:flex;flex-wrap:wrap;gap:6px 18px}
.g2gf-chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 8px}
.g2gf-chip{border:1px solid var(--border);border-radius:999px;background:transparent;color:var(--text);padding:3px 10px;font-size:12px;cursor:pointer}
.g2gf-countries{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:4px 12px;max-height:180px;overflow:auto;margin-top:8px}
.g2gf-images{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.g2gf-image-row{display:grid;grid-template-columns:56px 160px minmax(0,1fr) 34px;gap:8px;align-items:center}
.g2gf-thumb{width:56px;height:40px;border-radius:8px;border:1px solid var(--border-soft);display:grid;place-items:center;overflow:hidden;color:var(--muted-2)}
.g2gf-thumb img{width:100%;height:100%;object-fit:cover}
.g2gf-shown{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px}
.g2gf-shown small{color:var(--muted-2);font-size:11.5px;width:100%}
.g2gf-shown img{width:96px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--border-soft)}
.g2gf-narrow{max-width:220px}
.g2gf-broken{color:var(--amber);font-size:16px}
.g2gf-shown .g2gf-broken{display:grid;place-items:center;width:96px;height:64px;border:1px dashed var(--border);border-radius:8px}
.g2gf-actions{flex-wrap:wrap}
.g2gc-modal{width:min(620px,calc(100vw - 32px))}
/* Возврат G2G (18.10). */
.g2gr-modal{width:min(620px,calc(100vw - 32px))}
.g2gr-body{display:flex;flex-direction:column;gap:12px;flex:1 1 auto;min-height:0;overflow:auto}
.g2gr-options{display:flex;flex-direction:column;gap:8px;font-size:13px}
.g2gr-options label{display:flex;align-items:center;gap:8px;cursor:pointer}
.g2gr-line{display:grid;grid-template-columns:minmax(0,1fr) 90px;gap:10px;align-items:center;margin-bottom:6px}
.g2gr-line input[type=number]{min-height:36px;padding:6px 8px;border:1px solid #30384f;border-radius:10px;background:#171c29;color:var(--text)}
.g2gr-sum{display:flex;justify-content:space-between;gap:10px;font-size:13px;padding:4px 0}
.g2gr-sum span{color:var(--muted)}
.g2gr-sum.total{border-top:1px solid var(--border-soft);margin-top:4px;padding-top:8px}
.g2gr-sum.total b{color:var(--teal);font-size:15px}
.g2gc-body .field{margin-top:12px}
.g2gc-games{display:flex;flex-wrap:wrap;gap:6px;max-height:260px;overflow:auto;margin-top:10px}
.g2gc-game{border:1px solid var(--border);border-radius:10px;background:transparent;color:var(--text);padding:6px 10px;font-size:12.5px;cursor:pointer;display:flex;align-items:center;gap:6px}
.g2gc-game small{color:var(--teal);font-size:10.5px}
.g2gc-game.picked{border-color:var(--teal);background:rgba(80,200,180,.1)}
@media(max-width:700px){
  /* Шесть кнопок столбиком уводили «Сохранить» ниже окна (замер 18.10, 375×812: кнопка на 797–839
     при нижнем крае окна 787). Сеткой в две колонки, «Сохранить» — первой во всю ширину. */
  .g2gf-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}
  .g2gf-actions .button{min-height:36px;padding:7px 8px;font-size:12px;justify-content:center}
  .g2gf-actions #g2gFormHint{grid-column:1/-1}
  .g2gf-actions #g2gFormSave{grid-column:1/-1;order:-1}
  .g2gf-modal>form,.g2gr-modal>form{max-height:94vh}
  .g2gf-image-row{grid-template-columns:48px minmax(0,1fr) 34px;grid-auto-flow:dense}
  .g2gf-image-row input[data-f$=".url"]{grid-column:1/-1}
  .g2gf-line{grid-template-columns:96px minmax(0,1fr) 34px}
}

@media(max-width:1180px){.g2g-offer-row{grid-template-columns:minmax(200px,2fr) 165px 110px 90px 78px}}
@media(max-width:820px){
  .g2g-offer-summary{grid-template-columns:1fr}
  .g2g-offer-figures{justify-content:flex-start;gap:16px}
  .g2g-offer-row{grid-template-columns:minmax(0,1fr) 78px;grid-template-areas:"title copy" "price copy" "stock copy" "sales copy";row-gap:6px}
  /* Строка стала карточкой, и шапка таблицы теряет смысл как шапка — но сортировка живёт именно
     в ней. Поэтому на телефоне шапка превращается в полосу кнопок сортировки: иначе сортировать
     было бы нечем вообще, а возвращать ради этого выпадающий список я не хочу. */
  .g2g-offer-head{display:flex;flex-wrap:wrap;gap:6px;padding:2px 2px 6px}
  .g2g-offer-head>div:last-child{display:none}
  /* Пальцем: 28px минимум. Полоса кнопок сортировки — то, по чему на телефоне попадают чаще всего. */
  .g2g-offer-head .g2g-offer-sortable{min-height:28px;display:flex;align-items:center;gap:5px;padding:5px 10px;border:1px solid var(--border);border-radius:999px;background:var(--bg-soft)}
  .g2g-offer-title{grid-area:title}
  /* На телефоне строка стала карточкой, места по высоте хватает — а обрезанное на первом слове
     название у офферов вида «10M,20M,30M╭Koen COINS╮…» не отличить одно от другого. */
  .g2g-offer-title strong{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .g2g-offer-price{grid-area:price}
  .g2g-offer-stock{grid-area:stock}
  .g2g-offer-sales{grid-area:sales}
  .g2g-offer-actions{grid-area:copy;align-self:start}
  /* На узком экране столбцы уехали в строки — без подписи «14 000» непонятно, остаток это или
     продажи. Подписи ставит CSS, чтобы разметка строки оставалась одна на оба вида. */
  .g2g-offer-stock::before{content:'Остаток';color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.5px}
  .g2g-offer-sales::before{content:'Продажи';color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.5px}
}

/* Панель бустинга: обход старого кабинета и автопродление */
.g2g-boost-bar{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;padding-top:12px;border-top:1px solid var(--border-soft)}
.g2g-boost-text{display:flex;flex-direction:column;gap:3px;min-width:240px;flex:1}
.g2g-boost-text strong{font-size:13px}
.g2g-boost-text small{color:var(--muted);font-size:12px;line-height:1.5}
.g2g-boost-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.g2g-boost-switch{display:flex;align-items:center;gap:7px;cursor:pointer;font-size:12px;white-space:nowrap}
.g2g-status.expired{color:var(--rose);background:rgba(244,63,94,.12)}
.g2g-offer-tags .g2g-tag.warn{color:var(--amber);background:rgba(245,158,11,.12)}

/* Всплывашка о сообщении: значок площадки вместо конверта — символ ✉ рисовался шрифтом по-разному
   и выглядел то битым квадратом, то цветной эмодзи, не попадая в остальной интерфейс. */
.message-toast{display:flex;gap:11px;align-items:flex-start;cursor:pointer}
.toast-mark{flex:none;width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:12px;font-weight:800;letter-spacing:0}
.toast-mark.funpay{background:rgba(124,92,255,.18);color:#b9a6ff}
.toast-mark.g2g{background:rgba(240,132,42,.18);color:#ffb877}
.message-toast .toast-body{min-width:0}
.message-toast .toast-body strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.message-toast .toast-body em{display:block;margin-top:1px;font-style:normal;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}
.message-toast .toast-body small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* Нижняя панель подстраивается под число видимых кнопок. Было жёстко пять колонок: у FunPay
   видимых семь — панель разъезжалась на две строки, у G2G четыре — колонка пустовала. */
.mobile-nav{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:1fr}

/* ── Заказы G2G ────────────────────────────────────────────────────────────────────────────────
   Отдельная разметка, а не «строки лотов другого цвета»: у заказа другой вес. Непринятый заказ —
   это деньги, которые покупатель может забрать обратно, поэтому он и подсвечен, и вынесен полосой
   поверх списка, и держит счётчик в навигации. */
.nav-badge.alarm{color:#0b0d17;background:var(--amber);font-weight:800}

.g2g-order-alarm{display:flex;align-items:center;gap:14px;margin-bottom:16px;padding:14px 16px;border:1px solid rgba(255,189,69,.4);border-radius:14px;background:linear-gradient(145deg,rgba(255,189,69,.14),rgba(255,189,69,.05))}
.g2g-order-alarm-icon{display:grid;place-items:center;flex:0 0 auto;width:34px;height:34px;border-radius:11px;background:rgba(255,189,69,.18);color:var(--amber);font-size:19px;font-weight:800}
.g2g-order-alarm div{flex:1;min-width:0}
.g2g-order-alarm strong{display:block;font-size:14px}
.g2g-order-alarm small{display:block;margin-top:3px;color:var(--muted);font-size:12px;line-height:1.45}

.g2g-order-tabs{display:flex;flex-wrap:wrap;gap:7px;justify-content:flex-end}
.g2g-order-tab{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 13px;border:1px solid var(--border);border-radius:999px;background:#151a28;color:var(--muted);font-size:12px;cursor:pointer;transition:.14s}
.g2g-order-tab:hover{color:var(--text);border-color:#44506f}
.g2g-order-tab.active{color:var(--text);border-color:var(--purple-2);background:rgba(240,132,42,.12)}
.g2g-order-tab b{min-width:18px;padding:1px 6px;border-radius:7px;background:#1c2231;color:#aab5d0;font-size:11px;font-variant-numeric:tabular-nums}
.g2g-order-tab.alarm b{background:var(--amber);color:#0b0d17}

.g2g-order-table{display:grid;grid-template-columns:1fr;gap:10px}
.g2g-order-row{display:grid;grid-template-columns:minmax(240px,2.6fr) 170px 130px 150px 44px;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:14px;background:#151a27;min-height:72px;cursor:pointer;transition:.14s}
.g2g-order-row:hover{transform:translateY(-1px);border-color:#44506f}
.g2g-order-row.pending{border-color:rgba(255,189,69,.45);background:linear-gradient(145deg,#1b1c22,#151a27)}
.g2g-order-main strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.g2g-order-state{display:inline-flex;align-items:center;gap:5px}
.g2g-order-state i{width:6px;height:6px;border-radius:50%;background:currentColor}
.g2g-order-state.alarm{color:var(--amber);background:rgba(255,189,69,.12)}
.g2g-order-state.work{color:var(--cyan);background:rgba(54,202,239,.12)}
.g2g-order-state.wait{color:var(--purple-2)}
.g2g-order-state.done{color:var(--teal);background:rgba(43,212,184,.1)}
/* Доставлено: работа сделана, ход у покупателя. Синий — не тревога и не «завершено». */
.g2g-order-state.sent{color:#6ea8ff;background:rgba(110,168,255,.12)}
.g2g-order-state.dead{color:var(--muted)}
.g2g-offer-tags .g2g-tag.warn{color:var(--amber);background:rgba(255,189,69,.12)}
.g2g-order-price strong,.g2g-order-date strong{font-size:13px;font-variant-numeric:tabular-nums}.g2g-order-earned{width:fit-content;display:inline-flex;align-items:baseline;gap:5px;margin-top:1px;font-style:normal}.g2g-order-earned b{color:var(--teal);font-size:12px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}.g2g-order-earned i{color:var(--muted);font-size:11px;font-style:normal;line-height:1.35;white-space:nowrap}
.g2g-order-go{align-items:flex-end;color:var(--muted)}

/* Карточка заказа */
.g2g-order-modal{padding:26px}
.g2g-order-body{display:flex;flex-direction:column;gap:14px;max-height:56vh;overflow:auto;padding-right:4px}
.g2g-order-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;padding:14px;border:1px solid var(--border-soft);border-radius:12px;background:#131824}
.g2g-order-facts div{display:flex;flex-direction:column;gap:3px;min-width:0}
.g2g-order-facts small{color:var(--muted-2);font-size:10px;text-transform:uppercase;letter-spacing:.5px}
.g2g-order-facts strong{font-size:13px;word-break:break-word}
.g2g-order-note{padding:14px;border:1px solid rgba(147,135,255,.32);border-radius:12px;background:rgba(147,135,255,.07)}
.g2g-order-note small{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.5px}
.g2g-order-note p{margin:6px 0 0;line-height:1.55;font-size:13px;white-space:pre-wrap}
.g2g-order-steps{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.g2g-order-warn{margin:0;color:var(--muted);font-size:12px;line-height:1.5}
.g2g-order-deliver{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end;padding:14px;border:1px solid var(--border-soft);border-radius:12px;background:#131824}
.g2g-order-deliver small{grid-column:1/-1;color:var(--muted-2);font-size:11px;line-height:1.45}
.g2g-order-proof{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--border-soft);border-radius:12px;background:#131824}
/* Пруфа нет — это про деньги, а не про порядок: без него площадка оплату не проводит и может
   отменить заказ. Оправа и значок красные намеренно, ровно как у остальных предупреждений о
   потере денег: серая рамка среди серых рамок читается как «к сведению». */
.g2g-order-proof-missing{border-color:rgba(255,100,127,.42);background:rgba(255,100,127,.07)}
.g2g-order-proof-missing>span{color:var(--danger,#ff647f);font-size:17px}
.g2g-order-proof-missing strong{color:#ffb3c1}
/* Что уже приложено — списком под блоком. Метрики списаны у соседа `.chat-group-row`, чтобы
   строка читалась тем же ритмом, что остальные перечисления в кабинете. */
.g2g-proof-list{display:flex;flex-direction:column;gap:3px;margin-top:6px}
.g2g-proof-row{display:flex;align-items:center;gap:8px;min-height:30px;padding:4px 10px;border:1px solid #232b3d;border-radius:9px;background:#131824}
.g2g-proof-row b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#b8c1d5;font-size:10px;font-weight:700}
.g2g-proof-row i{margin-left:auto;color:var(--muted-2);font-size:9px;font-style:normal;white-space:nowrap}
/* Черновик пруфов: что выбрано, но ещё НЕ ушло на площадку. Оправа намеренно не тревожная —
   тревожиться тут не о чем, это просто корзина перед отправкой. */
.g2g-proof-draft{margin-top:8px;padding:11px;border:1px dashed #37415c;border-radius:12px;background:#12172380}
.g2g-proof-draft-list{display:flex;flex-wrap:wrap;gap:8px}
.g2g-proof-draft-item{position:relative;width:88px;margin:0}
.g2g-proof-draft-item img{width:88px;height:66px;object-fit:cover;border:1px solid #293248;border-radius:9px;display:block}
.g2g-proof-kind{width:88px;height:66px;display:grid;place-items:center;border:1px solid #293248;border-radius:9px;background:#161d2c;color:var(--purple-2);font-size:18px}
.g2g-proof-draft-item figcaption{margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted-2);font-size:8px}
.g2g-proof-drop{position:absolute;top:-6px;right:-6px;width:20px;height:20px;display:grid;place-items:center;border:1px solid rgba(255,100,127,.5);border-radius:50%;background:#1a1020;color:#ff647f;font-size:12px;line-height:1;cursor:pointer}
.g2g-proof-drop:hover{background:rgba(255,100,127,.18);color:#fff}
.g2g-proof-draft-actions{display:flex;align-items:center;gap:9px;margin-top:11px}
.g2g-proof-draft-actions strong{color:#b8c1d5;font-size:10.5px}
.g2g-proof-draft-actions small{margin-right:auto;color:var(--muted-2);font-size:9px}
/* Пруфов нет — это не украшение карточки, а незакрытые деньги: рамка янтарная. */
.g2g-order-proof.warn{border-color:rgba(255,189,69,.4);background:rgba(255,189,69,.06)}
/* Пруфы, уже висящие на заказе: маленькие превью, клик открывает файл целиком. */
.g2g-proof-gallery{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.g2g-proof-file{display:block;width:104px;height:78px;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#0f1420}
.g2g-proof-file img{width:100%;height:100%;object-fit:cover;display:block}
.g2g-proof-file:hover{border-color:var(--purple-2)}
.g2g-order-proof>span{color:var(--amber);font-size:18px}
.g2g-order-proof div{flex:1;min-width:0}
.g2g-order-proof strong{display:block;font-size:13px}
.g2g-order-proof small{display:block;margin-top:3px;color:var(--muted);font-size:12px;line-height:1.45}
.g2g-order-error{color:var(--rose);font-size:13px;line-height:1.55}

@media(max-width:820px){
  .g2g-order-tabs{justify-content:flex-start}
  /* Строка становится карточкой: три колонки на телефоне не живут, а стрелка «открыть» лишняя —
     нажимается вся строка целиком. */
  .g2g-order-row{grid-template-columns:minmax(0,1fr);row-gap:8px}
  .g2g-order-go{display:none}
  .g2g-order-main strong{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .g2g-order-price,.g2g-order-date{flex-direction:row;align-items:baseline;gap:7px}
  .g2g-order-price small,.g2g-order-date small{color:var(--muted-2)}
  .g2g-order-steps{grid-template-columns:1fr}
  .g2g-order-deliver{grid-template-columns:1fr}
}

/* Пять вкладок в перенос занимали на телефоне 128 px — треть первого экрана до первого заказа.
   Одна строка с прокруткой: список статусов всё равно читается слева направо. */
@media(max-width:820px){
  .g2g-order-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px;margin:0 -2px}
  .g2g-order-tabs::-webkit-scrollbar{display:none}
  .g2g-order-tab{flex:0 0 auto}
}

/* Знак сортировки у ненажатого столбца — бледный: подсказка, что заголовок кликается, а не шум. */
.g2g-offer-sortable .lot-sort-mark{opacity:.32;font-style:normal;font-size:10px}
.g2g-offer-sortable.sorted .lot-sort-mark{opacity:1}
.g2g-offer-sortable:hover .lot-sort-mark{opacity:.7}

/* ── Шапка разделов G2G ────────────────────────────────────────────────────────────────────────
   Было: пять цифр строкой внутри одной панели, справа полтора экрана пустоты, а под ними впритык
   полоса автопродления. Стало: плитки как у метрик на обзоре — одинаковые, во всю ширину, — и
   автопродление отдельной панелью со своим переключателем. */
/* Две кнопки обновления не должны складываться в столбик: группа действий в шапке ужимается
   заголовком, и 167+168 пикселей в неё не влезают. Правило по id — чтобы не трогать
   .heading-actions на остальных страницах, где кнопка одна и сжатие безобидно. */
#page-g2goffers .heading-actions{flex:0 0 auto;flex-wrap:nowrap}
#page-g2goffers .page-heading>div:first-child{min-width:0}
.g2g-figures{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:14px}
.g2g-fig{display:flex;flex-direction:column;gap:6px;padding:14px 16px;border:1px solid var(--border);border-radius:14px;background:linear-gradient(145deg,#161b29,#131824)}
.g2g-fig small{color:var(--muted-2);font-size:10px;font-weight:800;letter-spacing:1.1px;text-transform:uppercase}
.g2g-fig strong{font-size:24px;letter-spacing:-.6px;font-variant-numeric:tabular-nums}
.g2g-fig.ok strong{color:var(--teal)}
.g2g-fig.quiet strong{font-size:15px;color:var(--muted);letter-spacing:0}
/* Вторая строка внутри плашки: когда её половину снимка читали. Метрики списаны с той же
   .g2g-fig small выше — размер, насыщенность и трекинг те же, отличается только регистр:
   заголовок плашки капсом, а это обычная строка, и капсом она читалась бы как второй заголовок. */
/* Селектор с ДВУМЯ частями намеренно: .g2g-fig small выше тоже одноклассовое правило с
   элементом, и по весу оно перебивало одиночный .g2g-fig-note — подпись вставала капсом,
   молча, без единой ошибки. Померено в браузере по вычисленному стилю. */
.g2g-fig small.g2g-fig-note{color:var(--muted);font-size:10px;font-weight:600;letter-spacing:.2px;text-transform:none}
/* Истёкшие — это не «снято», а «чинится одной кнопкой», поэтому янтарём: цвет тот же, что у
   .g2g-fig.alarm, чтобы одно и то же состояние выглядело одинаково по всему разделу. */
.g2g-fig small#g2gOfferExpired{color:var(--amber)}
/* Непринятый заказ — единственная цифра в CRM, которая означает уходящие деньги. Когда она не
   ноль, плитка перестаёт быть просто плиткой. */
.g2g-fig.alarm{border-color:rgba(255,189,69,.5);background:linear-gradient(145deg,rgba(255,189,69,.14),rgba(255,189,69,.04))}
.g2g-fig.alarm strong{color:var(--amber)}
/* Строка «обход не дочитал такие-то игры». Метрики списаны с соседней плашки-предупреждения,
   а не выдуманы: тот же янтарь, та же рамка, тот же радиус, что у .g2g-fig.alarm. */
.g2g-missed{margin:-6px 0 14px;padding:10px 14px;border:1px solid rgba(255,189,69,.5);border-radius:14px;background:linear-gradient(145deg,rgba(255,189,69,.14),rgba(255,189,69,.04));color:var(--amber);font-size:12px;line-height:1.45}

.g2g-offer-account{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.g2g-offer-account label{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.5px;text-transform:uppercase}

.g2g-auto{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;padding:16px 18px;margin-bottom:14px}
.g2g-auto-text{display:flex;flex-direction:column;gap:4px;min-width:260px;flex:1}
.g2g-auto-text strong{font-size:14px}
.g2g-auto-text small{color:var(--muted);font-size:12px;line-height:1.5}
/* Переключатель того же вида, что и в настройках: галочка в списке цифр читается как фильтр. */
.g2g-switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;user-select:none;font-size:13px}
.g2g-switch input{display:none}
.g2g-switch i{position:relative;width:43px;height:24px;flex:0 0 auto;border-radius:99px;background:#30374a;transition:.2s}
.g2g-switch i:after{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;border-radius:50%;background:#a9b1c3;transition:.2s}
.g2g-switch input:checked+i{background:var(--purple)}
.g2g-switch input:checked+i:after{transform:translateX(19px);background:#fff}
.g2g-switch span{color:var(--muted)}
.g2g-switch input:checked~span{color:var(--text)}

/* Поиск и вкладки заказов: поиск слева тянется, вкладки прижаты вправо и переносятся сами. */
.g2g-order-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.g2g-order-toolbar .search{flex:1 1 260px;min-width:220px}

@media(max-width:820px){
  .g2g-figures{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .g2g-fig{padding:11px 12px}
  .g2g-fig strong{font-size:19px}
  .g2g-auto{padding:14px}
  .g2g-order-toolbar{gap:9px}
}

/* Вкладки состояний вынесены из полосы фильтров отдельной строкой: рядом с тремя селектами они
   переносились как попало, а это главный переключатель раздела. */
.g2g-order-tabs{margin-bottom:12px}
.g2g-order-toolbar .select{min-width:170px}
@media(max-width:820px){ .g2g-order-toolbar .select{min-width:0;flex:1 1 45%} }

/* Доступ сотрудника в кабинет. Стоит в его досье, потому что это ответ на вопрос «что Пете
   можно» — а спрашивают его, глядя на Петю, а не на список настроек. */
.staff-access{margin:18px 0;padding:16px;border:1px solid var(--border,#293149);border-radius:14px;
  display:flex;flex-direction:column;gap:14px}
.staff-access-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.staff-access-head h3{margin:2px 0 6px}
.staff-access-hint{margin:0;font-size:12px;color:var(--muted,#8f9bb8);line-height:1.5}
.staff-access-game-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.staff-access-game{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;
  border:1px solid var(--border,#293149);font-size:12px;cursor:pointer;user-select:none}
.staff-access-game.on{border-color:var(--accent,#8b7bff);color:var(--text,#f6f7ff)}
.staff-access-game input{accent-color:var(--accent,#8b7bff)}
.staff-access-rights{display:flex;flex-direction:column;gap:8px}
.staff-access-toggle{display:inline-flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}
.staff-access-term{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.staff-access-until{font-size:12px;color:var(--muted,#8f9bb8)}
.staff-access-actions{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}

/* Сообщение, которое ещё не ушло на площадку. Приглушено и с бегущей меткой времени: видно,
   что оно принято, но ещё в пути. Без этого написанное исчезало из окна до ответа сервера, и
   человек жал «отправить» второй раз. */
.chat-message.pending{opacity:.55}
.chat-message.pending .chat-message-bubble{border-style:dashed}
.chat-message.pending time{font-style:italic}

/* Раздел не выдан этому человеку. Отдельный класс, а не .hidden: тот уже используют
   переключение площадок и десяток вкладок, и складывать в него ещё и права означало бы,
   что смена площадки открывает скрытое правами. */
.access-hidden { display: none !important; }

/* ── Окно выдачи ─────────────────────────────────────────────────────────────────────────────
   Правило всей этой вёрстки одно: НИЧТО не должно расширяться от содержимого. Названия игр
   приходят с площадки и бывают какими угодно — «Rust» и «Path of Exile 2: Settlers of Kalguur».
   Поэтому у каждой ячейки грида стоит min-width:0 (без него grid-элемент не даёт себя сжать и
   выпихивает соседей), у длинных строк — overflow-wrap, а у того, что обязано остаться в одну
   строку, — честное многоточие. */

.staff-grant-modal{width:min(940px,calc(100% - 28px))}
.grant-body{display:flex;flex-direction:column;gap:18px;min-width:0}

/* Уровень доступа. Три равные колонки одинаковой высоты — чтобы переключение не дёргало окно. */
.grant-levels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.grant-level{min-width:0;display:flex;flex-direction:column;gap:6px;padding:14px;border:1px solid var(--border);border-radius:13px;background:#151a28;color:#c7cee3;text-align:left;cursor:pointer;transition:.16s}
.grant-level:hover{border-color:#44506f;background:#1a2130}
.grant-level[aria-checked=true]{border-color:#7668e8;background:linear-gradient(145deg,rgba(117,101,244,.2),rgba(117,101,244,.06));color:#fff;box-shadow:inset 0 0 0 1px rgba(133,118,255,.28)}
.grant-level b{font-size:14px;line-height:1.2}
.grant-level small{font-size:11px;line-height:1.45;color:var(--muted-2)}
.grant-level[aria-checked=true] small{color:#a9b2cc}
.grant-note{margin:0;font-size:12px;line-height:1.55;color:var(--muted)}
.grant-note.warn{color:var(--amber)}

/* Разделы. auto-fit + minmax даёт три колонки на широком экране, одну на телефоне, и ни одной
   полуразрушенной посередине. */
.grant-sections{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:12px}
.grant-games{display:flex;flex-direction:column;gap:11px;margin:16px 0 0;padding:15px;border:1px solid var(--border-soft);border-radius:14px;background:#131824}
.grant-games .eyebrow{margin:0}
.grant-games .grant-note{margin:0}
.grant-games.hidden{display:none}
/* НАПРАВЛЕНИЯ — части игры. Живут внутри блока игр в окне выдачи и отдельным окном в «Лотах».
   Правила дописаны СЮДА, к соседям по смыслу: в этом файле правило .grant-games встречается
   дважды, и «рядом с похожим именем» тут не значит «рядом по смыслу». */
.grant-directions{display:flex;flex-direction:column;gap:10px;margin:2px 0 0;padding-top:11px;border-top:1px solid var(--border-soft)}
.grant-directions.hidden{display:none}
.grant-direction{display:flex;flex-direction:column;gap:7px}
.grant-direction-rows{display:flex;flex-direction:column;gap:5px;padding:8px 10px;margin-left:38px;border-left:2px solid var(--border-soft);border-radius:0 8px 8px 0;background:#0f1420}
.grant-direction-rows .check-label small{color:var(--muted-2);font-size:11px}
.direction-list{display:flex;flex-direction:column;gap:8px;margin:12px 0}
.direction-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--border-soft);border-radius:12px;background:#131824}
.direction-row b{display:block;font-size:13px}
.direction-row small{display:block;margin-top:2px;font-size:11px;color:var(--muted-2)}
.direction-row-actions{display:flex;gap:6px;flex-shrink:0}
.direction-create{display:flex;align-items:flex-end;gap:8px;padding-top:12px;border-top:1px solid var(--border-soft)}
.direction-create .field{flex:1;min-width:0}
.direction-create.hidden{display:none}
.chat-direction-handover{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 8px;padding:9px 12px;border:1px solid var(--border-soft);border-radius:12px;background:#131824;font-size:12px;line-height:1.5;color:var(--muted)}
.chat-direction-handover b{color:var(--text)}
.chat-direction-handover button{flex-shrink:0}
.lot-direction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--border-soft);background:#141b2a;color:var(--muted);font-size:11px;white-space:nowrap}
.grant-section{min-width:0;display:flex;flex-direction:column;gap:11px;padding:15px;border:1px solid var(--border-soft);border-radius:14px;background:#131824;transition:.16s}
.grant-section.on{border-color:#3d4763;background:#161c2b}
.grant-section-head{display:flex;align-items:center;gap:10px;min-width:0}
.grant-section-head strong{flex:1;min-width:0;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grant-section-icon{display:grid;place-items:center;width:30px;height:30px;flex:0 0 auto;border-radius:9px;font-size:15px;color:var(--purple-2);background:rgba(117,101,244,.12)}
.grant-section-body{display:flex;flex-direction:column;gap:10px}
.grant-section:not(.on) .grant-section-body{display:none}

/* Переключатель. Своя разметка вместо голого чекбокса: нужен один и тот же вид в разделах, в
   поштучной выдаче и в уровнях. Высота фиксированная — строки не прыгают. */
.grant-switch{display:flex;align-items:flex-start;gap:9px;min-height:22px;font-size:12.5px;line-height:1.4;color:#c3cadf;cursor:pointer}
.grant-switch input{position:absolute;opacity:0;width:0;height:0}
.grant-switch>i{position:relative;flex:0 0 auto;width:34px;height:19px;margin-top:1px;border-radius:999px;background:#252c40;border:1px solid var(--border);transition:.16s}
.grant-switch>i:after{content:"";position:absolute;top:2px;left:2px;width:13px;height:13px;border-radius:50%;background:#7d879f;transition:.16s}
.grant-switch input:checked+i{background:rgba(117,101,244,.35);border-color:#7668e8}
.grant-switch input:checked+i:after{transform:translateX(15px);background:#b9b0ff}
.grant-switch input:focus-visible+i{outline:2px solid var(--purple-2);outline-offset:2px}
.grant-switch>span{min-width:0;display:flex;flex-direction:column;gap:2px}
.grant-switch>span b{font-weight:600;overflow-wrap:anywhere}
.grant-switch>span small{font-size:11px;color:var(--muted-2);line-height:1.45}

/* Игры. Чипы переносятся и никогда не вылезают за карточку. */
.grant-games{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.grant-game{max-width:100%;display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--border);border-radius:999px;background:#171d2b;color:#aab4cd;font-size:11.5px;cursor:pointer;transition:.14s;overflow-wrap:anywhere}
.grant-game:hover{border-color:#44506f;color:#dfe4f4}
.grant-game.on{border-color:#7668e8;background:rgba(117,101,244,.18);color:#fff}
.grant-game input{position:absolute;opacity:0;width:0;height:0}
.grant-games-empty{font-size:11.5px;color:var(--muted-2)}
.grant-games.locked{opacity:.4;pointer-events:none}

/* Лоты: у каждой игры свой уровень. Строка «игра + переключатель» — грид с фиксированной правой
   колонкой, поэтому переключатели стоят ровным столбцом при любой длине названия. */
.grant-lot-rows{display:flex;flex-direction:column;gap:6px}
.grant-lot-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px}
.grant-lot-row>span{min-width:0;font-size:12px;color:#c3cadf;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grant-level-switch{display:inline-flex;flex:0 0 auto;padding:2px;border:1px solid var(--border);border-radius:9px;background:#141926}
.grant-level-switch button{min-width:56px;height:24px;border:0;border-radius:7px;background:transparent;color:#8d97b2;font-size:11px;cursor:pointer;transition:.14s}
.grant-level-switch button:hover{color:#dfe4f4}
.grant-level-switch button.on{background:#2a3149;color:#fff}
.grant-level-switch button.on[data-lot-level=edit]{background:rgba(117,101,244,.3);color:#fff}

.grant-term{display:grid;grid-template-columns:minmax(200px,260px) minmax(0,1fr);align-items:center;gap:14px}
.grant-summary{flex:1;min-width:0;font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ── Массовая выдача в списке ─────────────────────────────────────────────────────────────── */
.staff-bulk-actions{display:flex;align-items:center;gap:10px}

/* ── Выдачи и журнал в досье ──────────────────────────────────────────────────────────────── */
.staff-pins,.staff-log{display:flex;flex-direction:column;gap:11px;margin-top:20px;padding-top:19px;border-top:1px solid var(--border-soft)}
/* Блоки досье идут ОДНИМ ритмом. У «доступа» и «поштучных выдач» своих правил не было вовсе:
   отступы им доставались от случайных вложенных элементов, поэтому один блок прилипал к
   соседнему, другой отходил, а разделители стояли только у части. Метрики списаны у
   .staff-log — единственного блока, у которого они были заданы осознанно. */
.staff-access,.staff-pins{display:flex;flex-direction:column;gap:11px;margin-top:20px;padding-top:19px;border-top:1px solid var(--border-soft)}
/* Первый блок после метрик разделителем не отделяется — над ним и так заголовок окна, — но
   отступ держит общий: иначе один шов в окне уже остальных. */
.staff-profile-metrics+.staff-access{margin-top:20px;padding-top:0;border-top:0}
/* Лента выданных чатов — такой же блок со своим заголовком, значит и ритм у неё общий.
   Раньше она въезжала в журнал без единого пикселя зазора. */
.staff-profile-timeline{margin-top:20px;padding-top:19px;border-top:1px solid var(--border-soft)}
.staff-pins-head,.staff-log-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.staff-pins-head h3,.staff-log-head h3{margin:2px 0 0;font-size:16px}
.staff-pin-list{display:flex;flex-direction:column;gap:7px}
.staff-pin{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 13px;border:1px solid var(--border-soft);border-radius:11px;background:#141926}
.staff-pin-main{min-width:0;display:flex;flex-direction:column;gap:3px}
.staff-pin-main strong{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.staff-pin-main small{font-size:11px;color:var(--muted-2)}
.staff-pin-empty,.staff-log-empty{font-size:12px;color:var(--muted-2)}

.staff-log-filter{display:flex;flex-wrap:wrap;gap:6px}
.staff-log-filter button{padding:5px 11px;border:1px solid var(--border);border-radius:999px;background:#171d2b;color:#9aa5c0;font-size:11.5px;cursor:pointer;transition:.14s}
.staff-log-filter button:hover{color:#dfe4f4;border-color:#44506f}
.staff-log-filter button.on{border-color:#7668e8;background:rgba(117,101,244,.18);color:#fff}
.staff-log-list{display:flex;flex-direction:column;max-height:320px;overflow-y:auto}
.staff-log-row{display:grid;grid-template-columns:78px minmax(0,1fr) auto;align-items:baseline;gap:11px;padding:9px 2px;border-bottom:1px solid var(--border-soft)}
.staff-log-row:last-child{border:0}
.staff-log-cat{padding:2px 7px;border-radius:7px;background:#1b2233;color:#96a1bd;font-size:10px;text-align:center;text-transform:uppercase;letter-spacing:.6px}
.staff-log-what{min-width:0;font-size:12.5px;overflow-wrap:anywhere}
.staff-log-what small{display:block;margin-top:2px;color:var(--muted-2);font-size:11px;overflow-wrap:anywhere}
.staff-log-when{flex:0 0 auto;color:var(--muted-2);font-size:11px;white-space:nowrap}

/* Просмотр чужими глазами. Полоса поверх кабинета: без неё через минуту забываешь, что смотришь
   не своё, и «почему у меня пропали финансы» становится обращением в поддержку. */
.preview-banner{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;padding:9px 18px;background:linear-gradient(90deg,#7a69f5,#5a49c8);color:#fff;font-size:12.5px;font-weight:600}
.preview-banner button{border:1px solid rgba(255,255,255,.5);border-radius:8px;padding:4px 12px;background:rgba(255,255,255,.14);color:#fff;font-size:11.5px;cursor:pointer}
.preview-banner button:hover{background:rgba(255,255,255,.24)}

@media (max-width:720px){
  .grant-levels{grid-template-columns:minmax(0,1fr)}
  .grant-term{grid-template-columns:minmax(0,1fr)}
  .staff-log-row{grid-template-columns:64px minmax(0,1fr);row-gap:3px}
  .staff-log-when{grid-column:2}
}

/* Кнопка «Разделы» живёт в УЖЕ СУЩЕСТВУЮЩЕМ ряду действий, а не в собственной ячейке грида.
   У строки приёма пять детей и пять колонок, переопределённых на четырёх брейкпоинтах; шестой
   ребёнок сломал бы каждый из них. В ряду действий она просто третья кнопка. */
.telegram-member-actions .grant{border-color:#4c4488;background:rgba(117,101,244,.14);color:#b9b0ff;white-space:nowrap}
.telegram-member-actions .grant:hover{border-color:#7668e8;background:rgba(117,101,244,.24);color:#fff}

/* ── Телефон: поля и цели нажатия ───────────────────────────────────────────────────────────
   Safari на iOS ЗУМИТ страницу, когда фокус уходит в поле со шрифтом меньше 16px. Выглядит это
   именно как «интерфейс поплыл»: страница прыгает и обратно сама не возвращается. Лечится
   единственным способом — шрифтом в 16px, поэтому на узких экранах он ставится принудительно.
   На десктопе рисунок остаётся прежним, там зума нет.

   Заодно цели нажатия: 18-пиксельный крестик пальцем не берётся. Двадцать восемь — минимум,
   на котором промахиваешься редко, и он не ломает высоту строк. */
@media (max-width:720px){
  .telegram-member input,.telegram-member select,
  .staff-tag-create input,.staff-tag-create select,
  .staff-audience-row select,.staff-message-field textarea,
  #staffPinChat,#staffPinHours,#staffPinComment,#staffGrantHours,
  .game-picker-drop input{font-size:16px}
  .telegram-member input,.telegram-member select{height:42px}
  .staff-definition-chip button,.staff-tag-list button,.telegram-member-skills button{min-width:28px;min-height:28px}
  .grant-level-switch button{min-height:30px}
  .staff-log-filter button,.grant-game{min-height:30px}
}

/* ── Список игр с поиском ────────────────────────────────────────────────────────────────────
   Игр у людей будет не пять, а сто: они собираются из каталога лотов и растут вместе с ним.
   Стена кнопок работает ровно до тех пор, пока их помещается два ряда; дальше нужную не найти,
   а присвоить игру надо за секунду. Поэтому везде одно и то же: выбранные чипами с крестиком,
   добавление — списком с поиском. */
.game-picked{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.game-picked-empty{font-size:11.5px;color:var(--muted-2)}
.game-pick{max-width:100%;display:inline-flex;align-items:center;gap:7px;padding:4px 4px 4px 11px;border:1px solid #4a4488;border-radius:999px;background:rgba(117,101,244,.16);color:#fff;font-size:11.5px}
/* Чип выбранной игры красится тем же цветом, что её тег в списках, — цвет приходит из реестра
   кабинета. Фирменные игры (.game-rust и прочие) приносят свой фон сами, поэтому здесь только
   общий случай: оттенок из палитры по ключу игры. */
.game-pick.game-generic{border-color:hsl(var(--game-hue) 70% 62% / .34);background:hsl(var(--game-hue) 70% 52% / .16);color:hsl(var(--game-hue) 86% 84%)}
.game-pick.game-rust,.game-pick.game-marathon,.game-pick.game-arena,.game-pick.game-discord,
.game-pick.game-gray-zone,.game-pick.game-arc-raiders{border-color:transparent;color:#fff}
/* Точка перед названием в списке: по ней игра узнаётся до того, как прочитано слово. */
.game-picker-list button{display:flex;align-items:center;gap:8px}
.game-dot{flex:0 0 auto;width:9px;height:9px;border-radius:50%;background:currentColor;opacity:.9}
.game-dot.game-generic{color:hsl(var(--game-hue) 76% 62%)}
.game-pick>b{min-width:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.game-pick-drop{flex:0 0 auto;width:20px;height:20px;display:grid;place-items:center;border:0;border-radius:50%;background:rgba(255,255,255,.1);color:#d7dcf0;font-size:13px;line-height:1;cursor:pointer}
.game-pick-drop:hover{background:var(--rose);color:#fff}

.game-picker{position:relative;margin-top:8px}
.game-picker-open{min-height:32px;padding:0 13px;border:1px dashed #3d4763;border-radius:10px;background:transparent;color:#9aa5c0;font-size:12px;cursor:pointer;transition:.14s}
.game-picker-open:hover:not(:disabled){border-color:#7668e8;color:#fff;background:rgba(117,101,244,.1)}
.game-picker-open:disabled{opacity:.5;cursor:default}
/* Список ложится ПОВЕРХ, а не раздвигает карточку: иначе при открытии окно прыгает и то, на что
   человек целился, уезжает из-под курсора. */
.game-picker-drop{position:absolute;z-index:30;top:calc(100% + 6px);left:0;right:0;width:auto;min-width:0;padding:9px;border:1px solid #3a4460;border-radius:12px;background:#121724;box-shadow:0 18px 44px rgba(0,0,0,.55)}
.game-picker-drop input{width:100%;height:34px;padding:0 11px;border:1px solid var(--border);border-radius:9px;outline:0;background:#171d2a;color:var(--text);font-size:13px}
.game-picker-drop input:focus{border-color:#665bd5}
.game-picker-list{display:flex;flex-direction:column;gap:2px;max-height:230px;margin-top:7px;overflow-y:auto}
.game-picker-list button{padding:7px 10px;border:0;border-radius:8px;background:transparent;color:#c3cadf;font-size:12.5px;text-align:left;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.game-picker-list button:hover{background:#1d2436;color:#fff}
.game-picker-none{padding:8px 10px;color:var(--muted-2);font-size:12px}
.game-picker-more{display:block;margin-top:6px;color:var(--muted-2);font-size:10.5px}

/* ── Шапка карточки приёма ───────────────────────────────────────────────────────────────────
   Абзац на всю ширину монитора не читается: глаз теряет начало следующей строки. Шестьдесят
   символов — обычная граница читаемости, дальше текст только тянется. */
/* Карточка приёма жила без единого своего правила: ни внутренних отступов, ни нижнего. Поэтому
   она прилипала к «Справочнику» вплотную, пока соседние карточки стояли с зазором. Ритм тут
   один на всю страницу — 18 внутрь, 16 между, как у соседей. */
.staff-access-card{padding:18px;margin-bottom:16px}

/* Абзац на всю ширину монитора не читается: глаз теряет начало следующей строки. Но ширину
   САМОЙ карточки трогать нельзя — она стоит в столбце с другими, и более узкая читается как
   недогрузившаяся. Ограничиваем текст, а не коробку. */
.staff-access-card>p,.staff-tag-library-copy>p,.staff-dispatch-copy>p{max-width:82ch}
/* И выравниваем абзац по заголовку, а не по иконке: иначе у карточки два разных левых края
   и она выглядит рваной рядом с соседями, где край один. */
.staff-access-card>p{margin-left:calc(38px + 14px)}

/* Закрытые сеансы: те же строки, но приглушённые — это история, а не то, чем можно управлять. */
.security-closed{display:flex;flex-direction:column;gap:6px;margin-top:18px;padding-top:16px;border-top:1px solid var(--border-soft)}
.security-closed-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.security-closed-head small{color:var(--muted-2);font-size:11px}
.security-session.closed{opacity:.62}
.security-session.closed .security-session-icon{color:var(--teal)}

/* Кружок человека. Буква лежит под картинкой: не загрузилась — картинка снимает себя сама
   (onerror), и остаётся буква. Никаких сломанных иконок и никаких дыр в раскладке. */
.staff-avatar{position:relative;display:grid;place-items:center;flex:0 0 auto;overflow:hidden;border-radius:var(--avatar-radius);background:linear-gradient(145deg,#6558d7,#277f9d);color:#fff;font-weight:850}
.staff-avatar>b{font-size:.9em;line-height:1}
/* Фотография загрузилась — буква под ней больше не нужна: у аватарок бывают прозрачные
   края, и сквозь них она просвечивает. */
.staff-avatar.has-photo>b{visibility:hidden}
.staff-avatar>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.telegram-member-avatar.staff-avatar{width:38px;height:38px;font-size:13px}
.staff-member-avatar.staff-avatar{width:44px;height:44px;border-radius:var(--avatar-radius);font-size:15px}

/* Порядок правил решает: блок про телефон стоит выше, чем описание списка игр, и 13px из
   описания перебивали его. Поэтому — в самом конце файла, после всех, кого перебивать. */
/* Крестик на чипе игры был 20px и пальцем не брался. Правило стоит ЗДЕСЬ, после самого
   компонента: тот же селектор в раннем блоке проигрывал бы базовому по порядку. */
@media (max-width:720px){ .game-picker-drop input{font-size:16px} .game-pick-drop{width:28px;height:28px} }

@media (max-width:900px){ .staff-access-card{padding:15px;margin-bottom:12px} }

/* ── Телефон: поля не мельче 16px, ВЕЗДЕ ──────────────────────────────────────────────────────
   Safari на iOS зумит страницу, когда фокус уходит в поле со шрифтом меньше 16px, и обратно сам
   не отзумивает. Выглядит это ровно как «интерфейс поплыл»: страница прыгнула и осталась.
   Правилось точечно для выдачи сотрудников — а поля поиска и фильтры мельче 16px стоят на
   КАЖДОЙ странице: аккаунты, чаты, покупатели (пять штук), заказы, отзывы, лоты.
   Поэтому правило общее и стоит последним, чтобы перебивать частные. */
@media (max-width:720px){
  input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
  select, textarea { font-size:16px }
}

/* Доля сотрудника — процент, и знак стоит прямо в поле: «70» без единицы читается как рубли. */
.grant-share-input{position:relative;display:flex;align-items:center}
.grant-share-input input{padding-right:36px}
.grant-share-input b{position:absolute;right:13px;color:var(--muted-2);font-size:12px;font-weight:650;pointer-events:none}

/* Досье сотрудника на узком экране.

   Ряд кнопок «Как видит он» + «Изменить доступ» не переносился и вылезал за правый край окна на
   двенадцать-двадцать пикселей. Диалог от этого получал горизонтальную прокрутку, и его рамка
   уезжала поверх текста — это и видно на телефоне как «края съехали и заехали на текст».

   Чиним причину (ряд переносится, кнопки жмутся) и заодно ставим заглушку: окно не прокручивается
   вбок никогда. Следующий широкий блок внутри не сдвинет рамку, а просто ужмётся. */
.staff-bulk-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}
.staff-bulk-actions .button{flex:1 1 auto;min-width:0;white-space:nowrap}
.staff-access-actions{min-width:0}
.staff-access-hint{min-width:0;flex:1 1 180px}
.modal{overflow-x:hidden}
.modal>form{min-width:0}
@media (max-width:420px){
  .staff-profile-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .staff-bulk-actions .button{flex:1 1 100%}
}
/* «Отключить полностью» — 180 px в ряду шириной 248: без переноса кнопка вылезала за окно. */
.staff-access-head{flex-wrap:wrap;min-width:0}
.staff-access-head>div{min-width:0;flex:1 1 160px}
.staff-access-head .button{flex:0 1 auto;min-width:0}
@media (max-width:420px){ .staff-access-head .button{flex:1 1 100%} }
/* «Все игры» — не обычный чип с названием, а состояние: его видно отдельно от списка. */
.staff-tag.game.all{border-color:rgba(117,101,244,.45);background:rgba(117,101,244,.14);color:#cfc9ff}

/* Выбор площадки в окне выдачи. Стоит между уровнем и разделами: сначала «где», потом «что». */
.grant-markets{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:16px 0 4px}
.grant-markets button{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:11px 13px;border:1px solid var(--border);border-radius:12px;background:#171d2b;color:#9aa5c0;cursor:pointer;text-align:left;transition:.14s;min-width:0}
.grant-markets button b{font-size:13px;color:#dfe4f4}
.grant-markets button small{font-size:10.5px;color:var(--muted-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.grant-markets button:hover{border-color:#44506f}
.grant-markets button.on{border-color:#7668e8;background:rgba(117,101,244,.16)}
.grant-markets button.on b{color:#fff}
.staff-tag.game b{margin-right:5px;opacity:.75;font-weight:750}
/* Подпись «к какой площадке относятся эти галочки». Блок масок один, наборов два. */
.mask-scope-note{display:block;margin:2px 0 -6px;color:var(--muted-2);font-size:10.5px}
.grant-note{margin:0 0 10px;color:var(--muted);font-size:11.5px;line-height:1.5}

/* Имя покупателя в шапке переписки, когда раздел «Клиенты» не выдан: подпись, а не кнопка.
   Прятать его нельзя — это единственное место, где написано, с кем идёт разговор. */
.chat-thread-person.inert{cursor:default}
.chat-thread-person.inert:hover{background:transparent}

/* Обёртка аватарки меряется по самой аватарке, а не по числу 44.
   Оно осталось от списка переписок, где аватарка и правда 44px, и разъехалось везде, где
   она другая: в карточке клиента 21px картинка сидела в 44px коробке, и ник оказывался в
   полутора сантиметрах от лица. Размер задаёт класс самой картинки — он есть у всех
   двенадцати, — а обёртка просто накрывает её вторым слоем под запасную букву. */

/* Досье сотрудника: отступы и прокрутка на самом окне.
   Оно переиспользует класс окна событий покупателя, а там и то и другое висит на `>form` —
   которого у досье нет вовсе. Получалось окно без единого бокового отступа: текст упирался
   в рамку и обрезался, а длинное досье не прокручивалось. */
#staffProfileDialog{padding:18px;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}
#staffProfileDialog>.modal-heading{position:sticky;top:-18px;z-index:2;margin:-18px -18px 0;padding:18px;background:#111622}

/* Кому выдана переписка: значок в списке и метки в шапке.
   Временная выдача остаётся зелёной, постоянная — синяя и мягкая: разница в том, снимется ли
   она сама. Приостановленная жёлтая, запрет красный — чтобы его было видно и можно было снять. */
.chat-grant-mark{display:inline-block;margin-left:5px;font-style:normal;font-size:9px;line-height:1;vertical-align:baseline}
.chat-grant-mark.temporary{color:#66e0c4}
.chat-grant-mark.permanent{color:#71dcf7}
.chat-grant-mark.paused{color:#ffd078}
.chat-grant-mark.blocked{color:#ff91a3}
.chat-flag.chat-assignment-chip.mine{padding:3px 6px}
.chat-flag.chat-assignment-chip.mine b{margin:0}
/* Переписка с администратором. Раньше она стояла первой и выглядела как ещё один покупатель:
   тот же аватар, тот же серый чип. Это единственная строка в списке, которая не про покупателя,
   и найти её глазами было нечем. */
/* Переписка с администратором. Рамка вокруг строки читалась как «выделено мышью» и вдобавок
   спорила с рамкой выбранного чата — две одинаковые рамки рядом означали разное. Осталось то,
   что различает без обводки: синее имя и синий аватар. */
.chat-conversation.admin .chat-conversation-name strong{color:#5aa9ff}
.chat-conversation.admin .chat-avatar{border-color:#2f6dbb;background:linear-gradient(145deg,#3d8ee0,#2a5fb0);color:#fff}
.chat-conversation.admin .chat-owner-chip{color:#7fbaf3}
.chat-list-tools{display:flex;align-items:center;gap:8px;position:relative}
/* Кнопка фильтра со счётчиком включённых условий. Счётчик обязателен: закреплённый фильтр
   действует до отмены, и человек, забывший про него, будет искать «пропавшие» переписки. */
/* Размер и вид у кнопки фильтра общие с рядом (.chat-tool-button) — здесь остаётся только
   счётчик, которого больше ни у кого нет. */

.chat-filter-button b{position:absolute;right:-4px;top:-4px;min-width:14px;height:14px;padding:0 3px;border-radius:999px;background:#7565f4;color:#fff;font-size:8px;line-height:14px;text-align:center}
.chat-filter-button b.hidden{display:none}
.chat-filter-panel{position:absolute;z-index:6;left:0;right:0;top:calc(100% + 6px);display:flex;flex-direction:column;gap:9px;padding:12px;border:1px solid var(--border-strong);border-radius:12px;background:#141a27;box-shadow:0 18px 40px rgba(0,0,0,.45)}
.chat-filter-panel.hidden{display:none}
.chat-filter-panel .eyebrow{margin:0}
.chat-filter-games{display:flex;flex-wrap:wrap;gap:5px;max-height:150px;overflow-y:auto}
.chat-filter-games button{padding:4px 8px;border:1px solid transparent;border-radius:999px;background:#1b2131;color:#aeb8ce;font-size:8px;font-weight:750;cursor:pointer}
.chat-filter-games button:hover{border-color:#44506f;color:#fff}
.chat-filter-games button.on{border-color:#7668e8;background:rgba(117,101,244,.2);color:#fff}
.chat-filter-empty{color:var(--muted-2);font-size:8px}
.chat-filter-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}
.chat-filter-actions small{color:var(--muted-2);font-size:7px;line-height:1.4;text-align:right}
.chat-filter-panel select{min-height:32px;font-size:9px}
.chat-list-tools .chat-search{flex:1 1 auto;min-width:0}
/* Ряд под заголовком списка: поиск, порядок, фильтр. Все трое ОДНОЙ высоты с поиском — 38 px.
   Было 38 у поиска и по 30 у остальных: ряд читался как сломанный, а попасть пальцем в значок
   на 12 px было отдельной задачей. Метрика списана у поиска, а не выдумана. */
.chat-tool-button{position:relative;flex:0 0 auto;width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--border);border-radius:10px;background:#141a27;color:#9aa5c0;font-size:17px;line-height:1;cursor:pointer;transition:.16s}
.chat-tool-button:hover{border-color:#44506f;color:#fff}
.chat-tool-button.on{border-color:#7668e8;background:rgba(117,101,244,.16);color:#c5bdff}
/* Порядок списка — БЕЗ рамки: рамка в ряду из трёх коробок делает его частоколом, а нажимают
   сюда реже, чем в поиск. Оправа появляется только под пальцем и когда порядок не обычный. */
.chat-sort-wrap{position:relative;flex:0 0 auto}
#chatSortButton{border-color:transparent;background:transparent;font-size:19px}
#chatSortButton:hover{background:#181e2d}
/* Порядок не обычный — это видно. Правило пишется ПО ID намеренно: строка выше гасит фон тоже
   по id, и .chat-tool-button.on её не перебивает — два класса слабее одного идентификатора.
   Подсветка была бы съедена молча: класс на кнопке стоит, фон остаётся прозрачным. */
#chatSortButton.on{background:rgba(117,101,244,.16);color:#c5bdff}
/* Меню срока у колокольчика — та же коробка, что у порядка списка, и намеренно ОДНИМ правилом:
   две копии метрик разъедутся в первой же правке одной из них. Отличий два, и оба по делу —
   меню висит слева от кнопки (кнопка стоит у правого края шапки переписки, и справа ему не
   хватило бы места), и галочки в нём нет: выбирают не состояние, а длительность. */
.chat-sort-menu,.chat-mute-menu{position:absolute;z-index:7;right:0;top:calc(100% + 6px);min-width:186px;display:flex;flex-direction:column;padding:5px;border:1px solid var(--border-strong,#293149);border-radius:12px;background:#141a27;box-shadow:0 18px 40px rgba(0,0,0,.45)}
.chat-sort-menu.hidden,.chat-mute-menu.hidden{display:none}
.chat-sort-menu button,.chat-mute-menu button{min-height:34px;display:flex;align-items:center;gap:8px;padding:0 10px;border:0;border-radius:9px;background:transparent;color:#c3ccdd;font-size:12px;text-align:left;white-space:nowrap;cursor:pointer}
.chat-sort-menu button:hover,.chat-mute-menu button:hover{background:#1b2233;color:#fff}
.chat-mute-wrap{position:relative;flex:0 0 auto;display:flex}
.chat-mute-wrap.hidden{display:none}
.chat-mute-menu{left:auto;right:0}
.chat-mute-menu>small{padding:4px 10px 6px;color:var(--muted-2);font-size:8px;font-weight:750;letter-spacing:.5px;text-transform:uppercase}
/* Галочка занимает место всегда, даже у невыбранных: иначе строки прыгают влево-вправо при
   смене выбора, и меню выглядит дёргающимся. */
.chat-sort-menu button:before{content:"✓";width:12px;color:transparent;font-size:11px}
.chat-sort-menu button.picked{color:#fff}
.chat-sort-menu button.picked:before{color:var(--purple-2)}
.chat-grant{display:inline-flex;align-items:center;max-width:120px;margin-right:5px;padding:3px 6px;border:0;border-radius:999px;font-size:7px;font-weight:750;cursor:pointer}
/* Метка доступа — тот же ярлык, что у игры рядом, только другого цвета. Значка внутри нет
   совсем: сначала это была пешка из запасного шрифта, потом кружок с зазором, и каждый раз
   метка чем-то отличалась от соседа по строке. Отличаться теперь нечем. */
.chat-grant span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-grant.green{color:#66e0c4;background:rgba(43,212,184,.14)}
.chat-grant.cyan{color:#71dcf7;background:rgba(54,202,239,.14)}
.chat-grant.amber{color:#ffd078;background:rgba(255,189,69,.14)}
.chat-grant.rose{color:#ff91a3;background:rgba(255,100,127,.16)}
.chat-grant.slate{color:#9aa5bd;background:rgba(154,165,189,.12)}
.chat-grant:hover{filter:brightness(1.25)}

/* Выбор одного действия из нескольких. */
.pick-options{display:flex;flex-direction:column;gap:8px;margin:14px 0 4px}
.pick-option{display:flex;flex-direction:column;gap:3px;padding:11px 13px;border:1px solid #303851;border-radius:11px;background:#171d2b;color:#e9ecf6;text-align:left;cursor:pointer}
.pick-option:hover{border-color:#5f55c2;background:#1b2233}
.pick-option strong{font-size:12px}
.pick-option small{color:var(--muted-2);font-size:10px;line-height:1.45}
.pick-option.danger{border-color:rgba(255,100,127,.35)}
.pick-option.danger strong{color:#ff91a3}

/* Поле ответа сотруднику — прямо под лентой личной переписки. */
.staff-direct-compose{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:11px}
.staff-direct-compose input{min-height:38px;padding:0 12px;border:1px solid #303850;border-radius:10px;outline:0;background:#151a27;color:#eef1fb;font-size:11px}
.staff-direct-compose input:focus{border-color:#655ad7}
.staff-direct-compose button{min-height:38px;padding:0 16px;font-size:11px}

/* Значок доступа к покупателю. Одна форма на все места: список чатов, список клиентов, карточка.
   Зелёный — временный чат (только переписка), синий — личный клиент (плюс карточка, заказы,
   отзывы), красный — общий доступ снят. Нет статуса — нет и значка. */
/* Значок доступа. Был голым символом на тёмном фоне и терялся в строке начисто — Larpbase
   его попросту не видел. Теперь это маленький виджет: обводка, подложка и воздух вокруг. */
.staff-mark{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;margin-left:6px;border:1px solid currentColor;border-radius:6px;background:rgba(255,255,255,.04);font-style:normal;font-size:9px;line-height:1;vertical-align:middle}
.staff-mark.temporary{color:#66e0c4}
.staff-mark.personal{color:#71b6ff}
.staff-mark.permanent{color:#71dcf7}
.staff-mark.paused{color:#ffd078}
.staff-mark.closed{color:#ff7a8f}
.staff-mark.in-row{width:16px;height:16px;margin:0 5px 0 6px;font-size:8px}
/* Подложка красится в цвет метки: одной обводки на тёмном мало, а сплошной заливкой значок
   начинает спорить с игровыми чипами рядом. */
.staff-mark.temporary{background:rgba(102,224,196,.12)}
.staff-mark.permanent,.staff-mark.personal{background:rgba(113,220,247,.12)}
.staff-mark.paused{background:rgba(255,208,120,.12)}
.staff-mark.closed{background:rgba(255,122,143,.14)}
.staff-mark.scope{background:rgba(125,135,159,.14)}

/* Раздел «Доступ к общению» в карточке покупателя. */
.customer-access{display:flex;flex-direction:column;gap:10px}
.customer-access-now{margin:0}
.customer-access-state{display:inline-block;padding:7px 11px;border-radius:9px;font-size:11px;line-height:1.5}
/* Направления клиента — набор: метка на каждое, крестик у владельца, серые «убраны навсегда». */
.client-directions{display:flex;flex-wrap:wrap;gap:8px}
.client-direction{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:9px;background:rgba(113,182,255,.10);color:#cfe3ff;font-size:12px;line-height:1.4}
.client-direction small{color:var(--muted);font-size:11px}
.client-direction-drop{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:15px;line-height:1;padding:0 2px}
.client-direction-drop:hover{color:#ffa3b1}
.client-direction.banned{background:rgba(255,255,255,.04);color:var(--muted)}
.client-direction-choice,.client-directions-banned,.client-direction-add{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px}
.client-direction-choice small,.client-directions-hint{flex-basis:100%;color:var(--muted);font-size:11px}
.client-direction-add select{min-width:150px;max-width:100%}
.customer-access-state.open{color:var(--muted);background:rgba(255,255,255,.04)}
.customer-access-state.personal{color:#a9cfff;background:rgba(113,182,255,.12)}
.customer-access-state.closed{color:#ffa3b1;background:rgba(255,122,143,.12)}
.customer-access-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}
.customer-access-actions{display:flex;flex-wrap:wrap;gap:8px}
.customer-access-actions .button{min-height:34px;padding:0 12px;font-size:11px}
/* Переписки покупателя и кто их видит — там же, где доступом и управляют. */
.customer-access-chats{display:grid;gap:7px;margin-top:4px;padding-top:12px;border-top:1px solid var(--border-soft)}
.customer-access-chats .eyebrow{margin:0 0 2px}
.customer-backfill-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:11px 16px;margin-bottom:12px}
.customer-backfill-bar>div{flex:1 1 320px;min-width:0}
.customer-backfill-bar .eyebrow{margin:0 0 3px}
.customer-backfill-bar strong{display:block;font-size:11px;font-weight:600;color:#c3ccdd}
.customer-backfill-bar .button{flex:0 0 auto;min-height:34px;padding:0 14px}
.customer-access-where{margin:0 0 2px;color:var(--muted-2);font-size:8px}
.customer-access-viewers{display:flex;flex-wrap:wrap;gap:5px;min-width:0}
.customer-access-viewers .chat-grant{max-width:100%;margin:0}
.customer-access-nobody{color:var(--muted-2);font-size:8px}
.customer-account-viewers{color:#8fa0c0}

/* Переписка с сотрудниками — в их же разделе, рядом со списком людей. */
.staff-chat{display:grid;grid-template-columns:minmax(210px,240px) minmax(0,1fr);gap:14px;margin-top:12px;align-items:stretch}
.staff-chat-people{display:flex;flex-direction:column;gap:5px;min-height:210px;max-height:420px;padding:6px;border:1px solid var(--border-soft);border-radius:13px;background:#101520;overflow-y:auto}
.staff-chat-messages{min-height:210px;max-height:420px}
.staff-chat-empty{padding:18px 12px;color:var(--muted-2);font-size:9px;line-height:1.5;text-align:center}
/* Роль — цветом. Одинаковым серым «полный доступ» и «телеграм» читались как одно и то же,
   а разница между ними — это разница между «видит всё» и «видит один чат». */
.staff-chat-role{font-weight:700;letter-spacing:.2px}
/* Непрочитанное в переписке с командой. Строка человека — единственное место, где оно видно
   поимённо: значок раздела говорит «есть», а кто именно написал — только здесь. */
.staff-chat-person{position:relative}
.staff-chat-person.unread strong{color:#f6f7ff}
.staff-chat-unread{position:absolute;top:8px;right:10px;min-width:20px;height:20px;padding:0 6px;
  border-radius:10px;background:#7565f4;color:#fff;font-size:11px;font-weight:700;
  display:grid;place-items:center;line-height:1}
.staff-chat-when{display:block;margin-top:2px;font-size:10px;color:#66718f}
.staff-chat-role.full{color:#ffb168}
.staff-chat-role.cabinet{color:#71dcf7}
.staff-chat-role.forward{color:var(--muted-2)}
.staff-chat-person.active .staff-chat-role{color:#fff}
.staff-chat-person{display:flex;flex-direction:column;gap:2px;padding:9px 11px;border:1px solid transparent;border-radius:10px;background:transparent;color:#aeb8ce;text-align:left;cursor:pointer}
.staff-chat-person:hover{background:#181d2b;color:#fff}
.staff-chat-person.active{color:#fff;border-color:rgba(117,101,244,.3);background:linear-gradient(90deg,rgba(117,101,244,.2),rgba(117,101,244,.05))}
.staff-chat-person strong{font-size:11px}
.staff-chat-person small{color:var(--muted-2);font-size:9px}
.staff-chat-thread{display:flex;flex-direction:column;min-width:0;border:1px solid var(--border-soft);border-radius:12px;background:#0f131e}
.staff-chat-messages{flex:1;min-height:220px;max-height:340px;overflow-y:auto;display:flex;flex-direction:column;gap:7px;padding:13px}
.staff-chat-line{max-width:78%;padding:8px 11px;border-radius:12px;font-size:11px;line-height:1.45}
.staff-chat-line p{margin:0;white-space:pre-wrap;word-break:break-word}
.staff-chat-line time{display:block;margin-top:4px;color:rgba(205,211,228,.5);font-size:8px}
.staff-chat-line.out{align-self:flex-end;background:linear-gradient(145deg,#6557d2,#5448b4);color:#fff}
.staff-chat-line.in{align-self:flex-start;border:1px solid #2a3248;background:#181e2c;color:#edf0f8}
/* Черта «новые сообщения». Тем же сиреневым, что и счётчик непрочитанного в строке человека:
   это одна и та же мысль, показанная в двух местах, и разными цветами она читалась бы как две.
   Растягивается на всю ширину — колонка сообщений выравнивает строки по краям, и без stretch
   черта съёжилась бы до ширины подписи и встала бы слева, как чужой пузырь. */
.staff-chat-new{align-self:stretch;display:flex;align-items:center;gap:8px;margin:3px 0;color:#9a8dfa;font-size:9px;letter-spacing:.4px;text-transform:uppercase}
.staff-chat-new::before,.staff-chat-new::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(117,101,244,.45),transparent)}
.staff-chat-empty{margin:auto;color:var(--muted-2);font-size:11px}
.staff-chat-compose{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:10px 12px;border-top:1px solid var(--border-soft)}
.staff-chat-compose input{min-height:36px;padding:0 12px;border:1px solid #303850;border-radius:10px;outline:0;background:#151a27;color:#eef1fb;font-size:11px}
.staff-chat-compose input:focus{border-color:#655ad7}
@media(max-width:760px){.staff-chat{grid-template-columns:1fr}.staff-chat-people{flex-direction:row;overflow-x:auto;max-height:none}}

/* Просмотр скриншота из переписки — внутри приложения. */
.image-modal{max-width:min(94vw,1200px);max-height:94vh;padding:0;border:0;border-radius:14px;background:transparent;overflow:visible}
.image-modal::backdrop{background:rgba(6,8,14,.82)}
.image-modal img{display:block;max-width:100%;max-height:90vh;border-radius:14px;box-shadow:0 30px 90px rgba(0,0,0,.6)}
.image-modal-close{position:absolute;top:-14px;right:-14px;width:32px;height:32px;border:1px solid #3a4363;border-radius:50%;background:#161c2b;color:#e9ecf6;font-size:18px;line-height:1;cursor:pointer}
.image-modal-close:hover{border-color:#5f55c2;color:#fff}
.chat-message-image{padding:0;border:0;background:transparent;cursor:zoom-in}
.staff-mark.scope{color:#7d879f}

/* Метка языка рядом с ником. Тот же размер, что у значка доступа, — они стоят рядом и обязаны
   выглядеть одним рядом, а не двумя разными идеями. */
.lang-mark{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:17px;margin-left:6px;padding:0 4px;border:1px solid rgba(154,165,189,.5);border-radius:6px;background:rgba(154,165,189,.12);color:#c3ccdd;font-style:normal;font-size:8px;font-weight:800;letter-spacing:.4px;vertical-align:middle}
/* Поставленный руками помечен точкой: «CRM так решила» и «я так решил» — разные вещи. */
.lang-mark.manual{border-color:rgba(117,101,244,.5);background:rgba(117,101,244,.14);color:#c5bdff}
.lang-mark.manual:after{content:'•';margin-left:2px}
.customer-browsing-label{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:1px solid rgba(255,189,69,.32);border-radius:999px;background:rgba(255,189,69,.1);color:#ffd078;font-size:7px;font-weight:700}
.lang-mark.in-row{min-width:20px;height:14px;margin-left:5px;font-size:7px;letter-spacing:.3px}
.lang-mark.muted{min-width:17px;border-color:rgba(255,122,143,.45);background:rgba(255,122,143,.12);color:#ff9fae}

/* Рассылка по клиентам. Стоит над списком и считает ровно тех, кто в нём виден. */
.customer-blast{margin-bottom:14px;padding:16px}
.customer-blast-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.customer-blast-head h2{margin:4px 0 0;font-size:16px}
.customer-blast-count{padding:6px 11px;border:1px solid rgba(117,101,244,.35);border-radius:9px;background:rgba(117,101,244,.12);color:#c5bdff;font-size:10px;font-weight:800;white-space:nowrap}
.customer-blast textarea{width:100%;min-height:78px;padding:10px 12px;border:1px solid #30384f;border-radius:11px;background:#171c29;color:var(--text);font:inherit;font-size:11px;resize:vertical}
.customer-blast-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin-top:10px}
.customer-blast-row>.field{flex:0 1 190px}
.customer-blast-row>.button{flex:0 0 auto;min-height:42px;white-space:nowrap;margin-left:auto}
.customer-blast-row>.button+.button{margin-left:0}
.customer-blast .grant-note{margin:10px 0 0}

/* Виджет обхода: внизу справа, поверх страницы. */
.broadcast-widget{position:fixed;right:18px;bottom:18px;z-index:60;width:min(360px,calc(100vw - 24px));padding:13px 14px;border:1px solid #2e3650;border-radius:15px;background:#121826;box-shadow:0 24px 60px rgba(0,0,0,.55)}
.broadcast-widget.hidden{display:none}
/* Разбор и рассылка могут идти одновременно — второй виджет встаёт над первым. */
.backfill-widget{bottom:auto;top:18px}
.broadcast-widget-head{display:grid;grid-template-columns:10px minmax(0,1fr) 22px;align-items:center;gap:10px}
.broadcast-widget-head strong,.broadcast-widget-head small{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.broadcast-widget-head strong{font-size:11px}
.broadcast-widget-head small{margin-top:3px;color:var(--muted-2);font-size:8px}
.broadcast-widget-close{width:22px;height:22px;border:0;border-radius:7px;background:transparent;color:var(--muted-2);font-size:15px;line-height:1;cursor:pointer}
.broadcast-widget-close.hidden{visibility:hidden}
.broadcast-dot{width:9px;height:9px;border-radius:50%;background:var(--muted-2)}
.broadcast-dot.running{background:#2bd4b8;box-shadow:0 0 0 4px rgba(43,212,184,.16)}
.broadcast-dot.paused{background:#ffbd45}
.broadcast-dot.done{background:#71b6ff}
.broadcast-dot.cancelled{background:#ff647f}
.broadcast-bar{height:5px;margin:10px 0 9px;border-radius:99px;background:#1c2334;overflow:hidden}
.broadcast-bar>i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#6d5ee4,#2bd4b8);transition:width .3s}
/* Причина отказа разбора. Метрики списаны у соседа по виджету (.broadcast-recent span): те же
   8px, тот же ряд. Отличие ровно одно и оно всё: строка ПЕРЕНОСИТСЯ. Причина жила подписью в
   шапке, а та в одну строку с многоточием, — то есть текста человек не видел никогда, а смотрит
   он сюда только когда что-то сломалось. overflow-wrap:anywhere — потому что в причине бывает
   адрес без пробелов, и он бы распёр виджет. */
.backfill-error{margin:0 0 9px;color:#ff9fae;font-size:8px;line-height:1.5;overflow-wrap:anywhere;max-height:64px;overflow:auto}
.broadcast-recent{display:flex;flex-direction:column;gap:3px;max-height:96px;overflow:auto}
.broadcast-recent span,.broadcast-recent em{color:var(--muted-2);font-size:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.broadcast-recent span.failed{color:#ff9fae}
.broadcast-widget-actions{display:flex;gap:8px;margin-top:11px}
.broadcast-widget-actions .button{flex:1;min-height:32px;padding:0 10px;font-size:10px}
.broadcast-widget-actions .button.hidden{display:none}

/* Выдача доступа прямо из карточки клиента. */
.chat-grant.add{color:#a9b4cc;background:transparent;border:1px dashed #3a4363}
.customer-access-grant-all{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin-top:4px}
.customer-access-grant-all>.field{flex:1 1 200px;min-width:170px}
.customer-access-grant-all>.button{flex:0 0 auto;min-height:42px}
.customer-switch-line{display:flex;align-items:center;gap:8px}
.customer-switch-line input{width:16px;height:16px;accent-color:#7565f4;cursor:pointer}
.customer-switch-line b{font-size:10px;font-weight:600;color:var(--muted)}
/* Подсказка в переписке: цену вырезали МЫ, а не покупатель промолчал. */
.chat-price-hint{margin:0 0 8px;padding:7px 11px;border:1px solid rgba(255,189,69,.28);border-radius:9px;background:rgba(255,189,69,.08);color:#ffd078;font-size:9px}

/* Разговор с командой: одна панель, две вкладки. */
.staff-talk-card{padding:18px;margin-bottom:16px}
.staff-talk-tabs{display:flex;gap:6px;margin-bottom:14px}
.staff-talk-tab{min-height:32px;padding:0 14px;border:1px solid #2c3350;border-radius:9px;background:transparent;color:var(--muted);font-size:11px;font-weight:700;cursor:pointer}
.staff-talk-tab:hover{border-color:#4a4590;color:#cfd5e8}
.staff-talk-tab.active{border-color:rgba(117,101,244,.4);background:rgba(117,101,244,.14);color:#c5bdff}
.staff-talk-pane.hidden{display:none}

/* Полоса «кому и чем» под объявлением.
   Была сеткой на ТРИ колонки — от прежней карточки в две колонки, где она шла во всю ширину.
   Панель с вкладками эту сетку отменила, а полоса про неё не знала: пятеро детей в трёх
   колонках переносились на вторую строку, и кнопки «Скрин» и «Отправить» растягивались на
   260 и 440 пикселей каждая, а «Снять выбор» оставалась одна посреди пустого места.
   Теперь это ряд: поля тянутся, счётчик прижат вправо, кнопки — по своему содержимому. */
.staff-talk-pane .staff-dispatch-copy>p:last-child{max-width:none}
.staff-talk-pane .staff-message-field{margin-top:12px}
.staff-talk-pane .staff-audience-row{grid-column:auto;display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;margin-top:14px;padding-top:15px}
.staff-talk-pane .staff-audience-row>.field{flex:1 1 200px;min-width:180px;max-width:320px}
/* Отправка — своей строкой. Пока сводка получателей стояла распоркой между полями и кнопками,
   на широком экране между ними зияла дыра, а текст прижимался к кнопкам и читался как их
   подпись. Теперь слева «кому», справа «чем и отправить», и растягивать нечего. */
.staff-audience-send{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:12px}
.staff-audience-send .staff-audience-summary{flex:1 1 240px;min-height:auto}
.staff-audience-actions{display:flex;flex:0 0 auto;gap:9px}
.staff-audience-actions .button{min-height:42px;white-space:nowrap}
.staff-audience-names{margin:8px 0 0;color:#c3ccdd;font-size:9px;line-height:1.5}
.staff-audience-names.empty{color:var(--amber)}
@media(max-width:820px){
  .staff-talk-pane .staff-audience-row>.field{max-width:none}
  .staff-talk-pane .staff-audience-summary{justify-content:flex-start}
  .staff-talk-pane .staff-audience-row>.button{flex:1 1 140px}
}

/* Выбор человека и досье — в общем списке людей. */
.telegram-member-actions .ghost{min-height:30px;padding:0 11px;border:1px solid #303851;border-radius:9px;background:#171d2b;color:#aeb8ce;font-size:10px;font-weight:700;cursor:pointer}
.telegram-member-actions .ghost:hover{border-color:#5f55c2;color:#c5bdff}

/* ── Метка доступа = метка игры, только другого цвета ──────────────────────────────────────────
   Она стоит В ОДНОМ РЯДУ с ярлыком игры (`#threadCustomerGames`), и любое расхождение видно
   в упор. Расхождений было три, и ни одно не читалось по правилу `.chat-grant`:

   1. `.chat-thread-person span{margin-top:5px;color:…;font-size:9px}` — правило строки с ником
      аккаунта — доставало и до `<span>` ВНУТРИ метки: она лежит в `<small id=threadCustomerGames>`
      внутри той же кнопки. Кегль становился 9px вместо 7px, цвет серым, а `margin-top:5px`
      растягивал метку до 23px против 13.7px у соседа. Поэтому здесь стоит явный сброс: чужое
      правило той же специфичности, но оно выше по файлу — выигрывает то, что ниже.
   2. `line-height` у кнопки — `normal` (правило UA), у соседнего ярлыка — 1.1.
   3. `margin-right:5px` при `gap:4px` у ряда: после метки зазор был девять пикселей, до неё —
      четыре.

   Мерить это правило нужно ТОЛЬКО по вычисленным значениям в браузере: в исходнике у обоих
   элементов лежит по три перебитых объявления, и `grep` по `app.css` показывает мёртвые. */
.chat-grant{margin:0;line-height:1.1;letter-spacing:.01em}
.chat-grant span{margin:0;color:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;letter-spacing:inherit}
/* Кольцо внутрь — у ярлыка игры оно есть, и без него метка выглядит плоской заплаткой рядом. */
.chat-grant.green{box-shadow:inset 0 0 0 1px rgba(43,212,184,.28)}
.chat-grant.cyan{box-shadow:inset 0 0 0 1px rgba(54,202,239,.28)}
.chat-grant.amber{box-shadow:inset 0 0 0 1px rgba(255,189,69,.28)}
.chat-grant.rose{box-shadow:inset 0 0 0 1px rgba(255,100,127,.3)}
.chat-grant.slate{box-shadow:inset 0 0 0 1px rgba(154,165,189,.24)}

/* ── Скриншоты в переписке с командой ──────────────────────────────────────────────────────────
   Переписка администратора с сотрудником была текстовой в обе стороны: приложить скрин нечем,
   а фотография из бота доезжала строкой «[фотография]». Объясняются в ней ровно картинками. */
.staff-chat-compose{grid-template-columns:auto minmax(0,1fr) auto}
/* Кнопку списываем у композитора чатов, но по высоте — у поля рядом, а не у её собственной
   версии из переписки с покупателем: там поле 43px, здесь 36px. */
.staff-chat-compose .chat-attach-button{width:36px;height:auto;align-self:stretch;border-radius:10px;font-size:18px;cursor:pointer}
.staff-chat-image{display:block;max-width:100%;margin:-4px -7px 6px;padding:0;border:0;border-radius:9px;overflow:hidden;background:#0f1420;cursor:zoom-in}
.staff-chat-image img{display:block;width:100%;max-height:240px;object-fit:contain}
.staff-chat-line:has(.staff-chat-image) p:empty{display:none}
.staff-chat-thread .chat-attachment-preview{margin:0 12px 8px}

/* Шапка догрузки истории — та же линейка, что у хвоста списка чатов: спиннер только на время
   работы, в покое тихая строка. */
.chat-history-head{display:flex;align-items:center;justify-content:center;gap:8px;min-height:26px;margin:0 0 8px;color:var(--muted-2);font-size:9px}
.chat-history-head.quiet{color:rgba(154,165,189,.55)}
/* Местный стоп догрузки — строка, на которую жмут. Метрики списаны у хвоста списка чатов
   (.chat-list-tail.actionable): там ровно такая же тихая строка, которая умеет быть кнопкой.
   Идёт ПОСЛЕ .quiet: вес у селекторов одинаковый, и порядок здесь решает. */
.chat-history-head[data-history-retry]{cursor:pointer;border-radius:9px;color:#9aa5c0;transition:.14s}
.chat-history-head[data-history-retry]:hover{background:#1b2130;color:#e6eaf6}

/* Онлайн-статус собеседника в шапке переписки. Метрики списаны у соседей по ряду — метки
   доступа и ярлыка игры, — и проверяются вместе с ними одним набором чисел. */
.chat-status{display:inline-flex;align-items:center;gap:4px;max-width:150px;margin:0;padding:3px 6px;border-radius:999px;color:#9aa5bd;background:rgba(154,165,189,.12);box-shadow:inset 0 0 0 1px rgba(154,165,189,.24);font-size:7px;font-weight:750;line-height:1.1;letter-spacing:.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-status i{width:5px;height:5px;flex:0 0 auto;border-radius:50%;background:currentColor}
.chat-status.online{color:#66e0c4;background:rgba(43,212,184,.14);box-shadow:inset 0 0 0 1px rgba(43,212,184,.28)}
.chat-status.stale{opacity:.62}

/* Выбор игр и языков в фильтре чатов — тот же компонент, что в уведомлениях. Простыня чипов
   работала ровно до тех пор, пока игр было шесть; на двадцати нужную ищут глазами по одной. */
.chat-filter-picker .game-picked{display:flex;flex-wrap:wrap;gap:4px}
.chat-filter-picker .game-picked-empty{color:var(--muted-2);font-size:8px}
.chat-filter-picker .game-picker{margin-top:6px}
.chat-filter-picker .game-picker-open{min-height:28px;padding:0 10px;font-size:9px}
.chat-filter-picker .game-picker-drop input{height:30px;font-size:11px}
.chat-filter-picker .game-picker-list{max-height:180px}
.chat-filter-picker .game-picker-list button{padding:6px 9px;font-size:11px}
.chat-filter-picker .game-pick{font-size:8px}
/* Чип языка: та же форма, что у игры, но без цвета игры — цвета там нет и выдумывать его незачем. */
.token-pick{color:#c3ccdd;background:#1b2131;box-shadow:inset 0 0 0 1px #313a53}

/* «Кем прочитано» — тот же ярлык, что онлайн-статус и метка доступа. Метрики общие: ряд обязан
   давать по одному значению на высоту, кегль и отступы, иначе он снова разъедется. */
.chat-read{display:inline-flex;align-items:center;gap:4px;max-width:170px;margin:0;padding:3px 6px;border-radius:999px;color:#8fa0c4;background:rgba(143,160,196,.12);box-shadow:inset 0 0 0 1px rgba(143,160,196,.22);font-size:7px;font-weight:750;line-height:1.1;letter-spacing:.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Галочка живёт в ТЕХ ЖЕ метриках, что и текст: кегль побольше делал ярлык на треть пикселя
   выше соседей по ряду, и ряд переставал давать одно число на высоту. */
.chat-read i{flex:0 0 auto;font-style:normal;font-size:inherit;line-height:inherit}

/* Галочка «прочитано» — СИНЯЯ, а не в цвет текста. В одном ряду стоят метка доступа, прочтение
   и ярлыки игр; одинаково приглушённые, они сливались в кашу, и ряд читался только чтением. */
.chat-read i{color:#5aa9ff}
/* Галочки у нашего сообщения на G2G: одна — ушло, две — покупатель прочитал. Метрики списаны у
   соседа по ряду (.chat-message-meta time): кегль и цвет наследуются, иначе строка времени
   разъедется по высоте. Прочитанное — тем же синим, что «кем прочитано» в шапке: цвет в кабинете
   значит одно и то же в обоих местах. */
/* Галочки крупнее времени рядом. Наследованный кегль (7px) съедал их совсем: в ряду с временем
   они читались как грязь на экране, а не как состояние сообщения. 11px — тот же кегль, что у
   строки валют в карточке аккаунта, ниже него в кабинете ничего осмысленного не рисуется.
   line-height оставляем как у соседей, иначе ряд перестаёт давать одно число на высоту. */
.chat-message-ticks{flex:0 0 auto;font-style:normal;font-size:11px;line-height:1;letter-spacing:-2px;opacity:.75}
.chat-message-ticks.read{color:#5aa9ff;opacity:1}
/* Человечек перед именем сотрудника: отвечает «это про человека, а не про игру» до чтения. */
.chip-person{flex:0 0 auto;font-style:normal;font-size:inherit;line-height:inherit}
/* Метка от автомата в выборе языков: та же форма, что у поставленной руками, но пунктиром —
   первое можно перепроверить, второе трогать нельзя. Снимается тем же крестиком. */
.game-pick.auto{opacity:.72;border:1px dashed #4a5578}
.customer-language-foot{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:6px}
.customer-language-foot .text-button{flex:0 0 auto;font-size:10px}
.customer-language-foot small{text-align:right}

/* ---- Выбор языка -----------------------------------------------------------
   Список из двадцати одной строки одинаковым серым текстом читался целиком, чтобы найти в нём
   одну строку. Форма списана у выбора игр — там строку находят по цветной точке, — но точки у
   языка нет и выдумывать её незачем: её место занимает код (RU, ZH, 日本語 → JA), а название
   стоит на самом языке. Русская подпись уходит вправо приглушённой: по ней не ищут, ею
   отвечают на вопрос «а это что было». */
.token-code{flex:0 0 auto;min-width:26px;padding:2px 5px;border-radius:6px;background:#232b3f;color:#9fb0d4;font-style:normal;font-size:9px;font-weight:800;letter-spacing:.04em;text-align:center;line-height:1.35}
.token-picker-list button{gap:9px}
.token-picker-list .token-name{min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.token-picker-list .token-hint{flex:0 0 auto;color:var(--muted-2);font-size:10.5px}
.token-picker-list button:hover .token-code{background:#303a54;color:#cdd8f2}
/* Чип выбранного языка: тот же код слева, название справа. */
.token-pick .token-code{background:rgba(255,255,255,.09);color:#cbd6ee}

/* Своя полоса прокрутки в выпадающих списках. Системная в Windows — пятнадцать пикселей
   светло-серого поперёк тёмной панели: она не просто заметна, она первое, что видно в списке.
   Метрика не выдумана: 15px измерено в браузере на этом самом списке языков. */
.game-picker-list{scrollbar-width:thin;scrollbar-color:#39415c transparent}
.game-picker-list::-webkit-scrollbar{width:8px}
.game-picker-list::-webkit-scrollbar-track{background:transparent}
.game-picker-list::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:99px;background:#39415c;background-clip:content-box}
.game-picker-list::-webkit-scrollbar-thumb:hover{background:#4a5578;background-clip:content-box}

/* ---- Всплывашка о новом сообщении ------------------------------------------
   Область всплывашек не ловит нажатия намеренно: обычная карточка живёт четыре секунды поверх
   интерфейса, и перехватывать ею клики значило бы отнимать у человека кнопки под ней. Но
   карточка сообщения — сама кнопка: по ней переходят в переписку. Возвращаем нажатия ей одной. */
.toast-region .message-toast{pointer-events:auto}
.message-toast:focus-visible{outline:2px solid var(--purple-2);outline-offset:2px}

/* ---- Хвост списка чатов ----------------------------------------------------
   «Показать ещё N» — кнопка, а не подпись. Прокрутка догружает сама, но она умеет не
   сработать: список, обрезанный фильтром до десяти строк, помещается целиком, и прокручивать
   в нём нечего. Тогда единственная дорога к остальным тридцати — вот эта строка. */
.chat-list-tail.actionable{cursor:pointer;border-radius:9px;color:#9aa5c0;transition:.14s}
.chat-list-tail.actionable:hover{background:#1b2130;color:#e6eaf6}

/* Строки списка НЕ сжимаются — список прокручивается.
   Вот из-за этого выбор языка и выглядел кашей, а выбор игр рядом — нормально. `.game-picker-list`
   это колонка флексбокса с `max-height:180px`, а её строки — флекс-элементы с `flex-shrink:1` по
   умолчанию. Пока строк было девять (игры), они помещались и никто ничего не замечал. Двадцать
   один язык не помещается — и вместо прокрутки браузер честно сплющил каждую строку. Сплющил до
   упора, потому что `overflow:hidden` у самой строки превращает её `min-height:auto` в ноль:
   измерено в браузере — 18.2px при 12px одних только отступов.
   Одна строка правки, и список ведёт себя как список. */
.game-picker-list>button,.game-picker-list>span{flex:0 0 auto}

/* ---- Настройки: дыра в правой колонке -------------------------------------
   Карточек пять, и «Игры кабинета» среди них одна широкая — `grid-column:1/-1`. Обычная
   раскладка сетки ставит её в свою строку и НЕ возвращается назад: правая половина строки над
   ней так и остаётся пустой. На проде это выглядело как обрыв — под «Ботом FunPay CRM» правая
   колонка кончалась, а страница продолжалась ещё на тысячу с лишним пикселей.
   Измерено в браузере: высота сетки 1461px, пустого места 507 тысяч пикселей².
   `dense` разрешает браузеру вернуться и заполнить пропущённую ячейку — 1056px и 44 тысячи,
   то есть одни только зазоры между карточками. И это не жёсткий порядок: спрячется карточка
   правами — раскладка сойдётся заново сама. */
.notification-grid{grid-auto-flow:dense}

/* Колокольчик на весь кабинет: кнопка в шапке, сетка «категория × канал», лента событий.
   Метрики списаны с соседей: переключатель — с .switch-row (43×24, кнопка 18), строка ленты —
   с .customer-event (40px значок, те же радиусы и цвета). */
/* «На этом устройстве пуши выключены».
   Стоит в шапке, а не в настройках, нарочно: в настройки заходят раз в жизни, а не узнать о
   сообщении можно каждый день. Янтарный, как и «раздел не доезжает», — это не поломка, это
   выключенная возможность. */
.push-off-chip{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 11px;
  border:1px solid rgba(240,175,80,.32);border-radius:10px;background:rgba(240,175,80,.1);
  color:#f0af50;font-size:12px;cursor:pointer;white-space:nowrap}
.push-off-chip:hover{border-color:rgba(240,175,80,.55)}
.push-off-chip.hidden{display:none}
@media(max-width:820px){.push-off-chip span:last-child{display:none}}
.notices-button{position:relative;display:grid;place-items:center;font-size:17px}
.notices-button.has-unread{border-color:rgba(117,101,244,.5);background:#1b2136}
.notices-badge{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;padding:0 5px;display:grid;place-items:center;border-radius:99px;background:var(--rose);color:#fff;font-size:9px;font-weight:800;line-height:1;box-shadow:0 0 0 2px #0b0d17}

.notice-grid{margin-top:22px}
.notice-grid-head{display:grid;grid-template-columns:minmax(0,1fr) 62px 62px;align-items:center;gap:10px;padding:0 15px 8px}
.notice-grid-head b{color:var(--muted-2);font-size:9px;font-weight:800;letter-spacing:1.1px;text-transform:uppercase;text-align:center}
.notice-grid-row{display:grid;grid-template-columns:minmax(0,1fr) 62px 62px;align-items:center;gap:10px;margin-top:8px;padding:13px 15px;border:1px solid var(--border-soft);border-radius:12px;background:#141a27}
.notice-grid-row>span{min-width:0}
.notice-grid-row strong,.notice-grid-row small{display:block}
.notice-grid-row strong{font-size:13px}
.notice-grid-row small{color:var(--muted-2);font-size:10px;margin-top:4px;line-height:1.45}
.notice-grid-cell{display:grid;place-items:center;cursor:pointer}
.notice-grid-cell input{display:none}
.notice-grid-cell i{position:relative;width:43px;height:24px;flex:0 0 auto;border-radius:99px;background:#30374a;transition:.2s}
.notice-grid-cell i:after{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;border-radius:50%;background:#a9b1c3;transition:.2s}
.notice-grid-cell input:checked+i{background:var(--purple)}
.notice-grid-cell input:checked+i:after{transform:translateX(19px);background:#fff}

/* Плагины: возможности кабинета тумблерами.

   Строка — это `.switch-row`, ровно тот же готовый сосед, что и у остальных тумблеров настроек:
   те же 15px внутрь, та же рамка, тот же переключатель 43×24. Своего здесь только отступ между
   строками (у соседа он `margin-top:22px`, а в списке подряд это дыра) и подпись о подписке. */
.plugins-list{margin-top:18px;display:flex;flex-direction:column;gap:8px}
.plugins-list .switch-row{margin-top:0}
/* Недоступный по тарифу тумблер не «серый и молчит»: рядом написано, почему. Выключенная
   возможность и НЕДОСТУПНАЯ — разные вещи, и человек должен видеть какая именно. */
.plugins-list .switch-row.locked{opacity:.72;cursor:default}
.plugin-locked-note{display:block;margin-top:6px;color:var(--amber);font-size:10px}
.plugin-impact{display:block;margin-top:6px;color:#8490aa;font-size:10px}

/* Вкладки «Клиенты · Поставщики». Полоса — готовый `.orders-status-tabs`; здесь только место
   под неё, чтобы она не слипалась с шапкой и метриками. */
/* Переключатель сторон в шапке карточки. Полоса — готовый `.orders-status-tabs`, здесь
   только место под неё и размер помельче: это подпись к имени, а не главный орган. */
.customer-side-switch{width:max-content;max-width:100%;margin:10px 0 0}
.customer-side-switch button{min-height:27px;padding:0 10px;font-size:9px}

.notices-modal{width:min(720px,calc(100% - 28px));max-height:90vh}
.notices-modal>form{max-height:90vh;overflow:auto}
.notice-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:2px 0 11px}
.notice-tab{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border:1px solid var(--border-soft);border-radius:999px;background:#121824;color:#a5b0c7;font-size:10px;cursor:pointer;transition:.15s}
.notice-tab:hover{border-color:#4b5473;color:#dfe4f4}
.notice-tab.active{border-color:#7668e8;color:#fff;background:rgba(117,101,244,.15)}
.notice-tab.muted{opacity:.6}
.notice-tab b{padding:1px 5px;border-radius:99px;background:var(--rose);color:#fff;font-size:8px;font-weight:800}
.notices-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 13px;padding:11px 12px;border:1px solid var(--border-soft);border-radius:12px;background:#101520}
.notices-toolbar>span{color:#9da8c0;font-size:9px}
.notices-list{display:grid;gap:8px;max-height:510px;overflow:auto}
.notice-row{width:100%;display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:11px;padding:11px 12px;border:1px solid var(--border-soft);border-radius:13px;background:#121824;color:inherit;text-align:left;cursor:pointer;transition:.15s}
.notice-row:hover{border-color:#4b5473;background:#151c2b}
.notice-row.unread{border-color:rgba(117,101,244,.38);box-shadow:inset 3px 0 var(--purple-2);background:linear-gradient(100deg,rgba(117,101,244,.1),#121824 45%)}
.notice-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;background:rgba(54,202,239,.09)}
.notice-market{width:24px;height:24px;border-radius:7px;object-fit:cover}
.notice-dot{width:8px;height:8px;border-radius:50%;background:var(--cyan)}
.notice-copy{min-width:0}
.notice-copy strong,.notice-copy small,.notice-copy em{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.notice-copy strong{font-size:11px}
.notice-copy em{margin-top:5px;color:var(--muted-2);font-size:8px;font-style:normal}
.notice-copy small{margin-top:4px;color:#a5b0c7;font-size:8px}
.notice-row time{color:var(--muted-2);font-size:8px;white-space:nowrap}
@media(max-width:820px){.notices-modal>form{padding:18px}.notices-modal .modal-actions{position:sticky;bottom:-18px;margin:17px -18px -18px;padding:12px 18px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--border-soft);background:#111622}}
@media(max-width:520px){.notices-toolbar{align-items:flex-start;flex-direction:column}.notices-toolbar .button{width:100%}.notice-row{grid-template-columns:36px minmax(0,1fr)}.notice-icon{width:36px;height:36px}.notice-row time{grid-column:2}.notice-grid-head,.notice-grid-row{grid-template-columns:minmax(0,1fr) 50px 50px;gap:6px}}

/* Количество в заказе. Показываем только от двух: «× 1» рядом с суммой — шум, а вот «× 2»
   объясняет, почему сумма вдвое больше цены лота. Метрики списаны у соседней .order-share. */
.order-quantity{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;color:var(--cyan);background:rgba(54,202,239,.1);font-size:9px;font-weight:750}

/* Прайс лота на момент заказа. Подпись именно «по прайсу», а не «покупатель заплатил»: цена
   за штуку, а количество бывает больше единицы — второе врало бы на каждом таком заказе. */
.order-lot-price{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;color:var(--muted);background:rgba(143,155,184,.1);font-size:9px;font-weight:700;white-space:nowrap}
.order-lot-price.temporary{color:#ffd27a;background:rgba(255,189,69,.12)}

/* Цена лота в карточке заказа. Количество стоит рядом с ней, а не отдельной строкой: цена за
   штуку без множителя выглядит расхождением с суммой, а не умножением. */
.order-detail-quantity{margin-left:6px;padding:2px 6px;border-radius:999px;color:var(--cyan);background:rgba(54,202,239,.1);font-size:9px;font-weight:750}
.order-detail-note{display:block;margin-top:4px;color:var(--muted-2);font-size:9px}

/* Охват уведомлений — блок НАД сеткой категорий. Выделен рамкой и фоном намеренно: он режет
   поверх всего, что ниже, и в общем ряду читался бы как ещё две категории. */
.notice-scope{margin-top:20px;padding:15px 15px 13px;border:1px solid rgba(117,101,244,.3);border-radius:14px;background:rgba(117,101,244,.06)}
.notice-scope-head{margin:0;color:#c7cce0;font-size:12px;font-weight:750}
.notice-scope-head b{color:var(--purple-2)}
.notice-scope-head small{display:block;margin-top:5px;color:var(--muted-2);font-size:10px;font-weight:500;line-height:1.5}
.notice-scope .switch-row{margin-top:12px;background:#141a27}
.notice-scope-note{display:block;margin-top:12px;color:var(--muted-2);font-size:9px;line-height:1.5}
/* Между охватом и сеткой — воздух, иначе первая категория липнет к «Событиям без игры». */
.notice-grid{margin-top:26px}
.notice-grid-head>span{color:var(--muted-2);font-size:9px;font-weight:800;letter-spacing:1.1px;text-transform:uppercase}

/* ── Телефон: марка и есть переключатель кабинета ────────────────────────────
   Лента площадок в шапке телефона убрана: она стояла вплотную за маркой, а марка
   меняет ширину при переключении («FunPay CRM» против «G2G CRM»), и лента физически
   ездила по шапке. На десктопе, где она живёт в сайдбаре отдельной строкой, всё
   осталось как было. */
.mobile-brand-caret{flex:0 0 auto;color:var(--muted-2);font-size:11px;line-height:1;font-style:normal}
.mobile-brand{min-height:44px;padding:0 6px 0 0;border:0;background:transparent;cursor:pointer;text-align:left}
.mobile-brand strong{display:flex;align-items:center;gap:6px;font-size:15px;letter-spacing:-.2px;white-space:nowrap}

.market-sheet{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end}
.market-sheet.hidden{display:none}
.market-sheet-backdrop{position:absolute;inset:0;background:rgba(6,8,15,.6);backdrop-filter:blur(3px)}
.market-sheet-card{position:relative;width:100%;display:flex;flex-direction:column;gap:6px;
  padding:16px 14px calc(18px + env(safe-area-inset-bottom));
  border-radius:20px 20px 0 0;border-top:1px solid var(--border);background:#141a27;
  box-shadow:0 -18px 50px rgba(0,0,0,.5)}
.market-sheet-card .eyebrow{margin:0 0 4px}
.market-sheet-list{display:flex;flex-direction:column;gap:4px}
/* Строка во всю ширину и 58 px высотой: сюда попадают пальцем. Прежняя лента давала
   по 43 px на площадку, и обе — без единой подписи. */
.market-sheet-row{width:100%;min-height:58px;display:grid;grid-template-columns:38px minmax(0,1fr) 18px;
  align-items:center;gap:12px;padding:0 12px;border:1px solid transparent;border-radius:14px;
  background:transparent;color:#c3ccdd;text-align:left;cursor:pointer}
.market-sheet-row:hover{background:#1b2233}
.market-sheet-row.picked{color:#fff;border-color:rgba(117,101,244,.3);
  background:linear-gradient(100deg,rgba(117,101,244,.18),rgba(117,101,244,.05))}
.market-sheet-row img{width:38px;height:38px;border-radius:12px;object-fit:cover;background:#20273a}
.market-sheet-row span{min-width:0;display:block}
.market-sheet-row strong{display:block;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.market-sheet-row small{display:block;margin-top:2px;color:var(--muted-2);font-size:10px}
.market-sheet-tick{color:transparent;font-size:14px;font-style:normal;text-align:center}
.market-sheet-row.picked .market-sheet-tick{color:var(--purple-2)}
/* Метрики списаны у соседа — .market-sheet-row. Кнопка стояла с другим скруглением (12 против
   14), без боковых отступов и с текстом по центру, тогда как весь список над ней выровнен по
   левому краю: в ряду из четырёх элементов пятый смотрел в другую сторону. Отступ сверху тоже
   свой не нужен — карточка уже расставляет детей через gap, и margin складывался с ним. */
.market-sheet-extra{min-height:44px;display:flex;align-items:center;padding:0 12px;
  border:1px solid var(--border);border-radius:14px;
  background:#171d2b;color:#aab5d0;font-size:12px;text-align:left;cursor:pointer}
.market-sheet-extra:hover{border-color:#44506f;color:#fff}

/* Лист — только для телефона. На широком экране площадки переключает лента в сайдбаре, и
   открывать поверх неё ещё и лист незачем. */
@media(min-width:821px){
  .market-sheet{display:none !important}
  .mobile-brand-caret{display:none}
}
@media(max-width:820px){
  .product-switch-mobile{display:none !important}
}

/* ── Карточка заказа: цена покупателя и отзыв ────────────────────────────────
   Цена покупателя живёт ПОД чистой суммой: это вторая половина одного числа —
   сколько заплатили и сколько дошло, — а не самостоятельный факт в списке ниже. */
.order-detail-paid{display:block;margin-top:7px;color:var(--muted);font-size:11px;line-height:1.5}
.order-detail-paid em{display:block;color:var(--muted-2);font-size:9px;font-style:normal;margin-top:1px}

.order-detail-review{margin-top:14px;padding-top:13px;border-top:1px solid var(--border-soft);
  display:flex;flex-direction:column;gap:8px}
.order-detail-review.hidden{display:none}
.order-detail-review-title{font-size:12px}
.order-detail-review>small{color:var(--muted-2);font-size:11px}
.order-detail-review-fail{color:var(--amber)!important}
.order-detail-review-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.order-detail-review-head small{color:var(--muted-2);font-size:10px}
.order-detail-review-text{margin:0;color:#dfe4f4;font-size:12px;line-height:1.6}
.order-detail-review-answer{padding:9px 11px;border:1px solid var(--border-soft);border-radius:11px;
  background:#131824}
.order-detail-review-answer small{display:block;color:var(--muted-2);font-size:9px;
  text-transform:uppercase;letter-spacing:.08em}
.order-detail-review-answer p{margin:5px 0 0;color:#dfe4f4;font-size:12px;line-height:1.55}
/* Неотвеченный отзыв виден на просмотр, а не только на прочтение: у него своя рамка, потому
   что это единственное состояние карточки, требующее действия. */
.order-detail-review-answer.empty{border-color:rgba(255,189,69,.28);background:rgba(255,189,69,.06)}
.order-detail-review-answer.empty small{color:var(--amber)}
.order-detail-review button{align-self:flex-start}

/* Заказ в выданном чате — кнопка, а не подпись: карточка открывается поверх досье. */
button.staff-assignment-order{width:100%;display:block;text-align:left;font:inherit;cursor:pointer}
/* Подсветка остаётся янтарной: блок заказа этим цветом и опознают в досье, а серая рамка
   под курсором читалась бы как «элемент погас». */
button.staff-assignment-order:hover{border-color:rgba(255,202,107,.5);background:rgba(255,202,107,.13)}

/* ── Досье сотрудника: вкладки вместо простыни ───────────────────────────────
   Метрика списана у соседнего ряда переключателей (.product-switch-btn):
   те же 8 px скругления и тот же шрифт — иначе две полосы в одном окне читаются
   как из разных программ. */
.staff-tabs{display:flex;flex-wrap:wrap;gap:4px;margin:16px 0 12px;padding:4px;
  border:1px solid var(--border-soft);border-radius:12px;background:#10141f}
.staff-tab{min-height:34px;padding:0 13px;border:0;border-radius:8px;background:transparent;
  color:var(--muted-2);font:inherit;font-size:12px;font-weight:650;white-space:nowrap;cursor:pointer;
  transition:color .16s,background .16s}
.staff-tab:hover{color:#dfe4f4}
.staff-tab.active{background:linear-gradient(135deg,var(--purple),var(--purple-2));color:#fff;
  box-shadow:0 6px 16px rgba(0,0,0,.24)}

/* Окно переписки с сотрудником. Высота лентой ограничена: разговор растёт без предела, и
   окно, которое растёт вместе с ним, — это ровно то, от чего вкладки и спасают. */
.staff-chat-modal .staff-direct-list{max-height:min(52vh,420px);overflow-y:auto;
  display:flex;flex-direction:column;gap:8px;margin:4px 0 12px}
.staff-chat-modal .staff-direct-compose{display:flex;gap:8px}
.staff-chat-modal .staff-direct-compose input{flex:1;min-width:0}

/* ── Форма аватарки: одна переменная на весь кабинет ─────────────────────────
   Скруглений у аватарок было ДЕВЯТЬ разных на одну и ту же сущность — от 6 px в
   чипе аккаунта до 50% у мелкого отзыва. Каждое лежало своим правилом, часть
   перебивалась соседним, и «сделать круглыми» означало найти и поправить все
   двадцать пять. Теперь радиус один и живёт здесь.

   Форма следует ПЛОЩАДКЕ, а не вкусу: у FunPay аватарки круглые, у G2G —
   скруглённый квадрат, и кабинет должен выглядеть как та площадка, в которой
   человек сейчас работает.

   Считается по текущей площадке кабинета (`body[data-market]`), и сегодня это
   верно: разделы показывают одну площадку за раз. Когда появится общая лента
   (ARCH-6) и в одном списке встретятся обе, форму придётся спрашивать у СТРОКИ,
   а не у кабинета — переменную тогда переопределяют на самом элементе. */
:root{--avatar-radius:50%}
body[data-market="g2g"]{--avatar-radius:14px}

/* Светлая кайма по краю круга — это фон САМОЙ картинки: аватарки на площадке
   нарисованы под квадрат, подложка доходит до края, и круглая маска оставляет
   её тонким ободком. Отрезаем три процента по краю самой картинки — коробка при
   этом не меняется, соседи не двигаются.

   Где браузер этого не умеет, всё остаётся ровно как было: не поддержанное
   свойство просто игнорируется, картинка рисуется целиком. */
img.chat-avatar,img.chat-message-avatar,img.account-avatar,img.review-avatar,
img.review-account-avatar,img.customer-card-avatar,img.customer-dialog-avatar-image,
img.staff-avatar,img.staff-member-avatar,img.telegram-member-avatar,
img.chat-filter-avatar,img.orders-filter-avatar,img.finance-filter-avatar,
img.order-account-avatar,img.finance-row-avatar,img.lot-raise-avatar,
img.customer-detail-account-avatar,img.customer-account-chip-avatar{object-view-box:inset(3%)}

/* Карточка лота ВНУТРИ сообщения — формой как карточка оффера у самой G2G:
   полоска-шапка с номером, под ней название и цены крупно внизу.

   Имя именно chat-message-lot, а не chat-lot-card: второе занято карточкой выбора лота
   в диалоге отправки, с min-height 82px и курсором-рукой — в пузыре всё это досталось бы молча.
   white-space обязателен: у пузыря pre-wrap, и без сброса разметка получила бы переносы
   там, где их никто не ставил. */
.chat-message-lot{display:block;min-width:min(238px,100%);max-width:430px;margin:0 -3px 7px;border:1px solid rgba(117,101,244,.3);border-radius:12px;background:rgba(12,16,26,.42);white-space:normal;overflow:hidden}
.chat-message-lot.inactive{border-color:rgba(255,189,69,.34)}
.chat-message-lot-head{display:flex;align-items:center;gap:8px;padding:6px 10px;border-bottom:1px solid rgba(117,101,244,.2);background:rgba(255,255,255,.025)}
.chat-message-lot-head small{flex:0 0 auto;color:#8f83ff;font-size:8px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.chat-message-lot.inactive .chat-message-lot-head small{color:var(--amber)}
.chat-message-lot-head em{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted-2);font-size:8px;font-style:normal}
.chat-message-lot-body{display:block;padding:9px 11px 10px}
.chat-message-lot-body strong{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;font-size:11.5px;line-height:1.35}
.chat-message-lot-meta{display:block;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted-2);font-size:8px}
.chat-message-lot-link{display:block;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#8f83ff;text-decoration:none;font-size:8px}
.chat-message-lot-link:hover{text-decoration:underline}
/* Цена покупателя — янтарная, своя доля — бирюзовая: те же два цвета, что в остальном
   кабинете разделяют «сумму» и «пришло на счёт». */
.chat-message-lot-prices{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:10px}
.chat-message-lot-prices>span{display:block}
.chat-message-lot-prices b{display:block;color:var(--amber);font-size:15px;line-height:1.15;letter-spacing:-.2px;white-space:nowrap}
.chat-message-lot-prices>span+span b{color:var(--teal)}
.chat-message-lot-prices small{display:block;margin-top:2px;color:var(--muted-2);font-size:7px;text-transform:uppercase;letter-spacing:.4px}
.chat-message-lot-edit{width:24px;height:24px;display:grid;place-items:center;flex:0 0 auto;margin:-3px -4px -3px 0;border:1px solid #35405a;border-radius:8px;background:#1a2030;color:#b8b0ff;font-size:11px;cursor:pointer;transition:.15s}
.chat-message-lot-edit:hover{border-color:#6d61df;background:#222840;color:#fff}
/* В своём пузыре фон фиолетовый, и сиреневые подписи на нём не читаются. */
.chat-message.outgoing .chat-message-lot{border-color:rgba(255,255,255,.28);background:rgba(12,16,26,.26)}
.chat-message.outgoing .chat-message-lot-head{border-bottom-color:rgba(255,255,255,.18);background:rgba(255,255,255,.06)}
/* Карточка заказа в переписке. Та же форма, что у карточки лота, — человек не должен заново
   искать глазами, где название и где сумма. Отличий два, и оба про смысл: рамка холоднее
   (это не товар, а сделка), и стадия в шапке рисуется теми же классами, что и в разделе
   «Заказы» (.g2g-order-state.alarm/.work/.done/…), чтобы одно и то же состояние выглядело
   одинаково по всему кабинету. */
.chat-message-order{border-color:rgba(110,168,255,.28)}
.chat-message-order .chat-message-lot-head{border-bottom-color:rgba(110,168,255,.2)}
/* Стадия перебивает общий стиль подписи в шапке: там 8px и фиолетовый на все карточки,
   а у стадии свой цвет по состоянию и своя подложка. Правило по двум классам, потому что
   .chat-message-lot-head small по одному классу и тегу его бы перебило. */
.chat-message-order .chat-message-lot-head small.g2g-order-state{padding:2px 6px;border-radius:6px;font-size:8px;letter-spacing:.3px}
.chat-message-order.alarm{border-color:rgba(255,189,69,.4)}

.chat-message.outgoing .chat-message-lot-head small{color:rgba(255,255,255,.82)}
.chat-message.outgoing .chat-message-lot-head em{color:rgba(255,255,255,.6)}
.chat-message.outgoing .chat-message-lot-meta{color:rgba(255,255,255,.62)}
.chat-message.outgoing .chat-message-lot-link{color:rgba(255,255,255,.8)}
.chat-message.outgoing .chat-message-lot-prices small{color:rgba(255,255,255,.6)}
.chat-message.outgoing .chat-message-lot-prices b{color:#ffe6a6}
.chat-message.outgoing .chat-message-lot-prices>span+span b{color:#a9f0e2}
.chat-message.outgoing .chat-message-lot-edit{border-color:rgba(255,255,255,.34);background:rgba(12,16,26,.3);color:#fff}
@media(max-width:560px){.chat-message-lot-prices{gap:6px 16px}.chat-message-lot-prices b{font-size:14px}}

.activity-who{color:var(--muted-2);opacity:.72;font-size:11px;margin-top:2px}

/* ── Автовыдача ─────────────────────────────────────────────────────────────────────────────
   Слева дерево «папка → выдача», справа склад выбранной. Перенос у ряда бейджей и здесь: ряд
   без него режется молча, а многоточие у inline-flex не работает вовсе. */
.delivery-layout{display:grid;grid-template-columns:minmax(220px,280px) minmax(0,1fr);gap:16px;align-items:start}
/* Папок нет — колонки дерева нет тоже. Иначе пустая колонка в 280 пикселей остаётся на
   месте, и блок «здесь пусто» уезжает вправо от заголовка. */
.delivery-layout.blank{grid-template-columns:minmax(0,1fr)}
.delivery-layout.blank .delivery-tree{display:none}
.delivery-tree{display:flex;flex-direction:column;gap:10px;min-width:0}
.delivery-folder{border:1px solid var(--border);border-radius:14px;background:#131824;padding:10px}
.delivery-folder header{display:flex;align-items:center;gap:8px;min-width:0;margin-bottom:6px;cursor:grab}
.delivery-folder.dragging{opacity:.4}
.delivery-folder.over{border-color:rgba(117,101,244,.65);box-shadow:inset 0 2px 0 rgba(117,101,244,.9)}
.delivery-folder header strong{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.delivery-folder-actions{display:flex;gap:4px;flex:0 0 auto}
.delivery-pool{display:flex;align-items:center;gap:8px;width:100%;min-width:0;padding:7px 9px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--muted-2);font-size:12px;text-align:left;cursor:pointer}
.delivery-pool:hover{background:#1a2130}
.delivery-pool.active{border-color:rgba(117,101,244,.45);background:rgba(117,101,244,.12);color:#e8e6ff}
.delivery-pool span{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Ручка перетаскивания. Видна приглушённо всегда: скрытая до наведения ручка — это возможность,
   о которой человек не узнает. */
/* touch-action:none — иначе палец на ручке листает страницу вместо перестановки. Ручка сделана
   покрупнее и с отступами: попасть в неё пальцем надо с первого раза. */
.delivery-grip{flex:0 0 auto;font-style:normal;font-size:13px;color:#3f4864;cursor:grab;line-height:1;padding:4px 2px;margin:-4px 0;touch-action:none;user-select:none}
.delivery-pool:hover .delivery-grip{color:#6b7699}
.delivery-pool.dragging{opacity:.4}
.delivery-pool.over{border-color:rgba(117,101,244,.65);box-shadow:inset 0 2px 0 rgba(117,101,244,.9)}
.delivery-pool em{flex:0 0 auto;font-style:normal;font-size:11px;color:var(--muted-2)}
.delivery-pool em.low{color:#ffb066}
.delivery-body{min-width:0;display:flex;flex-direction:column;gap:14px}
.delivery-head{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap}
.delivery-head div:first-child{flex:1 1 240px;min-width:0}
.delivery-head small{display:block;color:var(--muted-2);font-size:10px;letter-spacing:.08em;text-transform:uppercase}
.delivery-head h2{margin:2px 0 0;font-size:18px;overflow-wrap:anywhere}
.delivery-head-actions{display:flex;gap:8px;flex-wrap:wrap}
.delivery-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.delivery-add{border:1px solid var(--border);border-radius:14px;background:#131824;padding:14px;display:flex;flex-direction:column;gap:12px}
/* Ключи — моноширинным: в них важна каждая буква, и «I» рядом с «l» человек обязан различать. */
.delivery-add textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.6}
.delivery-add-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.delivery-items{display:flex;flex-direction:column;gap:6px}
/* Перенос в БАЗОВОМ правиле, а не только на узком экране: длинный ключ не помещается рядом с подписью и на широком, и без переноса он схлопывал сам себя в столбец из одной буквы. */.delivery-item{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;min-width:0;padding:8px 10px;border:1px solid var(--border-soft);border-radius:10px;background:#141a27}
/* Код виден ЦЕЛИКОМ и копируется нажатием. Многоточие на конце делало длинный ключ нечитаемым на телефоне, а выдать его руками надо как раз тогда, когда автовыдача не сработала — то есть в спешке и обычно с телефона. */.delivery-code{flex:1 1 220px;min-width:0;padding:0;border:0;background:none;text-align:left;font:inherit;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.35;color:#d7e2ff;white-space:pre-wrap;overflow-wrap:anywhere;cursor:pointer}.delivery-code:hover{color:#fff}.delivery-code:active{opacity:.7}
.delivery-item span{flex:1 1 auto;min-width:0;color:var(--muted-2);font-size:11px}
/* Проданный — зачёркнут, но читается: это отчёт, а не мусор. */
.delivery-item.sold .delivery-code{text-decoration:line-through;color:var(--muted-2)}
.delivery-item.sold{background:transparent;border-style:dashed}
.delivery-item.reserved .delivery-code{color:#ffd9a8}
.delivery-hint{padding:14px;border:1px dashed var(--border);border-radius:12px;color:var(--muted-2);font-size:12px}
/* Пустой раздел — не обрывок в углу, а центр страницы: человек попадает сюда первым делом. */
.delivery-empty{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:44px 24px;border:1px dashed var(--border);border-radius:16px;background:#131824;color:var(--muted-2);font-size:12px}
.delivery-empty strong{color:var(--text);font-size:15px}
.delivery-empty small{max-width:520px;line-height:1.6}
.delivery-empty .button{margin-top:6px}
@media(max-width:860px){.delivery-layout{grid-template-columns:1fr}}
.delivery-lots{border:1px solid var(--border);border-radius:14px;background:#131824;padding:14px;display:flex;flex-direction:column;gap:10px}
.delivery-lots-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.delivery-block-title{flex:1 1 auto;font-size:12px;font-weight:650;color:#bac3d6}
.delivery-lot{display:flex;align-items:flex-start;gap:10px;min-width:0;padding:10px 12px;border:1px solid var(--border-soft);border-radius:10px;background:#141a27}
.delivery-lot-text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}
/* Название целиком, как и в окне выбора: обрезка прячет ровно то, чем лоты различаются. */
.delivery-lot strong{font-size:12px;font-weight:500;line-height:1.45;white-space:normal;overflow-wrap:anywhere}
.delivery-lot span{color:var(--muted-2);font-size:11px}
.delivery-lot em{font-style:normal;color:#8fd6a0}
/* Лот без кода — это лот, покупка по которому не опознается. Видно должно быть сразу. */
.delivery-lot.nocode{border-color:rgba(240,120,120,.35);background:rgba(240,120,120,.07)}
.delivery-lot.nocode em{color:#ff9a9a}
.delivery-pick-results{max-height:min(48vh,420px)}
.delivery-pick-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
/* Поиск — во всю ширину под тремя отборами: по нему набирают, а не выбирают. */
.delivery-pick-search{grid-column:1/-1}
.delivery-pick-count{margin-top:10px;color:var(--muted-2);font-size:11px}
.delivery-pick-results{display:flex;flex-direction:column;gap:6px;max-height:340px;overflow-y:auto;margin-top:12px}
/* Название лота — в НЕСКОЛЬКО строк, целиком. У этого продавца лоты различаются хвостом
   («• 6 ЧАСОВ» против «• 1 ДЕНЬ»), и обрезка делает пять разных лотов одинаковыми на вид. */
.delivery-pick{display:flex;flex-direction:column;align-items:stretch;gap:4px;min-width:0;width:100%;padding:10px 12px;border:1px solid var(--border-soft);border-radius:10px;background:#141a27;color:var(--text);text-align:left;cursor:pointer}
.delivery-pick:hover{border-color:rgba(117,101,244,.45);background:rgba(117,101,244,.1)}
.delivery-pick strong{font-size:12px;font-weight:500;line-height:1.45;white-space:normal;overflow-wrap:anywhere}
.delivery-pick span{color:var(--muted-2);font-size:11px}
.delivery-pick span b{color:#ffb066;font-weight:500}
.delivery-pick.taken{opacity:.5;cursor:not-allowed}
@media(max-width:640px){.delivery-pick-filters{grid-template-columns:1fr}.delivery-item{row-gap:10px}.delivery-code{flex:1 1 100%;font-size:13px}}
/* Служебная строка автовыдачи в редакторе лота: видна, но не редактируется. Показать её
   обязательно — человек должен понимать, что уедет покупателю; дать править нельзя — снеся её,
   он молча выключит выдачу по этому лоту. */
.locked-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px;padding:8px 10px;border:1px dashed rgba(117,101,244,.45);border-radius:10px;background:rgba(117,101,244,.08)}
.locked-line i{font-style:normal;font-size:12px;opacity:.8}
.locked-line code{font-size:12px;color:#c4bcff;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.locked-line small{flex:1 1 100%;color:var(--muted-2);font-size:10px}
/* Точка состояния умеет гаснуть. Раньше не умела — и в этом была вся беда. */
.status-dot.bad{background:#ff7a7a;box-shadow:0 0 0 4px rgba(255,122,122,.12)}
.status-dot.warn{background:var(--amber);box-shadow:0 0 0 4px rgba(255,189,69,.12)}
.status-dot.idle{background:#5c6784;box-shadow:0 0 0 4px rgba(92,103,132,.12)}
.sidebar-status.bad{border-color:rgba(255,122,122,.35);background:rgba(255,122,122,.06)}

/* ── ПАНЕЛЬ РАЗДЕЛОВ: группы и свёртка до значков ────────────────────────────────────────────
   Заголовок группы. Цвет носит и он, и значки его кнопок — одно и то же значение приезжает
   из layoutNav переменной --g, чтобы палитра жила в одном месте, а не в двух. */
.nav-group{display:flex;align-items:center;height:26px;margin:13px 0 3px;padding:0 14px;
  font-size:10px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:var(--g,#66718f);white-space:nowrap}
.nav-group.empty{display:none}
.nav-item .nav-icon{color:var(--g,#8490ae)}

/* Кнопка свёртки — над состоянием, у нижнего края. */
.nav-rail-toggle{margin-top:auto;margin-bottom:10px;border:1px solid var(--border-soft);background:transparent;
  display:flex;align-items:center;min-height:40px;padding:0;border-radius:12px;color:var(--muted-2);
  cursor:pointer;transition:.16s}
.nav-rail-toggle:hover{border-color:#44506f;color:var(--text)}
.nav-rail-icon{flex:0 0 42px;text-align:center;font-size:15px}
.sidebar-status{margin-top:0}

/* Панель обязана прокручиваться. Разделов пятнадцать, к ним прибавились заголовки групп — и на
   ноутбучном экране список перестал помещаться целиком: нижние разделы просто обрезались, а
   прокрутки у панели не было вовсе (прокручивалась только страница справа).
   Прокручивается СПИСОК, а не панель: марка, переключатель площадок, кнопки и состояние
   обязаны стоять на месте — уехавшее наверх состояние аккаунтов человек не найдёт никогда. */
.nav-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;margin:0 -15px;padding:0 15px;scrollbar-width:none}
.nav-scroll::-webkit-scrollbar{width:0}
/* Сам список больше не прокручивается: прокрутка одна на весь слой — и на закреплённые, и на
   разделы. Иначе добавление закреплённого не двигало черту, а листало ряд отдельно. */
.sidebar .nav{display:flex;flex-direction:column;gap:7px}

/* ── Личная раскладка панели ────────────────────────────────────────────────────────────────
   Три вещи и ровно три: СПИСОК, БЫСТРЫЙ РЯД над ним и ЯЩИК спрятанного под ним. Панель всегда
   открыта — свёртки до полосы значков больше нет: она анимировала ширину, то есть свойство
   раскладки, и потому дёргалась, а группировка в 72 px не работала вовсе.

   Мерить эти правила надо в браузере через getComputedStyle, а не глазами по файлу: у части
   селекторов выше по файлу лежат перебитые копии, и «что написано» здесь не равно «что применится». */

/* Строка списка. Переход НАЗВАН по свойствам. Сокращение `transition:.18s ease` означает `all` —
   браузер начинает анимировать каждое изменение подряд, включая те, что мы делаем пачкой при
   свёртке группы и в конце перетаскивания. Ехать здесь должны только цвета. */
.nav-item{transition:background .16s ease,color .16s ease,border-color .16s ease}

/* Значок держит цвет СВОЕЙ ГРУППЫ всегда — в том числе у открытого раздела.
   Выше по файлу стоят две копии `.nav-item.active .nav-icon{color:var(--purple-2)}`, и обе
   перекрашивали значок открытой строки в фиолетовый. Активная строка и без того выделена фоном и
   полосой слева; перекраска значка ломала единственный признак, по которому раздел находится
   глазом, — и на G2G, где выделение оранжевое, фиолетовый значок был просто чужим. */
.nav-item.active .nav-icon{color:var(--g,#8490ae)}

/* `.nav-dimmed` отсюда снят: класс не ставит никто — ни app.js, ни разметка. Приглушением
   спрятанных строк занимаются `body.nav-vault-open .nav-hidden` и `body.nav-editing .nav-hidden`. */
.nav-hidden{display:none!important}

/* Ящик группы. Свернуть её `display:none` у каждой строки нельзя — исчезновение по display
   анимировать нечем, и группа схлопывалась рывком.

   Едет ВЫСОТА, и число ей проставляет navSetFold в момент щелчка. Модная сетка `1fr` → `0fr`
   здесь не работает: проверено прямо в странице — при `0fr` строка всё равно разрешается в
   max-content, то есть в полную высоту. А потолок «на глаз» вместо замера съедает первую треть
   анимации: движение начинается не сразу, и рывок остаётся. */
/* flex:0 0 auto ОБЯЗАТЕЛЕН. Ящик — гибкий элемент прокручиваемого списка, а `overflow:hidden`
   обнуляет его автоминимум: без запрета на сжатие все пять групп ужимались до одной строки, лишь
   бы уместиться по высоте. На экране это выглядит как пропавшие разделы, а не как раскладка. */
.nav-fold{flex:0 0 auto;display:flex;flex-direction:column;gap:7px;overflow:hidden;opacity:1;
  transition:max-height .24s cubic-bezier(.4,0,.2,1),opacity .16s ease}
.nav-fold.collapsed{max-height:0;opacity:0}
.nav-fold.empty{display:none}

/* ── Быстрый ряд ─────────────────────────────────────────────────────────────────────────
   Закреплённые НАД списком, числом сколько угодно. Ряд и список лежат в одном прокручиваемом
   слое и листаются вместе: добавил закреплённое — черта под ним уехала вниз. Пусто — ряда нет
   вовсе, черты под ним тоже. */
/* Ряд НЕ прокручивается сам и высоты не ограничивает. Прокрутка одна на весь слой: добавил
   закреплённое — черта под ним уехала вниз, листаешь панель целиком. Своя прокрутка у ряда
   здесь уже стояла и была неправильной — ряд листался отдельно от списка. */
.nav-quick{display:flex;flex-direction:column;flex:0 0 auto;
  margin:0 0 10px;padding:0 0 10px;border-bottom:1px solid var(--border-soft)}
.nav-quick.hidden{display:none}
/* Подпись ряда метриками повторяет заголовок группы: это тот же ярус, и разные размеры букв на
   одном ярусе читаются как разные сущности. */
.nav-quick-cap{display:block;height:26px;margin:0 0 3px;padding:0 14px;line-height:26px;
  font-size:10px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:#66718f}
/* В ряду стоят ТЕ ЖЕ строки, что и в списке — не копии, а сами узлы. Поэтому своих правил вида
   у ряда нет вовсе: строка выглядит одинаково, где бы ни стояла, и цвет уносит с собой из своей
   группы. Копия здесь стоила бы второго счётчика и немых кнопок — слушатель `[data-page]`
   вешается один раз при старте, и всё, что создано позже, не открывает ничего. */
#navPinned{display:flex;flex-direction:column;gap:7px}

/* ── Ящик спрятанного ───────────────────────────────────────────────────────────────────
   Строка висит всегда, пока есть что прятать. У восьми разделов панель — ЕДИНСТВЕННАЯ дверь:
   ни уведомления, ни ссылки, ни адреса у них нет, и без этой строки «спрятал» означало бы
   «потерял». */
.nav-vault{display:flex;align-items:center;gap:10px;width:100%;min-height:38px;margin:8px 0 6px;
  padding:0 14px;border:1px dashed var(--border-soft);border-radius:12px;background:transparent;
  color:var(--muted-2);font-size:12px;cursor:pointer;transition:border-color .16s ease,color .16s ease}
.nav-vault.hidden{display:none}
.nav-vault:hover{border-color:#44506f;color:var(--text)}
.nav-vault.on{border-style:solid;border-color:rgba(117,101,244,.45);color:var(--text);background:rgba(117,101,244,.1)}
.nav-vault-icon{flex:0 0 18px;text-align:center}
.nav-vault .nav-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-vault-count{margin-left:auto;min-width:20px;padding:1px 6px;border-radius:8px;background:#1d2436;
  color:#c3ccdd;font-size:11px;font-weight:700;text-align:center}

/* Ящик открыт — спрятанные показываются на своих местах приглушёнными. Специфичность здесь выше,
   чем у правил свёртки, поэтому строка достаётся и из свёрнутой группы: иначе «спрятал раздел, а
   потом свернул его группу» снова запирало бы дверь.

   <b>`:not(.hidden):not(.access-hidden)` здесь ОБЯЗАТЕЛЬНЫ.</b> Эти два класса — не «человек убрал
   из панели», а «раздела здесь нет вовсе»: `.hidden` вешает фильтр площадки, `.access-hidden` —
   выдача прав. Оба гасят строку через `display:none!important`, но у правила ниже специфичность
   выше, и без отсечки оно их перебивало: спрятал «Заказы» на FunPay, открыл ящик на G2G — и
   фунпейская кнопка появилась в чужом кабинете. У сотрудника так же всплывал раздел, которого ему
   не выдавали. Список спрятанного один на обе площадки — он и не может отличить одно от другого,
   отличать обязано правило вида. */
body.nav-vault-open .nav-hidden:not(.hidden):not(.access-hidden){display:flex!important;opacity:.5}
body.nav-vault-open .nav-hidden .nav-tools{display:flex}
/* Из ящика раздел ВОЗВРАЩАЕТСЯ — но не переставляется и не закрепляется: перекладывать то, чего
   в панели нет, незачем, и лишние две кнопки в приглушённой строке читаются как мусор. */
body.nav-vault-open:not(.nav-editing) .nav-hidden .nav-tools i:not([data-nav-hide]){display:none}

/* ── Группы ───────────────────────────────────────────────────────────────────────────────
   Заголовок — кнопка свёртки со стрелкой. Стрелка стоит сразу за подписью, а не у правого края:
   у правого края её пришлось бы искать глазом, а она и есть указание «сюда нажимать». */
.nav-group{position:relative;cursor:pointer;justify-content:flex-start;gap:7px}
.nav-group:hover .nav-chevron{opacity:1}
.nav-chevron{font-style:normal;font-size:9px;opacity:.55;line-height:1;
  transition:transform .24s cubic-bezier(.4,0,.2,1),opacity .16s ease}
.nav-group.collapsed .nav-chevron{transform:rotate(-90deg)}
/* Правила, гасившего кнопки у заголовка группы, здесь больше нет: с 02.09 заголовок вовсе не
   получает `.nav-tools` — layoutNav строит его как подпись со стрелкой. Гасить нечего. */

/* ── Кнопки строки ──────────────────────────────────────────────────────────────────────── */
.nav-tools{display:none;align-items:center;gap:2px;margin-left:auto}
body.nav-editing .nav-tools{display:flex}
body.nav-editing .nav-item .nav-badge{display:none}
.nav-tools i{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;color:#66718f;cursor:pointer}
.nav-tools i:hover{background:#1d2436;color:#f6f7ff}
.nav-tools i.on{color:var(--purple-2)}
.nav-tools i svg{width:15px;height:15px;display:block}
/* Ручка ищется ПО ПРИЗНАКУ, а не по классу. При переписывании панели признак остался, а класс
   потерялся — и правило молча перестало применяться: на телефоне палец листал бы панель вместо
   перетаскивания. Признак один и тот же и в разметке, и в обработчике, и здесь. */
.nav-tools i[data-nav-grip]{cursor:grab;touch-action:none}

/* Перетаскиваемая строка. Копия была одна на `.nav-item` и вторая на пару с `.nav-group` —
   первая целиком перебивалась второй и не давала ничего. Осталась одна. */
/* Только `.nav-item`: заголовок группы с 02.09 не таскается вовсе — ручка есть лишь у
   закреплённых строк, а они всегда разделы. */
.nav-item.dragging{opacity:.92;background:#1d2436;border-radius:12px;
  box-shadow:0 10px 24px rgba(0,0,0,.45);cursor:grabbing}

.nav-rail-toggle.on{border-color:rgba(117,101,244,.5);background:rgba(117,101,244,.12);color:var(--text)}

/* В режиме настройки и при открытом ящике свёрнутые группы РАСКРЫВАЮТСЯ. Иначе спрятанная строка
   внутри свёрнутой группы недостижима и там, и там — то есть скрытие снова запирало бы раздел. */
/* `!important` здесь обязателен: высоту свёрнутого ящика ставит navSetFold прямо в атрибут, а
   обычное правило встроенному стилю проиграет. */
body.nav-editing .nav-fold,
body.nav-vault-open .nav-fold{max-height:none!important;opacity:1}
body.nav-editing .nav-fold.empty,
body.nav-vault-open .nav-fold.empty{display:flex}
/* Та же отсечка, что и у ящика: режим настройки показывает СВОЁ спрятанное, а не разделы чужой
   площадки и не то, что человеку не выдано. */
body.nav-editing .nav-hidden:not(.hidden):not(.access-hidden){display:flex!important;opacity:.45}

/* ── Нижний ряд телефона ────────────────────────────────────────────────────────────────
   Пять колонок: четыре закреплённых плюс «Ещё». Раньше кнопки стояли списком прямо в разметке,
   и сетка растягивалась до девяти колонок — подпись ужималась до 5,8 px и переставала читаться.
   Правила ниже перебивают ту лесенку @media: они позже по файлу при равной специфичности. */
/* Ряд перестал делить ширину поровну: потолка на число закреплённых больше нет, и пять равных
   колонок при десяти кнопках дали бы подпись в пять пикселей. У кнопки своя ширина, дорожка
   листается вбок, «Ещё» стоит у правого края и не уезжает.

   <b>ПРАВИЛО ОБЯЗАНО СТОЯТЬ В МЕДИАЗАПРОСЕ.</b> Базовое `.mobile-nav{display:none}` лежит в самом
   начале файла, а показывается ряд только внутри `@media(max-width:820px)`. Написанное на верхнем
   уровне `display:flex` перебило базовое — и нижний ряд телефона вылез на рабочем столе, поверх
   всего. Ровно это и выкатилось в v364. */
@media(max-width:820px){
  .mobile-nav{display:flex;align-items:stretch;gap:0}
}
.mobile-nav-track{flex:1 1 auto;min-width:0;display:flex;gap:0;overflow-x:auto;overflow-y:hidden;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:none}
.mobile-nav-track::-webkit-scrollbar{height:0}
/* Без примагничивания к центру: «center» вместе с подводом открытого раздела в середину и давал
   рывок ленты под пальцем (06.10). Лента листается свободно и стоит там, где её оставили. */
.mobile-nav-track button{flex:0 0 72px}
/* До трёх кнопок ряд СТОИТ и делит ширину поровну — иначе три штуки жались к левому краю, а
   справа оставалась пустота. Больше трёх — лента, и тогда у кнопки своя ширина. */
.mobile-nav-track.fits{overflow-x:visible}
.mobile-nav-track.fits button{flex:1 1 0;min-width:0}
.mobile-nav button{position:relative;min-width:0;padding:0 2px;background:transparent}
/* «Ещё» отделена от дорожки чертой: это не такой же раздел, а дверь ко всем остальным. */
.mobile-nav>button[data-nav-more]{flex:0 0 62px;border-left:1px solid var(--border-soft)}

/* Значок держит цвет своей группы — внизу самих групп нет, но раздел находится тем же движением
   глаза, что и в панели. Подпись при этом остаётся приглушённой: два цвета в одной кнопке
   спорят между собой. */
.mobile-nav button .nav-icon{display:block;line-height:1;color:var(--g,#6f7a98)}

/* Капсула активной кнопки. Меряется ПО СОДЕРЖИМОМУ, а не по кнопке.
   Она занимает ВСЮ ширину кнопки и меряется по высоте содержимого — от этого и получается
   лежачей: 57×44 при пяти закреплённых, 95×44 при трёх. Капсула, обжимающая содержимое, была
   пробована и не подошла дважды: с большими боковыми отступами выходил почти квадрат 48×44, и
   те же отступы съедали ширину подписи — «Аккаунты» превращались в «Аккау…». */
.mobile-nav .mnav-cap{display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:3px;width:100%;min-width:0;padding:6px 3px;border-radius:16px;transition:background .16s ease}
.mobile-nav button.active .mnav-cap{background:rgba(117,101,244,.18)}

/* Пять заходов на одну подсветку, и все четыре неудачных записаны, чтобы не ходить по кругу:
   1) прямоугольник от края до края, радиус 10 — обрубок;
   2) рамка с градиентом и тенью — «супер некрасивые овалы», слишком много всего в 60 пикселях;
   3) капсула 46×26 только под значком, подпись снаружи — «мелко и забавно»;
   4) плашка по кнопке через `::before` — почти квадрат 53×50, «до сих пор кривой»;
   5) работает: капсула ПО СОДЕРЖИМОМУ, правило выше. */
.mobile-nav button.active{background:transparent;color:var(--purple-2)}
/* Только размер. `line-height` здесь стоял и перебивал центровку глифа в капсуле: правило
   капсулы лежит ВЫШЕ по файлу, и его `line-height:26px` проигрывало этой строке. */
.mobile-nav button .nav-icon{font-size:19px}
.mobile-nav button small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px}
/* Число садится на значок углом, а не занимает колонку: в пятой части ширины телефона строка
   «Чаты 12» не помещается вовсе. */
/* Число садится на КРАЙ капсулы, а не поверх значка: раньше оно налезало на сам значок, и вдвоём
   они читались как одно пятно. */
.mobile-nav .nav-badge{position:absolute;top:3px;left:50%;margin-left:11px;min-width:16px;padding:0 4px;
  border-radius:8px;background:var(--purple-2);color:#fff;font-size:9px;line-height:16px;font-weight:700;
  text-align:center;box-shadow:0 0 0 2px rgba(13,16,26,.96)}
.mobile-nav .nav-badge.hidden{display:none}

/* ── Лист «Ещё» ─────────────────────────────────────────────────────────────────────────
   Полный список разделов и единственное место, где правится ТЕЛЕФОННЫЙ ряд закреплённых:
   сайдбара на этой ширине нет, а значит нет и его кнопок настройки.
   Прячется на широком экране заодно с `.market-sheet` — правило выше по файлу, дублировать
   его здесь значило бы завести вторую копию порога. */
.nav-sheet-list{display:flex;flex-direction:column;gap:2px;max-height:56vh;overflow-y:auto}
/* Закреплённые в листе — отдельным блоком сверху и в порядке нижнего ряда. Это тот же ряд, что
   внизу экрана, и переставляется он здесь: на самом ряду перетаскивание спорит с прокруткой. */
.nav-sheet-pinned{display:flex;flex-direction:column;gap:2px;margin:0 0 8px;padding:0 0 8px;
  border-bottom:1px solid var(--border-soft)}
.nav-sheet-row{display:grid;grid-template-columns:minmax(0,1fr) 42px;align-items:center;border-radius:14px}
.nav-sheet-row.pinned{grid-template-columns:minmax(0,1fr) 38px 42px}
.nav-sheet-row.dragging{background:#1d2436;box-shadow:0 10px 24px rgba(0,0,0,.45)}
.nav-sheet-grip{width:36px;height:38px;display:grid;place-items:center;color:#66718f;cursor:grab;touch-action:none}
.nav-sheet-grip svg{width:16px;height:16px;display:block}
.nav-sheet-row.picked{background:linear-gradient(100deg,rgba(117,101,244,.18),rgba(117,101,244,.05))}
.nav-sheet-row.dimmed{opacity:.5}
.nav-sheet-go{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:12px;
  min-height:52px;padding:0 12px;border:0;border-radius:14px;background:transparent;color:#c3ccdd;
  text-align:left;cursor:pointer}
/* Цвет группы у значка — чтобы нужный раздел находился глазом, а не чтением подряд.
   Переменную ставит renderNavSheet тем же navPaint, что и в панели. */
.nav-sheet-icon{font-size:17px;text-align:center;color:var(--g,#8490ae)}
.nav-sheet-go strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}
.nav-sheet-mark{color:var(--purple-2);font-size:12px;font-weight:700}
.nav-sheet-pin{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;color:#66718f;cursor:pointer}
.nav-sheet-pin svg{width:17px;height:17px;display:block}
.nav-sheet-pin.on{color:var(--purple-2);background:rgba(117,101,244,.14)}
.nav-sheet-note{margin:8px 2px 0;color:var(--muted-2);font-size:11px}
/* Лист стоит на том же нижнем крае, что и ряд кнопок, и последняя строка карточки уезжала ПОД
   него: замер показал подпись на 780px при ряде, начинающемся с 740px. Отступ снизу — высота
   ряда (67px) плюс его собственные поля. */
.nav-sheet .market-sheet-card{padding-bottom:calc(80px + env(safe-area-inset-bottom))}
/* Вкладка «Звук». Метрики списаны у .telegram-member — строка сигнала стоит в том же ритме, что
   и ряд участника, и выдумывать ей свои отступы незачем. Имена проверены грепом: ни одного
   .sound-* в файле до этого не было, чужие правила новому блоку не достаются. */
.sound-card{background:linear-gradient(145deg,rgba(117,101,244,.035),#121722 55%)}
.notification-channel-icon.sound{color:#c7bcff;background:rgba(117,101,244,.1);border-color:rgba(117,101,244,.22)}
.sound-volume{margin-bottom:14px}
.sound-volume input[type=range]{width:100%;accent-color:#7565f4}
.sound-rows{display:grid;gap:9px}
.sound-row{display:grid;grid-template-columns:26px minmax(0,1fr) minmax(150px,190px) auto;align-items:center;gap:10px;padding:11px;border:1px solid #283149;border-radius:12px;background:#101520}
/* Меню выбора не уже 180 px (.picker{min-width}), а колонке было дано 132 — меню вылезало на
   «Проверить» (Larpbase 06.10, скрин). Колонка шире, а меню в ней — по её ширине. */
.sound-row .picker{min-width:0;width:100%}
.sound-row-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:750}
.sound-row-tone{width:100%;height:37px;padding:0 10px;border:1px solid #303a54;border-radius:9px;outline:0;background:#171d2a;color:#eef1fa;font-size:10px}
.sound-row-tone:focus{border-color:#665bd5}
.sound-row-test{min-height:37px;padding:0 12px;font-size:9px}
/* На телефоне ряд из четырёх не помещается: выбор и кнопка уходят на свою строку целиком.
   Ужимать их до нечитаемого — тот же обман, что и обрезанная многоточием подпись. */
@media(max-width:480px){.sound-row{grid-template-columns:26px minmax(0,1fr);row-gap:9px}.sound-row-tone,.sound-row-test{grid-column:1/-1}}

/* ── Люди на G2G ─────────────────────────────────────────────────────────────────────────────
   Своих стилей у раздела НЕТ и не должно быть: карточка, сетка, метрики и диалог — те же, что у
   клиентов FunPay, и берутся оттуда классами. Здесь только то, чего у фунпейного диалога не
   бывает, потому что у него другие поля. */
.customer-dialog-body { display: grid; gap: 18px; padding: 18px 22px; }
.customer-dialog-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px; }
.customer-dialog-block h3 { margin: 0 0 8px; font-size: 12px; text-transform: uppercase; letter-spacing: .06em; opacity: .7; }
.customer-dialog-lines { margin: 0; padding: 0; list-style: none; display: grid; gap: 8px; }
.customer-dialog-lines li { display: grid; gap: 2px; }
.customer-dialog-lines li strong { font-size: 13px; font-weight: 600; }
.customer-dialog-lines li small { opacity: .65; }
.customer-dialog-avatar-image { width: 100%; height: 100%; border-radius: inherit; object-fit: cover; }
.viewed-lot-money{display:flex;flex-direction:column;align-items:flex-end;gap:2px;min-width:0}.viewed-lot-sbp{color:var(--muted-2);font-size:9px;white-space:nowrap}

/* ОТСТУПЫ ОКНА БЕЗ ФОРМЫ.
   `.modal` живёт с `padding:0`, а весь отступ лежит на `.modal>form` — так сделано у окон,
   где форма и есть обёртка окна. У окон без такой обёртки отступа не было ВОВСЕ: заголовок
   упирался в скруглённый край и обрезался сверху. Хуже того, у двух из них внутри есть своя
   маленькая форма (завести направление, написать сотруднику) — и она, будучи прямым ребёнком,
   забирала себе те самые 26px, отчего одна строка окна стояла с отступом, а всё остальное без. */
.padded-modal{padding:26px}
.modal.padded-modal>form{padding:0}
@media (max-width:560px){.padded-modal{padding:20px}}

/* КАРТИНКИ ЛОТА. Полоса превью с кнопками порядка: перетаскивание мышью на телефоне
   недоступно, а порядок здесь смысловой — первая картинка обложка лота. */
.lot-images{grid-column:1/-1;display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--border-soft);border-radius:12px;background:#141a27}
.lot-images-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.lot-images-head span{font-size:12px;font-weight:650;color:#bac3d6}
.lot-images-head small{display:block;margin-top:2px;color:var(--muted-2);font-size:10px;font-weight:400}
.lot-images-strip{display:flex;gap:8px;flex-wrap:wrap}
.lot-image{position:relative;width:92px}
.lot-image img{width:92px;height:92px;object-fit:cover;border-radius:10px;border:1px solid var(--border);background:#0f1420;display:block}
.lot-image.cover img{border-color:var(--purple)}
.lot-image-tag{position:absolute;left:4px;top:4px;padding:2px 6px;border-radius:6px;background:rgba(117,101,244,.9);color:#fff;font-size:9px;font-weight:700}
.lot-image-actions{display:flex;gap:4px;margin-top:4px}
.lot-image-actions button{flex:1;min-width:0;padding:3px 0;border:1px solid var(--border);border-radius:7px;background:#1c2231;color:#b9c2d5;font-size:11px;cursor:pointer}
.lot-image-actions button:disabled{opacity:.35;cursor:default}
.lot-image-actions .danger{color:#ff91a3;border-color:rgba(255,100,127,.35)}
.lot-image.pending img{opacity:.45}
.lot-images-empty{color:var(--muted-2);font-size:11px}

/* Перетаскивание картинок: подсказка курсором и видимая цель. Кнопки ←→ остаются — на телефоне
   перетаскивания нет, а порядок здесь смысловой. */
.lot-image[draggable="true"]{cursor:grab}
.lot-image.dragging{opacity:.4;cursor:grabbing}
.lot-image.over img{border-color:var(--purple);box-shadow:0 0 0 2px rgba(117,101,244,.35)}

/* АККАУНТЫ ОДНОГО ЧЕЛОВЕКА — АВАТАРКАМИ. Строка списка теперь одна на человека, и полоска
   отвечает на вопрос «куда он пишет»: ники сюда не помещались и уезжали за край. */
.chat-accounts{display:inline-flex;align-items:center;gap:4px;vertical-align:middle}
/* КАРТИНКУ РЕЖЕТ ОНА САМА, А НЕ КОРОБКА.
   Пока `overflow:hidden` стоял здесь, значок непрочитанного (`:after` за краем коробки)
   срезался этим же правилом и превращался в амбер-КЛИН у верхнего края — читалось как
   выкушенный кусок аватарки, а не как точка. Радиус переехал на саму картинку: кружок
   остался кружком, а всё, что положено рисовать снаружи, рисуется. */
.chat-account-face{position:relative;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#2a3145;border:1px solid var(--border);cursor:pointer;flex:0 0 auto}
.chat-account-face img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.chat-account-initial{font-size:9px;font-weight:700;color:#b9c2d5}
/* ПОДСВЕТКА АКТИВНОЙ — ВНУТРЬ, А НЕ НАРУЖУ.
   Кольцо рисовалось внешней тенью `0 0 0 1px`, то есть торчало за коробку на пиксель. В
   строке списка полоска лежит в `.chat-conversation-footer`, а у него `overflow:hidden` и
   высота ровно в аватарку: замер — лицо 185.5…205.5, подвал 185…206. Верхний пиксель кольца
   срезался целиком, нижний наполовину, и круг выглядел приплюснутым сверху и снизу. В шапке
   переписки и во вкладках места хватало, поэтому там он был целый — отсюда и «то криво, то
   нет». Внутренняя тень не выходит за коробку нигде и не зависит от того, кто её обрезает. */
.chat-account-face.active{border-color:var(--amber);box-shadow:0 0 0 1px var(--amber) inset}
/* Значок держится ВНУТРИ коробки: подвал строки списка обрезает всё, что за неё выходит
   (высота подвала равна аватарке), и точка на пиксель выше теряла бы верх — ровно как
   теряло его кольцо активной. `box-sizing` нужен явно: `*` на псевдоэлементы не действует. */
.chat-account-face.unread:after{content:"";position:absolute;right:0;top:0;width:8px;height:8px;box-sizing:border-box;border-radius:50%;background:var(--amber);border:1px solid #131824}
.thread-accounts{display:flex;align-items:center;gap:6px;margin-top:6px}
.thread-accounts .chat-account-face{width:26px;height:26px}
.thread-accounts .chat-account-initial{font-size:11px}
/* Предупреждение про нулевую ставку в окне выдачи: это не ошибка ввода, а последствие,
   которое уже нельзя будет отменить, — цвет внимания, а не отказа. */
.grant-share-warn{color:var(--amber);font-weight:650}
.chat-account-face.absent{cursor:default;font-size:9px;font-weight:700;color:var(--muted-2);background:#1b2131}

/* ── НАПРАВЛЕНИЯ ─────────────────────────────────────────────────────────────────────────────
   Реестр частей игры. Сетка карточек, а не таблица: у направления две важные вещи — имя и то,
   что внутри, — и вторая переменной длины. В таблице такой столбец либо режется многоточием,
   либо растягивает строку на весь экран. */
.directions-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:12px;align-items:end;margin-bottom:12px}
.directions-create{display:grid;grid-template-columns:minmax(140px,1fr) minmax(140px,1fr) auto;gap:8px;align-items:end}
.directions-stats{margin-bottom:12px;color:var(--muted-2);font-size:9px}
.directions-stale{color:var(--amber)}
.directions-list{display:grid;gap:16px}
.directions-game-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:8px}
.directions-game-head h3{margin:0;font-size:13px}
.directions-game-head span{color:var(--muted-2);font-size:8px}
.directions-game{display:grid;gap:8px}
.directions-card{padding:12px;border:1px solid var(--border-soft);border-radius:14px;background:#101520}
.directions-card-head{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center}
/* Имя правится прямо здесь, поэтому поле выглядит текстом, пока его не тронули: рамка на каждой
   строке превратила бы реестр в анкету. */
.directions-name{min-width:0;padding:6px 8px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--text);font:inherit;font-size:11px;font-weight:750}
.directions-name:hover{border-color:#2a3350}
.directions-name:focus{border-color:#51499a;background:#171c29;outline:none}
.directions-card-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.directions-market{padding:3px 7px;border-radius:999px;background:rgba(117,101,244,.14);color:#b8b0ff;font-size:7px;font-weight:750}
.directions-count{color:var(--muted-2);font-size:8px;white-space:nowrap}
.directions-card-actions{display:flex;align-items:center;gap:6px}
.directions-lots{display:grid;gap:4px;margin-top:10px;max-height:260px;overflow:auto}
.directions-lot{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;padding:6px 8px;border-radius:9px;background:#151a27}
.directions-lot span{min-width:0;overflow-wrap:anywhere;font-size:9px}
.directions-lot i{color:var(--muted-2);font-style:normal}
.directions-lot-main{flex:1 1 auto}
.directions-lot-tags{display:flex;align-items:center;gap:5px;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end}
.directions-lot-account{padding:3px 7px;border-radius:999px;background:rgba(88,166,255,.14);color:#9ecbff;font-size:7px;font-weight:750;white-space:nowrap}
.directions-lot-off{padding:3px 7px;border-radius:999px;background:rgba(255,166,87,.14);color:var(--amber);font-size:7px;font-weight:750;white-space:nowrap}
.directions-hint{padding:8px;color:var(--muted-2);font-size:8px}
.directions-picker{margin-top:10px;padding:10px;border:1px solid #2a3350;border-radius:12px;background:#0d111a}
.directions-picker-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}
.directions-picker-search{min-width:0;padding:7px 9px;border:1px solid var(--border-soft);border-radius:9px;background:#151a27;color:var(--text);font:inherit;font-size:10px}
.directions-picker-search:focus{border-color:#51499a;outline:none}
.directions-picker-count{color:var(--muted-2);font-size:8px;white-space:nowrap}
.directions-picker-list{display:grid;gap:3px;margin:8px 0;max-height:240px;overflow:auto}
.directions-pick{display:flex;align-items:center;gap:8px;min-width:0;padding:5px 8px;border-radius:9px;background:#151a27;cursor:pointer}
.directions-pick:hover{background:#1a2030}
.directions-pick.busy{cursor:default;opacity:.55}
.directions-pick input{flex:0 0 auto;margin:0}
.directions-pick-main{flex:1 1 auto;min-width:0;overflow-wrap:anywhere;font-size:9px}
.directions-pick-busy{padding:3px 7px;border-radius:999px;background:rgba(255,120,120,.14);color:#ff9d9d;font-size:7px;font-weight:750;white-space:nowrap}
.directions-picker-foot{display:flex;flex-wrap:wrap;gap:6px}
@media(max-width:820px){.directions-toolbar{grid-template-columns:1fr}.directions-create{grid-template-columns:1fr 1fr}.directions-create .button{grid-column:1/-1}.directions-card-head{grid-template-columns:1fr;justify-items:stretch}.directions-card-meta{justify-content:flex-start}.directions-card-actions{width:100%}.directions-card-actions .button{flex:1 1 0}.directions-picker-head{grid-template-columns:1fr}.directions-picker-count{white-space:normal}.directions-lot{flex-wrap:wrap}.directions-lot-tags{justify-content:flex-start}}

/* ── Запертое поле ответа ──────────────────────────────────────────────────────────────────
   Рассылка площадки и канал администратора — только на чтение. Поле не прячем, а ЗАПИРАЕМ с
   подписью: исчезнувшая строка ответа читается как поломка кабинета, а запертая с объяснением —
   как правило площадки. Правило `applyChatComposerLock` ставило класс `locked` с самого начала,
   а вида у этого класса не было вовсе: поле выглядело обычным, просто не набиралось. */
.chat-composer.locked{background:#10141f}
.chat-composer.locked textarea{border-style:dashed;border-color:#333b56;background:#141926;color:#8b95ac;cursor:not-allowed}
.chat-composer.locked textarea::placeholder{color:#7d87a2}
.chat-composer.locked button{opacity:.32;cursor:not-allowed;box-shadow:none}

/* ── Захват клиента и исполнитель заказа (03.10) ── */
.chat-claim-bar{display:flex;align-items:center;gap:12px;margin:8px 16px 0;padding:9px 12px;border:1px solid rgba(124,92,255,.35);border-radius:12px;background:rgba(124,92,255,.08);font-size:12px;line-height:1.4}
.chat-claim-bar.hidden{display:none}
.chat-claim-bar .claim-text{flex:1;min-width:0;color:var(--muted)}
.chat-claim-bar .claim-text b{color:var(--text)}
.chat-claim-bar.mine{border-color:rgba(0,212,170,.4);background:rgba(0,212,170,.08)}
.chat-claim-bar.other{border-color:rgba(255,189,69,.4);background:rgba(255,189,69,.08)}
.claim-button{flex-shrink:0;min-height:30px;padding:0 14px;border:0;border-radius:9px;background:var(--accent,#7c5cff);color:#fff;font-weight:700;font-size:12px;cursor:pointer}
.chat-flag.chat-claim{color:#ffd27a;background:rgba(255,189,69,.1)}
.chat-flag.chat-claim.mine{color:#5fe0c0;background:rgba(0,212,170,.1)}
.order-executor{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;font-size:9px;font-weight:700;color:var(--muted);background:rgba(143,155,184,.1);white-space:nowrap}
.order-executor.mine{color:#5fe0c0;background:rgba(0,212,170,.1)}
.order-executor.free{color:#ffd27a;background:rgba(255,189,69,.12)}
.order-take-button{min-height:24px;padding:0 10px;border:0;border-radius:999px;background:#ffbd45;color:#1a1408;font-weight:800;font-size:10px;cursor:pointer;white-space:nowrap}
.order-take-button:disabled{opacity:.5;cursor:default}
/* ── Бухгалтерия v2 ── */
.ledger-money{grid-template-columns:44px repeat(4,minmax(0,1fr))}
.ledger-money .ledger-pending strong{color:#ffd27a}
.ledger-approx{display:inline-block;margin-left:6px;color:var(--muted);font-size:11px;font-weight:600;white-space:nowrap}
.ledger-approx-line{margin:4px 2px 10px;color:var(--muted);font-size:12px}
.ledger-summary{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.ledger-summary-title{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.ledger-rates{display:inline-flex;gap:6px;margin-left:8px}
.ledger-rates b{padding:2px 6px;border-radius:6px;background:rgba(143,155,184,.12);color:var(--muted);font-size:10px}
.ledger-rates b.ledger-rate-zero{color:var(--rose);background:rgba(255,92,122,.1)}
.staff-owe-row{grid-template-columns:minmax(0,1.3fr) repeat(3,minmax(0,1fr)) minmax(0,1.4fr) auto}
.staff-owe-col,.staff-owe-money{display:flex;flex-direction:column;gap:3px;min-width:0}
.staff-owe-col small,.staff-owe-money small{color:var(--muted-2);font-size:9px;text-transform:uppercase;letter-spacing:1px}
.staff-owe-col b{font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ledger-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.ledger-form{grid-template-columns:minmax(0,1fr) 70px minmax(0,2fr) auto}
.ledger-form.hidden{display:none}
.ledger-strip{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.ledger-filters{display:flex;gap:4px;flex-wrap:wrap}
.ledger-filter{min-height:24px;padding:0 9px;border:1px solid var(--border-soft);border-radius:8px;background:transparent;color:var(--muted-2);font-size:10px;cursor:pointer}
.ledger-filter.on{border-color:var(--accent,#7c5cff);color:var(--text)}
.ledger-state.pending{color:#ffd27a}
.ledger-why{color:var(--muted-2);font-size:10px}
.ledger-row-actions{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.ledger-received{min-height:26px;padding:0 10px;font-size:11px}
.ledger-attention{padding:20px 24px;margin-bottom:18px;border-color:rgba(255,189,69,.35)}
.ledger-attention-group{margin-bottom:14px}
.ledger-attention-group h3{margin:0 0 6px;font-size:13px}
.ledger-attention-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:8px 2px;border-bottom:1px solid var(--border-soft)}
.ledger-attention-row small{display:block;color:var(--muted-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ledger-attention-sum{font-variant-numeric:tabular-nums;font-weight:700}
.ledger-attention-who{color:var(--muted);font-size:12px}
.ledger-payout-grid{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:10px}
.ledger-payout-preview{margin:8px 0;padding:10px 12px;border:1px solid var(--border-soft);border-radius:10px;background:var(--surface-2);font-size:12px;min-height:20px}
.ledger-payout-title{margin:0 0 4px;color:var(--muted)}
.ledger-payout-parts{margin:0;padding-left:18px}
.ledger-payout-parts small{color:var(--muted)}
.ledger-payout-warning{margin:6px 0 0;color:#ffd27a}
@media(max-width:820px){
  .chat-claim-bar{margin:6px 10px 0;flex-wrap:wrap}
  .staff-owe-row{grid-template-columns:minmax(0,1fr) auto}
  .staff-owe-row .staff-owe-col{display:none}
  .ledger-money{grid-template-columns:30px repeat(2,minmax(0,1fr))}
  .ledger-payout-grid{grid-template-columns:1fr}
  .ledger-attention-row{grid-template-columns:minmax(0,1fr) auto}
}
.staff-owe-col b{white-space:normal;line-height:1.35}
.staff-owe-money .ledger-approx{display:block;margin:2px 0 0;white-space:normal;line-height:1.3}
.ledger-attention-group .muted{margin:6px 2px 0;font-size:12px}
#ledgerPayoutDialog .modal-note{font-size:12px;color:var(--muted);line-height:1.45}
.ledger-sum .ledger-share-off{text-decoration:line-through;color:var(--muted)}
.ledger-state.owe{color:var(--amber)}.ledger-state.paid{color:var(--muted)}
.ledger-sum .ledger-share-maybe{color:var(--muted);font-weight:600}
.ledger-legend{margin:0 5px 10px;color:var(--muted-2);font-size:11px}.ledger-legend summary{cursor:pointer;color:var(--muted);width:max-content}.ledger-legend dl{display:grid;gap:5px;margin:8px 0 0;padding:10px 12px;border:1px solid var(--border-soft);border-radius:10px;background:#121725}.ledger-legend dl>div{display:grid;grid-template-columns:110px minmax(0,1fr);gap:10px}.ledger-legend dt{color:var(--text);font-weight:650}.ledger-legend dd{margin:0;line-height:1.45}
.ledger-form{grid-template-columns:minmax(0,1fr) 84px minmax(0,2fr) auto;align-items:stretch}.ledger-form .select{min-width:0;width:100%}.ledger-form .search{min-width:0}
@media(max-width:820px){.ledger-form{grid-template-columns:minmax(0,1fr) 84px}.ledger-form #ledgerNote,.ledger-form button{grid-column:1/-1}.ledger-legend dl>div{grid-template-columns:1fr;gap:2px}}
.g2g-backup{padding:20px 22px;margin-bottom:16px}.g2g-backup .muted{font-size:12px;line-height:1.5}.g2g-backup-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--border-soft)}.g2g-backup-row span{display:flex;flex-direction:column;gap:3px;min-width:0}.g2g-backup-row small{color:var(--muted);font-size:11px}.g2g-backup-problems{margin:0 0 8px;padding-left:18px;color:#ffd27a;font-size:11px;line-height:1.5}.g2g-backup-stage{color:#ffd27a;font-size:12px}.g2g-backup-older summary{cursor:pointer;color:var(--muted);font-size:12px;margin-top:6px}
@media(max-width:820px){.g2g-backup-row{flex-direction:column;align-items:stretch}}
.chat-conversation.platform-staff{box-shadow:inset 3px 0 #ff4d6d;background:linear-gradient(90deg,rgba(255,77,109,.14),rgba(255,77,109,.03))}.chat-flag.chat-platform-staff{color:#ff8fa3;background:rgba(255,77,109,.16);border:1px solid rgba(255,77,109,.45);font-weight:750}
.g2g-status.banned{color:#ff8fa3;background:rgba(255,77,109,.14)}.g2g-banned-note{margin:8px 0 0;color:#ff8fa3;font-size:12px;line-height:1.45}

/* ── Карточка клиента 06.10: «Характеристика», «Заметки и напоминания», одно меню доступа ──
   Слово Larpbase: «красиво и минималистично, при этом не менее понятно». Родные выпадашки
   заменены кнопками-переключателями и меню с поиском; сами <select> остались скрытыми — их
   читает сохранение. */
.customer-block{margin-top:14px;padding:16px 18px;border:1px solid var(--border-soft);border-radius:14px;background:#101520}
.customer-block-head{margin-bottom:12px}
.customer-block-head h3{margin:4px 0 0;font-size:14px}
.customer-traits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px}
.customer-trait{display:flex;flex-direction:column;gap:7px;min-width:0}
.customer-trait-wide{grid-column:1/-1}
.customer-trait-label{font-size:12px;font-weight:650;color:#bac3d6}
.customer-trait-label small{margin-left:4px;color:var(--muted-2);font-weight:400}
.customer-trait-hint{color:var(--muted-2);font-size:10.5px;line-height:1.45}
.customer-traits .customer-game-choices{margin-top:0}
.segmented{display:inline-flex;flex-wrap:wrap;align-self:flex-start;gap:4px;max-width:100%;padding:4px;border:1px solid var(--border);border-radius:11px;background:#151a28}
.segmented button{min-height:32px;padding:0 12px;border:0;border-radius:8px;background:transparent;color:#aeb8cf;font-size:12.5px;white-space:nowrap;cursor:pointer;transition:.14s}
.segmented button:hover{color:var(--text);background:#1d2436}
.segmented button.on{color:#fff;background:rgba(117,101,244,.22);box-shadow:inset 0 0 0 1px rgba(140,125,255,.45)}
.customer-toggle{display:inline-flex;align-items:center;gap:10px;min-height:32px;cursor:pointer;user-select:none}
.customer-toggle input{display:none}
.customer-toggle i{position:relative;flex:0 0 auto;width:38px;height:22px;border-radius:99px;background:#30374a;transition:.2s}
.customer-toggle i:after{content:"";position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:#a9b1c3;transition:.2s}
.customer-toggle input:checked+i{background:var(--purple)}
.customer-toggle input:checked+i:after{transform:translateX(16px);background:#fff}
.customer-toggle b{color:#d4dbec;font-size:12.5px;font-weight:600}
.customer-attention{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px 14px;padding:12px;border:1px solid var(--border-soft);border-radius:12px;background:#131826}
.customer-attention>input{width:100%;min-height:38px;padding:8px 11px;border:1px solid #30384f;border-radius:10px;background:#171c29;color:var(--text);font-size:12.5px}
.customer-attention .customer-trait-hint{grid-column:1/-1}
.customer-notes{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin-top:12px}
.customer-note{display:flex;flex-direction:column;gap:6px;min-width:0}
.customer-note textarea{min-height:92px;padding:10px 12px;border:1px solid #30384f;border-radius:10px;background:#171c29;color:var(--text);font:inherit;font-size:12.5px;resize:vertical}
.customer-reminders{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.customer-reminders .customer-reminder-compose{grid-template-columns:200px minmax(0,1fr) auto}
.customer-reminders .customer-reminder-compose input{font-size:12px}
.client-direction-add .picker{flex:0 0 auto;width:210px;min-width:0}
.customer-access-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
.customer-access-wide{display:flex;flex-wrap:wrap;gap:6px}
.access-pill{min-height:30px;padding:0 11px;border:1px solid var(--border);border-radius:99px;background:#151a28;color:#b9c2d8;font-size:11.5px;cursor:pointer;transition:.14s}
.access-pill:hover{border-color:#4a5578;color:var(--text)}
.access-pill.on{border-color:#7668e8;background:rgba(117,101,244,.18);color:#fff}
.access-pill.danger{border-color:rgba(255,100,127,.35);color:#ff9fb0}
.access-pill.danger:hover{background:rgba(255,100,127,.12)}
.customer-access-label{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:16px 0 8px}
.customer-access-label>span{color:#bac3d6;font-size:12px;font-weight:650}
.customer-access-label>small{color:var(--muted-2);font-size:10.5px}
.customer-grant{margin-top:6px;border-top:1px solid var(--border-soft)}
.customer-grant-filters{display:grid;grid-template-columns:minmax(0,240px) minmax(0,1fr);gap:8px}
.customer-grant-filters input{min-height:43px;padding:0 12px;border:1px solid var(--border);border-radius:11px;background:#151a28;color:var(--text);font-size:13px}
.customer-grant-people{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px;max-height:236px;margin-top:8px;padding:2px;overflow-y:auto}
.customer-grant-person{display:flex;align-items:center;gap:9px;min-width:0;padding:8px 10px;border:1px solid #252d42;border-radius:11px;background:#151a27;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:.14s}
.customer-grant-person:hover{border-color:#44506f}
.customer-grant-person.on{border-color:#7668e8;background:rgba(117,101,244,.12)}
.customer-grant-person>span{display:flex;flex:1;flex-direction:column;min-width:0}
.customer-grant-person b{overflow:hidden;font-size:12.5px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}
.customer-grant-person small{overflow:hidden;color:var(--muted-2);font-size:10.5px;text-overflow:ellipsis;white-space:nowrap}
.customer-grant-avatar{display:grid;place-items:center;flex:0 0 auto;width:28px;height:28px;border-radius:9px;background:#212a3f;color:#c8cff0;font-size:12px;font-style:normal;font-weight:700}
.customer-grant-badge{display:inline-block;margin-right:6px;padding:1px 7px;border-radius:99px;background:#1d2436;color:#aab4cc;font-size:9.5px;font-style:normal}
.customer-access .chat-grant{min-height:30px;padding:5px 11px;font-size:11.5px}
.customer-access .chat-grant span{font-size:11.5px}
.customer-access-state{font-size:11.5px}
.customer-reminders .customer-reminder strong{font-size:12px}
.customer-reminders .customer-reminder small{font-size:10.5px}
.customer-grant-badge.personal,.customer-grant-badge.cyan{background:rgba(113,182,255,.14);color:#a9cfff}
.customer-grant-badge.green{background:rgba(43,212,184,.12);color:#8ef0c8}
.customer-grant-badge.amber{background:rgba(224,162,60,.14);color:#ffd28a}
.customer-grant-badge.rose{background:rgba(255,122,143,.14);color:#ffa3b1}
.customer-grant-badge.slate{background:#1d2436;color:#aab4cc}
.customer-grant-actions{display:flex;flex-direction:column;gap:10px;margin-top:10px;padding:12px;border:1px solid #2c3550;border-radius:12px;background:#131826}
.customer-grant-actions:empty{display:none}
.customer-grant-who{color:#bac3d6;font-size:12px}
.customer-grant-time,.customer-grant-pin{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.customer-grant-hours{display:inline-flex;align-items:center;gap:4px;color:var(--muted-2);font-size:11px}
.customer-grant-hours input{width:64px;min-height:30px;padding:0 8px;border:1px solid var(--border);border-radius:9px;background:#151a28;color:var(--text);font-size:12px}
.customer-grant-time .button,.customer-grant-pin .button{min-height:34px;padding:0 14px;font-size:12px}
.customer-grant-pin small{flex-basis:100%;color:var(--muted-2);font-size:10.5px}
.customer-interest-row{display:flex;align-items:stretch;gap:6px}
.customer-interest-row>button,.customer-interest-row>article{display:flex;flex:1;align-items:center;justify-content:space-between;gap:10px;min-width:0;padding:10px;border:1px solid #252d42;border-radius:11px;background:#151a27;color:inherit;font:inherit;text-align:left}
.customer-interest-row>button{cursor:pointer}
.customer-interest-row>button:hover{border-color:#51499a}
.customer-interest-row span{min-width:0}
.customer-interest-row span:last-child{flex:0 0 auto;text-align:right}
.customer-interest-out{display:grid;place-items:center;flex:0 0 auto;width:34px;border:1px solid #252d42;border-radius:11px;background:#151a27;color:#9aa5c0;text-decoration:none}
.customer-interest-out:hover{border-color:#51499a;color:#fff}
.customer-dialog-summary{grid-template-columns:repeat(5,minmax(0,1fr))}
.customer-dialog-summary span{font-size:10px}
.customer-dialog-summary strong{font-size:13px}
@media(max-width:760px){.customer-dialog-summary{grid-template-columns:1fr 1fr}.customer-traits{grid-template-columns:1fr}.customer-trait-wide{grid-column:auto}.customer-block{padding:14px}.customer-grant-filters{grid-template-columns:1fr}.customer-reminders .customer-reminder-compose{grid-template-columns:1fr}.customer-attention{grid-template-columns:1fr}.client-direction-add .picker{width:100%}}

/* Предпросмотр лота — страница FunPay в окне кабинета: белый лист, шрифт и отступы площадки
   (сняты с funpay.com/lots/offer 06.10, см. renderLotPreview). */
.lot-preview-modal{width:min(720px,calc(100% - 28px))}
.lot-preview-bar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;margin:-6px 0 14px}
.lot-preview-stage{display:flex;justify-content:center;padding:22px;border-radius:14px;background:#e9ecf1;overflow:auto;max-height:68vh}
.lot-preview-page{box-sizing:content-box;width:421px;max-width:calc(100% - 48px);padding:26px 24px;border-radius:6px;background:#fff;color:#222;box-shadow:0 8px 28px rgba(15,20,35,.18);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;text-align:left}
.lot-preview-page.phone{width:345px;padding:20px 15px;max-width:calc(100% - 30px)}
.lot-preview-item{margin-bottom:25px}
.lot-preview-item:last-child{margin-bottom:0}
.lot-preview-item h5{margin:0 0 7px;color:#666;font-size:9px;font-weight:400;letter-spacing:1.3px;line-height:1.4;text-transform:uppercase}
.lot-preview-text{white-space:normal;overflow-wrap:break-word;word-wrap:break-word}
.lot-preview-missing{margin:0;color:#a0a6b1;font-style:italic}
.lot-preview-images{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.lot-preview-images li{width:96px;height:96px;overflow:hidden;border-radius:4px;background:#eef0f4}
.lot-preview-images img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.lot-preview-open{margin-right:auto}
@media(max-width:560px){.lot-preview-stage{padding:10px}.lot-preview-page{padding:20px 16px}}
.customer-access-wide{align-items:center}
.customer-access-wide-label{color:var(--muted-2);font-size:11px;margin-right:2px}
.customer-broadcast{margin-top:10px}
.customer-hide-choice{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px;padding:12px;border:1px solid #2c3550;border-radius:12px;background:#131826}
.customer-hide-choice small{flex-basis:100%;color:var(--muted-2);font-size:10.5px;line-height:1.45}
.customer-hide-or{color:var(--muted-2);font-size:11px;margin:0 2px}
.access-pill.alarm{min-height:32px;padding:0 14px;border-color:#e0607a;background:#c94a63;color:#fff;font-weight:650}
.access-pill.alarm:hover{border-color:#f07a92;background:#d95670;color:#fff}
.access-pill.alarm.on{background:#a83d52}
/* ── Правила клиентов кабинета и отметки (06.10) ───────────────────────────────────────────── */
.customer-activity.cooling{color:#ffbd57;background:rgba(255,189,69,.1)}.customer-activity.asleep{color:#ff7d93;background:rgba(255,100,127,.1)}.customer-activity.attention{color:#ffd78a;background:rgba(255,189,69,.16);box-shadow:inset 0 0 0 1px rgba(255,189,69,.3)}
.customer-flag.mark{font-size:10px;padding:2px 6px}.customer-flag.mark.violet{color:#b8adff;background:rgba(117,101,244,.14)}.customer-flag.mark.cyan{color:#71dcf7;background:rgba(54,202,239,.12)}.customer-flag.mark.green{color:#66e0c4;background:rgba(43,212,184,.12)}.customer-flag.mark.amber{color:#ffd078;background:rgba(255,189,69,.12)}.customer-flag.mark.rose{color:#ff91a3;background:rgba(255,100,127,.12)}
.customer-card-badges{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.customer-mark-picker{display:flex;flex-wrap:wrap;gap:6px}
.customer-mark-toggle{max-width:none;min-height:30px;padding:0 11px;border:1px solid transparent;font-size:12px;cursor:pointer;opacity:.5;filter:saturate(.4);transition:.14s}
.customer-mark-toggle:hover{opacity:.85}
.customer-mark-toggle.on{opacity:1;filter:none;border-color:currentColor}
.customer-rules-modal{width:min(860px,calc(100vw - 32px))}
/* Окно — колонкой: шапка и кнопки на месте, прокручивается только тело. С max-height у тела
   окно прокручивалось ещё и само, и кнопка «Сохранить» уезжала под край. */
.customer-rules-modal[open]{display:flex;flex-direction:column;overflow:hidden}
.customer-rules-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:14px;overflow-y:auto;padding-right:4px}
.customer-rules-section{padding:14px;border:1px solid var(--border);border-radius:14px;background:#131826}
.customer-rules-section h3{margin:0 0 8px;font-size:13px}
.customer-rules-note{margin:6px 0 0;color:var(--muted-2);font-size:11px;line-height:1.45}
.customer-rules-note.warn{color:#ffbd57}
.customer-rules-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:8px 0}
.customer-rules-grid .field input,.customer-rules-grid .field select{width:100%}
.customer-rules-money{display:flex;gap:6px}.customer-rules-money input{flex:1;min-width:0}.customer-rules-money select{width:64px;flex:0 0 64px}
.customer-rules-live{position:sticky;top:0;z-index:2;padding:12px 14px;border:1px solid rgba(117,101,244,.35);border-radius:14px;background:#171c2c}
.customer-rules-live>div>small{color:var(--muted-2);font-size:10px;text-transform:uppercase;letter-spacing:.6px}
.customer-rules-counts{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:6px}
.customer-rules-counts span{display:inline-flex;align-items:baseline;gap:5px;color:#aeb8cf;font-size:12px}
.customer-rules-counts b{color:var(--text);font-size:15px}
.customer-rules-counts .vip b{color:#ffd174}.customer-rules-counts .cooling b,.customer-rules-counts .attention b{color:#ffbd57}
.customer-rules-why{margin:0 0 10px;padding-left:18px;color:#c4cbe0;font-size:12px;line-height:1.55}
.customer-rules-marks{display:flex;flex-direction:column;gap:8px;margin:8px 0}
.customer-rules-mark{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px;border:1px solid var(--border);border-radius:11px;background:#151a28}
.customer-rules-emoji{width:46px;text-align:center}
.customer-rules-name{flex:1 1 150px;min-width:0}
.customer-rules-colors{display:inline-flex;gap:5px}
.color-dot{width:18px;height:18px;padding:0;border:2px solid transparent;border-radius:50%;cursor:pointer}
.color-dot.on{border-color:#fff}
.color-dot.violet{background:#8f80ff}.color-dot.cyan{background:#36caef}.color-dot.green{background:#2bd4b8}.color-dot.amber{background:#ffbd45}.color-dot.rose{background:#ff647f}
.customer-rules-check{display:inline-flex;align-items:center;gap:5px;color:#aeb8cf;font-size:12px;white-space:nowrap}
.customer-rules-used{color:var(--muted-2);font-size:10.5px}
.customer-rules-problem{flex:1;color:#ff91a3;font-size:12px;text-align:left}
@media (max-width:760px){.customer-rules-live{position:static}.customer-rules-mark{align-items:stretch}.customer-rules-name{flex-basis:100%}}
/* ── Меню выбора — общее для всех выпадашек (06.10) ────────────────────────────────────────── */
/* Обёртка носит классы родного списка ради РАСКЛАДКИ; рамку, фон и высоту рисует кнопка. */
.picker{padding:0!important;border:0!important;background:none!important;box-shadow:none!important;height:auto!important;min-height:0!important}
.picker.picker-off{display:none!important}
.picker-pop{overflow:hidden}
.picker-list{flex:1 1 auto;min-height:0}
.picker-button:disabled{opacity:.5;cursor:not-allowed}
.picker-row:disabled{opacity:.45;cursor:default}
.picker-invalid .picker-button{border-color:#ff647f;box-shadow:0 0 0 3px rgba(255,100,127,.15)}
.picker-button:focus-visible{outline:2px solid var(--purple-2);outline-offset:2px}
.field .picker{display:flex;width:100%;min-width:0}
.field .picker-button{height:auto;min-height:44px;border-color:#30384f;border-radius:10px;background:#171c29}
.telegram-member .picker{width:100%;min-width:0}
.telegram-member .picker-button{height:37px;padding:0 10px;border-color:#303a54;border-radius:9px;background:#171d2a;font-size:11px}
.chat-filter-panel .picker{width:100%;min-width:0}
.chat-filter-panel .picker-button{height:32px;font-size:11px}
.staff-owe-tools .picker-button{height:36px;font-size:11px}
.customer-rules-money .picker{flex:0 0 76px;min-width:0}
@media (max-width:760px){.telegram-member .picker-button{height:42px}.picker-search{font-size:16px}}
/* ── Отметки в окне правил — строка-карточка вместо голых полей (06.10) ───────────────────── */
.mark-row{--mark-fg:#b8adff;--mark-bg:rgba(117,101,244,.14);position:relative;display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid var(--border);border-radius:14px;background:#151a28;transition:border-color .16s}
.mark-row:focus-within{border-color:#3d4766}
.mark-row.cyan{--mark-fg:#71dcf7;--mark-bg:rgba(54,202,239,.12)}.mark-row.green{--mark-fg:#66e0c4;--mark-bg:rgba(43,212,184,.12)}.mark-row.amber{--mark-fg:#ffd078;--mark-bg:rgba(255,189,69,.12)}.mark-row.rose{--mark-fg:#ff91a3;--mark-bg:rgba(255,100,127,.12)}
.mark-main{display:flex;align-items:center;gap:10px}
.mark-emoji{width:44px;height:44px;flex:0 0 44px;display:grid;place-items:center;border:1px solid transparent;border-radius:12px;background:var(--mark-bg);color:var(--mark-fg);font-size:19px;cursor:pointer;transition:.14s}
.mark-emoji:hover{border-color:var(--mark-fg)}
.mark-name{flex:1 1 auto;min-width:0;height:44px;padding:0 13px;border:1px solid #30384f;border-radius:11px;background:#171c29;color:var(--text);font-size:14px;outline:0;transition:border-color .14s}
.mark-name:focus{border-color:#675be4}
.mark-name::placeholder{color:#6f7a97}
.mark-colors{display:inline-flex;gap:7px;flex:0 0 auto;padding:0 2px}
.mark-colors .color-dot{width:20px;height:20px;border:0;box-shadow:0 0 0 2px transparent;transition:box-shadow .14s,transform .14s}
.mark-colors .color-dot:hover{transform:scale(1.12)}
.mark-colors .color-dot.on{box-shadow:0 0 0 2px #151a28,0 0 0 4px #e9ecf6}
.mark-foot{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.mark-preview{max-width:170px;margin-right:4px;font-size:10px}
.mark-pill{min-height:30px;padding:0 12px;border:1px solid var(--border);border-radius:999px;background:transparent;color:#8f9ab3;font-size:12px;cursor:pointer;transition:.14s}
.mark-pill:hover{color:var(--text);border-color:#44506f}
.mark-pill.on{color:#fff;border-color:rgba(140,125,255,.55);background:rgba(117,101,244,.2)}
.mark-used{margin-left:auto;color:var(--muted-2);font-size:11px}
.mark-remove{width:30px;height:30px;display:grid;place-items:center;border:1px solid transparent;border-radius:9px;background:transparent;color:#7f8aa5;font-size:13px;cursor:pointer;transition:.14s}
.mark-remove:hover{color:#ff91a3;border-color:rgba(255,100,127,.35);background:rgba(255,100,127,.08)}
.mark-emoji-pop{position:absolute;top:62px;left:12px;z-index:5;display:grid;grid-template-columns:repeat(6,38px);gap:4px;padding:9px;border:1px solid var(--border);border-radius:13px;background:#141927;box-shadow:var(--shadow)}
.mark-emoji-pop.hidden{display:none}
.mark-emoji-pop button{height:38px;border:0;border-radius:9px;background:transparent;font-size:18px;cursor:pointer}
.mark-emoji-pop button:hover{background:#1d2436}
.mark-emoji-pop input{grid-column:1/-1;height:36px;margin-top:4px;padding:0 11px;border:1px solid var(--border-soft);border-radius:9px;background:#101420;color:var(--text);outline:0}
.mark-emoji-pop input:focus{border-color:#675be4}
.mark-add{width:100%;min-height:46px;border:1px dashed #3a4462;border-radius:13px;background:transparent;color:#aeb8cf;font-size:13px;cursor:pointer;transition:.14s}
.mark-add:hover{color:var(--text);border-color:#675be4;background:rgba(117,101,244,.06)}
@media (max-width:760px){.mark-main{flex-wrap:wrap}.mark-name{flex-basis:calc(100% - 54px)}.mark-colors{width:100%;justify-content:flex-start}.mark-emoji-pop{grid-template-columns:repeat(6,1fr);right:12px}}

/* На телефоне метки переписки в списке чатов прячутся (.chat-flag, max-width:520px) — а отметки
 в карточке и превью в окне правил сделаны тем же классом и пропадали вместе с ними: в карточке
 нечем было поставить отметку. Им прятаться нельзя. */
@media (max-width:520px){.customer-mark-toggle.chat-flag,.mark-preview.chat-flag{display:inline-flex!important}}
/* ── Умное поднятие сворачивается (06.10) ──────────────────────────────────────────────────── */
.lot-raise-fold{flex:1 1 auto;min-width:0;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
.lot-raise-fold-text{display:flex;flex-direction:column;min-width:0}
.lot-raise-fold em{font-size:11px;line-height:1.45}
.lot-raise-fold em b{color:var(--text);font-weight:700}
.lot-raise-fold em .warn{color:#ff91a3;font-weight:700}
.lot-raise-chevron{flex:0 0 auto;width:30px;height:30px;display:grid;place-items:center;margin-left:auto;border:1px solid var(--border);border-radius:9px;background:rgba(20,25,39,.6);transition:border-color .16s}
.lot-raise-fold:hover .lot-raise-chevron{border-color:#675be4}
.lot-raise-chevron:before{content:"";width:8px;height:8px;border-right:2px solid #aeb8cf;border-bottom:2px solid #aeb8cf;transform:translateY(-2px) rotate(45deg);transition:transform .16s}
.lot-raise-panel:not(.collapsed) .lot-raise-chevron:before{transform:translateY(2px) rotate(-135deg)}
.lot-raise-panel.collapsed .lot-raise-body,.lot-raise-panel.collapsed .lot-raise-actions{display:none}
.lot-raise-panel.collapsed .lot-raise-heading{margin-bottom:0}
.lot-raise-panel.collapsed{padding-top:14px;padding-bottom:14px}
@media (max-width:760px){.lot-raise-fold{width:100%}}

/* ── Фильтры лотов — рамкой клиентов; кнопки выбранного — в строке выбора (06.10) ─────────── */
.lots-select-strip{flex-wrap:wrap;justify-content:flex-start;gap:10px 14px}
.lots-select-strip .lots-bulk-actions{margin-left:auto}
@media (max-width:760px){.lots-select-strip .lots-bulk-actions{width:100%;margin-left:0;display:grid;grid-template-columns:1fr 1fr;overflow:visible}}

/* ── Плашка и карточка установки (06.10) ───────────────────────────────────────────────────── */
.install-banner{display:flex;align-items:center;gap:14px;margin:14px 24px 0;padding:14px 16px;border:1px solid rgba(147,135,255,.45);border-radius:16px;background:radial-gradient(circle at 0 0,rgba(54,202,239,.16),transparent 45%),linear-gradient(110deg,rgba(117,101,244,.32),rgba(117,101,244,.12) 55%,rgba(20,25,39,.9));box-shadow:0 14px 40px rgba(80,60,220,.18)}
.install-banner.hidden{display:none}
.install-banner-icon{width:44px;height:44px;flex:0 0 44px;display:grid;place-items:center;border-radius:13px;background:linear-gradient(145deg,#7565f4,#36caef);color:#fff;font-size:22px;font-weight:800;box-shadow:0 8px 22px rgba(117,101,244,.4)}
.install-banner-text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}
.install-banner-text strong{font-size:14px}
.install-banner-text small{color:#c7cdef;font-size:12px;line-height:1.4}
.install-banner-actions{display:flex;gap:8px;flex:0 0 auto}
@media (max-width:760px){.install-banner{flex-wrap:wrap;margin:10px 12px 0}.install-banner-actions{width:100%}.install-banner-actions .button{flex:1}}
.notification-channel-icon.install{color:#fff;background:linear-gradient(145deg,#7565f4,#36caef)}
.install-steps{margin:12px 0 0;padding:12px 14px 12px 32px;border:1px solid rgba(147,135,255,.35);border-radius:12px;background:rgba(117,101,244,.08);color:#c7cdef;font-size:13px;line-height:1.6}
.install-steps.hidden{display:none}
.notification-card.flash{animation:install-flash 1.6s ease}
@keyframes install-flash{0%,100%{box-shadow:none}25%,60%{box-shadow:0 0 0 3px rgba(147,135,255,.55)}}

/* ── Плагины и справочник — свои разделы (06.10) ──────────────────────────────────────────── */
.single-card-grid{grid-template-columns:minmax(0,1fr)!important;max-width:1100px}
/* ── Плашка пушей и установка на iPhone по шагам (06.10) ──────────────────────────────────── */
.push-banner{background:radial-gradient(circle at 0 0,rgba(43,212,184,.16),transparent 45%),linear-gradient(110deg,rgba(43,212,184,.22),rgba(117,101,244,.14) 55%,rgba(20,25,39,.9));border-color:rgba(43,212,184,.45);box-shadow:0 14px 40px rgba(43,212,184,.12)}
.install-banner-icon.push{background:linear-gradient(145deg,#2bd4b8,#7565f4);font-size:20px}
.install-banner+.install-banner{margin-top:10px}
.install-guide-modal{width:min(440px,calc(100vw - 24px))}
.install-guide-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin:0 -2px}
.install-guide-track::-webkit-scrollbar{display:none}
.install-guide-step{flex:0 0 100%;min-width:0;scroll-snap-align:start;margin:0;padding:0 2px;display:flex;flex-direction:column;gap:14px}
.install-guide-step figcaption{display:flex;flex-direction:column;gap:5px;min-height:76px}
.install-guide-step figcaption b{font-size:15px}
.install-guide-step figcaption span{color:#b7bfd6;font-size:13px;line-height:1.5}
.install-guide-nav{display:flex;align-items:center;gap:10px;margin-top:16px}
.install-guide-nav .button{flex:0 0 auto;min-width:96px}
.install-guide-dots{flex:1;display:flex;justify-content:center;gap:6px}
.install-guide-dots i{width:7px;height:7px;border-radius:50%;background:#39425c;transition:.2s}
.install-guide-dots i.on{width:20px;border-radius:4px;background:var(--purple-2)}
/* Нарисованный кусок экрана iPhone. Нарочно светлый — каким его и увидят в Safari. */
.guide-phone{position:relative;height:250px;overflow:hidden;border:6px solid #2a3044;border-radius:30px;background:#f2f2f7;color:#1c1c1e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.guide-page{display:flex;flex-direction:column;gap:9px;padding:22px 18px}
.guide-page i{height:11px;border-radius:6px;background:#dcdce3}
.guide-page i.short{width:62%}
.guide-safari-bar{position:absolute;left:10px;right:10px;bottom:12px;display:flex;align-items:center;gap:8px;padding:7px;border-radius:22px;background:rgba(255,255,255,.92);box-shadow:0 6px 20px rgba(0,0,0,.14)}
.guide-key{position:relative;width:32px;height:32px;flex:0 0 32px;display:grid;place-items:center;border-radius:50%;color:#0a84ff;font-size:17px}
.guide-url{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#3c3c43;font-size:12px;text-align:center}
.guide-sheet{position:absolute;inset:auto 0 0 0;top:18px;padding:12px;border-radius:18px 18px 0 0;background:#fff;box-shadow:0 -6px 22px rgba(0,0,0,.1)}
.guide-sheet-head,.guide-add-app{display:flex;align-items:center;gap:10px;padding:4px 4px 12px;border-bottom:1px solid #e5e5ea;margin-bottom:6px}
.guide-sheet-head img,.guide-add-app img{width:38px;height:38px;border-radius:9px}
.guide-sheet-head span,.guide-add-app span{display:flex;flex-direction:column}
.guide-sheet-head b,.guide-add-app b{font-size:13px}
.guide-sheet-head small,.guide-add-app small{color:#8e8e93;font-size:11px}
.guide-row{position:relative;display:flex;align-items:center;justify-content:space-between;margin:5px 0;padding:10px 12px;border-radius:11px;background:#f2f2f7;font-size:13px}
.guide-row i{font-style:normal;color:#3c3c43}
.guide-add-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 4px 12px;font-size:12px}
.guide-add-head span{color:#0a84ff}
.guide-add-head b{font-size:12px}
.guide-add-head .guide-hit{padding:3px 8px;border-radius:9px;font-weight:700}
.guide-switch{width:36px;height:22px;border-radius:11px;background:#34c759;position:relative}
.guide-switch:after{content:"";position:absolute;right:2px;top:2px;width:18px;height:18px;border-radius:50%;background:#fff}
.guide-home{background:linear-gradient(160deg,#3a2f7a,#1e5a7a 60%,#173d5a)}
.guide-apps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 14px;padding:22px 20px}
.guide-apps>i{aspect-ratio:1;border-radius:12px;background:rgba(255,255,255,.22)}
.guide-app{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px}
.guide-app img{width:100%;aspect-ratio:1;border-radius:12px}
.guide-app small{color:#fff;font-size:10px}
/* Нужная кнопка — пульсирующим кольцом. */
.guide-hit{position:relative;z-index:1}
.guide-hit:after{content:"";position:absolute;inset:-5px;border:2.5px solid #ff9f0a;border-radius:inherit;animation:guide-pulse 1.4s ease-out infinite;pointer-events:none}
.guide-key.guide-hit:after,.guide-app.guide-hit:after{border-radius:14px}
.guide-row.guide-hit{background:#fff4e0;font-weight:700}
@keyframes guide-pulse{0%{opacity:1;transform:scale(.96)}70%{opacity:.15;transform:scale(1.08)}100%{opacity:0;transform:scale(1.1)}}
@media (prefers-reduced-motion:reduce){.guide-hit:after{animation:none}}
/* ── Галочки — одним видом на весь кабинет (06.10) ──────────────────────────────────────────
   :where() — нулевая сила: любое правило раздела (переключатели прячут свой input, у строк лота
   свой размер) побеждает это умолчание. Родная галочка — data-native. */
:where(input[type="checkbox"]:not([data-native])){appearance:none;-webkit-appearance:none;width:18px;height:18px;flex:0 0 18px;margin:0;display:inline-grid;place-items:center;vertical-align:middle;border:1.5px solid #46506d;border-radius:6px;background:#141927;cursor:pointer;transition:border-color .14s,background-color .14s,box-shadow .14s}
:where(input[type="checkbox"]:not([data-native])):hover{border-color:#7565f4}
:where(input[type="checkbox"]:not([data-native])):checked{border-color:#7565f4;background:#7565f4 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/12px no-repeat}
:where(input[type="checkbox"]:not([data-native])):indeterminate{border-color:#7565f4;background:#7565f4 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8h8' stroke='white' stroke-width='2.2' stroke-linecap='round'/%3E%3C/svg%3E") center/12px no-repeat}
:where(input[type="checkbox"]:not([data-native])):focus-visible{outline:2px solid var(--purple-2);outline-offset:2px}
:where(input[type="checkbox"]:not([data-native])):disabled{opacity:.45;cursor:not-allowed}

/* ── Части игры в окне выдачи — строки-варианты, а не голые галочки (06.10) ─────────────── */
.grant-direction-rows{gap:7px;padding:10px;margin-left:46px;border:1px solid var(--border-soft);border-left:2px solid rgba(117,101,244,.45);border-radius:0 12px 12px 0;background:#11161f}
.grant-direction-rows .check-label{display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid #262e43;border-radius:11px;background:#151a28;color:var(--text);font-size:13px;transition:border-color .14s,background-color .14s}
.grant-direction-rows .check-label:hover{border-color:#3d4766}
.grant-direction-rows .check-label:has(input:checked){border-color:rgba(117,101,244,.55);background:rgba(117,101,244,.1)}
.grant-direction-rows .check-label span{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.grant-direction-rows .check-label small{color:var(--muted-2);font-size:11.5px}
.grant-direction-rows .grant-note{margin:0;color:#9aa4bd;font-size:12px;line-height:1.5}
.grant-direction-rows .grant-note.danger{color:#ff91a3}
.grant-direction .grant-switch b{font-size:13.5px}
.grant-direction .grant-switch small{font-size:11.5px}

/* ── Строка сотрудника: кто, что выдано, «Досье» — всё остальное в досье (06.10) ────────── */
.telegram-member.member-row{grid-template-columns:minmax(220px,1fr) minmax(0,2fr) auto;gap:14px;padding:12px 14px;cursor:pointer;transition:border-color .14s,background-color .14s}
.telegram-member.member-row:hover,.telegram-member.member-row:focus-visible{border-color:#3d4766;background:#131a27;outline:0}
.telegram-member.member-row .telegram-member-skills{grid-column:auto}
.telegram-member.member-row .telegram-member-actions{grid-column:auto;align-items:center;gap:12px}
.telegram-member-person strong{font-size:13px}
.telegram-member-person small{font-size:10px}
.telegram-member-actions .dossier{min-height:36px;padding:0 14px;border-color:rgba(117,101,244,.45);background:rgba(117,101,244,.14);color:#d7d2ff;font-size:12px}
.telegram-member-actions .dossier:hover{background:rgba(117,101,244,.24)}
.telegram-member-actions .dossier span{margin-left:3px}
@media (max-width:760px){.telegram-member.member-row{grid-template-columns:1fr auto}.telegram-member.member-row .telegram-member-skills{grid-column:1/-1;grid-row:2}.telegram-member.member-row .telegram-member-actions{grid-column:2;grid-row:1}}

/* ── Досье: имя, загрузка, удаление (06.10) ─────────────────────────────────────────────── */
.staff-access-name{display:flex;flex-direction:column;gap:7px;margin-top:14px}
.staff-access-name-row{display:flex;gap:8px}
.staff-access-name-row input{flex:1;min-width:0;height:40px;padding:0 12px;border:1px solid #30384f;border-radius:10px;background:#171c29;color:var(--text);outline:0}
.staff-access-name-row input:focus{border-color:#675be4}
.staff-access-danger{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid var(--border-soft)}
.staff-profile-loading{padding:18px;color:var(--muted-2);font-size:13px}
.skeleton-text{color:var(--muted-2)}
/* ── Сотрудники — карточками; бухгалтерия — итоги карточками и люди с аватарками (06.10) ──── */
.telegram-members.member-grid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px}
.telegram-members.member-grid>.telegram-member.pending{grid-column:1/-1}
.telegram-member.member-row{display:flex;flex-direction:column;align-items:stretch;gap:12px;min-height:150px;padding:16px;border-radius:15px;background:linear-gradient(145deg,#151a28,#111621)}
.telegram-member.member-row:hover,.telegram-member.member-row:focus-visible{transform:translateY(-2px);border-color:#465171;box-shadow:0 14px 35px rgba(0,0,0,.18);background:linear-gradient(145deg,#171d2c,#121722)}
.telegram-member.member-row .telegram-member-person{grid-template-columns:44px minmax(0,1fr)}
.telegram-member.member-row .telegram-member-avatar{width:44px;height:44px;font-size:15px}
.telegram-member.member-row .telegram-member-person strong{font-size:14px}
.telegram-member.member-row .telegram-role-badge{display:inline-block;margin-top:6px}
.telegram-member.member-row .telegram-member-skills{flex:1}
.telegram-member.member-row .telegram-member-skills small{font-size:11px}
.telegram-member.member-row .telegram-member-actions{justify-content:space-between;margin-top:auto;padding-top:10px;border-top:1px solid var(--border-soft)}
@media (max-width:760px){.telegram-members.member-grid{grid-template-columns:1fr}.telegram-member.member-row{min-height:0}}
.ledger-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}
.ledger-metric strong{display:flex!important;flex-direction:column;gap:2px;font-size:22px!important}
.ledger-metric strong b{font-weight:800}
.ledger-metric.owed strong{color:#ffd174!important}
.ledger-metric.pending strong{color:#71dcf7!important}
.ledger-metric.earned strong{color:#67e0c4!important}
.ledger-metric.paid strong{color:#b8adff!important}
.ledger-metric span{font-size:11px!important}
.ledger-metric small{font-size:10.5px!important}
.ledger-metrics-approx{grid-column:1/-1;margin:-4px 2px 0;color:var(--muted-2);font-size:11px}
@media (max-width:760px){.ledger-metrics{grid-template-columns:1fr 1fr}}
.staff-owe-row{padding:14px 16px;border-radius:14px}
.staff-owe-who{display:flex;align-items:center;gap:11px}
.staff-owe-who>span{min-width:0}
.staff-owe-avatar{width:38px;height:38px;flex:0 0 38px;display:grid;place-items:center;border-radius:var(--avatar-radius);background:linear-gradient(145deg,#6558d7,#277f9d);color:#fff;font-size:13px;font-weight:850;object-fit:cover}
.staff-owe-who strong{font-size:13.5px!important}
.staff-owe-col small,.staff-owe-money small{color:var(--muted-2);font-size:10px;text-transform:uppercase;letter-spacing:.4px}
.staff-owe-col b{font-size:13px}
.staff-owe-money strong{font-size:15px!important}
/* ── Автовыдача по направлениям (06.10) ──────────────────────────────────────────────────── */
.delivery-folder-direction{margin:2px 10px 6px;color:#b8adff;font-size:11px}
.delivery-folder-direction b{color:#ffbd57;font-weight:700}
.delivery-loose{margin:0 0 16px;padding:14px;border:1px solid rgba(255,189,69,.35);border-radius:14px;background:rgba(255,189,69,.06)}
.delivery-loose-head{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}
.delivery-loose-head b{color:#ffd078;font-size:13px}
.delivery-loose-head small{color:var(--muted-2);font-size:11.5px}
.delivery-loose-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid rgba(255,189,69,.15)}
.delivery-loose-row span{min-width:0;display:flex;flex-direction:column;gap:3px}
.delivery-loose-row strong{font-size:12.5px;line-height:1.35}
.delivery-loose-row small{color:var(--muted-2);font-size:11px}
.delivery-code.hidden-key{color:var(--muted-2);cursor:default}
/* ── Нижний ряд телефона: края показывают, что лента листается (06.10) ───────────────────── */
.mobile-nav.more-right .mobile-nav-track{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 34px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 34px),transparent)}
.mobile-nav.more-left .mobile-nav-track{-webkit-mask-image:linear-gradient(to right,transparent,#000 34px);mask-image:linear-gradient(to right,transparent,#000 34px)}
.mobile-nav.more-left.more-right .mobile-nav-track{-webkit-mask-image:linear-gradient(to right,transparent,#000 34px,#000 calc(100% - 34px),transparent);mask-image:linear-gradient(to right,transparent,#000 34px,#000 calc(100% - 34px),transparent)}
.mobile-nav::before,.mobile-nav::after{position:absolute;top:50%;z-index:2;width:18px;height:18px;margin-top:-12px;display:grid;place-items:center;border-radius:50%;background:rgba(117,101,244,.9);color:#fff;font-size:12px;line-height:1;pointer-events:none;opacity:0;transition:opacity .2s}
.mobile-nav::before{content:"‹";left:3px}
.mobile-nav::after{content:"›";right:66px}
.mobile-nav.more-left::before,.mobile-nav.more-right::after{opacity:1}

/* ── Подсказка «текст на заблокированном экране» — экраны настроек телефона (06.10) ──────── */
.guide-platform{margin:0 0 14px}
/* Кнопка подсказки «текст на заблокированном экране» — строкой-карточкой со значком: голая
   фиолетовая надпись читалась как непонятный текст (Larpbase 06.10). */
.notification-guide-link{display:flex;align-items:center;gap:12px;width:100%;margin:10px 0 8px;padding:11px 13px;border:1px solid #33405f;border-radius:13px;background:#151b2a;color:var(--text);text-align:left;cursor:pointer;transition:.16s}
.notification-guide-link:hover{border-color:#5a4fd6;background:#181f31}
.notification-guide-icon{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:11px;background:rgba(117,101,244,.16);font-size:17px}
.notification-guide-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.notification-guide-text strong{font-size:13px}
.notification-guide-text small{color:var(--muted);font-size:11.5px;line-height:1.35}
.notification-guide-link em{flex:none;color:var(--muted-2);font-style:normal;font-size:20px}
.guide-phone.guide-dark{background:#000;color:#fff;padding:14px 12px}
.guide-set-title{margin:2px 4px 12px;font-size:17px;font-weight:700}
.guide-set-caption{margin:0 8px 6px;color:#8e8e93;font-size:10.5px;letter-spacing:.3px}
.guide-set-group{overflow:hidden;border-radius:12px;background:#1c1c1e}
.guide-set-row{position:relative;display:flex;align-items:center;gap:10px;min-height:44px;padding:0 12px;border-bottom:1px solid #2c2c2e;font-size:13px}
.guide-set-row:last-child{border-bottom:0}
.guide-set-row em{margin-left:auto;color:#8e8e93;font-style:normal}
.guide-set-row .guide-check{color:#0a84ff;font-size:15px}
.guide-set-icon{width:26px;height:26px;flex:0 0 26px;display:grid;place-items:center;border-radius:7px;color:#fff;font-size:13px;font-style:normal}
.guide-app-row img{width:26px;height:26px;border-radius:7px}
.guide-row-on{background:rgba(255,159,10,.12)}
.guide-set-hit{position:absolute;left:14px;right:14px;height:46px;border:2.5px solid #ff9f0a;border-radius:12px;animation:guide-pulse 1.4s ease-out infinite;pointer-events:none}
.guide-alerts{display:flex;justify-content:space-around;padding:16px 6px;border-radius:12px;background:#1c1c1e}
.guide-alert{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:6px;border-radius:12px}
.guide-alert small{color:#fff;font-size:10px}
.guide-alert b{width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:#0a84ff;color:#fff;font-size:11px}
.guide-alert-phone{width:34px;height:58px;border:2px solid #0a84ff;border-radius:8px;position:relative}
.guide-alert-phone.lock:after{content:"";position:absolute;left:5px;right:5px;bottom:6px;height:7px;border-radius:3px;background:#0a84ff}
.guide-alert-phone.list:after{content:"";position:absolute;left:5px;right:5px;top:10px;height:28px;border-radius:3px;background:repeating-linear-gradient(#0a84ff 0 5px,transparent 5px 8px)}
.guide-alert-phone.banner:after{content:"";position:absolute;left:4px;right:4px;top:5px;height:8px;border-radius:3px;background:#0a84ff}
.guide-switch-on{width:34px;height:20px;border-radius:10px;background:#34c759;position:relative}
.guide-switch-on:after{content:"";position:absolute;right:2px;top:2px;width:16px;height:16px;border-radius:50%;background:#fff}
.guide-android .guide-set-group{border-radius:18px;background:#202124}
.guide-android .guide-set-title{font-weight:500}
/* Направления 06.10: заведение — своей карточкой по кнопке, поиск — своей рамкой. Раньше оба
   стояли одним рядом и читались как один фильтр из трёх полей. */
.directions-toolbar{display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:12px;margin-bottom:16px}
.directions-toolbar .directions-search{width:100%}
.directions-toolbar .directions-stats{margin:0 2px}
.directions-create{display:block;padding:16px 18px;margin-bottom:14px;border-color:rgba(117,101,244,.45);animation:page-in .12s ease}
.directions-create-head{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.directions-create-head strong{font-size:14px}
.directions-create-head small{color:var(--muted-2);font-size:11.5px;line-height:1.45}
.directions-create-fields{display:grid;grid-template-columns:minmax(160px,1fr) minmax(160px,1fr) auto;gap:10px;align-items:end}
.directions-create-actions{display:flex;gap:8px}
#directionsNewButton.active{box-shadow:0 0 0 2px rgba(147,135,255,.35)}
@media(min-width:821px){#page-directions .heading-actions{flex-wrap:nowrap;flex-shrink:0}}
@media(max-width:820px){.directions-create-fields{grid-template-columns:1fr}.directions-create-actions .button{flex:1 1 0}#directionsNewButton{flex:1 1 auto}}
/* Окно папки автовыдачи: лишние лоты для выбранного направления — названы до «Сохранить». */
.delivery-folder-stray{margin:-4px 0 12px;padding:9px 11px;border:1px solid rgba(255,100,127,.3);border-radius:10px;background:rgba(255,100,127,.07);color:#ff93a5;font-size:12px;line-height:1.45}
/* Подсказка «текст на заблокированном экране»: обводка — на самом пункте. Раньше рамка стояла
   на угаданной высоте (top:58px/110px), и на настоящем телефоне строки выше — рамка обводила
   пустоту под списком (скрин Larpbase 06.10). */
.guide-set-row.guide-target{background:rgba(255,159,10,.10)}
/* Своё мигание, без растяжения: строка сидит в группе с overflow:hidden, и общий guide-pulse
   (растёт до 110% и гаснет до нуля) срезался краем группы и большую часть времени был не виден. */
.guide-set-row.guide-target:after{content:"";position:absolute;inset:3px;border:2.5px solid #ff9f0a;border-radius:10px;animation:guide-row-pulse 1.4s ease-in-out infinite;pointer-events:none}
@keyframes guide-row-pulse{0%,100%{opacity:1}50%{opacity:.4}}
@media (prefers-reduced-motion:reduce){.guide-set-row.guide-target:after{animation:none}}
/* Телефон: всплывашки, ход работ и рассылка — НАД нижним рядом, а не под ним. Высоту ряда
   меряет app.js (--mobile-nav-h); 84px — замер с iPhone Larpbase на случай, если замера ещё нет. */
@media(max-width:820px){
  .toast-region{bottom:calc(var(--mobile-nav-h,84px) + 10px)}
  .job-hud,.broadcast-widget{left:12px;right:12px;width:auto;bottom:calc(var(--mobile-nav-h,84px) + 10px)}
}
/* ── Плагины 06.10: каталог карточками, поиск и полки; замороженный плагин — замком ── */
.plugin-hidden{display:none!important}
.plugins-toolbar{display:flex;flex-direction:column;gap:10px;padding:12px;margin-bottom:16px}
.plugins-search{width:100%}
.plugins-shelves{display:flex;flex-wrap:wrap;gap:6px}
.plugins-shelf{display:inline-flex;align-items:center;gap:7px;min-height:32px;padding:0 12px;border:1px solid #2e3650;border-radius:999px;background:#131927;color:#aeb8cf;font-size:12px;font-weight:650;cursor:pointer}
.plugins-shelf b{color:var(--muted-2);font-size:11px}
.plugins-shelf.active{border-color:#7565f4;background:rgba(117,101,244,.16);color:#fff}
.plugins-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.plugins-empty{padding:28px;border:1px dashed #2e3650;border-radius:16px;color:var(--muted);text-align:center}
.plugin-card{display:flex;flex-direction:column;gap:10px;padding:16px;border:1px solid var(--border);border-radius:18px;background:linear-gradient(145deg,#151a28,#121722)}
.plugin-card.on{border-color:rgba(43,212,184,.32)}
.plugin-card.frozen{border-color:rgba(255,189,69,.42);background:linear-gradient(145deg,#1b1810,#121722)}
.plugin-card.locked{opacity:.86}
.plugin-card-head{display:flex;align-items:center;gap:12px}
.plugin-card-icon{flex:none;display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:rgba(117,101,244,.16);color:#c9c1ff;font-size:19px}
.plugin-card.on .plugin-card-icon{background:rgba(43,212,184,.13);color:var(--teal)}
.plugin-card.frozen .plugin-card-icon{background:rgba(255,189,69,.14);color:var(--amber)}
.plugin-card-title{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.plugin-card-title strong{font-size:15px}
.plugin-card-title small{color:var(--muted-2);font-size:10.5px;text-transform:uppercase;letter-spacing:.8px;font-weight:700}
.plugin-badge{flex:none;padding:4px 9px;border-radius:999px;font-size:11px;font-weight:700;background:#1d2436;color:var(--muted)}
.plugin-badge.on{background:rgba(43,212,184,.13);color:var(--teal)}
.plugin-badge.frozen{background:rgba(255,189,69,.15);color:var(--amber)}
.plugin-badge.locked{background:rgba(117,101,244,.14);color:#b9b0ff}
.plugin-card-hint{margin:0;color:var(--muted);font-size:12.5px;line-height:1.5}
.plugin-frozen-note{margin:0;color:#ffd27a;font-size:12px;line-height:1.45}
.plugin-card .plugin-impact{margin-top:0;font-size:11.5px}
.plugin-card-foot{margin-top:auto;display:flex;justify-content:flex-end;padding-top:4px}
.plugin-toggle{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:12.5px;font-weight:650;color:var(--muted)}
.plugin-toggle input{position:absolute;opacity:0;pointer-events:none}
.plugin-toggle i{position:relative;width:42px;height:24px;border-radius:99px;background:#30374a;transition:.18s}
.plugin-toggle i:after{content:"";position:absolute;left:3px;top:3px;width:18px;height:18px;border-radius:50%;background:#a9b1c3;transition:.18s}
.plugin-toggle input:checked+i{background:var(--teal)}
.plugin-toggle input:checked+i:after{transform:translateX(18px);background:#fff}
.plugin-toggle input:checked~span{color:var(--teal)}
.plugin-toggle input:focus-visible+i{outline:2px solid var(--purple-2);outline-offset:2px}
/* Замок замороженного плагина там, где он жил: пункт панели, кнопка в переписке, строка выдачи. */
.nav-item.plugin-frozen{opacity:.66}
.nav-item.plugin-frozen .nav-label:after{content:" 🔒";font-size:11px}
.mobile-nav button.plugin-frozen{opacity:.62}
.mobile-nav button.plugin-frozen small:after{content:" 🔒";font-size:8px}
.chat-staff-button.plugin-frozen{opacity:.62}
.chat-staff-button.plugin-frozen:after{content:"🔒";margin-left:4px;font-size:10px}
.grant-section.plugin-frozen{cursor:pointer;border-style:dashed;border-color:rgba(255,189,69,.4);opacity:.85}
.plugin-lock-chip{margin-left:auto;color:var(--amber);font-style:normal;font-size:11px;font-weight:700}
.plugin-frozen-kept{display:flex;align-items:center;gap:12px;margin:0 0 14px;padding:12px 14px;border:1px solid rgba(255,189,69,.35);border-radius:13px;background:rgba(255,189,69,.07)}
.plugin-frozen-kept>span{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;background:rgba(255,189,69,.15);color:var(--amber);font-size:17px}
.plugin-frozen-kept b{display:block;color:#ffd27a;font-size:12.5px}
.plugin-frozen-kept small{display:block;margin-top:2px;color:var(--muted);font-size:12px}
@media(max-width:520px){.plugins-grid{grid-template-columns:1fr}.plugin-card{padding:14px}}
/* ── Отзывы и карточка заказа, вид 06.10 ─────────────────────────────────────────────── */
.rv-summary{display:grid;grid-template-columns:minmax(200px,.8fr) minmax(240px,1.2fr) minmax(300px,1.2fr);gap:22px;align-items:center;padding:20px 22px;margin-bottom:16px}
.rv-score-block{display:flex;align-items:center;gap:16px}
.rv-score-block>strong{font-size:46px;line-height:1;letter-spacing:-1.5px}
.rv-score-block>div{display:flex;flex-direction:column;gap:6px}
.rv-score-block small{color:var(--muted);font-size:12px}
.rv-score-block small b{color:var(--text)}
.rv-score-stars .rv-stars{font-size:18px}
.rv-bars{display:flex;flex-direction:column;gap:6px}
.rv-bar{display:grid;grid-template-columns:30px 1fr 40px;align-items:center;gap:10px;font-size:12px;color:var(--muted)}
.rv-bar>span:first-child i{font-style:normal;color:#f5b942;margin-left:2px}
.rv-bar b{text-align:right;color:var(--text);font-size:12px}
.rv-bar.zero b,.rv-bar.zero>span:first-child{opacity:.45}
.rv-bar-track{height:7px;border-radius:99px;background:#1f2638;overflow:hidden}
.rv-bar-track i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#f5b942,#ffd36b)}
.rv-bar.s3 .rv-bar-track i,.rv-bar.s2 .rv-bar-track i,.rv-bar.s1 .rv-bar-track i{background:linear-gradient(90deg,#ff647f,#ff8c6b)}
.rv-bar.s4 .rv-bar-track i{background:linear-gradient(90deg,#e8c547,#f0d77a)}
.rv-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
.rv-tile{display:flex;flex-direction:column;gap:3px;padding:12px 14px;border:1px solid var(--border);border-radius:14px;background:#141a28;text-align:left;color:var(--text)}
button.rv-tile{cursor:pointer;transition:.16s}
button.rv-tile:hover{border-color:#44506f;transform:translateY(-1px)}
.rv-tile span{color:var(--muted);font-size:11px;font-weight:650}
.rv-tile strong{font-size:22px;letter-spacing:-.5px}
.rv-tile small{color:var(--muted-2);font-size:10.5px}
.rv-tile.amber strong{color:var(--amber)}
.rv-tile.amber.calm strong{color:var(--teal)}
.rv-tile.green strong{color:var(--teal)}
.rv-tile.muted strong{color:var(--muted)}
.rv-toolbar{gap:12px}
.rv-filters{display:flex;flex-wrap:wrap;gap:6px}
.rv-filters{scrollbar-width:none}.rv-filters::-webkit-scrollbar{display:none}
.rv-filters button{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 13px;border:1px solid #2e3650;border-radius:999px;background:#131927;color:#aeb8cf;font-size:12px;font-weight:650;cursor:pointer}
.rv-filters button b{color:var(--muted-2);font-size:11px}
.rv-filters button.active{border-color:#7565f4;background:rgba(117,101,244,.16);color:#fff}
.rv-filters button.active b{color:#c9c1ff}
.rv-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:14px;padding-top:4px}
.rv-card{position:relative;display:flex;flex-direction:column;gap:12px;padding:16px 18px;border:1px solid var(--border);border-radius:18px;background:linear-gradient(160deg,#161c2b,#121722)}
.rv-card.is-pending{border-color:rgba(255,189,69,.38)}
.rv-card.is-low{border-color:rgba(255,100,127,.4)}
.rv-card.is-low:before,.rv-card.is-pending:before{content:"";position:absolute;left:0;top:18px;bottom:18px;width:3px;border-radius:0 3px 3px 0;background:var(--amber)}
.rv-card.is-low:before{background:var(--rose)}
.rv-card.is-hidden{opacity:.78;border-style:dashed}
.rv-head{display:flex;align-items:center;gap:12px}
.rv-avatar{width:40px;height:40px;border-radius:50%;flex:none;object-fit:cover;display:grid;place-items:center;background:linear-gradient(135deg,#5b6ee1,#7a5be1);color:#fff;font-weight:800}
.rv-who{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.rv-name{padding:0;border:0;background:none;color:var(--text);font-size:14px;font-weight:750;text-align:left;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rv-name:hover{color:#c9c1ff}
.rv-when{color:var(--muted-2);font-size:11.5px}
.rv-stars{display:inline-flex;gap:1px;font-size:15px;letter-spacing:0}
.rv-stars i{font-style:normal;color:#3a4257}
.rv-stars.top i.on{color:#f5b942}
.rv-stars.good i.on{color:#e8c547}
.rv-stars.bad i.on{color:#ff647f}
.rv-text{margin:0;font-size:14px;line-height:1.55;color:#e8ebf7;white-space:pre-wrap;overflow-wrap:anywhere}
.rv-text.empty{color:var(--muted-2);font-style:italic;font-size:13px}
.rv-tags{display:flex;flex-wrap:wrap;gap:6px}
.rv-chip{display:inline-flex;align-items:center;gap:6px;min-height:26px;padding:0 10px;border:1px solid #2a3248;border-radius:999px;background:#151b29;color:#aeb8cf;font-size:11.5px;font-weight:650;text-decoration:none;white-space:nowrap}
.rv-order{color:#b9b0ff;cursor:pointer;font-family:inherit}
.rv-order:hover,.rv-link:hover{border-color:#5a4fd6;color:#fff}
.rv-money{color:var(--teal)}
.rv-account-avatar{width:16px;height:16px;border-radius:50%;object-fit:cover;font-size:8px;display:grid;place-items:center;background:#2a3248}
.rv-reply{display:flex;flex-direction:column;gap:6px;padding:11px 13px;border-radius:13px;background:rgba(43,212,184,.06);border:1px solid rgba(43,212,184,.18)}
.rv-reply-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.rv-reply-head span{color:var(--teal);font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.6px}
.rv-reply p{margin:0;color:#cfd6e6;font-size:12.5px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.rv-reply.empty{flex-direction:row;align-items:center;justify-content:space-between;background:rgba(255,189,69,.06);border-color:rgba(255,189,69,.22)}
.rv-reply.empty>span{color:var(--amber);font-size:12px;font-weight:700}
.rv-reply-button{min-height:34px;padding:0 16px;font-size:12.5px}
.rv-hidden-note{display:flex;flex-direction:column;gap:3px;padding:11px 13px;border-radius:13px;border:1px dashed #3a4257;background:#131826}
.rv-hidden-note b{color:#aeb8cf;font-size:12px}
.rv-hidden-note span{color:var(--muted);font-size:12px;line-height:1.45}
.rv-card.compact{padding:14px 15px;gap:10px}
.rv-card.compact .rv-head{justify-content:space-between}
@media(max-width:1180px){.rv-summary{grid-template-columns:1fr 1fr}.rv-tiles{grid-column:1/-1}}
@media(max-width:820px){.rv-summary{grid-template-columns:1fr;gap:16px;padding:16px}.rv-score-block>strong{font-size:40px}.rv-list{grid-template-columns:1fr}.rv-card{padding:14px}.rv-filters{overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}.rv-filters button{flex:none}}

/* Карточка заказа */
.od-modal .modal-heading h2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:19px;line-height:1.3}
#orderDetailMeta{display:flex;align-items:center;gap:8px;margin-top:6px}
.od-id{color:#b9b0ff;font-weight:750;font-size:13px}
.od-hero{display:grid;grid-template-columns:1.25fr 1fr;gap:12px;margin-bottom:12px}
.od-money{display:flex;flex-direction:column;gap:4px;padding:16px 18px;border:1px solid var(--border);border-radius:16px;background:linear-gradient(150deg,#171d2c,#131827)}
.od-money>span{color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.7px}
.od-money>strong{font-size:30px;letter-spacing:-1px;color:var(--teal)}
.od-money.active>strong{color:#9d8fff}
.od-money.refunded{border-color:rgba(255,100,127,.35);background:linear-gradient(150deg,#21151c,#131827)}
.od-money.refunded>strong{color:var(--rose);text-decoration:line-through;text-decoration-thickness:2px}
.od-money small{color:var(--muted);font-size:11.5px;line-height:1.4}
.od-money .od-paid em{font-style:normal;color:var(--muted-2)}
.od-share{margin-top:4px;color:var(--teal);font-size:12px}
.od-buyer{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--border);border-radius:16px;background:#141a28;color:var(--text);text-align:left;font:inherit;cursor:pointer;transition:.16s}
button.od-buyer:hover{border-color:#5a4fd6;background:#171e30}
.od-buyer.flat{cursor:default}
.od-buyer-face{flex:none;display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,#36caef,#5b6ee1);color:#fff;font-weight:800;font-size:17px}
.od-buyer-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.od-buyer-text small{color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px}
.od-buyer-text strong{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.od-buyer-text em{font-style:normal;color:var(--muted-2);font-size:11.5px}
.od-buyer-go{font-style:normal;color:var(--muted-2);font-size:22px}
.od-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:14px}
.od-facts>div{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border-soft);border-radius:13px;background:#121725}
.od-facts i{flex:none;display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:#1b2234;font-style:normal;font-size:14px}
.od-facts span{min-width:0;display:flex;flex-direction:column;gap:2px}
.od-facts small{color:var(--muted-2);font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;font-weight:700}
.od-facts b{font-size:12.5px;line-height:1.35;overflow-wrap:anywhere}
.od-review{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.od-section-title{font-size:13px}
.od-muted{color:var(--muted);font-size:12.5px}
.od-staff{display:flex;flex-direction:column;gap:6px;padding:11px 13px;border-radius:13px;background:#121725;border:1px solid var(--border-soft);color:var(--muted);font-size:12.5px}
/* Отзывы G2G (17.10): «понравилось / не понравилось» вместо звёзд, пункты покупателя чипами. */
.rv-mark{font-size:18px;line-height:1}
.rv-mark.bad{filter:saturate(1.4)}
.rv-g2g-tags{margin-top:6px}
/* Карточка заказа G2G (17.10): «получишь» крупно, как od-hero у FunPay. */
.g2g-order-hero{display:grid;grid-template-columns:1.25fr 1fr;gap:10px;margin-bottom:12px}
.g2g-order-hero>div{display:flex;flex-direction:column;gap:3px;padding:12px 14px;border:1px solid var(--border-soft);border-radius:13px;background:#121725}
.g2g-order-hero small{color:var(--muted-2);font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;font-weight:700}
.g2g-order-hero strong{font-size:20px;letter-spacing:-.3px}
.g2g-order-hero .earned strong{color:var(--teal)}
.g2g-order-hero em{color:var(--muted-2);font-size:11px;font-style:normal}
.g2g-order-review{margin-top:10px}
.g2g-order-case{margin-top:10px}
.g2g-order-case:empty{display:none}
.g2g-order-review:empty{display:none}
.g2g-order-review-head{color:var(--muted-2);font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;font-weight:700;margin-bottom:6px}
@media(max-width:640px){.g2g-order-hero{grid-template-columns:1fr}}
.od-actions{flex-wrap:wrap}
@media(max-width:620px){.od-hero{grid-template-columns:1fr}.od-facts{grid-template-columns:1fr}.od-money>strong{font-size:26px}}
/* ── Карточка клиента, вид 06.10 (Larpbase: «попривлекательнее») ─────────────────────────
   Только вид: разметка, поля и их порядок прежние (сторож CustomerCardLayoutCheck). Шапка —
   крупнее и с цветом типа клиента, сводка — плитками со значками, блоки — карточками с
   цветной меткой раздела, строки покупок и интереса — с подсветкой под курсором. */
#customerDialog .customer-modal-heading{padding-bottom:6px}
#customerDialog .customer-dialog-avatar{width:60px;height:60px;border-radius:50%;padding:3px;background:linear-gradient(135deg,#7565f4,#36caef);box-shadow:0 10px 28px rgba(117,101,244,.25)}
#customerDialog[data-stage="vip"] .customer-dialog-avatar{background:linear-gradient(135deg,#f5b942,#ff8c6b);box-shadow:0 10px 28px rgba(245,185,66,.25)}
#customerDialog[data-stage="repeat"] .customer-dialog-avatar{background:linear-gradient(135deg,#9387ff,#c06bff)}
#customerDialog .customer-dialog-avatar .avatar-pair,#customerDialog .customer-dialog-avatar img,#customerDialog .customer-dialog-avatar-image{width:100%;height:100%;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:#1a2133;color:#fff;font-size:22px;font-weight:800}
#customerDialog #customerDialogName{font-size:24px;letter-spacing:-.5px}
#customerDialog .customer-dialog-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
#customerDialog .customer-dialog-summary>div{position:relative;display:flex;flex-direction:column;gap:5px;padding:13px 14px 13px 52px;border:1px solid var(--border);border-radius:15px;background:linear-gradient(150deg,#161c2b,#121725);min-height:66px;justify-content:center}
#customerDialog .customer-dialog-summary>div:before{position:absolute;left:13px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:30px;height:30px;border-radius:10px;font-size:14px;background:rgba(117,101,244,.14);color:#b9b0ff}
#customerDialog .customer-dialog-summary>div:nth-child(1):before{content:"◆"}
#customerDialog .customer-dialog-summary>div:nth-child(2):before{content:"▣";background:rgba(54,202,239,.13);color:var(--cyan)}
#customerDialog .customer-dialog-summary>div:nth-child(3):before{content:"∑";background:rgba(43,212,184,.13);color:var(--teal)}
#customerDialog .customer-dialog-summary>div:nth-child(4):before{content:"⌀";background:rgba(255,189,69,.13);color:var(--amber)}
#customerDialog .customer-dialog-summary>div:nth-child(5):before{content:"◷";background:rgba(255,100,127,.12);color:#ff93a5}
#customerDialog .customer-dialog-summary span{color:var(--muted-2);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.6px}
#customerDialog .customer-dialog-summary strong{font-size:14.5px;line-height:1.25;color:var(--text);overflow-wrap:anywhere;white-space:normal!important;overflow:visible!important;text-overflow:clip!important}
#customerDialog .customer-dialog-summary>div:nth-child(3) strong{color:var(--teal)}
#customerStageBox[data-stage="vip"]{border-color:rgba(245,185,66,.45);background:linear-gradient(150deg,#221d12,#121725)}
#customerStageBox[data-stage="vip"]:before{content:"★"!important;background:rgba(245,185,66,.16)!important;color:#f5b942!important}
#customerStageBox[data-stage="vip"] strong{color:#f5c75a}
#customerStageBox[data-stage="repeat"]{border-color:rgba(147,135,255,.4)}
#customerStageBox[data-stage="repeat"] strong{color:#c9c1ff}
#customerStageBox[data-stage="buyer"] strong{color:#7fe3d1}
#customerStageBox[data-activity="cooling"]{box-shadow:inset 0 -2px 0 rgba(255,189,69,.55)}
#customerStageBox[data-activity="asleep"]{box-shadow:inset 0 -2px 0 rgba(143,155,184,.45)}
#customerDialog .customer-block,#customerDialog .customer-detail-section{border:1px solid var(--border);border-radius:18px;background:linear-gradient(160deg,#151b29,#11161f);box-shadow:0 1px 0 rgba(255,255,255,.02) inset}
#customerDialog .customer-block-head .eyebrow,#customerDialog .customer-detail-heading .eyebrow{display:inline-flex;align-items:center;gap:7px}
#customerDialog .customer-block-head .eyebrow:before,#customerDialog .customer-detail-heading .eyebrow:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--purple-2);box-shadow:0 0 0 3px rgba(147,135,255,.15)}
#customerDialog .customer-notes-block .customer-block-head .eyebrow:before{background:var(--amber);box-shadow:0 0 0 3px rgba(255,189,69,.15)}
#customerDialog .customer-access-section .customer-block-head .eyebrow:before{background:var(--cyan);box-shadow:0 0 0 3px rgba(54,202,239,.15)}
#customerDialog .customer-block-head h3,#customerDialog .customer-detail-heading h3{font-size:16px;letter-spacing:-.2px}
#customerDialog .customer-order-list>button,#customerDialog .customer-interest-row>button{border-radius:13px;transition:background .16s,border-color .16s,transform .16s}
#customerDialog .customer-order-list>button:hover,#customerDialog .customer-interest-row>button:hover{background:#1b2235;border-color:#3a4566;transform:translateY(-1px)}
#customerDialog .customer-order-list>button>span:last-child strong,#customerDialog .customer-interest-row>button>span:last-child strong{color:var(--teal);font-size:13.5px}
#customerDialog .customer-account-list article{border-radius:14px;transition:border-color .16s}
#customerDialog .customer-account-list article:hover{border-color:#3a4566}
#customerDialog .customer-modal-actions{backdrop-filter:blur(14px);background:rgba(14,18,28,.88)}
@media(max-width:1180px){#customerDialog .customer-dialog-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:620px){#customerDialog .customer-dialog-summary{grid-template-columns:1fr 1fr}#customerDialog .customer-dialog-summary>div{padding-left:46px}#customerDialog .customer-dialog-summary>div:before{left:10px;width:26px;height:26px;font-size:12px}#customerDialog .customer-dialog-avatar{width:50px;height:50px}#customerDialog #customerDialogName{font-size:20px}}
/* ── Разговор с командой, вид 06.10 ─────────────────────────────────────────────────────
   Как мессенджер: люди слева с лицами, шапка с тем, с кем говоришь, дни чертой, свои сообщения
   справа фиолетовым, его — слева. Высота постоянная: лента прокручивается внутри. */
.staff-talk-card .staff-chat{grid-template-columns:minmax(230px,270px) minmax(0,1fr);gap:14px;height:min(620px,72vh)}
.staff-talk-card .staff-chat-people{max-height:none;height:100%;padding:8px;gap:4px;border-radius:16px;background:#0f1420}
.staff-talk-card .staff-chat-person{display:grid;grid-template-columns:40px minmax(0,1fr) auto;grid-template-rows:auto auto;column-gap:10px;row-gap:1px;align-items:center;padding:9px 10px;border-radius:13px}
.staff-talk-card .staff-chat-person .staff-avatar{grid-row:1/3;grid-column:1}
.staff-chat-face{width:40px;height:40px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:linear-gradient(135deg,#5b6ee1,#7a5be1);color:#fff;font-weight:800;font-size:15px}
.staff-talk-card .staff-chat-person strong{grid-column:2;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.staff-talk-card .staff-chat-person .staff-chat-role{grid-column:2;font-size:10.5px}
.staff-talk-card .staff-chat-when{grid-column:3;grid-row:1;margin:0;font-size:10.5px}
.staff-talk-card .staff-chat-unread{position:static;grid-column:3;grid-row:2;justify-self:end}
.staff-talk-card .staff-chat-thread{height:100%;border-radius:16px;background:#0d111b;overflow:hidden}
.staff-chat-head{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--border-soft);background:linear-gradient(90deg,rgba(117,101,244,.08),transparent)}
.staff-chat-head:empty{display:none}
.staff-chat-head>span:not(.staff-avatar){flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.staff-chat-head>.staff-avatar{flex:none;width:38px;height:38px}
.staff-chat-head strong{font-size:14.5px}
.staff-chat-head small{color:var(--muted-2);font-size:11.5px}
.staff-chat-head .button{min-height:34px;padding:0 13px;font-size:12px}
.staff-chat-head-face{width:38px;height:38px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:linear-gradient(135deg,#36caef,#5b6ee1);color:#fff;font-weight:800}
.staff-talk-card .staff-chat-messages{max-height:none;min-height:0;flex:1;gap:6px;padding:16px 18px;background:radial-gradient(circle at 20% 0%,rgba(117,101,244,.05),transparent 45%)}
.staff-chat-day{align-self:center;margin:8px 0 4px}
.staff-chat-day span{display:inline-block;padding:4px 11px;border-radius:999px;background:#1a2133;color:var(--muted);font-size:11px;font-weight:650}
.staff-talk-card .staff-chat-line{max-width:min(72%,520px);padding:9px 13px 7px;border-radius:16px;font-size:13.5px;line-height:1.45;box-shadow:0 2px 10px rgba(0,0,0,.18)}
.staff-talk-card .staff-chat-line.out{border-bottom-right-radius:5px;background:linear-gradient(145deg,#7565f4,#5a4bd6)}
.staff-talk-card .staff-chat-line.in{border-bottom-left-radius:5px;background:#1a2132;border-color:#2a3350}
.staff-talk-card .staff-chat-line time{margin-top:3px;text-align:right;font-size:10.5px;color:rgba(230,234,245,.55)}
.staff-talk-card .staff-chat-image{margin:-3px -7px 7px;border-radius:12px}
.staff-talk-card .staff-chat-image img{max-height:300px}
.staff-talk-card .staff-chat-empty{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:12.5px;text-align:center;max-width:280px}
.staff-talk-card .staff-chat-empty b{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:rgba(117,101,244,.14);color:#b9b0ff;font-size:20px}
.staff-talk-card .staff-chat-compose{padding:12px 14px;gap:10px;background:#0f1420}
.staff-talk-card .staff-chat-compose input{min-height:44px;border-radius:999px;padding:0 18px;font-size:13px;background:#151b2a}
.staff-talk-card .staff-chat-compose .chat-attach-button{width:44px;border-radius:50%;align-self:center;height:44px}
.staff-talk-card .staff-chat-compose .button{border-radius:999px;min-height:44px;padding:0 20px}
@media(max-width:760px){.staff-talk-card .staff-chat{grid-template-columns:1fr;height:auto}.staff-talk-card .staff-chat-people{height:auto;flex-direction:row;overflow-x:auto}.staff-talk-card .staff-chat-person{flex:none;min-width:190px}.staff-talk-card .staff-chat-thread{height:min(560px,70vh)}.staff-talk-card .staff-chat-line{max-width:86%}}
/* Карточка сотрудника: «Написать» на месте пустого кружка-отметки; отметки — только в режиме выбора. */
.member-chat-button{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:0 12px;border:1px solid #33405f;border-radius:10px;background:#151b2a;color:#c9c1ff;font-size:12px;font-weight:700;cursor:pointer;transition:.16s}
.member-chat-button:hover{border-color:#5a4fd6;background:#1b2236;color:#fff}
.member-chat-button b{min-width:18px;height:18px;padding:0 5px;border-radius:99px;background:var(--rose);color:#fff;font-size:10px;line-height:18px;text-align:center}
.telegram-member.member-row .telegram-member-actions{justify-content:flex-end;gap:8px}
@media(max-width:560px){.member-chat-button span{display:none}}
/* ── Роли в шапке карточки и значок поставщика, вид 06.10 ─────────────────────────────────
   Кнопки ролей — нормального размера, с рисунком и цветом роли: клиент бирюзовый, поставщик
   синий. Выключенная роль — тихая, с «+»; включённая — залитая, с галочкой и источником. */
#customerDialog .customer-dialog-roles{gap:8px;margin:10px 0 2px}
#customerDialog #customerDialogMeta{margin-top:4px}
.customer-role-chip{min-height:32px;padding:0 12px 0 10px;gap:7px;border-radius:10px;font-size:12px;font-weight:650;background:#141a28}
.customer-role-chip .role-ico{display:grid;place-items:center;width:20px;height:20px;border-radius:6px;background:#1d2436;color:var(--muted)}
.customer-role-chip .role-ico svg{width:13px;height:13px}
.customer-role-chip .role-state{margin-left:2px;font-size:12px;color:var(--muted-2)}
.customer-role-chip small{font-size:11px;font-weight:600}
.customer-role-chip.role-client.on{border-color:rgba(43,212,184,.45);background:rgba(43,212,184,.09);color:#dff8f3}
.customer-role-chip.role-client.on .role-ico{background:rgba(43,212,184,.18);color:var(--teal)}
.customer-role-chip.role-client.on small,.customer-role-chip.role-client.on .role-state{color:var(--teal)}
.customer-role-chip.role-supplier.on{border-color:rgba(96,165,250,.5);background:rgba(96,165,250,.1);color:#e3eeff}
.customer-role-chip.role-supplier.on .role-ico{background:rgba(96,165,250,.2);color:#8cc0ff}
.customer-role-chip.role-supplier.on small,.customer-role-chip.role-supplier.on .role-state{color:#8cc0ff}
.customer-role-chip:not(.on){border-style:dashed}
.customer-role-chip:not(.on):hover .role-ico{color:var(--text)}
.chat-flag.chat-supplier{border-color:rgba(96,165,250,.4);background:rgba(96,165,250,.1);color:#cfe2ff}
.chat-flag .flag-ico{display:inline-grid;place-items:center;color:#8cc0ff}
.chat-flag .flag-ico svg{width:12px;height:12px}
/* Направления клиента 06.10: «＋ Добавить направление» кнопкой, выбор — из игр клиента. */
.client-direction-add-button{display:inline-flex;align-items:center;gap:6px;min-height:36px;margin-top:10px;padding:0 14px;border:1px dashed #3a4566;border-radius:10px;background:transparent;color:#aeb8cf;font-size:12.5px;font-weight:650;cursor:pointer;transition:.16s}
.client-direction-add-button:hover{border-color:#5a4fd6;color:#fff;background:rgba(117,101,244,.08)}
.client-direction-pick{display:flex;flex-direction:column;gap:10px;margin-top:10px;padding:12px 14px;border:1px solid #2e3650;border-radius:13px;background:#121725}
.client-direction-pick>.text-button{align-self:flex-end}
.client-direction-pick-game{display:flex;flex-direction:column;gap:7px}
.client-direction-pick-game>span{color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px}
.client-direction-pick-game>div{display:flex;flex-wrap:wrap;gap:6px}
.client-direction-option{min-height:30px;padding:0 12px;border:1px solid rgba(113,182,255,.3);border-radius:9px;background:rgba(113,182,255,.08);color:#cfe3ff;font-size:12px;font-weight:650;cursor:pointer;transition:.16s}
.client-direction-option:hover{border-color:rgba(113,182,255,.6);background:rgba(113,182,255,.16);color:#fff}
.client-direction-option.rest{border-style:dashed;color:#aeb8cf;background:transparent}
/* Колесо площадок 06.10, вечер: «чётко и брутально, свечения раздражают» (Larpbase). Края окна
   режут ленту прямой линией — маски-затухания нет, теней у площадок нет, нажатие ничего не
   сжимает (сжатие на ходу размывает текст). Стрелки — векторные шевроны с прямыми углами. */
.product-switch{background:#0b0e16;border-color:#232a3d}
.product-switch .ps-arrow{color:#6f7a96;transition:color .12s,background-color .12s}
.product-switch .ps-arrow svg{width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:square;stroke-linejoin:miter}
.product-switch .ps-arrow:hover{color:#fff;background:#171d2c}
.product-switch .ps-arrow:active{color:#fff;background:#202739;transform:none}
/* Шрифт и цвет имён — прежние (базовое правило выше): жирнее 700 Larpbase не понравилось (06.10). */
.product-switch-btn{border-radius:7px;transition:color .12s,background-color .12s}
.product-switch-btn:hover{background:#151a28}
/* Имя не влезло (layoutCarousel меряет) — одни значки, как на телефоне. */
.product-switch.ps-compact .product-switch-btn{gap:0}
.product-switch.ps-compact .product-switch-btn span{display:none}
.product-switch.can-scroll .ps-window{cursor:grab}
.product-switch.spinning .ps-window{cursor:grabbing}
/* ── Экран запуска 06.10 ─────────────────────────────────────────────────────────────────── */
.login-brand-mark{box-shadow:0 14px 34px rgba(117,101,244,.35)}
.login-brand-mark.has-icon{background:transparent;box-shadow:0 14px 34px rgba(117,101,244,.28);overflow:hidden}
.login-brand-mark.has-icon img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
/* Значок лежит в разметке поверх буквы и проявляется, когда догрузился; буква видна только до. */
.login-brand-mark{position:relative;overflow:hidden}
.login-brand-mark img{position:absolute;inset:0;opacity:0;transition:opacity .15s}
.login-brand-mark.has-icon img{opacity:1}
.login-brand-mark.has-icon b{visibility:hidden}
.login-card .login-lead{color:#aab3c9;line-height:1.5}
.login-boot{display:flex;flex-direction:column;gap:10px;margin-top:22px;padding:14px 16px;border:1px solid #2a3150;border-radius:14px;background:rgba(117,101,244,.06)}
.login-boot.hidden{display:none}
.login-boot-row{display:flex;align-items:center;gap:10px;font-size:13.5px;font-weight:650;color:#e3e7f5}
.login-spinner{flex:none;width:16px;height:16px;border-radius:50%;border:2px solid rgba(147,135,255,.25);border-top-color:#9387ff;animation:login-spin .8s linear infinite}
@keyframes login-spin{to{transform:rotate(360deg)}}
.login-boot-bar{position:relative;height:4px;border-radius:99px;background:#1d2338;overflow:hidden}
.login-boot-bar i{position:absolute;inset:0 auto 0 0;width:38%;border-radius:inherit;background:linear-gradient(90deg,#7565f4,#36caef);animation:login-bar 1.3s cubic-bezier(.45,0,.55,1) infinite}
@keyframes login-bar{0%{transform:translateX(-110%)}100%{transform:translateX(290%)}}
.login-boot-hint{color:var(--muted);font-size:12px;line-height:1.45}
.login-boot-hint:empty{display:none}
.login-boot.failed{border-color:rgba(255,100,127,.35);background:rgba(255,100,127,.07)}
.login-boot.failed .login-spinner{border-color:rgba(255,100,127,.25);border-top-color:var(--rose)}
.login-boot.failed .login-boot-row{color:#ffb3c0}
.login-boot.failed .login-boot-bar i{background:linear-gradient(90deg,#ff647f,#ff9a6b)}
@media (prefers-reduced-motion:reduce){.login-spinner,.login-boot-bar i{animation-duration:2.4s}}
/* Список направлений в «добавить»: прокрутка внутри, а не простыня на всю карточку; поиск — когда их много. */
.client-direction-pick-list{display:flex;flex-direction:column;gap:10px;max-height:260px;overflow-y:auto;padding-right:4px}
.client-direction-search{min-height:38px}
/* ── Как позвать человека и как завести бота (06.10) ────────────────────────────────────── */
.staff-invite{max-width:880px;margin:2px 0 18px calc(38px + 14px)}
.staff-invite.hidden,.staff-invite .hidden{display:none}
.staff-invite-steps,.bot-howto{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.staff-invite-steps li,.bot-howto li{display:flex;align-items:flex-start;gap:10px;color:#c3cadb;font-size:13px;line-height:1.5}
.staff-invite-steps li>b,.bot-howto li>b{flex:none;display:grid;place-items:center;width:22px;height:22px;margin-top:-1px;border-radius:7px;background:rgba(117,101,244,.16);color:#b9adff;font-size:11.5px;font-weight:800}
.staff-invite-steps em{font-style:normal;font-weight:700;color:#fff}
.bot-howto code{padding:1px 6px;border-radius:5px;background:#1b2132;color:#e6eaf5;font-size:12px}
.bot-howto a{color:#a79cff;font-weight:650}
.staff-invite-link{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;padding:10px 12px;border:1px solid #2c3550;border-radius:12px;background:#121726}
.staff-invite-bot{display:flex;align-items:center;gap:10px;min-width:0;flex:1 1 220px}
.staff-invite-bot>i{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:rgba(54,170,240,.14);color:#5cc1ff;font-style:normal;font-size:15px}
.staff-invite-bot>span{min-width:0}
.staff-invite-bot strong,.staff-invite-bot small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.staff-invite-bot strong{font-size:14px}
.staff-invite-bot small{margin-top:2px;color:var(--muted);font-size:12px}
.staff-invite-actions{display:flex;gap:8px;flex-wrap:wrap}
.staff-invite-actions a.button{text-decoration:none}
.staff-invite-nobot{padding:14px 16px;border:1px solid rgba(255,189,69,.28);border-radius:13px;background:rgba(255,189,69,.05)}
.staff-invite-nobot>strong{display:block;color:#ffd27a;font-size:14px}
.staff-invite-nobot>p{margin:6px 0 12px;color:#aab3c9;font-size:13px;line-height:1.5}
.staff-invite-nobot>.button{margin-top:14px}
.bot-howto-box{margin-bottom:14px;padding:12px 14px;border:1px solid #2c3550;border-radius:12px;background:#121726}
.bot-howto-box>strong{display:block;margin-bottom:10px;font-size:13px}
@media (max-width:700px){.staff-invite{margin-left:0}.staff-invite-actions{width:100%}.staff-invite-actions>*{flex:1 1 auto;text-align:center}}
/* Заголовок группы <optgroup> в меню выбора (06.10). */
.picker-group{padding:10px 10px 4px;color:var(--muted);font-size:10.5px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
.picker-group:first-child{padding-top:4px}
/* ── Окно «Отправить лот» 07.10: прокрутка ОДНА ────────────────────────────────────────────
   Две полосы рядом (скрин Larpbase): у формы max-height 88vh плюс отступы 2×20–26 px, а у самого
   окна max-height тоже 88vh — форма вылезала на свои отступы, и прокручивалось и окно, и форма.
   Окно больше не прокручивается, форма — ровно по его высоте и с тонкой тёмной полосой. */
.chat-lot-modal,.finance-withdraw-modal{overflow:hidden}
/* Колонкой: форма занимает ровно внутреннюю высоту окна — max-height:inherit давал на 2 px больше
   (рамка окна), и низ с кнопкой «Отправить» срезался. */
.chat-lot-modal[open],.finance-withdraw-modal[open]{display:flex;flex-direction:column}
.chat-lot-modal>form,.finance-withdraw-modal>form{box-sizing:border-box;flex:1 1 auto;min-height:0;max-height:none;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#39415c transparent}
/* Полоса «Отмена / Отправить» прилипает к низу и на компьютере: раньше только на узких экранах,
   а здесь «Отправить» уезжал вниз за выбранным лотом и долей. Прилипание считается от
   внутреннего отступа формы (26 px) — отсюда bottom:-26px, как −20 у узкой раскладки. */
@media(min-width:821px){.chat-lot-modal .modal-actions{position:sticky;bottom:-26px;z-index:2;margin:18px -26px -26px;padding:13px 26px;background:#111622;border-top:1px solid var(--border-soft)}}
.chat-lot-share{grid-column:1/-1;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding:10px 13px;border:1px solid rgba(43,212,184,.28);border-radius:11px;background:rgba(43,212,184,.06)}
.chat-lot-share.hidden{display:none}
.chat-lot-share>span{color:#9fe9d9;font-size:12px;font-weight:700}
.chat-lot-share>b{color:#fff;font-size:17px;font-weight:800}
.chat-lot-share>small{color:var(--muted);font-size:11.5px}
/* ── Направления 07.10: карточки сворачиваются ─────────────────────────────────────────────── */
.directions-card-head[data-direction-toggle]{cursor:pointer}
.directions-card-head{grid-template-columns:auto minmax(0,1fr) auto auto}
@media(max-width:820px){.directions-card-head{grid-template-columns:auto minmax(0,1fr)}.directions-card-meta,.directions-card-actions{grid-column:1/-1}}
.directions-chevron{flex:none;display:grid;place-items:center;width:28px;height:28px;border:1px solid #2c3550;border-radius:8px;background:#141a28;color:#8f9ab6;cursor:pointer;transition:transform .18s ease,color .12s,border-color .12s}
.directions-chevron svg{width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:square;transition:transform .18s ease}
.directions-card.expanded .directions-chevron svg{transform:rotate(90deg)}
.directions-chevron:hover{color:#fff;border-color:#4a4185}
.directions-card{transition:border-color .15s,background .15s}
.directions-card:not(.expanded):hover{border-color:#3a4566}
.directions-card.expanded{border-color:#3d3a73}
/* ── Перевод клиента в другое направление ─────────────────────────────────────────────────── */
.client-direction-move{display:inline-grid;place-items:center;width:22px;height:22px;margin-left:4px;border:1px solid rgba(113,182,255,.35);border-radius:7px;background:rgba(113,182,255,.08);color:#9fcbff;font-size:12px;cursor:pointer}
.client-direction-move:hover{background:rgba(113,182,255,.18);color:#fff}
.client-direction-moves{flex-direction:column;align-items:flex-start}
.client-direction-move-list{display:flex;flex-wrap:wrap;gap:6px}
/* «Пачкой» при «смотреть» — заперта и видно почему. */
.grant-switch.locked{opacity:.55;cursor:not-allowed}
/* ── Окно лота в два шага 07.10 ──────────────────────────────────────────────────────────── */
.chat-lot-modal.pricing .chat-lot-filter-grid,.chat-lot-modal.pricing #chatLotList{display:none}
.chat-lot-modal.pricing .chat-lot-selection{margin-top:4px}
.chat-lot-card.selected{outline:2px solid var(--purple);outline-offset:-2px}
/* Дефолтные лоты G2G (17.10): звезда поверх карточки, справа внизу — над строкой меток. */
.chat-lot-cell{position:relative;min-width:0;display:grid}
.chat-lot-cell>.chat-lot-card{width:100%}
.chat-lot-cell>.chat-lot-card>span{padding-right:26px}
.chat-lot-cell.default>.chat-lot-card{border-color:rgba(244,185,66,.38)}
.chat-lot-star{position:absolute;right:8px;bottom:8px;width:24px;height:24px;display:grid;place-items:center;padding:0;border:1px solid transparent;border-radius:7px;background:transparent;color:#66718b;font-size:15px;line-height:1;cursor:pointer;transition:.15s}
.chat-lot-star:hover{border-color:#3a4560;color:#f4b942;background:#181f2f}
.chat-lot-star.on{color:#f4b942}
.chat-lot-card>span b.held{margin-left:auto;color:#f4b942;font-weight:700}
.chat-lot-note{grid-column:1/-1;padding:2px 4px 4px;color:var(--muted-2);font-size:9px;line-height:1.45}
.chat-lot-held{grid-column:1/-1;margin:0;padding:9px 11px;border-radius:10px;background:rgba(54,202,239,.06);color:#a9e6f5;font-size:10px;line-height:1.5}
.chat-lot-held.warn{background:rgba(244,185,66,.09);color:#f4d08a}
.chat-lot-held .text-button{margin-left:4px;font-size:10px}
/* Лот заказа G2G (17.10): какой лот купили, и ручная привязка, где по названию не нашлось. */
.g2g-order-lot{margin:10px 0;padding:11px 13px;border:1px solid var(--border-soft);border-radius:12px;background:#121826}
.g2g-order-lot>small{display:block;margin-bottom:6px;color:var(--muted-2);font-size:9px;font-weight:800;letter-spacing:.5px;text-transform:uppercase}
.g2g-order-lot-row{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.g2g-order-lot-row a,.g2g-order-lot-row strong{min-width:0;font-size:12px;font-weight:700;line-height:1.35;word-break:break-word}
.g2g-order-lot-row a{color:#c4bcff}
.g2g-order-lot-row em{color:var(--amber);font-size:12px;font-style:normal;font-weight:800;white-space:nowrap}
.g2g-order-lot-state{padding:2px 7px;border-radius:6px;font-size:9px;font-weight:750;white-space:nowrap}
.g2g-order-lot-state.live{color:var(--teal);background:rgba(43,212,184,.08)}
.g2g-order-lot-state.off{color:#ff8498;background:rgba(255,100,127,.08)}
.g2g-order-lot p{margin:6px 0 0;color:var(--muted-2);font-size:10px;line-height:1.5}
.g2g-order-lot p.warn{color:#f4d08a}
.g2g-order-lot .text-button{font-size:10px}
.g2g-order-lot-pick{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}
.g2g-order-lot-pick select{flex:1;min-width:200px;max-width:100%}
/* ── Перевод клиента из переписки ──────────────────────────────────────────────────────── */
#chatWorkspace.g2g-active #chatDirectionButton{display:none}
.chat-direction-body{display:flex;flex-direction:column;gap:12px;margin-top:14px}
.chat-direction-game{padding:12px 14px;border:1px solid #2e3650;border-radius:12px;background:#121725}
.chat-direction-game header{display:flex;flex-direction:column;gap:3px;margin-bottom:10px}
.chat-direction-game header span{color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.5px;text-transform:uppercase}
.chat-direction-game header strong{font-size:14px}
.chat-direction-targets{display:flex;flex-wrap:wrap;gap:6px}
.chat-direction-note{color:var(--muted);font-size:12px;line-height:1.5}
.chat-direction-empty{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px;line-height:1.5}
/* ── Бот кабинета: лицо бота и кто ещё не нажал Start ────────────────────────────────────── */
.bot-identity{display:flex;align-items:center;gap:12px;min-width:0}
.bot-face{position:relative;flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:12px;overflow:hidden;background:rgba(54,170,240,.14);color:#5cc1ff;font-size:17px}
.bot-face img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0}
.bot-face.has-photo img{opacity:1}
.bot-face.has-photo b{visibility:hidden}
.telegram-start-notice{display:flex;flex-direction:column;gap:4px;margin-top:12px;padding:11px 13px;border:1px solid rgba(255,189,69,.3);border-radius:11px;background:rgba(255,189,69,.06);color:#c9cfdf;font-size:12.5px;line-height:1.5}
.telegram-start-notice.hidden{display:none}
.telegram-start-notice strong{color:#ffd27a;font-size:13px}
.telegram-replace-note{display:flex;flex-direction:column;gap:5px;margin-bottom:12px;padding:11px 13px;border:1px solid rgba(117,101,244,.35);border-radius:11px;background:rgba(117,101,244,.07);font-size:12.5px;line-height:1.5;color:#c9cfdf}
.telegram-replace-note.hidden{display:none}
.telegram-replace-note strong{color:#fff;font-size:13px}
.telegram-replace-note .text-button{align-self:flex-start}
.telegram-role-badge.bot-start{margin-left:6px;background:rgba(255,189,69,.12);color:#ffd27a}
/* Шаги @BotFather и пояснение о смене бота — на всю ширину формы. Форма — сетка «поле | кнопка»,
   и с v556 шаги вставали в первую колонку, а поле токена сплющивалось во вторую, узкую. */
.telegram-connect>.bot-howto-box,.telegram-connect>.telegram-replace-note{grid-column:1/-1}
/* ── Telegram в настройках 08.10: две строки — ты и бот кабинета ───────────────────────────
   Слово Larpbase: «слишком навороченно и громоздко, можно проще, и чтобы всё сразу красиво
   прогружалось». Плитки, стрелка и факты убраны; до первого ответа — каркас, а не форма токена. */
.tg-rows{display:flex;flex-direction:column;border:1px solid #262e45;border-radius:14px;background:#0f131e;overflow:hidden}
.tg-row{display:flex;align-items:center;gap:12px;min-height:66px;padding:12px 14px}
.tg-row+.tg-row{border-top:1px solid #222a3f}
.tg-face,.tg-row .bot-face{flex:none;width:42px;height:42px;border-radius:var(--avatar-radius,12px);font-size:15px}
.tg-row-text{flex:1;min-width:0}
.tg-row-text strong,.tg-row-text small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tg-row-text strong{font-size:14px;font-weight:750;color:#eef1fb}
.tg-row-text small{margin-top:3px;color:var(--muted);font-size:12px}
.tg-role{flex:none;padding:4px 9px;border-radius:99px;background:rgba(43,212,184,.1);color:#66e0c4;font-size:11px;font-weight:700;white-space:nowrap}
.tg-open{flex:none;min-height:34px;padding:0 13px;font-size:12px}
.tg-owner-actions{display:flex;flex-wrap:wrap;gap:18px;margin-top:12px;padding:0 2px}
.tg-owner-actions.hidden{display:none}
.tg-owner-actions .text-button{padding:0;font-size:12.5px;font-weight:650}
.tg-owner-actions .text-button.danger{color:#ff8498}
.tg-card .telegram-connect{margin-top:14px}
.tg-card .bot-howto-box{margin:0 0 4px;padding:0;border:0;background:none}
.tg-card .bot-howto-box summary{cursor:pointer;color:#a79cff;font-size:12.5px;font-weight:650}
.tg-card .bot-howto-box[open] summary{margin-bottom:10px}
.tg-ghost,.tg-ghost-line{display:block;background:linear-gradient(90deg,#1a2132 0%,#252e45 50%,#1a2132 100%);background-size:200% 100%;animation:tg-ghost 1.2s ease-in-out infinite}
.tg-ghost-line{height:11px;width:58%;border-radius:6px}
.tg-ghost-line.short{width:36%;margin-top:8px}
@keyframes tg-ghost{from{background-position:100% 0}to{background-position:-100% 0}}
.tg-card[data-loading] .bot-face{background:#1a2132}
.tg-card[data-loading] .bot-face>*{visibility:hidden}
@media(prefers-reduced-motion:reduce){.tg-ghost,.tg-ghost-line{animation:none}}

/* Стёртая история — строка состояния вместо переключателя (v564). Рамка и фон — с .switch-row,
   соседа в том же блоке масок: строка обязана читаться как ещё одна строка блока, а не как
   отдельное окно. Выбранная кнопка подсвечивается, и действие подписано под ними до сохранения. */
.history-cut-row{margin-top:22px;padding:15px;border:1px solid var(--border-soft);border-radius:12px;background:#141a27}
.history-cut-head strong,.history-cut-head small{display:block}
.history-cut-head strong{font-size:13px}
.history-cut-head small{color:var(--muted-2);font-size:10px;margin-top:4px}
.history-cut-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.history-cut-actions .button{min-height:34px;font-size:12px}
.history-cut-actions .button.active{border-color:var(--purple-2);box-shadow:inset 0 0 0 1px var(--purple-2)}
.history-cut-actions .button.danger.subtle.active{border-color:#ff8498;box-shadow:inset 0 0 0 1px #ff8498}
.history-cut-pending{margin:10px 0 0;color:#ffbd45;font-size:11px;line-height:1.5}
/* «Стереть заново»: что пропадёт — списком с числами. */
.history-recut-list{margin:6px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:3px}
.history-recut-list strong{color:#ffd27a}
/* Стирание: что пропадёт и что останется у него (его заказы в работе). */
.history-erase{margin:10px 0 0;padding:11px 13px;border:1px solid rgba(255,189,69,.28);border-radius:11px;background:rgba(255,189,69,.05);color:#ffbd45;font-size:11.5px;line-height:1.5}
.history-kept{margin:8px 0 0;color:#8ee6cf}
.history-work{display:flex;align-items:flex-start;gap:10px;margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,189,69,.18);color:#e6eaf5;cursor:pointer}
.history-work input{margin-top:2px}
.history-work strong{display:block;font-size:12.5px}
.history-work small{display:block;margin-top:2px;color:var(--muted);font-size:11.5px}
/* Площадка лежит у всех — не прокси (08.10). Цвет спокойнее, чем у «нет связи с сервером». */
.platform-banner{border-bottom-color:rgba(255,140,90,.3);background:rgba(54,30,20,.94);color:#ffc7a3}
/* Исполнитель заказа в карточке (08.10): кто, доля, почему, история, передача. */
.order-executor.owner{color:#b9adff;background:rgba(117,101,244,.14)}
.od-executor{display:flex;flex-direction:column;gap:8px;margin-top:8px;padding:11px 13px;border-radius:13px;background:#121725;border:1px solid var(--border-soft)}
.od-exec-who{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.od-exec-who b{font-size:14px;color:#eef1fb}
.od-exec-share,.od-exec-where{padding:2px 8px;border-radius:99px;background:rgba(117,101,244,.12);color:#b9adff;font-size:11px;font-weight:700}
.od-exec-where{background:rgba(43,212,184,.1);color:#66e0c4}
.od-exec-why{margin:0;color:#c3cadb;font-size:12.5px;line-height:1.5}
.od-exec-history summary{cursor:pointer;color:var(--muted);font-size:12px}
.od-exec-history ul{margin:6px 0 0;padding-left:18px;color:var(--muted);font-size:11.5px;line-height:1.5}
.od-exec-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.od-exec-actions .select{min-width:180px;flex:1 1 180px}
.od-exec-hint{color:var(--muted-2);font-size:11px;line-height:1.5}
/* Направление — в цвет своей игры и заметнее (08.10). Цвет даёт класс игры (.game-rust …), здесь форма. */
.direction-tone{font-weight:800!important}
/* Форма — как у метки игры рядом (08.10: «виджет чуть толще и неприятно выделяется»: был 18 px
   и шрифт 9 px против 15,7 px и 7 px у «Rust»). Цвет — по-прежнему игры. */
.chat-flag.chat-direction{gap:4px;padding:4px 8px;border-radius:999px;font-size:7px;line-height:1.1}
.chat-flag.chat-direction>i{width:5px;height:5px;flex:none;border-radius:50%;background:currentColor}
.chat-flag.chat-direction>span{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.order-direction.direction-tone{display:inline-flex;align-items:center;padding:1px 7px;border-radius:999px;font-size:11px}
.lot-direction.direction-tone{border-color:transparent}
/* На телефоне метки в строке чата прячутся — кроме направления: без него не видно, чей клиент. */
@media(max-width:520px){.chat-flag.chat-direction{flex:0 1 auto;min-width:0;max-width:118px}.chat-flag.chat-direction>span{max-width:92px}}
/* Окно лота на телефоне: три кнопки не влезали, «Отмена» обрезалась и окно уезжало вбок. Закрыть — крестиком сверху. */
.chat-lot-modal>form{overflow-x:hidden}
@media(max-width:560px){.chat-lot-modal .modal-actions [data-close]{display:none}.chat-lot-modal .modal-actions .button{min-width:0;padding:0 12px}.chat-lot-modal .modal-actions .button.primary{flex:1.5}}
/* Строка фильтров «Заказов» — как в «Лотах» (08.10): игра, раздел, направление, исполнитель. */
.orders-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-4px 0 14px}
.orders-filters .picker{flex:1 1 170px;min-width:0;max-width:260px}
.orders-filters .picker-button{height:38px;font-size:11px}
.orders-filters #ordersFilterReset{margin-left:auto;padding:0 6px;font-size:11px}
@media(max-width:820px){.orders-filters{margin:0 0 10px}.orders-filters .picker{flex:1 1 calc(50% - 4px);max-width:none}.orders-filters #ordersFilterReset{margin-left:0}}
/* Направление в строке заказа — словом с точкой в цвет игры, без плашки: плашка была выше строки
   «игра · раздел» и спорила с названием (08.10: «некрасиво выделяется»). */
.order-description>small .order-direction.direction-tone{display:inline-flex;align-items:center;gap:4px;padding:0;border-radius:0;background:none!important;box-shadow:none!important;font-size:inherit;font-weight:700!important;vertical-align:baseline}
.order-direction.direction-tone>i{width:6px;height:6px;flex:none;border-radius:50%;background:currentColor}
/* Игра без фирменного цвета: оттенок из реестра (--game-hue). Без этого правила метка направления
   такой игры оставалась серой — .game-generic красил только .game-tag. */
.direction-tone.game-generic{color:hsl(var(--game-hue) 86% 77%)!important;background:hsl(var(--game-hue) 70% 52% / .12)!important;box-shadow:inset 0 0 0 1px hsl(var(--game-hue) 70% 62% / .17)!important}
/* ── Кто в кабинете (08.10) ── */
.team-online-wrap{position:relative;display:flex;align-items:center}
.team-online{height:38px;display:inline-flex;align-items:center;gap:7px;padding:0 11px 0 7px;border:1px solid var(--border);border-radius:999px;background:#141a28;color:var(--muted);font-size:11px;font-weight:800;cursor:pointer;transition:.15s}
.team-online:hover,.team-online[aria-expanded="true"]{border-color:#44506f;color:var(--text)}
.team-online.somebody{color:var(--text)}
.team-online-faces{display:flex;align-items:center}
.team-online-faces .team-face+.team-face{margin-left:-8px}
.team-online-dot{width:7px;height:7px;border-radius:50%;background:var(--muted-2)}
.team-online.somebody .team-online-dot{background:var(--teal);box-shadow:0 0 0 3px rgba(43,212,184,.14)}
.team-face{position:relative;display:inline-flex;flex:none}
.team-face .staff-avatar{width:24px;height:24px;border:2px solid #141a28;font-size:10px}
.team-face:after{content:"";position:absolute;right:-1px;bottom:-1px;width:8px;height:8px;border-radius:50%;border:2px solid #141a28;background:var(--muted-2)}
.team-face.on:after{background:var(--teal)}
.team-face.away:after{background:var(--amber)}
.team-face.off:after{display:none}
.team-online-panel{position:absolute;top:calc(100% + 8px);right:0;z-index:70;width:min(320px,90vw);max-height:min(460px,70vh);overflow-y:auto;padding:12px;border:1px solid var(--border);border-radius:14px;background:#141927;box-shadow:var(--shadow)}
.team-online-panel .eyebrow{margin:0 2px 8px}
.team-group+.team-group{margin-top:10px}
.team-group>small{display:block;margin:0 4px 5px;color:var(--muted-2);font-size:9px;text-transform:uppercase;letter-spacing:.5px}
.team-row{display:flex;align-items:center;gap:10px;padding:7px 6px;border-radius:10px}
.team-row:hover{background:#181e2d}
.team-row .staff-avatar{width:30px;height:30px}
.team-who{min-width:0;flex:1;display:flex;flex-direction:column}
.team-who b{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.team-who small{color:var(--muted-2);font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.team-status{font-style:normal;font-size:10px;color:var(--muted-2);white-space:nowrap}
.team-status.on{color:var(--teal)}
.team-status.away{color:var(--amber)}
@media(max-width:820px){.team-online{height:34px;padding:0 9px 0 5px}.team-online-faces .team-face:nth-child(n+2){display:none}}
/* ── Окно «Передать заказ» (08.10) ── */
.order-pass-modal{width:min(560px,94vw)}
.order-pass-modal>form{display:flex;flex-direction:column;gap:10px;max-height:min(720px,88vh)}
.op-search{height:42px;display:flex;align-items:center;gap:9px;padding:0 12px;border:1px solid var(--border);border-radius:11px;background:#111622;color:var(--muted)}
.op-search:focus-within{border-color:#655ad7}
.op-search input{min-width:0;width:100%;border:0;outline:0;background:transparent;color:var(--text);font-size:13px}
.op-crumbs{display:flex;align-items:center;flex-wrap:wrap;gap:4px;min-height:22px;color:var(--muted-2);font-size:11px}
.op-crumb{padding:3px 8px;border:0;border-radius:7px;background:transparent;color:var(--purple-2);font:inherit;cursor:pointer}
.op-crumb:hover{background:rgba(117,101,244,.12)}
.op-crumb.on{color:var(--text);font-weight:700;cursor:default}
.op-body{flex:1;min-height:180px;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding-right:2px}
.op-row{width:100%;display:flex;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--border-soft);border-radius:12px;background:#151a28;color:inherit;text-align:left;cursor:pointer;transition:.14s}
.op-row:hover{border-color:#3b4561;background:#181e2d}
.op-row.here{border-color:rgba(117,101,244,.4);background:linear-gradient(100deg,rgba(117,101,244,.12),#151a28 60%)}
/* Метка игры здесь — заголовок строки, вровень с «Без игр»: у .game-tag кегль прибит !important. */
.op-row .game-tag{font-size:12px!important;padding:6px 12px!important;max-width:200px!important}
.op-row-title{font-size:13px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}
.op-row-main{min-width:0;flex:1}
.op-row-main small{color:var(--muted-2);font-size:10px}
.op-row-main b{color:var(--purple-2);font-weight:700}
.op-online{font-style:normal;color:var(--teal)}
.op-faces{display:flex;align-items:center}
.op-faces .team-face+.team-face{margin-left:-8px}
.op-faces .team-face .staff-avatar{border-color:#151a28}
.op-chev{font-style:normal;color:var(--muted-2);font-size:16px}
.op-person{display:flex;align-items:center;gap:11px;padding:9px 10px;border:1px solid var(--border-soft);border-radius:12px;background:#151a28}
.op-person.current{border-color:rgba(43,212,184,.3);background:rgba(43,212,184,.05)}
.op-person .staff-avatar.op-avatar{width:36px;height:36px;font-size:13px}
.op-person .team-face:after{width:10px;height:10px;border-color:#151a28}
.op-who{min-width:0;flex:1;display:flex;flex-wrap:wrap;align-items:baseline;column-gap:6px}
.op-who b{font-size:13px}
.op-who>i{font-style:normal;color:var(--muted);font-size:11px}
.op-who small{flex-basis:100%;color:var(--muted-2);font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.op-give{flex:none;min-height:34px;padding:0 14px;font-size:12px}
.op-current{flex:none;color:var(--teal);font-size:11px;font-weight:700}
.op-whole{display:flex;align-items:center;gap:12px;padding:12px;border:1px dashed rgba(117,101,244,.45);border-radius:12px;background:rgba(117,101,244,.07)}
.op-whole>div{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}
.op-whole b{font-size:13px}
.op-whole small{color:var(--muted);font-size:11px;line-height:1.4}
.op-whole .button{flex:none}
.op-note{margin:0 2px 4px;color:var(--muted);font-size:11px;line-height:1.45}
.op-empty{display:flex;align-items:center;justify-content:center;gap:9px;min-height:120px;color:var(--muted);font-size:12px;text-align:center}
.op-foot{display:flex;justify-content:flex-start;padding-top:2px}
@media(max-width:560px){.op-row{padding:10px}.op-faces{display:none}.op-whole{flex-direction:column;align-items:stretch}.op-person{flex-wrap:wrap}.op-give{margin-left:auto}}
/* Своя кнопка «Беру заказ» — нажатая: ещё раз — отказ (08.10). */
.order-take-button.taken{color:var(--teal);border-color:rgba(43,212,184,.35);background:rgba(43,212,184,.08)}
.order-take-button.taken:hover{color:#ff9aa8;border-color:rgba(255,100,127,.4);background:rgba(255,100,127,.08)}
.od-pass{min-width:180px}
/* ── Плашки над полем ввода, ПОВЕРХ переписки (08.10): печатает / тоже здесь / прочитано ──
   Живут внутри формы и висят над её верхним краем — полосой между лентой и полем они резали
   переписку. Лента получает снизу место (presence-room), чтобы последнее сообщение не пряталось. */
.chat-composer{position:relative;container-type:inline-size;container-name:composer}
.chat-presence{position:absolute;left:14px;right:14px;bottom:calc(100% + 10px);z-index:4;display:flex;align-items:flex-end;justify-content:space-between;gap:8px;pointer-events:none}
.chat-presence.hidden{display:none}
.cp-pill{min-width:0;max-width:62%;display:inline-flex;align-items:center;gap:7px;padding:4px 11px 4px 5px;border:1px solid rgba(117,101,244,.22);border-radius:999px;background:rgba(19,24,37,.88);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 8px 22px rgba(0,0,0,.38);color:var(--muted);font-size:11px;white-space:nowrap;pointer-events:auto}
.cp-pill b{color:var(--text);font-weight:700}
.cp-text{min-width:0;overflow:hidden;text-overflow:ellipsis}
.cp-text em{font-style:normal;color:var(--muted-2)}
.cp-who.here{border-color:rgba(43,212,184,.28)}
.cp-read{margin-left:auto;max-width:48%;padding-left:9px;border-color:rgba(54,202,239,.26)}
.cp-ticks{font-style:normal;font-weight:900;letter-spacing:-4px;padding-right:4px;color:var(--cyan)}
.cp-faces{display:inline-flex;align-items:center;flex:none}
.cp-faces .staff-avatar.cp-face{width:22px;height:22px;border:2px solid #131825;font-size:9px}
.cp-faces .cp-face+.cp-face{margin-left:-7px}
.cp-more{height:22px;min-width:22px;margin-left:-7px;padding:0 5px;display:inline-grid;place-items:center;border:2px solid #131825;border-radius:999px;background:#2a3147;color:#c9d0e4;font-size:9px;font-weight:800}
.cp-who.here .cp-faces:after{content:"";width:7px;height:7px;margin-left:-6px;align-self:flex-end;border:2px solid #131825;border-radius:50%;background:var(--teal)}
.cp-typing{display:inline-flex;align-items:center;gap:3px;flex:none;padding:5px 6px;border-radius:999px;background:rgba(117,101,244,.18)}
.cp-typing i{width:5px;height:5px;border-radius:50%;background:var(--purple-2);animation:cp-bounce 1.2s infinite ease-in-out}
.cp-typing i:nth-child(2){animation-delay:.15s}
.cp-typing i:nth-child(3){animation-delay:.3s}
@keyframes cp-bounce{0%,60%,100%{transform:translateY(0);opacity:.45}30%{transform:translateY(-3px);opacity:1}}
@media(prefers-reduced-motion:reduce){.cp-typing i{animation:none}}
#chatMessages.presence-room{padding-bottom:46px}
@media(max-width:820px){.chat-presence{left:10px;right:10px;bottom:calc(100% + 8px);gap:6px}.cp-pill{font-size:10px;padding:3px 9px 3px 4px;gap:5px}.cp-read{padding-left:7px}.cp-faces .staff-avatar.cp-face{width:20px;height:20px}.cp-more{height:20px;min-width:20px}#chatMessages.presence-room{padding-bottom:42px}}
@media(max-width:420px){.cp-pill{max-width:58%}.cp-read{max-width:44%}.cp-read .cp-faces .cp-face:nth-child(n+3){display:none}}
/* ── Колонка «Исполнитель» в «Заказах» — тем же видом, что «Покупатель» (08.10) ── */
.order-executor-col{min-width:0}
.order-executor-col>small,.order-executor-col>strong,.order-executor-col>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.order-executor-col>small{margin-bottom:5px;color:var(--muted-2);font-size:8px;text-transform:uppercase;letter-spacing:.4px}
.order-executor-col>strong{font-size:10px}
.order-executor-col>span{margin-top:4px;color:#68738d;font-size:8px}
.oe-name.pending,.oe-name.none{color:var(--muted-2)}
.oe-name.owner{color:#b9adff}
.oe-name.free{color:#ffd27a}
.oe-name.mine{color:#5fe0c0}
.order-executor-col .order-take-button{display:inline-flex;align-items:center;margin-top:5px;min-height:22px}
/* Сумма — колонкой: цена лота, доля и состояние друг под другом, ничего не съезжает вбок. */
.order-summary{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.order-summary>.order-status{margin-top:2px}
.order-card{grid-template-columns:minmax(130px,.72fr) minmax(220px,1.45fr) minmax(110px,.62fr) minmax(110px,.6fr) minmax(110px,.6fr) 136px}
@media(max-width:1100px){.order-card{grid-template-columns:minmax(120px,.7fr) minmax(200px,1.4fr) minmax(105px,.6fr) minmax(105px,.6fr) 136px}}
/* Телефон: сверху аккаунт и сумма, ниже заказ, ещё ниже покупатель и исполнитель рядом —
   кнопки справа на всю высоту карточки. */
@media(max-width:820px){.order-card{grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr) 58px;grid-template-areas:"owner summary actions" "description description actions" "customer executor actions"}.order-owner{min-width:0}.order-summary .order-lot-price{max-width:100%;white-space:normal;text-align:right;line-height:1.3}.order-customer{display:block;grid-area:customer;padding-top:9px;border-top:1px solid var(--border-soft)}.order-executor-col{grid-area:executor;padding-top:9px;border-top:1px solid var(--border-soft)}.order-summary{grid-area:summary}}
/* Короткий вид плашек — когда поле ввода уже 560 px (узкая переписка, телефон): лица говорят «кто», текст — «что». */
.cp-short{display:none}
@container composer (max-width:560px){.cp-long{display:none}.cp-short{display:inline}.cp-pill{max-width:56%}.cp-read{max-width:42%}}
/* Буква в кружке — только когда фото НЕТ, а не пока оно грузится (08.10: «аватарка моргает и
   меняется на букву»). Картинку не нашли — она удаляется (wireStaffAvatars), и буква проступает. */
.staff-avatar:has(>img)>b{visibility:hidden}
/* Метка присутствия у человека: в досье под именем и в списке команды. */
.presence-tag{display:inline-flex;align-items:center;gap:5px;color:var(--muted-2);font-size:9px;font-style:normal;white-space:nowrap}
.presence-tag:before{content:"";width:7px;height:7px;flex:none;border-radius:50%;background:var(--muted-2)}
.presence-tag.empty{display:none}
.presence-tag.on{color:var(--teal)}
.presence-tag.on:before{background:var(--teal);box-shadow:0 0 0 3px rgba(43,212,184,.15)}
.presence-tag.away{color:var(--amber)}
.presence-tag.away:before{background:var(--amber)}
.telegram-member-person .presence-tag{display:flex;margin-top:3px}
.telegram-member-person .presence-tag.empty{display:none}
.staff-profile-presence{margin:6px 0 0}
.presence-tag.big{font-size:12px;gap:7px}
.presence-tag.big:before{width:9px;height:9px}
/* Зелёная плашка: кабинет обновляется / вышло обновление (08.10) — не поломка, а новости. */
.net-banner.update{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 14px;border-bottom-color:rgba(43,212,184,.35);background:rgba(10,52,44,.95);color:#8ff0d8}
.net-banner.update b{color:#d6fff4}
.net-banner.update kbd{display:inline-block;padding:1px 6px;border:1px solid rgba(143,240,216,.4);border-bottom-width:2px;border-radius:5px;background:rgba(143,240,216,.08);color:#d6fff4;font:inherit;font-size:.92em}
.update-reload{height:28px;padding:0 14px;border:0;border-radius:999px;background:var(--teal);color:#06261f;font-weight:800;font-size:12px;cursor:pointer}
.update-reload:hover{filter:brightness(1.08)}
@media(max-width:820px){.net-banner.update{justify-content:space-between;text-align:left}}
/* Полоса захвата — строками (09.10): захват, вопрос «мой / не мой», скрытые отрезки, «Скрыть». */
.chat-claim-bar{flex-direction:column;align-items:stretch;gap:8px}
.chat-claim-bar .claim-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.chat-claim-bar .claim-row+.claim-row{padding-top:8px;border-top:1px solid rgba(143,155,184,.14)}
.chat-claim-bar .claim-ask{padding:8px 10px;border:1px solid rgba(255,189,69,.55);border-radius:10px;background:rgba(255,189,69,.12)}
.chat-claim-bar .claim-row.claim-ask+.claim-row,.chat-claim-bar .claim-row+.claim-row.claim-ask{border-top:0}
.chat-claim-bar .claim-ask .claim-text b{color:#ffd27a}
.chat-claim-bar .claim-hidden .claim-text b{color:#d8d3ff}
.chat-claim-bar .claim-hide-warn{color:#ffc2c2}
.chat-claim-bar .claim-hide-warn b{color:#ff9a9a}
.claim-hide-button{flex-shrink:0;min-height:30px;padding:0 12px;border:1px solid rgba(255,120,120,.55);border-radius:9px;background:rgba(255,90,90,.12);color:#ffc2c2;font-weight:700;font-size:12px;cursor:pointer}
.claim-hide-button:hover{background:rgba(255,90,90,.2)}
.claim-hide-button:disabled,.chat-claim-bar .claim-button:disabled{opacity:.5;cursor:default}
/* Скрытое на время заказа — плашкой посреди переписки, на месте сообщений. */
.chat-hidden-block{align-self:center;display:flex;align-items:center;gap:10px;max-width:92%;padding:10px 14px;border:1px dashed rgba(197,189,255,.4);border-radius:12px;background:rgba(117,101,244,.08);color:#aeb6cc;font-size:11px}
.chat-hidden-lock{font-size:16px;line-height:1}
.chat-hidden-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.chat-hidden-text b{color:#d8d3ff}
.chat-hidden-text small{color:var(--muted-2);font-size:9px}
.chat-message.hidden-shown .chat-message-bubble{box-shadow:inset 0 0 0 1px rgba(216,211,255,.45)}
.chat-hidden-mark{font-size:8px}
.oe-answer{display:inline-flex;gap:6px}
.order-take-button.ghost{border:1px solid rgba(255,189,69,.55);background:transparent;color:#ffd27a}
/* На телефоне текст строки — во всю ширину, кнопки под ним: иначе текст сжимается в столбик по слову. */
@media(max-width:820px){.chat-claim-bar .claim-row .claim-text{flex-basis:100%}.chat-claim-bar .claim-row{gap:8px}}
/* Галочка «скрыть сразу после оплаты» (09.10). */
.chat-claim-bar .claim-arm-toggle{display:flex;align-items:flex-start;gap:9px;cursor:pointer;color:var(--muted)}
.chat-claim-bar .claim-arm-toggle input{width:16px;height:16px;margin:2px 0 0;flex:none;accent-color:#ff8f8f;cursor:pointer}
.chat-claim-bar .claim-arm-toggle span{display:flex;flex-direction:column;gap:2px}
.chat-claim-bar .claim-arm-toggle b{color:var(--text);font-weight:700}
.chat-claim-bar .claim-arm-toggle small{color:var(--muted-2);font-size:11px}
.chat-claim-bar .claim-arm.on .claim-arm-toggle b{color:#ffb4b4}
.chat-claim-bar .claim-arm.on{padding:7px 9px;border:1px solid rgba(255,120,120,.4);border-radius:10px;background:rgba(255,90,90,.08)}
/* «Кто ещё видит переписку» — меткой в строке имени, сразу за языком и той же формы (09.10: «язык
   классно закреплён — всегда в одном месте»). Цвет игры даёт game-tag, его размеры здесь перебиты. */
.staff-badge{display:inline-flex!important;align-items:center;justify-content:center;gap:2px;flex:none;width:auto!important;max-width:none!important;min-width:20px;height:14px;margin:0!important;padding:0 4px!important;border-radius:6px!important;font-style:normal;font-size:9px!important;font-weight:800;line-height:1;letter-spacing:0;vertical-align:middle;box-sizing:border-box}
.staff-badge b{font-size:7px;font-weight:800}
.staff-badge.scope{color:#c3ccdd;background:rgba(154,165,189,.12);box-shadow:inset 0 0 0 1px rgba(154,165,189,.5)}
.staff-badge.temporary{color:#66e0c4;background:rgba(102,224,196,.13);box-shadow:inset 0 0 0 1px rgba(102,224,196,.5)}
.staff-badge.permanent{color:#71dcf7;background:rgba(113,220,247,.12);box-shadow:inset 0 0 0 1px rgba(113,220,247,.5)}
.staff-badge.personal{color:#8cc4ff;background:rgba(113,182,255,.14);box-shadow:inset 0 0 0 1px rgba(113,182,255,.55)}
.staff-badge.paused{color:#ffd078;background:rgba(255,208,120,.12);box-shadow:inset 0 0 0 1px rgba(255,208,120,.5)}
.staff-badge.closed{color:#ff8a9c;background:rgba(255,122,143,.13);box-shadow:inset 0 0 0 1px rgba(255,122,143,.55)}
/* Шапка переписки: имя клиента не отдаётся кнопкам (09.10 — в узком окне кнопки вытесняли имя
   целиком). Узкая шапка — кнопки одними значками, подпись остаётся в подсказке; флаг с названием
   своё название сохраняет. */
.chat-thread-header{container-type:inline-size;container-name:threadhead}
.chat-thread-header .chat-thread-person{min-width:84px}
@container threadhead (max-width:720px){
  .chat-thread-header .chat-lots-button,.chat-thread-header .chat-staff-button,.chat-thread-header .chat-tag-button:not(.has-tag){width:35px;min-width:35px;padding:0;justify-content:center}
  .chat-thread-header .chat-lots-button>span:last-child,.chat-thread-header .chat-staff-button>span:last-child,.chat-thread-header .chat-tag-button:not(.has-tag)>span:last-child{display:none}
}
@media(max-width:560px){
  .chat-thread-header .chat-thread-person{min-width:70px}
  .chat-thread-header .chat-lots-button,.chat-thread-header .chat-staff-button,.chat-thread-header .chat-tag-button,.chat-thread-header .chat-mute-button{width:32px;min-width:32px;min-height:32px}
}
/* «Кто ведёт клиента» на телефоне не прячется вместе с прочими метками строки (09.10): это ответ
   на «можно ли мне ему писать», и в строке он нужнее VIP и флагов. Узко — без хвоста. */
@media(max-width:520px){.chat-flag.chat-claim{flex:0 1 auto;max-width:112px}.chat-flag.chat-claim span{max-width:90px}}
/* Игра · направление — одной фишкой в строке переписки (09.10). Цвет — игры (game-tag), размеры
   свои: левая часть короткое имя, правая — направление целиком, под общей рамкой. */
.chat-conversation-footer .chat-unit{display:inline-flex!important;align-items:stretch;flex:0 1 auto;min-width:0;max-width:190px!important;width:auto!important;padding:0!important;overflow:hidden;font-size:8px!important;line-height:1.1}
.chat-unit>b{flex:none;display:flex;align-items:center;padding:4px 7px;font-weight:900;letter-spacing:.03em;white-space:nowrap}
.chat-unit>span{min-width:0;display:flex;align-items:center;padding:4px 8px 4px 7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700;background:rgba(5,8,15,.3);box-shadow:inset 1px 0 0 rgba(255,255,255,.14)}
/* Круглое «+N» — у пар игра · направление и у аккаунтов. */
.chat-more{display:inline-grid;place-items:center;flex:none;min-width:21px;height:19px;padding:0 6px;border-radius:999px;background:rgba(143,155,184,.16);box-shadow:inset 0 0 0 1px rgba(143,155,184,.32);color:#cdd3e2;font-size:8px;font-weight:800;line-height:1;cursor:pointer;box-sizing:border-box}
.chat-more:hover,.chat-more:focus-visible{background:rgba(117,101,244,.3);box-shadow:inset 0 0 0 1px rgba(147,135,255,.6);color:#fff;outline:0}
.chat-accounts .chat-more{margin-left:2px}
.chat-more-pop{position:fixed;z-index:120;min-width:210px;max-width:min(320px,calc(100vw - 16px));max-height:min(340px,calc(100vh - 16px));overflow:auto;display:flex;flex-direction:column;gap:6px;padding:10px;border:1px solid #2c3550;border-radius:13px;background:#141a28;box-shadow:0 18px 44px rgba(0,0,0,.5)}
.chat-more-head{color:var(--muted-2);font-size:8px;font-weight:800;letter-spacing:.6px;text-transform:uppercase}
.chat-more-game{display:flex;align-items:center;flex-wrap:wrap;gap:5px;padding:6px;border-radius:9px;background:rgba(255,255,255,.025)}
.chat-more-game em{color:var(--muted-2);font-size:9px;font-style:normal}
.chat-more-account{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border:1px solid transparent;border-radius:9px;background:transparent;color:#c9d0e0;font-size:11px;text-align:left;cursor:pointer}
.chat-more-account:hover{border-color:#2f3854;background:#1a2132}
.chat-more-account.active{border-color:rgba(117,101,244,.45);background:rgba(117,101,244,.12)}
.chat-more-account .chat-account-face{width:22px;height:22px;flex:none}
.chat-more-note{color:var(--muted-2);font-size:9px;font-style:normal}
/* Каталог плагинов: «Открыть» и булавка рядом с тумблером (09.10). */
.plugin-card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.plugin-card-use{position:relative;display:inline-flex;align-items:center;gap:7px}
.plugin-open{min-height:30px;padding:0 13px;font-size:11px}
.plugin-pin{display:grid;place-items:center;width:30px;height:30px;padding:0;border:1px solid #2f3854;border-radius:9px;background:#151b29;color:#8a94ad;cursor:pointer}
.plugin-pin svg{width:15px;height:15px}
.plugin-pin:hover{border-color:#4b4fa0;color:#c8c0ff}
.plugin-pin.on{border-color:rgba(43,212,184,.5);background:rgba(43,212,184,.12);color:#5fe0c0}
.plugin-chooser{position:absolute;left:0;bottom:calc(100% + 6px);z-index:30;min-width:170px;display:flex;flex-direction:column;gap:4px;padding:8px;border:1px solid #2c3550;border-radius:11px;background:#141a28;box-shadow:0 14px 34px rgba(0,0,0,.45)}
.plugin-chooser small{padding:0 4px 3px;color:var(--muted-2);font-size:8px;font-weight:800;letter-spacing:.5px;text-transform:uppercase}
.plugin-chooser button{padding:8px 10px;border:1px solid transparent;border-radius:8px;background:transparent;color:#d6dbe8;font-size:11px;text-align:left;cursor:pointer}
.plugin-chooser button:hover{border-color:#3a3f7a;background:rgba(117,101,244,.14)}
.nav-parked{display:none!important}

/* ── споры и сотрудники площадки (v580) ─────────────────────────────────────────────────── */
.chat-flag.chat-dispute{color:#ffc76b;background:rgba(255,170,40,.15);border:1px solid rgba(255,170,40,.42);font-weight:750}
.chat-claim-bar .claim-row.claim-dispute{margin:-2px -2px 0;padding:8px 10px;border-radius:10px;background:rgba(255,170,40,.1);border:1px solid rgba(255,170,40,.35)}
.chat-claim-bar .claim-row.claim-dispute .claim-text b{color:#ffc76b}
.chat-claim-bar .claim-row.claim-dispute+.claim-row{border-top:0}
.chat-claim-bar .claim-row.claim-dispute .dispute-tags{display:inline-flex;flex-wrap:wrap;gap:4px;vertical-align:1px}
.dispute-tag{display:inline-flex;align-items:center;padding:1px 7px;border-radius:999px;font-size:10px;font-weight:750;color:var(--muted,#9aa4b2);background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);white-space:nowrap}
.dispute-tag.ours{color:#8fd3ff;background:rgba(80,170,255,.12);border-color:rgba(80,170,255,.38)}
.dispute-tag.auto{color:#ffc76b;background:rgba(255,170,40,.15);border-color:rgba(255,170,40,.42)}
.dispute-tag.urgent{color:#ff9b8f;background:rgba(255,80,70,.15);border-color:rgba(255,80,70,.45)}
.chat-claim-bar .claim-row.claim-dispute .dispute-actions{display:inline-flex;flex-wrap:wrap;gap:4px 10px;align-items:center;justify-content:flex-end}
.chat-message.platform-staff .chat-message-bubble{border:1px solid rgba(76,201,110,.45);background:linear-gradient(180deg,rgba(76,201,110,.1),rgba(76,201,110,.04))}
.chat-platform-head{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:11px}
.chat-platform-head b{color:#e9ffef}
.chat-platform-role{padding:1px 7px;border-radius:5px;background:#4cc96e;color:#08210f;font-size:9px;font-weight:800;text-transform:lowercase}
.order-dispute-chip{display:inline-flex;align-items:center;gap:3px;width:max-content;margin-bottom:3px;padding:2px 7px;border-radius:6px;color:#ffc76b;background:rgba(255,170,40,.15);border:1px solid rgba(255,170,40,.42);font-size:9px;font-weight:800}
@media (max-width:520px){.chat-flag.chat-dispute,.chat-flag.chat-platform-staff{display:inline-flex!important}}

/* ── автоответ и автовыдача в переписке (v581) ──────────────────────────────────────────── */
.chat-message.auto-reply .chat-message-bubble{border:1px dashed rgba(143,155,184,.4);background:rgba(143,155,184,.07);color:#dfe4f0}
.chat-message.auto-reply.outgoing .chat-message-bubble{background:rgba(117,101,244,.1);border-color:rgba(147,135,255,.45)}
.chat-platform-head.auto b{color:#c9d1e6}
.chat-auto-label{padding:1px 7px;border-radius:5px;background:#3a4258;color:#d7deef;font-size:9px;font-weight:800;text-transform:lowercase}
.chat-auto-label.delivery{background:#7565f4;color:#fff}
.chat-delivery-note{display:block;margin-top:5px;color:#9aa6c2;font-size:10px;line-height:1.4}
.chat-message-employee.robot{color:#b3a9ff}

/* ── телефон: плашки над перепиской одной строкой (v582) ─────────────────────────────────── */
.chat-dock{display:none!important}
@media (max-width:820px){
  .chat-dock:not(.hidden){display:flex!important;align-items:center;gap:8px;width:calc(100% - 20px);margin:8px 10px 0;padding:7px 10px;border:1px solid rgba(143,155,184,.22);border-radius:12px;background:#151a28;color:#d7deef;text-align:left;cursor:pointer}
  .chat-dock.attention{border-color:rgba(255,170,40,.6);box-shadow:0 0 0 1px rgba(255,170,40,.25)}
  .dock-chips{flex:1;min-width:0;display:flex;gap:6px;overflow:hidden;white-space:nowrap;mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .dock-chip{flex:0 0 auto;padding:3px 8px;border-radius:7px;background:rgba(143,155,184,.12);font-size:10px;font-weight:700;color:#cfd6e8}
  .dock-chip.order{color:#7fe3d0;background:rgba(43,212,184,.12)}
  .dock-chip.dispute{color:#ffc76b;background:rgba(255,170,40,.15)}
  .dock-chip.attention{color:#ffd28a;background:rgba(255,170,40,.24)}
  .dock-chip.mine{color:#9ff0b6;background:rgba(76,201,110,.13)}
  .dock-chip.other{color:#b8adff;background:rgba(117,101,244,.15)}
  .dock-chip.take{color:#fff;background:#6556e6}
  .dock-toggle{flex:0 0 auto;color:#9aa6c2;font-size:12px}
  .chat-thread.has-dock:not(.dock-open) #threadOrderTabs,
  .chat-thread.has-dock:not(.dock-open) #threadViewedLot,
  .chat-thread.has-dock:not(.dock-open) #chatClaimBar,
  .chat-thread.has-dock:not(.dock-open) #chatAssignmentBar{display:none!important}
  .chat-thread.dock-open #chatClaimBar{max-height:46vh;overflow-y:auto}
}

/* ── справочник таблицей и цвет игр (REF-1, v582) ────────────────────────────────────────── */
/* таблица справочника — в конце файла (v584) */
.game-piece-body{display:grid;gap:10px}
.game-piece-search input{width:100%;padding:8px 10px;border:1px solid #293148;border-radius:9px;background:#101521;color:#eef1fb}
.game-piece-targets{display:grid;gap:4px;max-height:280px;overflow:auto}
.game-piece-target{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid transparent;border-radius:9px;background:#141a28;color:#dfe4f0;text-align:left;cursor:pointer}
.game-piece-target:hover{border-color:rgba(117,101,244,.5)}
.game-color-body{display:grid;gap:12px}
.game-color-preview{display:flex;justify-content:center;padding:10px}
.game-color-preview .game-tag{max-width:none;padding:7px 16px;font-size:13px!important}
.game-color-palette{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.game-color-dot{width:26px;height:26px;border:2px solid rgba(255,255,255,.15);border-radius:50%;background:hsl(var(--game-hue) 70% 55%);cursor:pointer}
.game-color-range{display:grid;gap:5px;color:#aeb8ce;font-size:11px}
.game-color-range input{width:100%}
.game-color-duo{display:flex;align-items:center;gap:8px;font-size:12px}
.game-tag.game-generic.game-duo,.chat-unit.game-generic.game-duo,.direction-tone.game-generic.game-duo{background:linear-gradient(100deg,hsl(var(--game-hue) 70% 52% / .24),hsl(var(--game-hue2) 70% 52% / .24))!important;box-shadow:inset 0 0 0 1px hsl(var(--game-hue) 70% 62% / .26)!important}


/* ползунок оттенка — радугой, чтобы было видно, куда тянуть (v582) */
.game-color-range input[type=range]{appearance:none;-webkit-appearance:none;height:8px;border-radius:999px;background:linear-gradient(90deg,hsl(0 70% 55%),hsl(60 70% 55%),hsl(120 70% 55%),hsl(180 70% 55%),hsl(240 70% 55%),hsl(300 70% 55%),hsl(360 70% 55%))}
.game-color-range input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border:2px solid #fff;border-radius:50%;background:#1b2030;cursor:pointer}
.game-color-range input[type=range]::-moz-range-thumb{width:16px;height:16px;border:2px solid #fff;border-radius:50%;background:#1b2030;cursor:pointer}

/* ── лица аккаунтов для сотрудников (v583) ───────────────────────────────────────────────── */
.account-persona{display:flex;align-items:center;gap:10px;margin:2px 0 10px;padding:8px 10px;border:1px solid var(--border-soft);border-radius:12px;background:#121726}
.account-persona img{width:34px;height:34px;flex:0 0 auto;border-radius:var(--avatar-radius,10px);object-fit:cover}
.account-persona span{flex:1;min-width:0;display:grid;gap:1px}
.account-persona small{color:var(--muted-2);font-size:9px}
.account-persona b{color:#eef1fb;font-size:12px}
.persona-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;max-height:min(62vh,560px);overflow-y:auto;padding:2px}
.persona-option{display:grid;justify-items:center;gap:4px;padding:8px 6px;border:1px solid transparent;border-radius:12px;background:#141a28;color:#dfe4f0;cursor:pointer}
.persona-option img{width:64px;height:64px;border-radius:12px;object-fit:cover}
.persona-option span{font-size:11px;font-weight:700}
.persona-option small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#9aa6c2;font-size:9px}
.persona-option:hover{border-color:rgba(117,101,244,.5)}
.persona-option.current{border-color:#7565f4;background:rgba(117,101,244,.16)}
.persona-option.taken img{opacity:.55}

/* ── справочник игр (v584): строка в цвет игры, площадки марками, поиск и отбор ───────────────
   Цвет строки — переменная --row-c: у обычной игры из оттенка, у нарисованных руками — свой,
   списанный с их метки (у них оттенок в записи не совпадает с тем, что видно на экране). */
.games-howto{display:flex;flex-wrap:wrap;gap:8px 18px;margin:-6px 0 18px;color:#aeb8ce;font-size:11px}
.games-howto span{display:inline-flex;align-items:center;gap:8px}
.games-howto i{display:grid;place-items:center;width:22px;height:22px;border-radius:7px;background:rgba(117,101,244,.14);box-shadow:inset 0 0 0 1px rgba(147,135,255,.22);color:#c3baff;font-style:normal;font-size:12px;font-weight:800}
.games-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.games-toolbar .games-search{flex:1 1 240px;max-width:360px;height:38px}
.games-toolbar .games-search input{font-size:12px}
.games-where button{min-height:28px;padding:0 11px;font-size:11.5px}
.games-where button b{margin-left:6px;color:var(--muted-2);font-size:10px;font-weight:800}
.games-where button.on b{color:#dcd6ff}
.games-nothing{padding:26px;border:1px dashed var(--border-soft);border-radius:14px;color:var(--muted-2);font-size:11px;text-align:center}
.games-table{display:grid;gap:7px}
.games-row{--row-c:hsl(var(--game-hue,225) 72% 64%);--row-c2:var(--row-c);position:relative;display:grid;grid-template-columns:minmax(260px,1.25fr) repeat(2,minmax(0,1fr));gap:16px;align-items:center;padding:11px 14px 11px 20px;border:1px solid var(--border-soft);border-radius:14px;background:#111622;transition:border-color .15s,background-color .15s}
.games-table.has-other .games-row{grid-template-columns:minmax(260px,1.25fr) repeat(2,minmax(0,1fr)) minmax(0,.8fr)}
.games-row:not(.games-head){background:linear-gradient(90deg,color-mix(in srgb,var(--row-c) 11%,transparent),transparent 48%),#111622}
.games-row:not(.games-head)::before{content:"";position:absolute;left:7px;top:11px;bottom:11px;width:3px;border-radius:3px;background:linear-gradient(var(--row-c),var(--row-c2));opacity:.9}
.games-row:not(.games-head):hover{border-color:color-mix(in srgb,var(--row-c) 34%,#232a3d)}
.games-row.duo{--row-c2:hsl(var(--game-hue2) 72% 64%)}
.games-row[data-brand="game-rust"]{--row-c:#ff6157}
.games-row[data-brand="game-marathon"]{--row-c:#5ddc81}
.games-row[data-brand="game-arena"]{--row-c:#b3bbc9}
.games-row[data-brand="game-discord"]{--row-c:#7987ff}
.games-row[data-brand="game-gray-zone"]{--row-c:#56b06a}
.games-row[data-brand="game-arc-raiders"]{--row-c:#2ac2c4;--row-c2:#f0b43a}
.games-row.bucket{--row-c:#6f7a94;--row-c2:#6f7a94}
.games-row.games-head{padding:0 14px 2px 20px;border-color:transparent;background:transparent;color:var(--muted-2);font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.games-row.drop-over{border-color:rgba(117,101,244,.85)!important;background:rgba(117,101,244,.13)!important}
.games-table.dragging .games-row:not(.games-head){outline:1px dashed rgba(117,101,244,.3);outline-offset:-1px}
.games-market{display:inline-flex;align-items:center;gap:7px}
.games-market i{width:7px;height:7px;border-radius:50%;background:var(--market-c);box-shadow:0 0 0 3px color-mix(in srgb,var(--market-c) 18%,transparent)}
.games-market b{padding:1px 6px;border-radius:6px;background:#171d2b;color:#aeb8ce;font-size:9px;letter-spacing:0}
[data-market-c="funpay"]{--market-c:#4aa8ff}
[data-market-c="g2g"]{--market-c:#ff5a68}
[data-market-c="other"]{--market-c:#b9adff}
.games-cell{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.games-main{flex-wrap:nowrap;gap:13px}
.games-tile{flex:none;display:block;width:98px;height:40px;padding:0 9px;border:0;border-radius:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:900;line-height:40px;letter-spacing:.02em;text-align:center;cursor:pointer;transition:transform .15s,filter .15s}
.games-tile:hover{transform:translateY(-1px);filter:brightness(1.12)}
.games-tile.game-generic{color:hsl(var(--game-hue) 86% 79%);background:hsl(var(--game-hue) 70% 52% / .17);box-shadow:inset 0 0 0 1px hsl(var(--game-hue) 70% 62% / .26)}
.games-tile.game-generic.game-duo{background:linear-gradient(110deg,hsl(var(--game-hue) 70% 52% / .3),hsl(var(--game-hue2) 70% 52% / .3));box-shadow:inset 0 0 0 1px hsl(var(--game-hue) 70% 62% / .3)}
.games-title{flex:1 1 auto;min-width:0;display:grid;gap:3px}
.games-edit{justify-self:start;max-width:100%;margin-left:-5px;padding:1px 5px;border:0;border-radius:6px;background:transparent;color:#f2f4fb;font-size:13.5px;font-weight:800;letter-spacing:-.1px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:text}
.games-edit:hover,.games-short-edit:hover{background:rgba(255,255,255,.06)}
.games-meta{display:flex;flex-wrap:wrap;align-items:center;gap:5px;min-width:0}
.games-short-edit{margin-left:-5px;padding:1px 5px;border:0;border-radius:5px;background:transparent;color:var(--muted-2);font-size:10px;cursor:text}
.games-short-edit b{margin-left:2px;color:#c7cfe2;font-weight:800}
.games-meta small{color:var(--muted-2);font-size:9px}
.games-input{width:100%;min-width:0;padding:5px 8px;border:1px solid #5a52d6;border-radius:7px;background:#0d111b;color:#fff;font-size:12px}
.games-bucket,.games-warn{padding:1px 6px;border-radius:5px;font-size:8.5px;font-style:normal;font-weight:800}
.games-bucket{background:rgba(143,155,184,.16);color:#c3cbe0}
.games-warn{background:rgba(255,170,40,.16);color:#ffc76b}
.games-empty{display:inline-flex;align-items:center;height:26px;padding:0 11px;border:1px dashed rgba(143,155,184,.16);border-radius:9px;color:#56607a;font-size:10px}
.game-piece{display:inline-flex;align-items:center;gap:6px;max-width:100%;height:28px;padding:0 3px 0 9px;border:1px solid rgba(143,155,184,.2);border-radius:9px;background:rgba(255,255,255,.035);color:#dce2f1;font-size:11px;cursor:grab;transition:border-color .15s,background-color .15s}
.game-piece::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:var(--market-c,#8f9bb8)}
.game-piece:hover{border-color:rgba(143,155,184,.42);background:rgba(255,255,255,.065)}
.game-piece.own{border-color:rgba(117,101,244,.6);background:rgba(117,101,244,.12)}
.game-piece>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.game-piece>b{color:#b9adff;font-size:8.5px;letter-spacing:.04em;text-transform:uppercase}
.game-piece-menu{display:grid;place-items:center;width:22px;height:22px;padding:0;border:0;border-radius:6px;background:transparent;color:#8f9bb8;font-size:13px;line-height:1;cursor:pointer;opacity:.75}
.game-piece-menu:hover{background:rgba(255,255,255,.09);color:#fff;opacity:1}
.game-history{display:grid;margin-top:18px;padding:14px 16px;border:1px solid var(--border-soft);border-radius:14px;background:#0f131d}
.game-history strong{margin-bottom:8px;color:#e9ecf6;font-size:11.5px}
.game-history span{position:relative;display:block;padding:5px 0 5px 18px;color:#aeb8ce;font-size:10.5px;line-height:1.45}
.game-history span::before{content:"";position:absolute;left:3px;top:10px;width:6px;height:6px;border-radius:50%;background:#7565f4;box-shadow:0 0 0 3px rgba(117,101,244,.15)}
.game-history span::after{content:"";position:absolute;left:5.5px;top:19px;bottom:-6px;width:1px;background:#262e44}
.game-history span:last-child::after{display:none}
.game-history time{color:var(--muted-2)}
.game-history b{color:#dfe4f0;font-weight:700}
@media (max-width:900px){
  .games-row.games-head{display:none}
  .games-row,.games-table.has-other .games-row{grid-template-columns:minmax(0,1fr);gap:10px;padding:12px 12px 12px 18px}
  .games-tile{width:auto;min-width:58px;max-width:128px;height:38px;line-height:38px}
  .games-cell.games-pieces::before{content:attr(data-label);flex:0 0 52px;color:var(--muted-2);font-size:9px;font-weight:800;letter-spacing:.05em;text-transform:uppercase}
  .games-toolbar .games-search{max-width:none;flex-basis:100%}
  .games-howto{gap:6px 12px}
}

/* ── фишка игры в строке переписки нажимается — полное имя (v584) ──────────────────────────── */
.chat-conversation-footer .chat-unit[data-chat-more]{cursor:pointer}
.chat-conversation-footer .chat-unit[data-chat-more]:hover{filter:brightness(1.18)}
.chat-more-game{display:grid;justify-items:start;gap:6px;padding:8px}
.chat-more-title{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-width:0}
.chat-more-title strong{color:#eef1fb;font-size:12.5px;font-weight:800}
.chat-more-title .game-tag{max-width:none;padding:5px 9px;font-size:9.5px!important}
.chat-more-game>small{margin-top:-3px;color:var(--muted-2);font-size:9px}
.chat-more-parts{display:flex;flex-wrap:wrap;align-items:center;gap:5px}

/* ── строка переписки (v585): отметки значками у имени, аккаунт строки в полосе, тема ───────── */
.chat-mark-icons{display:inline-flex;align-items:center;gap:2px;flex:none;cursor:pointer}
.chat-mark-ico{display:inline-grid;place-items:center;width:17px;height:17px;border-radius:6px;font-size:9px;font-style:normal;font-weight:800;line-height:1;background:rgba(117,101,244,.16);color:#c3baff}
.chat-mark-ico.amber{background:rgba(255,189,69,.15);color:#ffd078}
.chat-mark-ico.rose{background:rgba(255,100,127,.15);color:#ff91a3}
.chat-mark-ico.cyan{background:rgba(54,202,239,.14);color:#71dcf7}
.chat-mark-ico.green{background:rgba(43,212,184,.14);color:#66e0c4}
.chat-mark-icons:hover .chat-mark-ico{filter:brightness(1.2)}
.chat-more-mark{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:9px;background:rgba(255,255,255,.025)}
.chat-more-mark strong{color:#eef1fb;font-size:12px}
.chat-more-mark .chat-mark-ico{width:22px;height:22px;font-size:11px}
/* Кольцо — ВНУТРИ кружка (outline со сдвигом внутрь): низ строки режет всё, что торчит наружу
   (overflow:hidden — ради обрезки длинных фишек), и внешняя тень срезалась слева и сверху. */
.chat-account-face.own{box-shadow:none;outline:2px solid #8b7dff;outline-offset:-2px}
.chat-conversation-footer .chat-accounts{flex:none}
.chat-conversation-footer .chat-unit.topic{box-shadow:inset 0 0 0 1px currentColor!important}
.chat-conversation-footer .chat-unit.topic>b::before{content:"●";margin-right:4px;font-size:7px;vertical-align:1px}
.chat-more-topic{color:#9fe8c8!important;font-size:9px}
.thread-topic{max-width:220px!important;font-size:8px!important}
.claim-others .claim-text{color:#aeb8ce}
/* ── о каких лотах пишут (v588: таблица — лот, пишут, купили, оборот) ───────────────────────── */
.lot-ask-panel{margin-top:18px;padding:20px 22px}
.lot-ask-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:14px}
.lot-ask-head h2{display:flex;align-items:center;gap:8px;margin:0;font-size:18px}
.lot-ask-head small{display:block;margin-top:3px;color:var(--muted-2);font-size:11px}
.lot-ask-info{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#1d2436;color:var(--muted);font-size:10px;font-style:normal;font-weight:800;cursor:help}
.lot-ask-filter button{min-height:28px;padding:0 11px;font-size:11.5px}
.lot-ask-table{display:grid}
.lot-ask-empty{margin:0;padding:22px;color:var(--muted-2);font-size:12px;text-align:center}
.lot-ask-row{display:grid;grid-template-columns:minmax(0,1fr) 150px 90px 140px;align-items:center;gap:14px;padding:11px 10px;border-bottom:1px solid var(--border-soft);cursor:pointer}
.lot-ask-row:hover{background:rgba(255,255,255,.02)}
.lot-ask-headrow{padding-top:0;color:var(--muted-2);font-size:9.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;cursor:default}
.lot-ask-headrow:hover{background:none}
.lot-ask-lot{min-width:0;display:flex;align-items:center;gap:8px}
.lot-ask-lot .game-tag{flex:none;font-size:8px!important}
.lot-ask-lot b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#eef1fb;font-size:12.5px;font-weight:700}
.lot-ask-people{display:flex;align-items:center;gap:9px}
.lot-ask-people b{min-width:22px;color:#fff;font-size:15px}
.lot-ask-people>i{flex:1;height:6px;border-radius:99px;background:#1a2132;overflow:hidden}
.lot-ask-people>i>i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#7565f4,#36caef)}
.lot-ask-buyers{color:var(--muted-2);font-size:11px;white-space:nowrap}
.lot-ask-buyers b{color:#66e0c4;font-size:14px}
.lot-ask-row.silent .lot-ask-buyers b{color:#ffc76b}
.lot-ask-money{color:#dfe4f0;font-size:12px;font-weight:700;text-align:right;white-space:nowrap}
.lot-ask-headrow span:last-child{text-align:right}
.lot-ask-details{display:none;grid-column:1/-1;gap:8px;padding:4px 2px 2px}
.lot-ask-row.open .lot-ask-details{display:grid}
.lot-ask-row.open{background:rgba(117,101,244,.05)}
.lot-ask-quotes{display:grid;gap:5px}
.lot-ask-quotes p{margin:0;padding:7px 10px;border-radius:9px;background:#151b29;color:#d7deef;font-size:11.5px;line-height:1.45}
.lot-ask-quotes time{margin-left:8px;color:var(--muted-2);font-size:9.5px}
.lot-ask-none{margin:0;color:var(--muted-2);font-size:11px}
.lot-ask-facts{display:flex;flex-wrap:wrap;gap:6px 16px;color:var(--muted-2);font-size:11px}
.lot-ask-facts b{color:#dfe4f0}
.lot-ask-off{color:#ff91a3}
@media (max-width:900px){
  .lot-ask-row{grid-template-columns:minmax(0,1fr) auto auto;gap:6px 12px}
  .lot-ask-lot{grid-column:1/-1}
  .lot-ask-headrow{display:none}
  .lot-ask-people{min-width:0}
  .lot-ask-buyers::before{content:"купили ";}
}

/* ── карта разделов и создание лота (v589) ────────────────────────────────────────────────────── */
.lot-map{margin-bottom:14px;padding:18px 20px}
.lot-map-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:12px}
.lot-map-head h2{margin:0;font-size:17px}
.lot-map-head small{display:block;margin-top:3px;color:var(--muted-2);font-size:11px}
.lot-map-head .select{min-width:220px}
.lot-map-table{overflow-x:auto}
.lot-map-empty{margin:0;padding:16px;color:var(--muted-2);font-size:12px}
.lot-map-grid{display:grid;gap:4px;min-width:max-content}
.lot-map-row{display:grid;align-items:center;gap:4px}
.lot-map-row.head>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 4px;color:var(--muted-2);font-size:9.5px;font-weight:800;text-align:center}
.lot-map-row.head>span:first-child{text-align:left}
.lot-map-section{position:sticky;left:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:6px;height:34px;padding:0 10px;border:1px solid var(--border-soft);border-radius:9px;background:#151a28;color:#eef1fb;font-size:12px;font-weight:700;text-align:left;cursor:pointer}
.lot-map-section i{color:#9f94ff;font-style:normal;font-weight:800;opacity:.6}
.lot-map-section:hover i{opacity:1}
.lot-map-section small{color:var(--muted-2);font-size:9.5px;font-weight:600}
.lot-map-cell{height:34px;border:0;border-radius:9px;background:rgba(43,212,184,.1);color:#9be9d5;font-size:13px;font-weight:800;cursor:pointer}
.lot-map-cell small{color:inherit;font-size:9px;font-weight:600;opacity:.6}
.lot-map-cell:hover{filter:brightness(1.25)}
.lot-map-cell.empty{background:rgba(143,155,184,.06);color:#5f6a84}
.lot-map-cell.warn{background:rgba(255,189,69,.13);color:#ffd078}
.lot-map-cell.full{background:rgba(255,100,127,.14);color:#ff91a3}
.lot-map-cell.off{opacity:.4}
.lot-map-free{color:#9be9d5;font-size:13px;font-weight:800;text-align:center}
.lot-map-free.none{color:#5f6a84;font-weight:600}
.lot-map-row.chips .lot-map-section{cursor:default}
.lot-map-chips-note{grid-column:2/-1;padding:0 8px;color:var(--muted-2);font-size:10.5px}
.create-steps{display:grid;gap:12px;margin-bottom:12px}
.create-step{display:grid;gap:6px}
.create-step>span{color:var(--muted);font-size:11px;font-weight:700}
.create-sections{display:flex;flex-wrap:wrap;gap:6px}
.create-section{display:grid;gap:2px;min-width:92px;padding:7px 12px;border:1px solid var(--border);border-radius:11px;background:#151a28;color:#eef1fb;font-size:12px;font-weight:700;text-align:left;cursor:pointer}
.create-section small{color:#9be9d5;font-size:9.5px;font-weight:600}
.create-section.full small,.create-section.chips small{color:var(--muted-2)}
.create-section.on{border-color:#7565f4;background:rgba(117,101,244,.18)}
.create-section:disabled{opacity:.5;cursor:default}
.create-account b{margin-left:6px;padding:1px 6px;border-radius:6px;background:rgba(43,212,184,.12);color:#9be9d5;font-size:10px}
.create-account b.warn{background:rgba(255,189,69,.14);color:#ffd078}
.create-account b.full{background:rgba(255,100,127,.14);color:#ff91a3}
.create-account b.empty{background:rgba(143,155,184,.1);color:#8f9bb8}
.create-account.full{opacity:.5}
.create-full{margin:0;padding:14px;border:1px dashed rgba(255,100,127,.3);border-radius:12px;color:#ff91a3;font-size:12px}
.lot-map-tools{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.lot-map-tools .button{min-height:36px;padding:0 12px;font-size:12px}

/* ── форма лота блоками (v591): текст RU/EN, цена со способами, параметры, настройки ─────────── */
.lot-modal{width:min(1080px,calc(100% - 28px))}
#lotFields.dynamic-fields,#createLotFields.dynamic-fields{display:block;max-height:none;overflow:visible;padding-right:0}
.lot-form{display:grid;gap:14px}
.lot-form-card{padding:16px 18px;border:1px solid var(--border-soft);border-radius:14px;background:#0f141f}
.lot-form-card>header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.lot-form-card h3{margin:0;color:#c7cfe2;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.lot-lang-tabs{display:inline-flex;gap:3px;padding:3px;border:1px solid var(--border);border-radius:10px;background:#151a28}
.lot-lang-tabs button{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:0 14px;border:0;border-radius:7px;background:transparent;color:#aeb8cf;font-size:12px;font-weight:800;cursor:pointer}
.lot-lang-tabs button.on{background:rgba(117,101,244,.28);color:#fff}
.lot-lang-tabs button small{padding:1px 5px;border-radius:5px;background:rgba(255,189,69,.15);color:#ffc76b;font-size:9px;font-weight:700}
.lot-lang-pane{display:grid;gap:12px}
.lot-lang-pane .field{margin:0}
.lot-lang-pane textarea.lot-desc{min-height:230px;resize:vertical}
.lot-lang-pane textarea.lot-after{min-height:110px;resize:vertical}
.lot-copy-ru{justify-self:start;font-size:11.5px}
.lot-price-pair{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.lot-form-price .lot-pay-methods{margin-top:12px}
.lot-form-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;align-items:start}
.lot-form-split.single{grid-template-columns:minmax(0,1fr)}
.lot-form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.lot-form-switches{display:grid;gap:8px}
@media (max-width:760px){.lot-form-split{grid-template-columns:minmax(0,1fr)}.lot-form-card{padding:14px}}

/* ── редактор лота: отступы, значки, аватарки, подсветка пустого (v592) ───────────────────────── */
.lot-modal .lot-images{margin:0 0 16px}
.lot-modal #createSectionFill{margin-bottom:14px}
.lot-modal .create-steps{margin-bottom:16px}
.lot-form-card h3{font-size:11.5px}
.create-section{display:flex;align-items:center;gap:9px}
.create-section>i{font-size:17px;font-style:normal;line-height:1}
.create-section>span{display:grid;gap:2px}
.create-account{display:inline-flex;align-items:center;gap:7px}
.create-account .avatar-pair{display:inline-flex}
.create-account-avatar{width:22px;height:22px;border-radius:7px;object-fit:cover;font-size:10px;display:grid;place-items:center}
.lot-map-section>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lot-map-account{display:grid;justify-items:center;gap:3px}
.lot-map-account em{max-width:62px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal}
.lot-map-account .avatar-pair{display:inline-flex}
.lot-map-avatar{width:22px;height:22px;border-radius:7px;object-fit:cover;font-size:10px;display:grid;place-items:center}
.lot-form .lot-missing{border-color:#ff647f!important;box-shadow:0 0 0 3px rgba(255,100,127,.18)!important}

/* Шапка карты и выбор аккаунтов (v593): обёртка аватарки по умолчанию прижата влево и шире картинки
   (.avatar-pair 35px, justify-self:start) — аватарки съезжали от своих имён. */
.lot-map-row.head{align-items:end;padding-bottom:4px;border-bottom:1px solid var(--border-soft);margin-bottom:2px}
.lot-map-row.head>span:not(.lot-map-account){padding-bottom:3px}
.lot-map-account .avatar-pair,.create-account .avatar-pair{justify-self:center;width:24px;height:24px}
.lot-map-avatar,.create-account-avatar{width:24px;height:24px;border-radius:50%}
.lot-map-grid{min-width:0;width:100%}
.lot-map-account em{max-width:100%}
/* v595: правило шапки «.lot-map-row.head span» било и по span ВНУТРИ колонки — по обёртке аватарки и
   букве-заглушке: padding 0 4px при ширине 24px оставлял 16px. Картинку сдвигало и резало справа,
   букву сжимало в овал 16×24. Теперь правило только для самих колонок; кружок не сжимается. */
.lot-map-avatar,.create-account-avatar{flex:0 0 auto;padding:0}

/* ── карта разделов листается (v596) ───────────────────────────────────────────────────────────
   12.10: «если будет больше аккаунтов — пусть крутится». Колонка аккаунта не сжимается ниже
   --map-account (до v596 — 64px, «15/20» и имя в ней теснились); не влезли — таблица листается
   стрелками, раздел и «Свободно» стоят на месте. Минимумы здесь — одно место на JS и CSS:
   сетка в renderLotMap собирает колонки и minWidth из этих же переменных. */
.lot-map{--map-section:150px;--map-free:74px;--map-account:100px;--map-gap:4px;--map-bg:#141925}
.lot-map-scroll{position:relative}
.lot-map-scroll::after{content:"";position:absolute;top:0;right:0;bottom:0;width:40px;z-index:3;pointer-events:none;opacity:0;transition:opacity .15s;background:linear-gradient(90deg,rgba(20,25,37,0),var(--map-bg))}
.lot-map-scroll.more-right::after{opacity:1}
.lot-map-table{scroll-snap-type:x proximity;scroll-padding-left:calc(var(--map-section) + var(--map-free) + 2 * var(--map-gap));overscroll-behavior-x:contain;scrollbar-width:thin}
.lot-map-row.head .lot-map-account{scroll-snap-align:start}
/* Закреплённые колонки: непрозрачный фон на всю высоту строки. «Свободно» отрицательными полями
   залезает на зазоры сетки с обеих сторон — иначе в щели по 4px видно клетки, проезжающие под ней,
   а тень вместо полей закрывала бы щель только для глаза: клик туда попадал в спрятанную клетку. */
.lot-map-section{z-index:2}
.lot-map-row.head>span:nth-child(-n+2),.lot-map-free{position:sticky;z-index:2;align-self:stretch;display:flex;align-items:center;justify-content:center;background:var(--map-bg)}
.lot-map-row.head>span:nth-child(-n+2){align-items:flex-end}
.lot-map-row.head>span:first-child{left:0;justify-content:flex-start}
.lot-map-row.head>span:nth-child(2),.lot-map-free{left:var(--map-section);margin:0 calc(-1 * var(--map-gap))}
.lot-map-row.head>span:nth-child(2){padding-left:calc(4px + var(--map-gap));padding-right:calc(4px + var(--map-gap))}
.lot-map-free{padding:0 var(--map-gap)}
.lot-map-scroll.more-left .lot-map-row.head>span:nth-child(2),.lot-map-scroll.more-left .lot-map-free{box-shadow:10px 0 12px -6px rgba(0,0,0,.55)}
.lot-map-chips-note>span{position:sticky;left:calc(var(--map-section) + var(--map-gap) + 8px);display:inline-block}
.lot-map-nav{display:inline-flex;align-items:center;gap:4px;padding:3px;border:1px solid var(--border);border-radius:11px;background:#151a28}
.lot-map-nav button{width:30px;height:30px;border:0;border-radius:8px;background:transparent;color:#c7cfe2;font-size:18px;line-height:1;cursor:pointer}
.lot-map-nav button:hover:not(:disabled){background:rgba(117,101,244,.22);color:#fff}
.lot-map-nav button:disabled{opacity:.3;cursor:default}
.lot-map-nav span{min-width:128px;padding:0 4px;color:#aeb8cf;font-size:11.5px;font-weight:700;text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums}
/* Телефон: блок около 320px. При 118/58/84 рядом с закреплёнными колонками помещался ОДИН аккаунт
   («Аккаунты 1–1 из 9», 12.10) — колонки уже, поля блока тоньше, подпись «Свободно» мельче. */
@media (max-width:760px){.lot-map{--map-section:100px;--map-free:52px;--map-account:72px;padding:14px 10px}.lot-map-nav span{min-width:0}.lot-map-row.head>span:nth-child(2){padding-left:var(--map-gap);padding-right:var(--map-gap);font-size:8.5px}.lot-map-section{padding:0 7px;font-size:11px}}

/* ── валюта FunPay: клетки карты и окно (v597) ─────────────────────────────────────────────────
   chips/N — своя форма площадки: строка на сервер, флажок, наличие, цена. Окно — вкладки
   аккаунтов сверху, строки серверов карточками; на телефоне поля встают под название. */
.lot-map-row.chips .lot-map-section{cursor:pointer}
.chips-cell.loading{color:#5f6a84;background:rgba(143,155,184,.06);animation:chips-wait 1.2s ease-in-out infinite}
@keyframes chips-wait{50%{opacity:.45}}
.chips-free small{margin-left:3px;color:var(--muted-2);font-size:9.5px;font-weight:600}
.create-section.chips small{color:#ffd078}
.chips-modal{width:min(1000px,calc(100% - 28px))}
.chips-accounts{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px;padding:2px 0 12px;border-bottom:1px solid var(--border-soft)}
.chips-account{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;min-height:46px;padding:6px 13px 6px 7px;border:1px solid var(--border);border-radius:12px;background:#151a28;color:#c7cfe2;text-align:left;cursor:pointer}
.chips-account:hover{border-color:#44506f}
.chips-account.on{border-color:rgba(117,101,244,.65);background:rgba(117,101,244,.16);color:#fff}
.chips-account .avatar-pair{justify-self:center;width:26px;height:26px}
.chips-account-avatar{width:26px;height:26px;border-radius:50%;object-fit:cover;font-size:11px;display:grid;place-items:center}
.chips-account>span{display:grid;gap:2px}
.chips-account b{font-size:12px}
.chips-account small{color:var(--muted-2);font-size:10px}
.chips-account.selling small{color:#66e0c4}
.chips-min{display:flex;align-items:flex-end;flex-wrap:wrap;gap:8px 16px;margin-bottom:12px;padding:14px 16px;border:1px solid var(--border-soft);border-radius:14px;background:#0f141f}
.chips-min .chips-input{width:210px}
.chips-min small{padding-bottom:11px;color:var(--muted-2);font-size:11px}
.chips-input{position:relative;display:grid;gap:5px;min-width:0}
.chips-input>span{color:#9aa6c0;font-size:10.5px;font-weight:700}
.chips-input input{width:100%;height:38px;padding:0 36px 0 11px;border:1px solid var(--border);border-radius:10px;background:#151a28;color:var(--text);font-variant-numeric:tabular-nums}
.chips-input input:focus{outline:0;border-color:#675be4}
.chips-input em{position:absolute;right:11px;bottom:11px;color:var(--muted-2);font-size:11px;font-style:normal;font-weight:700;pointer-events:none}
.chips-input input.lot-missing{border-color:#ff647f;box-shadow:0 0 0 3px rgba(255,100,127,.18)}
.chips-rows{display:grid;gap:8px}
.chips-row{display:grid;grid-template-columns:44px minmax(150px,1.3fr) minmax(130px,1fr) minmax(120px,.9fr) minmax(160px,1.1fr);align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border-soft);border-radius:14px;background:#0f141f;transition:border-color .15s}
.chips-row.on{border-color:rgba(43,212,184,.35);background:linear-gradient(90deg,rgba(43,212,184,.07),#0f141f 45%)}
.chips-server{font-size:13px;line-height:1.3}
.chips-switch{position:relative;display:inline-block;width:38px;height:22px;cursor:pointer}
.chips-switch input{position:absolute;width:0;height:0;opacity:0}
.chips-switch i{position:absolute;inset:0;border-radius:999px;background:#2a3147;transition:background .15s}
.chips-switch i:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#aeb8cf;transition:left .15s,background .15s}
.chips-switch input:checked+i{background:#2bd4b8}
.chips-switch input:checked+i:after{left:19px;background:#fff}
.chips-switch input:focus-visible+i{outline:2px solid var(--purple-2);outline-offset:2px}
.chips-buyer{display:grid;gap:3px;min-width:0;color:#9aa6c0;font-size:10.5px}
.chips-buyer b{color:var(--amber);font-size:15px;font-weight:800;font-variant-numeric:tabular-nums}
.chips-buyer.estimate b{color:#ffd99a}
.chips-buyer small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted-2);font-size:10px}
.chips-empty{margin:0;padding:24px;color:var(--muted-2);text-align:center}
.chips-empty.error{color:#ff91a3}
@media (max-width:760px){.chips-row{grid-template-columns:44px minmax(0,1fr);gap:10px}.chips-row>.chips-input,.chips-row>.chips-buyer{grid-column:1/-1}.chips-min .chips-input{width:100%}.chips-min small{padding:0}}

/* ── Excel G2G: обмен файлами каталога (v598) ──────────────────────────────────────────────── */
.g2gx{margin-bottom:14px;padding:18px 20px}
.g2gx-head{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:12px}
.g2gx-head h2{margin:0;font-size:17px}
.g2gx-head small{display:block;max-width:640px;margin-top:4px;color:var(--muted-2);font-size:11.5px;line-height:1.5}
.g2gx-tools{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.g2gx-tools .button{min-height:38px}
.g2gx-upload{cursor:pointer}
.g2gx-alert{margin:0 0 10px;padding:10px 13px;border:1px solid var(--border-soft);border-radius:11px;background:#141a27;color:#c7cfe2;font-size:12px;line-height:1.5}
.g2gx-alert.error{border-color:rgba(255,100,127,.35);background:rgba(255,100,127,.07);color:#ffb3c0}
.g2gx-note{margin:6px 0;color:var(--muted-2);font-size:12px}
.g2gx-note.error{color:#ff91a3}
.g2gx-table-wrap{overflow-x:auto}
.g2gx-table{width:100%;border-collapse:collapse;font-size:12px}
.g2gx-table th{padding:7px 8px;border-bottom:1px solid var(--border-soft);color:var(--muted-2);font-size:10.5px;font-weight:800;text-align:left;white-space:nowrap}
.g2gx-table td{padding:8px;border-bottom:1px solid var(--border-soft);vertical-align:middle}
.g2gx-table td small{display:block;color:var(--muted-2);font-size:10.5px}
.g2gx-table .num{text-align:right;font-variant-numeric:tabular-nums}
.g2gx-table code{color:#aeb8cf;font-size:11px}
.g2gx-chip{display:inline-block;margin:2px 4px 2px 0;padding:2px 7px;border-radius:7px;background:rgba(143,155,184,.1);color:#aeb8cf;font-size:10.5px;white-space:nowrap}
.g2gx-chip.live{background:rgba(43,212,184,.12);color:#66e0c4}
.g2gx-chip.delisted_by_g2g,.g2gx-chip.bad{background:rgba(255,100,127,.12);color:#ff91a3}
.g2gx-yes{color:#66e0c4;font-weight:700}
.g2gx-no{color:var(--muted-2)}
.g2gx-actions{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap}
.g2gx-actions .button{min-height:32px;padding:0 10px;font-size:11.5px}
.g2gx-plan{margin-top:14px;padding:14px 16px;border:1px solid var(--border);border-radius:14px;background:#0f141f}
.g2gx-plan>header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}
.g2gx-plan>header small{display:block;margin-top:3px;color:var(--muted-2);font-size:11px}
.g2gx-stats{display:flex;flex-wrap:wrap;gap:6px 16px;margin-bottom:10px;color:#aeb8cf;font-size:12px}
.g2gx-stats b{color:#fff}
.g2gx-stats .warn b{color:#ffd078}
.g2gx-problems{display:grid;gap:6px;margin:0 0 10px;padding:0;list-style:none}
.g2gx-problems li{display:grid;gap:2px;padding:8px 11px;border-radius:10px;font-size:12px}
.g2gx-problems li.error{background:rgba(255,100,127,.08);color:#ffb3c0}
.g2gx-problems li.warning{background:rgba(255,189,69,.08);color:#ffd99a}
.g2gx-problems small{color:var(--muted-2);font-size:10.5px}
.g2gx-ok{margin:0 0 10px;color:#66e0c4;font-size:12px}
.g2gx-changes{margin-bottom:10px}
.g2gx-changes summary{cursor:pointer;color:#c7cfe2;font-size:12px;font-weight:700;margin-bottom:6px}
.g2gx-send{display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.g2gx-send small{color:var(--muted-2);font-size:11px}
.g2gx-stage{margin:0 0 8px;color:#c7cfe2;font-size:13px;font-weight:700}
.g2gx-stage.ok{color:#66e0c4}.g2gx-stage.warn{color:#ffd078}.g2gx-stage.error{color:#ff91a3}
.g2gx-bar{height:6px;margin-bottom:10px;border-radius:6px;background:#1d2436;overflow:hidden}
.g2gx-bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#6557d2,#2bd4b8);transition:width .4s}
@media (max-width:760px){.g2gx{padding:14px 12px}.g2gx-actions{justify-content:flex-start}}
/* ── Файлы лотов G2G (v602): игры строками, разделы значками, загрузка очередью ──────────────── */
.g2gx.dropping{outline:2px dashed rgba(124,108,240,.7);outline-offset:-6px}
.g2gx-tools select{min-height:38px;max-width:240px}
.g2gx-games{border:1px solid var(--border-soft);border-radius:12px;overflow:hidden}
.g2gx-game{display:flex;align-items:center;gap:14px;padding:8px 12px;background:#0f141f}
.g2gx-game+.g2gx-game{border-top:1px solid var(--border-soft)}
.g2gx-game:hover{background:#121826}
.g2gx-game-name{flex:0 0 210px;min-width:0;overflow:hidden}
/* .game-tag в списках — 7px!important и потолок 92–130px: здесь это заголовок строки, ему нужен рост. */
.g2gx-game-name .game-tag{max-width:100%;padding:5px 11px;border-radius:8px;font-size:12.5px!important;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.g2gx-secs{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.g2gx-sec{position:relative;display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 11px;border:1px solid var(--border-soft);border-radius:9px;background:#151b29;color:#c7cfe2;font:inherit;font-size:12px;cursor:pointer;transition:border-color .15s,background .15s}
.g2gx-sec b{color:#fff;font-variant-numeric:tabular-nums}
.g2gx-sec:hover{border-color:rgba(124,108,240,.6);background:#1a2133}
.g2gx-sec.busy{opacity:.55;cursor:progress}
.g2gx-sec.off{cursor:default;opacity:.45}
.g2gx-sec.off:hover{border-color:var(--border-soft);background:#151b29}
.g2gx-sec i{position:absolute;top:-3px;right:-3px;width:8px;height:8px;border-radius:50%;background:#ff647f;box-shadow:0 0 0 2px #0f141f}
.g2gx-queue{margin-top:14px;border:1px solid var(--border);border-radius:14px;background:#0f141f;overflow:hidden}
.g2gx-queue>header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border-soft)}
.g2gx-seg{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px;color:var(--muted-2);font-size:12px}
.g2gx-seg span{margin-right:4px}
.g2gx-seg button{height:28px;padding:0 10px;border:1px solid var(--border-soft);border-radius:8px;background:transparent;color:#aeb8cf;font:inherit;font-size:12px;cursor:pointer}
.g2gx-seg button.on{border-color:rgba(124,108,240,.7);background:rgba(124,108,240,.16);color:#fff}
.g2gx-seg.ask span{color:#ffd078}
.g2gx-seg.ask button{border-color:rgba(255,208,120,.55)}
.g2gx-list{margin:0;padding:0;list-style:none}
.g2gx-item{position:relative;border-bottom:1px solid var(--border-soft)}
.g2gx-item-main{display:grid;grid-template-columns:76px minmax(0,1.2fr) minmax(0,1.4fr) auto;align-items:center;gap:12px;width:100%;padding:10px 42px 10px 14px;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}
.g2gx-item-main:hover{background:#121826}
.g2gx-kind{justify-self:start;padding:2px 8px;border-radius:7px;background:rgba(143,155,184,.12);color:#aeb8cf;font-size:10.5px;font-weight:700;white-space:nowrap}
.g2gx-what{min-width:0}
.g2gx-what b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.g2gx-what small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted-2);font-size:11px}
.g2gx-sum{color:#aeb8cf;font-size:12px}
.g2gx-state{justify-self:end;white-space:nowrap;font-size:12px;font-weight:700}
.g2gx-item.ok .g2gx-state{color:#66e0c4}
.g2gx-item.bad .g2gx-state{color:#ff91a3}
.g2gx-item.warn .g2gx-state{color:#ffd078}
.g2gx-item.busy .g2gx-state{color:#c7cfe2}
.g2gx-item.ask .g2gx-state{color:#ffd078}
.g2gx-item.idle .g2gx-state{color:var(--muted-2)}
.g2gx-item.busy .g2gx-state::before{content:'';display:inline-block;width:9px;height:9px;margin-right:7px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:-1px;animation:g2gx-spin .8s linear infinite}
@keyframes g2gx-spin{to{transform:rotate(360deg)}}
.g2gx-x{position:absolute;top:9px;right:10px;width:26px;height:26px;border:0;border-radius:7px;background:transparent;color:var(--muted-2);cursor:pointer}
.g2gx-x:hover{background:rgba(255,100,127,.12);color:#ff91a3}
.g2gx-more{padding:2px 14px 12px 102px}
.g2gx-queue>footer{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;padding:12px 14px}
.g2gx-queue>footer small{flex:1 1 220px;color:var(--muted-2);font-size:11.5px}
@media (max-width:760px){.g2gx-game{flex-direction:column;align-items:flex-start;gap:6px}.g2gx-game-name{flex:none;max-width:100%}.g2gx-item-main{grid-template-columns:minmax(0,1fr) auto}.g2gx-kind,.g2gx-sum{grid-column:1/-1}.g2gx-more{padding:2px 12px 12px}}
/* Исполнитель в строке и карточке заказа G2G (17.10) — те же классы, что у FunPay. */
.g2g-order-row .order-executor-col{display:flex;flex-direction:column;gap:3px}
.g2g-order-row .order-executor-col .order-take-button{align-self:flex-start}
.g2g-order-staff{margin:10px 0}

/* Цена прямо в списке лотов (18.10): цена в строке — кнопка, окошко правки — у неё. */
.lot-price-quick,.g2g-price-quick{max-width:100%;margin:-3px -5px;padding:3px 5px;border:0;border-radius:7px;background:transparent;color:inherit;font:inherit;text-align:inherit;cursor:pointer;text-decoration:underline dotted rgba(147,135,255,.55);text-underline-offset:3px}
.lot-price-quick:hover,.g2g-price-quick:hover{background:rgba(117,101,244,.14);color:var(--text);text-decoration-color:var(--purple-2)}
.quick-price-pop{position:fixed;z-index:70;width:min(320px,calc(100vw - 16px));display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid var(--border);border-radius:13px;background:#141927;box-shadow:var(--shadow)}
.quick-price-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;min-width:0}
.quick-price-head strong{flex:0 0 auto;font-size:13px}
.quick-price-head small{min-width:0;color:var(--muted-2);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.quick-price-currency .chat-lot-currency-options button{min-width:44px}
.quick-price-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.quick-price-pair.single,.quick-price-pair:has(>.hidden){grid-template-columns:1fr}
.quick-price-pair label{display:flex;flex-direction:column;gap:5px;min-width:0;color:var(--muted);font-size:11px}
.quick-price-pair input{width:100%;height:38px;padding:0 10px;border:1px solid var(--border);border-radius:9px;background:#101420;color:var(--text);font-size:14px;font-variant-numeric:tabular-nums;outline:0}
.quick-price-pair input:focus{border-color:#675be4}
.quick-price-pair input:disabled{opacity:.5}
.quick-price-hint{color:var(--muted);font-size:11px;line-height:1.4}
.quick-price-hint:empty{display:none}
.quick-price-actions{display:flex;justify-content:flex-end;gap:8px}
.quick-price-actions .button{min-height:34px;padding:0 13px}

/* Поставщик — цвет группы «Закупки» в панели (#ffbd45). */
.customer-stage.supplier{color:#ffd174;background:rgba(255,189,69,.11)}

/* Окно файлов лотов G2G (19.10): вкладки, поиск игры с подсказкой, шаги «Создать лоты файлом». */
.g2gx-tabs{display:flex;gap:6px;margin:0 0 12px;border-bottom:1px solid var(--border-soft)}
.g2gx-tabs button{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 14px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font:inherit;font-size:13px;font-weight:700;cursor:pointer;margin-bottom:-1px}
.g2gx-tabs button small{color:var(--muted-2);font-size:11px;font-weight:600}
.g2gx-tabs button[aria-selected="true"]{color:var(--text);border-bottom-color:var(--purple-2)}
.g2gx-find{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.g2gx-search{position:relative;flex:1 1 320px;min-width:0;display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border:1px solid var(--border);border-radius:11px;background:#101420;color:var(--muted)}
.g2gx-search:focus-within{border-color:#675be4}
.g2gx-search input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--text);font:inherit;font-size:13px}
.g2gx-search input:disabled{cursor:not-allowed}
.g2gx-suggest{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:30;display:flex;flex-direction:column;gap:2px;max-height:min(360px,55vh);overflow-y:auto;padding:6px;border:1px solid var(--border);border-radius:12px;background:#141927;box-shadow:var(--shadow)}
.g2gx-suggest button{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-height:34px;padding:6px 10px;border:0;border-radius:8px;background:transparent;color:#c8d0e6;font:inherit;font-size:13px;text-align:left;cursor:pointer}
.g2gx-suggest button span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.g2gx-suggest button small{flex:0 0 auto;color:var(--muted-2);font-size:11px}
.g2gx-suggest button:hover,.g2gx-suggest button.marked{background:#1d2436;color:var(--text)}
.g2gx-suggest-note{padding:6px 10px;color:var(--muted-2);font-size:11.5px}
.g2gx-quick{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:0 0 8px}
.g2gx-quick>span{margin-right:4px;color:var(--muted-2);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}
.g2gx-quick>small{color:var(--muted-2);font-size:11px}
.g2gx-quick-game{height:28px;padding:0 10px;border:1px solid var(--border-soft);border-radius:8px;background:#151b29;color:#c7cfe2;font:inherit;font-size:12px;cursor:pointer}
.g2gx-quick-game:hover{border-color:#465171;color:var(--text)}
.g2gx-quick-game.bad{border-color:rgba(255,100,127,.35);color:#ffb3c0}
#g2gxPicked{margin-top:10px}
.g2gx-game-tools{display:flex;align-items:center;gap:8px;margin-left:auto}
.g2gx-game-tools .button{min-height:30px;padding:0 10px;font-size:12px}
.g2gx-unpick{width:28px;height:28px;border:1px solid var(--border-soft);border-radius:8px;background:transparent;color:var(--muted);font-size:16px;cursor:pointer}
.g2gx-unpick:hover{color:var(--text);border-color:#465171}
.g2gx-steps{display:grid;gap:10px}
.g2gx-step{display:grid;grid-template-columns:28px 1fr;gap:12px;padding:12px 14px;border:1px solid var(--border-soft);border-radius:12px;background:#0f141f}
.g2gx-step>b{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:rgba(117,101,244,.16);color:var(--purple-2);font-size:13px}
.g2gx-step>div{display:flex;flex-direction:column;gap:8px;min-width:0}
.g2gx-step>div>span{color:#c7cfe2;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.4px}
.g2gx-step small{color:var(--muted-2);font-size:11.5px;line-height:1.5}
.g2gx-step .button{align-self:flex-start;min-height:38px}
.g2gx-seg{display:flex;flex-wrap:wrap;gap:6px}
.g2gx-seg button{height:34px;padding:0 14px;border:1px solid var(--border);border-radius:9px;background:#151b29;color:#c7cfe2;font:inherit;font-size:13px;font-weight:650;cursor:pointer}
.g2gx-seg button[aria-pressed="true"]{border-color:#8677ff;background:rgba(117,101,244,.18);color:var(--text)}
.g2gx-seg button:disabled{opacity:.45;cursor:not-allowed}
.g2gx-create-picked{display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.g2gx-create-picked:empty{display:none}
.g2gx-create-picked select{height:34px;padding:0 10px;border:1px solid var(--border);border-radius:9px;background:#151a28;color:var(--text)}
@media(max-width:820px){.g2gx-game{flex-wrap:wrap}.g2gx-game-name{flex:1 1 100%}.g2gx-game-tools{margin-left:0}}
.g2gx-game-tools .text-button{white-space:nowrap}
.g2gx-step .g2gx-search{flex:0 0 auto;width:100%;max-width:560px}

/* Статус заказа FunPay видно с первого взгляда (19.10): полоса слева и крупная метка — ждёт
   подтверждения (жёлтый), подтверждён (зелёный), возврат (красный, строка приглушена). */
.order-card.st-paid{border-color:rgba(255,189,69,.32);background:linear-gradient(100deg,rgba(255,189,69,.07),#141927 40%);box-shadow:inset 4px 0 #ffbd45}
.order-card.st-closed{box-shadow:inset 4px 0 rgba(43,212,184,.85)}
.order-card.st-refunded{box-shadow:inset 4px 0 rgba(255,100,127,.75);opacity:.8}

/* Поддержка FunPay (19.10): список заявок и переписка, окно новой заявки. */
.support-workspace{display:grid;grid-template-columns:minmax(260px,340px) minmax(0,1fr);min-height:560px;overflow:hidden}
.support-list-col{display:flex;flex-direction:column;gap:10px;padding:14px;border-right:1px solid var(--border-soft);background:#111622;min-width:0}
.support-filters{display:grid;gap:8px}
.support-filters .select{width:100%;min-width:0}
.support-list{display:flex;flex-direction:column;gap:6px;overflow-y:auto;max-height:640px}
.support-row{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border:1px solid var(--border-soft);border-radius:11px;background:#151b29;color:inherit;font:inherit;text-align:left;cursor:pointer}
.support-row:hover{border-color:#3b4561}
.support-row.active{border-color:#8677ff;background:rgba(117,101,244,.12)}
.support-row-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px}
.support-row strong{font-size:13px;line-height:1.35}
.support-row small{color:var(--muted-2);font-size:11px}
.support-status{padding:2px 8px;border-radius:999px;font-size:10.5px;font-style:normal;font-weight:800;white-space:nowrap}
.support-status.done{color:#66e0c4;background:rgba(43,212,184,.12)}
.support-status.wait{color:#ffd078;background:rgba(255,189,69,.14)}
.support-status.work{color:#8ce4f7;background:rgba(54,202,239,.12)}
.support-status.alarm{color:#ff91a3;background:rgba(255,100,127,.12)}
.support-synced{color:var(--muted-2);font-size:11px}
.support-empty{margin:12px 0;color:var(--muted-2);font-size:12.5px}
.support-empty.error{color:#ff91a3}
.support-thread{display:flex;flex-direction:column;gap:12px;padding:16px 18px;min-width:0}
.support-thread-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.support-thread-head h2{margin:0;font-size:18px}
.support-thread-head small{color:var(--muted);font-size:12px}
.support-thread-tools{display:flex;gap:8px;flex-wrap:wrap}
.support-thread-tools .button{min-height:34px}
.support-facts{display:flex;flex-wrap:wrap;gap:6px 18px;margin:0;padding:10px 12px;border:1px solid var(--border-soft);border-radius:11px;background:#0f141f}
.support-facts div{min-width:0}
.support-facts dt{color:var(--muted-2);font-size:10.5px}
.support-facts dd{margin:2px 0 0;font-size:12.5px}
.support-comments{display:flex;flex-direction:column;gap:10px;max-height:460px;overflow-y:auto;padding-right:4px}
.support-msg{max-width:min(640px,88%);padding:10px 13px;border-radius:13px;font-size:13px;line-height:1.5}
.support-msg header{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}
.support-msg header small{color:var(--muted-2);font-size:10.5px}
.support-msg p{margin:0;overflow-wrap:anywhere}
.support-msg.mine{align-self:flex-end;background:rgba(117,101,244,.16);border:1px solid rgba(134,119,255,.3)}
.support-msg.from-support{align-self:flex-start;background:#151b29;border:1px solid var(--border-soft)}
.support-files{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.support-files a,.support-file{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:8px;background:rgba(143,155,184,.1);color:#c7cfe2;font-size:11.5px;text-decoration:none}
.support-file.busy{opacity:.6}
.support-file button{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:14px;line-height:1}
.support-reply{display:flex;flex-direction:column;gap:8px}
.support-reply textarea,.support-new-body textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:11px;background:#101420;color:var(--text);font:inherit;font-size:13px;resize:vertical}
.support-reply-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.support-reply-bar .button.primary{margin-left:auto}
.support-attach{cursor:pointer}
.support-closed-note{margin:0;padding:10px 12px;border-radius:11px;background:rgba(143,155,184,.08);color:var(--muted);font-size:12.5px}
.support-new-modal{width:min(640px,calc(100vw - 24px))}
.support-new-body{display:flex;flex-direction:column;gap:12px;overflow-y:auto}
.support-new-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.support-new-fields{display:flex;flex-direction:column;gap:10px}
.support-new-fields .field input,.support-new-fields .field select,.support-new-row select{width:100%}
.support-radio{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0;padding:0;border:0}
.support-radio legend{width:100%;margin-bottom:4px;color:var(--muted);font-size:12px}
.support-radio label{display:inline-flex;align-items:center;gap:6px;font-size:13px;cursor:pointer}
.support-req{color:#ff91a3}
.support-notice{padding:10px 12px;border:1px solid rgba(255,189,69,.3);border-radius:11px;background:rgba(255,189,69,.07);color:#ffd99a;font-size:12px;line-height:1.5}
.support-attach-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rv-complain{margin-left:auto;font-size:11px}
@media(max-width:820px){.support-workspace{grid-template-columns:1fr}.support-list-col{border-right:0;border-bottom:1px solid var(--border-soft)}.support-list{max-height:320px}.support-new-row{grid-template-columns:1fr}.support-msg{max-width:100%}}

/* ── Состояние заказа — одна фишка во всех местах (19.10, Larpbase: «подписи… одно в одном стиле,
   другое в другом»). Точка вместо эмодзи: эмодзи рисуются цветной картинкой своего размера и
   спорят с текстом, а у Windows 10 половины из них нет вовсе. ── */
.status-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px 3px 8px;border-radius:999px;color:#aeb8ce;background:rgba(143,155,184,.12);font-size:10.5px;font-weight:750;line-height:1.35;white-space:nowrap}
.status-chip::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:currentColor}
.status-chip.st-paid{color:#ffd078;background:rgba(255,189,69,.13)}
.status-chip.st-closed{color:#66e0c4;background:rgba(43,212,184,.12)}
.status-chip.st-refunded{color:#ff91a3;background:rgba(255,100,127,.12)}

/* Сумма заказа и подписи под ней: сумма крупно, подписи — строками мелкого текста одного вида,
   фишка — одна, состояние. Раньше под суммой стояли пилюли трёх форм и размеров. */
.order-card .order-summary{display:flex;flex-direction:column;align-items:flex-end;gap:4px;text-align:right}
.order-card .order-summary>.order-amount{font-size:15px;line-height:1.15}
.order-note{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:0 5px;max-width:100%;color:var(--muted-2);font-size:10.5px;font-weight:600;line-height:1.35}
.order-note i{font-style:normal;opacity:.55}
.order-note.temporary{color:#ffd27a}
.order-note.share{color:var(--teal)}
.order-card .order-summary>.status-chip{margin-top:3px}
/* Колонки строки заказа сжимаются (minmax(0,…)), а не выдавливают кнопки за край карточки: при
   ширине раздела ~900 px шесть колонок с жёсткими минимумами (816 px + зазоры) не помещались, и
   «Чат»/«↗» висели поверх рамки. Колонка суммы держит фишку «Ждёт подтверждения» целиком. */
@media(min-width:1101px){.order-card{grid-template-columns:minmax(0,.72fr) minmax(0,1.45fr) minmax(0,.6fr) minmax(0,.6fr) minmax(136px,.66fr) 130px}}
@media(min-width:821px) and (max-width:1100px){.order-card{grid-template-columns:minmax(0,.7fr) minmax(0,1.4fr) minmax(0,.6fr) minmax(136px,.66fr) 130px}}
.customer-order-list small.customer-order-state{display:flex;align-items:center;justify-content:flex-end;gap:6px;max-width:none;overflow:visible}

/* ── Поддержка FunPay: плагин (19.10) ── */
.support-tabs{display:inline-flex;gap:4px;margin:0 0 14px;padding:4px;border:1px solid var(--border-soft);border-radius:12px;background:#111622}
.support-tabs button{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 14px;border:0;border-radius:9px;background:transparent;color:#8490aa;font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.support-tabs button.active{color:#fff;background:#222941;box-shadow:0 4px 12px rgba(0,0,0,.16)}
.support-auto-badge{padding:1px 7px;border-radius:999px;background:rgba(143,155,184,.14);color:var(--muted);font-size:10px;font-style:normal}
.support-auto-badge.on{background:rgba(43,212,184,.14);color:#66e0c4}
.support-row-head{justify-content:flex-start}
.support-row-head>em{margin-left:auto}
.support-by{padding:1px 7px;border-radius:999px;background:rgba(134,119,255,.14);color:#b9b0ff;font-size:10px;font-style:normal;font-weight:700;white-space:nowrap}
.support-by.auto{background:rgba(54,202,239,.12);color:#8ce4f7}
.support-row small.support-row-topic{color:#9ba7c0}
.support-order-card{display:flex;flex-direction:column;gap:7px}
.support-order-card>small{color:var(--muted-2);font-size:10.5px;letter-spacing:.4px;text-transform:uppercase}
.support-order-card>.text-button{align-self:flex-start}

/* Заказ карточкой — в окне заявки и в шапке заявки: лот крупно, номер мелко. */
.so-order{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:11px;width:100%;padding:10px 12px;border:1px solid var(--border-soft);border-radius:12px;background:#151b29;color:inherit;font:inherit;text-align:left}
button.so-order{cursor:pointer;transition:border-color .15s,background .15s}
button.so-order:hover{border-color:#3b4561;background:#171d2c}
.so-order.picked{border-color:rgba(134,119,255,.55);background:rgba(117,101,244,.1)}
.so-order-avatar{width:34px;height:34px;border-radius:var(--avatar-radius);object-fit:cover}
.so-order-main{min-width:0;display:flex;flex-direction:column;gap:3px}
.so-order-main strong{overflow:hidden;font-size:13px;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}
.so-order-main small{overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}
.so-order-main small.so-order-ref{color:var(--muted-2);font-size:10.5px}
.so-order-side{display:flex;flex-direction:column;align-items:flex-end;gap:5px}
.so-order-side b{color:var(--amber);font-size:13px;white-space:nowrap}
.so-ticket{color:#b9b0ff;font-size:10.5px;font-style:normal;white-space:nowrap}
.support-order-modal{width:min(680px,calc(100vw - 24px))}
.support-order-body{display:flex;flex-direction:column;gap:16px;overflow-y:auto}
.so-step h3{display:flex;align-items:center;gap:8px;margin:0 0 9px;font-size:13px}
.so-step h3>b{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:rgba(117,101,244,.2);color:#c9c2ff;font-size:11px}
.so-step h3>small{color:var(--muted);font-size:11.5px;font-weight:500}
.so-list{display:flex;flex-direction:column;gap:12px;max-height:310px;overflow-y:auto;padding-right:4px}
.so-group{display:flex;flex-direction:column;gap:6px}
.so-group>small{color:var(--muted-2);font-size:10.5px;letter-spacing:.4px;text-transform:uppercase}
.so-change{margin-top:7px}
.so-topics{display:flex;flex-wrap:wrap;gap:6px}
.so-topic{min-height:32px;padding:0 13px;border:1px solid var(--border);border-radius:999px;background:#151b29;color:#c7cfe2;font:inherit;font-size:12px;cursor:pointer}
.so-topic:hover{border-color:#4a5577}
.so-topic.active{border-color:#8677ff;background:rgba(117,101,244,.18);color:#fff}
#supportOrderNotice:not(:empty){margin-top:9px}
.support-order-body textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:11px;background:#101420;color:var(--text);font:inherit;font-size:13px;resize:vertical}
.support-order-body .support-attach-row{margin-top:8px}
.customer-support-button{min-height:32px;padding:0 12px;font-size:11.5px}

/* Автоподача. */
.support-auto{display:flex;flex-direction:column;gap:12px}
.sa-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:start}
/* Правила — во всю ширину: строка правила это игра, направление, срок и «не подавать», и в треть
   экрана она не помещается (замер 19.10: 270 px на пять полей). */
.sa-grid>.sa-scope-card{grid-column:1/-1}
.sa-card{display:flex;flex-direction:column;gap:12px;padding:16px 18px}
.sa-card h3{margin:0;font-size:14px}
.sa-card h3 small{margin-left:6px;color:var(--muted);font-size:11.5px;font-weight:500}
.sa-note{margin:0;color:var(--muted);font-size:11.5px;line-height:1.5}
.sa-note code{padding:1px 5px;border-radius:5px;background:rgba(143,155,184,.12);color:#c7cfe2;font-size:11px}
.sa-toggle>span b{font-size:13.5px}
.sa-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sa-fields .field small{color:var(--muted-2);font-size:10.5px}
.sa-fields input[type=number]{width:100%}
.sa-hours{display:flex;gap:6px;min-width:0}
.sa-hours input{flex:1 1 64px;min-width:56px;width:auto;min-height:38px;padding:0 10px;border:1px solid var(--border);border-radius:10px;background:#101420;color:var(--text);font:inherit;font-size:13px}
.sa-hours>.picker,.sa-hours select{flex:0 0 88px;min-width:0;width:88px}
.sa-rules{display:flex;flex-direction:column;gap:7px}
.sa-rule{display:grid;grid-template-columns:minmax(150px,1.4fr) minmax(130px,1fr) minmax(150px,190px) auto 28px;grid-template-areas:"game part hours check remove";align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border-soft);border-radius:11px;background:#121725}
.sa-rule>:nth-child(1){grid-area:game}
.sa-rule>:nth-child(2){grid-area:part}
.sa-rule>:nth-child(3){grid-area:hours}
.sa-rule>:nth-child(4){grid-area:check}
.sa-rule>:nth-child(5){grid-area:remove}
.sa-rule>.picker,.sa-rule select{min-width:0;width:100%}
.sa-rule.off{opacity:.75}
.sa-rule-off{color:#ff91a3;font-size:11.5px;font-weight:700;white-space:nowrap}
.sa-rule-check{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-size:11px;white-space:nowrap;cursor:pointer}
.sa-rule-remove{width:28px;height:28px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:16px;cursor:pointer}
.sa-rule-remove:hover{background:rgba(255,100,127,.12);color:#ff91a3}
.sa-card textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:11px;background:#101420;color:var(--text);font:inherit;font-size:13px;resize:vertical}
.sa-save{display:flex;align-items:center;justify-content:flex-end;gap:10px}
.sa-queue-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap}
.sa-queue-head>small{color:var(--muted-2);font-size:11px}
.sa-due-note{margin:0;padding:9px 12px;border:1px solid rgba(255,189,69,.3);border-radius:10px;background:rgba(255,189,69,.07);color:#ffd99a;font-size:12px}
.sa-q-list{display:flex;flex-direction:column;gap:6px}
.sa-q{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(120px,.55fr) minmax(180px,.9fr) auto;align-items:center;gap:12px;padding:9px 12px;border:1px solid var(--border-soft);border-radius:11px;background:#141927}
.sa-q.st-due{border-color:rgba(255,189,69,.3)}
.sa-q.st-skip,.sa-q.st-failed{border-color:rgba(255,100,127,.25)}
.sa-q-order{min-width:0;display:flex;flex-direction:column;gap:3px}
.sa-q-order strong{overflow:hidden;font-size:12.5px;text-overflow:ellipsis;white-space:nowrap}
.sa-q-order small,.sa-q-when small,.sa-q-state small{color:var(--muted-2);font-size:10.5px}
.sa-q-when{display:flex;flex-direction:column;gap:2px}
.sa-q-when b{font-size:12px;font-weight:650}
.sa-q-state{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
.sa-q-state>small{flex-basis:100%;line-height:1.4}
@media(max-width:820px){
  .sa-fields{grid-template-columns:1fr}
  .sa-grid{grid-template-columns:1fr}
  .sa-rule{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 28px;grid-template-areas:"game part remove" "hours check check"}
  .sa-q{grid-template-columns:1fr;gap:6px}
  .so-order{grid-template-columns:30px minmax(0,1fr);grid-template-areas:"face main" "side side"}
  .so-order-avatar{grid-area:face;width:30px;height:30px}
  .so-order-main{grid-area:main}
  .so-order-side{grid-area:side;flex-direction:row;align-items:center;justify-content:flex-start;flex-wrap:wrap}
}

/* ── Автоподача, 20.10: «где подавать» деревом игр и направлений, готовые тексты, ссылки из очереди ── */
.sa-scope-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.sa-mode{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--border-soft);border-radius:11px;background:#111622}
.sa-mode button{min-height:32px;padding:0 13px;border:0;border-radius:8px;background:transparent;color:#8490aa;font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.sa-mode button.active{color:#fff;background:#222941;box-shadow:0 4px 12px rgba(0,0,0,.16)}
.sa-scope-search{max-width:420px}
.sa-tree{display:flex;flex-direction:column;gap:8px}
.sa-game{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border:1px solid var(--border-soft);border-radius:12px;background:#121725;transition:border-color .15s,background .15s}
.sa-game.on{border-color:rgba(43,212,184,.28);background:linear-gradient(100deg,rgba(43,212,184,.05),#121725 45%)}
.sa-game-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sa-game-toggle,.sa-part-toggle{display:inline-flex;align-items:center;gap:9px;min-width:0;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}
.sa-game-toggle b{font-size:13.5px}
.sa-game-toggle em,.sa-part-toggle em{padding:1px 7px;border-radius:999px;background:rgba(255,189,69,.13);color:#ffd078;font-size:10.5px;font-style:normal;font-weight:700;white-space:nowrap}
.sa-game:not(.on) .sa-game-toggle b{color:var(--muted)}
.sa-check-box{position:relative;flex:none;width:18px;height:18px;border:1.5px solid #4a5577;border-radius:5px;background:#0f131d;transition:.15s}
.sa-check-box.on{border-color:#2bd4b8;background:#2bd4b8}
.sa-check-box.on::after{content:"";position:absolute;left:5px;top:1px;width:5px;height:10px;border:solid #0b1a17;border-width:0 2px 2px 0;transform:rotate(45deg)}
.sa-parts{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding-left:27px}
.sa-part{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border:1px solid var(--border-soft);border-radius:999px;background:#151b29}
.sa-part.on{border-color:rgba(43,212,184,.3)}
.sa-part:not(.on) .sa-part-toggle span{color:var(--muted)}
.sa-part.own{box-shadow:inset 0 0 0 1px rgba(134,119,255,.35)}
.sa-part-toggle{font-size:12px}
.sa-part .sa-check-box{width:15px;height:15px;border-radius:4px}
.sa-part .sa-check-box.on::after{left:4px;top:0;width:4px;height:9px}
.sa-part-rest{color:var(--muted-2);font-size:10.5px}
.sa-hours-chip{display:inline-flex;align-items:center;border-radius:999px;background:rgba(143,155,184,.1)}
.sa-hours-chip button{padding:2px 8px;border:0;border-radius:999px;background:transparent;color:var(--muted);font:inherit;font-size:11px;cursor:pointer;white-space:nowrap}
.sa-hours-chip button:hover{color:#fff}
.sa-hours-chip.from-own{background:rgba(134,119,255,.18)}
.sa-hours-chip.from-own button{color:#cfc8ff;font-weight:700}
.sa-hours-chip button+button{padding-left:0;font-size:13px}
.sa-clear{align-self:flex-start}
.sa-presets{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.sa-preset{display:flex;flex-direction:column;gap:5px;padding:10px 12px;border:1px solid var(--border-soft);border-radius:11px;background:#151b29;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}
.sa-preset:hover{border-color:#3b4561}
.sa-preset.active{border-color:#8677ff;background:rgba(117,101,244,.12)}
.sa-preset b{font-size:12.5px}
.sa-preset span{color:var(--muted);font-size:11.5px;line-height:1.45}
.sa-preset code{padding:0 4px;border-radius:4px;background:rgba(143,155,184,.14);color:#c7cfe2;font-size:10.5px}
.sa-q-title{display:block;max-width:100%;overflow:hidden;padding:0;border:0;background:transparent;color:inherit;font:inherit;font-size:12.5px;font-weight:700;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.sa-q-title:hover{color:#b9b0ff;text-decoration:underline}
.sa-q-actions{display:flex;gap:6px}
.sa-q-link{min-height:30px;padding:0 10px;border:1px solid #313a53;border-radius:9px;background:#191f2e;color:#c7cfe2;font:inherit;font-size:11px;white-space:nowrap;cursor:pointer}
.sa-q-link:hover{border-color:#4cabc4;color:#fff}
@media(max-width:820px){
  .sa-presets{grid-template-columns:1fr}
  .sa-parts{padding-left:0}
  .sa-q-actions{justify-content:flex-start}
}

/* Скрыть переписку — админу короткой строкой (20.10): стоит у каждой переписки с заказом в работе. */
.claim-row.claim-hide.compact{padding-top:6px;padding-bottom:6px}
.claim-row.claim-hide.compact .claim-text{color:var(--muted);font-size:12px}
.claim-row.claim-hide.compact .claim-hide-button{min-height:28px;padding:0 12px;font-size:12px}

/* Абзацы в окне подтверждения — переносами строк текста (20.10: системные confirm() заменены окном кабинета). */
.confirm-modal p{white-space:pre-line}

/* Исполнитель заказа одной строкой (28.10): кто, доля, маленькое действие справа, «почему» свёрнуто. */
.od-staff{gap:4px}
.od-exec-line{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-height:28px}
.od-exec-label{color:var(--muted);font-size:12px}
.od-exec-name{font-size:13.5px;color:#eef1fb}
.od-exec-go{margin-left:auto;padding:5px 12px;border-radius:9px;border:1px solid var(--border-soft);background:transparent;color:#cfd5ea;font:inherit;font-size:12px;font-weight:600;cursor:pointer}
.od-exec-go:hover{border-color:rgba(117,101,244,.55);color:#fff;background:rgba(117,101,244,.1)}
.od-exec-more summary{cursor:pointer;color:var(--muted-2);font-size:11.5px;width:max-content}
.od-exec-more p{margin:6px 0 0;color:#c3cadb;font-size:12px;line-height:1.5}
.od-exec-more ul{margin:6px 0 0;padding-left:18px;color:var(--muted);font-size:11.5px;line-height:1.5}

/* Полоса шагов выдачи G2G (28.10): что сделано, что сейчас, что дальше. */
.g2g-flow{display:flex;flex-direction:column;gap:10px;padding:13px 14px;border:1px solid rgba(117,101,244,.38);border-radius:13px;background:rgba(117,101,244,.07)}
.g2g-flow.finished{border-color:rgba(43,212,184,.38);background:rgba(43,212,184,.06)}
.g2g-flow ol{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.g2g-flow li{display:flex;align-items:center;gap:6px;padding:4px 10px 4px 4px;border-radius:99px;background:#151a28;color:var(--muted);font-size:12px}
.g2g-flow li b{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#232a3d;color:#aab2c8;font-size:11px}
.g2g-flow li.done{color:#9fe7d6}
.g2g-flow li.done b{background:rgba(43,212,184,.18);color:#66e0c4}
.g2g-flow li.now{color:#fff;background:rgba(117,101,244,.22);box-shadow:inset 0 0 0 1px rgba(117,101,244,.6)}
.g2g-flow li.now b{background:#7565f4;color:#fff}
.g2g-flow p{margin:0;color:#d6dbea;font-size:12.5px;line-height:1.5}
.g2g-flow-focus{box-shadow:0 0 0 2px rgba(117,101,244,.6)}

/* ── Деньги заказа цветом (28.10) ─────────────────────────────────────────────────────────────
   Тон — по «где деньги», а не по стадии работы: не оплачен (пунктир, песочный), на проверке
   (сиреневый), оплачен (зелёный), спор (янтарный), получены (бирюзовый, тише), вернулись
   (красный), брошен (серый, приглушён). Полоса слева читается и в своём фиолетовом пузыре. */
.g2g-order-state.unpaid{color:#d9c07a;background:rgba(217,192,122,.1)}
.g2g-order-state.refund{color:#ff8a9e;background:rgba(255,100,127,.12)}
.chat-message-order{border-left-width:3px}
.chat-message-order.pay-unpaid{border-color:rgba(217,192,122,.55);border-style:dashed;border-left-style:solid}
.chat-message-order.pay-checking{border-color:rgba(167,139,250,.6)}
.chat-message-order.pay-paid{border-color:rgba(43,212,184,.6)}
.chat-message-order.pay-dispute{border-color:rgba(255,189,69,.65)}
.chat-message-order.pay-closed{border-color:rgba(43,212,184,.32)}
.chat-message-order.pay-refund{border-color:rgba(255,100,127,.55)}
.chat-message-order.pay-void{border-color:rgba(255,255,255,.16);opacity:.72}
.chat-message-order.pay-unpaid .chat-message-lot-head{background:rgba(217,192,122,.07)}
.chat-message-order.pay-checking .chat-message-lot-head{background:rgba(167,139,250,.08)}
.chat-message-order.pay-paid .chat-message-lot-head{background:rgba(43,212,184,.08)}
.chat-message-order.pay-dispute .chat-message-lot-head{background:rgba(255,189,69,.08)}
.chat-message-order.pay-refund .chat-message-lot-head{background:rgba(255,100,127,.08)}
/* Плашка денег в шапке карточки. */
.chat-order-pay{flex:0 0 auto;padding:2px 6px;border-radius:6px;font-size:8px;font-weight:800;letter-spacing:.3px;text-transform:uppercase}
.chat-order-pay.paid{color:#5fe3c7;background:rgba(43,212,184,.14)}
.chat-order-pay.dispute{color:var(--amber);background:rgba(255,189,69,.14)}
.chat-order-pay.closed{color:#8fd9c8;background:rgba(43,212,184,.1)}
.chat-order-pay.refund{color:#ff8a9e;background:rgba(255,100,127,.14)}
/* Цвет стадии в шапке — сильнее общего «в своём пузыре подписи белые»: иначе в нашем сообщении все
   стадии выходили одного белого цвета, и не оплаченный не отличался от оплаченного. */
.chat-message-order .chat-message-lot-head small.g2g-order-state.alarm{color:var(--amber)}
.chat-message-order .chat-message-lot-head small.g2g-order-state.work{color:var(--cyan)}
.chat-message-order .chat-message-lot-head small.g2g-order-state.wait{color:#b9adff}
.chat-message-order .chat-message-lot-head small.g2g-order-state.done{color:var(--teal)}
.chat-message-order .chat-message-lot-head small.g2g-order-state.sent{color:#6ea8ff}
.chat-message-order .chat-message-lot-head small.g2g-order-state.dead{color:var(--muted)}
.chat-message-order .chat-message-lot-head small.g2g-order-state.unpaid{color:#d9c07a}
.chat-message-order .chat-message-lot-head small.g2g-order-state.refund{color:#ff8a9e}
/* В своём пузыре фон фиолетовый — цветной подписи и плашке нужна тёмная подложка. */
.chat-message.outgoing .chat-message-order .chat-message-lot-head small.g2g-order-state,
.chat-message.outgoing .chat-message-order .chat-order-pay{background:rgba(12,16,26,.62)}
.chat-message.outgoing .chat-message-order.pay-unpaid{border-color:rgba(242,214,140,.75)}
.chat-message.outgoing .chat-message-order.pay-checking{border-color:rgba(200,185,255,.8)}
.chat-message.outgoing .chat-message-order.pay-paid{border-color:rgba(95,227,199,.85)}
.chat-message.outgoing .chat-message-order.pay-dispute{border-color:rgba(255,189,69,.85)}
.chat-message.outgoing .chat-message-order.pay-closed{border-color:rgba(95,227,199,.5)}
.chat-message.outgoing .chat-message-order.pay-refund{border-color:rgba(255,138,158,.8)}
/* Полоса слева — плотным цветом: полупрозрачная рамка на фиолетовом пузыре тонула. */
.chat-message-order.pay-unpaid,.chat-message.outgoing .chat-message-order.pay-unpaid{border-left-color:#d9c07a}
.chat-message-order.pay-checking,.chat-message.outgoing .chat-message-order.pay-checking{border-left-color:#b9a6ff}
.chat-message-order.pay-paid,.chat-message.outgoing .chat-message-order.pay-paid{border-left-color:#2bd4b8}
.chat-message-order.pay-dispute,.chat-message.outgoing .chat-message-order.pay-dispute{border-left-color:#ffbd45}
.chat-message-order.pay-closed,.chat-message.outgoing .chat-message-order.pay-closed{border-left-color:rgba(43,212,184,.6)}
.chat-message-order.pay-refund,.chat-message.outgoing .chat-message-order.pay-refund{border-left-color:#ff647f}
.chat-message-order.pay-void,.chat-message.outgoing .chat-message-order.pay-void{border-left-color:rgba(255,255,255,.3)}
.chat-message-order{border-left-width:4px}

/* ── PlayerAuctions (28.10): продажи строками; письма — в общем разделе «Чаты» ─────────────────────── */
.pa-updated{margin-left:8px;color:var(--muted-2);font-size:11.5px}
.pa-orders{display:flex;flex-direction:column;gap:8px}
.pa-order-row{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--border-soft);border-radius:12px;background:#121725}
.pa-order-row.marked{border-color:rgba(255,189,69,.7);box-shadow:0 0 0 2px rgba(255,189,69,.25)}
.pa-order-main{flex:1;min-width:0}
.pa-order-main strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}
.pa-order-price{text-align:right}
.pa-order-price strong{display:block;font-size:15px}
.pa-order-price small{color:var(--muted-2);font-size:11px}
@media (max-width:760px){
  .pa-order-row{flex-wrap:wrap}
}

/* Подключение PlayerAuctions — шаги по порядку (28.10). */
.pa-connect .pa-steps{margin:6px 0 10px;padding-left:20px;display:flex;flex-direction:column;gap:7px;color:#d6dbea;font-size:12.5px;line-height:1.5}
.pa-connect .pa-steps li::marker{color:#9b8cff;font-weight:700}
.pa-connect .pa-steps small{color:var(--muted)}
.pa-connect .pa-open{display:inline-flex;padding:4px 10px;font-size:12px;margin-right:4px}
.pa-connect kbd{padding:1px 6px;border:1px solid var(--border-soft);border-bottom-width:2px;border-radius:5px;background:#1a2031;font:600 11px/1.4 inherit;color:#eef1fb}
.pa-cookie-input{width:100%;min-height:64px;padding:9px 10px;border:1px solid var(--border-soft);border-radius:10px;background:#0c1019;color:var(--text);font:12px/1.4 ui-monospace,Consolas,monospace;resize:vertical}
.pa-cookie-hint{display:block;margin-top:5px;color:var(--muted-2)}
.pa-cookie-hint.ok{color:#5fe3c7}
.pa-cookie-hint.bad{color:#ff8a9e}

/* Письмо из заказа PlayerAuctions (28.10). */
.pa-write{padding:6px 11px;font-size:12px;white-space:nowrap}

/* Карточка заказа PlayerAuctions (28.10). */
.pa-order-row{cursor:pointer}
.pa-order-row:hover{border-color:rgba(117,101,244,.45)}
.pa-timer{padding:10px 13px;border:1px solid rgba(255,189,69,.45);border-radius:12px;background:rgba(255,189,69,.07);color:#ffd789;font-size:12.5px}
.pa-deliver{flex-wrap:wrap}
.pa-proofs{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.pa-proof{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border-radius:8px;background:#1a2031;font-size:11.5px}
.pa-proof button{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:14px}
.pa-copy{border:0;background:transparent;color:#9b8cff;cursor:pointer;font-size:13px;padding:0 2px}
.pa-cancel{padding:10px 13px;border:1px solid rgba(255,100,127,.3);border-radius:12px;background:rgba(255,100,127,.04)}
.pa-cancel summary{cursor:pointer;color:#ff8a9e;font-size:12.5px;font-weight:600}
.pa-cancel #paCancelForm{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.pa-deliver{display:flex;flex-direction:column;gap:8px;padding:13px 14px;border:1px solid var(--border-soft);border-radius:12px;background:#131824}
.pa-deliver strong{font-size:13.5px}
.pa-deliver small{color:var(--muted);font-size:12px;line-height:1.5}
.pa-deliver-row{display:flex;flex-wrap:wrap;gap:8px}
.pa-deliver kbd{padding:1px 6px;border:1px solid var(--border-soft);border-bottom-width:2px;border-radius:5px;background:#1a2031;font-size:11px;color:#eef1fb}
.pa-connect .pa-warn{margin:4px 0 6px;padding:9px 11px;border:1px solid rgba(255,189,69,.45);border-radius:10px;background:rgba(255,189,69,.07);color:#ffd789;font-size:12.5px;line-height:1.5}

/* ── несколько открытых заказов у человека (v657) ───────────────────────────────────────── */
/* Вкладки над плашкой заказа: номер, название, деньги. Полоса прокручивается вбок, а не растёт
   вниз — у покупателя бывает пять-шесть заказов, и переписка не должна уезжать под ними. */
.thread-order-tabs{flex:0 0 auto;display:flex;align-items:center;gap:5px;margin:9px 13px -3px;padding:4px;border:1px solid rgba(54,202,239,.18);border-radius:11px;background:#111622;overflow-x:auto;scrollbar-width:none}
.thread-order-tabs::-webkit-scrollbar{display:none}
.thread-order-tabs-label{flex:0 0 auto;padding:0 6px 0 4px;color:#72d7ef;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap}
.thread-order-tab{flex:0 0 auto;max-width:190px;min-height:30px;display:flex;align-items:center;gap:6px;padding:0 10px;border:1px solid transparent;border-radius:8px;background:transparent;color:#8f9bb8;font-size:11px;cursor:pointer;transition:.15s}
.thread-order-tab:hover{color:#fff;background:#181d2b}
.thread-order-tab.on{color:#fff;border-color:rgba(54,202,239,.4);background:linear-gradient(90deg,rgba(54,202,239,.16),rgba(117,101,244,.08))}
.thread-order-tab span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:inherit;opacity:.8}
.thread-order-tab em{flex:0 0 auto;font-style:normal;font-weight:700;color:var(--amber)}
@media(max-width:820px){.thread-order-tabs{margin:7px 9px -2px}.thread-order-tab{max-width:160px}}
/* Полоса закрепления: от двух кнопок текст занимает строку целиком, кнопки — своим рядом под ним.
   Раньше четыре «Скрыть · #…» стояли в строке текста и сжимали его до слова в строке. */
.chat-claim-bar .claim-row .claim-text{flex:1 1 240px}
.chat-claim-bar .claim-row.multi .claim-text{flex-basis:100%}
.chat-claim-bar .claim-buttons{display:flex;flex-wrap:wrap;align-items:center;gap:6px;width:100%}
.chat-thread-error.pa-draft{border-color:rgba(43,212,184,.35);background:rgba(43,212,184,.06)}

/* ── Лоты PlayerAuctions (v659): вкладки площадки, очередь создания ─────────────────────────── */
.pa-heading-actions{display:flex;flex:0 0 auto;gap:8px}
.pa-offer-tabs{margin:0 0 12px}
.pa-offer-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px}
.pa-offer-actions .text-button.danger{color:#ff8a9e}
.pa-queue{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid rgba(54,202,239,.3);border-radius:12px;background:rgba(54,202,239,.06)}
.pa-queue.paused{border-color:rgba(255,189,69,.45);background:rgba(255,189,69,.07)}
.pa-queue strong{display:block;font-size:13.5px}
.pa-queue small{color:var(--muted);font-size:12px}
.pa-draft-error{display:block;margin-top:5px;color:#ff8a9e;font-size:12px}
.pa-draft-body{display:grid;gap:12px}
.pa-draft-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}
.pa-draft-grid .field.full{grid-column:1/-1}
.pa-draft-body textarea{width:100%;resize:vertical}
.pa-draft-body .pa-warn{margin:0;padding:9px 11px;border:1px solid rgba(255,189,69,.45);border-radius:10px;background:rgba(255,189,69,.07);color:#ffd789;font-size:12.5px;line-height:1.5}
.pa-order-review{margin-top:12px}
.pa-order-review:empty{display:none}
.pa-order-review h4{margin:0 0 8px;font-size:13px;color:var(--muted)}
@media (max-width:760px){.pa-heading-actions{flex-wrap:wrap}.pa-draft-grid{grid-template-columns:1fr}.pa-queue{flex-wrap:wrap}.pa-offer-actions{justify-content:flex-start}}

/* ── Заказ G2G: что вписал покупатель (ник персонажа) и кнопка «Открыть заказ» в переписке (v662) ── */
.g2g-buyer-input{display:grid;gap:6px;margin:12px 0;padding:11px 13px;border:1px solid rgba(43,212,184,.4);border-radius:12px;background:rgba(43,212,184,.07)}
.g2g-buyer-input>small{color:#7fe3d0;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}
.g2g-buyer-field{display:flex;align-items:center;gap:10px;min-width:0}
.g2g-buyer-field span{flex:0 0 auto;color:var(--muted);font-size:12.5px}
.g2g-buyer-field strong{min-width:0;font-size:17px;overflow-wrap:anywhere}
.chat-order-open{display:block;width:100%;margin-top:9px;padding:7px 10px;border:1px solid rgba(117,101,244,.5);border-radius:9px;background:rgba(117,101,244,.14);color:#e6e1ff;font-size:12.5px;font-weight:700;cursor:pointer;text-align:center}
.chat-order-open:hover{background:rgba(117,101,244,.26);border-color:#7565f4}

/* ── Адреса кабинета и самопереключение (v662) ───────────────────────────────────────────────── */
.notification-channel-icon.route{background:rgba(54,202,239,.16);color:#72d7ef}
.route-list{display:grid;gap:8px}
.route-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border-soft);border-radius:11px;background:#121826}
.route-row>div{flex:1;min-width:0}
.route-row strong{display:block;font-size:13.5px;overflow-wrap:anywhere}
.route-row small{color:var(--muted);font-size:12px}
.route-state{flex:0 0 auto;padding:3px 9px;border-radius:999px;font-size:11.5px;font-weight:700;background:rgba(143,155,184,.14);color:#c4cbe0}
.route-state.ok{background:rgba(43,212,184,.14);color:#7fe3d0}
.route-state.warn{background:rgba(255,170,40,.16);color:#ffc76b}
.route-note{margin:4px 0 0;color:var(--muted);font-size:12.5px;line-height:1.5}
#routeDialog .route-list{margin-top:14px}
#routeDialog .modal-actions{margin-top:18px}
@media (max-width:560px){.route-row{flex-wrap:wrap}.route-row .button{width:100%}}

/* ── Вход с телефона: QR и код (v665) ──────────────────────────────────────────────────────── */
.login-phone{display:grid;grid-template-columns:150px minmax(0,1fr);gap:14px;align-items:start;margin-top:12px;padding:12px;border:1px solid rgba(117,101,244,.35);border-radius:14px;background:rgba(117,101,244,.06);text-align:left}
.login-phone-qr{width:150px;border-radius:10px;overflow:hidden;background:#fff}
.login-phone-qr .qr-svg{display:block;width:100%;height:auto}
.login-phone-copy{min-width:0;font-size:12.5px;line-height:1.5;color:var(--muted)}
.login-phone-copy strong{display:block;margin-bottom:4px;color:var(--text);font-size:13.5px}
.login-phone-copy ol{margin:0 0 6px;padding-left:18px}
.login-phone-copy li{margin:3px 0}
.login-phone-copy small{color:var(--muted-2);font-size:11.5px}
.login-code{display:inline-block;margin:4px 0 0;padding:4px 10px;border:1px solid rgba(43,212,184,.5);border-radius:8px;background:rgba(43,212,184,.1);color:#bff5ea;font:700 17px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:2px;cursor:copy}
@media (max-width:480px){.login-phone{grid-template-columns:1fr}.login-phone-qr{width:170px;margin:0 auto}}
