diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 7bec8d6..e8645e1 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -158,18 +158,22 @@ display: flex; align-items: center; } -/* на узких экранах остаётся только иконка */ +/* на узких экранах «Новая задача» — квадратная кнопка-иконка: .btn кита + растянут с пустым хвостом после скрытия лейбла и несёт утолщённую левую + грань (border-left 6px) — выглядит сломанной */ @media (max-width: 640px) { .nav-topbar-current .new-task-label { display: none; } - /* кнопка-иконка: .btn кита width:100% и несимметричные паддинги — на мобильном - она растягивается с пустым хвостом после скрытия лейбла */ - .nav-topbar-current .btn { - width: auto; - min-height: 38px; - padding: 8px 10px; + .nav-topbar-current .btn.btn-small.with-icon { + width: 42px; + min-width: 42px; + height: 42px; + min-height: 42px; + padding: 0; justify-content: center; + /* перебить .btn.btn-small.with-icon кита (border-left 32px) */ + border-left-width: 2px; } } /* У кита .card имеет intrinsic max-width: 340px / width: max-content — в наших видах diff --git a/frontend/src/components/Dashboard.vue b/frontend/src/components/Dashboard.vue index da8e60b..ecbfc5b 100644 --- a/frontend/src/components/Dashboard.vue +++ b/frontend/src/components/Dashboard.vue @@ -202,7 +202,18 @@ } @media (max-width: 960px) { .dash-grid { - grid-template-columns: 1fr; + /* minmax(0,1fr), а не 1fr: трек с минимумом auto растягивается + min-content'ом длинного nowrap-заголовка задачи и ломает страницу */ + grid-template-columns: minmax(0, 1fr); + } +} +@media (max-width: 640px) { + /* на телефоне длинный заголовок переносится — ellipsis терял бы смысл */ + .dash-task { + align-items: flex-start; + } + .dash-task-title { + white-space: normal; } } .dash-main > * + *, diff --git a/frontend/src/views/ProjectView.vue b/frontend/src/views/ProjectView.vue index 2ada970..4fb6d06 100644 --- a/frontend/src/views/ProjectView.vue +++ b/frontend/src/views/ProjectView.vue @@ -810,14 +810,19 @@ .page-skeleton { margin-bottom: 1rem; } -/* «Новая задача» в шапке страницы: на мобильном — кнопка-иконка, как «+» топбара - (.btn кита растянут с пустым хвостом после скрытия лейбла) */ +/* «Новая задача» в шапке страницы: на мобильном — квадратная кнопка-иконка. + .btn кита растянут с пустым хвостом после скрытия лейбла и несёт + утолщённую левую грань (border-left 6px) — выглядит сломанной */ @media (max-width: 640px) { - .new-task-btn { - width: auto; - min-height: 38px; - padding: 8px 10px; + /* селектор с .btn.btn-small.with-icon — перебить правило кита (border-left 32px) */ + .btn.btn-small.with-icon.new-task-btn { + width: 42px; + min-width: 42px; + height: 42px; + min-height: 42px; + padding: 0; justify-content: center; + border-left-width: 2px; } .new-task-label { display: none; @@ -832,7 +837,8 @@ } @media (max-width: 960px) { .project-grid { - grid-template-columns: 1fr; + /* minmax(0,1fr): минимум auto растягивал трек содержимым карточек */ + grid-template-columns: minmax(0, 1fr); } } .project-main > * + *, diff --git a/frontend/src/views/SettingsView.vue b/frontend/src/views/SettingsView.vue index cda572e..0f226cf 100644 --- a/frontend/src/views/SettingsView.vue +++ b/frontend/src/views/SettingsView.vue @@ -249,6 +249,18 @@ align-items: flex-end; gap: 0.75rem; } +/* .form-group кита не сжимается и толкает кнопку «Сгенерировать» за экран */ +.token-create :deep(.form-group) { + flex: 1; + min-width: 0; + margin-bottom: 0; +} +@media (max-width: 640px) { + .token-create { + flex-direction: column; + align-items: stretch; + } +} .fresh-token { margin-bottom: 1rem; padding: 0.75rem;