/* ============================================================
   Pop Opera — Espace membres (portail « Круг друзей театра »).
   Reprend les tokens + le style PLAT (angles droits) de l'admin du site.
   ============================================================ */
@font-face {
  font-family: 'Pop Opera Display';
  src: url('/static/fonts/pop-opera-display.ttf') format('truetype');
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}
:root{
  --grad1:#09112F; --grad2:#1B225A; --grad3:#4A3C87;
  --lavender:#B9A2F2; --lilac:#D7C6FF; --feature:#715592; --lantern:#FFCF7D;
  --ivory:#F6F1E8; --warm-bg:#F5F2EC; --warm-line:#E6DECF;
  --ink:#20264F; --ink-soft:#5A5F82; --text-sec:#D8D8E3; --label:#BBBBD1;
  --display:'Cormorant Garamond',Georgia,serif; --body:'Inter',-apple-system,sans-serif;
  --titles:'Pop Opera Display','Cormorant Garamond',Georgia,serif;
}
*{margin:0;padding:0;box-sizing:border-box;}
body{font-family:var(--body);background:var(--warm-bg);color:var(--ink);-webkit-font-smoothing:antialiased;}
a{color:inherit;text-decoration:none;}

/* flashes */
.pt-flash{padding:12px 16px;font-size:13.5px;margin-bottom:14px;}
.pt-flash.error{background:#fdecec;color:#9a2b2b;border:1px solid #f3c7c7;}
.pt-flash.success{background:#e9f7ee;color:#256b41;border:1px solid #c6e6cf;}
.pt-flash.info{background:#eef2fb;color:#33406b;border:1px solid #cdd8f0;}

/* boutons */
.pt-btn{display:inline-block;background:var(--feature);color:#fff;border:none;padding:11px 18px;font-size:13px;font-weight:600;cursor:pointer;font-family:var(--body);}
.pt-btn:hover{background:#5f477c;}
.pt-btn.ghost{background:#fff;color:var(--feature);border:1px solid var(--warm-line);}

/* ---- login ---- */
.pt-login-body{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;
  background:linear-gradient(135deg,var(--grad1),var(--grad2) 60%,var(--grad3));}
.pt-login{width:min(400px,100%);background:#fff;padding:34px 30px;box-shadow:0 20px 60px rgba(10,16,51,.35);}
.pt-brand{font-family:var(--display);font-weight:600;font-size:24px;letter-spacing:.02em;}
.pt-brand b{color:var(--lavender);}
.pt-login .pt-brand{color:var(--feature);font-size:26px;margin-bottom:2px;}
.pt-login .pt-brand b{color:var(--feature);}
.pt-login h1{font-family:var(--display);font-weight:600;font-size:26px;margin:10px 0 4px;color:var(--ink);}
.pt-login .lead{font-size:13px;color:var(--ink-soft);margin-bottom:22px;}
.pt-field{margin-bottom:14px;}
.pt-field label{display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px;}
.pt-field input{width:100%;border:1px solid var(--warm-line);padding:11px 14px;font-size:14px;color:var(--ink);font-family:var(--body);}
.pt-field input:focus{outline:none;border-color:var(--lavender);box-shadow:0 0 0 3px rgba(185,162,242,.25);}
.pt-login .pt-btn{width:100%;margin-top:6px;padding:12px;font-size:14px;}
.pt-login .hint{font-size:12px;color:var(--ink-soft);margin-top:16px;text-align:center;line-height:1.5;}
.pt-login-back{display:block;text-align:center;margin-top:14px;font-size:12px;color:var(--ink-soft);}
.pt-login-back:hover{color:var(--feature);}

/* ============================================================
   Layout « panneau à gauche » (calqué sur l'admin du site) — PLAT
   ============================================================ */
.pt-admin{display:flex;min-height:100vh;}
.pt-side{width:250px;flex:0 0 250px;color:var(--ivory);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;
  background:linear-gradient(160deg,var(--grad1) 0%,var(--grad2) 60%,var(--grad3) 100%);}
/* Bloc de marque IDENTIQUE à l'admin du site (.sidebar-brand dans app.css) */
.pt-side-brand{padding:26px 24px 22px;border-bottom:1px solid rgba(215,198,255,.14);}
.pt-side-brand .logo{font-family:var(--titles);font-weight:600;font-size:26px;line-height:.95;letter-spacing:.02em;}
.pt-side-brand .logo span{color:var(--lavender);}
.pt-side-brand .tag{font-family:var(--body);font-size:9px;font-weight:400;letter-spacing:.22em;text-transform:uppercase;color:var(--label);margin-top:6px;}
.pt-side-nav{flex:1;padding:12px 12px;overflow-y:auto;}
/* barres de défilement masquées (le scroll reste fonctionnel — molette/pavé/glisser) */
html{scrollbar-width:none;}
html::-webkit-scrollbar{width:0;height:0;}
.pt-side-nav,.pt-ctable-wrap,.pt-modal-box{scrollbar-width:none;}
.pt-side-nav::-webkit-scrollbar,.pt-ctable-wrap::-webkit-scrollbar,.pt-modal-box::-webkit-scrollbar{width:0;height:0;}
.pt-side-nav .group-label{font-size:9px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--label);padding:16px 12px 8px;}
.pt-side-nav a{display:block;padding:11px 12px;font-size:14px;color:var(--text-sec);transition:background .12s,color .12s;}
.pt-side-nav a:hover{background:rgba(215,198,255,.08);color:#fff;}
.pt-side-nav a.active{background:var(--lavender);color:var(--grad1);font-weight:600;}
.pt-side-nav a.sub{font-size:12.5px;padding:8px 12px 8px 24px;color:var(--label);}
.pt-side-nav a.sub:hover{color:#fff;background:rgba(215,198,255,.06);}
.pt-side-foot{padding:14px 16px;border-top:1px solid rgba(215,198,255,.14);display:flex;align-items:flex-start;justify-content:space-between;gap:10px;font-size:12.5px;color:var(--label);}
.pt-side-foot .who{display:flex;flex-direction:column;gap:5px;min-width:0;}
.pt-role{align-self:flex-start;background:var(--lantern);color:#3a2a06;font-weight:700;font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;}
.pt-side-foot a{color:var(--lavender);flex:none;}
.pt-side-site{display:block;padding:12px 16px 18px;font-size:12px;font-weight:600;letter-spacing:.06em;color:var(--lavender);border-top:1px solid rgba(215,198,255,.1);}
.pt-side-site:hover{color:var(--lilac);}
.pt-backdrop{display:none;}
.pt-main2{flex:1;min-width:0;display:flex;flex-direction:column;}
.pt-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 32px;background:var(--warm-bg);border-bottom:1px solid var(--warm-line);position:sticky;top:0;z-index:5;}
.pt-topbar-left{display:flex;align-items:center;gap:12px;min-width:0;}
.pt-topbar .crumbs{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:4px;}
.pt-topbar h1{font-family:var(--display);font-size:27px;font-weight:600;line-height:1.1;}
.pt-topbar-actions{display:flex;align-items:center;gap:10px;}
.pt-topbar-site{display:none;align-items:center;gap:5px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--feature);white-space:nowrap;}
.pt-burger{display:none;flex-direction:column;justify-content:center;gap:5px;width:40px;height:40px;padding:8px;border:none;background:none;cursor:pointer;flex:0 0 auto;}
.pt-burger span{display:block;width:22px;height:2px;background:var(--ink);}
.pt-content{padding:28px 32px 64px;max-width:1080px;}

/* titres de section */
.pt-note{font-size:13px;color:var(--ink-soft);margin-bottom:20px;}
.pt-sec{scroll-margin-top:92px;margin-top:38px;}
.pt-sec-h{font-family:var(--display);font-weight:600;font-size:25px;margin:0 0 16px;padding-bottom:9px;border-bottom:1px solid var(--warm-line);}
.pt-mini{font-family:var(--display);font-size:20px;font-weight:600;margin:24px 0 10px;}

/* cartes / statistiques */
.pt-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:26px;}
.pt-card{background:#fff;border:1px solid var(--warm-line);padding:20px 22px;}
.pt-card .lbl{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);}
.pt-card .num{font-family:var(--num,var(--body));font-size:32px;font-weight:700;font-variant-numeric:tabular-nums;margin-top:6px;}
.pt-card .num.accent{color:var(--feature);}
.pt-card.as-btn{width:100%;text-align:left;font:inherit;cursor:pointer;color:inherit;}
.pt-card.as-btn:hover{border-color:var(--lavender);}
.pt-card-hint{display:block;font-size:11px;color:var(--feature);font-weight:600;margin-top:8px;}
@media(max-width:720px){.pt-cards{grid-template-columns:1fr;}}

/* доска объявлений */
.pt-board{background:linear-gradient(135deg,#2a2560,#4a3c87);color:var(--ivory);padding:22px 26px;margin-bottom:26px;box-shadow:0 10px 30px rgba(10,16,51,.14);}
.pt-board .bh{display:flex;align-items:center;gap:10px;font-family:var(--display);font-size:22px;font-weight:600;margin-bottom:14px;}
.pt-ann{display:flex;gap:14px;padding:12px 0;border-top:1px solid rgba(255,255,255,.14);}
.pt-ann:first-of-type{border-top:none;}
.pt-ann .d{flex:none;width:70px;font-size:11px;color:var(--lilac);font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding-top:2px;}
.pt-ann .t{font-weight:600;font-size:15px;}
.pt-ann .x{font-size:13px;color:var(--text-sec);margin-top:2px;white-space:pre-line;}

/* badges / états / notes */
.pt-badge{display:inline-block;font-size:11px;font-weight:700;padding:3px 10px;background:#e7f6ec;color:#2e7d4f;margin-top:8px;}
.pt-blocknote{font-size:12px;color:var(--ink-soft);background:#fbf7ef;border:1px dashed var(--warm-line);padding:12px 16px;margin-top:18px;}
.pt-import{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:22px;}
.pt-import-note{font-size:12px;color:var(--ink-soft);flex:1;min-width:220px;}

/* ── Касса : bande de solde (приход − расход = сальдо) ── */
.pt-balance{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--warm-line);padding:14px 18px;margin-bottom:22px;}
.pt-bal-item{display:flex;flex-direction:column;justify-content:center;min-width:120px;}
.pt-bal-item .l{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);}
.pt-bal-item .v{font-family:var(--num,var(--body));font-size:24px;font-weight:700;color:var(--ink);line-height:1.1;font-variant-numeric:tabular-nums;}
.pt-bal-item .s{font-size:11.5px;color:var(--ink-soft);}
.pt-bal-item.solde .v{color:#2e7d4f;}
.pt-bal-item.solde.neg .v{color:#b04a4a;}
.pt-bal-op{display:flex;align-items:center;font-size:22px;color:var(--ink-soft);padding:0 4px;}
@media(max-width:640px){.pt-bal-op{display:none;}}

/* ── Финансы: Баланс+Разрыв (строка 1) / Кошельки (строка 2) / Общий баланс (справа) ── */
.pt-finance{display:flex;align-items:stretch;gap:10px;margin-bottom:22px;}
.pt-finance-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px;}
.pt-finance .pt-balance{margin-bottom:0;}
.pt-wallets{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap;margin-bottom:0;}
.pt-wallet{flex:1;min-width:150px;background:#fff;border:1px solid var(--warm-line);padding:12px 16px;display:flex;flex-direction:column;justify-content:center;}
.pt-wallet .wl{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);}
.pt-wallet .wv{font-family:var(--num,var(--body));font-size:21px;font-weight:700;color:var(--ink);line-height:1.15;font-variant-numeric:tabular-nums;margin-top:2px;}
.pt-wallet .ws{font-size:10.5px;color:var(--ink-soft);margin-top:2px;}
.pt-wallet .wa{display:inline-block;font-size:8.5px;font-weight:700;letter-spacing:.05em;padding:1px 5px;background:#e7f6ec;color:#2e7d4f;vertical-align:middle;margin-left:4px;}
.pt-wallet .wa.gray{background:#eceaf3;color:#6b6b6b;}
.pt-wallet.auto{border-color:#cfe8d8;min-width:180px;}
.pt-wallet.cash{border-style:dashed;}
/* «Чёрная касса» — вне общего баланса, потому и чёрная */
.pt-wallet.black{background:#15151A;border-color:#15151A;}
.pt-wallet.black .wl{color:#B9B4C6;}
.pt-wallet.black .wv{color:#fff;}
.pt-wallet.black .ws{color:#8F8A9E;}
.pt-wallet.black .wa{background:#2B2B33;color:#D8D4E2;}
.pt-wallet.black .wa.gray{background:#2B2B33;color:#B9B4C6;}
.pt-wallet.black.editable:hover{border-color:var(--lavender);}
.pt-wallet.black .wedit-inp{background:#22222A;border-color:#3A3A44;color:#fff;}
.pt-wallet .wsplit{display:flex;gap:7px;margin-top:4px;align-items:baseline;}
.pt-wallet .wsp{font-size:13.5px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;}
.pt-wallet .wsp.pending{color:#b04a4a;}
.pt-wallet .wsp.withdrawn{color:#2e7d4f;}
/* Разрыв — в строке баланса */
.pt-gap{display:flex;flex-direction:column;justify-content:center;min-width:120px;padding-left:8px;border-left:1px dashed var(--warm-line);}
.pt-gap .l{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);}
.pt-gap .v{font-family:var(--num,var(--body));font-size:24px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums;}
.pt-gap .s{font-size:11px;font-weight:600;}
.pt-gap.zero .v,.pt-gap.zero .s,.pt-gap.plus .v,.pt-gap.plus .s{color:#2e7d4f;}
.pt-gap.minus .v,.pt-gap.minus .s{color:#b04a4a;}
/* Общий баланс — высокая карточка справа */
.pt-total-card{flex:0 0 220px;display:flex;flex-direction:column;justify-content:center;background:#f3eefb;border:1px solid #e0d3fb;padding:18px 22px;}
.pt-total-card .tl{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);}
.pt-total-card .tv{font-family:var(--num,var(--body));font-size:34px;font-weight:700;color:var(--feature);line-height:1.05;font-variant-numeric:tabular-nums;margin-top:6px;}
.pt-total-card .ts{font-size:11px;color:var(--ink-soft);margin-top:8px;line-height:1.4;}
/* тап по плашке кошелька → правка/пересчёт (мини-форма внутри) */
.pt-wallet.editable{cursor:pointer;}
.pt-wallet.editable:hover{border-color:var(--lavender);}
.pt-wallet .wedit{display:none;margin-top:8px;align-items:center;gap:6px;cursor:default;}
.pt-wallet.editing .wedit{display:flex;}
.pt-wallet .wedit-inp{width:100px;border:1px solid var(--warm-line);padding:6px 9px;font-size:14px;font-family:var(--body);color:var(--ink);background:#fff;}
.pt-wallet .wedit-inp:focus{outline:none;border-color:var(--lavender);box-shadow:0 0 0 3px rgba(185,162,242,.2);}
.pt-wallet .wedit-save{background:var(--feature);color:#fff;border:none;cursor:pointer;padding:7px 11px;font-size:13px;font-weight:600;font-family:var(--body);white-space:nowrap;}
.pt-wallet .wedit-save:hover{background:var(--grad1,#3a2f66);}
.pt-wallet .wedit-save.wide{width:100%;}
@media(max-width:820px){.pt-finance{flex-direction:column;}.pt-total-card{flex-basis:auto;}}

/* ── приход : метка гость + переключатель ── */
.pt-tabletoolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px;}
.pt-btn.ghost.active{background:var(--feature);color:#fff;border-color:transparent;}
.pt-guest-badge{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  padding:1px 7px;background:#efe7d8;color:#8a6a1e;margin-left:6px;vertical-align:middle;}
.pt-ctable tbody tr.guest td{background:#f8f1e2;}
/* фильтр прихода : Все / Члены / Гости */
.pt-incfilter{display:inline-flex;gap:8px;flex-wrap:wrap;}

/* ── расходы : категории + чек ── */
.pt-catsum{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px;}
.pt-catchip{display:inline-block;font-size:11.5px;padding:3px 10px;background:#efe7fb;color:var(--feature);white-space:nowrap;}
/* планочки-статьи = кнопки-фильтры (между формой и таблицей) */
.pt-catfilter{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px;}
.pt-catbtn{font-size:11.5px;padding:4px 11px;background:#efe7fb;color:var(--feature);border:1px solid transparent;
  cursor:pointer;font-family:var(--body);white-space:nowrap;transition:background .12s,border-color .12s;}
.pt-catbtn:hover{border-color:var(--lavender);}
.pt-catbtn b{font-weight:700;}
/* раскраска статей (ненавязчиво) — общий цвет для чипа в таблице и кнопки-фильтра */
.pt-catchip[data-cat="Декорации"],.pt-catbtn[data-cat="Декорации"]{background:#efe7fb;color:#6a4fa0;}
.pt-catchip[data-cat="Костюмы"],.pt-catbtn[data-cat="Костюмы"]{background:#fbe9ef;color:#a04f74;}
.pt-catchip[data-cat="Зал / аренда"],.pt-catbtn[data-cat="Зал / аренда"]{background:#e6effb;color:#2f6bb0;}
.pt-catchip[data-cat="Реквизит"],.pt-catbtn[data-cat="Реквизит"]{background:#e2f2ee;color:#2e7d6b;}
.pt-catchip[data-cat="Реклама"],.pt-catbtn[data-cat="Реклама"]{background:#fbf1df;color:#9a6a1e;}
.pt-catchip[data-cat="Гонорары"],.pt-catbtn[data-cat="Гонорары"]{background:#e7f6ec;color:#2e7d4f;}
.pt-catchip[data-cat="Транспорт"],.pt-catbtn[data-cat="Транспорт"]{background:#eceaf3;color:#5a5f82;}
.pt-catchip[data-cat="Печать / полиграфия"],.pt-catbtn[data-cat="Печать / полиграфия"]{background:#f3ece2;color:#8a6a4e;}
.pt-catchip[data-cat="Оборудование"],.pt-catbtn[data-cat="Оборудование"]{background:#e8e9fb;color:#4f52a0;}
.pt-catchip[data-cat="Интернет"],.pt-catbtn[data-cat="Интернет"]{background:#e2f0f5;color:#2f7f96;}
.pt-catchip[data-cat="Финансовые системы"],.pt-catbtn[data-cat="Финансовые системы"]{background:#f2f0dd;color:#78711f;}
.pt-catchip[data-cat="Прочее"],.pt-catbtn[data-cat="Прочее"]{background:#eeece8;color:#6b6b6b;}
/* активный фильтр всегда выделен ярко (поверх раскраски) — правило идёт последним */
.pt-catbtn.active{background:var(--feature);color:#fff;}
/* чекбокс «в сбор» в форме взноса */
.pt-camp-cb{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink);white-space:nowrap;cursor:pointer;padding:8px 0;}
/* поле короткого ярлыка формы HelloAsso (в таблице форм) */
.pt-halbl{width:100%;min-width:180px;border:1px solid var(--warm-line);padding:8px 11px;font-size:13.5px;
  color:var(--ink);font-family:var(--body);background:#fff;}
.pt-halbl:focus{outline:none;border-color:var(--lavender);box-shadow:0 0 0 3px rgba(185,162,242,.2);}
.pt-filelink{font-size:12.5px;font-weight:600;color:var(--feature);white-space:nowrap;}
.pt-nudge{background:#fff;border:1px solid var(--warm-line);padding:34px 30px;text-align:center;}
.pt-nudge .big{font-family:var(--display);font-size:26px;font-weight:600;color:var(--ink);margin-bottom:8px;}
.pt-nudge p{font-size:14px;color:var(--ink-soft);max-width:52ch;margin:0 auto 18px;line-height:1.6;}
.pt-empty{background:#fff;border:1px dashed var(--warm-line);padding:26px;text-align:center;color:var(--ink-soft);font-size:14px;}

/* tableau взносов (vue membre — panneau blanc) */
.pt-panel{background:#fff;border:1px solid var(--warm-line);overflow:hidden;}
.pt-panel table{width:100%;border-collapse:collapse;font-size:14px;}
.pt-panel thead th{text-align:left;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);padding:10px 20px;border-bottom:1px solid var(--warm-line);background:#faf8f4;}
.pt-panel th.amount,.pt-panel td.amount{text-align:right;}
.pt-panel tbody td{padding:14px 20px;border-bottom:1px solid #f2ede2;color:var(--ink);}
.pt-panel tbody tr:last-child td{border-bottom:none;}
.pt-panel td.amount{font-weight:600;font-variant-numeric:tabular-nums;}
.pt-panel tr.month td{background:#f3eefb;color:var(--feature);font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:8px 20px;}

/* pills / sources / statut */
.pt-pill{font-size:11px;font-weight:600;padding:3px 10px;}
.pt-pill.adh{background:#efe7fb;color:var(--feature);}
.pt-pill.don{background:#fff2df;color:#9a6a1e;}
.pt-ok{color:#2e7d4f;font-weight:600;font-size:13px;}
.pt-src{font-size:10.5px;font-weight:600;padding:3px 9px;white-space:nowrap;}
.pt-src.helloasso{background:#e7f6ec;color:#2e7d4f;}
.pt-src.smilepay{background:#e6effb;color:#2f6bb0;}
.pt-src.bank{background:#eceaf3;color:#5a5f82;}
.pt-src.cash{background:#fbf1df;color:#8a6a1e;}

/* documents */
.pt-doc-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;}
.pt-doc{display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--warm-line);padding:18px 20px;}
.pt-doc .ic{flex:none;width:42px;height:42px;background:var(--lilac);color:var(--feature);display:flex;align-items:center;justify-content:center;font-size:20px;}
.pt-doc .t{font-weight:600;font-size:15px;color:var(--ink);}
.pt-doc .m{font-size:12px;color:var(--ink-soft);margin-top:2px;}
.pt-doc .dl{margin-top:9px;display:inline-block;font-size:12.5px;font-weight:600;color:var(--feature);}
.pt-rows{background:#fff;border:1px solid var(--warm-line);overflow:hidden;}
.pt-row{display:flex;align-items:center;gap:14px;padding:13px 20px;border-bottom:1px solid #f2ede2;}
.pt-row:last-child{border-bottom:none;}
.pt-row .ic{flex:none;color:var(--feature);font-size:16px;}
.pt-row .t{font-weight:600;font-size:14px;color:var(--ink);flex:1;}
.pt-row .m{font-size:12px;color:var(--ink-soft);white-space:nowrap;}
.pt-row .dl{font-size:12.5px;font-weight:600;color:var(--feature);white-space:nowrap;}
@media(max-width:720px){.pt-doc-grid{grid-template-columns:1fr;}.pt-row .m{display:none;}}

/* ── gestion : formulaire ── */
.pt-formcard{background:#fff;border:1px solid var(--warm-line);padding:18px 20px;margin-bottom:24px;}
.pt-formcard h3{font-family:var(--display);font-size:19px;font-weight:600;margin-bottom:14px;}
.pt-frow{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;}
.pt-ff{display:flex;flex-direction:column;gap:5px;}
.pt-ff label{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);}
.pt-ff input,.pt-ff select,.pt-ff textarea{border:1px solid var(--warm-line);padding:9px 12px;font-size:13.5px;color:var(--ink);font-family:var(--body);background:#fff;}
.pt-ff input:focus,.pt-ff select:focus,.pt-ff textarea:focus{outline:none;border-color:var(--lavender);box-shadow:0 0 0 3px rgba(185,162,242,.2);}
.pt-ff.grow{flex:1;min-width:160px;}
/* champs инкогнито : cachés tant que « Инкогнито » n'est pas choisi
   (display:flex de .pt-ff écrase l'attribut [hidden] → règle explicite) */
.pt-ff.js-extern[hidden]{display:none;}
.pt-del{background:none;border:none;color:#b04a4a;cursor:pointer;font-size:15px;padding:4px;}
.pt-del:hover{color:#8a2b2b;}

/* liste взносов (gestion) — même tableau blanc, actions HORS du blanc (colonne transparente) */
.pt-ctable-wrap{overflow-x:auto;}
.pt-ctable{width:100%;border-collapse:collapse;font-size:14px;}
.pt-ctable th,.pt-ctable td{padding:6px 18px;text-align:left;vertical-align:middle;}
.pt-ctable thead th{background:#faf8f4;padding-top:10px;padding-bottom:10px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);
  border-top:1px solid var(--warm-line);border-bottom:1px solid var(--warm-line);}
.pt-ctable tbody td{background:#fff;border-bottom:1px solid #f2ede2;color:var(--ink);}
.pt-ctable th:first-child,.pt-ctable td:first-child{border-left:1px solid var(--warm-line);}
.pt-ctable .col-note{font-size:12px;color:var(--ink-soft);max-width:240px;}
.pt-ctable .col-amt{text-align:right;border-right:1px solid var(--warm-line);white-space:nowrap;}
.pt-ctable td.col-amt{font-weight:600;font-variant-numeric:tabular-nums;}
.pt-ctable tbody tr:last-child td{border-bottom:1px solid var(--warm-line);}
.pt-ctable tr.month td.col-lbl{background:#f3eefb;color:var(--feature);font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase;
  padding:6px 18px;border-left:1px solid var(--warm-line);border-right:none;}
/* итог месяца : уезжает вправо в колонку сумм (число в вертикали цифр, слово слева) */
.pt-ctable tr.month td.month-tot{background:#f3eefb;color:var(--feature);font-weight:700;font-size:11px;letter-spacing:.04em;
  text-transform:uppercase;text-align:right;white-space:nowrap;padding:6px 18px;border-right:1px solid var(--warm-line);
  font-variant-numeric:tabular-nums;}
.pt-ctable tr.month .mt-w{font-weight:600;opacity:.8;margin-right:5px;}
/* colonne d'actions : transparente, hors du bloc blanc */
.pt-ctable th.col-act,.pt-ctable td.col-act{background:transparent;border:none;padding:6px 0 6px 12px;width:1%;white-space:nowrap;}
.pt-acts{display:flex;gap:6px;justify-content:flex-end;}
.pt-acts form{display:flex;margin:0;}
.pt-name{background:none;border:none;padding:0;font:inherit;font-weight:600;color:var(--ink);cursor:pointer;text-align:left;
  text-decoration:underline;text-decoration-color:transparent;text-underline-offset:3px;transition:color .12s;}
.pt-name:hover{color:var(--feature);text-decoration-color:currentColor;}
.pt-ic{background:#fff;border:1px solid var(--warm-line);width:32px;height:32px;display:flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:14px;color:var(--ink-soft);transition:border-color .12s,color .12s;}
.pt-ic:hover{border-color:var(--lavender);color:var(--feature);}
.pt-ic.del:hover{border-color:#e0b4b4;color:#b04a4a;}

/* liste des membres */
.pt-mtable{width:100%;border-collapse:collapse;font-size:13.5px;background:#fff;border:1px solid var(--warm-line);}
.pt-mtable th{text-align:left;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);padding:12px 16px;border-bottom:1px solid var(--warm-line);background:#faf8f4;}
.pt-mtable td{padding:11px 16px;border-bottom:1px solid #f2ede2;}
.pt-mtable tr:last-child td{border-bottom:none;}
.pt-rolechip{font-size:10.5px;font-weight:600;padding:2px 8px;background:#efe7fb;color:var(--feature);}

/* modales — plates */
.pt-modal{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:20px;}
.pt-modal[hidden]{display:none;}
.pt-modal-back{position:absolute;inset:0;background:rgba(9,13,40,.5);}
.pt-modal-box{position:relative;z-index:1;background:#fff;padding:26px 28px;width:min(520px,100%);max-height:86vh;overflow-y:auto;box-shadow:0 30px 80px rgba(10,16,51,.4);}
.pt-modal-box.wide{width:min(780px,100%);}
.pt-modal-x{position:absolute;top:10px;right:14px;background:none;border:none;font-size:26px;line-height:1;color:var(--ink-soft);cursor:pointer;}
.pt-modal-x:hover{color:var(--ink);}
.pt-modal-kicker{font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--feature);}
.pt-modal-box h3{font-family:var(--display);font-size:24px;font-weight:600;margin:4px 0 16px;}
.pt-modal-list{display:flex;flex-direction:column;}
.pt-modal-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid #f2ede2;font-size:13.5px;}
.pt-modal-row:first-child{border-top:none;}
.pt-modal-row .d{width:90px;flex:none;color:var(--ink-soft);}
.pt-modal-row .s{flex:1;color:var(--ink-soft);font-size:12px;}
.pt-modal-row .a{margin-left:auto;font-weight:600;font-variant-numeric:tabular-nums;}
.pt-modal-row .nm{flex:1;font-weight:600;}
.pt-modal-row .em{color:var(--ink-soft);font-size:12.5px;}
.pt-modal-total{margin-top:14px;padding-top:14px;border-top:2px solid var(--warm-line);font-size:15px;text-align:right;}
.pt-modal-total b{font-family:var(--num,var(--body));font-weight:700;font-variant-numeric:tabular-nums;font-size:21px;color:var(--feature);}
.pt-modal-empty{color:var(--ink-soft);font-size:14px;padding:12px 0;}

@media(max-width:860px){
  .pt-burger{display:flex;}
  .pt-topbar-site{display:inline-flex;}
  .pt-side{position:fixed;top:0;left:0;bottom:0;height:100%;z-index:40;transform:translateX(-100%);
    transition:transform .25s ease;box-shadow:0 0 50px rgba(9,13,40,.45);}
  .pt-admin.nav-open .pt-side{transform:translateX(0);}
  .pt-admin.nav-open .pt-backdrop{display:block;position:fixed;inset:0;z-index:35;background:rgba(9,13,40,.5);}
  .pt-content,.pt-topbar{padding-left:18px;padding-right:18px;}
  .pt-topbar{padding-top:15px;padding-bottom:15px;}
  .pt-topbar h1{font-size:20px;}
}

/* Спойлер вокруг формы («Добавить взнос вручную» и т. п.) — чтобы не нажималось
   случайно: свёрнут по умолчанию, разворачивается щелчком по заголовку. */
.pt-spoiler{background:#fff;border:1px solid var(--warm-line);margin-bottom:24px;}
.pt-spoiler>summary{list-style:none;cursor:pointer;padding:14px 20px;display:flex;
  align-items:center;justify-content:space-between;font-family:var(--display);
  font-size:19px;font-weight:600;color:var(--ink);}
.pt-spoiler>summary::-webkit-details-marker{display:none;}
.pt-spoiler>summary::after{content:'+';font-family:var(--body);font-size:20px;font-weight:400;color:var(--ink-soft);}
.pt-spoiler[open]>summary::after{content:'–';}
.pt-spoiler>summary:hover{background:#FAF8F4;}
.pt-spoiler .pt-spoiler-body{padding:0 20px 18px;}

/* Суммы в таблицах и итогах месяца — тем же шрифтом, что цифры кошельков */
.pt-ctable td.col-sum,.pt-ctable td.month-tot,.pt-ctable .mt-w{font-family:var(--num,var(--body));font-variant-numeric:tabular-nums;}

/* ── Кампании (сборы) ── */
.cp-sec-h{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-soft);margin:26px 0 12px;}
.cp-sec-h:first-child{margin-top:0;}
.cp-sec-note{font-weight:500;letter-spacing:0;text-transform:none;color:var(--ink-soft);opacity:.8;}
.cp-card{background:#fff;border:1px solid var(--warm-line);padding:22px 24px;margin-bottom:20px;}
.cp-card.live{border-left:3px solid var(--feature);}
.cp-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;}
.cp-kicker{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--feature);}
.cp-title{font-family:var(--display);font-size:24px;font-weight:600;margin:4px 0 0;}
.cp-status{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;flex:none;}
.cp-status.live{background:#e6f5ea;color:#1e6b3a;}
.cp-status.draft{background:#efe7d8;color:#8a6a1e;}
.cp-status.closed{background:#eee;color:#666;}
.cp-flag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  background:#efe7fb;color:var(--feature);padding:2px 8px;margin-left:8px;}
.cp-therm{margin:16px 0 12px;}
.cp-therm-top{display:flex;align-items:baseline;gap:8px;font-variant-numeric:tabular-nums;}
.cp-raised{font-size:24px;font-weight:700;color:var(--feature);}
.cp-goal{font-size:14px;color:var(--ink-soft);}
.cp-pct{margin-left:auto;font-size:13px;font-weight:700;color:var(--ink-soft);}
.cp-track{height:8px;background:#f0ebe0;margin-top:8px;overflow:hidden;}
.cp-fill{height:100%;background:var(--feature);}
.cp-therm.done .cp-fill{background:#9c8fb5;}
.cp-therm.done .cp-raised{color:var(--ink);}
.cp-meta{display:flex;gap:18px;flex-wrap:wrap;font-size:13px;color:var(--ink-soft);}
.cp-acts{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:16px;}
.cp-acts--head{margin:0 0 20px;}
.cp-newbar{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin:0 0 8px;}
.cp-newbar form{display:flex;gap:8px;align-items:center;}
.cp-newbar select{border:1px solid var(--warm-line);padding:9px 12px;font-size:13px;background:#fff;font-family:var(--body);}
.cp-list{display:flex;flex-direction:column;gap:1px;background:var(--warm-line);border:1px solid var(--warm-line);}
.cp-item{display:flex;align-items:center;gap:14px;background:#fff;padding:14px 18px;color:inherit;}
.cp-item:hover{background:#faf8f4;}
.cp-item-t{font-weight:600;font-size:14.5px;flex:1 1 auto;}
.cp-item-m{font-size:12.5px;color:var(--ink-soft);font-variant-numeric:tabular-nums;text-align:right;}
.cp-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px;}
.cp-head-nums{font-size:13.5px;color:var(--ink-soft);font-variant-numeric:tabular-nums;}
.cp-frozen{font-size:10px;font-weight:700;text-transform:uppercase;background:#eee;color:#666;padding:2px 7px;margin-left:4px;}
.cp-out{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;padding:9px 0;}
.cp-tblock{border-top:1px solid #f2ede2;padding-top:14px;margin-top:14px;}
.cp-tblock:first-child{border-top:none;padding-top:0;margin-top:0;}
.cp-tblock--result{background:#faf8f4;padding:14px;margin-top:18px;}
.cp-tlabel{font-size:12.5px;font-weight:600;margin-bottom:8px;}
.cp-tgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.cp-tgrid .pt-ff{min-width:0;}
.cp-tgrid input,.cp-tgrid textarea{width:100%;}
@media(max-width:860px){.cp-tgrid{grid-template-columns:1fr;}}
.cp-bsec{border:1px solid var(--warm-line);padding:12px 14px;margin-bottom:12px;background:#fdfcfa;}
.cp-bsec-h{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px;}
.cp-bsec-h input{flex:1 1 180px;border:1px solid var(--warm-line);padding:7px 10px;font-size:13px;font-family:var(--body);}
.cp-btbl{width:100%;border-collapse:collapse;font-size:13px;}
.cp-btbl td{border-top:1px solid #f2ede2;padding:6px 4px;vertical-align:top;}
.cp-btbl td.names{width:46%;}
.cp-btbl td.names input{display:block;width:100%;margin-bottom:4px;border:1px solid var(--warm-line);padding:6px 9px;font-size:12.5px;font-family:var(--body);}
.cp-btbl select{border:1px solid var(--warm-line);padding:6px 8px;font-size:12.5px;font-family:var(--body);}
.cp-btbl input.q,.cp-btbl input.p{width:88px;border:1px solid var(--warm-line);padding:6px 8px;font-size:12.5px;font-family:var(--body);}
.cp-btbl td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}
.cp-bx{border:none;background:none;color:#b04141;font-size:17px;cursor:pointer;line-height:1;padding:2px 6px;}
.cp-badd{border:1px dashed var(--warm-line);background:#fff;color:var(--feature);font-size:12.5px;
  padding:6px 12px;cursor:pointer;font-family:var(--body);font-weight:600;}
.cp-photos{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}
.cp-photos img{width:120px;height:80px;object-fit:cover;border:1px solid var(--warm-line);}
.cp-money{display:grid;grid-template-columns:1fr 1fr;gap:22px;}
@media(max-width:860px){.cp-money{grid-template-columns:1fr;}}
.cp-tbl{width:100%;border-collapse:collapse;font-size:13px;}
.cp-tbl td{padding:7px 4px;border-bottom:1px solid #f2ede2;}
.cp-tbl td.num{text-align:right;font-variant-numeric:tabular-nums;}
.cp-tbl tr.tot td{font-weight:700;border-bottom:none;border-top:1px solid var(--warm-line);}
.cp-ro-p{font-size:14px;line-height:1.6;margin-bottom:12px;}
.cp-note,.pt-spoiler .pt-note{font-size:12px;color:var(--ink-soft);margin-top:10px;margin-bottom:0;line-height:1.5;}

/* визитка ассоциации в шапке кабинета */
.pt-idcard{background:#fff;border:1px solid var(--warm-line);padding:20px 24px;margin-bottom:24px;}
.pt-idcard-h{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;}
.pt-idcard-h .nm{font-family:var(--display);font-size:21px;font-weight:600;}
.pt-idcard-h .fm{font-size:12.5px;color:var(--ink-soft);margin-top:2px;}
.pt-idcard-h .st{font-size:12.5px;color:var(--feature);font-weight:600;}
.pt-idgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px 22px;margin-top:16px;}
.pt-idgrid>div.wide{grid-column:1/-1;}
.pt-idgrid dt{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);}
.pt-idgrid dd{font-size:13.5px;margin:2px 0 0;}
.pt-idgrid dd.mono{font-variant-numeric:tabular-nums;letter-spacing:.02em;}
@media(max-width:720px){.pt-idgrid{grid-template-columns:1fr 1fr;}}
.pt-idedit{margin-top:16px;border-top:1px solid #f2ede2;padding-top:12px;}
.pt-idedit>summary{list-style:none;cursor:pointer;font-size:12.5px;font-weight:600;color:var(--feature);}
.pt-idedit>summary::-webkit-details-marker{display:none;}
.pt-idedit>summary::before{content:'\270e ';}
.pt-idedit form{margin-top:14px;}
.pt-ff label.cp-check{display:flex;align-items:center;gap:7px;text-transform:none;letter-spacing:0;
  font-weight:500;font-size:13px;color:var(--ink);white-space:nowrap;padding-bottom:9px;}

/* реквизиты ассоциации — тонкой строкой в правом конце верхней полоски */
.pt-idline{margin-left:auto;text-align:right;line-height:1.35;max-width:52%;
  font-size:10.5px;color:var(--ink-soft);opacity:.72;}
.pt-idline .l1{display:block;font-weight:600;letter-spacing:.02em;}
.pt-idline .l2{display:block;font-variant-numeric:tabular-nums;}
.pt-idline .ed{color:var(--feature);margin-left:6px;text-decoration:none;}
.pt-idline:hover{opacity:1;}
@media(max-width:860px){.pt-idline{display:none;}}
.cp-acts--foot{margin-top:22px;}

/* ══ Анимация: раскрытие и сворачивание ДВИЖЕНИЕМ (чистый CSS, серверу — ноль) ══ */
:root{--pt-ease:cubic-bezier(.22,.61,.36,1);--pt-t:.22s;}

/* переход между страницами: старая гаснет, новая проступает одновременно */
@view-transition{navigation:auto;}
::view-transition-old(root),::view-transition-new(root){animation-duration:.34s;
  animation-timing-function:var(--pt-ease);}

/* разделы кабинета в меню — выезжают, толкая « Управление » вниз плавно */
.pt-subs{display:grid;grid-template-rows:0fr;overflow:hidden;
  transition:grid-template-rows var(--pt-t) var(--pt-ease);}
.pt-subs.open{grid-template-rows:1fr;}
.pt-subs>div{min-height:0;overflow:hidden;}
/* стрелка у « Мой кабинет » — показывает, что строка складывается */
.pt-side-nav>a#pt-cab::after{content:'\25b8';float:right;font-size:9px;opacity:.6;
  transition:transform var(--pt-t) var(--pt-ease);transform-origin:50% 50%;display:inline-block;line-height:1.6;}
.pt-side-nav>a#pt-cab[data-here=""]::after{content:none;}
.pt-side-nav>a#pt-cab.unfolded::after{transform:rotate(90deg);}

/* таблица взносов: месяцы сворачиваются/разворачиваются высотой строк */
.pt-fold tr.month,.pt-fold thead tr{cursor:pointer;}
.pt-fold tr.month:hover td{filter:brightness(.98);}
.pt-fold .mfold{display:inline-block;margin-right:7px;font-size:9px;
  transition:transform var(--pt-t) var(--pt-ease);}
.pt-fold tr.month.open .mfold{transform:rotate(90deg);}
/* правила сворачивания включаются только когда работает JS (иначе таблица целая) */
.pt-fold.js-fold tr.mrow>td{padding-top:0;padding-bottom:0;border-bottom-width:0;
  transition:padding var(--pt-t) var(--pt-ease),border-bottom-width var(--pt-t) var(--pt-ease);}
.pt-fold.js-fold tr.mrow>td>.c{display:block;overflow:hidden;max-height:0;opacity:0;
  transform:translateY(-8px);
  transition:max-height var(--pt-t) var(--pt-ease),opacity .16s ease,
             transform var(--pt-t) var(--pt-ease);}
.pt-fold.js-fold tr.mrow.open>td{padding-top:14px;padding-bottom:14px;border-bottom-width:1px;}
.pt-fold.js-fold tr.mrow.open>td>.c{max-height:120px;opacity:1;transform:none;}
.pt-panel tr.month td.month-tot{background:#f3eefb;color:var(--feature);font-weight:700;font-size:11px;
  letter-spacing:.04em;text-align:right;font-family:var(--num,var(--body));font-variant-numeric:tabular-nums;}
.pt-panel tr.month .mt-w{font-weight:600;opacity:.8;margin-right:5px;}

@media (prefers-reduced-motion: reduce){
  .pt-subs{transition:none;}.pt-subs.open{grid-template-rows:1fr;}
  .pt-fold .mfold,.pt-fold.js-fold tr.mrow>td,.pt-fold.js-fold tr.mrow>td>.c{transition:none;}
  ::view-transition-old(root),::view-transition-new(root){animation:none;}
}

/* прокрутка к разделам кабинета — плавная, а не рывком */
html{scroll-behavior:smooth;}
.pt-flash{animation:pt-slidein .24s var(--pt-ease) both;}
@keyframes pt-slidein{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:none;}}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto;}.pt-flash{animation:none;}}

/* Суммы в кабинете — выравнивание по ПЕРВОЙ цифре, а не по знаку евро:
   слово « Внесено » и первые цифры платежей стоят на одной вертикали. */
.pt-fold th.amount,.pt-fold td.amount,.pt-fold tr.month td.month-tot{text-align:left;}
/* сумма месяца начинается ровно там же, где суммы платежей: слово « Внесено »
   вынесено ВЛЕВО за пределы ячейки, поэтому в один ряд встают именно цифры. */
.pt-fold tr.month td.month-tot{padding-left:20px;position:relative;}
.pt-fold tr.month .mt-w{position:absolute;right:100%;margin-right:-12px;top:50%;
  transform:translateY(-50%);white-space:nowrap;}

/* ── свёртка месяцев и выравнивание сумм в таблицах прихода и расходов ── */
.pt-fold.js-fold .pt-ctable tr.mrow.open>td{padding-top:6px;padding-bottom:6px;}
.pt-fold .pt-ctable th.col-amt,.pt-fold .pt-ctable td.col-amt{text-align:left;}
.pt-fold .pt-ctable tr.month td.month-tot{text-align:left;position:relative;}
.pt-fold .pt-ctable tr.month .mt-w{position:absolute;right:100%;margin-right:-10px;top:50%;
  transform:translateY(-50%);white-space:nowrap;margin-left:0;}
.pt-fold .pt-ctable tr.month td.col-lbl{overflow:visible;}
