|
3 | 3 | Assumes variables & base layout exist in styles.css. |
4 | 4 | */ |
5 | 5 |
|
6 | | -/* --- Ensure active sidebar item styling (scoped) --- */ |
| 6 | +/* ---------- Sidebar active item ---------- */ |
7 | 7 | .sidebar-item.active{ |
8 | 8 | color: var(--text); |
9 | 9 | background: linear-gradient(90deg, rgba(78,229,255,0.04), rgba(139,92,246,0.03)); |
10 | 10 | border-color: rgba(78,229,255,0.08); |
11 | 11 | box-shadow: 0 6px 18px rgba(78,229,255,0.03); |
12 | 12 | } |
13 | 13 |
|
14 | | -/* --- Prevent horizontal overflow caused by panel/content area --- */ |
| 14 | +/* ---------- Prevent horizontal overflow ---------- */ |
15 | 15 | .content-area{ |
16 | | - /* avoid accidental horizontal overflow from children */ |
17 | 16 | overflow-x: hidden; |
18 | | - position: relative; /* needed for positioned children like update popup */ |
| 17 | + position: relative; |
19 | 18 | } |
20 | 19 |
|
21 | | -/* Panel should not create horizontal scroll and should scroll vertically within the content-area */ |
22 | 20 | .panel{ |
23 | | - overflow-x: hidden; /* no horizontal scroll */ |
24 | | - overflow-y: auto; /* vertical scrolling inside the panel */ |
25 | | - min-height: 0; /* allow proper flexbox scrolling */ |
| 21 | + overflow-x: hidden; |
| 22 | + overflow-y: auto; |
| 23 | + min-height: 0; |
26 | 24 | box-sizing: border-box; |
27 | 25 | } |
28 | 26 |
|
29 | | -/* --- Recommended box / cert grid (scoped) --- */ |
| 27 | +/* ---------- Recommended box ---------- */ |
30 | 28 | .recommended-box{ |
31 | 29 | width:100%; |
32 | 30 | margin-bottom:12px; |
|
38 | 36 | box-sizing: border-box; |
39 | 37 | } |
40 | 38 |
|
41 | | -/* grid of cert cards */ |
| 39 | +/* ---------- Certificate grid ---------- */ |
42 | 40 | .cert-list{ |
43 | 41 | display:grid; |
44 | 42 | grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); |
|
47 | 45 | box-sizing: border-box; |
48 | 46 | } |
49 | 47 |
|
50 | | -/* cert card basics */ |
| 48 | +/* ---------- Certificate cards ---------- */ |
51 | 49 | .cert-card{ |
52 | 50 | background: rgba(255,255,255,0.013); |
53 | 51 | border: 1px solid var(--card-border); |
|
61 | 59 | min-height:92px; |
62 | 60 | box-sizing: border-box; |
63 | 61 | } |
64 | | -.cert-card:focus{ outline: 3px solid rgba(78,229,255,0.08); outline-offset:3px; } |
65 | 62 |
|
66 | | -/* badges */ |
67 | | -.badge.signed{ background: linear-gradient(90deg, rgba(78,229,255,0.12), rgba(139,92,246,0.08)); color:#021018; } |
68 | | -.badge.revoked{ background: linear-gradient(90deg, rgba(255,107,107,0.12), rgba(255,107,107,0.06)); color:var(--text); } |
| 63 | +.cert-card:hover{ |
| 64 | + transform: translateY(-6px); |
| 65 | + box-shadow: 0 22px 48px rgba(2,6,23,0.5); |
| 66 | +} |
| 67 | + |
| 68 | +.cert-card:focus{ |
| 69 | + outline: 3px solid rgba(78,229,255,0.08); |
| 70 | + outline-offset:3px; |
| 71 | +} |
| 72 | + |
| 73 | +/* ---------- Badges ---------- */ |
| 74 | +.badge.signed{ |
| 75 | + background: linear-gradient(90deg, rgba(78,229,255,0.12), rgba(139,92,246,0.08)); |
| 76 | + color:#021018; |
| 77 | +} |
| 78 | + |
| 79 | +.badge.revoked{ |
| 80 | + background: linear-gradient(90deg, rgba(255,107,107,0.12), rgba(255,107,107,0.06)); |
| 81 | + color:var(--text); |
| 82 | +} |
69 | 83 |
|
70 | | -/* --- Updates: expand UPWARDS and overlay cert list --- */ |
| 84 | +/* ---------- Updates (expand UPWARDS) ---------- */ |
71 | 85 | .updates-box{ |
72 | 86 | margin-top:12px; |
73 | 87 | padding:12px; |
74 | 88 | background: var(--glass); |
75 | 89 | border-radius:10px; |
76 | 90 | border:1px solid var(--card-border); |
77 | 91 | box-sizing: border-box; |
78 | | - |
79 | | - /* allow the inner popup to overflow upward */ |
80 | 92 | overflow: visible; |
81 | | - position: relative; /* anchor for the absolute-updates-inner */ |
| 93 | + position: relative; |
82 | 94 | } |
83 | 95 |
|
84 | | -/* header row */ |
85 | 96 | .updates-header{ |
86 | 97 | display:flex; |
87 | 98 | justify-content:space-between; |
88 | 99 | align-items:center; |
89 | 100 | gap:10px; |
90 | 101 | } |
91 | | -.updates-title{ margin:0; font-size:0.96rem; color: var(--muted); font-weight:700; } |
92 | 102 |
|
93 | | -/* toggle button (visual only) */ |
| 103 | +.updates-title{ |
| 104 | + margin:0; |
| 105 | + font-size:0.96rem; |
| 106 | + color: var(--muted); |
| 107 | + font-weight:700; |
| 108 | +} |
| 109 | + |
94 | 110 | .updates-toggle{ |
95 | 111 | background:transparent; |
96 | 112 | border:1px solid rgba(255,255,255,0.04); |
97 | 113 | padding:6px 8px; |
98 | 114 | border-radius:8px; |
99 | 115 | cursor:pointer; |
100 | 116 | color: var(--muted); |
101 | | - transition: transform .18s ease, color .14s; |
| 117 | + transition: transform .18s ease, color .14s ease; |
102 | 118 | box-sizing: border-box; |
103 | 119 | } |
104 | | -.updates-toggle.rotated{ transform: rotate(180deg); color: var(--accent); } |
105 | 120 |
|
106 | | -/* the inner content will float ABOVE (expand upwards) */ |
| 121 | +.updates-toggle.rotated{ |
| 122 | + transform: rotate(180deg); |
| 123 | + color: var(--accent); |
| 124 | +} |
| 125 | + |
| 126 | +/* floating updates panel */ |
107 | 127 | .updates-inner{ |
108 | | - position: absolute; |
109 | | - left: 0; |
110 | | - right: 0; |
111 | | - bottom: calc(100% + 8px); /* sit above the updates header, with a small gap */ |
112 | | - max-height: 0; |
113 | | - overflow: auto; |
| 128 | + position:absolute; |
| 129 | + left:0; |
| 130 | + right:0; |
| 131 | + bottom: calc(100% + 8px); |
| 132 | + max-height:0; |
| 133 | + overflow:auto; |
114 | 134 | background: linear-gradient(180deg, rgba(255,255,255,0.012), rgba(255,255,255,0.01)); |
115 | | - border: 1px solid var(--card-border); |
116 | | - border-radius: 10px; |
| 135 | + border:1px solid var(--card-border); |
| 136 | + border-radius:10px; |
117 | 137 | box-shadow: 0 18px 50px rgba(2,6,23,0.6); |
118 | | - padding-left: 8px; |
119 | | - padding-right: 8px; |
| 138 | + padding-left:8px; |
| 139 | + padding-right:8px; |
120 | 140 | transition: max-height .22s ease, padding .18s ease; |
121 | | - z-index: 1300; /* sit above cert cards */ |
122 | | - box-sizing: border-box; |
| 141 | + z-index:1300; |
| 142 | + box-sizing:border-box; |
123 | 143 | } |
124 | 144 |
|
125 | | -/* visual spacing for items inside the floating updates panel */ |
126 | 145 | .update-item{ |
127 | 146 | padding:8px 10px; |
128 | 147 | border-radius:8px; |
|
133 | 152 | margin:8px; |
134 | 153 | } |
135 | 154 |
|
136 | | -/* when JS expands, JS will set maxHeight; ensure padding exists as fallback */ |
137 | | -.updates-box.expanded .updates-inner{ padding-top:8px; padding-bottom:8px; } |
| 155 | +.updates-box.expanded .updates-inner{ |
| 156 | + padding-top:8px; |
| 157 | + padding-bottom:8px; |
| 158 | +} |
138 | 159 |
|
139 | | -/* --- Modal adjustments (scoped) --- */ |
| 160 | +/* ---------- Modal ---------- */ |
140 | 161 | .modal-panel{ |
141 | 162 | box-sizing: border-box; |
142 | 163 | max-height: 90vh; |
143 | | - overflow:auto; /* allow modal content to scroll vertically */ |
| 164 | + overflow:auto; |
144 | 165 | } |
145 | 166 |
|
146 | | -/* small-screen niceties */ |
| 167 | +/* ---------- Small screens ---------- */ |
147 | 168 | @media (max-width: 520px){ |
148 | | - .updates-inner{ right: auto; left: 6px; bottom: calc(100% + 6px); max-width: calc(100vw - 12px); } |
149 | | - .cert-list{ gap: 10px; } |
| 169 | + .updates-inner{ |
| 170 | + left:6px; |
| 171 | + right:6px; |
| 172 | + bottom: calc(100% + 6px); |
| 173 | + max-width: calc(100vw - 12px); |
| 174 | + } |
| 175 | + .cert-list{ gap:10px; } |
150 | 176 | } |
0 commit comments