experience.css (4942B)
1 #experience { 2 width: 100%; 3 } 4 5 .experience-layout { 6 display: flex; 7 flex-direction: row; 8 height: 100%; 9 width: 100%; 10 padding: 24px 32px; 11 gap: 24px; 12 justify-content: center; 13 } 14 15 .experience-detail { 16 flex: 0 1 980px; 17 width: 100%; 18 overflow-y: auto; 19 display: flex; 20 flex-direction: column; 21 gap: 16px; 22 padding: 4px 20px 4px 4px; 23 } 24 25 .exp-row { 26 display: flex; 27 } 28 29 .exp-card { 30 background: var(--bg-alt); 31 border: 2px solid var(--border); 32 border-radius: 4px; 33 padding: 24px; 34 flex: 1; 35 min-width: 0; 36 display: flex; 37 flex-direction: column; 38 } 39 40 .exp-card.selected { 41 border-color: var(--accent); 42 } 43 44 .exp-timeline { 45 width: 64px; 46 flex-shrink: 0; 47 display: flex; 48 flex-direction: column; 49 align-items: center; 50 padding-top: 24px; 51 position: relative; 52 } 53 54 .timeline-dot { 55 width: 12px; 56 height: 12px; 57 border: 2px solid var(--fg-dim); 58 border-radius: 50%; 59 background: transparent; 60 } 61 62 .timeline-dot-end { 63 position: absolute; 64 bottom: 8px; 65 } 66 67 .exp-timeline.has-end-dot .timeline-line { 68 bottom: 14px; 69 } 70 71 .exp-timeline.active .timeline-dot-end { 72 border-color: var(--accent); 73 background: var(--accent); 74 } 75 76 .exp-timeline.active .timeline-dot { 77 border-color: var(--accent); 78 background: var(--accent); 79 } 80 81 .timeline-year { 82 font-size: var(--fs-12); 83 color: var(--fg-dim); 84 margin-top: 4px; 85 } 86 87 .timeline-line { 88 position: absolute; 89 top: 56px; 90 bottom: -16px; 91 width: 2px; 92 left: 50%; 93 transform: translateX(-50%); 94 background: repeating-linear-gradient( 95 to bottom, 96 var(--border) 0px, 97 var(--border) 4px, 98 transparent 4px, 99 transparent 8px 100 ); 101 } 102 103 .exp-card-header { 104 display: grid; 105 grid-template-columns: minmax(0, 1fr) auto; 106 align-items: flex-start; 107 gap: 12px 24px; 108 } 109 110 .exp-card-title { 111 min-width: 0; 112 } 113 114 .exp-title-with-logo { 115 display: flex; 116 align-items: flex-start; 117 gap: 12px; 118 min-width: 0; 119 } 120 121 .exp-logo { 122 height: 44px; 123 width: auto; 124 max-width: 180px; 125 object-fit: contain; 126 flex-shrink: 0; 127 } 128 129 .exp-logo.logo-hark { 130 height: 30px; 131 max-width: 140px; 132 } 133 134 .exp-logo.logo-invert { 135 filter: brightness(0) invert(1); 136 opacity: 0.9; 137 } 138 139 .exp-title-text { 140 display: flex; 141 align-items: center; 142 gap: 10px; 143 flex-wrap: wrap; 144 min-width: 0; 145 } 146 147 .exp-title-text h2 { 148 font-size: var(--fs-22); 149 font-weight: 500; 150 color: var(--accent); 151 margin: 0; 152 line-height: 1.1; 153 } 154 155 .exp-role { 156 display: inline-flex; 157 align-items: center; 158 color: var(--accent); 159 font-size: var(--fs-15); 160 font-weight: 500; 161 white-space: nowrap; 162 line-height: 1.2; 163 } 164 165 .exp-role::before { 166 content: "/"; 167 color: var(--yellow); 168 margin-right: 4px; 169 } 170 171 .exp-role::after { 172 content: ""; 173 } 174 175 .exp-title-with-logo .exp-role { 176 font-size: var(--fs-16); 177 line-height: 1.1; 178 margin-top: 22px; 179 } 180 181 .exp-logo.logo-hark + .exp-role { 182 margin-top: 15px; 183 } 184 185 .exp-card-meta { 186 display: flex; 187 flex-direction: column; 188 align-items: flex-end; 189 gap: 3px; 190 font-size: var(--fs-14); 191 text-align: right; 192 white-space: nowrap; 193 } 194 195 .exp-duration { 196 color: var(--fg-dim); 197 } 198 199 .exp-card-tech { 200 display: flex; 201 flex-wrap: wrap; 202 gap: 6px; 203 margin-bottom: 20px; 204 } 205 206 .exp-card-body { 207 color: var(--fg); 208 line-height: 1.7; 209 } 210 211 .exp-card-body p { 212 margin-bottom: 12px; 213 } 214 215 .exp-card-images { 216 display: flex; 217 gap: 12px; 218 margin-top: 12px; 219 padding-top: 12px; 220 border-top: 1px solid var(--border); 221 max-height: 200px; 222 overflow: hidden; 223 } 224 225 .exp-image-hero { 226 max-width: 280px; 227 height: 100%; 228 border-radius: 4px; 229 border: 1px solid var(--border); 230 object-fit: cover; 231 cursor: pointer; 232 } 233 234 .exp-image-grid { 235 display: flex; 236 flex-wrap: wrap; 237 gap: 8px; 238 max-width: 400px; 239 } 240 241 .exp-image-thumb { 242 width: calc(50% - 4px); 243 height: 86px; 244 border-radius: 4px; 245 border: 1px solid var(--border); 246 object-fit: cover; 247 cursor: pointer; 248 } 249 250 .external-link { 251 color: var(--light-blue); 252 font-size: var(--fs-14); 253 max-width: 36ch; 254 overflow: hidden; 255 text-overflow: ellipsis; 256 } 257 258 @media (max-width: 768px) { 259 .experience-layout { 260 padding: 16px; 261 gap: 12px; 262 } 263 264 .exp-timeline { 265 display: none; 266 } 267 268 .exp-card { 269 padding: 16px; 270 } 271 272 .experience-detail { 273 padding: 4px 14px 4px 0; 274 } 275 276 .exp-card-header { 277 grid-template-columns: 1fr; 278 gap: 10px; 279 } 280 281 .exp-title-with-logo { 282 align-items: flex-start; 283 } 284 285 .exp-logo { 286 height: 38px; 287 max-width: 150px; 288 margin-top: 0; 289 } 290 291 .exp-logo.logo-hark { 292 height: 26px; 293 max-width: 120px; 294 } 295 296 .exp-title-with-logo .exp-role { 297 margin-top: 19px; 298 } 299 300 .exp-logo.logo-hark + .exp-role { 301 margin-top: 13px; 302 } 303 304 .exp-card-meta { 305 align-items: flex-start; 306 text-align: left; 307 white-space: normal; 308 } 309 310 .exp-card-images { 311 flex-direction: column; 312 max-height: none; 313 overflow: visible; 314 } 315 316 .exp-image-hero { 317 max-width: 100%; 318 height: auto; 319 max-height: 200px; 320 } 321 322 .exp-image-thumb { 323 width: calc(33.33% - 6px); 324 height: 80px; 325 } 326 }