Skip to main content

max / balanced_breakfast

3.9 KB · 127 lines History Blame Raw
1 /* === 33. Mobile tab bar ================================================ */
2 .mobile-tab-bar {
3 display: none;
4 position: fixed;
5 bottom: 0;
6 left: 0;
7 right: 0;
8 z-index: 1100;
9 height: calc(52px + env(safe-area-inset-bottom));
10 padding-bottom: env(safe-area-inset-bottom);
11 background-color: var(--surface-overlay);
12 border-top: var(--border-width) solid var(--border);
13 align-items: center;
14 justify-content: space-around;
15 }
16
17 .mobile-tab {
18 flex: 1;
19 display: flex;
20 align-items: center;
21 justify-content: center;
22 height: 52px;
23 background: none;
24 border: none;
25 color: var(--content-muted);
26 font-family: inherit;
27 font-size: var(--font-size-xs);
28 font-weight: 600;
29 text-transform: uppercase;
30 letter-spacing: 0.5px;
31 cursor: pointer;
32 }
33 .mobile-tab.active { color: var(--action); }
34
35 .mobile-tab-create {
36 font-size: 1.4rem;
37 font-weight: 400;
38 color: var(--success);
39 text-transform: none;
40 letter-spacing: 0;
41 }
42
43 /* === 34. Mobile more-popover =========================================== */
44 .mobile-more-popover {
45 display: none;
46 position: fixed;
47 bottom: calc(52px + env(safe-area-inset-bottom));
48 right: 0.5rem;
49 z-index: 1101;
50 background-color: var(--surface-raised);
51 border: var(--border-width) solid var(--border);
52 border-radius: var(--radius-sm);
53 box-shadow: var(--bevel-raised), 0 calc(-1 * var(--shadow-offset)) 0 var(--shadow-color);
54 padding: var(--gap-bound);
55 min-width: 160px;
56 }
57 .mobile-more-popover.visible { display: block; }
58 .mobile-more-popover button {
59 display: block;
60 width: 100%;
61 padding: var(--gap-peer) var(--gap-group);
62 border: none;
63 border-radius: var(--radius-sm);
64 background: none;
65 color: var(--content);
66 font-family: inherit;
67 font-size: var(--font-size-base);
68 text-align: left;
69 cursor: pointer;
70 }
71 .mobile-more-popover button:hover {
72 background-color: var(--surface-sunken);
73 }
74
75 /* === 35. Mobile search bar ============================================= */
76 .mobile-search-bar {
77 display: none;
78 position: sticky;
79 top: 0;
80 z-index: 10;
81 padding: var(--gap-peer) var(--gap-group);
82 gap: var(--gap-peer);
83 background-color: var(--surface-page);
84 border-bottom: var(--border-width) solid var(--border);
85 }
86 /* Both carry `.field`. They were the only two fields in the app with no bevel
87 at all, filled with --surface-overlay against the mobile bar's own page
88 fill, so mobile and desktop disagreed about what an input looks like. They
89 agree now, and the fill and edge come from the same place as everywhere
90 else. */
91 .mobile-search-input {
92 flex: 1;
93 font-family: inherit;
94 }
95 .mobile-sort-select {
96 font-family: inherit;
97 font-size: var(--font-size-md);
98 }
99
100 /* === 36. Mobile back button ============================================ */
101 .mobile-back-btn { display: none; }
102
103 /* === 37. Pull-to-refresh indicator ===================================== */
104 .pull-to-refresh-indicator {
105 display: none;
106 text-align: center;
107 padding: var(--gap-group);
108 font-size: var(--font-size-md);
109 color: var(--content-muted);
110 }
111 .pull-to-refresh-indicator.visible {
112 display: block;
113 }
114
115 /* === 38. Source-badge on items (mobile-only display) =================
116 Hidden on desktop; shown inside the @media (max-width: 599px) block below.
117 ========================================================================== */
118 .article-source-badge { display: none; }
119
120 /* === 39. @media (max-width: 599px): mobile layout ====================
121 599px is SizeClass::Compact's upper edge, not a number chosen here. It was
122 768px until 2026-08-11, which is a boundary no size class has: a window
123 between 600 and 767 got the single-pane shell while every generated
124 stylesheet beside it was still laying out the wide one. build.rs checks this
125 against makeover-geometry now, so the two cannot part again.
126 ========================================================================== */
127