/* ##ТЗ #A878## 2026-10-12 Travel-money: стили оболочки PWA (мобильный экран в первую очередь) */
:root{--c:#0f766e;--c2:#ccfbf1;--bg:#f4f6f8;--fg:#1f2933;--mut:#616e7c;--line:#e4e7eb;--bad:#b91c1c}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,Roboto,sans-serif;background:var(--bg);color:var(--fg);
     min-height:100vh;display:flex;flex-direction:column}
.hidden{display:none!important}
.bar{display:flex;align-items:center;gap:8px;padding:8px 12px;padding-top:max(8px,env(safe-area-inset-top));
     background:var(--c);color:#fff;position:sticky;top:0;z-index:5}
.brand{display:flex;align-items:center;gap:8px;color:#fff;text-decoration:none;font-weight:600;margin-right:auto;min-width:0}
.brand img{width:28px;height:28px;border-radius:6px}
.bar select{max-width:42vw;font:inherit;padding:4px 6px;border-radius:6px;border:0}
.icon{background:none;border:0;color:#fff;font-size:1.5rem;padding:0 4px;cursor:pointer}
.menu{background:#fff;border-bottom:1px solid var(--line);display:flex;flex-direction:column}
.menu a{padding:12px 16px;color:var(--fg);text-decoration:none;border-top:1px solid var(--line)}
main{flex:1;width:100%;max-width:720px;margin:0 auto;padding:16px}
.card{background:#fff;border-radius:12px;padding:16px;margin-bottom:12px;box-shadow:0 1px 2px rgba(0,0,0,.06)}
h1{font-size:1.4rem;margin:0 0 12px}h2{font-size:1.1rem;margin:0 0 8px}
.muted{color:var(--mut)}.center{text-align:center}.err{color:var(--bad)}
.btn{font:inherit;padding:10px 16px;border-radius:8px;border:1px solid var(--c);background:var(--c);color:#fff;cursor:pointer}
.btn.small{padding:4px 10px;font-size:.85rem;background:#fff;color:var(--c)}
.btn.ghost{background:#fff;color:var(--c)}.btn.bad{background:#fff;color:var(--bad);border-color:var(--bad)}
.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--line)}
.row:first-of-type{border-top:0}.row .grow{flex:1;min-width:140px}
.tag{font-size:.75rem;padding:2px 8px;border-radius:10px;background:var(--c2);color:var(--c)}
.tag.pending{background:#fef3c7;color:#92400e}.tag.blocked{background:#fee2e2;color:var(--bad)}
input[type=text]{font:inherit;padding:8px;border:1px solid var(--line);border-radius:8px;width:100%}
.link{word-break:break-all;background:var(--bg);padding:8px;border-radius:8px;font-size:.85rem}
.wait{font-size:3rem}
.foot{text-align:center;font-size:.8rem;color:var(--mut);padding:12px}
.foot a{color:var(--mut)}
#gbtn{display:flex;justify-content:center;margin:16px 0}
/* ##ТЗ #A879## проекты: закладки, формы, фото, статусы строк Плана */
.tabs{display:flex;gap:4px;overflow-x:auto;margin-top:8px}
.tabs a{padding:6px 10px;border-radius:8px;text-decoration:none;color:var(--c);background:var(--c2);white-space:nowrap;font-size:.9rem}
.tabs a.on{background:var(--c);color:#fff}
.form{display:flex;flex-direction:column;gap:8px;border:0;padding:0;margin:0}
.form input,.form select,.form textarea,.row select{font:inherit;padding:8px;border:1px solid var(--line);border-radius:8px;width:100%;background:#fff}
.form label{display:flex;flex-direction:column;gap:4px}.form label input[type=checkbox]{width:auto}
.form label:has(input[type=checkbox]){flex-direction:row;align-items:center}
.row select{width:auto;max-width:50vw}
.plink{color:inherit;text-decoration:none}
.photos{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}.photos img{width:56px;height:56px;object-fit:cover;border-radius:6px}
.tag.st-bought{background:#dcfce7;color:#166534}.tag.st-partial{background:#fef3c7;color:#92400e}.tag.st-rest{background:#f1f5f9;color:var(--mut)}
.tag.settle{background:#fef3c7;color:#92400e}.tag.closed{background:#e5e7eb;color:var(--mut)}
.card.hl{border:2px solid var(--c)}
/* ##ТЗ #A880## Бюджет и Баланс: таблицы план/факт, баланс, пометки */
.tbl{width:100%;border-collapse:collapse;font-size:.9rem;margin:4px 0 8px}
.tbl th,.tbl td{padding:6px 4px;border-top:1px solid var(--line);text-align:left;vertical-align:top}
.tbl th{color:var(--mut);font-weight:500}.tbl .num{text-align:right;white-space:nowrap}
.tbl tr.tot td{font-weight:600;border-top:2px solid var(--fg)}
.note{background:#fef3c7;color:#92400e;padding:8px;border-radius:8px;margin:8px 0}
.tag.bad{background:#fee2e2;color:var(--bad)}
/* ##ТЗ #A881## индикатор «не отправлено N» и неотправленные строки */
.sync{font-size:.75rem;padding:2px 8px;border-radius:10px;background:rgba(255,255,255,.18);color:#fff;text-decoration:none;white-space:nowrap}
.sync.warn{background:#fef3c7;color:#92400e}.sync.off{outline:1px dashed #fff}
.row.pend{background:#fffbeb}.tag.unsent{background:#fef3c7;color:#92400e}
/* ##ТЗ #1135## шапка с названием проекта, «не отправлено» цифрой, прилипающие закладки, модальное окно, таблица расходов, легенда */
.brand span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1.05rem}
.sync.warn{background:#facc15;color:#422006;font-weight:700;font-size:.9rem;min-width:24px;text-align:center;padding:2px 8px}
.tabs{position:sticky;top:var(--barh,48px);z-index:4;background:var(--bg);margin:-16px -16px 8px;padding:8px 16px;
      scrollbar-width:none;overscroll-behavior-x:contain;scroll-behavior:auto}
.tabs::-webkit-scrollbar{display:none}
.phead{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px}.phead .note{flex-basis:100%;margin:4px 0 0}
.hrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}.hrow h2{margin:0;flex:1;min-width:150px}
.btn.small.main{background:var(--c);color:#fff;padding:6px 12px}
.seg{display:inline-flex;border:1px solid var(--c);border-radius:8px;overflow:hidden;margin:0 0 8px}
.seg button{font:inherit;font-size:.85rem;padding:4px 12px;border:0;background:#fff;color:var(--c);cursor:pointer}
.seg button.on{background:var(--c);color:#fff}
.tbl.compact{font-size:.85rem}.tbl.compact td,.tbl.compact th{padding:4px 3px}
.tbl tr.click{cursor:pointer}.tbl tr.click:active{background:var(--c2)}.tbl tr.pend{background:#fffbeb}
a.who{color:var(--c);text-decoration:underline dotted}
.legend{font-size:.85rem;color:var(--mut);margin:0 0 6px}
body.noscroll{overflow:hidden}
.modal{position:fixed;inset:0;z-index:20;background:rgba(15,23,42,.45);display:flex;align-items:flex-end;justify-content:center}
.mbox{background:#fff;width:100%;max-width:560px;max-height:92vh;overflow:auto;border-radius:14px 14px 0 0;padding:12px 16px 16px;
      padding-bottom:max(16px,env(safe-area-inset-bottom))}
@media (min-width:600px){.modal{align-items:center}.mbox{border-radius:14px}}
.mhead{display:flex;align-items:center;gap:8px;margin-bottom:10px;position:sticky;top:-12px;background:#fff;padding-top:4px}
.mhead b{flex:1;font-size:1.1rem}.mx{font:inherit;font-size:1.2rem;border:0;background:none;color:var(--mut);cursor:pointer;padding:4px 8px}

/* ##ТЗ #1180-02## пожелания */
textarea { width: 100%; box-sizing: border-box; font: inherit; padding: 8px; border: 1px solid #cbd5e1; border-radius: 8px; }
.wrow a { color: inherit; text-decoration: none; }
.wtext { margin: 8px 0 12px; line-height: 1.45; overflow-wrap: anywhere; }
.wst { padding: 2px 0; }
.wcm { align-items: flex-start; }
.tag.w-to_execute, .tag.w-in_dev { background: #fef3c7; color: #92400e; }
.tag.w-done { background: #dcfce7; color: #166534; }
.tag.w-remarks { background: #fee2e2; color: #991b1b; }
p.ok { color: #166534; }
/* ##ТЗ #1180-09## «Сложный расчёт» расхода: кнопка у суммы, доли участников, суммы по долям */
.amtrow{display:flex;gap:8px;align-items:center}.form .amtrow input{flex:1;min-width:0;width:auto}.amtrow .btn{flex:none}
.split{border:1px solid var(--line);border-radius:8px;padding:4px 8px;background:#fafbfc}
.split .srow{flex-wrap:nowrap;padding:4px 0}.split .srow .grow{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.form .split input.sshare{width:4.5em;flex:none;text-align:right;padding:6px}.form .split input.sshare.bad{border-color:var(--bad)}
.split .samt{min-width:5.5em;text-align:right;white-space:nowrap}.split .srow.zero .grow,.split .srow.zero .samt{color:var(--mut)}
