diff --git a/apps/web/src/components/NoteAiSuggestionPanel.vue b/apps/web/src/components/NoteAiSuggestionPanel.vue index 041a0b9..aa0c31a 100644 --- a/apps/web/src/components/NoteAiSuggestionPanel.vue +++ b/apps/web/src/components/NoteAiSuggestionPanel.vue @@ -297,6 +297,18 @@ textarea { .actions .btn { min-width: 0; + flex: 1 1 auto; +} + +@media (max-width: 520px) { + .actions { + flex-direction: column; + } + + .actions .btn, + .actions .btn-ghost { + width: 100%; + } } .summary { diff --git a/apps/web/src/views/NotesView.vue b/apps/web/src/views/NotesView.vue index 8e88aa6..ff22c15 100644 --- a/apps/web/src/views/NotesView.vue +++ b/apps/web/src/views/NotesView.vue @@ -547,13 +547,17 @@ onMounted(load); .page { display: grid; gap: 1.2rem; + width: 100%; min-width: 0; max-width: 100%; - padding-bottom: 6rem; + overflow-x: clip; + padding-bottom: max(5rem, env(safe-area-inset-bottom)); + box-sizing: border-box; } .page > * { min-width: 0; + max-width: 100%; } .page-head { @@ -564,6 +568,11 @@ onMounted(load); flex-wrap: wrap; } +.page-head > div { + min-width: 0; + flex: 1 1 16rem; +} + .eyebrow { margin: 0; color: var(--accent); @@ -572,7 +581,7 @@ onMounted(load); h1 { margin: 0.2rem 0; - font-size: 1.85rem; + font-size: clamp(1.35rem, 4vw, 1.85rem); } .lead, @@ -581,6 +590,13 @@ h1 { .empty { color: var(--muted); overflow-wrap: anywhere; + word-break: break-word; +} + +.lead { + margin: 0; + line-height: 1.7; + max-width: 52ch; } .search { @@ -596,6 +612,11 @@ h1 { flex: 1; } +.search .btn { + flex: 0 0 auto; + white-space: nowrap; +} + .type-tabs { display: flex; flex-wrap: wrap; @@ -705,12 +726,26 @@ h1 { gap: 0.6rem; align-items: center; flex-wrap: wrap; + min-width: 0; } .composer-actions { justify-content: space-between; } +.left-actions { + flex: 1 1 auto; +} + +.right { + flex: 0 1 auto; + justify-content: flex-end; +} + +.left-actions :deep(.vtt) { + max-width: 100%; +} + .sr-only { position: absolute; width: 1px; @@ -852,12 +887,20 @@ h1 { .card footer { display: flex; flex-wrap: wrap; - gap: 0.65rem; + gap: 0.55rem 0.75rem; align-items: center; border-top: 1px solid color-mix(in srgb, var(--line) 70%, transparent); padding-top: 0.55rem; } +.card footer > button, +.card footer > .attach-label { + flex: 0 1 auto; + min-width: 0; + font-size: 0.85rem; + line-height: 1.3; +} + .body { margin: 0; white-space: pre-wrap; @@ -919,8 +962,8 @@ h1 { } @media (max-width: 900px) { - h1 { - font-size: 1.45rem; + .page { + gap: 1rem; } .page-head { @@ -928,8 +971,13 @@ h1 { align-items: stretch; } + .page-head > div { + flex: 0 0 auto; + } + .lead { max-width: none; + font-size: 0.92rem; } .search { @@ -938,8 +986,7 @@ h1 { } .search input { - height: 2.75rem; - max-height: 2.75rem; + min-height: 2.75rem; padding: 0 0.9rem; } @@ -948,7 +995,9 @@ h1 { overflow-x: auto; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; - padding-bottom: 0.15rem; + padding-bottom: 0.2rem; + margin-inline: -0.15rem; + padding-inline: 0.15rem; scrollbar-width: none; } @@ -969,12 +1018,25 @@ h1 { } .composer { - padding: 0.9rem; + padding: 0.85rem; + border-radius: 16px; + } + + .composer-actions { + flex-direction: column; + align-items: stretch; + gap: 0.75rem; + } + + .left-actions { + flex-direction: row; + flex-wrap: wrap; + align-items: center; + gap: 0.55rem 0.75rem; } - .composer-actions, - .left-actions, .right { + width: 100%; flex-direction: column; align-items: stretch; } @@ -988,13 +1050,62 @@ h1 { grid-template-columns: 1fr; } + .card { + padding: 0.85rem; + } + .card footer { - gap: 0.5rem 0.7rem; + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 0.55rem 0.65rem; + align-items: center; + } + + .card footer > button, + .card footer > .attach-label { + justify-self: start; + text-align: start; } .swatches { margin-inline-start: 0; + grid-column: 1 / -1; width: 100%; + justify-content: flex-start; + padding-top: 0.15rem; + } + + .pending-files li, + .attachments li { + align-items: flex-start; + } + + .att-size { + margin-inline-start: 0; + } +} + +@media (max-width: 520px) { + .search { + flex-direction: column; + } + + .search .btn { + width: 100%; + } + + .type-row { + flex-direction: column; + align-items: stretch; + } + + .card footer { + grid-template-columns: 1fr; + } + + .left-actions :deep(.vtt) { + width: 100%; + justify-content: center; } }