/* Позиции в «Расходах», шторка позиции, строки бюджетов категории и пометка «Личное» (пакет B1,
   docs/architecture-budget-positions-2026-10.md §6.3). Отдельный файл: style.css расти не может (scripts/file-size-budget.json).
   Цвета и шрифты — токены проекта; нативных select, checkbox и radio здесь нет: варианты «Снять» — role="radiogroup" из кнопок. */

#sheet-title{min-width:0;overflow-wrap:anywhere}

/* Строка позиции в списке: состояние под подписью и «Купили…» отдельной строкой под ней. */
.position-state-line{display:block;margin-top:4px;color:var(--ink);font:600 11px/1.45 'DM Mono','Manrope',ui-sans-serif,system-ui,sans-serif;white-space:normal;overflow-wrap:anywhere}
.position-buy{margin:0 0 6px 12px;min-height:44px;padding:6px 12px;color:var(--deep);font-weight:700;border:1px solid var(--tap-border);border-radius:99px;background:transparent}
.position-buy:hover,.position-buy:focus-visible{background:var(--tap-bg-hover)}

/* Пометка «Личное» у траты автора: тихий чип, а не тревога. */
.expense-personal-mark{display:inline-block;padding:0 8px;border:1px solid var(--tap-border);border-radius:99px;background:var(--tap-bg);color:var(--deep);font:700 .66rem/1.6 Manrope,Arial,sans-serif;white-space:nowrap}

/* Строки бюджетов внутри категории (BP-1): название, «бюджет ¥90 000 · осталось ¥60 000», свои «Изменить сумму» и «+ Позиция»;
   под бюджетом — «ещё в бюджете» закрытой позиции конверта. */
.expense-budget-rows{display:grid;gap:0;margin:0 0 4px;border-bottom:1px solid var(--line)}
.expense-budget-row{display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;min-width:0;padding:8px 12px;border-top:1px solid var(--line)}
.expense-budget-row:first-child{border-top:0}
.ebr-main{display:grid;gap:2px;flex:1 1 180px;min-width:0}
.ebr-title{font-size:.88rem;overflow-wrap:anywhere}
.ebr-caption{color:var(--muted);font:12px/1.4 'DM Mono','Manrope',ui-sans-serif,system-ui,sans-serif;overflow-wrap:anywhere}
.ebr-actions{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto}
.ebr-note{flex:1 1 100%;margin:0;color:var(--warn);font-size:.74rem;line-height:1.45;overflow-wrap:anywhere}

/* Шторка позиции. */
.pp{display:grid;gap:14px;min-width:0}
.pp-sub{margin:0;color:var(--muted);font-size:.8rem;line-height:1.45;overflow-wrap:anywhere}
.pp-progress{display:grid;gap:6px}
.pp-bought{margin:0;font:600 .9rem 'DM Mono','Manrope',ui-sans-serif,system-ui,sans-serif;overflow-wrap:anywhere}
.pp-people{display:grid;gap:0;margin:0;padding:0;list-style:none}
.pp-people li{padding:9px 0;border-top:1px solid var(--line);font-size:.82rem;line-height:1.45;overflow-wrap:anywhere}
.pp-note{margin:0;color:var(--muted);font-size:.74rem;line-height:1.45;overflow-wrap:anywhere}
.pp-leftover{color:var(--warn)}
.pp-actions{display:grid;gap:12px;min-width:0}
.pp-action{display:grid;gap:4px;min-width:0}
.pp-btn{width:100%;min-height:44px;padding:10px 14px;border:1px solid var(--tap-border);border-radius:10px;background:var(--paper);color:var(--ink);font:600 .8rem Manrope,Arial,sans-serif;text-align:left;white-space:normal;overflow-wrap:anywhere;cursor:pointer}
.pp-btn:hover,.pp-btn:focus-visible{background:var(--tap-bg-hover);outline:none}
.pp-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.pp-primary{border-color:var(--deep);background:var(--deep);color:#fff}
.pp-primary:hover,.pp-primary:focus-visible{background:#284b42;color:#fff}
.pp-danger{border-color:var(--ink);background:var(--ink);color:#fff}
.pp-danger:hover,.pp-danger:focus-visible{background:#2d3a34;color:#fff}
.pp-btn[disabled]{opacity:.5;cursor:default}
.pp-hint{margin:0;padding:0 2px;color:var(--muted);font-size:.72rem;line-height:1.45;overflow-wrap:anywhere}

.pp-concept{margin-top:-6px}
/* «Убрать из плана» — не главное действие: тихий блок внизу карточки под тонкой границей, кнопка без акцента (высота ≥44 px — от .pp-btn). */
.pp-removal{display:grid;gap:10px;min-width:0;margin-top:4px;padding-top:12px;border-top:1px solid var(--line)}
.pp-removal .pp-remove{padding-top:0;border-top:0}
.pp-quiet{border-color:var(--line);background:transparent;color:var(--muted);font-weight:500}
.pp-quiet:hover,.pp-quiet:focus-visible{color:var(--ink)}

/* «Убрать из плана»: взаимоисключающие варианты — список radiogroup из кнопок role="radio" (aria-checked), не нативные radio. */
.pp-remove{display:grid;gap:12px;min-width:0;padding-top:12px;border-top:1px solid var(--line)}
.pp-remove[hidden]{display:none}
.pp-ask{margin:0;font-size:.9rem;font-weight:700;overflow-wrap:anywhere}
.pp-radios{display:grid;gap:8px;min-width:0}
.pp-radio{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--tap-border);border-radius:10px;background:var(--paper);color:var(--ink);font:inherit;text-align:left;white-space:normal;cursor:pointer}
.pp-radio:hover,.pp-radio:focus-visible{background:var(--tap-bg-hover);outline:none}
.pp-radio:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.pp-radio[aria-checked="true"]{border-color:var(--deep);background:var(--tap-bg-hover)}
.pp-radio-dot{box-sizing:border-box;width:18px;height:18px;margin-top:2px;border:2px solid var(--muted);border-radius:50%;background:var(--paper)}
.pp-radio[aria-checked="true"] .pp-radio-dot{border-color:var(--deep);background:radial-gradient(circle,var(--deep) 0 42%,var(--paper) 46%)}
.pp-radio-body{display:grid;gap:3px;min-width:0}
.pp-radio-body b{font-size:.82rem;line-height:1.35;overflow-wrap:anywhere}
.pp-radio-sub{color:var(--muted);font-size:.72rem;line-height:1.4;overflow-wrap:anywhere}
.pp-move{display:grid;gap:4px;min-width:0;margin:0 0 0 28px}
.pp-move-label{color:var(--muted);font:11px 'DM Mono','Manrope',ui-sans-serif,system-ui,sans-serif;letter-spacing:.06em;text-transform:uppercase}
.pp-move .ui-select{min-width:0;width:100%}

@media (max-width:480px){
  .pp-move{margin-left:0}
}

/* Шторка бюджета (пакет B2, §6.3, §6.4): «сколько, на скольких», закрыто и осталось, впереди и свободно, части людей, итог.
   Нативных select, checkbox и radio здесь нет; числа переносятся по словам, а на 320 px строки людей сворачиваются в столбец. */
.bp{display:grid;gap:8px;min-width:0}
.bp-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin:0}
.bp-head b{font:700 1.15rem 'DM Mono','Manrope',ui-sans-serif,system-ui,sans-serif;overflow-wrap:anywhere}
.bp-head span{color:var(--muted);font:12px/1.4 'DM Mono','Manrope',ui-sans-serif,system-ui,sans-serif;overflow-wrap:anywhere}
.bp-line{margin:0;font-size:.82rem;line-height:1.45;overflow-wrap:anywhere}
.bp-line b{font-family:'DM Mono','Manrope',ui-sans-serif,system-ui,sans-serif;white-space:nowrap}
.bp-warn{color:var(--warn)}
.bp-sub{margin:6px 0 0;font:11px 'DM Mono','Manrope',ui-sans-serif,system-ui,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.bp-people{display:grid;gap:0;margin:0;padding:0;list-style:none}
.bp-person,.bp-pos{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name left" "detail detail" "over over";gap:2px 12px;min-width:0;padding:9px 0;border-top:1px solid var(--line);font-size:.82rem;line-height:1.45}
.bp-name{grid-area:name;font-weight:700;overflow-wrap:anywhere}
.bp-detail{grid-area:detail;color:var(--muted);font-size:.76rem;overflow-wrap:anywhere}
.bp-detail:empty{display:none}
.bp-left{grid-area:left;font:600 .78rem 'DM Mono','Manrope',ui-sans-serif,system-ui,sans-serif;text-align:right;white-space:nowrap}
.bp-over{grid-area:over;color:var(--warn);font-size:.76rem;font-weight:600;overflow-wrap:anywhere}
.bp-person.is-over .bp-name{color:var(--warn)}
.bp-total{margin:0;padding-top:8px;border-top:1px solid var(--line);font-size:.8rem;line-height:1.5;overflow-wrap:anywhere}
.bp-total b{font-family:'DM Mono','Manrope',ui-sans-serif,system-ui,sans-serif;white-space:nowrap}
.bp-note{margin:0;font-size:.72rem;line-height:1.45;overflow-wrap:anywhere}

/* Позиции бюджета: свёрнутый список, итог в заголовке (features/budget-positions-list.js). Заголовок — кнопка не ниже 44px,
   значок раскрытия рисуется здесь (системный треугольник <details> убран). */
.bp-positions{min-width:0;border:1px solid var(--tap-border);border-radius:8px;background:var(--tap-bg)}
.bp-positions-head{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:8px 12px;cursor:pointer;list-style:none;font:600 .8rem/1.4 'Manrope',ui-sans-serif,system-ui,sans-serif;overflow-wrap:anywhere}
.bp-positions-head::-webkit-details-marker{display:none}
.bp-positions-head::after{content:"";flex:0 0 auto;width:8px;height:8px;border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(45deg);transition:transform .15s}
.bp-positions[open]>.bp-positions-head::after{transform:rotate(-135deg)}
.bp-positions-head:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.bp-positions .bp-people{padding:0 12px 4px}

/* Режим оплаты бюджета (В6 «А»): две кнопки .pc-chip в группе .pay-mode (aria-pressed), без нативного input; подпись режима под ними. */
.pay-mode-field{display:grid;gap:6px;min-width:0}
.pay-mode{display:flex;flex-wrap:wrap;gap:6px}
.pay-mode-hint{margin:0;font-size:.74rem;line-height:1.45;overflow-wrap:anywhere}
/* «Когда заплатите за всех, вам вернут X» на Обзоре: тихая строка под «Вашей частью», число не рвётся, текст переносится. */
.overview-refund{margin:10px 0 0;color:var(--muted);font-size:.82rem;line-height:1.45;overflow-wrap:anywhere}
/* «Личное, только вам → X» стоит отдельной строкой над «По бюджетам →»: две кнопки-ссылки подряд иначе слипаются в одну. */
#overview-personal-only{display:block;width:100%;text-align:left;white-space:normal;overflow-wrap:anywhere}

/* Чипы «Всего / На человека» и вопрос 6в в шторке бюджета: те же .pc-chip, что у «Общая / Личное — только я». */
.budget-fields{display:grid;gap:10px;min-width:0}
.budget-fields[hidden]{display:none}
.bf-chips{display:flex;flex-wrap:wrap;gap:6px}
.bf-per{max-width:260px}
.bf-sum,.bf-split{margin:0;color:var(--muted);font-size:.74rem;line-height:1.45;overflow-wrap:anywhere}
.bf-ask{display:flex;flex-wrap:wrap;gap:6px;min-width:0;padding:10px 12px;border-left:3px solid var(--warn);background:var(--tap-bg)}
.bf-ask-text{flex:1 1 100%;margin:0 0 2px;font-size:.78rem;line-height:1.45;overflow-wrap:anywhere}

@media (max-width:359px){
  .bp-person,.bp-pos{grid-template-columns:minmax(0,1fr);grid-template-areas:"name" "detail" "over" "left"}
  .bp-left{text-align:left}
}

/* Шапка категории на телефоне (style.css даёт названию overflow-wrap:anywhere, и min-content названия — одна буква: «Оте/ль»).
   Название берёт свою ширину, но не больше 60%, остальное — суммам. */
@media (max-width:720px){.expense-category-title{flex:0 0 auto;max-width:60%}}
