Skip to main content

max / goingson

28.7 KB · 892 lines History Blame Raw
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Weekly Review - Mockup</title>
7 <style>
8 :root {
9 --bg-primary: #e8e4df;
10 --bg-card: #faf9f7;
11 --bg-secondary: #f0ece7;
12 --text-primary: #1a365d;
13 --text-secondary: #4a5568;
14 --text-muted: #718096;
15 --border-color: #1a365d;
16 --accent-yellow: #fbbf24;
17 --accent-green: #22c55e;
18 --accent-red: #ef4444;
19 --accent-blue: #3b82f6;
20 --accent-purple: #8b5cf6;
21 --accent-cyan: #06b6d4;
22 --shadow-brutal: 4px 4px 0 var(--border-color);
23 --radius-md: 8px;
24 --radius-lg: 12px;
25 }
26
27 * {
28 box-sizing: border-box;
29 margin: 0;
30 padding: 0;
31 }
32
33 body {
34 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
35 background: var(--bg-primary);
36 color: var(--text-primary);
37 line-height: 1.6;
38 padding: 2rem;
39 }
40
41 .review-container {
42 max-width: 1200px;
43 margin: 0 auto;
44 }
45
46 /* Header */
47 .review-header {
48 display: flex;
49 justify-content: space-between;
50 align-items: center;
51 margin-bottom: 2rem;
52 }
53
54 .review-title {
55 font-size: 2rem;
56 font-weight: 800;
57 }
58
59 .week-dates {
60 font-size: 1.1rem;
61 color: var(--text-secondary);
62 font-weight: 600;
63 }
64
65 .review-status {
66 display: inline-flex;
67 align-items: center;
68 gap: 0.5rem;
69 padding: 0.5rem 1rem;
70 border-radius: 20px;
71 font-size: 0.85rem;
72 font-weight: 600;
73 }
74
75 .review-status.pending {
76 background: var(--accent-yellow);
77 color: var(--text-primary);
78 }
79
80 .review-status.completed {
81 background: var(--accent-green);
82 color: white;
83 }
84
85 /* Main Grid Layout */
86 .review-grid {
87 display: grid;
88 grid-template-columns: 1fr 1fr;
89 grid-template-rows: auto auto auto;
90 gap: 1.5rem;
91 }
92
93 /* Cards */
94 .review-card {
95 background: var(--bg-card);
96 border: 2px solid var(--border-color);
97 border-radius: var(--radius-lg);
98 box-shadow: var(--shadow-brutal);
99 padding: 1.5rem;
100 }
101
102 .card-header {
103 display: flex;
104 justify-content: space-between;
105 align-items: center;
106 margin-bottom: 1rem;
107 padding-bottom: 0.75rem;
108 border-bottom: 2px solid var(--bg-secondary);
109 }
110
111 .card-title {
112 font-size: 1.1rem;
113 font-weight: 700;
114 display: flex;
115 align-items: center;
116 gap: 0.5rem;
117 }
118
119 .card-icon {
120 font-size: 1.25rem;
121 }
122
123 .card-badge {
124 font-size: 0.8rem;
125 padding: 0.25rem 0.75rem;
126 border-radius: 12px;
127 font-weight: 600;
128 }
129
130 /* Week Timeline - spans full width */
131 .week-timeline {
132 grid-column: 1 / -1;
133 }
134
135 .timeline-visual {
136 display: flex;
137 gap: 0.5rem;
138 margin-top: 1rem;
139 }
140
141 .timeline-day {
142 flex: 1;
143 text-align: center;
144 padding: 0.75rem 0.5rem;
145 background: var(--bg-secondary);
146 border-radius: var(--radius-md);
147 border: 1px solid var(--border-color);
148 position: relative;
149 }
150
151 .timeline-day.today {
152 background: var(--accent-yellow);
153 border-width: 2px;
154 font-weight: 700;
155 }
156
157 .timeline-day.past {
158 opacity: 0.7;
159 }
160
161 .timeline-day.future {
162 background: var(--bg-card);
163 }
164
165 .day-name {
166 font-size: 0.7rem;
167 font-weight: 600;
168 text-transform: uppercase;
169 color: var(--text-muted);
170 }
171
172 .day-number {
173 font-size: 1.1rem;
174 font-weight: 700;
175 }
176
177 .day-dots {
178 display: flex;
179 justify-content: center;
180 gap: 3px;
181 margin-top: 0.5rem;
182 min-height: 8px;
183 }
184
185 .day-dot {
186 width: 8px;
187 height: 8px;
188 border-radius: 50%;
189 }
190
191 .day-dot.task { background: var(--accent-blue); }
192 .day-dot.event { background: var(--accent-purple); }
193 .day-dot.completed { background: var(--accent-green); }
194 .day-dot.overdue { background: var(--accent-red); }
195
196 /* Stats Row */
197 .stats-row {
198 display: flex;
199 gap: 1rem;
200 margin-bottom: 1rem;
201 }
202
203 .stat-box {
204 flex: 1;
205 text-align: center;
206 padding: 1rem;
207 background: var(--bg-secondary);
208 border-radius: var(--radius-md);
209 }
210
211 .stat-number {
212 font-size: 2rem;
213 font-weight: 800;
214 line-height: 1;
215 }
216
217 .stat-number.green { color: var(--accent-green); }
218 .stat-number.red { color: var(--accent-red); }
219 .stat-number.blue { color: var(--accent-blue); }
220 .stat-number.purple { color: var(--accent-purple); }
221
222 .stat-label {
223 font-size: 0.75rem;
224 text-transform: uppercase;
225 color: var(--text-muted);
226 font-weight: 600;
227 margin-top: 0.25rem;
228 }
229
230 /* Task Lists */
231 .task-list {
232 list-style: none;
233 max-height: 200px;
234 overflow-y: auto;
235 }
236
237 .task-item {
238 display: flex;
239 align-items: center;
240 gap: 0.75rem;
241 padding: 0.75rem;
242 margin-bottom: 0.5rem;
243 background: var(--bg-secondary);
244 border-radius: var(--radius-md);
245 cursor: pointer;
246 transition: all 0.15s;
247 }
248
249 .task-item:hover {
250 transform: translateX(4px);
251 background: var(--accent-yellow);
252 }
253
254 .task-item.completed {
255 opacity: 0.6;
256 text-decoration: line-through;
257 }
258
259 .task-checkbox {
260 width: 20px;
261 height: 20px;
262 border: 2px solid var(--border-color);
263 border-radius: 4px;
264 display: flex;
265 align-items: center;
266 justify-content: center;
267 flex-shrink: 0;
268 }
269
270 .task-checkbox.checked {
271 background: var(--accent-green);
272 color: white;
273 }
274
275 .task-text {
276 flex: 1;
277 font-size: 0.9rem;
278 }
279
280 .task-project {
281 font-size: 0.75rem;
282 padding: 0.2rem 0.5rem;
283 background: var(--bg-card);
284 border-radius: 4px;
285 color: var(--text-muted);
286 }
287
288 .task-due {
289 font-size: 0.75rem;
290 color: var(--text-muted);
291 }
292
293 .task-due.overdue {
294 color: var(--accent-red);
295 font-weight: 600;
296 }
297
298 /* Focus Section - spans full width */
299 .focus-section {
300 grid-column: 1 / -1;
301 }
302
303 .focus-grid {
304 display: grid;
305 grid-template-columns: 1fr 1fr 1fr;
306 gap: 1rem;
307 margin-top: 1rem;
308 }
309
310 .focus-slot {
311 padding: 1.25rem;
312 background: var(--bg-secondary);
313 border: 2px dashed var(--border-color);
314 border-radius: var(--radius-md);
315 min-height: 100px;
316 display: flex;
317 flex-direction: column;
318 gap: 0.5rem;
319 }
320
321 .focus-slot.filled {
322 border-style: solid;
323 background: var(--bg-card);
324 }
325
326 .focus-slot.primary {
327 border-color: var(--accent-yellow);
328 background: linear-gradient(135deg, var(--bg-card) 0%, rgba(251, 191, 36, 0.1) 100%);
329 }
330
331 .focus-label {
332 font-size: 0.7rem;
333 text-transform: uppercase;
334 color: var(--text-muted);
335 font-weight: 600;
336 }
337
338 .focus-task {
339 font-weight: 600;
340 font-size: 0.95rem;
341 }
342
343 .focus-meta {
344 font-size: 0.8rem;
345 color: var(--text-secondary);
346 }
347
348 .focus-empty {
349 color: var(--text-muted);
350 font-style: italic;
351 font-size: 0.9rem;
352 }
353
354 /* Projects Health */
355 .projects-grid {
356 display: grid;
357 grid-template-columns: repeat(3, 1fr);
358 gap: 0.75rem;
359 margin-top: 0.5rem;
360 }
361
362 .project-health {
363 padding: 0.75rem;
364 background: var(--bg-secondary);
365 border-radius: var(--radius-md);
366 border-left: 4px solid var(--accent-blue);
367 }
368
369 .project-health.warning {
370 border-left-color: var(--accent-yellow);
371 }
372
373 .project-health.danger {
374 border-left-color: var(--accent-red);
375 }
376
377 .project-name {
378 font-weight: 600;
379 font-size: 0.85rem;
380 margin-bottom: 0.25rem;
381 }
382
383 .project-stats {
384 font-size: 0.75rem;
385 color: var(--text-muted);
386 }
387
388 /* Reflection Section */
389 .reflection-section {
390 grid-column: 1 / -1;
391 }
392
393 .reflection-prompts {
394 display: grid;
395 grid-template-columns: 1fr 1fr;
396 gap: 1rem;
397 margin-top: 1rem;
398 }
399
400 .reflection-prompt {
401 padding: 1rem;
402 background: var(--bg-secondary);
403 border-radius: var(--radius-md);
404 }
405
406 .prompt-label {
407 font-size: 0.8rem;
408 font-weight: 600;
409 color: var(--text-secondary);
410 margin-bottom: 0.5rem;
411 }
412
413 .prompt-input {
414 width: 100%;
415 padding: 0.75rem;
416 border: 2px solid var(--border-color);
417 border-radius: var(--radius-md);
418 font-size: 0.9rem;
419 font-family: inherit;
420 resize: none;
421 background: var(--bg-card);
422 }
423
424 .prompt-input:focus {
425 outline: none;
426 border-color: var(--accent-blue);
427 }
428
429 /* Actions */
430 .review-actions {
431 grid-column: 1 / -1;
432 display: flex;
433 justify-content: flex-end;
434 gap: 1rem;
435 padding-top: 1rem;
436 }
437
438 .btn {
439 padding: 0.75rem 1.5rem;
440 border: 2px solid var(--border-color);
441 border-radius: var(--radius-md);
442 font-weight: 600;
443 font-size: 0.95rem;
444 cursor: pointer;
445 transition: all 0.15s;
446 }
447
448 .btn:hover {
449 transform: translate(-2px, -2px);
450 box-shadow: 4px 4px 0 var(--border-color);
451 }
452
453 .btn-secondary {
454 background: var(--bg-card);
455 color: var(--text-primary);
456 }
457
458 .btn-primary {
459 background: var(--accent-yellow);
460 color: var(--text-primary);
461 }
462
463 /* Event items */
464 .event-item {
465 display: flex;
466 align-items: center;
467 gap: 0.75rem;
468 padding: 0.75rem;
469 margin-bottom: 0.5rem;
470 background: var(--bg-secondary);
471 border-radius: var(--radius-md);
472 border-left: 3px solid var(--accent-purple);
473 }
474
475 .event-time {
476 font-size: 0.8rem;
477 font-weight: 600;
478 color: var(--accent-purple);
479 min-width: 100px;
480 }
481
482 .event-title {
483 flex: 1;
484 font-size: 0.9rem;
485 }
486
487 /* Accomplishment celebration */
488 .accomplishment-highlight {
489 background: linear-gradient(135deg, rgba(34, 197, 94, 0.1) 0%, rgba(34, 197, 94, 0.05) 100%);
490 border: 2px solid var(--accent-green);
491 padding: 1rem;
492 border-radius: var(--radius-md);
493 margin-bottom: 1rem;
494 display: flex;
495 align-items: center;
496 gap: 1rem;
497 }
498
499 .accomplishment-icon {
500 font-size: 2rem;
501 }
502
503 .accomplishment-text {
504 font-size: 1rem;
505 }
506
507 .accomplishment-text strong {
508 color: var(--accent-green);
509 }
510
511 /* Scrollbar styling */
512 .task-list::-webkit-scrollbar {
513 width: 6px;
514 }
515
516 .task-list::-webkit-scrollbar-track {
517 background: var(--bg-secondary);
518 border-radius: 3px;
519 }
520
521 .task-list::-webkit-scrollbar-thumb {
522 background: var(--border-color);
523 border-radius: 3px;
524 }
525
526 /* Responsive */
527 @media (max-width: 900px) {
528 .review-grid {
529 grid-template-columns: 1fr;
530 }
531
532 .week-timeline,
533 .focus-section,
534 .reflection-section {
535 grid-column: 1;
536 }
537
538 .focus-grid {
539 grid-template-columns: 1fr;
540 }
541
542 .reflection-prompts {
543 grid-template-columns: 1fr;
544 }
545
546 .projects-grid {
547 grid-template-columns: 1fr 1fr;
548 }
549 }
550 </style>
551 </head>
552 <body>
553 <div class="review-container">
554 <!-- Header -->
555 <div class="review-header">
556 <div>
557 <h1 class="review-title">Weekly Review</h1>
558 <span class="week-dates">Feb 10 - Feb 16, 2026</span>
559 </div>
560 <span class="review-status pending">
561 <span>Review Pending</span>
562 </span>
563 </div>
564
565 <div class="review-grid">
566 <!-- Week Timeline -->
567 <div class="review-card week-timeline">
568 <div class="card-header">
569 <span class="card-title">
570 <span class="card-icon">📅</span>
571 Week at a Glance
572 </span>
573 <span class="card-badge" style="background: var(--bg-secondary);">
574 Today: Saturday
575 </span>
576 </div>
577 <div class="timeline-visual">
578 <div class="timeline-day past">
579 <div class="day-name">Mon</div>
580 <div class="day-number">10</div>
581 <div class="day-dots">
582 <span class="day-dot completed"></span>
583 <span class="day-dot completed"></span>
584 <span class="day-dot event"></span>
585 </div>
586 </div>
587 <div class="timeline-day past">
588 <div class="day-name">Tue</div>
589 <div class="day-number">11</div>
590 <div class="day-dots">
591 <span class="day-dot completed"></span>
592 </div>
593 </div>
594 <div class="timeline-day past">
595 <div class="day-name">Wed</div>
596 <div class="day-number">12</div>
597 <div class="day-dots">
598 <span class="day-dot completed"></span>
599 <span class="day-dot completed"></span>
600 <span class="day-dot event"></span>
601 <span class="day-dot event"></span>
602 </div>
603 </div>
604 <div class="timeline-day past">
605 <div class="day-name">Thu</div>
606 <div class="day-number">13</div>
607 <div class="day-dots">
608 <span class="day-dot overdue"></span>
609 </div>
610 </div>
611 <div class="timeline-day past">
612 <div class="day-name">Fri</div>
613 <div class="day-number">14</div>
614 <div class="day-dots">
615 <span class="day-dot completed"></span>
616 <span class="day-dot completed"></span>
617 </div>
618 </div>
619 <div class="timeline-day today">
620 <div class="day-name">Sat</div>
621 <div class="day-number">15</div>
622 <div class="day-dots">
623 <span class="day-dot task"></span>
624 </div>
625 </div>
626 <div class="timeline-day future">
627 <div class="day-name">Sun</div>
628 <div class="day-number">16</div>
629 <div class="day-dots">
630 <span class="day-dot task"></span>
631 <span class="day-dot event"></span>
632 </div>
633 </div>
634 </div>
635 </div>
636
637 <!-- Past Week: Accomplishments -->
638 <div class="review-card">
639 <div class="card-header">
640 <span class="card-title">
641 <span class="card-icon"></span>
642 Accomplished
643 </span>
644 <span class="card-badge" style="background: var(--accent-green); color: white;">
645 8 completed
646 </span>
647 </div>
648
649 <div class="accomplishment-highlight">
650 <span class="accomplishment-icon">🎉</span>
651 <span class="accomplishment-text">
652 Great week! You completed <strong>8 tasks</strong> and attended <strong>3 events</strong>.
653 </span>
654 </div>
655
656 <ul class="task-list">
657 <li class="task-item completed">
658 <span class="task-checkbox checked"></span>
659 <span class="task-text">Finalize Q1 budget proposal</span>
660 <span class="task-project">Finance</span>
661 </li>
662 <li class="task-item completed">
663 <span class="task-checkbox checked"></span>
664 <span class="task-text">Review pull requests for auth module</span>
665 <span class="task-project">GoingsOn</span>
666 </li>
667 <li class="task-item completed">
668 <span class="task-checkbox checked"></span>
669 <span class="task-text">Send weekly newsletter</span>
670 <span class="task-project">Marketing</span>
671 </li>
672 <li class="task-item completed">
673 <span class="task-checkbox checked"></span>
674 <span class="task-text">Update documentation</span>
675 <span class="task-project">GoingsOn</span>
676 </li>
677 </ul>
678 </div>
679
680 <!-- Past Week: Needs Attention -->
681 <div class="review-card">
682 <div class="card-header">
683 <span class="card-title">
684 <span class="card-icon">⚠️</span>
685 Needs Attention
686 </span>
687 <span class="card-badge" style="background: var(--accent-red); color: white;">
688 2 overdue
689 </span>
690 </div>
691
692 <div class="stats-row">
693 <div class="stat-box">
694 <div class="stat-number red">2</div>
695 <div class="stat-label">Overdue</div>
696 </div>
697 <div class="stat-box">
698 <div class="stat-number blue">5</div>
699 <div class="stat-label">Carried Over</div>
700 </div>
701 </div>
702
703 <ul class="task-list">
704 <li class="task-item">
705 <span class="task-checkbox"></span>
706 <span class="task-text">Write unit tests #80</span>
707 <span class="task-due overdue">8d overdue</span>
708 </li>
709 <li class="task-item">
710 <span class="task-checkbox"></span>
711 <span class="task-text">Build REST API endpoints #49</span>
712 <span class="task-due overdue">9d overdue</span>
713 </li>
714 <li class="task-item">
715 <span class="task-checkbox"></span>
716 <span class="task-text">Review competitor analysis</span>
717 <span class="task-project">Research</span>
718 </li>
719 </ul>
720 </div>
721
722 <!-- Coming Week: Events -->
723 <div class="review-card">
724 <div class="card-header">
725 <span class="card-title">
726 <span class="card-icon">📆</span>
727 Coming Up
728 </span>
729 <span class="card-badge" style="background: var(--accent-purple); color: white;">
730 4 events
731 </span>
732 </div>
733
734 <div class="event-item">
735 <span class="event-time">Mon 10:00</span>
736 <span class="event-title">Sprint Planning</span>
737 <span class="task-project">GoingsOn</span>
738 </div>
739 <div class="event-item">
740 <span class="event-time">Tue 14:00</span>
741 <span class="event-title">Client Demo Call</span>
742 <span class="task-project">Sales</span>
743 </div>
744 <div class="event-item">
745 <span class="event-time">Wed 09:00</span>
746 <span class="event-title">Team Standup</span>
747 </div>
748 <div class="event-item">
749 <span class="event-time">Fri 16:00</span>
750 <span class="event-title">Week Retrospective</span>
751 </div>
752 </div>
753
754 <!-- Coming Week: Tasks Due -->
755 <div class="review-card">
756 <div class="card-header">
757 <span class="card-title">
758 <span class="card-icon">📋</span>
759 Due This Week
760 </span>
761 <span class="card-badge" style="background: var(--accent-blue); color: white;">
762 6 tasks
763 </span>
764 </div>
765
766 <ul class="task-list">
767 <li class="task-item">
768 <span class="task-checkbox"></span>
769 <span class="task-text">Prepare presentation slides</span>
770 <span class="task-due">Mon</span>
771 </li>
772 <li class="task-item">
773 <span class="task-checkbox"></span>
774 <span class="task-text">Submit expense report</span>
775 <span class="task-due">Tue</span>
776 </li>
777 <li class="task-item">
778 <span class="task-checkbox"></span>
779 <span class="task-text">Code review: auth branch</span>
780 <span class="task-due">Wed</span>
781 </li>
782 <li class="task-item">
783 <span class="task-checkbox"></span>
784 <span class="task-text">Update project roadmap</span>
785 <span class="task-due">Thu</span>
786 </li>
787 <li class="task-item">
788 <span class="task-checkbox"></span>
789 <span class="task-text">Weekly metrics report</span>
790 <span class="task-due">Fri</span>
791 </li>
792 </ul>
793 </div>
794
795 <!-- Focus Section -->
796 <div class="review-card focus-section">
797 <div class="card-header">
798 <span class="card-title">
799 <span class="card-icon">🎯</span>
800 This Week's Focus
801 </span>
802 <span class="card-badge" style="background: var(--accent-yellow);">
803 Pick up to 3 priorities
804 </span>
805 </div>
806
807 <div class="focus-grid">
808 <div class="focus-slot filled primary">
809 <span class="focus-label">Priority #1</span>
810 <span class="focus-task">Finish REST API endpoints</span>
811 <span class="focus-meta">GoingsOn · Due Wed</span>
812 </div>
813 <div class="focus-slot filled">
814 <span class="focus-label">Priority #2</span>
815 <span class="focus-task">Client demo preparation</span>
816 <span class="focus-meta">Sales · Due Tue</span>
817 </div>
818 <div class="focus-slot">
819 <span class="focus-label">Priority #3</span>
820 <span class="focus-empty">Click a task above to add focus</span>
821 </div>
822 </div>
823 </div>
824
825 <!-- Projects Health -->
826 <div class="review-card">
827 <div class="card-header">
828 <span class="card-title">
829 <span class="card-icon">📊</span>
830 Projects Health
831 </span>
832 </div>
833
834 <div class="projects-grid">
835 <div class="project-health">
836 <div class="project-name">GoingsOn</div>
837 <div class="project-stats">3 active · 12 total</div>
838 </div>
839 <div class="project-health warning">
840 <div class="project-name">Marketing</div>
841 <div class="project-stats">2 overdue · 5 total</div>
842 </div>
843 <div class="project-health">
844 <div class="project-name">Finance</div>
845 <div class="project-stats">1 active · 4 total</div>
846 </div>
847 <div class="project-health danger">
848 <div class="project-name">Research</div>
849 <div class="project-stats">3 overdue · 6 total</div>
850 </div>
851 <div class="project-health">
852 <div class="project-name">Sales</div>
853 <div class="project-stats">2 active · 3 total</div>
854 </div>
855 <div class="project-health">
856 <div class="project-name">Personal</div>
857 <div class="project-stats">0 active · 2 total</div>
858 </div>
859 </div>
860 </div>
861
862 <!-- Reflection Section -->
863 <div class="review-card reflection-section">
864 <div class="card-header">
865 <span class="card-title">
866 <span class="card-icon">💭</span>
867 Quick Reflection
868 </span>
869 </div>
870
871 <div class="reflection-prompts">
872 <div class="reflection-prompt">
873 <div class="prompt-label">What went well?</div>
874 <textarea class="prompt-input" rows="3" placeholder="Completed the budget ahead of schedule..."></textarea>
875 </div>
876 <div class="reflection-prompt">
877 <div class="prompt-label">What could be improved?</div>
878 <textarea class="prompt-input" rows="3" placeholder="Need to block more focus time..."></textarea>
879 </div>
880 </div>
881 </div>
882
883 <!-- Actions -->
884 <div class="review-actions">
885 <button class="btn btn-secondary">Save Draft</button>
886 <button class="btn btn-primary">Complete Review</button>
887 </div>
888 </div>
889 </div>
890 </body>
891 </html>
892