/* АВТОГЕНЕРАЦИЯ extract_inline_styles.py — вынос статичных inline-style.
   Не редактировать вручную; правь источник и перегенери. */
.s-015a5e7f { display:flex; align-items:center; gap:8px; }
.s-0466783d { width:100%; }
.s-05c46238 { font-size:.82rem; color:var(--muted); margin-top:2px; }
.s-06029b4c { display:flex; flex-wrap:wrap; align-items:flex-end; gap:10px; margin-top:10px; }
.s-064028e7 { color:#64748b; }
.s-068a8ddc { grid-column:1/-1; }
.s-073962ff { padding:0 0 48px; }
.s-08398e8d { height:30px; font-size:.78rem; width:auto; padding:2px 8px; }
.s-09906818 { margin:6px 0 14px; }
.s-0c375d02 { display:none; color:#f87171; font-size:.82rem; }
.s-0c712f0d { display:block; margin-bottom:14px; }
.s-0cb3d5cc { padding-bottom:24px; }
.s-0ce1155c { padding:0 24px 24px; display:flex; flex-direction:column; gap:12px; }
.s-0da13144 { font-size:.75rem; }
.s-108bb256 { width:100%; max-width:560px; padding:32px 36px; }
.s-10c6e7bb { padding:22px 24px; }
.s-11365ff0 { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:12px; }
.s-11696618 { margin:0; }
.s-13b16199 { margin-top:28px; padding-top:16px; border-top:1px solid var(--border-2); font-size:.78rem; color:var(--muted); }
.s-163ec9eb { padding:16px; color:var(--muted); }
.s-1707e56f { display:none; align-items:center; gap:12px; margin-top:10px; justify-content:flex-end; }
.s-171711e5 { flex:none; margin-top:12px; }
.s-1a3ab460 { margin:0; color:var(--muted); font-size:.82rem; }
.s-1b0f4999 { margin-top:16px; }
.s-1cdeda51 { background:#dc262622; border:1px solid #dc2626; padding:8px 12px; border-radius:8px; margin-bottom:12px; font-size:.88rem; }
.s-20565543 { color:#dc2626; }
.s-20a97e13 { display:flex; align-items:center; justify-content:space-between; gap:10px; margin:10px 0; padding:10px 12px; font-size:.86rem; line-height:1.4; }
.s-22ecfb3a { grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); margin-top:20px; }
.s-2311a554 { padding-bottom:32px; }
.s-23a437a0 { max-width:600px; text-align:left; }
.s-23d4328e { font-size:.78rem; color:var(--muted); margin-bottom:10px; }
.s-2432f701 { margin-top:8px; height:6px; border-radius:3px; background:var(--border,#2d3148); overflow:hidden; }
.s-24d95aeb { display:flex; gap:10px; align-items:flex-start; font-size:.85rem; cursor:pointer; }
.s-25708dca { font-size:.75rem; color:var(--muted); line-height:1.5; }
.s-25bbc13e { display:flex; justify-content:space-between; gap:16px; padding:8px 0; }
.s-270d6c06 { font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.s-286e2eec { width:780px; max-width:96vw; max-height:90vh; overflow:auto; }
.s-29c94ab5 { max-height:380px; overflow:auto; }
.s-2a1a4123 { display:none; margin-top:20px; }
.s-2a49d8bb { max-width:520px; text-align:left; position:relative; }
.s-2a7ecc42 { max-width:520px; margin:64px auto; }
.s-2b3f49cc { max-width:820px; margin:0 auto; padding:32px 40px; }
.s-2b4cddaa { font-size:.92rem; color:var(--fg,#e2e8f0); line-height:1.7; margin-bottom:22px; }
.s-2c02b188 { font-size:.85rem; color:var(--fg-muted); margin-bottom:20px; }
.s-2f1eb913 { margin-top:6px; display:flex; flex-wrap:wrap; gap:6px; }
.s-321874bf { width:36px; height:36px; background:rgba(99,102,241,.1); border-radius:10px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.s-332e1a34 { background:#6b728022; border:1px solid #6b7280; padding:8px 12px; border-radius:8px; margin-bottom:12px; font-size:.88rem; }
.s-34f5044d { display:grid; gap:14px; margin-top:14px; }
.s-3521b3d8 { max-width:320px; }
.s-36764d1e { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.s-391ef124 { margin-left:6px; }
.s-39a0d4bf { font-size:.95rem; line-height:1.7; color:var(--fg); }
.s-3abacfe9 { display:flex; align-items:center; gap:8px; cursor:pointer; font-size:.88rem; }
.s-3be64452 { margin:8px 0 16px; display:flex; gap:8px; }
.s-3cf35d29 { padding-top:24px; }
.s-3d390401 { font-size:1.05rem; font-weight:700; color:var(--fg); margin-bottom:8px; }
.s-3de8f987 { display:flex; gap:8px; flex-wrap:wrap; }
.s-3e3a414f { display:flex; flex-wrap:wrap; gap:10px; margin-bottom:14px; }
.s-3efc9879 { display:flex; gap:10px; }
.s-3fd1ab9a { padding:8px 0 48px; }
.s-407e769f { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:14px 0; font-family:monospace; font-size:1rem; }
.s-40805a6a { text-align:center; padding:40px 32px; }
.s-413c9d6f { font-size:.75rem; margin-top:6px; }
.s-41429dca { padding:22px 24px 0; }
.s-424605a5 { border-bottom:1px solid var(--brd,#23283a); }
.s-42ccd9c9 { font-size:2.6rem; font-weight:800; color:var(--fg); line-height:1; }
.s-435c262d { font-size:.8rem; color:var(--muted); }
.s-43cf74f0 { flex:1 1 auto; overflow:auto; background:#525659; }
.s-446850e9 { width:100%; min-height:60px; }
.s-45703661 { margin-top:14px; display:flex; justify-content:flex-end; }
.s-45eea7d3 { font-size:.9rem; color:var(--fg); }
.s-46146d6f { background:rgba(217,119,6,.12); border:1px solid #d97706; border-radius:10px; padding:10px 14px; margin-bottom:14px; font-size:.88rem; color:#92400e; }
.s-470e27d1 { color:var(--muted); margin:0 0 16px; }
.s-488b9b97 { color:#d97706; }
.s-48e788ee { color:var(--brand); font-size:1rem; }
.s-490e3f34 { background:var(--input-bg); color:var(--fg); border:1.5px solid var(--border-2); border-radius:8px; padding:4px 10px; font-size:.82rem; cursor:pointer; }
.s-495d5ad2 { padding:20px 16px; max-width:920px; margin-left:auto; margin-right:auto; }
.s-499a3ad1 { justify-content:flex-end; gap:10px; margin-top:16px; }
.s-49b4b329 { margin-top:10px; overflow:auto; }
.s-49f14f8f { margin-bottom:20px; }
.s-4bc2ce0c { padding:0 0 64px; }
.s-4c4d7855 { opacity:.5; }
.s-4c95b872 { display:flex; align-items:center; gap:12px; padding:14px 16px; background:var(--surface); border:1.5px solid var(--border-2); border-radius:12px; text-decoration:none; color:var(--fg); transition:border-color .15s; }
.s-4ce2fa75 { font-size:.8rem; color:#d97706; margin-top:4px; }
.s-4ddcfbe5 { grid-column:1 / -1; }
.s-4e420aff { margin-bottom:6px; }
.s-4eb7ec20 { padding:8px; text-align:right; }
.s-51e5350e { float:right; color:#cbd5e1; }
.s-55585d51 { max-width:260px; }
.s-5647cb98 { justify-content:center; margin-top:16px; }
.s-56f43562 { margin-top:12px; }
.s-57c80951 { text-align:left; border-bottom:1px solid var(--brd,#2d3148); }
.s-57d0a601 { font-size:.78rem; color:var(--fg-muted); display:block; margin-bottom:6px; }
.s-57dec00e { font-size:.83rem; color:var(--fg-muted); margin-bottom:18px; }
.s-57f9e31d { color:var(--muted); }
.s-59eddc67 { flex:1; min-width:0; }
.s-5b2be1db { margin-left:auto; display:flex; gap:8px; align-items:center; }
.s-5bfb01c6 { color:var(--brand); font-size:1.1rem; }
.s-5d00a0db { position:absolute; top:12px; right:14px; background:none; border:none; color:var(--muted); font-size:1.4rem; line-height:1; cursor:pointer; z-index:2; padding:2px 6px; }
.s-5f33821e { margin-top:10px; width:100%; }
.s-5fb84fd3 { display:flex; gap:10px; margin-top:4px; }
.s-5fe0d0db { display:flex; gap:20px; }
.s-606ef0f8 { display:grid; gap:14px; margin-top:8px; }
.s-6164a874 { display:block; margin-top:4px; color:var(--muted); font-size:.78rem; }
.s-623dc068 { margin-top:4px; color:var(--muted); }
.s-6329b798 { width:100%; text-transform:uppercase; }
.s-63a86c49 { max-width:520px; text-align:left; }
.s-64f8144a { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:12px; margin-bottom:14px; }
.s-650b1c9f { display:flex; flex-wrap:wrap; gap:8px; margin-top:6px; }
.s-652db75e { font-size:.7rem; }
.s-68565578 { display:flex; gap:12px; justify-content:flex-end; }
.s-6a6a237e { color:#f59e0b; }
.s-6a7c1a39 { justify-content:center; margin-top:16px; gap:10px; flex-wrap:wrap; }
.s-6b99de8b { display:none; }
.s-6bad87bd { justify-content:center; margin-top:18px; gap:10px; flex-wrap:wrap; }
.s-6c02433e { padding-top:40px; }
.s-6d8e7515 { text-align:center; color:#fff; }
.s-6dd6b1ed { font-size:.78rem; color:var(--muted); }
.s-6e67955e { color:var(--muted); line-height:1.65; margin:0 0 12px; }
.s-6eddf7be { font-size:1.05rem; font-weight:700; color:var(--fg); margin-bottom:4px; }
.s-70a02f72 { font-size:.8rem; font-weight:600; color:var(--fg-muted); display:block; margin-bottom:4px; }
.s-722f916a { background:var(--card,#1a1d27); border:1px solid var(--border-2,var(--border,#2d3148)); border-radius:16px; padding:28px 32px; max-width:460px; width:90%; box-shadow:0 8px 40px rgba(0,0,0,.4); }
.s-72389269 { color:#16a34a; }
.s-727efa5d { display:none; color:#f87171; font-size:.82rem; margin-bottom:10px; }
.s-730e921b { max-height:68vh; overflow-y:auto; margin-top:12px; }
.s-7407cc9b { display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; flex-wrap:wrap; gap:12px; }
.s-7483d9de { color:var(--brand); }
.s-75139c78 { width:100%; max-width:520px; }
.s-761d3add { margin-bottom:10px; }
.s-765d57b5 { max-width:560px; }
.s-7a241fc0 { display:flex; flex-direction:column; gap:10px; margin:16px 0; text-align:left; }
.s-7af96822 { font-size:.82rem; color:var(--muted); }
.s-7c4d3261 { font-size:.82rem; color:var(--fg-muted); margin-bottom:20px; }
.s-7f6b43ba { font-size:clamp(20px,2.6vw,26px); margin:0 0 6px; }
.s-7f841441 { margin-top:10px; font-size:.9rem; color:var(--muted); font-variant-numeric:tabular-nums; min-height:1.3em; }
.s-8000e659 { display:none; background:none; border:none; cursor:pointer; color:var(--danger,#c0392b); font-size:18px; vertical-align:middle; margin-left:6px; line-height:1; }
.s-8036918e { display:flex; justify-content:space-between; gap:16px; padding:8px 0; border-bottom:1px solid var(--border); }
.s-80857bb6 { font-weight:600; font-size:.85rem; margin-bottom:10px; color:var(--fg); }
.s-80d654f9 { text-decoration:none; }
.s-82cad412 { margin-top:12px; font-size:.8rem; color:var(--muted,#94a3b8); }
.s-830eb986 { width:140px; }
.s-84264507 { color:#c49020; }
.s-84890937 { display:none; position:fixed; inset:0; z-index:100001; background:rgba(0,0,0,.6); align-items:center; justify-content:center; }
.s-84fdc27d { flex:0 0 150px; margin-bottom:10px; max-width:200px; }
.s-86694da2 { width:100%; background:var(--input-bg); color:var(--fg); border:1.5px solid var(--border-2); border-radius:10px; padding:9px 12px; font-size:.88rem; outline:none; margin-bottom:12px; }
.s-86de7ac6 { margin-top:18px; }
.s-8760812a { font-size:clamp(18px,2.2vw,22px); margin:0 0 10px; }
.s-87c136df { margin-bottom:16px; }
.s-8a77e5a3 { margin-top:8px; }
.s-8bd7e6e7 { margin-bottom:14px; padding:12px 14px; background:var(--surface-2,rgba(255,255,255,.03)); border:1px solid var(--border); border-radius:10px; }
.s-8c235454 { color:var(--muted); margin-left:auto; font-size:.8rem; }
.s-8febbd5d { width:100%; max-width:220px; text-transform:uppercase; }
.s-9079b48a { width:100%; margin-top:4px; }
.s-90aa7e71 { width:100%; background:var(--input-bg); color:var(--fg); border:1.5px solid var(--border-2); border-radius:10px; padding:9px 12px; font-size:.88rem; outline:none; }
.s-90f15858 { padding-bottom:40px; }
.s-91a87015 { text-align:center; }
.s-9282ab98 { display:flex; align-items:flex-start; gap:12px; cursor:pointer; }
.s-93d5b51b { display:block; text-align:center; margin-top:10px; }
.s-94a81f30 { width:100%; margin-top:4px; border-radius:12px; }
.s-94bbf2d4 { font-size:.78rem; color:var(--muted); margin-top:8px; }
.s-951b72db { font-size:1rem; }
.s-95eb79ad { display:block; margin-bottom:4px; }
.s-9690e1df { margin:0 auto 12px; }
.s-96ad6099 { margin-top:4px; }
.s-96eb73b6 { background:rgba(239,68,68,.12); color:#ef4444; }
.s-971f9067 { display:none; position:fixed; inset:0; z-index:99999; background:rgba(8,10,16,.7); backdrop-filter:blur(3px); align-items:center; justify-content:center; }
.s-97445a8d { flex:1; }
.s-97473b23 { font-size:.75rem; margin-top:8px; }
.s-98adc8b9 { font-size:1.1rem; color:var(--brand); }
.s-9cadc1d3 { color:var(--muted); font-size:.88rem; margin-bottom:20px; }
.s-9ceb0d9e { padding:14px 16px; margin-bottom:14px; border:1px solid #dc262644; }
.s-9f19b4aa { margin-left:6px; color:#ef4444; }
.s-9fa9c4e1 { max-width:100%; border-radius:20px; border-top:3px solid var(--brand); box-shadow:0 24px 60px rgba(99,102,241,.15); }
.s-9fc42ebd { margin-bottom:12px; padding:12px 14px; background:var(--surface-2,rgba(255,255,255,.03)); border:1px solid var(--border); border-radius:10px; }
.s-a232899b { width:920px; max-width:97vw; max-height:92vh; overflow:auto; }
.s-a26bda7d { margin-top:20px; }
.s-a362f9ec { font-size:.85rem; color:var(--fg); line-height:1.5; }
.s-a55f31db { width:100%; border-collapse:collapse; }
.s-a562f4fd { justify-content:space-between; }
.s-a618d092 { display:none; position:fixed; z-index:99999; max-width:340px; background:var(--card); border:1.5px solid var(--border-2,var(--border)); border-radius:12px; padding:12px 14px; box-shadow:0 12px 32px rgba(0,0,0,.25); font-size:.85rem; color:var(--fg); }
.s-a66a6f3b { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:10px; }
/* Ширины полей страны и названия фирмы заданы ниже, в блоке .admin-edit-row:
   там они выражены через flex-basis, а не фиксированными min/max-width, —
   иначе на узком экране поле не давало себя сжать и уезжало за карточку.
   Название фирмы длиннее кода страны («Muster Übersetzungen GmbH»), поэтому
   у него своя, большая основа. */
.s-a6cba9e1 { background:#2563eb; color:#fff; text-decoration:none; }
.s-a74f3e04 { margin-top:18px; padding-top:16px; border-top:1px solid var(--brd,#23283a); }
.s-a76d597a { display:flex; gap:8px; }
.s-a828909e { max-width:200px; }
.s-a8da4726 { display:flex; flex-direction:column; gap:12px; margin-bottom:24px; }
.s-a963cc98 { font-size:.78rem; color:var(--muted); margin-top:6px; }
.s-a9c41108 { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; }
.s-ac6ea07e { flex:0 0 auto; }
.s-ad0e68ea { margin-top:14px; display:flex; flex-direction:column; gap:8px; }
.s-aef617f2 { display:inline-flex; gap:6px; align-items:center; flex-wrap:wrap; }
.s-b0eb59c1 { color:#ef4444; }
.s-b1a55612 { border-color:#ef4444; background:rgba(239,68,68,.06); }
.s-b35e3740 { margin-top:3px; flex-shrink:0; width:16px; height:16px; accent-color:var(--brand); }
.s-b3b55fd3 { font-size:1.05rem; font-weight:700; color:var(--fg); margin-bottom:16px; }
.s-b5c75a39 { background:#16a34a; color:#fff; }
.s-b5e5396b { text-align:center; padding:8px 0 4px; }
.s-b629d9c6 { width:3rem; height:3rem; border:4px solid rgba(255,255,255,.25); border-top-color:#fff; border-radius:50%; animation:tfspin 1s linear infinite; margin:0 auto 16px; }
.s-b67c30eb { height:10px; background:var(--border-2,var(--border)); border-radius:999px; overflow:hidden; }
.s-b6ea49f7 { margin-top:24px; display:none; gap:10px; justify-content:center; }
.s-b87ca324 { display:flex; align-items:center; gap:10px; }
.s-b87ef99f { font-size:clamp(20px,2.6vw,26px); margin:0 0 12px; }
.s-b88d1817 { display:flex; align-items:center; gap:6px; }
.s-b9f73aab { flex-direction:column; align-items:flex-start; }
.s-bac5c841 { display:flex; flex-direction:column; font-size:.72rem; color:var(--muted); gap:3px; }
.s-bb7096e9 { opacity:.85; }
.s-bcd1ba23 { border:1.5px solid rgba(239,68,68,.35); }
.s-bea3ad6b { font-size:1.4rem; }
.s-c00d3912 { margin-top:3px; }
.s-c042536b { grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); }
.s-c0468810 { position:sticky; top:0; z-index:99999; }
.s-c228f284 { grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); margin-top:12px; }
.s-c45ba8cd { display:none; justify-content:space-between; align-items:center; gap:12px; margin-top:12px; }
.s-c52d5c9e { display:flex; flex-wrap:wrap; gap:4px; padding:6px; border:1.5px solid var(--border-2); border-bottom:none; border-radius:8px 8px 0 0; background:var(--surface,#1e293b); }
.s-c69ab337 { margin-top:8px; font-size:.78rem; }
.s-c8e10b77 { font-size:.85rem; color:var(--fg-muted); margin-bottom:4px; }
.s-c90d2db3 { background:var(--surface-2); border:1.5px solid var(--border-2); border-left:none; border-radius:0 10px 10px 0; padding:9px 12px; font-size:.88rem; color:var(--fg-muted); white-space:nowrap; }
.s-c9dbbc8c { font-family:monospace; font-size:.85rem; word-break:break-all; margin-bottom:14px; color:var(--muted,#94a3b8); }
.s-cad4a1be { color:#dc2626; font-weight:600; margin-bottom:10px; }
.s-cb1aefcd { height:100%; width:0%; border-radius:3px; transition:width .4s; }
.s-cbfa72e3 { width:720px; max-width:96vw; max-height:90vh; overflow:auto; }
.s-cc1a5576 { font-size:1.05rem; font-weight:700; color:var(--fg,#e2e8f0); margin-bottom:14px; }
.s-cc4989cf { padding:8px 12px; border:1px solid var(--border-2,var(--border)); border-radius:8px; text-align:center; }
.s-cccfa456 { display:inline; }
.s-cd75c871 { display:flex; align-items:center; gap:5px; }
.s-cda83c58 { flex:1; background:var(--input-bg); color:var(--fg); border:1.5px solid var(--border-2); border-radius:10px 0 0 10px; padding:9px 12px; font-size:.88rem; outline:none; }
.s-ce2cdbc3 { background:#6b7280; color:#fff; }
.s-d238bd2a { grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); }
.s-d2c171b1 { margin-top:10px; }
.s-d31a7f8d { font-size:.86rem; line-height:1.5; margin:0; }
.s-d670c384 { margin-top:10px; width:100%; color:#ef4444; border-color:rgba(239,68,68,.4); }
.s-d6a0d1d5 { padding-top:48px; max-width:680px; margin:0 auto; }
.s-d6e47aa9 { font-size:.9rem; }
.s-d6f2af6e { margin-top:14px; }
.s-d6f7d968 { display:none; position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:1000; align-items:center; justify-content:center; padding:16px; }
.s-d771512b { font-weight:600; margin-bottom:8px; }
.s-d7c1368f { padding:7px 9px; }
.s-d7d5ff10 { background:#dc2626; color:#fff; }
.s-d7dfd11f { padding:14px 16px; margin-bottom:14px; }
.s-da12f285 { margin-bottom:12px; }
.s-da25a2e5 { font-size:.95rem; }
.s-da2b7c38 { max-width:820px; text-align:left; max-height:88vh; display:flex; flex-direction:column; }
.s-dab557b9 { color:#6366f1; }
.s-dae1c504 { flex:1; background:rgba(239,68,68,.12); border:1.5px solid rgba(239,68,68,.3); color:#f87171; border-radius:10px; }
.s-dbd68c10 { font-size:.72rem; }
.s-dbf0d3db { background:#64748b; color:#fff; }
.s-dd3de959 { color:var(--muted); line-height:1.65; margin:0; }
.s-ddaf9ee3 { padding:24px; }
.s-ddc79217 { margin:24px auto 8px; max-width:420px; }
.s-ddeedc0b { margin-top:12px; overflow:auto; flex:1; font-size:.9rem; line-height:1.6; }
.s-de3b4c71 { margin-top:8px; font-family:monospace; font-size:.8rem; }
.s-e011c888 { color:var(--muted); font-size:.9rem; margin-top:10px; }
.s-e0c4c82e { color:var(--fg); }
.s-e2c960fb { padding:8px; }
.s-e5782e60 { background:var(--card); border:1px solid var(--border); border-radius:14px; max-width:560px; width:100%; max-height:80vh; overflow:auto; padding:22px; box-shadow:0 20px 60px rgba(0,0,0,.4); }
.s-e7ae087f { font-size:1.4rem; font-weight:800; margin:0; color:var(--fg); }
.s-e85027a3 { color:#f87171; }
.s-ea7ae009 { font-size:1.05rem; font-weight:600; }
.s-eb369b95 { background:none; border:none; color:var(--brand,#6366f1); font-weight:600; cursor:pointer; white-space:nowrap; padding:0; }
.s-ec0b8604 { margin-top:12px; color:var(--muted); }
.s-ec9e02d3 { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:2px 0 0; }
.s-ecc38baa { padding-top:24px; max-width:1180px; margin:0 auto; }
.s-ed71c9de { width:3.5rem; height:3.5rem; border:4px solid rgba(99,102,241,.25); border-top-color:#6366f1; border-radius:50%; animation:tfspin 1s linear infinite; margin:0 auto 22px; transform:translateZ(0); backface-visibility:hidden; will-change:transform; }
.s-ed946e88 { margin:0; font-size:1.1rem; font-weight:800; color:var(--fg); }
.s-ef0b7a11 { margin-bottom:0; }
.s-ef421bbb { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; }
.s-ef5e6800 { display:flex; justify-content:center; align-items:flex-start; min-height:calc(100vh - 160px); padding:48px 16px; }
.s-efb62c9c { margin-right:6px; color:var(--muted); }
.s-efda8716 { font-size:clamp(28px,4vw,44px); }
.s-f04e97f1 { line-height:1.7; }
.s-f08a1c42 { padding:40px 16px; }
.s-f1a3f9f4 { font-size:.8rem; margin-top:4px; }
.s-f21dc648 { font-size:.82rem; margin-bottom:4px; }
.s-f297feeb { display:block; text-align:left; margin-bottom:4px; }
.s-f426422e { background:rgba(22,163,74,.12); border:1px solid #16a34a; border-radius:10px; padding:10px 14px; margin-bottom:14px; font-size:.88rem; color:#166534; }
.s-f560a568 { display:flex; align-items:center; gap:0; }
.s-f5a63bfe { font-weight:600; font-size:.92rem; }
.s-f5d0d167 { background:var(--surface); border:1.5px solid var(--border-2); border-radius:12px; padding:14px 16px; margin-bottom:20px; }
.s-f6bd8c0b { display:flex; align-items:center; justify-content:space-between; padding:10px 24px; }
.s-f93d1285 { position:absolute; left:-9999px; }
.s-f96a4b17 { height:100%; width:0%; background:linear-gradient(90deg,#6366f1,#22c55e); transition:width .25s linear; will-change:width; }
.s-fa30cd60 { margin:0; font-size:1.3rem; }
.s-fafb8d2e { display:block; margin-bottom:10px; }
.s-fdf33f23 { margin-bottom:8px; }
.s-fe7b4979 { margin-top:6px; }
.s-fe8c16d8 { width:100%; min-height:340px; max-height:50vh; overflow:auto; font-size:.9rem; line-height:1.55; border:1.5px solid var(--border-2); border-radius:0 0 8px 8px; padding:14px 16px; background:#fff; color:#1f2937; }
.s-fed97507 { max-width:90px; }
.s-ffe01040 { flex:none; }

/* Довынос последних инлайновых стилей из HTML-страниц (2026-08-03).
   Строгий CSP (style-src 'self' 'nonce-…') их БЛОКИРОВАЛ: стиль не применялся,
   а в консоли на каждой загрузке висела ошибка. Письма (*_email.html) сюда не
   входят — там инлайн обязателен, почтовые клиенты внешний CSS не читают, и
   CSP на них не распространяется. */
.contact-actions--center { justify-content: center; }
.stepup-hint--gap { margin-top: 14px; }
/* Внешний отступ обёртки поля пароля. Пока margin-bottom стоял на самом
   input, обёртка .ma-pass-wrap была выше поля, и глаз, центрируемый по ней,
   уезжал вниз на половину отступа. */
.s-mb12 { margin-bottom:12px; }

/* ─── Карточка клиента в админке: правки вёрстки 17.09.2026 ───────────
   Живут ЗДЕСЬ, а не в custom.css: этот файл подключается после него
   (base.html), и объявления .admin-req-grid / .s-aef617f2 выше
   перебивали бы те же правила из custom.css. Два источника для одних
   элементов — это и были «слепленные поля». */
/* ── Карточка клиента в админке ──────────────────────────────────────────
   Формы страны, названия фирмы и выгрузки шли подряд без вертикальных
   отступов и слипались друг с другом, а select наследовал ширину по самой
   длинной опции. Ниже — общий ритм для этих строк. */

/* Строка «поле + кнопка»: страна, название фирмы, язык выгрузки. */
.admin-edit-row {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-wrap: wrap;
  margin-top: .75rem;
}

.admin-edit-row .tf-input {
  flex: 0 1 22rem;
  min-width: 0;                 /* иначе flex-элемент не даёт себя сжать */
}

.admin-edit-row .btn {
  flex: none;
  white-space: nowrap;
}

/* Значения-прочерки шли тем же кеглем 1.4rem/800, что и суммы, и пустая
   карточка выглядела набором жирных тире. */
.admin-declaration .sec-metric-value,
.admin-req-grid .sec-metric-value {
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.45;
}

.admin-req-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
  gap: 1rem 1.5rem;
}

.admin-declaration {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: 1rem 1.5rem;
  margin-top: 1.25rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(148, 163, 184, .2);
}

/* Дословный текст декларации — он длинный, ему нужна вся ширина и обычный
   книжный кегль, а не цифровой. */
.admin-declaration .admin-decl-text {
  grid-column: 1 / -1;
}

.admin-declaration .admin-decl-text .sec-metric-value {
  font-size: .9rem;
  font-weight: 400;
  color: #9ca3af;
}

/* Оплаченные лоты: список форм правки страниц.
   Лот появляется на каждое пополнение, поэтому блок ограничен и по числу
   строк (ADMIN_PAID_LOTS_SHOWN), и по высоте — иначе карточка растёт вместе
   с историей платежей. */
.tf-lot-head {
  margin-top: 1.5rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(148, 163, 184, .2);
  font-weight: 700;
}

/* Высоту не ограничиваем: на странице ровно ADMIN_PAID_LOTS_PER_PAGE лотов,
   они умещаются, а прокрутка внутри прокрутки только мешает попасть в нужную
   форму. Границу держит пагинация, а не overflow. */

.tf-lot-label {
  flex: 1 1 16rem;
  min-width: 0;
  font-size: .85rem;
  color: #9ca3af;
  font-variant-numeric: tabular-nums;
}

.tf-lot-empty {
  margin-top: .5rem;
  font-size: .85rem;
  color: #9ca3af;
}

.tf-adjust-delta {
  flex: 0 0 6rem;
}

.tf-adjust-reason {
  flex: 1 1 12rem;
  min-width: 0;
}

/* Выгрузка справки о декларациях: язык обёртки выбирается перед скачиванием. */
.decl-export-form {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-wrap: wrap;
  margin-top: 1.25rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(148, 163, 184, .2);
}

/* Экономика и страна клиента — компактная таблица ключ–значение (14.10.2026):
   две пары колонок, на узком экране одна; обычный кегль, как таблицы раздела. */
.admin-kv-wrap {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .25rem 2rem;
}
@media (max-width: 640px) {
  .admin-kv-wrap { grid-template-columns: minmax(0, 1fr); }
}
.admin-kv { width: 100%; border-collapse: collapse; font-size: .9rem; }
.admin-kv caption {
  caption-side: top;
  text-align: left;
  font-weight: 700;
  padding: 0 0 .4rem;
  color: inherit;
}
.admin-kv th, .admin-kv td {
  padding: .3rem 0;
  border-bottom: 1px solid rgba(148, 163, 184, .15);
  vertical-align: top;
}
.admin-kv th { font-weight: 400; color: #9ca3af; padding-right: 1rem; text-align: left; white-space: nowrap; }
@media (max-width: 640px) { .admin-kv th { white-space: normal; width: 50%; } }
.admin-kv td { font-weight: 600; text-align: right; overflow-wrap: anywhere; }
.admin-kv-note { margin-top: .5rem; font-size: .8rem; color: #9ca3af; }
/* Формы страны и названия фирмы — в одну строку, на узком экране переносятся. */
.admin-edit-forms { display: flex; flex-wrap: wrap; gap: 0 1.5rem; }
.admin-edit-forms .admin-edit-row { flex: 1 1 22rem; min-width: 0; flex-wrap: nowrap; }
.admin-edit-forms .admin-edit-row .tf-input { flex: 1 1 8rem; }
@media (max-width: 380px) { .admin-edit-forms .admin-edit-row { flex-wrap: wrap; } }

/* Поле страны короче, поле названия фирмы длиннее — основы разные, но обе
   сжимаемые (min-width:0 в .admin-edit-row .tf-input). */
.admin-edit-row .admin-country-select {
  flex: 0 1 18rem;
}

.admin-edit-row .admin-company-input {
  flex: 0 1 26rem;
}

/* 2FA: резервный код под ссылкой */
.twofa-backup > summary { cursor: pointer; list-style: none; color: var(--accent, #6366f1); font-size: .95rem; margin-bottom: 8px; }
.twofa-backup > summary::-webkit-details-marker { display: none; }
.twofa-backup > summary:hover { text-decoration: underline; }

/* Номера страниц (tf_pager.js / _pager_numbers.html) */
.tf-pages { display: inline-flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.tf-page { min-width: 32px; height: 32px; padding: 0 8px; display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--border, rgba(148,163,184,.35)); border-radius: 8px; background: transparent;
  color: inherit; font: inherit; font-size: .85rem; text-decoration: none; cursor: pointer; }
.tf-page:hover { border-color: var(--accent, #6366f1); color: var(--accent, #6366f1); }
.tf-page.is-current { background: var(--accent, #6366f1); border-color: var(--accent, #6366f1); color: #fff; cursor: default; }
.tf-pages-gap { padding: 0 2px; color: var(--muted, #64748b); }
/* Вебпошта адмінки: поля «Копія» (static/js/mail_admin_cc.js). */
.ma-to-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ma-cc-add { border: 0; background: transparent; color: var(--brand); font-size: .78rem; font-weight: 600; padding: 0 0 3px; cursor: pointer; }
.ma-cc-add:hover { text-decoration: underline; }
.ma-cc-row { display: flex; align-items: center; gap: 6px; }
.ma-cc-row .ma-cc-input { flex: 1 1 auto; min-width: 0; }
.ma-cc-x { flex: none; width: 32px; height: 32px; border: 0; border-radius: 8px; background: transparent; color: var(--fg-muted); font-size: 1.2rem; cursor: pointer; }
.ma-cc-x:hover { background: rgba(127, 127, 127, .15); }
#maCcLbl[hidden] { display: none; }
/* Фінанси → Календар звітності (static/js/finance_calendar.js). */
.acc-intro, .acc-note { font-size: .85rem; color: var(--fg-muted, #6b7280); margin: 0 0 10px; }
.acc-err { font-size: .85rem; color: #b91c1c; margin: 0 0 10px; }
.acc-payroll { display: inline-flex; align-items: center; gap: 6px; font-size: .85rem; margin: 0 0 12px; cursor: pointer; }
.acc-scroll { overflow-x: auto; }
.acc-table td, .acc-table th { white-space: nowrap; }
.acc-table .acc-act { display: flex; flex-wrap: wrap; gap: 6px; }
.acc-table td { vertical-align: middle; }
.acc-cards { display: none; }
.acc-card { border: 1px solid var(--border, #e5e7eb); border-radius: 10px; padding: 12px; margin: 0 0 10px; background: var(--card, #fff); }
.acc-card--late { border: 2px solid #dc2626; }
.acc-card-h { font-weight: 700; margin: 0 0 6px; }
.acc-card-r { font-size: .88rem; margin: 2px 0; }
.acc-card-act { display: flex; gap: 6px; margin-top: 10px; }
.acc-card-act > * { flex: 1 1 0; min-width: 0; justify-content: center; text-align: center; white-space: normal; }
/* < 600: карточки замість таблиці (на 390 колонки «Сплатити», квитанція й кнопки ховались за край). */
@media (max-width: 599px) {
  .acc-scroll { display: none; }
  .acc-cards { display: block; }
}
.acc-overdue td { background: rgba(220, 38, 38, .08); }
.acc-late-cell { color: #b91c1c; font-weight: 700; }
.acc-late { display: inline-block; padding: 1px 6px; border-radius: 6px; background: #dc2626; color: #fff; font-size: .72rem; }
.acc-st { display: inline-block; padding: 1px 6px; border-radius: 6px; font-size: .78rem; }
.acc-st--pending { background: rgba(245, 158, 11, .15); color: #b45309; }
.acc-st--filed { background: rgba(59, 130, 246, .15); color: #1d4ed8; }
.acc-st--paid { background: rgba(22, 163, 74, .15); color: #15803d; }
.acc-attach { position: relative; overflow: hidden; cursor: pointer; }
.acc-attach .acc-file { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.acc-st--none { background: rgba(100, 116, 139, .15); color: #475569; }
.acc-journal { font-size: .75rem; color: var(--fg-muted, #6b7280); white-space: normal; }
.acc-settings { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 10px; font-size: .85rem; }
.acc-cf { display: inline-flex; align-items: center; gap: 6px; }
.acc-confirm { border-color: #dc2626; color: #b91c1c; }
.acc-filters { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; margin: 0 0 12px; }
.acc-f { display: flex; flex-direction: column; gap: 3px; font-size: .75rem; color: var(--fg-muted, #6b7280); }
.acc-f select { height: 30px; font-size: .85rem; padding: 0 8px; border-radius: 6px; border: 1px solid var(--border, #cbd5e1); background: var(--card, #fff); color: var(--fg, #1e293b); }
.acc-count { margin-left: auto; font-size: .8rem; color: var(--fg-muted, #6b7280); }
/* < 600: фільтри по два в ряд (не стовпчиком на всю ширину); чіп «Прострочені» — звичайного розміру */
@media (max-width: 599px) {
  .acc-filters { display: grid; grid-template-columns: 1fr 1fr; align-items: end; gap: 8px; }
  .acc-f select { width: 100%; }
  .acc-filters .frp-range, .acc-count { grid-column: 1 / -1; margin-left: 0; }
  .acc-f-late { justify-self: start; }
}
