Skip to main content

max / balanced_breakfast

5.8 KB · 168 lines History Blame Raw
1 @media (max-width: 599px) {
2 body {
3 padding-top: env(safe-area-inset-top);
4 padding-bottom: calc(52px + env(safe-area-inset-bottom));
5 }
6
7 .mobile-tab-bar { display: flex; }
8 .header { display: none; }
9 .main { flex-direction: column; }
10
11 .sidebar {
12 display: none;
13 width: 100%;
14 min-width: 0;
15 border-right: none;
16 }
17 .sidebar.mobile-visible {
18 display: flex;
19 flex: 1;
20 }
21
22 .items-panel { width: 100%; }
23 .items-panel.mobile-hidden { display: none; }
24
25 .detail-panel {
26 position: fixed;
27 top: 0;
28 left: 0;
29 right: 0;
30 bottom: 0;
31 width: 100%;
32 min-width: 0;
33 z-index: 1050;
34 border-left: none;
35 }
36
37 body.mobile-detail-open .mobile-tab-bar { display: none; }
38 body.mobile-detail-open { padding-bottom: 0; }
39 body.mobile-detail-open .detail-panel {
40 padding-top: env(safe-area-inset-top);
41 padding-bottom: env(safe-area-inset-bottom);
42 }
43
44 .mobile-back-btn {
45 display: inline-flex;
46 margin-right: auto;
47 font-size: var(--font-size-md);
48 }
49
50 .mobile-search-bar { display: flex; }
51
52 /* Larger tap targets. Spacing is not listed here: the touch preset in
53 css/geometry.css opens every gap at once under (hover: none). What
54 remains is the parts a density preset cannot express. */
55 .star-btn { font-size: var(--font-size-2xl); }
56 .source-item { min-height: 3rem; }
57
58 /* Modal as bottom sheet */
59 .modal-overlay { align-items: flex-end; }
60 .modal-content {
61 width: 100%;
62 max-width: 100%;
63 border-radius: var(--radius-lg) var(--radius-lg) 0 0;
64 max-height: 85vh;
65 }
66 .modal-content::before {
67 content: '';
68 display: block;
69 width: 36px;
70 height: 4px;
71 background-color: var(--border-strong);
72 border-radius: var(--radius-xs);
73 margin: var(--gap-peer) auto;
74 }
75 .modal-header { border-radius: 0; }
76
77 /* Toast above tab bar */
78 .toast-container {
79 bottom: calc(60px + env(safe-area-inset-bottom));
80 right: 0.75rem;
81 left: 0.75rem;
82 }
83
84 /* Update banner above tab bar */
85 .update-banner {
86 bottom: calc(60px + env(safe-area-inset-bottom));
87 }
88
89 /* Source badge on items */
90 .article-source-badge {
91 display: inline-block;
92 background-color: var(--surface-sunken);
93 color: var(--content-secondary);
94 font-size: var(--font-size-xxs);
95 font-weight: 600;
96 padding: 0 var(--step-snug);
97 border-radius: var(--radius-sm);
98 margin-top: var(--step-hair);
99 }
100
101 /* Bold unread item titles */
102 .row--article.is-unread .row-primary { font-weight: 700; }
103
104 /* Sticky detail header */
105 .detail-header {
106 position: sticky;
107 top: 0;
108 z-index: 5;
109 }
110 .detail-panel { -webkit-overflow-scrolling: touch; }
111 .detail-body { line-height: 1.8; }
112
113 /* Horizontal-scroll tag filter bar */
114 .tag-filter-bar {
115 flex-wrap: nowrap;
116 overflow-x: auto;
117 -webkit-overflow-scrolling: touch;
118 scrollbar-width: none;
119 }
120 .tag-filter-bar::-webkit-scrollbar { display: none; }
121
122 /* Help shortcuts single column */
123 .help-shortcuts { grid-template-columns: 1fr; }
124 }
125
126 /* === 40. @media (hover: none): touch overrides ====================== */
127 @media (hover: none) {
128 .row--article:hover { background-color: transparent; }
129 .row--article.is-unread:hover { background-color: color-mix(in srgb, var(--danger) 6%, var(--surface-page)); }
130 .row--article.is-selected:hover { background-color: var(--surface-sunken); }
131 .row--article.is-unread.is-selected:hover { background-color: color-mix(in srgb, var(--danger) 12%, var(--surface-page)); }
132 .source-item:hover { background-color: transparent; }
133 .source-item.active:hover { background-color: var(--surface-sunken); }
134 .sidebar-saved:hover { background-color: transparent; }
135 .sidebar-saved.active:hover { background-color: var(--surface-sunken); }
136 /* Border only. The `background-color` half was taking back the generated
137 hover fill, and makeover-webview wraps its own hover in
138 (hover: hover) and (pointer: fine) now, so on a fingertip there is
139 nothing left to take back. What remains undoes this file's own
140 `.button:hover { border-color: var(--border-strong) }` above, which
141 makeover has no opinion about. */
142 .button:hover { border-color: var(--border); }
143 .button--primary:hover { background-color: var(--action); border-color: var(--action); }
144 .button--success:hover { background-color: var(--category-four); border-color: var(--category-four); }
145 .star-btn:hover { color: var(--content-muted); transform: none; }
146 .star-btn.starred:hover { color: var(--category-four); }
147 .tag-chip:hover { border-color: var(--border); color: var(--content-secondary); }
148 .tag-chip.active:hover { border-color: var(--category-four); }
149 .plugin-item:hover { border-color: var(--border); }
150 .context-menu-item:hover { background-color: transparent; }
151 }
152
153 /* === 41. @media (prefers-reduced-motion: reduce) ====================== */
154 @media (prefers-reduced-motion: reduce) {
155 *, *::before, *::after {
156 animation-duration: 0.01ms !important;
157 animation-iteration-count: 1 !important;
158 transition-duration: 0.01ms !important;
159 }
160 }
161
162 /* === 42. Webkit scrollbar ============================================== */
163 ::-webkit-scrollbar { width: 6px; height: 6px; }
164 /* The clearest place in the app to read the bevel pair against each other. */
165 ::-webkit-scrollbar-track { background: var(--surface-overlay); box-shadow: var(--bevel-inset); }
166 ::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: var(--radius-xs); box-shadow: var(--bevel-raised); }
167 ::-webkit-scrollbar-thumb:hover { background: var(--content-muted); }
168