Seregon/zftpd

Zero-copy FTP/HTTP Daemon compatible with all POSIX systems

C/11.0 KB/No license
web/css/responsive.css
zftpd / web / css / responsive.css
1/* ══ RESPONSIVE — MOBILE ══════════════════════════════════════════════════ */
2 
3@media (max-width: 768px) {
4 
5 /* ── Topbar ── */
6 .topbar {
7 flex-wrap: wrap;
8 height: auto;
9 padding: 8px 12px;
10 gap: 6px;
11 }
12 
13 .topbar-left {
14 flex: 0 0 auto;
15 min-width: 0;
16 }
17 
18 .brand-sub { display: none; }
19 .brand-logo { width: 30px; height: 30px; }
20 .brand-title { font-size: 14px; }
21 
22 .topbar-right {
23 flex: 1 1 auto;
24 justify-content: flex-end;
25 overflow-x: auto;
26 gap: 5px;
27 }
28 
29 .status-pill {
30 font-size: 10px;
31 padding: 3px 8px;
32 }
33 
34 /* ── Nav tabs ── */
35 .nav-tabs {
36 padding: 0 12px;
37 overflow-x: auto;
38 scrollbar-width: none;
39 }
40 
41 .nav-tabs::-webkit-scrollbar { display: none; }
42 
43 .nav-tab {
44 padding: 8px 12px;
45 font-size: 11px;
46 }
47 
48 /* ── Toolbar ── */
49 .toolbar {
50 padding: 6px 12px;
51 gap: 4px;
52 }
53 
54 .btn {
55 padding: 5px 8px;
56 font-size: 10px;
57 }
58 
59 .search {
60 width: 100%;
61 max-width: none;
62 }
63 
64 .search-wrap {
65 flex: 1 1 100%;
66 order: 10;
67 }
68 
69 /* ── Breadcrumb ── */
70 .breadcrumb {
71 padding: 4px 12px;
72 }
73 
74 .crumb {
75 font-size: 10px;
76 padding: 2px 6px;
77 }
78 
79 /* ── Content ── */
80 .content {
81 padding: 10px 12px;
82 }
83 
84 .fl.vg-grid {
85 grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
86 gap: 6px;
87 }
88 
89 .fl.vg-grid .card {
90 padding: 12px 8px 8px;
91 }
92 
93 .c-ico { width: 40px; height: 40px; }
94 .c-name { font-size: 11px; }
95 .c-meta { font-size: 9px; }
96 
97 /* ── Show mobile action button ── */
98 .c-action { display: flex; }
99 
100 /* ── File manager ── */
101 .fm-container {
102 grid-template-columns: 1fr;
103 grid-template-rows: 1fr auto 1fr;
104 height: auto;
105 }
106 
107 .fm-center {
108 flex-direction: row;
109 padding: 4px;
110 }
111 
112 /* ── Dashboard ── */
113 .dash-game-card { width: 130px; }
114 .dash-actions { grid-template-columns: repeat(2, 1fr); }
115 .dash-stats { grid-template-columns: 1fr; }
116 
117 /* ── Transfer tray ── */
118 .xfer-tray {
119 left: 10px;
120 right: 10px;
121 max-width: none;
122 bottom: 10px;
123 }
124 
125 .xfer-card { min-width: 0; }
126 
127 /* ── Context menu ── */
128 .ctx { min-width: 170px; }
129 
130 /* ── Download manager ── */
131 .dl-input-bar {
132 flex-direction: column;
133 }
134 
135 .dl-card-stats {
136 flex-wrap: wrap;
137 }
138}
139 
140@media (max-width: 400px) {
141 .fl.vg-grid {
142 grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
143 }
144 
145 .dash-game-card { width: 110px; }
146 .dash-actions { grid-template-columns: 1fr; }
147}
148 
149/* ══ THEME SELECTOR — MOBILE ═════════════════════════════════════════════ */
150 
151.theme-select-mobile {
152 display: none;
153 background: var(--sf2);
154 color: var(--tx);
155 border: 1px solid var(--bd);
156 border-radius: 8px;
157 padding: 6px 28px 6px 10px;
158 font-size: 12px;
159 font-family: inherit;
160 appearance: none;
161 width: 120px;
162}
163 
164.theme-select-mobile:focus {
165 outline: 2px solid var(--ac);
166 outline-offset: 2px;
167}
168 
169@media (hover: none) and (pointer: coarse) {
170 .theme-btn { display: none; }
171 .theme-select-mobile { display: block; }
172 .theme-switcher { margin-left: auto; }
173}
174