* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; padding: 20px; color: #333; } .container { max-width: 900px; margin: 0 auto; background: white; border-radius: 16px; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3); padding: 30px; } header { text-align: center; margin-bottom: 30px; } header h1 { font-size: 2.5em; color: #667eea; margin-bottom: 20px; font-weight: 600; } .controls { display: flex; align-items: center; justify-content: center; gap: 15px; flex-wrap: wrap; } .btn-nav { background: #667eea; color: white; border: none; width: 40px; height: 40px; border-radius: 50%; font-size: 24px; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; justify-content: center; } .btn-nav:hover { background: #5568d3; transform: scale(1.1); } .btn-nav:active { transform: scale(0.95); } .month-display { font-size: 1.5em; font-weight: 600; color: #333; min-width: 200px; } .btn-today { background: #764ba2; color: white; border: none; padding: 10px 20px; border-radius: 8px; font-size: 14px; cursor: pointer; transition: all 0.3s ease; } .btn-today:hover { background: #653a8a; transform: translateY(-2px); box-shadow: 0 4px 12px rgba(118, 75, 162, 0.4); } .legend { display: flex; justify-content: center; gap: 30px; margin-bottom: 25px; padding: 15px; background: #f8f9fa; border-radius: 10px; flex-wrap: wrap; } .legend-item { display: flex; align-items: center; gap: 8px; font-size: 14px; } .mark { width: 24px; height: 24px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-weight: bold; font-size: 16px; } .mark.completed { background: #10b981; color: white; } .mark.partial { background: #f59e0b; color: white; } .mark.none { background: #e5e7eb; border: 2px solid #d1d5db; } .calendar { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; margin-bottom: 20px; } .weekday { text-align: center; font-weight: 600; color: #667eea; padding: 12px; font-size: 14px; background: #f0f4ff; border-radius: 8px; } .day { aspect-ratio: 1; border: 2px solid #e5e7eb; border-radius: 10px; display: flex; flex-direction: column; align-items: center; justify-content: center; cursor: pointer; transition: all 0.2s ease; background: white; position: relative; padding: 8px; } .day:hover { border-color: #667eea; transform: translateY(-2px); box-shadow: 0 4px 12px rgba(102, 126, 234, 0.2); } .day.other-month { opacity: 0.4; background: #f9fafb; } .day.today { border-color: #667eea; background: #f0f4ff; font-weight: 600; } .day.completed { background: #d1fae5; border-color: #10b981; } .day.completed .day-number { color: #065f46; } .day.partial { background: #fef3c7; border-color: #f59e0b; } .day.partial .day-number { color: #92400e; } .day-number { font-size: 16px; font-weight: 500; margin-bottom: 4px; } .day-mark { font-size: 20px; font-weight: bold; line-height: 1; } .day.completed .day-mark { color: #10b981; } .day.partial .day-mark { color: #f59e0b; } .instructions { text-align: center; padding: 15px; background: #f0f4ff; border-radius: 10px; color: #667eea; font-size: 14px; } @media (max-width: 768px) { .container { padding: 20px; } header h1 { font-size: 2em; } .month-display { font-size: 1.2em; min-width: 150px; } .calendar { gap: 4px; } .day { padding: 4px; } .day-number { font-size: 14px; } .day-mark { font-size: 16px; } .legend { gap: 15px; } }